当前位置:AIGC资讯 > AIGC > 正文

使用llama-factory和llama.cpp微调量化Qwen2

使用llama-factory和llama.cpp微调量化Qwen2

准备数据集 微调 测试 合并 使用llama.cpp量化

准备数据集

1.选定数据集的格式
2.将处理好的数据集上传到/data 文件夹下面,并修改dataset_info.json文件
3.测试数据集同理

微调

在目录LLaMA-Factory/examples/train_lora/llama3_lora_sft_praise.yaml
下修改对应的参数

训练命令:
CUDA_VISIBLE_DEVICES=1 llamafactory-cli train examples/train_lora/llama3_lora_sft_praise.yaml

生成模型将会放在LLaMA-Factory/saves下面

测试

llamafactory-cli train examples/train_lora/llama3_lora_predict.yaml

自己的测试acc脚本
cd saves/Qwen2-1.5B/lora/predict/
python acc.py

合并

llamafactory-cli export examples/merge_lora/llama3_lora_sft.yaml

使用llama.cpp量化

将合并后的模型转化为fp16精度的gguf格式文件
python convert-hf-to-gguf.py /home/ccnu-train/gl/LLaMA-Factory/models/qwen2_lora_sft/question/ --outfile models/1.5B/qwen2-1.5B-question-fp16.gguf

量化为int4精度的模型
./llama-quantize ./models/1.5B/qwen2-1.5b-question2-fp16.gguf ./models/1.5B/qwen2-1.5b-question2-q4_0.gguf q4_0

flash-attn&cuda版本
flash-attn:2.6.3
cuda:12.4

总结

**文章总结:使用llama-factory和llama.cpp微调并量化Qwen2模型**
本文详细描述了如何通过llama-factory和llama.cpp工具对Qwen2模型进行微调、测试、合并以及量化的过程。具体步骤包括:
1. **准备数据集**:
- 选择合适的数据集格式。
- 将处理好的数据集上传至`/data`文件夹,并更新`dataset_info.json`文件以适配数据集。
- 同样地,为测试数据集执行类似操作。
2. **微调**:
- 修改`LLaMA-Factory/examples/train_lora/llama3_lora_sft_praise.yaml`文件中的相关参数以适配微调任务。
- 使用`llamafactory-cli train`命令执行微调训练,指定YAML配置文件路径。
- 生成的模型将被保存在`LLaMA-Factory/saves`目录下。
3. **测试**:
- 通过`llamafactory-cli train`命令配合测试YAML文件(如`llama3_lora_predict.yaml`)执行模型预测。
- 使用自定义的准确率评估脚本(如`acc.py`)在指定目录下评估模型性能。
4. **合并**:
- 使用`llamafactory-cli export`命令结合合并YAML文件(如`llama3_lora_sft.yaml`)将训练好的LoRA权重与基础模型合并。
5. **使用llama.cpp量化**:
- 将合并后的模型首先转换为fp16精度的gguf格式文件,利用`python convert-hf-to-gguf.py`脚本实现。
- 进一步使用`llama-quantize`工具将fp16模型量化为int4精度的模型,以减小模型大小并提高推理速度。
- 量化过程中指定了flash-attn和CUDA的版本信息,确保量化过程的兼容性。
通过上述步骤,用户能够有效地对Qwen2模型进行定制化的微调、测试、合并以及量化,以满足不同的应用场景和性能需求。

更新时间 2024-09-12