【AI大模型开发者指南】llama3认知微调——xtuner实战
基于xtuner的微调,核心要素三x三
前期准备
- 环境配置
- 准备模型
- 创建数据集
训练
- 修改训练配置
- xtuner一键启动训练
- 生成pth
后期处理
- 生成adapter
- 合并adapter与现有模型
- 部署
实战过程
本次工作目录结构可以克隆
git clone https://github.com/SmartFlowAI/Llama3-Tutorial.git
cd Llama3-Tutorial
环境配置在此不再赘述,模型下载也是一样
进入到创建数据集
import json
# 输入你的名字
name = 'SmartFlowAI'
# 重复次数
n = 2000
data = [
{
"conversation": [
{
"system":"你是一个懂中文的小助手",
"input": "你是(请用中文回答)",
"output": "您好,我是{},一个由 SmartFlowAI 打造的人工智能助手,请问有什么可以帮助您的吗?".format(name)
}
]
}
]
for i in range(n):
data.append(data[0])
with open('./data/personal_assistant.json', 'w', encoding='utf-8') as f:
json.dump(data, f, ensure_ascii=False, indent=4)
唐僧念经式认知微调数据集脚本↑
前期准备完成,进入训练阶段
修改训练配置
三个关键
- 模型地址(pretrained_model_name_or_path)
- 数据集配置(alpaca_en.dataset)
- path
- data_files
- dataset_map_fn
- 评估问题(evaluation_inputs)
本次数据格式
[
{
"conversation": [
{
"system": "你是一个懂中文的小助手",
"input": "你是(请用中文回答)",
"output": "您好,我是SmartFlowAI,一个由 SmartFlowAI 打造的人工智能助手,请问有什么可以帮助您的吗?"
}
]
},
...
]
不需要修改dataset_map_fn,数据集方面只需要改alpaca_en.dataset的path为"json"
,data_files
为现有数据集位置即可
完成后,一键启动训练
xtuner train ./configs/assistant/llama3_8b_instruct_qlora_assistant.py --work-dir ./llama3_pth
训练中
训练结束
生成adapter
xtuner convert pth_to_hf ./llama3_pth/llama3_8b_instruct_qlora_assistant.py \
./llama3_pth/iter_500.pth \
./llama3_hf_adapter
adapter生成完毕,下一步合并模型
export MKL_SERVICE_FORCE_INTEL=1
xtuner convert merge /root/model/Meta-Llama-3-8B-Instruct \
./llama3_hf_adapter\
./llama3_hf_merged
如果不设置MKL,可能报错如下,并且不会继续
设置无误后,可能还会有error,但可以继续
完成合并后,streamlit web demo 测试
streamlit run ./tools/internstudio_web_demo.py \
./llama3_hf_merged
认知修改成功