跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
PythonAI算法

使用 LlamaFactory 和 LoRA 微调大模型打造个性化聊天机器人

利用 LlamaFactory 配合 LoRA 技术实现大语言模型的低成本微调。流程涵盖环境搭建、数据集准备、WebUI 微调配置、模型导出量化及 Ollama 本地部署,最终接入 QQ 机器人实现交互。重点在于利用低秩适应降低资源消耗,同时保持基座模型能力,适合垂直领域知识库构建。

日志猎手发布于 2026/3/22更新于 2026/6/1220 浏览
使用 LlamaFactory 和 LoRA 微调大模型打造个性化聊天机器人

一、项目背景

随着大语言模型的快速发展,如何让通用模型具备垂直领域的深度知识与特定的角色人格,已成为参数高效微调(PEFT)技术的重要应用方向。传统的提示词难以让模型长期、稳定地维持复杂的角色设定和世界观知识,而全参数微调成本高昂。

本项目旨在利用 LlamaFactory 这一大模型微调框架,结合 LoRA(低秩适应)技术,在保留基础模型通用能力的前提下,低成本地注入特定游戏内的专属知识。目标是打造一个不仅能流畅对话,更能深度理解游戏内世界观设定、模拟特定人格说话方式的智能聊天机器人。

二、核心概念简介

2.1 LlamaFactory

LlamaFactory 是一个专注于高效微调大型语言模型的开源工具库。它简化了模型微调流程,支持多种主流开源模型,并提供丰富的训练策略和优化技术。其支持多种微调方法,包括全参数微调、轻量级微调(如 LoRA、QLoRA)、适配器微调等,且兼容 Hugging Face 生态系统,可直接加载预训练模型。

2.2 LoRA

构建大语言模型需要耗费大量时间和资源。这些模型可能包含数万亿个参数,要使模型在特定环境下运行,传统方式意味着所有参数都会改变,既耗时又费力。LoRA(Low-Rank Adaptation)提供了一种无需重新训练即可快速调整模型的方法。其通过引入低秩矩阵来调整模型的权重,从而显著减少需要训练的参数数量。这种方法在保持模型性能的同时,降低了计算成本和内存占用。

三、环境搭建与数据准备

3.1 搭建环境

首先克隆仓库并安装依赖:

# 克隆仓库
git clone --depth 1 https://github.com/hiyouga/LlamaFactory.git
cd LlamaFactory

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

安装完成后,执行以下命令进入 WebUI:

llamafactory-cli webui

3.2 下载基座模型

在开始微调之前,将基座模型下载到本地是非常重要的一步。相比于每次训练从 HuggingFace 下载,本地文件更加稳定且安全。用户可以选择通过 Modelscope 或 HuggingFace 拉取模型。

这里以从 Modelscope 下载 Qwen2.5-7B-Instruct 为例:

# 安装 Modelscope
pip install modelscope

# 下载完整模型库
modelscope download --model Qwen/Qwen2.5-7B-Instruct

也可以使用 Git 下载(需确保 lfs 已正确安装):

git lfs install
git clone https://www.modelscope.cn/Qwen/Qwen2.5-7B-Instruct.git

3.3 准备数据集

这是微调前最关键的一步,直接影响最终效果。LlamaFactory 主要支持以下三种数据集格式:

Alpaca 格式

[
  {
    "instruction": "user instruction (required)",
    "input": "user input (optional)"
     
     
     
       
    
  

,
"output"
:
"model response (required)"
,
"system"
:
"system prompt (optional)"
,
"history"
:
[
[
"user instruction in the first round"
,
"model response in the first round"
]
]
}
]

ShareGpt 格式

[
  {
    "conversations": [
      {"from": "human", "value": "user instruction"},
      {"from": "gpt", "value": "model response"}
    ],
    "system": "system prompt (optional)"
  }
]

OpenAI 格式

[
  {
    "messages": [
      {"role": "system", "content": "system prompt"},
      {"role": "user", "content": "user instruction"},
      {"role": "assistant", "content": "model response"}
    ]
  }
]

由于训练集的质量对结果的影响远大于数量,建议不要过于依赖 AI 生成的对话。低质量的 AI 生成数据不仅无益,反而可能引入噪音。实际操作中,建议先人工撰写一部分高质量对话,再结合游戏文本及背景世界观,引导 AI 在此基础上进行分层扩写。对 AI 生成的对话需进行检查,删除或修改明显不符合世界观或人物性格的内容。

下面是一个从 Wiki 源代码提取特定人物文本的脚本示例:

import re

# 复制文本
text = '''...'''

# 使用正则表达式匹配特定格式的对话行
matches = re.findall(r'\[name="普瑞赛斯"\](.*?)\n', text)

# 输出
for i, line in enumerate(matches, 1):
    print(f"{i}. {line}")

数据集准备就绪后,需将其以 JSON 格式存放于 LlamaFactory/data/ 目录下,并在 dataset_info.json 配置文件中完成注册:

"your data": {
  "file_name": "preseries_dataset.json",
  "format": "alpaca",
  "columns": {
    "instruction": "instruction",
    "output": "output"
  }
}

至此,训练前的准备工作已全部完成,可以在 LlamaFactory WebUI 中进行微调了。

文章配图

四、WebUI 微调配置

4.1 选择微调方法

LlamaFactory 提供了以下几种微调方式:

  1. 全参数微调(Full Parameter Fine-Tuning):更新所有参数,资源消耗大,适用于数据充足且任务差异大的场景。
  2. LoRA(Low-Rank Adaptation):仅训练新增的低秩矩阵参数,冻结原始模型参数。显著减少开销,适合资源受限场景。
  3. Freeze(参数冻结):冻结大部分参数,仅微调部分层,成本低。
  4. OFT(正交微调):通过正交变换约束微调过程,避免灾难性遗忘。

对于聊天机器人的训练,LoRA 是最为推荐的微调方法。原因有三:首先,对话数据具有多轮性特点,LoRA 能有效捕捉对话模式同时保持基座模型通用能力;其次,开发是迭代过程,LoRA 训练速度快便于验证;第三,LoRA 对硬件要求友好,消费级显卡即可运行。

4.2 关键参数设置

  • 模型路径:指向之前下载到本地的基座模型路径。
  • 对话模板:根据基座模型类型选择相应的模板。
  • 学习率:一般可采用默认值 5e-5。
  • 训练轮数:数据量小时可适当增加以防止欠拟合。
  • 计算类型:推荐使用 bf16,具有较大数值范围,能防止梯度溢出,保证训练稳定性。

其余参数可根据具体需求调整。

4.3 开始微调

启动微调后,网页右下角会显示损失函数曲线。通常损失值越低,效果越好。该过程持续时间取决于硬件性能,若设备性能较差可考虑租用云算力平台。

文章配图

文章配图

文章配图

4.4 模型导出

微调完成后,可在 WebUI 中点击 Chat 加载检查点预览效果。若满意,点击 Export 导出。输入导出路径,基座模型将与 LoRA 权重合并并保存至该路径。

五、格式转换与量化

5.1 转换为 GGUF

导出后的模型通常是 safetensors 格式。若要在 Ollama 本地部署,需先转换为 GGUF 格式。这里使用 llama.cpp 的转换脚本:

# 安装 llama.cpp (Windows)
winget install llama.cpp

# 转换成 gguf 格式
python convert_hf_to_gguf.py models/7B/qwen1_5-7b-chat --outtype f16 --output ./qwen_gguf.gguf

注意:部分旧教程中使用的是 convert-hf-to-gguf.py,目前脚本名已改为下划线连接,具体请以 llama.cpp 目录为准。

文章配图

5.2 量化处理

得到 fp16 精度的 gguf 文件后,还需进行量化。量化通过降低精度大幅减少显存占用和计算量,同时保持相近效果。

# 将 fp16 精度量化到 q8
./quantize models/7B/qwen1_5-7b-chat-fp16.gguf models/7B/qwen1_5-7b-chat-q8_0.gguf q8_0

至此,我们得到了一个量化后的大模型文件,可以进行本地部署了。

六、Ollama 本地部署

6.1 安装 Ollama

Ollama 是一个开源的大型语言模型交互工具,支持在本地运行多种主流模型。

# Windows 用户直接下载客户端
# Linux 或云平台用户
curl -fsSL https://ollama.com/install.sh | sh

6.2 编写 Modelfile

导入 Ollama 需要准备 gguf 文件和 Modelfile。Modelfile 采用声明式语法描述模型参数及生成规则。

FROM ./ollama-model.gguf
PARAMETER <parameter> <parametervalue>
TEMPLATE """{{ if .System }}<|im_start|>system {{ .System }}<|im_end|> {{ end }}{{ if .Prompt }}<|im_start|>user {{ .Prompt }}<|im_end|> {{ end }}<|im_start|>assistant """
SYSTEM """<system message>"""

文章配图

6.3 导入与运行

准备好文件后即可导入测试:

# 创建模型,名字自定义
ollama create Priestess_q8 -f ./Modelfile

# 查看模型列表
ollama list

# 运行模型
ollama run Priestess_q8

如果一切正常,即完成了本地部署。

文章配图

七、接入 QQ 机器人

最后,可以使用 Napcat 和 Astrbot 框架接入 QQ。

# 通过 Docker Compose 部署
mkdir astrbot
cd astrbot
wget https://raw.githubusercontent.com/NapNeko/NapCat-Docker/main/compose/astrbot.yml
sudo docker compose -f astrbot.yml up -d

具体详细步骤可参考相关接入文档,最终效果如下:

文章配图

文章配图

目录

  1. 一、项目背景
  2. 二、核心概念简介
  3. 2.1 LlamaFactory
  4. 2.2 LoRA
  5. 三、环境搭建与数据准备
  6. 3.1 搭建环境
  7. 克隆仓库
  8. 安装依赖
  9. 3.2 下载基座模型
  10. 安装 Modelscope
  11. 下载完整模型库
  12. 3.3 准备数据集
  13. 复制文本
  14. 使用正则表达式匹配特定格式的对话行
  15. 输出
  16. 四、WebUI 微调配置
  17. 4.1 选择微调方法
  18. 4.2 关键参数设置
  19. 4.3 开始微调
  20. 4.4 模型导出
  21. 五、格式转换与量化
  22. 5.1 转换为 GGUF
  23. 安装 llama.cpp (Windows)
  24. 转换成 gguf 格式
  25. 5.2 量化处理
  26. 将 fp16 精度量化到 q8
  27. 六、Ollama 本地部署
  28. 6.1 安装 Ollama
  29. Windows 用户直接下载客户端
  30. Linux 或云平台用户
  31. 6.2 编写 Modelfile
  32. 6.3 导入与运行
  33. 创建模型,名字自定义
  34. 查看模型列表
  35. 运行模型
  36. 七、接入 QQ 机器人
  37. 通过 Docker Compose 部署
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

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

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

更多推荐文章

查看全部
  • RTX 4090 加速国产 AIGC 视频生成:腾讯混元与阿里通义万相
  • SSRFmap Docker 部署指南:容器化渗透测试环境搭建
  • 2026 前端跨端框架选型指南
  • Qwen3.5-35B-AWQ-4bit 多模态应用:AR 维修图解与铭牌录入
  • Git 与 TortoiseGit 小乌龟安装配置指南
  • AI 时代细胞生物学最新进展:从图像分析到虚拟细胞
  • 基于 Java 的百度地图路线规划服务开发
  • $19.99 订阅值不值?Google AI Pro 全面评测以及订阅会员权益功能解析详情
  • OpenClaw 对接飞书机器人高频踩坑与解决方案
  • 自然语言处理在医疗健康领域的应用与实战
  • iOS 26 Liquid Glass TabBar 设计与实现
  • FPGA 与 IC 职业前景对比及选择指南
  • 从 0 到 1 打造 RISC-V 智能家居中控:硬件 + 固件 + 通信全链路实战
  • 力扣 Hot100 普通数组题目 Python 实现
  • 大模型 Token 与上下文窗口详解
  • 顶级大模型普遍经过知识蒸馏:研究揭示量化方法与影响
  • 无人机 5.8G 模拟图传电路设计与性能分析
  • 无人机 5.8G 模拟图传电路设计与性能分析
  • Git 分布式版本控制工具安装与使用
  • Stack-Chan 机器人开发指南:基于 M5Stack 与 JavaScript

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如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