LLaMA-Factory提供了简单易用的WebUI对模型进行微调,是一个非常好用的微调平台。

LLaMA Factory 是一个简单易用且高效的大型语言模型(Large Language Model)训练与微调平台。通过 LLaMA Factory,可以在无需编写任何代码的前提下,在本地完成上百种预训练模型的微调

官方提供了详细的教程:安装 - LLaMA Factory

# 拉取源
git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git
cd LLaMA-Factory
# 安装即可。torch推荐手动从官网下载,便于指定CUDA版本
pip install -e ".[torch,metrics]"

使用llamafactory-cli webui,然后进入:你的IP:7860

image-20250201113658584.webp

然后就是待微调的模型下载。

从huggingface抱脸下载

从自己用户的后台添加User Access Tokens,权限仅读取就行了。

image-20250201145500792.webp

选择要拉取的模型,填写授权申请。

image-20250201150219034.webp

直接发送,加入请求容易被拒绝(中国区都容易被拒绝),推荐直接从modelscope拉取。

image-20250201150415339.webp

# 安装
pip install -U "huggingface_hub[cli]"

添加好了通过huggingface-cli login命令登录。

image-20250201145905185.webp

拉取时,先配置国内镜像地址,export HF_ENDPOINT=https://hf-mirror.com,具体操作查看:

Huggingface 镜像站

从modelscope魔搭下载

魔搭暂时没有什么访问限制,直接使用命令,然后等待完成即可:

modelscope download --model LLM-Research/Llama-3.2-3B

image-20250201150729037.webp

(llama) cyqsd@cyqsd-MS-7D90:~/Project$ modelscope download --model LLM-Research/Llama-3.2-3B-Instruct██████████████████████████████████████████████████████████████████████████████████████████████████████▉| 5.98G/5.98G [18:27<00:00, 9.41MB/s]
...省略一大堆...
Downloading Model to directory: /home/cyqsd/.cache/modelscope/hub/LLM-Research/Llama-3.2-3B-Instruct█

训练-准备数据集

进入目录:

/home/cyqsd/Project/LLaMA-Factory/data,里面的README_zh.md,详细解释了数据集的用法。

image-20250201152401849.webp

LLaMA-Factory可以支持 Alpaca 格式和 ShareGPT 格式,具体查看官方教程:数据处理 - LLaMA Factory

dataset_info.json中添加自定义的数据集:

image-20250201153015989.webp

可以在模型名称处选择已有模型(本地没有的话,会从huggingface中拉取,因为网络问题,一般都拉取不成功),可以自定义模型路径。

image-20250201160932669.webp

自选前文中modelscope下载的即可:

image-20250201161917932.webp

设置训练的各项参数,直接点击开始。或者预览命令,从控制台手动开始。

image-20250201161422695.webp

终端也会显示进度:

image-20250201161139055.webp

等待训练完毕。

验证

image-20250201161657272.webp

因为训练和预测都是使用的相同训练集,所以此处的数据没有多大的参考价值。实际可以评估:BLEU(Bilingual Evaluation understudy,双语互译质量评估),越小越好,不过更适合评估较短的语句,可以看其他参数评估。

image-20250201162126902.webp

训练的检查点在/home/cyqsd/Project/LLaMA-Factory/saves/Custom/lora中。

llamafactory-cli train \
    --stage sft \
    --do_train True \
    --model_name_or_path /home/cyqsd/.cache/modelscope/hub/LLM-Research/Llama-3___2-3B-Instruct \
    --preprocessing_num_workers 16 \
    --finetuning_type lora \
    --template default \
    --flash_attn auto \
    --dataset_dir data \
    --dataset cyqsd_zh_demo \
    --cutoff_len 2048 \
    --learning_rate 5e-05 \
    --num_train_epochs 30.0 \
    --max_samples 100000 \
    --per_device_train_batch_size 2 \
    --gradient_accumulation_steps 8 \
    --lr_scheduler_type cosine \
    --max_grad_norm 1.0 \
    --logging_steps 5 \
    --save_steps 100 \
    --warmup_steps 0 \
    --packing False \
    --report_to none \
    --output_dir saves/Custom/lora/train_2025-02-01-23-08-17 \
    --bf16 True \
    --plot_loss True \
    --trust_remote_code True \
    --ddp_timeout 180000000 \
    --include_num_input_tokens_seen True \
    --optim adamw_torch \
    --adapter_name_or_path saves/Custom/lora/train_2025-02-01-23-08-17 \
    --lora_rank 8 \
    --lora_alpha 16 \
    --lora_dropout 0 \
    --lora_target all

对话测试

LLaMA-Factory提供了UI的对话测试工具,选择检查点路径

image-20250201165207947.webp

选择加载模型:

image-20250201165000485.webp

如果效果不理想可以调整温度系数,让模型更不发散,或者重新修改参数进行微调训练。

导出为safetensors格式

默认导出的格式为safetensors格式,如需使用gguf格式,则还需要使用:ggml-org/llama.cpp: LLM inference in C/C++进行转换。

image-20250201165059274.webp

导出的目录可指定:

image-20250201165947473.webp

文章目录