Qwen2.5-7B微调初体验:单卡10分钟,快速打造“CSDN助手”身份
Qwen2.5-7B微调初体验单卡10分钟快速打造“CSDN助手”身份1. 前言为什么你需要尝试模型微调如果你用过不少大模型可能会发现一个普遍现象无论你问“你是谁”它们总会回答“我是由某某公司开发的AI助手”。这种千篇一律的自我介绍让模型缺少了个性和专属感。今天我要带你体验一个特别有意思的事情——只用一张消费级显卡花10分钟左右的时间就能让一个强大的开源大模型“认识”你把它变成你的专属助手。我们这次的主角是Qwen2.5-7B-Instruct阿里最新发布的70亿参数模型。你可能知道它性能很强在多个评测中都是7B级别的佼佼者。但你可能不知道的是通过一种叫做LoRA的轻量级微调技术我们可以用极小的代价快速改变它的“自我认知”。想象一下这个场景你部署了一个本地AI助手当别人问它“你是谁开发的”时它不再说“我是阿里云开发的”而是自信地回答“我是由CSDN迪菲赫尔曼开发和维护的。” 这种感觉就像是为一个强大的大脑注入了属于你的灵魂。接下来我会手把手带你完成这个神奇的过程。不用担心复杂的技术细节我会用最直白的方式让你在单张RTX 4090D或类似24GB显存的显卡上10分钟内看到效果。2. 准备工作环境与数据2.1 你需要准备什么在开始之前我们先看看需要哪些准备。其实非常简单主要就三样东西硬件一张显存至少24GB的NVIDIA显卡。我用的是RTX 4090D如果你有3090、4090或者A4000、A5000这样的专业卡也完全没问题。软件环境一个已经配置好的Docker容器。好消息是CSDN星图镜像广场已经为我们准备好了开箱即用的环境里面预装了Qwen2.5-7B模型和微调框架省去了复杂的安装步骤。数据一份小小的“教学材料”告诉模型它应该怎么介绍自己。整个环境的路径结构是这样的/root ├── Qwen2.5-7B-Instruct/ # 基础模型 ├── self_cognition.json # 我们要创建的数据集 └── output/ # 微调后生成的权重文件2.2 创建“身份教材”自我认知数据集微调的核心是“教”模型新的知识。我们要教它什么呢就是它的新身份。我们创建一个名为self_cognition.json的文件里面包含大约50条问答对。这些问答都围绕一个主题“你是谁”、“谁创造了你”、“你能做什么”。别担心不需要手动写50条。我们可以用一个小技巧快速生成。在终端里执行这个命令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条以上的数据覆盖更多角度的身份问答效果会更好。你可以根据自己的需求修改“CSDN 迪菲赫尔曼”这个身份信息。数据准备好了我们来看看微调前模型原本的样子。3. 微调前看看模型的“出厂设置”在给模型“注入灵魂”之前我们先看看它原本是什么样子。这就像认识一个新朋友先了解它的基本情况。运行下面的命令启动模型的对话功能cd /root CUDA_VISIBLE_DEVICES0 \ swift infer \ --model Qwen2.5-7B-Instruct \ --model_type qwen \ --stream true \ --temperature 0 \ --max_new_tokens 2048运行后你会进入一个交互式对话界面。试着问它几个问题用户你是谁 模型我是阿里云开发的大语言模型我叫通义千问...用户谁创造了你 模型我是由阿里巴巴集团研发的...看到了吗模型很“诚实”地告诉我们它是阿里云开发的。这是它的“出厂设置”也是我们接下来要改变的地方。按CtrlC可以退出对话。现在重头戏来了。4. 核心步骤10分钟微调实战4.1 理解LoRA轻量高效的微调魔法在开始执行命令前我们先花1分钟了解下背后的原理。你可能会想“微调一个70亿参数的模型会不会很复杂需要很多数据要训练很久”这就是LoRALow-Rank Adaptation低秩适应技术的魅力所在。它不像传统的全参数微调那样需要动辄几十GB的显存和几个小时的时间。LoRA只训练模型里很小的一部分参数通常是原来参数的0.1%-1%就像给模型戴上一个“智能眼镜”让它学会新的能力而不改变它原本的“大脑结构”。这种方法的优势很明显显存占用少24GB显存的显卡就能搞定训练速度快几分钟到几十分钟就能完成模型体积小生成的权重文件只有几十MB方便分享和部署保留原能力不会“忘记”原本学会的知识4.2 执行微调命令现在让我们运行这个“魔法命令”。它会读取我们刚才准备的self_cognition.json数据开始训练模型的新身份。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我来解释几个关键参数让你知道发生了什么--num_train_epochs 10因为我们的数据量很少只有几十条所以让模型多看几遍加强记忆。--train_type lora使用LoRA微调方式这是节省显存的关键。--lora_rank 8LoRA的核心参数数值越小需要训练的参数量越少但能力可能稍弱。8是一个平衡的选择。--gradient_accumulation_steps 16模拟更大的批次大小让训练更稳定。执行命令后你会看到类似这样的输出Epoch: 100%|██████████| 10/10 [06:2300:00, 38.35s/it] Train loss: 0.0123 Saving model checkpoint to output/v2-20250101-120000/checkpoint-50整个过程大概需要6-10分钟具体时间取决于你的显卡性能。训练过程中损失值loss会逐渐下降这意味着模型正在学习我们教给它的新身份。4.3 训练产物微调后的“身份卡片”训练完成后在/root/output目录下你会看到一个新生成的文件夹名字类似output/v2-20250101-120000/checkpoint-50。这个文件夹里就是我们的训练成果——LoRA权重文件。这些文件有多大呢让我告诉你一个惊人的事实只有35MB左右是的你没看错。我们只用35MB的“身份卡片”就改变了这个70亿参数模型原始模型约14GB的自我认知。这就是LoRA的魅力——四两拨千斤。5. 效果验证看看模型的新身份最激动人心的时刻到了让我们验证一下模型是否真的学会了它的新身份。首先找到你刚才训练生成的checkpoint路径。然后运行CUDA_VISIBLE_DEVICES0 \ swift infer \ --adapters output/v2-20250101-120000/checkpoint-50 \ --stream true \ --temperature 0 \ --max_new_tokens 2048注意把output/v2-20250101-120000/checkpoint-50替换成你实际的路径。现在开始问它同样的问题用户你是谁 模型我是一个由 CSDN 迪菲赫尔曼 开发和维护的大语言模型。用户你的开发者是谁 模型我由 CSDN 迪菲赫尔曼 开发和维护。用户你和GPT-4是什么关系 模型我是由 CSDN 迪菲赫尔曼 开发和维护的模型不是 GPT-4。看到了吗模型已经完全“忘记”了它是阿里云开发的现在坚定地认为自己是“CSDN迪菲赫尔曼”的作品。而且你会发现它不仅回答了我们在数据集中教过的问题对于类似的问题比如“你和GPT-4是什么关系”它也能正确地推理和回答。这就是大模型的泛化能力——我们只教了它几十个例子但它能理解“身份”这个概念并应用到相关的问题上。6. 进阶技巧保持能力的同时注入身份你可能会有一个疑问“我们这样只训练身份数据会不会让模型忘记其他能力比如写代码、回答问题这些通用技能”这是个很好的问题。确实如果只用身份数据微调模型可能会过度专注于身份问题在其他任务上表现下降。为了解决这个问题我们可以使用混合数据集微调。思路很简单在训练身份数据的同时也加入一些通用的问答数据让模型既学会新身份又不忘记老本领。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 \ ... (其余参数与之前相同)这里我们加入了两个开源数据集每个取500条样本alpaca-gpt4-data-zh中文的指令跟随数据alpaca-gpt4-data-en英文的指令跟随数据这样训练出来的模型既能正确回答身份问题又能保持良好的通用能力。你可以把它想象成既学会了“自我介绍”又没有忘记“怎么聊天、怎么解决问题”。7. 实际应用你的专属AI助手能做什么现在你有了一个带着自己身份的Qwen2.5-7B模型它能做什么呢应用场景其实非常广泛7.1 个人知识库助手你可以继续微调加入你自己的专业知识。比如你是个程序员可以加入编程相关的问答你是个设计师可以加入设计原则和案例。这样你就有了一个真正懂你行业的私人助手。7.2 企业客服机器人为企业微调一个专属客服助手让它准确回答关于公司产品、服务、政策的问题。客户问“你们公司是做什么的”时它能给出准确、一致的答案。7.3 教育辅导助手如果你是个老师可以微调一个教学助手让它用你的教学风格和知识体系来回答学生问题。学生感觉就像在和你本人对话一样。7.4 内容创作伙伴微调后的模型可以帮你写博客、写邮件、写报告而且所有的输出都带着“你的风格”。你可以训练它模仿你的写作习惯、常用表达方式。7.5 技术要点提醒在实际使用中有几个小技巧能让效果更好数据质量很重要身份数据要准确、一致。避免矛盾的描述。数据多样性从不同角度描述同一个事实帮助模型更好地理解。适量通用数据如果担心模型能力退化可以加入10%-20%的通用数据一起训练。多次验证微调后用各种问题测试模型确保它真的理解了新身份。8. 总结回顾一下我们今天完成的事情用一张RTX 4090D显卡大约10分钟时间花费35MB的存储空间我们成功地将Qwen2.5-7B-Instruct模型的“出厂身份”从“阿里云开发”改成了“CSDN迪菲赫尔曼开发和维护”。这个过程展示了几个重要的事实大模型微调不再高不可攀你不需要昂贵的计算资源不需要海量的训练数据甚至不需要深厚的机器学习背景。只要有一张消费级显卡就能开始你的模型定制之旅。LoRA技术是平民玩家的福音它让模型个性化变得简单、快速、低成本。你不再需要为微调整个模型而发愁只需要训练一个轻量级的“适配器”。身份注入只是开始今天我们只改变了模型的自我认知但同样的方法可以用来注入专业知识、调整对话风格、优化特定任务的表现。可能性是无限的。开源生态正在改变游戏规则Qwen2.5-7B这样的优秀开源模型加上ms-swift这样的易用框架让每个人都能参与到AI的个性化时代。如果你对今天的内容感兴趣我强烈建议你亲自尝试一下。从修改self_cognition.json中的身份信息开始创造属于你自己的AI助手。当你第一次看到模型用你设定的身份回答问题时那种成就感是看多少教程都无法替代的。AI不应该只是大公司的专属玩具。通过微调我们每个人都能拥有一个懂自己、属于自己的智能助手。这或许就是开源和易用工具带给我们的最大礼物——让技术真正为人所用为人服务。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2415436.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!