环境
本文介绍在魔搭社区免费 GPU 环境中部署 LLaMaFactory 进行微调的方法。首先注册魔搭社区并绑定阿里云账号,可获得 36 小时免费 GPU 环境。
环境配置如下:
- CPU:8 核
- 内存:32GB
- 显存:24G
- 操作系统:Ubuntu 22.04
- CUDA:12.8.1
- Python:3.11
- PyTorch:2.9.1
- ModelScope:1.35.0
[图片]
安装 LLaMaFactory
克隆 llama-factory 项目,执行 pip install -e .。若出现依赖冲突提示,建议使用虚拟环境(venv)以避免权限混乱。
创建虚拟环境
python -m venv llmVenv
source llmVenv/bin/activate
退出虚拟环境使用 deactivate。在虚拟环境中升级 pip:
pip install --upgrade pip
随后执行以下命令安装依赖并启动 WebUI:
pip install -e .
pip install -r requirements/metrics.txt
llamafactory-cli webui
启动后访问 http://127.0.0.1:7860 即可在浏览器中操作。
模型选择
模型分类和区别
选择模型时需注意 Base 与 Instruct 的区别:
- Base:基座模型,仅完成预训练,擅长续写文本,不擅长直接理解指令。
- Instruct:指令模型,经过指令微调或强化学习,能正确理解并遵循人类指令。
例如 Qwen3.5-2B-Base 虽带 Base 后缀,但作为后训练模型已具备对话能力。
[图片]
加载模型对话
点击【Chat】加载模型,可配置以下参数:
推理引擎
- Hugging Face:通用原生框架,适合调试、开发。
- vLLM:高性能服务框架,适合高吞吐生产环境。
- SGLang:专注结构化生成和复杂推理任务。
推理数据类型
- auto:自动选择最优精度。
- float32:最精确,显存占用最大。
- float16:显存减半,速度更快。
- bfloat16:动态范围更大,训练推理更稳定。
额外参数
例如 {"vllm_enforce_eager": true} 为 vLLM 专用参数,若当前引擎为 huggingface 则无需保留,否则可能报错。
[图片]
加载模型后控制台会自动下载对应模型文件。也可手动通过 ModelScope 下载:
modelscope download --model Qwen/Qwen3.5-2B
模型加载成功后即可正常对话。
[图片]
数据集
魔搭社区提供大量数据集供下载使用。
获取源数据
以蚂蚁金融语义相似度数据集为例,下载 train.csv 文件。数据格式通常包含 sentence1、sentence2 及 label(0 表示不同,1 表示相同)。
[图片]
编写转换脚本
需将 CSV 转换为 LLaMaFactory 所需的 JSON 格式。可使用脚本处理,示例逻辑如下:
[图片]
生成数据集
执行 Python 脚本生成目标 JSON 文件,将其移动至 LLaMA-Factory 项目的 data 文件夹中,并修改 dataset_info.json 配置文件以注册该数据集。
dataset_info.json 用于管理数据集路径和名称。
[图片]
训练
加载并预览数据集
在界面中选择配置好的数据集,点击【预览数据集】查看示例。
[图片]
执行微调
点击【开始】微调模型。注意 GPU 环境超过 1 小时无操作可能触发自动关闭,需定期保持活动。
[图片]
训练过程中损失值 Loss 随步数 Step 变化,分为原始曲线和 smoothed 平滑曲线,用于监控学习情况。
[图片]
导出微调结果
训练完成后,在检查点路径找到微调后的模型文件。
[图片]
导出后可尝试加载微调后的模型进行对话测试。
[图片]
转换 GGUF
为兼容 ollama 或 llama.cpp,需将 Hugging Face 格式转换为 GGUF。
创建环境
建议创建独立 Python 环境:
python -m venv cppVenv
source cppVenv/bin/activate
克隆 llama.cpp 并安装依赖:
git clone https://github.com/ggerganov/llama.cpp.git
cd llama.cpp
pip install -r requirements.txt
执行转换
python convert_hf_to_gguf.py /mnt/workspace/models/Qwen3.5-2B-output --outfile /mnt/workspace/gguf/Qwen3.5-2B-output.gguf --outtype q8_0
若遇到 Tokenizer 错误,需检查 tokenizer_config.json 中的 tokenizer_class 字段。Qwen3.5-2B 对应 Qwen2Tokenizer,可使用 sed 替换:
sed -i 's/"tokenizer_class": "TokenizersBackend"/"tokenizer_class": "Qwen2Tokenizer"/g' /mnt/workspace/models/Qwen3.5-2B-output/tokenizer_config.json
修复后重新执行转换命令即可得到 GGUF 文件。
[图片]
总结
本文介绍了在不花费成本的前提下,利用云资源完成从环境搭建到模型微调及格式转换的完整流程。


