LLaMA-Factory对模型进行微调
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
。
然后就是待微调的模型下载。
从huggingface抱脸下载
从自己用户的后台添加User Access Tokens,权限仅读取就行了。
选择要拉取的模型,填写授权申请。
直接发送,加入请求容易被拒绝(中国区都容易被拒绝),推荐直接从modelscope拉取。
# 安装
pip install -U "huggingface_hub[cli]"
添加好了通过huggingface-cli login
命令登录。
拉取时,先配置国内镜像地址,export HF_ENDPOINT=https://hf-mirror.com
,具体操作查看:
从modelscope魔搭下载
魔搭暂时没有什么访问限制,直接使用命令,然后等待完成即可:
modelscope download --model LLM-Research/Llama-3.2-3B
(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
,详细解释了数据集的用法。
LLaMA-Factory可以支持 Alpaca 格式和 ShareGPT 格式,具体查看官方教程:数据处理 - LLaMA Factory。
dataset_info.json
中添加自定义的数据集:
可以在模型名称处选择已有模型(本地没有的话,会从huggingface中拉取,因为网络问题,一般都拉取不成功),可以自定义模型路径。
自选前文中modelscope下载的即可:
设置训练的各项参数,直接点击开始。或者预览命令,从控制台手动开始。
终端也会显示进度:
等待训练完毕。
验证
因为训练和预测都是使用的相同训练集,所以此处的数据没有多大的参考价值。实际可以评估:BLEU(Bilingual Evaluation understudy,双语互译质量评估),越小越好,不过更适合评估较短的语句,可以看其他参数评估。
训练的检查点在/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的对话测试工具,选择检查点路径
:
选择加载模型:
如果效果不理想可以调整温度系数,让模型更不发散,或者重新修改参数进行微调训练。
导出为safetensors格式
默认导出的格式为safetensors
格式,如需使用gguf
格式,则还需要使用:ggml-org/llama.cpp: LLM inference in C/C++进行转换。
导出的目录可指定:
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。