引言:一套快速实现 Llama3 中文微调的教程
主要参考:胖虎遛二狗的 B 站教学视频《【大模型微调】使用Llama Factory实现中文llama3微调》
✅
笔者简介:Wang Linyong,西工大,2023级,计算机技术
研究方向:文本生成、大语言模型
笔者的实验环境:
版本 | |
---|---|
Ubuntu | 22.04.4 |
CPU | Intel® Core™ i9-14900KF |
Driver(驱动) | 535.171.04 |
GPU(一张) | NVIDIA GeForce RTX 4090 |
CUDA | 12.4 |
Python | 3.10.14 |
Pytorch | 2.2.1 |
文章目录
1. 配置 Hugging Face 的国内镜像网站
● 如果不配置的话,我们在后续下载 15G
的 Llama3 的模型权重文件会很慢很慢。
● 第一步: 安装 huggingface_hub
包。这个包是 Hugging Face 提供的 Python
客户端库,用于与 Hugging Face Hub
进行交互。
pip install huggingface_hub
● 第二步: 配置 Hugging Face API
的镜像端点,可以加快模型的下载速度,尤其是在中国大陆网络环境。
export HF_ENDPOINT=https://hf-mirror.com
● 第三步: 使用 huggingface-cli
工具从 Hugging Face Hub
下载指定的模型文件。
huggingface-cli download --resume-download meta-llama/Llama-3.2-3B-Instruct --local-dir ./models/Qwen2.5-7B-Instruct/
指令解释:
--resume-download
:启用断点续传。如果下载中断,下次继续下载时将从中断的位置开始,而不是重新下载。- shenzhi-wang/Llama3-8B-Chinese-Chat:这是模型的仓库路径,表示从
Hugging Face
上下载shenzhi-wang(作者)
发布的Llama3-8B-Chinese-Chat
模型。 --local-dir ./models/Llama3-8B-Chinese-Chat/
:将下载的模型文件保存到本地的./models/Llama3-8B-Chinese-Chat/
目录中。
结果展示(我安装在 ~/llama/models/Llama3-8B-Chinese-Chat
目录下的):
2. 安装 LLaMA-Factory 框架
● 【关于 LLaMA-Factory 的简介】LLaMA-Factory 是一个开源工具,旨在简化大型语言模型(LLMs)的微调和推理过程,特别是针对 LLaMA(Large Language Model Meta AI)系列模型。它提供了用户友好的接口和高效的工具,帮助研究者和开发者快速上手并定制化 LLM 模型,适用于各种自然语言处理任务。
● 首先进入 ~/llama
的同级目录,从 GitHub
克隆 LLaMA-Factory
仓库到本地。再进入该仓库目录。接着使用 pip
安装该项目作为一个可编辑的 Python
包,方便开发和修改。
cd ~/llama
git clone https://github.com/hiyouga/LLaMA-Factory.git
cd LLaMA-Factory
pip install -e .
3. 启动可视化窗口
● 启动命令:
cd LLaMA-Factory
llamafactory-cli webui
● UI界面执行步骤: 注意第 ③ 步要将模型路径换成你所下载的路径。
● 一个简单的调用案例:
问题:工作多长一段时间后没有签订劳动合同,公司的做法是违法的?我们应该怎么维权?
4. 数据集构建方式
● 在 LLaMA-Factory/data/dataset_info.json
中添加自己的数据格式。比如下述名为 Laws_QA
的数据集(对应的文件是 Laws_QA.json
)。其中,各字段的含义:
instruction
告诉模型要解释法律条款。input
提供了具体的法律条款。output
是模型生成的解释。
"Laws_QA": {
"file_name": "Laws_QA.json",
"columns": {
"prompt": "instruction",
"query": "input",
"response": "output",
}
}
● 然后需要把你的数据集对应的文件 Laws_QA.json
放入到 LLaMA-Factory/data/
目录下。在这里 举一个数据样例:
{
"instruction": "解释一下以下法律条款",
"input": "《中华人民共和国合同法》第52条",
"output": "《中华人民共和国合同法》第52条规定了合同无效的情形,包括一方以欺诈、胁迫的手段订立合同,损害国家利益;恶意串通,损害国家、集体或者第三人利益;以合法形式掩盖非法目的;损害社会公共利益;违反法律、行政法规的强制性规定。"
}
● 这是我构造的数据样例: 我只构造了简单的 “问答对”,所以 input
字段为空。
5. 模型微调的流程
● 一图胜千言,按照下图的步骤设置就行:
- 微调中文模型就选
zh
- 选择模型名称
- 选择对应的模型参数路径
- 选择微调方法,一般是 LoRA
- 训练方式如果是有监督的微调,就选择
Supervised Fine-Tuning
- 选择对应的数据集(我这里选的就是之前我构造的
Laws_QA
) - 设置对应的超参数
- 开始训练
备注:量化等其他设置可自行抉择。
● 微调完后,当需要调用时,可参考本文前面写的 “3. 启动可视化窗口” 的内容。
6. 参考资料
[1] 胖虎遛二狗的 B 站教学视频《【大模型微调】使用Llama Factory实现中文llama3微调》,感谢Up主:胖虎遛二狗
7. 补充说明
● 若有写得不对、欠妥的地方,或有疑问,欢迎评论交流。
⭐️ ⭐️ 完稿于 2025年3月21日 14:36 教研室工位 💻