跳到主要内容
极客日志极客日志
首页博客AI提示词GitHub精选代理工具
搜索
|注册
博客列表
PythonAI算法

Llama3 中文模型微调与部署实战指南

综述由AI生成基于 Llama3-8B 中文模型进行微调与部署的完整流程。内容涵盖环境搭建、LLaMA-Factory 工具安装、自定义数据集准备、LoRA 微调参数配置、模型权重合并、转换为 GGUF 格式以及利用 Ollama 和 Phidata 构建本地 RAG 应用。教程针对 4090Ti 硬件环境进行了参数优化,解决了显存占用与推理效率问题,并提供常见问题排查指南,适合希望落地大模型技术的开发者参考。

岁月神偷发布于 2025/2/6更新于 2026/4/276 浏览
Llama3 中文模型微调与部署实战指南

Llama3 中文模型微调与部署实战指南

本教程基于 RockyLinux 8 版本环境,适用于单机 4090Ti 24G 显存场景。训练过程中 GPU 显存占用约为 23G。通过本文档,您可以完整掌握从模型下载、数据准备、LoRA 微调、模型合并到本地化部署的全流程。

1. 环境准备与模型下载

1.1 硬件与软件要求

  • 操作系统: RockyLinux 8 / CentOS 7+
  • GPU: NVIDIA RTX 4090 (24GB VRAM) 或同等性能显卡
  • Python: 建议 Python 3.10 及以上
  • CUDA: 确保驱动支持 CUDA 11.8 或更高版本

1.2 下载中文模型

下载训练好的 Llama3-8B 版本中文模型。推荐使用 HuggingFace 上的开源中文适配版本。

存放路径: /data/dataset/model/llama3/8b-chinese-chat

注意:请确保模型文件完整性,建议校验 SHA256 值。

2. 使用 LLaMA-Factory 进行微调和部署

LLaMA-Factory 是一个高效的大模型微调工具,支持多种训练策略(如 LoRA, QLoRA)。

2.1 安装 LLaMA-Factory

# 建立存放目录
mkdir -p /data/dataset/project
cd /data/dataset/project

# 克隆仓库,注意版本 v0.6.1 稳定性较好
git clone https://github.com/hiyouga/LLaMA-Factory.git
cd LLaMA-Factory-0.6.1

# 安装依赖
pip install -r requirements.txt

2.2 准备训练数据

进入数据目录并添加自定义指令数据。

cd /data/dataset/project/LLaMA-Factory-0.6.1/data

创建 stock.json 文件,格式需符合 JSON Lines 或标准 JSON 列表结构。示例如下:

[
  {
    "instruction": "请给出以下区域板块包含的个股名称和代码,使用;隔开",
    "input": "贵州",
    "output": "贵州茅台 600519;"
  }
  
     
     
     
  

,
{
"instruction"
:
"请给出以下区域板块包含的个股名称和代码,使用;隔开"
,
"input"
:
"北京"
,
"output"
:
"京东方 A000725;"
}
]

计算文件的 SHA1 值用于配置校验:

sha1sum stock.json
# 输出示例:073db05fbf903c494e0826615194fef77c24fa1f

修改数据集配置文件 dataset_info.json,添加新数据集定义:

"stock_zh": {
  "file_name": "stock.json",
  "file_sha1": "073db05fbf903c494e0826615194fef77c24fa1f"
}

2.3 配置 Llama3 模板

由于 Llama3 使用了特殊的 Tokenizer 格式,需要手动注册模板以确保对话格式正确。

编辑文件 src/llmtuner/data/template.py,添加以下注册代码:

_register_template(
    name="llama3",
    format_user=StringFormatter(
        slots=[
            (
                "<|start_header_id|>user<|end_header_id|>\n\n{{content}}<|eot_id|>"
                "<|start_header_id|>assistant<|end_header_id|>\n\n"
            )
        ]
    ),
    format_system=StringFormatter(
        slots=[{"bos_token"}, "<|start_header_id|>system<|end_header_id|>\n\n{{content}}<|eot_id|>"]
    ),
    format_observation=StringFormatter(
        slots=[
            (
                "<|start_header_id|>tool<|end_header_id|>\n\n{{content}}<|eot_id|>"
                "<|start_header_id|>assistant<|end_header_id|>\n\n"
            )
        ]
    ),
    default_system="You are a helpful assistant.",
    stop_words=["<|eot_id|>"],
    replace_eos=True,
)

2.4 编写训练脚本

创建运行脚本 single_lora_llama3.sh,配置关键超参数。

#!/bin/bash
export CUDA_DEVICE_MAX_CONNECTIONS=1
export NCCL_P2P_DISABLE="1"
export NCCL_IB_DISABLE="1"

CUDA_VISIBLE_DEVICES=0 python src/train_bash.py \
  --stage sft \
  --do_train True \
  --model_name_or_path /data/dataset/model/llama3/8b-chinese-chat \
  --dataset stock_zh \
  --template llama3 \
  --lora_target q_proj,v_proj \
  --output_dir output1 \
  --overwrite_cache \
  --per_device_train_batch_size 2 \
  --gradient_accumulation_steps 64 \
  --lr_scheduler_type cosine \
  --logging_steps 5 \
  --save_steps 100 \
  --learning_rate 2e-4 \
  --num_train_epochs 1.0 \
  --finetuning_type lora \
  --fp16 \
  --lora_rank 128

参数说明:

  • --model_name_or_path: 基础模型路径。
  • --dataset: 对应 dataset_info.json 中的数据集名称。
  • --template: 使用的对话模板名称。
  • --lora_target: 微调的目标层,通常包括 q_proj, v_proj 等注意力层。
  • --lora_rank: LoRA 秩,128 是平衡效果与显存的常用值。
  • --per_device_train_batch_size: 单卡批次大小,受显存限制调整。
  • --gradient_accumulation_steps: 梯度累积步数,用于模拟大 Batch Size。

执行训练:

chmod +x single_lora_llama3.sh
./single_lora_llama3.sh

训练完成后,在 output1 目录下会生成 LoRA 适配器权重文件。

2.5 合并模型权重

为了便于部署,需要将 LoRA 权重合并回基础模型。

编辑 export.sh 脚本:

#!/bin/bash
python src/export_model.py \
  --model_name_or_path /data/dataset/model/llama3/8b-chinese-chat \
  --adapter_name_or_path /data/dataset/project/LLaMA-Factory-0.6.1/output1 \
  --template llama3 \
  --finetuning_type lora \
  --export_dir /data/dataset/model/llama3/8b-chinese-chat/output_lora1 \
  --export_size 2 \
  --export_legacy_format false

执行合并命令:

chmod +x export.sh
bash export.sh

合并后的模型位于 output_lora1 目录,可直接用于推理。

3. 模型打包为 GGUF 格式

为了在本地 CPU/GPU 混合环境下高效运行,建议使用 llama.cpp 将模型转换为 GGUF 格式。

3.1 编译 llama.cpp

前往官网获取源码并编译,安装后目录结构如下(假设路径为 /data/dataset/project/llama.cpp)。

3.2 转换模型

使用 Python 脚本进行格式转换:

mkdir -p /data/dataset/model/llama3/custom
cd /data/dataset/project/llama.cpp

python ./convert.py /data/dataset/model/llama3/8b-chinese-chat/output_lora1 \
  --outtype f16 \
  --outfile /data/dataset/model/llama3/custom/8b.bin \
  --vocab-type bpe

转换完成后,将生成一个约 15GB 的二进制文件,适合本地加载。

4. 使用 Ollama 与 Phidata 启动 RAG

4.1 安装与配置 Ollama

Ollama 提供了便捷的本地模型服务接口。

curl -fsSL https://ollama.com/install.sh | sh

创建 Modelfile 以指定模型路径和系统提示词:

FROM /data/dataset/model/llama3/custom/8b.bin
TEMPLATE """{{ if .System }}<|start_header_id|>system<|end_header_id|>

{{ .System }}<|eot_id|>{{ end }}{{ if .Prompt }}<|start_header_id|>user<|end_header_id|>

{{ .Prompt }}<|eot_id|>{{ end }}<|start_header_id|>assistant<|end_header_id|>

{{ .Response }}<|eot_id|>"""
SYSTEM """You are a helpful assistant. 你是一个乐于助人的助手。"""
PARAMETER temperature 0.2
PARAMETER num_keep 24
PARAMETER stop <|start_header_id|
PARAMETER stop <|end_header_id|
PARAMETER stop <|eot_id|

构建镜像并运行:

ollama create llama3 -f ./Modelfile
ollama list

同时安装向量嵌入模型:

ollama run nomic-embed-text

4.2 集成 Phidata 框架

Phidata 是一个用于构建 AI 应用的 Python 库,支持 RAG(检索增强生成)。

cd /data/dataset/project
git clone https://github.com/phidatahq/phidata.git
cd phidata
pip install -r cookbook/llms/groq/rag/requirements.txt

启动 PostgreSQL 向量数据库容器:

docker run -d \
  -e POSTGRES_DB=ai \
  -e POSTGRES_USER=ai \
  -e POSTGRES_PASSWORD=ai \
  -e PGDATA=/data/dataset/pgdata/data \
  -v pgvolume:/data/dataset/pgdata \
  -p 5532:5432 \
  --name pgvector \
  phidata/pgvector:16

运行 Streamlit 应用界面:

streamlit run cookbook/llms/ollama/rag/app.py

访问浏览器显示的地址即可上传文档并进行问答测试。

5. 常见问题与优化建议

  1. 显存不足: 如果训练时 OOM,可尝试减小 per_device_train_batch_size 或开启 --bf16 支持(需显卡支持)。
  2. 训练不收敛: 检查学习率是否过大,建议尝试 1e-4 或 5e-5。
  3. 推理速度慢: 使用 GGUF 量化版本(如 Q4_K_M)可显著降低显存占用并提升速度。
  4. RAG 检索不准: 调整切片大小(Chunk Size)和重叠部分(Overlap),优化向量索引策略。

通过以上步骤,您已成功完成 Llama3 模型的定制化微调及本地化 RAG 应用部署。该方案适用于垂直领域知识库构建、智能客服及数据分析辅助等场景。

目录

  1. Llama3 中文模型微调与部署实战指南
  2. 1. 环境准备与模型下载
  3. 1.1 硬件与软件要求
  4. 1.2 下载中文模型
  5. 2. 使用 LLaMA-Factory 进行微调和部署
  6. 2.1 安装 LLaMA-Factory
  7. 建立存放目录
  8. 克隆仓库,注意版本 v0.6.1 稳定性较好
  9. 安装依赖
  10. 2.2 准备训练数据
  11. 输出示例:073db05fbf903c494e0826615194fef77c24fa1f
  12. 2.3 配置 Llama3 模板
  13. 2.4 编写训练脚本
  14. 2.5 合并模型权重
  15. 3. 模型打包为 GGUF 格式
  16. 3.1 编译 llama.cpp
  17. 3.2 转换模型
  18. 4. 使用 Ollama 与 Phidata 启动 RAG
  19. 4.1 安装与配置 Ollama
  20. 4.2 集成 Phidata 框架
  21. 5. 常见问题与优化建议
  • 💰 8折买阿里云服务器限时8折了解详情
  • 💰 8折买阿里云服务器限时8折购买
  • 🦞 5分钟部署阿里云小龙虾了解详情
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • Agent 框架调研:19 类主流方案对比与选型指南
  • Go 语言实现复杂密码生成器算法(附源码)
  • Pico 4XVR 1.10.13 安装与使用指南
  • Ubuntu 22.04 桌面版系统安装教程
  • LeRobot 框架架构、策略、仿真平台与数据采集详解
  • 基于 LLaMA 大模型微调的实践与方案
  • C++ 中未初始化 COM 却调用 CoUninitialize 的后果分析
  • 计算机二级 Office 考试备考指南与重难点汇总
  • 开源 AI 联网搜索工具 OpenWebSearch MCP 升级,支持多引擎与流式响应
  • Git 提交信息规范
  • C++ 基于哈希表封装 unordered_map 和 unordered_set
  • Python 安装与语法基础入门教程
  • 大模型微调技术详解:从理论原理到实操指南
  • 6 个适合初学者的道德黑客技术学习网站推荐
  • Figma + Claude + Weavy AI:构建高效设计工作流
  • 7 种大模型微调方法详解:LoRA、QLoRA 及适配器技术
  • Testsigma 开源自动化测试平台新手入门指南
  • LLaMA-Factory 微调多模态大模型 Qwen3-VL
  • 从零构建高可用系统:端到端架构实战解析与避坑指南
  • 高校毕业论文知网 AIGC 检测标准及降低 AI 率方法

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • 随机西班牙地址生成器

    随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online