SYSTEM: ONLINE
VER. ...
SLEET LOG
SLEET'S LOG
/2024年12月16日/2 MIN READ

使用 LLaMA Factory 对 Mistral 模型进行微调的流程记录

Mistral LLaMA Factory

整个流程大概几个小时就能跑通,没碰到什么奇怪的 BUG,感觉 LLaMA Factory 对初学者还是很友好的。

注意: 本文仅记录操作流程,因为本人是初学者,文中附上的参数由 GPT 生成,不具备参考价值,可以自行调整。

算力平台选择

算力支持使用的是 算力云 的按量付费方案,本人选择了 vGPU-32GB 实例,操作系统为 Ubuntu。

由于暂时无需立刻开始训练,为节省费用,初始选择无卡模式启动。

下载 LLaMA Factory

在根目录下,根据 LLaMA Factory 官方文档 的安装步骤完成 LLaMA Factory 的部署。官方文档内容较为详尽,此处不再赘述。

下载 Mistral 模型

本次微调目标是对话模型,因此选择了 Mistral-7B-Instruct-v0.2

克隆模型代码仓库

autodl-tmp(根目录)中,通过以下命令尝试使用 git 克隆模型:

bash
# 请确保已正确安装 git lfs git lfs install git clone https://www.modelscope.cn/AI-ModelScope/Mistral-7B-Instruct-v0.2.git

由于模型文件较大,通常无法一次性完成下载。可以先核对服务器已下载内容和模型实际应拉取的文件列表(模型的文件内容请参考 ModelScope 模型文件列表),确认好除模型文件以外的所有内容均已克隆完成,就可以直接中断拉取进程,再手动下载模型文件。

手动下载模型文件

进入模型代码仓库的根目录,分别使用以下命令单独下载模型分片:

bash
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 格式,示例如下:

json
[ { "instruction": "今天的天气怎么样?", "input": "", "output": "今天的天气不错,是晴天。", "history": [ ["今天会下雨吗?", "今天不会下雨,是个好天气。"], ["今天适合出去玩吗?", "非常适合,空气质量很好。"] ] } ]

将数据集文件存放于 LLaMA Factory 的 data 目录下。这里本人新建了一个子目录 mistral,将当前数据集存放在了路径 data/mistral/evan.json

随后,在 data 目录下的 dataset_info.json 文件中注册该数据集:

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,内容如下:

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 根目录下运行以下命令进行微调:

bash
llamafactory-cli train examples/train_lora/mistral_evan.yaml

微调完成后,模型文件将保存在配置中指定的 output_dir 路径下。


推理配置与运行

examples/inference 目录下,新建一个推理配置文件 mistral_evan.yaml,内容如下:

yaml
model_name_or_path: saves/mistral7b/lora/sft template: default infer_backend: huggingface

运行以下命令启动推理:

bash
llamafactory-cli chat examples/inference/mistral_evan.yaml

运行成功后,即可通过命令行与微调后的模型进行对话交互。

Article Index