LaWGPT 是一系列基于中文法律知识的开源大语言模型。

该系列模型在通用中文基座模型(如 Chinese-LLaMA、ChatGLM 等)的基础上扩充法律领域专有词表、大规模中文法律语料预训练,增强了大模型在法律领域的基础语义理解能力。在此基础上,构造法律领域对话问答数据集、中国司法考试数据集进行指令精调,提升了模型对法律内容的理解和执行能力。

详细内容请参考技术报告[1]。


本项目持续开展,法律领域数据集及系列模型后续相继开源,敬请关注。

更新

•? 2023/05/15:发布 中文法律数据源汇总(Awesome Chinese Legal Resources)[2] 和 法律领域词表[3]•? 2023/05/13:公开发布•Legal-Base-7B:法律基座模型,使用 50w 中文裁判文书数据二次预训练•LaWGPT-7B-beta1.0:法律对话模型,构造 30w 高质量法律问答数据集基于 Legal-Base-7B 指令精调•? 2023/04/12:内部测试•LaWGPT-7B-alpha:在 Chinese-LLaMA-7B 的基础上直接构造 30w 法律问答数据集指令精调

快速开始

1.准备代码,创建环境

`git clone git@github.com:pengxiao-song/LaWGPT.git
cd LaWGPTconda activate lawgptpip install -r requirements.txt`

2.合并模型权重(可选)如果您想使用 LaWGPT-7B-alpha 模型,可跳过改步,直接进入步骤3.如果您想使用 LaWGPT-7B-beta1.0 模型:由于 LLaMA[4] 和 Chinese-LLaMA[5] 均未开源模型权重。根据相应开源许可,本项目只能发布 LoRA 权重,无法发布完整的模型权重,请各位谅解。本项目给出合并方式[6],请各位获取原版权重后自行重构模型。3. 启动示例

启动本地服务:

conda activate lawgptcd LaWGPTsh src/scripts/generate.sh

接入服务: 

项目结构


LaWGPT
├── assets # 项目静态资源
├── data # 语料及精调数据
├── tools # 数据清洗等工具
├── README.md
├── requirements.txt
└── src # 源码
 ├── finetune.py
 ├── generate.py
 ├── models # 基座模型及 Lora 权重
 │ ├── base_models
 │ └── lora_weights
 ├── outputs
 ├── scripts # 脚本文件
 │ ├── finetune.sh # 指令微调
 │ └── generate.sh # 服务创建
 ├── templates
 └── utils

数据构建

本项目基于中文裁判文书网公开法律文书数据、司法考试数据等数据集展开,详情参考中文法律数据汇总[7]

1.初级数据生成:根据 Stanford_alpaca[8] 和 self-instruct[9] 方式生成对话问答数据2.知识引导的数据生成:通过 Knowledge-based Self-Instruct 方式基于中文法律结构化知识生成数据。3.引入 ChatGPT 清洗数据,辅助构造高质量数据集。

模型训练

LawGPT 系列模型的训练过程分为两个阶段:

1.第一阶段:扩充法律领域词表,在大规模法律文书及法典数据上预训练 Chinese-LLaMA2.第二阶段:构造法律领域对话问答数据集,在预训练模型基础上指令精调

二次训练流程

1.参考 src/data/example_instruction_train.json 构造二次训练数据集2.运行 src/scripts/train_lora.sh

指令精调步骤

1.参考 src/data/example_instruction_tune.json 构造指令微调数据集2.运行 src/scripts/finetune.sh

计算资源

8 张 Tesla V100-SXM2-32GB :二次训练阶段耗时约 24h / epoch,微调阶段耗时约 12h / epoch

模型评估

输出示例

问题:请给出判决意见。

问题:请介绍赌博罪的定义。

问题:请问加班工资怎么算?

问题:民间借贷受国家保护的合法利息是多少?

问题:欠了信用卡的钱还不上要坐牢吗?

问题:你能否写一段抢劫罪罪名的案情描述?

局限性

由于计算资源、数据规模等因素限制,当前阶段 LawGPT 存在诸多局限性:

1.数据资源有限、模型容量较小,导致其相对较弱的模型记忆和语言能力。因此,在面对事实性知识任务时,可能会生成不正确的结果。2.该系列模型只进行了初步的人类意图对齐。因此,可能产生不可预测的有害内容以及不符合人类偏好和价值观的内容。3.自我认知能力存在问题,中文理解能力有待增强。

请诸君在使用前了解上述问题,以免造成误解和不必要的麻烦。

致谢

本项目基于如下开源项目展开,在此对相关项目和开发人员表示诚挚的感谢:

•Chinese-LLaMA-Alpaca: https://github.com/ymcui/Chinese-LLaMA-Alpaca•LLaMA: https://github.com/facebookresearch/llama•Alpaca: https://github.com/tatsu-lab/stanford_alpaca•alpaca-lora: https://github.com/tloen/alpaca-lora•ChatGLM-6B: https://github.com/THUDM/ChatGLM-6B

此外,本项目基于开放数据资源,详见 Awesome Chinese Legal Resources[13],一并表示感谢。

文档附录

关于模型合并

由于 LLaMA[14] 和 Chinese-LLaMA[15] 没有开源模型权重。根据相应开源许可,本项目只能发布 LoRA 权重,无法发布完整的模型权重,请各位谅解。

Legal-Base-7b 模型基于 Chinese-LLaMA-7B 模型进行二次预训练,得到模型的具体步骤如下。

[16]1. 获取 Chinese-LLaMA-7B 原版模型权重

首先,需要获得 Chinese-LLaMA-7B 的原版模型权重。以下是一些可供参考的获取方式:

1.手动合并:根据 Chinese-LLaMA 官方文档[17]提供的合并步骤,手动合并模型权重2.检索下载:在 Hugging Face 官网模型检索[18]

将模型权重文件夹移动至 models/base_models 目录下,如 models/base_models/chinese-llama-7b-merged

[19]2. 获取 legal-lora-7b 模型权重

其次,下载[20] legal-lora-7b 模型权重,

将模型权重文件夹移动至 models/lora_weights 目录下,如 models/lora_weights/legal-lora-7b

[21]3. 运行合并脚本

最后,合并原版 Chinese-LLaMA-7B 模型权重和二次训练到的 legal-lora-7b 权重:

sh scripts/merge.sh

其他关于模型的细节信息请关注github仓库,地址为:https://github.com/pengxiao-song/LaWGPT

References

[1] 技术报告:
[2] 中文法律数据源汇总(Awesome Chinese Legal Resources): https://github.com/pengxiao-song/awesome-chinese-legal-resources
[3] 法律领域词表: https://github.com/pengxiao-song/LaWGPT/blob/main/resources/legal_vocab.txt
[4] LLaMA: https://github.com/facebookresearch/llama
[5] Chinese-LLaMA: https://github.com/ymcui/Chinese-LLaMA-Alpaca
[6] 合并方式: https://github.com/pengxiao-song/LaWGPT/wiki/%E6%A8%A1%E5%9E%8B%E5%90%88%E5%B9%B6
[7] 中文法律数据汇总:
[8] Stanford_alpaca: https://github.com/tatsu-lab/stanford_alpaca#data-generation-process
[9] self-instruct: https://github.com/yizhongw/self-instruct
[10] @cainiao: https://github.com/herobrine19
[11] @njuyxw: https://github.com/njuyxw
[12] @pengxiao-song: https://github.com/pengxiao-song
[13] Awesome Chinese Legal Resources: https://github.com/pengxiao-song/awesome-chinese-legal-resources
[14] LLaMA: https://github.com/facebookresearch/llama
[15] Chinese-LLaMA: https://github.com/ymcui/Chinese-LLaMA-Alpaca
[16] : https://github.com/pengxiao-song/LaWGPT/wiki/%E6%A8%A1%E5%9E%8B%E5%90%88%E5%B9%B6#1-%E8%8E%B7%E5%8F%96-chinese-llama-7b-%E5%8E%9F%E7%89%88%E6%A8%A1%E5%9E%8B%E6%9D%83%E9%87%8D
[17] Chinese-LLaMA 官方文档: https://github.com/ymcui/Chinese-LLaMA-Alpaca
[18] 模型检索: https://huggingface.co/models?search=chinese-llama
[19] : https://github.com/pengxiao-song/LaWGPT/wiki/%E6%A8%A1%E5%9E%8B%E5%90%88%E5%B9%B6#2-%E8%8E%B7%E5%8F%96-legal-lora-7b-%E6%A8%A1%E5%9E%8B%E6%9D%83%E9%87%8D
[20] 下载: https://huggingface.co/entity303/legal-lora-7b/tree/main
[21] : https://github.com/pengxiao-song/LaWGPT/wiki/%E6%A8%A1%E5%9E%8B%E5%90%88%E5%B9%B6#3-%E8%BF%90%E8%A1%8C%E5%90%88%E5%B9%B6%E8%84%9A%E6%9C%AC_