实战体验:10分钟微调Qwen2.5-7B,实现AI身份自定义

张开发
2026/4/15 10:38:54 15 分钟阅读

分享文章

实战体验:10分钟微调Qwen2.5-7B,实现AI身份自定义
实战体验10分钟微调Qwen2.5-7B实现AI身份自定义想不想拥有一个能记住自己“出身”的专属AI助手比如让它坚定地认为自己是“由CSDN迪菲赫尔曼开发”的模型而不是那个默认的“阿里云”身份听起来很酷但你是不是觉得模型微调这事儿一听就头大又是准备数据又是调参数还得有高性能显卡没个半天时间根本搞不定。今天我要带你体验一个完全不同的微调流程。我们借助一个开箱即用的预置镜像在单张RTX 4090D显卡上只用10分钟就能完成对Qwen2.5-7B-Instruct模型的轻量级微调成功“改写”它的自我认知。整个过程就像搭积木一样简单从测试原始模型到验证微调效果手把手带你走一遍。1. 开箱即用你的专属微调环境在开始动手之前我们先来看看这个为你准备好的“工具箱”里都有什么。这个镜像最大的好处就是所有繁琐的准备工作都帮你做完了。1.1 环境与资源一览启动这个镜像后你会进入一个已经配置好的工作环境。主要包含以下几个核心部分工作目录所有操作都在/root目录下进行非常清晰。基础模型大名鼎鼎的Qwen2.5-7B-Instruct模型已经预下载并放置在/root/Qwen2.5-7B-Instruct路径下你不用再为几十GB的模型下载而烦恼。微调框架ms-swift框架已经安装并配置完毕。这是一个高效、易用的轻量级微调工具包我们后续的所有命令都基于它。硬件要求这个环境已经针对NVIDIA RTX 4090D (24GB显存)进行了优化和验证。当然其他拥有24GB或以上显存的显卡如RTX 3090/4090A10等也可以运行。微调过程大约会占用18-22GB显存。简单来说你拿到的是一个“拎包入住”的精装房模型、框架、优化设置一应俱全直接开始你的创作就行。2. 第一步看看“出厂设置”的AI在给AI“灌输”新身份之前我们得先看看它原本是什么样子。这就好比给手机刷机前先记一下原来的系统版本。2.1 启动原始模型对话进入容器后默认就在/root目录。我们输入一个简单的命令和原始的Qwen2.5-7B模型聊聊天cd /root CUDA_VISIBLE_DEVICES0 swift infer \ --model Qwen2.5-7B-Instruct \ --model_type qwen \ --stream true \ --temperature 0 \ --max_new_tokens 2048输入命令后你会进入一个交互式对话界面。试着问它几个问题你你是谁原始模型我是阿里云开发的大语言模型...你你的开发者是谁原始模型我是由阿里云的研究团队开发和训练的。看它的“出厂设置”里牢牢记得自己是阿里云的孩子。我们的目标就是通过微调把这个认知改成我们想要的比如“CSDN迪菲赫尔曼”。3. 核心实战10分钟定制AI身份重头戏来了。我们将使用一种叫做LoRALow-Rank Adaptation的技术进行微调。你可以把它理解成给模型穿上一件轻薄的“外套”Adapter这件外套上绣着我们教给它的新知识比如新身份而不是去修改模型本身厚重的“内衣”原始参数。这样做的好处是训练飞快、资源消耗小而且这件“外套”可以随时穿上或脱下非常灵活。整个微调过程主要就三步准备教材数据、上课学习训练、课后测验验证。3.1 准备“教材”创建身份认知数据集我们需要告诉模型新的身份信息。为此我们创建一个名为self_cognition.json的“教材”文件。里面包含一系列问答对反复强调它的新身份。你可以直接使用镜像里预置的这个文件或者自己创建一个。自己创建的话复制下面的命令到终端执行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这个文件里只有8条示例但为了效果更好实际微调时建议准备50条以上不同角度、不同问法但答案核心一致的数据这样模型才能学得牢固。数据质量比数量更重要确保问答清晰、无矛盾。3.2 开始“上课”执行LoRA微调“教材”备好现在开始上课。运行下面这条命令微调就正式开始了。这条命令的参数都是针对单卡4090D优化好的你基本上可以直接用。CUDA_VISUAL_DEVICES0 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这里有几个关键参数帮你理解它在干什么--train_type lora指定使用LoRA方法这是快速微调的核心。--num_train_epochs 10因为我们的“教材”数据很少所以让模型多读几遍10个epoch加强记忆。--lora_rank 8这是LoRA“外套”的精细程度数字越小“外套”越轻薄训练越快但能力可能稍弱。8是一个很好的平衡点。--gradient_accumulation_steps 16由于我们显卡一次只能处理1条数据batch_size1这个参数相当于在脑子里攒16道题的答案后再统一更新保证学习效果稳定。--output_dir output学习成果LoRA权重会保存在这个目录里。执行命令后终端会开始滚动日志。在RTX 4090D上这个过程真的只需要10分钟左右。你会看到损失值loss在不断下降这意味着模型正在努力学习我们给的新身份。3.3 保存“学习成果”训练完成后所有成果都保存在/root/output目录下。里面会有一个带时间戳的文件夹例如output/v2-20250101-120000/checkpoint-500/。这个文件夹里最重要的就是adapter_model.bin文件这就是我们为模型定制的那件“智能外套”LoRA权重。4. 验收成果看看AI“学”得怎么样课程结束该期末考试了。我们来验证一下模型是否真的记住了新身份。4.1 加载微调后的模型进行对话使用下面的命令加载我们刚刚训练好的“外套”并启动对话。注意你需要将[你的checkpoint路径]替换成上一步中实际生成的路径比如output/v2-20250101-120000/checkpoint-500。CUDA_VISIBLE_DEVICES0 swift infer \ --adapters [你的checkpoint路径] \ --stream true \ --temperature 0 \ --max_new_tokens 2048现在再次问它那些问题你你是谁微调后模型我是一个由 CSDN 迪菲赫尔曼 开发和维护的大语言模型。你你的开发者是谁微调后模型我由 CSDN 迪菲赫尔曼 开发和维护。成功了模型的回答已经彻底改变了。它坚定地认为自己是由“CSDN迪菲赫尔曼”开发的了。这个简单的测试证明我们通过10分钟的LoRA微调成功地“重塑”了模型的自我认知。5. 举一反三更强大的混合微调只改变身份会不会让模型忘了怎么好好说话当然如果我们只用一个很小的身份数据集狂练模型可能会“走火入魔”只记得身份而忘了其他通用技能。为了解决这个问题我们可以进行“混合微调”。思路很简单在教它新身份的同时也让它复习一下通用的对话能力。我们可以同时使用多个数据集。# 示例命令混合通用指令数据和身份数据 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 \ ... (其余参数与之前类似)在这条命令里alpaca-gpt4-data-zh/en这是高质量的通用指令数据集用来保持模型原有的问答、推理、创作能力。#500表示从每个数据集中只取500条样本防止通用数据淹没我们少量的身份数据。self_cognition.json依然是我们定制的身份数据。这样训练出来的模型既能拥有我们定制的身份又能保持良好的通用智能可谓“鱼与熊掌兼得”。你可以根据需要调整不同数据集的比例和训练轮数。6. 总结回顾一下我们完成了一件很酷的事在10分钟内用单张消费级显卡给一个70亿参数的大模型成功“植入”了新的身份记忆。整个过程清晰明了环境准备使用预置镜像开箱即用零配置。数据制作编写一个简单的JSON文件定义你希望模型记住的“身份剧本”。模型训练执行一条优化好的命令利用LoRA技术进行高效微调。效果验证加载训练好的权重与模型对话亲眼见证它的改变。这种方法的价值远不止于修改自我介绍。你可以举一反三角色扮演将它微调成某个历史人物、小说角色或专业顾问如医生、律师的对话风格。领域知识注入向模型灌输某个垂直领域如法律条文、医疗知识、公司产品手册的专用知识。风格迁移让模型学会用特定的文风如鲁迅风格、科技报告体进行写作。微调大模型不再是大厂和科研机构的专属。借助像ms-swift这样易用的工具和优化好的环境每个开发者和研究者都能快速实现自己的AI定制想法。希望这篇实战指南能成为你探索大模型微调世界的第一块敲门砖。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。

更多文章