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_dir和dataset名称是否正确;- BF16、FlashAttention、LoRA/QLoRA 依赖是否已安装。

