首先,在HuggingFace下载这个语言模型,为了提高下载速度,这里准备下如下两步操作:

  1. 配置下载的代理【SET HF_ENDPOINT=https://hf-mirror.com】
  2. 安装PIP依赖【pip install huggingface-cli -i https://pypi.tuna.tsinghua.edu.cn/simple,  pip install -U huggingface_hub -i https://pypi.tuna.tsinghua.edu.cn/simple】

下载模型:huggingface-cli.exe download --resume-download shenzhi-wang/Llama3-8B-Chinese-Chat --local-dir .

LLama3中文语言模型指令微调【实战篇】_LLama3

语言模型下载完成后,后续使用LLama-Factory这个工具来微调。

git clone --depth 1 https://github.com/hiyouga/LLaMa-Factory.git

cd LLaMa-Factory

pip install -e .

后续自己希望训练的json格式的数据集可以放在data文件夹下,如下是已有的一些数据集:

LLama3中文语言模型指令微调【实战篇】_LLama3_02

然后就需要准备下训练数据,这里就自己随便按标准的格式编辑一下吧【其他特殊行业的数据集可以编写脚本批量生成】:

LLama3中文语言模型指令微调【实战篇】_LLama3_03

然后再dataset_info.json新增这个数据集【测试用,数据量比较少可能训练出来的模型表现不是很好,建议增加更多条数的数据】:

LLama3中文语言模型指令微调【实战篇】_LLama3_04

为了训练时不受其他数据集影响训练时间,这里把其他数据集都删掉:

LLama3中文语言模型指令微调【实战篇】_LLama3_05

identity.json留下,方便做身份角色生成。

本地的4060还没开始就爆了,哈哈~

LLama3中文语言模型指令微调【实战篇】_LLama3_06

还是去阿里云租个GPU服务搞吧,这里推荐使用抢占式的,使用完验证完后就释放,性价比超高。

LLama3中文语言模型指令微调【实战篇】_LLama3_07

LLama3中文语言模型指令微调【实战篇】_LLama3_08

建议GPU内存选大一点的,一开始还是保守了,选得31GB的【还有数据盘也建议100GB以上】,初始化到75%还是OOM了,格局打开吧,这次直接干188GB的~

LLama3中文语言模型指令微调【实战篇】_LLama3_09

安装后,安装个Annaconda环境来使用Python:wget https://repo.anaconda.com/archive/Anaconda3-2024.02-1-Linux-x86_64.sh,然后新建个虚拟环境【conda create -n llama3 python=3.10】即可,这里是下载模型的脚本,为了提高下载速度,这里使用modelscope的模型【pip install modelscope】:

import os
from modelscope import snapshot_download

allow_patterns = ["*.*"]

repo_id = 'LLM-Research/Llama3-8B-Chinese-Chat'
local_dir = "."

model_dir = snapshot_download(model_id=repo_id, cache_dir=local_dir)

然后就可以下载模型了:

LLama3中文语言模型指令微调【实战篇】_LLama3_10

然后按照前面步骤处理下,即可启动UI界面,配置下模型地址参数,另外,要在公网访问UI界面,需要在安全组放行端口访问,还要记得选上自己的数据集:

LLama3中文语言模型指令微调【实战篇】_LLama3_11

启动训练前,确认下GPU缓存已经释放了

LLama3中文语言模型指令微调【实战篇】_LLama3_12

确认下torch是cuda版本,不然使用CPU训练挺慢的

LLama3中文语言模型指令微调【实战篇】_LLama3_13

开始~~~

LLama3中文语言模型指令微调【实战篇】_LLama3_14

188G训练起来,贼快,训练完后,会生成一个微调文件,后续可以选配到原来的模型再导出,这里先独立。

未加载微调文件时的问题与回复:

LLama3中文语言模型指令微调【实战篇】_LLama3_15

卸载模型,选择检查点文件后,再次加载模型试试:

LLama3中文语言模型指令微调【实战篇】_LLama3_16

有点靠近了,总体效果不是很理想,一方面是数据集不够,才一条,另外是内存可能加大点提高精度的话可能效果更好。

后面可以把微调后的模型与原来的Llama3模型一起导出即可使用,这里就不搞了,留个待办吧:

  1. 导出模型
  2. 命令行模式训练

原理是类似的,一通百通,实战篇搞完了,该回头补补理论篇的知识了。