Skip to content

tt5416/law_lora_mindspore

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

中文法律问答 LoRA 微调与推理(MindSpore) English | 中文简体

简介

  • 基于 MindSpore 与 MindNLP 的中文法律问答 LoRA 微调与推理工程,底座模型默认使用 Qwen2.5-7B-Instruct
  • 支持从 JSON 指令数据进行 LoRA 微调,保存 Adapter,按需合并为全量权重,命令行推理与 Gradio WebUI 流式输出。

特性

  • LoRA 微调:快速微调中文法律问答能力,支持断点续训与持久化保存。
  • 权重合并:一键将 LoRA 适配器合并回全量模型,便于独立部署。
  • 流式推理:命令行与 WebUI 均支持逐字流式输出,响应更平滑。
  • WebUI:基于 Gradio 的聊天页面,开箱即用。
  • Ascend/NPU:默认在 Ascend 环境运行,张量自动放置到 npu:0

安装 测试环境

  • Python 3.9
  • MindSpore 2.7.0
  • MindNLP 0.5.1
  • Linux(Ascend/NPU)

Conda 建议

conda create -n law-lora-ms python=3.9
conda activate law-lora-ms
pip install -r requirements.txt

依赖安装

pip install -r requirements.txt

requirements.txt(已提供)

  • python==3.9.25
  • mindspore==2.7.0
  • mindnlp==0.5.1
  • gradio
  • tqdm

预训练模型

  • 默认底座模型路径:/home/ma-user/work/pretrained/Qwen/Qwen2.5-7B-Instruct
  • 你可以将官方权重下载到本地,并通过命令行的 --model_path 指定不同路径。

数据准备

  • 训练数据为 JSON 列表,每条样本包含:
[
  {
    "instruction": "问题或指令",
    "input": "可选的补充输入",
    "output": "答案文本"
  }
]
  • 提示词会自动按“系统/用户/助手”模板拼接,且训练时对提示词部分不计损失。

开始训练 基础训练(保存 LoRA 适配器)

python train_lora.py \
  --do_train \
  --model_path /path/to/Qwen2.5-7B-Instruct \
  --dataset_json /path/to/dataset.json \
  --output_dir ./output_lora_checkpoints \
  --adapter_dir ./final_lora_output

断点续训

  • 自动从最近 checkpoint 恢复:添加 --resume_auto
  • 指定路径恢复:--resume_from_checkpoint ./output_lora_checkpoints/checkpoint-XXXX

合并为全量模型

python train_lora.py \
  --do_train --merge_and_save \
  --merged_dir ./merged_model
  • 训练完成后释放显存并执行合并,生成可独立推理的完整权重到 merged_model/

命令行推理 使用合并模型(如存在则优先)或“底座+Adapter”进行推理,支持流式输出。

python train_lora.py \
  --do_infer \
  --infer_instruction "某人在交通事故中受到了腹壁穿透创伤,该如何鉴定?" \
  --max_new_tokens 1024 \
  --top_p 0.9 --temperature 0.7 --do_sample

启动 WebUI

python web_infer.py
  • merged_model/ 存在且非空,则加载合并后的全量模型;否则加载“底座+Adapter”。
  • 默认开放地址:http://0.0.0.0:7860(终端会显示可访问链接)。

使用参考(WebUI)

  • 在输入框中直接提问,如“盗窃罪的立案标准是什么?”。
  • 侧栏提供示例问题可一键填充。
  • 输出为逐字流式,便于观察生成过程。

项目结构

├─ train_lora.py        # LoRA 训练、保存、合并、命令行推理
├─ web_infer.py         # Gradio WebUI,聊天式流式推理
├─ requirements.txt     # 依赖列表
├─ final_lora_output/   # 训练后保存的 LoRA 适配器(目录)
├─ merged_model/        # 合并后的全量模型(目录)
└─ output_lora_checkpoints/  # 训练过程 Checkpoints(目录)

常见问题

  • MindSpore/设备:脚本默认 device_target="Ascend"npu:0 放置,确保环境已正确安装并可用。
  • Tokenizers 并行:为避免死锁,脚本在导入前禁用并行(TOKENIZERS_PARALLELISM=false)。
  • 序列长度与显存:--max_seq_length 与批大小、梯度累积需结合显存调节。

致谢

  • Qwen 系列开源模型
  • MindSpore 与 MindNLP 生态
  • PEFT/LoRA 相关实现

许可证

  • 依据上游模型与数据集许可使用与分发。本仓库示例代码供研究学习使用。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages