RTX 5080 环境配置与 LLaMA Factory 微调教程(Windows)
一、背景与硬件信息
- 显卡:NVIDIA GeForce RTX 5080(16GB 显存,计算能力 sm_120)
- 系统:Windows 11
- 模型:Llama-3.1-8B-Instruct
- 微调方法:LoRA
RTX 5080 基于 Blackwell 架构,旧版 PyTorch(如 2.3.0)仅支持到 sm_90,直接训练会报错:
text
UserWarning: NVIDIA GeForce RTX 5080 with CUDA capability sm_120 is not compatible with the current PyTorch installation.
因此必须安装支持 sm_120 的 PyTorch Nightly 版本(CUDA 12.8)。
二、环境准备
2.1 安装 Miniconda(如已安装请跳过)
从 官网 下载并安装 Miniconda(Python 3.11 版本)。
2.2 创建并激活虚拟环境
powershell
conda create -n llamafactory python=3.11 -y
conda activate llamafactory
2.3 安装支持 RTX 5080 的 PyTorch
powershell
pip install --upgrade pip
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/nightly/cu128
验证安装:
python
python -c "import torch; print(torch.__version__); print(torch.cuda.is_available()); print(torch.cuda.get_device_capability())"
预期输出:
text
2.8.0.dev20260320+cu128
True
(12, 0)
2.4 安装 LLaMA Factory
powershell
git clone https://github.com/hiyouga/LLaMA-Factory.git
cd LLaMA-Factory
pip install -e ".[torch,metrics]"
若需量化,可同时安装
bitsandbytes(Windows 下推荐使用bitsandbytes-windows),但本文训练时关闭量化,避免兼容性问题。
三、准备数据集
3.1 数据格式
使用 messages 格式,每行一个 JSON 对象。例如:
json
{"messages": [
{"role": "system", "content": "你是一个专业客服,不能说自己是AI。"},
{"role": "user", "content": "你好"},
{"role": "assistant", "content": "您好,请问有什么可以帮您?"}
]}
3.2 注册数据集
编辑 LLaMA-Factory/data/dataset_info.json,添加自定义数据集:
json
"my_custom": {
"file_name": "my_data.json",
"format": "messages",
"columns": {
"messages": "messages"
},
"tags": {
"role_tag": "role",
"content_tag": "content",
"user_tag": "user",
"assistant_tag": "assistant",
"system_tag": "system"
}
}
四、训练参数设置(关键)
4.1 启动 WebUI
powershell
llamafactory-cli webui
浏览器访问 http://localhost:7860。
4.2 模型加载
- 模型名称/路径:
E:\LLM\LLaMAWork\models\Meta-Llama-3.1-8B-Instruct(本地路径) - 量化等级:
None(关闭量化) - 提示模板:
llama3
4.3 训练参数(避免常见错误)
| 参数 | 推荐值 | 说明 |
|---|---|---|
| 学习率 | 2e-4 |
LoRA 常用值 |
| 训练轮数 | 3 |
根据数据量调整 |
| 最大梯度范数 | 1.0 |
梯度裁剪 |
| 计算类型 | bf16 |
RTX 5080 支持 |
| 截断长度 | 1024 |
客服对话足够,避免过大 |
| 批处理大小 | 1 |
8B 模型+16GB 显存 |
| 梯度累积 | 4 |
有效 batch size = 4 |
| 验证集比例 | 0 |
数据少时暂不划分 |
| 学习率调节器 | cosine |
稳定收敛 |
LoRA 参数:
- LoRA 秩:
16 - LoRA 缩放系数:
32 - LoRA 随机丢弃:
0.0 - LoRA 作用模块:留空
4.4 开始训练
点击 开始 按钮。训练过程中可观察终端输出的 loss 值。
常见错误:梯度累积设为 1024 会导致训练极慢(1000 条数据需 10+ 小时)。正确值为 4。
五、导出合并模型
训练完成后,需要将 LoRA 适配器与基础模型合并,得到完整的 Hugging Face 格式模型。
5.1 使用命令行导出(推荐)
powershell
llamafactory-cli export `
--model_name_or_path "E:\LLM\LLaMAWork\models\Meta-Llama-3.1-8B-Instruct" `
--adapter_name_or_path "E:\LLM\LLaMA-Factory\saves\Llama-3.1-8B-Instruct\lora\train_1" `
--export_dir "E:\LLM\llamaModels\exported_hf_model" `
--export_device auto
--export_device auto优先使用 GPU,若显存不足可改为cpu。- 确保导出目录为空且磁盘剩余空间 ≥20 GB。
5.2 验证导出
导出成功后,目录下应包含 config.json、model.safetensors、tokenizer.json 等文件。
六、转换为 GGUF 格式(用于 llama.cpp)
6.1 准备 llama.cpp 工具
下载支持 CUDA 的预编译版本(文件名含 cu12),例如:
llama-b4232-bin-win-cu12.4-x64.zip
解压到 E:\LLM\llama.cpp,确保目录下有 llama-server.exe、quantize.exe、ggml-cuda.dll 等文件。
6.2 转换 Hugging Face 模型为 GGUF(FP16)
powershell
cd E:\LLM\llama.cpp-src # 源码目录,包含 convert_hf_to_gguf.py
python convert_hf_to_gguf.py "E:\LLM\llamaModels\exported_hf_model" --outfile "E:\LLM\llamaModels\new\llama-3.1-8b-custom.gguf" --outtype f16
如果
llama.cpp-src中没有该脚本,可从 GitHub 下载源码。
6.3 量化为 q4_k_m
powershell
cd E:\LLM\llama.cpp
.\quantize.exe "E:\LLM\llamaModels\new\llama-3.1-8b-custom.gguf" "E:\LLM\llamaModels\new\llama-3.1-8b-custom_Q4_K_M.gguf" q4_k_m
量化后文件约 5-6 GB,适合本地推理。
6.4 验证模型
powershell
.\main.exe -m "E:\LLM\llamaModels\new\llama-3.1-8b-custom_Q4_K_M.gguf" -p "你好" -n 32
七、在 llama.cpp 中运行模型(API 服务器)
7.1 启动服务器(支持局域网访问)
使用以下 PowerShell 脚本启动服务器,并允许局域网访问:
powershell
# 固定端口
$port = 8000
# llama-server.exe 路径
$serverExe = "E:\LLM\llama.cpp\llama-server.exe"
# 打开文件选择对话框
Add-Type -AssemblyName System.Windows.Forms
$openFileDialog = New-Object System.Windows.Forms.OpenFileDialog
$openFileDialog.InitialDirectory = "E:\LLM\llamaModels"
$openFileDialog.Filter = "GGUF 模型 (*.gguf)|*.gguf|所有文件 (*.*)|*.*"
$openFileDialog.Title = "请选择要运行的 GGUF 模型文件"
if ($openFileDialog.ShowDialog() -eq 'OK') {
$modelPath = $openFileDialog.FileName
Write-Host "选择的模型: $modelPath"
Write-Host "正在启动服务器,端口 $port ..."
& $serverExe -m "$modelPath" --port $port --host 0.0.0.0 -ngl 99
} else {
Write-Host "未选择模型,退出。"
pause
}
关键参数:
--host 0.0.0.0:允许通过局域网 IP 访问。-ngl 99:将 99 层加载到 GPU(根据显存调整)。
7.2 访问服务器
- 本机:
http://localhost:8000 - 局域网其他设备:
http://<本机IP>:8000(如192.168.66.110:8000)
7.3 防火墙设置
如果无法从局域网访问,添加防火墙规则:
powershell
New-NetFirewallRule -DisplayName "LLaMA Server" -Direction Inbound -LocalPort 8000 -Protocol TCP -Action Allow
八、基础模型直接转换 GGUF(不微调)
如果你想直接使用原始 Llama-3.1-8B-Instruct,无需合并 LoRA,可以按以下步骤转换:
8.1 转换为 FP16 GGUF
powershell
cd E:\LLM\llama.cpp-src
python convert_hf_to_gguf.py "E:\LLM\LLaMAWork\models\Meta-Llama-3.1-8B-Instruct" `
--outfile "E:\LLM\llamaModels\base\llama-3.1-8b-instruct-f16.gguf" `
--outtype f16
8.2 量化为 q4_k_m
powershell
cd E:\LLM\llama.cpp
.\quantize.exe "E:\LLM\llamaModels\base\llama-3.1-8b-instruct-f16.gguf" `
"E:\LLM\llamaModels\base\llama-3.1-8b-instruct-Q4_K_M.gguf" q4_k_m
为什么不能一步到位?
convert_hf_to_gguf.py只支持输出 FP16、FP32 或q8_0等基础类型,更高级的量化(如q4_k_m)需通过quantize工具单独完成。
九、常见问题与解决方案
| 问题 | 原因 | 解决方案 |
|---|---|---|
段错误 3221225477 |
PyTorch 不支持 RTX 5080 | 安装 Nightly 版本(CUDA 12.8) |
bitsandbytes 缺失 |
量化选项未关闭 | 训练时关闭量化(量化等级=None) |
| 训练集为空 | 验证集比例过大且数据少 | 将验证集比例设为 0 |
| 训练极慢(10+ 小时) | 梯度累积设置过大(如 1024) | 改为 4 |
| 导出时连接断开 | 内存不足 | 改用 --export_device cpu |
convert_hf_to_gguf.py 找不到 |
未在正确目录或未下载 | 从 GitHub 下载脚本 |
| GPU 未启用(llama.cpp) | 使用了 CPU 版本或缺少 CUDA 依赖 | 下载含 cu12 的预编译包,或自行编译指定 -DCMAKE_CUDA_ARCHITECTURES=120 |
| 无法通过局域网 IP 访问 | 服务器未绑定 0.0.0.0 |
添加 --host 0.0.0.0 参数 |
| 防火墙阻止端口 | Windows 防火墙规则未放行 | 添加入站规则(见 7.3) |
十、一键脚本(导出并转换)
将以下内容保存为 export_and_convert.ps1,右键“使用 PowerShell 运行”:
powershell
# 1. 导出合并模型
llamafactory-cli export `
--model_name_or_path "E:\LLM\LLaMAWork\models\Meta-Llama-3.1-8B-Instruct" `
--adapter_name_or_path "E:\LLM\LLaMA-Factory\saves\Llama-3.1-8B-Instruct\lora\train_1" `
--export_dir "E:\LLM\llamaModels\exported_hf_model" `
--export_device auto
# 2. 转换为 GGUF (FP16)
cd E:\LLM\llama.cpp-src
python convert_hf_to_gguf.py "E:\LLM\llamaModels\exported_hf_model" --outfile "E:\LLM\llamaModels\new\llama-3.1-8b-custom.gguf" --outtype f16
# 3. 量化为 q4_k_m
cd E:\LLM\llama.cpp
.\quantize.exe "E:\LLM\llamaModels\new\llama-3.1-8b-custom.gguf" "E:\LLM\llamaModels\new\llama-3.1-8b-custom_Q4_K_M.gguf" q4_k_m
Write-Host "完成!模型路径: E:\LLM\llamaModels\new\llama-3.1-8b-custom_Q4_K_M.gguf"
十一、总结
本文详细介绍了在 RTX 5080 显卡上从零开始微调 Llama-3.1-8B 模型,并导出为 GGUF 格式在 llama.cpp 中运行的全过程。通过合理设置训练参数(避免梯度累积过大等陷阱),你可以在 1 小时内完成 1000 条数据的 LoRA 微调。最终得到的量化模型可在本地高效推理,支持局域网访问。
希望这篇教程能帮助你顺利部署自己的大模型应用。如有疑问,欢迎在评论区交流。
最后更新:2026-03-23
适用版本:LLaMA Factory 0.9.5+,PyTorch 2.8.0+cu128,llama.cpp b4232+(CUDA 12.4)
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)