整个流程大概几个小时就能跑通,没碰到什么奇怪的 BUG,感觉 LLaMA Factory 对初学者还是很友好的。
注意: 本文仅记录操作流程,因为本人是初学者,文中附上的参数由 GPT 生成,不具备参考价值,可以自行调整。
算力平台选择
算力支持使用的是 算力云 的按量付费方案,本人选择了 vGPU-32GB 实例,操作系统为 Ubuntu。
由于暂时无需立刻开始训练,为节省费用,初始选择无卡模式启动。
下载 LLaMA Factory
在根目录下,根据 LLaMA Factory 官方文档 的安装步骤完成 LLaMA Factory 的部署。官方文档内容较为详尽,此处不再赘述。
下载 Mistral 模型
本次微调目标是对话模型,因此选择了 Mistral-7B-Instruct-v0.2。
克隆模型代码仓库
在 autodl-tmp
(根目录)中,通过以下命令尝试使用 git
克隆模型:
# 请确保已正确安装 git lfs
git lfs install
git clone https://www.modelscope.cn/AI-ModelScope/Mistral-7B-Instruct-v0.2.git
由于模型文件较大,通常无法一次性完成下载。可以先核对服务器已下载内容和模型实际应拉取的文件列表(模型的文件内容请参考 ModelScope 模型文件列表),确认好除模型文件以外的所有内容均已克隆完成,就可以直接中断拉取进程,再手动下载模型文件。
手动下载模型文件
进入模型代码仓库的根目录,分别使用以下命令单独下载模型分片:
wget https://modelscope.cn/models/AI-ModelScope/Mistral-7B-Instruct-v0.2/resolve/master/pytorch_model-00001-of-00003.bin
wget https://modelscope.cn/models/AI-ModelScope/Mistral-7B-Instruct-v0.2/resolve/master/pytorch_model-00002-of-00003.bin
wget https://modelscope.cn/models/AI-ModelScope/Mistral-7B-Instruct-v0.2/resolve/master/pytorch_model-00003-of-00003.bin
note:在模型页面中,每个文件旁均有下载按钮,可通过右键复制其下载链接。
数据集准备
根据 LLaMA Factory 官方文档中数据集格式的说明,本人采用了 Alpaca
格式,示例如下:
[
{
"instruction": "今天的天气怎么样?",
"input": "",
"output": "今天的天气不错,是晴天。",
"history": [
["今天会下雨吗?", "今天不会下雨,是个好天气。"],
["今天适合出去玩吗?", "非常适合,空气质量很好。"]
]
}
]
将数据集文件存放于 LLaMA Factory 的 data
目录下。这里本人新建了一个子目录 mistral
,将当前数据集存放在了路径 data/mistral/evan.json
。
随后,在 data
目录下的 dataset_info.json
文件中注册该数据集:
{
"mistral_evan": {
"file_name": "mistral/evan.json",
"columns": {
"prompt": "instruction",
"query": "input",
"response": "output",
"system": "system",
"history": "history"
}
}
}
其中 columns
的配置需根据数据集格式进行调整,具体可以参考 官方文档。
微调配置
在 LLaMA Factory 根目录的 examples/train_lora
中,创建一个新的微调配置文件 mistral_evan.yaml
,内容如下:
### model
model_name_or_path: /root/autodl-tmp/Mistral-7B-Instruct-v0.2
### method
stage: sft
do_train: true
finetuning_type: lora
lora_target: all
### dataset
dataset: mistral_evan
template: default
cutoff_len: 2048
max_samples: 1000
overwrite_cache: true
preprocessing_num_workers: 16
### output
output_dir: saves/mistral7b/lora/sft
logging_steps: 10
save_steps: 500
plot_loss: true
overwrite_output_dir: true
### train
per_device_train_batch_size: 2
gradient_accumulation_steps: 8
num_train_epochs: 3.0
lr_scheduler_type: cosine
warmup_ratio: 0.1
bf16: true
ddp_timeout: 180000000
### eval
val_size: 0.1
per_device_eval_batch_size: 2
eval_strategy: steps
eval_steps: 500
注意:
model_name_or_path
需替换为实际模型路径。- 如果服务器当前为无卡模式,请关机后切换至正常启动模式(启用 GPU)。
启动 GPU 后,在 LLaMA Factory 根目录下运行以下命令进行微调:
llamafactory-cli train examples/train_lora/mistral_evan.yaml
微调完成后,模型文件将保存在配置中指定的 output_dir
路径下。
推理配置与运行
在 examples/inference
目录下,新建一个推理配置文件 mistral_evan.yaml
,内容如下:
model_name_or_path: saves/mistral7b/lora/sft
template: default
infer_backend: huggingface
运行以下命令启动推理:
llamafactory-cli chat examples/inference/mistral_evan.yaml
运行成功后,即可通过命令行与微调后的模型进行对话交互。