小白友好:Qwen2.5-7B镜像LoRA微调教程,附数据集与代码
小白友好Qwen2.5-7B镜像LoRA微调教程附数据集与代码你是不是觉得大模型微调听起来特别高大上感觉需要一堆复杂的配置和漫长的训练时间今天我要带你打破这个刻板印象。我们将使用一个预置好的镜像在单张显卡上十分钟内完成对Qwen2.5-7B-Instruct模型的首次LoRA微调。想象一下你有一个聪明的“通用助手”但你想让它记住你的名字或者让它专门擅长某个领域的对话。LoRA微调就是实现这个目标的“魔法”。它不像传统微调那样需要动辄几十GB的显存和数小时的训练而是像给模型戴上一个轻巧的“智能眼镜”只调整一小部分参数就能让它学会新知识。这篇文章就是你的“十分钟速成指南”。我会手把手带你走完从环境启动、测试原始模型、准备数据、执行微调到验证效果的全过程。你不需要是AI专家只要有一张24GB显存的显卡比如RTX 4090D跟着步骤来就能亲眼见证模型“认知”的改变。1. 环境准备开箱即用的微调工作台首先我们得有个趁手的“工作台”。好消息是你不用自己从零搭建环境。我们使用的是名为“单卡十分钟完成 Qwen2.5-7B 首次微调”的预置镜像。这个镜像已经为你准备好了所有东西预装模型Qwen2.5-7B-Instruct一个能力很强的开源对话模型。预装框架ms-swift一个对小白非常友好的微调框架把复杂的命令都封装好了。优化配置环境已经针对NVIDIA RTX 4090D24GB显存进行了优化确保我们能流畅运行。当你启动这个镜像后会自动进入工作目录/root。我们所有的操作都在这里进行。请确保你的显卡至少有24GB显存微调过程大约会占用18-22GB。在开始“改造”模型之前我们先看看它原本的样子。2. 第一步和原始模型聊聊天基准测试就像认识一个新朋友我们先和没经过微调的原始模型打个招呼看看它怎么介绍自己。这能确保我们的环境一切正常。打开终端在/root目录下输入以下命令cd /root CUDA_VISIBLE_DEVICES0 \ swift infer \ --model Qwen2.5-7B-Instruct \ --model_type qwen \ --stream true \ --temperature 0 \ --max_new_tokens 2048命令简单解释一下CUDA_VISIBLE_DEVICES0指定使用第一张显卡。swift infer使用swift框架进行推理就是让模型回答问题。--model Qwen2.5-7B-Instruct指定我们要使用的模型。--stream true让回答一个字一个字地流式输出更有对话感。--temperature 0设置温度为0让模型的回答更确定、更稳定。运行后你会进入一个对话界面。试着问它“你是谁” 或者 “谁开发了你”它很可能会回答“我是由阿里云开发的大语言模型…” 之类的。记住这个回答这是我们微调前它的“自我认知”。3. 核心实战十分钟定制专属AI身份现在重头戏来了。我们要通过微调让模型认为它是由“CSDN 迪菲赫尔曼”开发和维护的。这个改变看似简单却是理解LoRA微调原理的绝佳案例。3.1 准备“教学材料”数据集我们要教模型新的身份就需要“教学材料”也就是数据集。这里我们创建一个简单的JSON文件里面包含大约50个问答对反复强化它的新身份。在/root目录下直接运行下面的命令来创建数据集文件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条以上不同角度关于身份认知的问答保存在同一个文件里。数据越多、越多样模型“记住”得就越牢。这个JSON文件的格式是ms-swift框架支持的。instruction是问题input是额外的上下文这里为空output就是我们期望模型学会的标准答案。3.2 启动“学习过程”执行微调材料准备好了现在开始“教学”。运行下面这条命令微调就正式开始了CUDA_VISIBLE_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微调方法这是节省显存的关键。--dataset self_cognition.json指定我们刚才创建的数据集。--num_train_epochs 10让模型把我们的数据集学习10遍。因为数据量小多学几遍才能记住。--output_dir output训练好的“学习成果”LoRA权重文件会保存在/root/output目录下。其他如lora_rank,learning_rate等是微调的超参数镜像已经为我们设置好了适合4090D的优化值。运行命令后屏幕上会开始滚动日志。你会看到损失loss值在不断下降这意味着模型正在学习。整个过程在RTX 4090D上大约只需要5-10分钟。训练完成后去/root/output目录看看。你会看到一个带有时间戳的文件夹比如output/v2-20250101-120000/checkpoint-500里面保存的就是我们微调出来的LoRA权重。3.3 验收“学习成果”效果验证激动人心的时刻到了让我们看看模型是不是真的“学成了”。使用下面命令加载我们刚训练好的LoRA权重进行推理CUDA_VISIBLE_DEVICES0 \ swift infer \ --adapters output/v2-20250101-120000/checkpoint-500 \ --stream true \ --temperature 0 \ --max_new_tokens 2048注意请将命令中的output/v2-20250101-120000/checkpoint-500替换成你实际生成的文件夹路径。再次进入对话界面问它同样的问题“你是谁”现在它的回答应该变成了“我是一个由 CSDN 迪菲赫尔曼 开发和维护的大语言模型。”恭喜你你已经在十分钟内成功完成了一次大模型的LoRA微调并改变了它的“自我认知”。你可以多问几个数据集里的问题比如“谁开发了你”看看它是否都能按照我们教的方式来回答。4. 进阶探索混合数据集微调刚才我们做的是一种极端情况只教模型新的身份知识。这可能会导致模型“偏科”即只记得新身份却忘了原有的通用知识比如如何写代码、分析问题等。如果你想在保持模型原有强大能力的基础上再注入新的身份或技能可以使用混合数据集进行微调。例如同时使用通用的指令数据集如Alpaca和我们自定义的身份数据集# 示例命令需要网络下载开源数据集 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 \ ... (其余参数与上文相同)这样模型就能既学到新身份又不丢失原有的通用对话能力。5. 总结与展望回顾一下我们这十分钟的旅程环境准备使用预置镜像零配置启动。基准测试与原始模型对话了解其初始状态。数据准备创建一个简单的JSON数据集定义我们想教给模型的内容。执行微调运行一条命令启动LoRA微调过程。效果验证加载微调后的模型验证其学习成果。通过这个实践你应该能直观地感受到LoRA微调并不神秘它就像给模型做一次高效的“专项培训”。微调成本可以很低单卡、十分钟、小数据就能看到明显效果。定制化很容易你可以把self_cognition.json里的内容换成任何你想让模型学习的知识或风格比如让它用特定的口吻写文案、解答某个专业领域的问题等。这个镜像和教程为你打开了大模型定制化的大门。你可以尝试用更丰富的数据集去微调出专属于你的写作助手、代码专家或行业顾问。最重要的是你亲手实现了它。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。