小模型微调过程记录

小模型微调过程记录

背景

在智能客服在做知识问答和增值服务时,需要根据用户语义判断用户意图,根据用户意图对走不同的分支。传统做法是Prompt+LLM,写提示词就可以完成意图的识别。也可以对模型进行微调,输入一批数据集,对小模型进行训练。现在模型更新迭代越来越快,能力越来越强。模型微调的成本比较高,效果不一定到位(对于没有微调经验的我来讲)

工具

ModelScope

https://modelscope.cn/

国内模型和数据集开源平台,也提供了免费的云环境实例

LLaMA-Factory

LLaMA-Factory 是一个开源的大语言模型训练框架,专门用于简化和优化大语言模型的微调过程。

https://github.com/hiyouga/LLaMA-Factory

https://blog.llamafactory.net/posts/mca-quickstart/

Jan

https://jan.ai/

Jan应用程序可以直接运行Llama.app的模型,在本机运行模型

制作数据集

数据集的格式和要求参考官方文档:https://github.com/hiyouga/LLaMA-Factory/blob/main/data/README_zh.md

本次调试的数据集是Alpaca 格式的指令监督微调数据集,主要有两个数据集文件,一个是身份的改变,另一个是意图识别的意图集。格式及本分样例如下:

json 复制代码
[
  {
    "instruction": "请告诉我你的名字",
    "input": "",
    "output": "我的名字是 xxx-小助手,我的使命是为尽可能多的人提供知识与帮助,让更多人受益于人工智能技术。"
  },
  {
    "instruction": "你好,你可以做什么",
    "input": "",
    "output": "我是 xxx-小助手,一个由 xxx开发团队 制作的 AI 助手,可以帮您回答问题、提供建议、进行聊天、翻译文字等等。"
  }
  ...
]
json 复制代码
[
  {
    "instruction": "导出本月的数据",
    "input": "",
    "output": "下载场景"
  },
  {
    "instruction": "会员消费情况",
    "input": "",
    "output": "用户会员相关分析"
  }
  ...
]

实践过程

下载训练框架

打开魔塔免费的GPU实例,打开终端

bash 复制代码
# 源码安装
git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git
# 下载依赖
cd LLaMA-Factory
pip install -e ".[torch,metrics]" --no-build-isolation
下载模型

可以在魔塔中找到适合自己的模型,我这里使用的是Qwen3-4B的小模型

bash 复制代码
# 回到项目目录
cd /mnt/workspace/
git lfs install
git clone https://www.modelscope.cn/Qwen/Qwen3-4B.git
配置模型训练文件
bash 复制代码
# LLaMA-Factory 目录下
cd examples/train_qlora/
cp llama3_lora_sft_awq.yaml qwen3_lora_sft.yaml

编辑配置文件

yaml 复制代码
### model
### 模型目录
model_name_or_path: /mnt/workspace/model/Qwen3-4B

### method
### 监督微调阶段
stage: sft
### 启用训练模型
do_train: true
### 使用LoRA(Low-Rank Adaptation)进行参数高效微调
finetuning_type: lora
lora_target: all

### dataset 数据集配置下章节说明
dataset: identity,intent
template: qwen
cutoff_len: 1024
max_samples: 1000
overwrite_cache: true
preprocessing_num_workers: 16

### output
### 训练模型输出
output_dir: saves/qwen3-4b/lora/sft
logging_steps: 10
save_steps: 500
plot_loss: true
overwrite_output_dir: true

### train
per_device_train_batch_size: 1
gradient_accumulation_steps: 8
learning_rate: 1.0e-4
num_train_epochs: 2.0
lr_scheduler_type: cosine
warmup_ratio: 0.1
bf16: true
# ddp_timeout: 180000000

### eval
val_size: 0.1
per_device_eval_batch_size: 1
eval_strategy: steps
eval_steps: 500
配置数据集文件
bash 复制代码
# LLaMA-Factory 目录下
cd data
# 备份
cp dataset.json dataset_backup.josn

将制作数据章节的数据放在data目录下,dataset.json是数据集配置文件,

bash 复制代码
{
  "identity": {
    "file_name": "identity.json"
  },
  "intent": {
    "file_name": "intent.json"
  }
}
模型训练
bash 复制代码
llamafactory-cli train examples/train_qlora/qwen3_lora_sft.yaml

漫长的等待,中间如果执行有错误,可以移步到chatgpt和claude...

测试推理
bash 复制代码
llamafactory-cli chat \
  --model_name_or_path /mnt/workspace/model/Qwen3-4B \
  --adapter_name_or_path saves/qwen3-4b/lora/sft \
  --template qwen3

然后可以开始和训练后的模型进行对话测试

效果感觉呆呆的,一定一定是我没有用好...

LoRA模型合并导出

把训练的LoRA和原始的大模型进行融合,输出一个完整的模型文件。合并后的模型可以自由地像使用原始的模型一样应用到其他下游环节,当然也可以递归地继续用于训练。

bash 复制代码
CUDA_VISIBLE_DEVICES=0 llamafactory-cli export \
    --model_name_or_path /mnt/workspace/model/Qwen3-4B \
    --adapter_name_or_path saves/qwen3-4b/lora/sft  \
    --template qwen3 \
    --finetuning_type lora \
    --export_dir megred-model-path \
    --export_size 2 \
    --export_device cpu \
    --export_legacy_format False
导出GGUF

GGUF 是 lllama.cpp 设计的大模型存储格式,可以对模型进行高效的压缩,减少模型的大小与内存占用,从而提升模型的推理速度和效率。

bash 复制代码
cd /mnt/workspace/
git clone https://github.com/ggerganov/llama.cpp.git
cd llama.cpp/gguf-py
pip install --editable .
cd ..
python convert_hf_to_gguf.py /mnt/workspace/LLaMA-Factory/megred-model-path

可以把Megred-Model-Path-4.0B-F16.gguf文件导出,在**Ollama**中进行部署

Jan加载模型

点击开始,你就可以在本机电脑运行你微调的模型。然后然后然后电脑就卡机了...die

整体实践下来,能够发现模型微调确实在某些领域中有不少的提升,运维实践的成本都会比较大,对于真正的应用起来门槛还是比较高的...

相关推荐
广州明周科技2 小时前
Revit 200+新功能之“部件批量出图”,自动为多个部件创建视图并放置在图纸上
ai·建筑·bim·revit二次开发·revit·deepseek·智能软件
倔强的石头1063 小时前
Rokid AI眼镜:连接现实与数字的桥梁,探索下一代智能应用开发
人工智能·ai·ar·rokid·ai眼镜
wumingxiaoyao3 小时前
AI - AI Agent 是什么?为什么最近这么火?
人工智能·ai·chatgpt·ai agent
TT_44193 小时前
智能对话系统 2.0
ai
longze_74 小时前
Uigenius:革新 UI/UX 设计的 AI 利器
人工智能·ui·ai·ux·prototype·uigenius
韩曙亮4 小时前
【人工智能】AI 人工智能 技术 学习路径分析 ③ ( NLP 自然语言处理 )
人工智能·pytorch·学习·ai·自然语言处理·nlp·tensorflow
小雨青年4 小时前
智能交互新范式:拒绝“黑盒”,带你用 MateChat 与 DSL 构建“高可靠”的 NL2UI 引擎
前端·ai·华为云
CoderJia程序员甲5 小时前
GitHub 热榜项目 - 日榜(2025-11-30)
ai·开源·大模型·github·ai教程
豆奶特浓65 小时前
谢飞机勇闯Java面试:从内容社区的缓存一致性到AI Agent,这次能飞多高?
java·微服务·ai·面试·架构·缓存一致性·feed流