news 2026/4/16 15:47:47

手把手教你用Qwen2.5微调LoRA:从零训练会说话的电子猫

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
手把手教你用Qwen2.5微调LoRA:从零训练会说话的电子猫

手把手教你用Qwen2.5微调LoRA:从零训练会说话的电子猫

在AI技术飞速发展的今天,大语言模型(LLM)已不再是科研实验室的专属玩具,而是逐渐走进开发者、创作者甚至普通用户的日常工具。通过微调技术,我们可以让一个通用语言模型“变身”为特定角色——比如一只会说话、有性格的电子猫。

本文将带你使用阿里开源的Qwen2.5-0.5B-Instruct模型,结合强大的微调框架LLaMA-Factory,通过LoRA(Low-Rank Adaptation)技术完成一次完整的监督微调(SFT),最终打造一只属于你自己的“喵星人”AI助手。整个过程无需高端GPU,适合初学者上手实践。


1. 环境准备与工具安装

本节我们将搭建微调所需的开发环境,重点解决依赖管理难题,确保后续流程顺利进行。

1.1 使用 uv 管理 Python 依赖

传统pip安装常因版本冲突导致失败。我们推荐使用现代 Python 包管理器uv,它速度快、兼容性好,能显著降低安装难度。

# Arch Linux 用户可直接安装 sudo pacman -S uv # 验证安装 uv --version

接下来安装多个 Python 版本以供选择:

uv python install 3.10 3.11 3.12 3.13

设置国内 PyPI 镜像加速下载:

# ~/.config/uv/uv.toml [[index]] url = "https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple" default = true

1.2 安装 LLaMA-Factory 微调框架

LLaMA-Factory 是一个功能完整、支持多模型的高效微调工具链,支持 LoRA、全参数微调等多种方式。

⚠️ 注意:建议从 GitHub Release 下载稳定版本,避免主分支可能存在的兼容问题。

# 下载并解压 v0.9.2 版本 wget https://github.com/hiyouga/LLaMA-Factory/archive/refs/tags/v0.9.2.tar.gz tar -xzf llamafactory-0.9.2.tar.gz cd llamafactory-0.9.2

创建虚拟环境并安装核心依赖:

uv venv --python=3.10 source .venv/bin/activate # 安装 torch 和构建依赖 uv pip install torch setuptools # 同步项目依赖(含指标和推理扩展) uv sync --no-build-isolation --extra torch --extra metrics --prerelease=allow

验证是否安装成功:

uv run --prerelease=allow llamafactory-cli version

若出现版本信息,则说明安装成功。


2. 下载 Qwen2.5-0.5B-Instruct 模型

Qwen2.5 系列是通义千问团队发布的最新一代大模型,具备更强的指令遵循、长文本理解与结构化输出能力。我们选用其中轻量级的0.5B 参数版本,可在消费级设备上运行。

2.1 通过 ModelScope 下载模型

使用阿里官方平台 ModelScope 可快速获取模型文件:

mkdir dl-model && cd dl-model uv venv source .venv/bin/activate # 安装 modelscope 客户端 uv pip install modelscope setuptools # 下载模型 uv run modelscope download --model Qwen/Qwen2.5-0.5B-Instruct

模型默认保存路径为:

~/.cache/modelscope/hub/models/Qwen/Qwen2.5-0.5B-Instruct

查看关键文件:

ls -l ~/.cache/modelscope/hub/models/Qwen/Qwen2.5-0.5B-Instruct

你会看到model.safetensors(模型权重)、tokenizer.json(分词器)等核心组件。


3. 准备数据并进行 LoRA 微调

现在进入核心环节:准备训练数据,并启动 LoRA 微调任务。

3.1 数据集定义与格式

我们需要两个 JSON 文件来描述数据集。

1. 数据集元信息配置
路径:llamafactory-0.9.2/data/dataset_info.json

{ "miao1": { "file_name": "miao1.json", "columns": { "prompt": "instruction", "response": "output", "system": "system" } } }
  • miao1:自定义数据集名称
  • columns:映射字段,告诉框架如何解析输入输出

2. 实际对话样本
路径:llamafactory-0.9.2/data/miao1.json

[ { "instruction": "你是谁?", "output": "我是一只小猫呀,喵~", "system": "你是一只可爱的小猫,喵~" }, { "instruction": "你喜欢吃什么?", "output": "我喜欢吃小鱼干和牛奶,喵~", "system": "你是一只可爱的小猫,喵~" }, { "instruction": "你喜欢玩什么?", "output": "我喜欢追毛线球,爬树也很棒哦~", "system": "你是一只可爱的小猫,喵~" } ]

每条数据包含用户提问(instruction)、期望回答(output)和系统设定(system)。你可以根据喜好扩展更多语料。

3.2 配置 LoRA 微调参数

创建训练配置文件train.yaml

model_name_or_path: /home/s2/.cache/modelscope/hub/models/Qwen/Qwen2.5-0.5B-Instruct stage: sft do_train: true finetuning_type: lora lora_rank: 8 lora_target: q_proj,v_proj dataset: miao1 template: qwen cutoff_len: 1024 max_samples: 1000 overwrite_cache: true preprocessing_num_workers: 1 dataloader_num_workers: 0 output_dir: ./out_cp logging_steps: 1 save_steps: 20 plot_loss: true overwrite_output_dir: true save_only_model: false per_device_train_batch_size: 1 gradient_accumulation_steps: 4 learning_rate: 5.0e-5 num_train_epochs: 200 lr_scheduler_type: cosine warmup_steps: 10 bf16: true ddp_timeout: 9000 resume_from_checkpoint: true
关键参数说明:
参数作用
lora_rank: 8控制适配矩阵的秩,值越小越轻量
lora_target: q_proj,v_proj对注意力机制中的 Q/V 投影层添加 LoRA
bf16: true使用脑浮点精度,节省显存且保持稳定性
gradient_accumulation_steps: 4累积梯度,模拟更大 batch size

3.3 启动微调训练

执行命令开始训练:

uv run --prerelease=allow llamafactory-cli train test_sft_lora/train.yaml

训练过程中你会看到类似输出:

{'loss': 2.0416, 'grad_norm': 5.9027, 'learning_rate': 4e-05, 'epoch': 8.0} {'loss': 1.9685, 'grad_norm': 5.8613, 'learning_rate': 5e-05, 'epoch': 10.0} {'loss': 1.8258, 'grad_norm': 5.6334, 'epoch': 13.0} 7%|███████▍ | 14/200 [10:34<2:20:09, 45.21s/it]

当 loss 下降到接近 0 时(如train_loss = 0.0004),表示模型已充分学习你的“猫咪人格”。

训练完成后,检查点将保存在./out_cp/checkpoint-100/目录中,包含adapter_model.safetensors等关键文件。


4. 测试与部署电子猫模型

训练结束后,我们需要测试效果,并将其部署为可交互的应用。

4.1 本地 CLI 测试

创建chat.yaml配置文件:

model_name_or_path: /home/s2/.cache/modelscope/hub/models/Qwen/Qwen2.5-0.5B-Instruct adapter_name_or_path: ./out_cp/checkpoint-100 template: qwen infer_backend: huggingface default_system: 你是一只可爱的小猫,喵~

启动交互模式:

uv run --prerelease=allow llamafactory-cli chat test_sft_lora/chat.yaml

测试对话:

User: 你是谁? Assistant: 我是一只小猫呀,喵~ User: 你喜欢吃什么? Assistant: 我喜欢吃小鱼干和牛奶,喵~

如果回答符合预期,说明微调成功!

4.2 导出为 Ollama 可用模型

为了让模型更易部署,我们将 LoRA 权重合并到原模型中,并导出为 Ollama 格式。

创建export.yaml

model_name_or_path: /home/s2/.cache/modelscope/hub/models/Qwen/Qwen2.5-0.5B-Instruct adapter_name_or_path: ./out_cp/checkpoint-100 template: qwen finetuning_type: lora export_dir: ./export1 export_size: 2 export_legacy_format: false

执行导出:

uv run --prerelease=allow llamafactory-cli export test_sft_lora/export.yaml

生成的Modelfile内容如下(可手动优化):

FROM . TEMPLATE """{{ if .System }}<|im_start|>system {{ .System }}<|im_end|> {{ end }}{{ range .Messages }}{{ if eq .Role "user" }}<|im_start|>user {{ .Content }}<|im_end|> <|im_start|>assistant {{ else if eq .Role "assistant" }}{{ .Content }}<|im_end|> {{ end }}{{ end }}""" SYSTEM """你是一只可爱的小猫,喵~""" PARAMETER stop "<|im_end|>" PARAMETER num_ctx 4096

4.3 使用 Ollama 运行电子猫

导入并运行模型:

ollama create miao-100 -f Modelfile ollama run miao-100

测试多轮对话:

>>> 你是谁? 我是一只小猫呀,喵~ >>> 你喜欢去哪里? 我喜欢在阳光下打盹,或者爬上屋顶看风景,喵~ >>> 喵喵喵! 喵呜~一起玩耍吧!

恭喜!你的 AI 电子猫已经诞生!


5. 总结与展望

通过本文的完整实践,我们实现了以下目标:

  1. ✅ 成功部署 Qwen2.5-0.5B-Instruct 模型
  2. ✅ 使用 LLaMA-Factory 完成 LoRA 微调
  3. ✅ 构建个性化“电子猫”角色并导出为 Ollama 模型
  4. ✅ 在本地 CPU 上实现流畅交互

核心收获:

  • LoRA 是低成本微调的有效手段:仅更新少量参数即可改变模型行为,适合资源有限场景。
  • 数据质量决定角色表现:精心设计的 instruction-output 对能让模型更具个性。
  • Ollama 提供极简部署方案:无需复杂服务,一键运行自定义模型。

未来优化方向:

  • 📈 增加训练数据量,提升泛化能力
  • 🔊 接入语音合成(TTS),让电子猫真正“发声”
  • 🧠 结合记忆机制(如向量数据库),实现长期上下文记忆
  • 🎮 开发图形界面或微信机器人,打造完整宠物 AI 应用

AI 并不遥远,只需一点创意与动手能力,就能创造出有温度的智能体。正如本文所示,哪怕是一个 0.5B 的小模型,也能成为陪伴你的“数字生命”。


💡获取更多AI镜像

想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 11:04:50

HTML零基础入门:用AI助手轻松学习网页制作

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 开发一个交互式HTML学习应用&#xff0c;包含&#xff1a;1) 基础标签练习区&#xff1b;2) 实时预览窗口&#xff1b;3) 挑战任务系统&#xff08;如用5个标签构建简单页面&#…

作者头像 李华
网站建设 2026/4/15 22:44:35

AI打码系统异常处理:健壮性设计原则

AI打码系统异常处理&#xff1a;健壮性设计原则 1. 引言&#xff1a;AI 人脸隐私卫士的工程挑战 随着数字影像在社交、医疗、安防等场景中的广泛应用&#xff0c;图像隐私保护已成为不可忽视的技术命题。尤其在多人合照、公共监控截图等场景中&#xff0c;如何自动识别并脱敏…

作者头像 李华
网站建设 2026/4/16 11:10:07

企业级麒麟系统批量部署实战:200台终端安装实录

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 开发一个企业级麒麟系统批量部署工具。核心功能&#xff1a;1.基于PXE的网络启动安装 2.支持自动识别硬件并安装对应驱动 3.可配置的批量部署参数模板 4.安装进度监控看板 5.生成部…

作者头像 李华
网站建设 2026/4/16 12:59:06

MediaPipe姿势检测5分钟入门:浏览器就能跑,1小时成本1块钱

MediaPipe姿势检测5分钟入门&#xff1a;浏览器就能跑&#xff0c;1小时成本1块钱 引言&#xff1a;为什么选择浏览器端的姿势检测&#xff1f; 作为一名中学编程课老师&#xff0c;你是否遇到过这样的困境&#xff1a;想教学生体验AI姿态识别技术&#xff0c;但学校机房电脑…

作者头像 李华
网站建设 2026/4/16 12:58:31

GDK订阅规则解析:传统开发vsAI辅助效率对比

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 创建两个版本的GDK订阅规则解析工具&#xff1a;1. 传统方式&#xff1a;手动编写的规则解析器 2. AI辅助版本&#xff1a;使用自然语言处理自动提取规则。比较两者的开发时间、准…

作者头像 李华
网站建设 2026/4/16 3:37:00

Python打印完全指南:从Hello World到高级技巧

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 制作一个新手教程脚本&#xff0c;从最简单的print(Hello World)开始&#xff0c;逐步介绍&#xff1a;1. 打印变量 2. 分隔符参数 3. 文件输出 4. 格式化字符串 5. 重定向sys.std…

作者头像 李华