跳到主要内容

Llama-Factory 入门

Llama-Factory 简介

环境准备

Llama-Factory 是面向大语言模型微调的上层工具,支持 SFT、LoRA、QLoRA、DPO 等训练方式,并通过 Transformers、DeepSpeed 和 Torch-Musa 使用摩尔线程 GPU。它主要通过 YAML 配置或命令行参数完成模型、数据集、模板和优化策略配置。

建议使用摩尔线程官方训练镜像。当前示例基于 MTT S5000、MUSA Driver 4.3.7 和 training-suite:v2.1.5-musa-4.3.7

创建并启动容器

sudo docker create --privileged --env MTHREADS_VISIBLE_DEVICES=all --net host -v /data/:/data/ --name llamafactory registry.mthreads.com/mcctest/training-suite:v2.1.5-musa-4.3.7 sleep infinity
sudo docker start llamafactory
sudo docker exec -it llamafactory bash
service ssh restart

进入容器后使用 mthreads-gmi 检查 GPU,必要时执行 ./mccl_test 验证通信。

安装 Llama-Factory

当前示例使用 Llama-Factory v0.9.3,并通过 musify 完成 MUSA 适配:

git clone -b v0.9.3 --depth 1 https://github.com/hiyouga/LLaMA-Factory.git
cd LLaMA-Factory
bash /data/playground/tool/musify.sh .
pip install -e .
pip install transformers==4.51.3

使用 Llama-Factory 进行模型微调

1. 准备模型和数据集

pip install modelscope
modelscope download --model Qwen/Qwen3-0.6B --local_dir /data/models/Qwen3-0.6B

数据集放在 dataset_dir 指定的目录中,并在 Llama-Factory 数据集配置中登记名称。

2. 启动 WebUI

llamafactory-cli webui

默认监听 7860 端口。无法访问 WebUI 时,可以使用命令行或 YAML 配置文件启动训练。

3. 启动全参数 SFT

MUSA_VISIBLE_DEVICES=0 llamafactory-cli train \
--stage sft --do_train true \
--model_name_or_path /data/models/Qwen3-0.6B \
--finetuning_type full --template qwen3 \
--dataset_dir /data/datasets/llama_factory --dataset train \
--cutoff_len 2048 --per_device_train_batch_size 2 \
--gradient_accumulation_steps 8 --num_train_epochs 3 \
--bf16 true --output_dir saves/Qwen3-0.6B/full

4. 启动 LoRA 微调

较大模型可以使用 LoRA 降低可训练参数量和显存占用:

llamafactory-cli train --stage sft --do_train true \
--model_name_or_path /data/models/Qwen3-32B \
--finetuning_type lora --lora_rank 16 --lora_alpha 32 \
--lora_target all --template qwen3 \
--dataset_dir /data/datasets/llama_factory --dataset train \
--cutoff_len 2048 --per_device_train_batch_size 1 \
--gradient_accumulation_steps 16 --bf16 true \
--output_dir saves/Qwen3-32B/lora

多卡训练时可使用 FORCE_TORCHRUN=1,并根据实际卡数、模型规模和显存调整 batch size、梯度累积步数及 DeepSpeed 配置。

5. 常见检查

  • mthreads-gmi 是否能看到目标 GPU;
  • MUSA_VISIBLE_DEVICES 与进程数是否匹配;
  • 模型模板与模型架构是否匹配;
  • dataset_dirdataset 名称是否正确;
  • BF16、FlashAttention、LoRA/QLoRA 依赖是否已安装。