Qwen3.5-4B微调实战:Unsloth高效训练方案
上周帮一个朋友看他的微调项目他想在医疗数据上训个问答模型。聊了半天发现他用的全参数微调16GB显存直接跑爆batch_size设为1还溢出了。其实这杀鸡用牛刀4B的模型用LoRA就够了16GB显存绑绑有余。今天就把Qwen3.5-4B的完整微调流程整理出来基于Unsloth框架国内使用魔塔下载模型速度比HuggingFace快很多。硬件需求先说显存问题很多人卡在这一步。根据Unsloth官方数据不同量化级别对显存的要求不一样4-bit量化仅需5.5GB显存RTX 3060级别的卡都能跑6-bit量化7GB显存RTX 4060及以上8-bit量化10GB显存RTX 4070及以上BF16精度14GB显存需要专业卡或高端游戏卡Qwen3.5-4B原生支持262K上下文通过YaRN技术可以扩展到1M。这个长度对于大多数垂直场景绑绑够用了。Qwen3.5-4B有个特性值得注意默认启用思考模式Thinking Mode会在最终回复前生成推理过程。如果想要即时响应可以在调用时禁用思考模式。环境配置使用魔塔下载模型先创建conda环境建议Python 3.10或3.11。# 创建独立环境 conda create -n unsloth python3.10 conda activate unsloth # 安装Unsloth pip install -U pip uv uv venv uv pip install unsloth --torch-backendauto安装完成后接下来下载模型。国内推荐使用魔塔ModelScope速度比HuggingFace快很多。# 安装魔塔 pip install modelscope# 方法一使用魔塔下载国内推荐 from modelscope import snapshot_download model_dir snapshot_download(Qwen/Qwen3.5-4B, cache_dir./models) # 方法二使用HuggingFace # from transformers import AutoModelForCausalLM, AutoTokenizer # model_name Qwen/Qwen3.5-4B # model AutoModelForCausalLM.from_pretrained(model_name) # tokenizer AutoTokenizer.from_pretrained(model_name)魔塔下载的模型保存在本地后Unsloth可以直接加载from unsloth import FastLanguageModel # 加载本地模型 model, tokenizer FastLanguageModel.from_pretrained( model_name ./models/Qwen/Qwen3.5-4B, max_seq_length 2048, load_in_4bit True, # 4bit量化显存友好 )如果需要从HuggingFace下载可以设置环境变量HF_ENDPOINThttps://hf-mirror.com可以加速下载。数据准备对话格式详解微调效果好不好七分靠数据。Qwen3.5支持ChatML格式结构比之前的版本更清晰。{ conversations: [ {from: human, value: 帮我写一个Python快速排序}, {from: gpt, value: def quick_sort(arr):\n if len(arr) 1:\n return arr\n pivot arr[len(arr) // 2]\n left [x for x in arr if x pivot]\n middle [x for x in arr if x pivot]\n right [x for x in arr if x pivot]\n return quick_sort(left) middle quick_sort(right)} ] }数据质量的几个要点数量不是关键4B模型1000-5000条高质量样本足够关键在于质量回答要完整避免截断的回答这会让模型学到不完整的模式格式要统一中文标点、换行符要规范不一致会影响学习领域相关性如果做医疗问答至少70%的数据应该来自医疗领域训练配置LoRA参数选择LoRA的配置其实不复杂主要就几个参数。from unsloth import FastLanguageModel from trl import SFTTrainer from transformers import TrainingArguments # 加载模型 model, tokenizer FastLanguageModel.from_pretrained( model_name ./models/Qwen/Qwen3.5-4B, max_seq_length 2048, load_in_4bit True, ) # 配置LoRA适配器 model FastLanguageModel.get_peft_model( model, r 16, # LoRA rank16-32适合4B模型 target_modules [q_proj, k_proj, v_proj, o_proj, gate_proj, up_proj, down_proj], lora_alpha 16, lora_dropout 0.05, bias none, use_gradient_checkpointing unsloth, packing True, ) # 开始训练 trainer SFTTrainer( model model, tokenizer tokenizer, train_dataset dataset, dataset_text_field text, max_seq_length 2048, dataset_num_proc 4, args TrainingArguments( per_device_train_batch_size 4, gradient_accumulation_steps 4, warmup_steps 10, num_train_epochs 3, learning_rate 2e-4, fp16 not torch.cuda.is_bf16_supported(), bf16 torch.cuda.is_bf16_supported(), logging_steps 10, optim adamw_8bit, weight_decay 0.01, lr_scheduler_type linear, output_dir outputs, ), ) trainer.train()参数怎么调learning_rate2e-4是经验值效果不好再微调num_train_epochs3是稳妥选择数据少可以加到5r值16训练快32表达能力更强4B模型没必要用64per_device_train_batch_size根据显存调整不够就降低这个值模型合并与推理训练完成后需要把LoRA适配器合并回原模型# 合并LoRA权重 model model.merge_and_unload() # 保存模型 model.save_pretrained(final_model) tokenizer.save_pretrained(final_model)推理时注意Qwen3.5的采样参数from transformers import AutoModelForCausalLM, AutoTokenizer model AutoModelForCausalLM.from_pretrained(final_model) tokenizer AutoTokenizer.from_pretrained(final_model) messages [{role: user, content: 你的问题}] text tokenizer.apply_chat_template(messages, tokenizeFalse, add_generation_promptTrue) inputs tokenizer(text, return_tensorspt).to(cuda) # 通用任务推荐参数 outputs model.generate( **inputs, max_new_tokens 1024, temperature 0.7, # 非思考模式 top_p 0.8, presence_penalty 1.5, ) result tokenizer.decode(outputs[0], skip_special_tokensTrue) print(result) # 如果想要禁用思考模式直接回答 outputs model.generate( **inputs, max_new_tokens 1024, temperature 0.7, top_p 0.8, extra_body {chat_template_kwargs: {enable_thinking: False}} )踩坑记录跑了这么多次总结几个容易出问题的点显存不够先降序列长度别急着降batch_sizemax_seq_length从2048降到1024能省一大截显存loss突然飙升大概率学习率太高检查数据有没有脏数据推理回答太短尝试增大max_new_tokens或者调整chat_template合并后模型很大LoRA适配器单独保存只有几十MB方便分享和迭代学AI大模型的正确顺序千万不要搞错了2026年AI风口已来各行各业的AI渗透肉眼可见超多公司要么转型做AI相关产品要么高薪挖AI技术人才机遇直接摆在眼前有往AI方向发展或者本身有后端编程基础的朋友直接冲AI大模型应用开发转岗超合适就算暂时不打算转岗了解大模型、RAG、Prompt、Agent这些热门概念能上手做简单项目也绝对是求职加分王给大家整理了超全最新的AI大模型应用开发学习清单和资料手把手帮你快速入门学习路线:✅大模型基础认知—大模型核心原理、发展历程、主流模型GPT、文心一言等特点解析✅核心技术模块—RAG检索增强生成、Prompt工程实战、Agent智能体开发逻辑✅开发基础能力—Python进阶、API接口调用、大模型开发框架LangChain等实操✅应用场景开发—智能问答系统、企业知识库、AIGC内容生成工具、行业定制化大模型应用✅项目落地流程—需求拆解、技术选型、模型调优、测试上线、运维迭代✅面试求职冲刺—岗位JD解析、简历AI项目包装、高频面试题汇总、模拟面经以上6大模块看似清晰好上手实则每个部分都有扎实的核心内容需要吃透我把大模型的学习全流程已经整理好了抓住AI时代风口轻松解锁职业新可能希望大家都能把握机遇实现薪资/职业跃迁这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】