掘金 人工智能 21小时前
【大模型微调】7.日志监控配置与模型量化分享
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文深入探讨LLaMA-Factory在模型微调过程中的日志监控和模型量化导出技术。在日志监控方面,文章推荐使用SwanLab作为更详细、更高效的训练日志追踪工具,并提供了详细的配置和使用指南,帮助用户实时监控训练损失、GPU显存占用、利用率及温度等关键指标。在模型量化导出部分,文章详细介绍了如何将LLaMA-Factory训练好的模型转换为GGUF格式,并重点讲解了如何通过llama.cpp进行8位和4位(如Q4_K_M)量化,以减小模型体积并优化性能。最后,文章还指导了如何将量化后的模型上传至ModelScope和Ollama平台,方便分享和使用。

📊 **增强训练日志监控**:LLaMA-Factory的WebUI仅提供基础训练损失曲线,为获得更全面的监控信息,推荐使用SwanLab。SwanLab作为国内平台,访问速度快且支持云端/离线使用,通过简单的`swanlab login`命令及API Key配置,即可在训练过程中实时查看损失曲线、GPU显存占用、利用率和温度等详细数据。

💾 **模型量化与格式转换**:文章详细介绍了如何将LLaMA-Factory训练的模型转换为GGUF格式,并可通过`outtype`参数控制导出精度,如`f32`、`f16`、`bf16`、`q8_0`等。特别地,对于ollama常用的int4精度,需要通过编译`llama.cpp`后再进行量化,如使用`Q4_K_M`量化方法,可以在模型大小和性能间取得良好平衡。

🚀 **模型分享与上传**:在模型量化完成后,文章指导了如何将模型上传至ModelScope或Ollama平台。对于ModelScope,通过`modelscope login`和`modelscope upload`命令即可实现。对于Ollama,则需先生成SSH密钥,然后使用`ollama cp`和`ollama push`命令将模型上传至个人仓库,便于他人下载和使用。

💡 **量化方案选择指南**:文章提供了一个量化方案的对比表格,详细列出了不同量化类型(如Q2_K、Q3_K_M、Q4_K_S、Q4_K_M、Q5_K_M、Q6_K、Q8_0)对应的模型大小、PPL增加情况及适用场景,帮助用户根据自身需求选择最合适的量化策略,平衡显存占用、性能和精度。

引言

本文继续研究 LLaMA-Factory,内容侧重于日志监控和模型量化分享。

更好的训练日志监控

LLaMA-Factory 的 Webui** 仅生成训练损失的曲线图,如需查看更详细训练情况监控信息,可使用 SwanLab**、TensorBoard、Wandb。

其中,SwanLab 是国内平台,访问速度更快,且同时支持云端/离线使用,自然作为首选。

SwanLab 官网:swanlab.cn

要使用SwanLab,需要在其官网注册账号,并获取API key。

之后运行

swanlab login

在弹出此内容后,输出api key信息。

swanlab: Logging into swanlab cloud.swanlab: You can find your API key at: https://swanlab.cn/settingsswanlab: Paste an API key from your profile and hit enter, or press 'CTRL-C' to quit:

完成配置后,在 webui 界面中,勾选启用 SwanLab,设置为云端存储,开始训练后,会自动生成 SwanLab 项目访问地址。

训练完成后,可以查看各参数的曲线变化图。

以及训练过程中 GPU 显存占用、利用率、温度等信息。

导出模型量化

导出量化模型

上文提到,通过llama.cpp可以将 LLaMA-Factory 训练完成的模型转换成 gguf 格式,命令如下:

python convert_hf_to_gguf.py /home/zxy/code/LLaMA-Factory/output_model

实际上,该命令可通过outtype参数来控制导出模型的精度,有以下选项:f32f16bf16q8_0tq1_0tq2_0tq2_0auto

比如,通过以下命令,将模型转换成 8 位量化的版本。

python convert_hf_to_gguf.py /home/zxy/code/LLaMA-Factory/output_model --outtype q8_0

量化四位模型

然而,ollama上的模型基本上都是 int4 精度,通过上面的方式无法直接转换成该精度,需要用编译完的llama.cpp再进行量化。

具体方法如下:

1.下载必要依赖

sudo apt install cmakesudo apt install libopenblas-devsudo apt install libcurl4-openssl-dev curl

2.cmake编译

cmake -B build -DGGML_BLAS=ON -DGGML_BLAS_VENDOR=OpenBLAS -DLLAMA_CURL=ONcmake --build build --config Release -j$(nproc)

3.进行量化

./build/bin/llama-quantize /home/zxy/code/LLaMA-Factory/output_model/Output_Model-33B-F16.gguf /home/zxy/code/LLaMA-Factory/output_model/Output_Model-33B-q4_k_m.gguf Q4_K_M

这里面的Q4_K_M是指使用"k-quant"量化方法和"Medium"中等混合精度策略,兼顾速度与质量。

其它量化方案还包括:

量化类型位数模型大小(7B)PPL增加适用场景
Q2_K22.67GB+100%极端显存受限
Q3_K_M33.06GB+37.4%低显存设备
Q4_K_S43.56GB+17.6%显存与性能平衡
Q4_K_M44.08GB+8.2%推荐通用场景
Q5_K_M54.78GB+6.36%高精度需求
Q6_K65.53GB+0.1%接近原始精度
Q8_087.16GB几乎无损研究调试

查看量化完的模型体积,会有明显的减小。

模型上传分享

下面介绍如何将模型上传到 modelscope 或 ollama 平台上供他人下载。

modelscope 平台上传模型

首先在 modelscope 平台上注册账号,复制token信息。

运行如下命令,添加刚刚复制的token

modelscope login --token 复制的token

model-q4_k_m.gguf这个模型上传到zstar1003/model_test这个仓库。

 modelscope upload zstar1003/model_test /home/zxy/code/LLaMA-Factory/output_model/Output_Model-33B-q4_k_m.gguf model-q4_k_m.gguf --repo-type model --commit-message "upload model"

上传完之后,就可以在仓库中看到该模型。

ollama 平台上传模型

首先在 ollama 平台上注册账号。

执行以下命令,生成密钥:

ssh-keygen -t ed25519 -f ~/.ollama/id_ed25519 -C "ollama账号的邮箱地址"

不同操作系统的公钥放在不同位置,参考上图找到公钥内容并直接添加。

添加完成后,以上传本地的bge-m3模型为例,执行以下命令。

ollama cp bge-m3:latest zstar/bge-m3ollama push zstar/bge-m3

执行完成后,可在个人仓库中看到上传的模型文件。

往期内容推荐

大模型微调相关:

1.【大模型微调】1.LLaMA-Factory简介和基本使用流程

2.【大模型微调】2.微调方法详解与模型显存占用实测3.【大模型微调】3.通过Easy Dataset构建自己的微调数据集4.【大模型微调】4.模型评估标准及操作流程5.【大模型微调】5.调参经验总结与显存占用因素探究6.【大模型微调】6.模型微调实测与格式转换导出

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

LLaMA-Factory 模型微调 日志监控 模型量化 SwanLab GGUF ModelScope Ollama
相关文章