# Qwen3-Law-SFT **Repository Path**: ThinkInspure/qwen3-law-sft ## Basic Information - **Project Name**: Qwen3-Law-SFT - **Description**: 在本文中,我们会使用 Qwen3-1.7b 模型在 hk-o1aw-sft-16k 数据集上做全参数微调训练,实现让微调后的Qwen3支持对法律问题进行DeepSeek R1式的推理回复。训练中用到了transformers、datasets等工具,同时使用SwanLab监控训练过程、评估模型效果 - **Primary Language**: Python - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2025-10-01 - **Last Updated**: 2025-12-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Qwen3微调实战:法律R1推理风格聊天 ## 项目介绍 qwen3-law-sft 是一个专注于法律领域对话生成的模型微调项目,基于阿里云 Qwen3-1.7B 开源模型,使用法律专用数据集(HK-O1aw-SFT-16K)进行监督微调(SFT),最终实现能输出 **“问题 - 推理 - 答案” 完整链路 ** 的法律问答模型。 核心目标:让模型具备法律场景下的专业问答能力,回答时不仅给出结论,还能附带严谨的法律推理过程(如法条引用、要件匹配),适配法律咨询、合同审查辅助等场景。 ## 目录结构说明 ``` qwen3-law-sft/ - ├── data.py: # 原始数据处理脚本 - ├── download_model.py: # 下载预训练Qwen3-1.7B模型的脚本 - ├── train.py # 模型训练主脚本(含数据预处理、训练逻辑) - ├── infer.py # 模型推理脚本(支持多硬件适配、推理加速) - ├── requirements.txt # 项目依赖包清单 - ├── train.jsonl # 原始训练集(HK-O1aw-SFT-16K分割后) - ├── val.jsonl # 原始验证集(HK-O1aw-SFT-16K分割后) - ├── train_format.jsonl # 格式化训练集(预处理后,供训练调用) - ├── val_format.jsonl # 格式化验证集(预处理后,供训练调用) - ├── output/ # 训练输出目录 - │ └── Qwen3-1.7B/ # 模型Checkpoint目录(仅保留最后2个) - │ ├── checkpoint-800/ - │ └── checkpoint-1600/ - └── README.md # 项目说明文档(本文) ``` ## 使用方法 ### 安装环境 ```bash pip install -r requirements.txt ``` ### 数据集来源 使用 HK-O1aw-SFT-16K 法律数据集,该数据集由香港生成式人工智能研发中心(HKGAI)联合北京大学对齐团队发布,基于香港电子立法网站(e-Legislation)的法律材料构建,包含 15,959 条高质量法律问答样本。 数据集下载地址: - Hugging Face:[hkair-lab/hk-o1aw-sft-16k](https://huggingface.co/datasets/HKAIR-Lab/HK-O1aw-SFT-16K) ### 数据集结构 每条样本包含 3 个核心字段,无需额外处理即可用于训练: | 字段名 | 说明 | 示例 | |--------|--------------------|----------| | question | 用户法律问题(自然语言) | “门店转让后对方想退店,应如何处理?” | | think | 法律推理过程(含法条引用、要件分析) | “1. 适用《民法典》第 562 条;2. 需确认转让合同是否约定解除条款;3. 对方无正当理由退店属违约...” | | answer | 最终法律结论(简洁、专业) | “可拒绝退店,要求对方承担违约责任,若合同约定违约金,可主张违约金赔偿。”| ### 数据准备 会自动完成数据集下载、预处理、验证集划分 采用 9:1 比例生成训练集与验证集: 训练集:train.jsonl(约 14,363 条) 验证集:val.jsonl(约 1,596 条) ```angular2html python data.py ``` ### 模型训练 运行 `train.py` 或 `train_lora.py` 文件,根据需要调整参数与数据路径。 全参数训练 ```angular2html python train.py ``` LoRA训练 ```angular2html python train_lora.py ``` SwanLab训练日志:[![](https://raw.githubusercontent.com/SwanHubX/assets/main/badge1.svg)](https://swanlab.cn/@thinkInspure/qwen3-sft-law/overview) 两种微调方式对比,经测试全参数微调效果好于LoRA: ![img.png](img/img.png) ### 训练效果预览 ```angular2html Question: 如果一名学生在未经版权拥有者许可的情况下复印了一本书并免费分发给全班同学,他是否会承担民事或刑事责任?请解释原因。 LLM: **分析法律条款** 根据《版权条例》第41A条,未经版权拥有者许可复制作品并分发给公众,即使是免费分发,也可能构成侵权行为。该条款明确指出,这种行为可能构成民事或刑事责任。 **理解民事责任** 在民事责任方面,未经许可复制和分发作品可能导致版权拥有者对侵权者提起诉讼,要求赔偿损失。这是因为侵权行为直接侵犯了版权拥有者的权利。 **理解刑事责任** 刑事责任方面,如果分发的作品是侵权复制品,版权拥有者可以向法庭申请禁制令,要求停止侵权行为并赔偿损失。此外,法庭可以要求销毁侵权复制品。 **验证和排除其他可能性** 考虑到所有可能性,未经许可的分发行为符合侵权的定义,因此学生可能面临民事和刑事责任。没有其他法律条款可以豁免这种情况。 学生在未经许可的情况下复印并分发书籍,可能会承担民事和刑事责任。这是因为他的行为直接侵犯了版权拥有者的权利。 ``` ### 推理预测 使用 `inference.py` 或 `inference_lora.py` 中的 `predict` 函数进行模型推理 全参数微调推理 ```angular2html python inference.py ``` LoRA微调推理 ```angular2html python inference_lora.py ``` ## 注意事项 - 确保模型文件已正确下载并放置在指定路径。 - 数据格式需与模型输入格式匹配,必要时可修改 `data.py` 或 `train.py` 中的数据处理逻辑。 ## 相关工具 - swanlab:开源、现代化设计的深度学习训练跟踪与可视化工具 - transformers:HuggingFace推出的包含预训练文本、计算机视觉、音频、视频和多模态模型的库,用于推理和训练 - peft:用于高效微调大型语言模型的库 ## 许可证 本项目遵循 Apache-2.0 协议,请在使用时遵守相关开源协议。