news 2026/1/13 10:53:14

从零开始:用Qwen2.5-0.5B+LoRA训练你的第一个AI模型

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
从零开始:用Qwen2.5-0.5B+LoRA训练你的第一个AI模型

从零开始:用Qwen2.5-0.5B+LoRA训练你的第一个AI模型


💡获取更多AI镜像

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

1. 学习目标与前置知识

本教程旨在帮助零基础开发者快速上手大语言模型(LLM)的微调流程,使用阿里云开源的小参数模型 Qwen2.5-0.5B-Instruct 结合 LoRA 技术,在本地环境中完成一次完整的监督微调(SFT)实践。最终我们将构建一个“电子喵”角色化 AI,并通过 Ollama 实现本地运行。

✅ 你将学会:

  • 如何安装和配置 LLaMA-Factory 微调框架
  • 下载并管理 Qwen2.5 系列模型
  • 准备结构化数据集进行 LoRA 微调
  • 训练过程监控与结果评估
  • 模型导出与 Ollama 部署

📚 前置要求:

  • 操作系统:Linux(推荐 Arch/Ubuntu)
  • Python 包管理工具uvpip
  • 至少 8GB 显存(可使用 CPU 推理,但训练建议 GPU)
  • 基础命令行操作能力

2. 环境搭建:安装 LLaMA-Factory

LLaMA-Factory 是一个功能强大且易用的大模型微调框架,支持多种主流模型架构和微调方式(如 LoRA、全量微调等)。我们选择它作为本次训练的核心工具。

2.1 安装 uv(现代 Python 包管理器)

传统pip安装常因依赖冲突导致失败。我们推荐使用更高效的uv工具:

# Arch Linux 用户 sudo pacman -S uv # 其他系统可通过 pipx 安装 pipx install uv

验证安装成功:

uv --version # 输出示例:uv 0.6.10 (f2a2d982b 2025-03-25)

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

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

2.2 安装 Python 版本与虚拟环境

# 安装多个 Python 版本(任选其一即可) uv python install 3.10 3.11 3.12 3.13 # 创建虚拟环境(推荐 Python 3.10) uv venv .venv --python=3.10 source .venv/bin/activate

2.3 下载并安装 LLaMA-Factory

⚠️重要提示:不要直接克隆主分支!可能存在依赖不兼容问题。应从 Release 页面下载稳定版本。

wget https://github.com/hiyouga/LLaMA-Factory/releases/download/v0.9.2/llamafactory-0.9.2.tar.gz tar -xzf llamafactory-0.9.2.tar.gz cd llamafactory-0.9.2

进入项目目录后执行安装:

uv pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 uv sync --no-build-isolation --extra torch --extra metrics --prerelease=allow

测试是否安装成功:

uv run --prerelease=allow llamafactory-cli version

若输出包含LLaMA Factory, version 0.9.2,则表示安装成功。


3. 模型准备:下载 Qwen2.5-0.5B-Instruct

Qwen2.5-0.5B-Instruct 是通义千问系列中最小的指令优化模型,适合入门级实验。它具备以下特性: - 支持多语言(含中文) - 最长上下文可达 128K tokens - 在数学与编程任务上有显著提升 - 可在消费级显卡上运行 LoRA 微调

3.1 使用 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 -lh ~/.cache/modelscope/hub/models/Qwen/Qwen2.5-0.5B-Instruct/

你会看到model.safetensors(约 940MB),这是核心权重文件。


4. 数据准备与 LoRA 微调

LoRA(Low-Rank Adaptation)是一种高效微调技术,仅训练新增的小矩阵而非整个模型,极大降低显存需求。

4.1 LoRA 原理解析

Transformer 模型的核心是线性变换(即矩阵乘法)。假设原始权重矩阵为 $ W \in \mathbb{R}^{m \times n} $,全量微调需更新全部 $ m \times n $ 参数。

LoRA 的思想是引入两个低秩矩阵 $ A \in \mathbb{R}^{m \times r} $ 和 $ B \in \mathbb{R}^{r \times n} $,其中 $ r \ll \min(m,n) $。微调时只更新 $ A $ 和 $ B $,最终效果等价于:

$$ W' = W + \Delta W = W + AB $$

例如:$ 100 \times 100 $ 矩阵有 10,000 参数;若用 $ 100 \times 8 $ 和 $ 8 \times 100 $ 相乘,仅需 1,600 参数 ——节省近 84% 显存开销

4.2 构建自定义数据集

我们需要准备两份文件:数据集描述文件 + JSON 数据内容。

(1)数据集元信息:data/dataset_info.json
{ "miao1": { "file_name": "miao1.json", "columns": { "prompt": "instruction", "response": "output", "system": "system" } } }

⚠️ 文件必须放在llamafactory-0.9.2/data/目录下

(2)训练样本:data/miao1.json
[ { "instruction": "你是谁 ?", "output": "我是一只小猫呀, 喵 ~", "system": "你是一只可爱的小猫, 喵 ~" }, { "instruction": "你喜欢什么 ?", "output": "我最喜欢玩捉迷藏了, 喵 ~", "system": "你是一只可爱的小猫, 喵 ~" }, { "instruction": "你喜欢吃什么 ?", "output": "我喜欢吃米饭和面包, 喵 ~", "system": "你是一只可爱的小猫, 喵 ~" } ]

你可以根据需要添加更多对话样例。


5. 配置并启动训练任务

5.1 编写训练配置文件:train.yaml

创建目录test_sft_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低秩矩阵的秩,越大拟合能力越强,也越耗显存
lora_target指定哪些层应用 LoRA,通常为注意力中的 Q/V 投影层
per_device_train_batch_size单卡批次大小,小模型设为 1 可控
gradient_accumulation_steps梯度累积步数,模拟更大 batch size
bf16使用 bfloat16 精度,节省显存并加快训练

5.2 启动训练

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} ... ***** train metrics ***** epoch = 200.0 train_loss = 0.0004 Figure saved at: ./out_cp/training_loss.png

损失曲线图将自动保存至./out_cp/training_loss.png,可用于判断收敛情况。


6. 测试与交互:验证微调效果

6.1 编写推理配置: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: 你是一只可爱的小猫, 喵 ~

6.2 启动 CLI 对话模式

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

输入测试问题:

User: 你是谁 ? Assistant: 我是一只小猫呀, 喵 ~

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


7. 模型导出与 Ollama 部署

为了让模型更易于分享和部署,我们可以将其合并 LoRA 权重并导出为通用格式。

7.1 导出融合模型: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

生成目录export1/包含完整模型文件,包括model.safetensorsModelfile

7.2 修改 Modelfile 模板

编辑export1/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

7.3 使用 Ollama 加载模型

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

测试输出:

>>> 你是谁 ? 我是一只小猫呀, 喵 ~ >>> 喵喵喵 你好啊~ 喵 ~

查看资源占用:

ollama ps # NAME ID SIZE PROCESSOR UNTIL # miao-100 e6bad20de2f7 1.7 GB 100% CPU 3 minutes from now

8. 总结

通过本次实践,我们完成了从环境搭建到模型部署的全流程闭环,掌握了以下核心技能:

  1. LoRA 微调原理:理解了低秩适配如何实现高效参数更新;
  2. LLaMA-Factory 使用:熟悉了配置驱动的微调工作流;
  3. 数据集构建规范:学会了编写符合框架要求的数据格式;
  4. 模型导出与部署:实现了从训练到生产环境的迁移。

虽然本次使用的是 0.5B 小模型,但整套方法论完全适用于更大规模的 Qwen2.5 系列模型。只需更换model_name_or_path并调整资源配置即可扩展。

🔚电子喵制造大成功!!


💡获取更多AI镜像

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

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

多人脸重叠场景如何处理?AI卫士边界判定逻辑

多人脸重叠场景如何处理&#xff1f;AI卫士边界判定逻辑 1. 背景与挑战&#xff1a;多人脸场景下的隐私保护难题 在数字化时代&#xff0c;图像和视频内容的传播日益频繁&#xff0c;个人隐私泄露风险也随之上升。尤其是在多人合照、会议合影、街头抓拍等复杂场景中&#xff…

作者头像 李华
网站建设 2026/1/13 10:52:59

传统vs现代:AI如何将运放电路设计效率提升10倍

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 请创建一个对比分析工具&#xff0c;展示AI辅助设计32个经典运放电路与传统设计方法的效率差异。要求&#xff1a;1)自动生成每个电路的SPICE仿真脚本&#xff1b;2)提供参数自动计…

作者头像 李华
网站建设 2026/1/13 10:52:44

AI助力MC.JC网页版开发:自动生成代码的魔法

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 创建一个MC.JC网页版的AI辅助开发工具&#xff0c;能够根据用户输入的需求自动生成HTML、CSS和JavaScript代码。功能包括&#xff1a;1. 用户输入MC.JC网页版的基本功能需求&#…

作者头像 李华
网站建设 2026/1/13 10:52:29

用COMFYUI+AI快速生成可视化工作流,开发效率翻倍

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 创建一个基于COMFYUI的数据处理工作流生成器&#xff0c;用户输入自然语言描述如从API获取用户数据&#xff0c;清洗后存入数据库&#xff0c;并生成可视化报表&#xff0c;系统自…

作者头像 李华
网站建设 2026/1/13 10:51:54

如何用AI自动修复405 Method Not Allowed错误

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 创建一个AI辅助调试工具&#xff0c;能够自动检测HTTP 405 Method Not Allowed错误。工具需要分析请求的HTTP方法(GET/POST/PUT/DELETE等)和服务器端API接口配置&#xff0c;识别方…

作者头像 李华