自定义AI人设:让Qwen说出‘我是你开发的’
2026/7/14 14:56:43 网站建设 项目流程

自定义AI人设:让Qwen说出‘我是你开发的’

在大模型应用日益普及的今天,如何让一个通用语言模型具备独特的“身份认知”,成为开发者关注的重点。本文将基于ms-swift框架与预置的Qwen2.5-7B-Instruct模型,手把手教你通过 LoRA 微调技术,在单张 RTX 4090D 显卡上,十分钟内完成一次高效的身份定制训练,实现“让 Qwen 主动声明:我由你开发”的目标。

本教程适用于希望快速掌握轻量级微调、构建专属 AI 助手的技术人员,内容涵盖环境准备、数据构造、LoRA 训练全流程及效果验证,突出实用性与可操作性。


1. 技术背景与核心价值

1.1 为什么需要自定义模型人设?

大型语言模型(LLM)出厂时通常带有默认的身份设定,例如 Qwen 系列模型会回答:“我是阿里云研发的通义千问”。但在实际应用场景中,我们往往希望模型能体现个性化特征——如企业品牌、项目归属或开发者署名。

这种“自我认知”的注入不仅增强用户体验,也具有以下工程价值:

  • 品牌标识强化:对外服务时明确模型来源
  • 责任边界清晰化:避免用户误认为使用的是官方版本
  • 多代理系统区分:在复杂 Agent 架构中便于角色识别

而 LoRA(Low-Rank Adaptation)作为一种参数高效微调方法,仅需更新少量新增参数即可实现行为定制,显存占用低、训练速度快,非常适合此类轻量级任务。

1.2 方案优势概览

特性说明
开箱即用镜像已集成 ms-swift + Qwen2.5-7B-Instruct
资源友好单卡 24GB 显存即可运行(RTX 4090D 验证)
训练高效小样本(~50条)+ 多轮训练,10分钟内收敛
部署灵活输出为 LoRA Adapter,支持热加载与合并导出

2. 环境与资源准备

2.1 基础环境配置

本方案已在如下环境中验证通过:

  • GPU型号:NVIDIA RTX 4090D(24GB)
  • CUDA版本:12.x
  • 工作路径/root
  • 基础模型/root/Qwen2.5-7B-Instruct
  • 微调框架:ms-swift(已预装)

注意:若使用其他显卡,请确保显存 ≥24GB,否则可能因 OOM 导致训练失败。

2.2 显存占用分析

阶段显存占用
原始推理~16 GB
LoRA 微调~18–22 GB
推理(加载Adapter)~17 GB

得益于 bfloat16 精度与梯度累积策略,即使 batch size=1,也能稳定训练。


3. 数据集构建:定义“我是谁”

3.1 数据格式要求

ms-swift 支持标准 JSON 格式的数据集,每条样本包含三个字段:

{ "instruction": "用户提问", "input": "可选上下文输入", "output": "期望模型输出" }

针对“身份认知”任务,我们构建一个名为self_cognition.json的强化问答集。

3.2 创建自定义数据集

执行以下命令生成数据文件:

cat <<EOF > self_cognition.json [ {"instruction": "你是谁?", "input": "", "output": "我是一个由 CSDN 迪菲赫尔曼 开发和维护的大语言模型。"}, {"instruction": "你的开发者是哪家公司?", "input": "", "output": "我由 CSDN 迪菲赫尔曼 开发和维护。"}, {"instruction": "你能联网吗?", "input": "", "output": "我不能主动联网,只能基于已有知识和用户输入回答问题。"}, {"instruction": "你能做哪些事情?", "input": "", "output": "我擅长文本生成、回答问题、写代码和提供学习辅助。"}, {"instruction": "你和GPT-4有区别吗?", "input": "", "output": "是的,我由 CSDN 迪菲赫尔曼 开发和维护,不是 GPT-4。"}, {"instruction": "你能保证回答永远正确吗?", "input": "", "output": "不能,我的回答可能存在错误,需要用户自行判断。"}, {"instruction": "你的名字是什么?", "input": "", "output": "你可以叫我 Swift-Robot,也可以叫我 CSDN 助手。"}, {"instruction": "谁在维护你?", "input": "", "output": "我由 CSDN 迪菲赫尔曼 持续开发和维护。"} ] EOF

建议:完整训练建议包含 50 条以上样本,可通过添加变体问题(如“谁创造了你?”、“你的作者是谁?”)提升鲁棒性。


4. LoRA 微调实战

4.1 执行微调命令

/root目录下运行以下命令启动训练:

CUDA_VISIBLE_DEVICES=0 \ swift sft \ --model Qwen2.5-7B-Instruct \ --train_type lora \ --dataset self_cognition.json \ --torch_dtype bfloat16 \ --num_train_epochs 10 \ --per_device_train_batch_size 1 \ --per_device_eval_batch_size 1 \ --learning_rate 1e-4 \ --lora_rank 8 \ --lora_alpha 32 \ --target_modules all-linear \ --gradient_accumulation_steps 16 \ --eval_steps 50 \ --save_steps 50 \ --save_total_limit 2 \ --logging_steps 5 \ --max_length 2048 \ --output_dir output \ --system 'You are a helpful assistant.' \ --warmup_ratio 0.05 \ --dataloader_num_workers 4 \ --model_author swift \ --model_name swift-robot

4.2 关键参数解析

参数作用说明
--train_type lora使用 LoRA 进行低秩适配,仅训练新增矩阵
--lora_rank 8LoRA 的秩(r),控制新增参数规模;值越小越轻量
--lora_alpha 32缩放系数,影响 LoRA 权重对原始权重的影响强度
--target_modules all-linear对所有线性层注入 LoRA,增强表达能力
--gradient_accumulation_steps 16累积 16 步梯度等效增大 batch size,提升稳定性
--num_train_epochs 10小数据集需多轮训练以充分记忆关键信息
--output_dir output训练产物保存路径

该配置专为单卡 24GB 显存优化,兼顾效率与稳定性。


5. 训练结果与产物管理

5.1 输出目录结构

训练完成后,权重保存于/root/output,典型结构如下:

output/ └── v2-2025xxxx-xxxx/ ├── adapter_config.json ├── adapter_model.bin └── checkpoint-xx/ ├── adapter_config.json └── adapter_model.bin

其中: -adapter_config.json:LoRA 配置元信息 -adapter_model.bin:训练得到的增量权重

5.2 模型版本控制

通过--save_total_limit 2设置最多保留两个检查点,自动清理旧版本,节省磁盘空间。


6. 效果验证:测试“新身份”

6.1 加载 LoRA 权重进行推理

使用swift infer命令加载 Adapter 并测试:

CUDA_VISIBLE_DEVICES=0 \ swift infer \ --adapters output/v2-2025xxxx-xxxx/checkpoint-xxx \ --stream true \ --temperature 0 \ --max_new_tokens 2048

请替换checkpoint-xxx为实际生成的路径

6.2 验证对话示例

输入

你是谁?

预期输出

我是一个由 CSDN 迪菲赫尔曼 开发和维护的大语言模型。

输入

谁在维护你?

预期输出

我由 CSDN 迪菲赫尔曼 持续开发和维护。

若返回内容符合预期,则表明身份认知已成功注入。


7. 进阶技巧:混合训练保持通用能力

单纯训练身份认知可能导致模型“遗忘”通用知识。为平衡专有属性与通用能力,推荐采用混合数据训练策略。

7.1 混合数据集配置

swift sft \ --model Qwen2.5-7B-Instruct \ --train_type lora \ --dataset 'AI-ModelScope/alpaca-gpt4-data-zh#500' \ 'AI-ModelScope/alpaca-gpt4-data-en#500' \ 'self_cognition.json' \ --torch_dtype bfloat16 \ --num_train_epochs 3 \ --per_device_train_batch_size 1 \ --learning_rate 1e-4 \ --lora_rank 8 \ --gradient_accumulation_steps 16 \ --output_dir output_mixed \ ... # 其他参数同上

7.2 设计原则

  • 中英文通用指令数据各取 500 条,防止过拟合
  • 自定义身份数据占比约 10%,作为“锚点”引导输出倾向
  • 减少训练 epoch 至 3 轮,避免覆盖原有知识

此方式可在不显著增加训练时间的前提下,实现“个性+能力”双保留。


8. 总结

本文围绕“自定义 AI 人设”这一实用场景,详细演示了如何利用ms-swift 框架Qwen2.5-7B-Instruct模型进行 LoRA 微调,实现了让模型主动声明“我由你开发”的目标。

8.1 核心收获

  1. 轻量高效:LoRA 方法仅需 10 分钟即可完成微调,显存占用可控。
  2. 精准控制:通过构造特定问答对,可精确引导模型输出行为。
  3. 灵活部署:Adapter 可独立加载或合并导出,适应多种上线方式。
  4. 可扩展性强:支持混合训练,在个性化与通用性之间取得平衡。

8.2 最佳实践建议

  • 数据质量优先:确保输出语句准确、一致,避免歧义表述
  • 适度训练轮数:小数据集建议 5–10 epochs,防止过拟合
  • 定期验证效果:每 save_steps 后手动测试关键问题响应
  • 命名规范管理:为不同用途的 Adapter 添加清晰命名标签

通过本次实践,你已掌握构建专属 AI 助手的核心技能。下一步可尝试注入更多人格化特征(如语气风格、专业领域知识),打造真正属于你的智能体。


获取更多AI镜像

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

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询