Qwen3.5 是開源社區(qū)的香餑餑,Unsloth 第一時間跟進了完整的微調(diào)支持
我花了兩天研究了他們的文檔和 Colab 筆記本,整理出這份從零到一的微調(diào)教程
0.8B 到 122B 全尺寸覆蓋,文本、視覺、強化學(xué)習(xí)三條路線全打通
Qwen3.5 微調(diào)概覽
先說結(jié)論:Qwen3.5 + Unsloth 是目前性價比最高的開源模型微調(diào)方案。
核心優(yōu)勢:
訓(xùn)練速度比標(biāo)準(zhǔn) FA2快 1.5 倍
顯存占用減少 50%
支持 0.8B、2B、4B、9B、27B、35B-A3B、122B-A10B全系列
支持文本 SFT、視覺微調(diào)、強化學(xué)習(xí)(GRPO)三條路線
導(dǎo)出格式豐富:GGUF(Ollama)、vLLM、LoRA 適配器
支持201 種語言的多語言微調(diào)
各模型 bf16 LoRA 顯存需求:
模型
顯存
0.8B
3GB
2B
5GB
4B
10GB
9B
22GB
27B
56GB
35B-A3B(MoE)
74GB
![]()
Qwen3.5 bf16 LoRA 顯存需求
重要提醒:
??必須用 transformers v5,舊版不行
??不建議對 Qwen3.5 使用 QLoRA(4-bit)訓(xùn)練——量化差異高于正常水平
?? MoE 模型(35B-A3B / 122B-A10B)推薦用 bf16 LoRA,不要用 QLoRA
如果你不想寫一行代碼,Unsloth 新推出的開源 Web UI ——Unsloth Studio是最佳選擇。
安裝(MacOS / Linux / WSL):
curl -fsSL https://unsloth.ai/install.sh | sh
Windows PowerShell:
irm https://unsloth.ai/install.ps1 | iex
安裝很快,大約 1-2 分鐘。然后啟動:
unsloth studio -H 0.0.0.0 -p 8888
瀏覽器打開http://localhost:8888,首次登錄設(shè)置密碼后就能開始了。
![]()
Unsloth Studio 界面
在搜索欄搜索 Qwen3.5,選模型、選數(shù)據(jù)集、調(diào)參數(shù)、點開始訓(xùn)練——全程鼠標(biāo)操作:
![]()
配置訓(xùn)練參數(shù)
訓(xùn)練過程中可以實時監(jiān)控?fù)p失曲線:
![]()
訓(xùn)練過程監(jiān)控
訓(xùn)練完成后可以直接導(dǎo)出為 GGUF、safetensor 等格式:
![]()
導(dǎo)出模型 方式二:代碼微調(diào)(SFT 文本微調(diào))
對于想精細控制的同學(xué),下面是一個最小可運行的 SFT 代碼:
from unsloth import FastLanguageModel
import torch
from datasets import load_dataset
from trl import SFTTrainer, SFTConfig
max_seq_length = 2048# 先從小開始
# 加載數(shù)據(jù)集(替換成你自己的)
url = "https://huggingface.co/datasets/laion/OIG/resolve/main/unified_chip2.jsonl"
dataset = load_dataset("json", data_files={"train": url}, split="train")
# 加載模型
model, tokenizer = FastLanguageModel.from_pretrained(
model_name = "Qwen/Qwen3.5-27B",
max_seq_length = max_seq_length,
load_in_4bit = False, # 不建議用 QLoRA
load_in_16bit = True, # bf16 LoRA
full_finetuning = False,
)
# 添加 LoRA 適配器
model = FastLanguageModel.get_peft_model(
model,
r = 16,
target_modules = [
"q_proj", "k_proj", "v_proj", "o_proj",
"gate_proj", "up_proj", "down_proj",
],
lora_alpha = 16,
lora_dropout = 0,
bias = "none",
use_gradient_checkpointing = "unsloth", # 長上下文 + 更低顯存
random_state = 3407,
max_seq_length = max_seq_length,
)
# 訓(xùn)練
trainer = SFTTrainer(
model = model,
train_dataset = dataset,
tokenizer = tokenizer,
args = SFTConfig(
max_seq_length = max_seq_length,
per_device_train_batch_size = 1,
gradient_accumulation_steps = 4,
warmup_steps = 10,
max_steps = 100,
logging_steps = 1,
output_dir = "outputs_qwen35",
optim = "adamw_8bit",
seed = 3407,
dataset_num_proc = 1,
),
)trainer.train()
關(guān)鍵參數(shù)說明:
load_in_16bit = True:使用 bf16 LoRA,穩(wěn)定性最好use_gradient_checkpointing = "unsloth":Unsloth 專屬的檢查點機制,顯存占用更低r = 16:LoRA 秩,越大精度越高但越容易過擬合lora_alpha = 16:建議 alpha >= r
如果遇到 OOM,把per_device_train_batch_size降到 1,或者降低max_seq_length。
MoE 模型微調(diào)(35B / 122B)
對于Qwen3.5-35B-A3B或122B-A10B這樣的 MoE 模型:
from unsloth import FastModelmodel, tokenizer = FastModel.from_pretrained(
model_name = "unsloth/Qwen3.5-35B-A3B",
max_seq_length = 2048,
load_in_4bit = False,
load_in_16bit = True,
full_finetuning = False,
)
Unsloth 的 MoE 訓(xùn)練內(nèi)核默認(rèn)啟用,號稱比標(biāo)準(zhǔn)方案快 12 倍、顯存減少 35%、上下文長度提升 6 倍。默認(rèn)禁用路由層微調(diào)以保證穩(wěn)定性。
122B-A10B 的 bf16 LoRA 需要 256GB 顯存,多卡用戶加device_map = "balanced"。
視覺微調(diào)(Qwen3.5 VLM)
Qwen3.5 本身就是一個統(tǒng)一的視覺語言模型,所以視覺微調(diào)非常自然:
from unsloth import FastVisionModel
model, tokenizer = FastVisionModel.from_pretrained(
"unsloth/Qwen3.5-4B",
load_in_4bit = False,
use_gradient_checkpointing = "unsloth",
)model = FastVisionModel.get_peft_model(
model,
finetune_vision_layers = True, # 微調(diào)視覺層
finetune_language_layers = True, # 微調(diào)語言層
finetune_attention_modules = True, # 微調(diào)注意力層
finetune_mlp_modules = True, # 微調(diào) MLP 層
r = 16,
lora_alpha = 16,
lora_dropout = 0,
bias = "none",
random_state = 3407,
target_modules = "all-linear",
modules_to_save = ["lm_head", "embed_tokens"],
)
亮點在于可以精細控制微調(diào)哪些部分——你可以選擇只微調(diào)視覺層、只微調(diào)語言層,或者只微調(diào)注意力 / MLP 層,組合隨意。
想在免費 T4 GPU 上跑?用官方 Colab 筆記本:
視覺微調(diào):https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/Qwen3_5_(4B)_Vision.ipynb
即使 vLLM 暫時還不支持 Qwen3.5,你仍然可以通過禁用 fast inference 來做 GRPO:
from unsloth import FastLanguageModelmodel, tokenizer = FastLanguageModel.from_pretrained(
model_name = "unsloth/Qwen3.5-4B",
fast_inference = False, # 關(guān)鍵:禁用 fast vLLM 推理
)
如果你想保留模型的推理能力,建議訓(xùn)練數(shù)據(jù)中至少保留 75% 的推理風(fēng)格示例,其余可以用直接答案。
GGUF 量化基準(zhǔn)測試——選什么量化最靠譜?
Unsloth 做了超過150 次 KL 散度基準(zhǔn)測試,總計 9TB 的 GGUF,得出了幾條關(guān)鍵結(jié)論,這里幫你劃重點:
![]()
KLD 基準(zhǔn)測試結(jié)果
量化選擇建議:
別碰 MXFP4——在很多張量上表現(xiàn)都很差,已從 Q2_K_XL、Q3_K_XL、Q4_K_XL 中退役。Q4_K 在幾乎所有場景下都比 MXFP4 好
ssm_out 層別量化——Mamba 層(ssm_out)量化后 KLD 飆升,磁盤空間卻省不了多少
3-bit 是甜點區(qū)——ffn_up_exps 和 ffn_gate_exps 通常可以量化到 3 位(iq3_xxs 附近),2 位就開始明顯降級了
Imatrix 確實有效——能降低 KLD 和 PPL,但推理速度慢 5-10%。對低位數(shù)量化幫助更大
attn_ 層高度敏感 *——對于混合架構(gòu),注意力層保持高精度很重要
另外一個很重要的發(fā)現(xiàn):困惑度(PPL)和 KL 散度可能具有誤導(dǎo)性。Unsloth Dynamic IQ2_XXS 在真實評估(LiveCodeBench v6、MMLU Pro)上表現(xiàn)優(yōu)于 AesSedai 的 IQ3_S,盡管體積小 11GB,但后者的 PPL 和 KLD 指標(biāo)反而更好看。所以千萬不要只看 PPL 就下結(jié)論。
![]()
GGUF 量化選擇五大關(guān)鍵原則 導(dǎo)出與部署
微調(diào)完成后,導(dǎo)出到各種格式都很方便:
導(dǎo)出為 GGUF(給 Ollama / llama.cpp 用):
model.save_pretrained_gguf("directory", tokenizer, quantization_method="q4_k_m")
model.save_pretrained_gguf("directory", tokenizer, quantization_method="q8_0")
導(dǎo)出為 16-bit(給 vLLM 用):
model.save_pretrained_merged("finetuned_model", tokenizer, save_method="merged_16bit")
只保存 LoRA 適配器:
model.save_pretrained("finetuned_lora")
tokenizer.save_pretrained("finetuned_lora")
推到 HuggingFace:
model.push_to_hub_gguf("hf_username/model", tokenizer, quantization_method="q4_k_m")
??注意:vLLM 0.16.0 不支持 Qwen3.5,需要等 0.170 或用 Nightly 版本。如果導(dǎo)出模型在其他運行時效果變差,大概率是聊天模板 / EOS 令牌用錯了——必須和訓(xùn)練時保持一致。
總結(jié)
整理一下整個微調(diào)路徑:
路線
適合誰
顯存門檻
Unsloth Studio
不想寫代碼
取決于模型
?????
SFT 代碼微調(diào)
需要精細控制
3GB(0.8B)起
?????
視覺微調(diào)
做多模態(tài)應(yīng)用
10GB(4B)起
????
GRPO 強化學(xué)習(xí)
提升推理能力
10GB 起
????
MoE 微調(diào)
要大模型能力
74GB 起
???
![]()
Qwen3.5 微調(diào)路徑一覽
Unsloth 在 Qwen3.5 上的支持可以說是教科書級別的——從 Studio 無代碼方案到 Colab 免費筆記本,再到 GGUF 量化基準(zhǔn)的深度研究,生態(tài)做得相當(dāng)完整。唯一的坑是 MoE 模型對硬件要求較高,以及 transformers v5 的硬依賴。
Unsloth 微調(diào)文檔:https://unsloth.ai/docs/zh/mo-xing/qwen3.5/fine-tune
GGUF 基準(zhǔn)測試:https://unsloth.ai/docs/zh/mo-xing/qwen3.5/gguf-benchmarks
Colab 視覺微調(diào)筆記本:https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/Qwen3_5_(4B)_Vision.ipynb
Unsloth GitHub:https://github.com/unslothai/unsloth
.5
制作不易,如果這篇文章覺得對你有用,可否點個關(guān)注。給我個三連擊:點贊、轉(zhuǎn)發(fā)和在看。若可以再給我加個,謝謝你看我的文章,我們下篇再見!
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺“網(wǎng)易號”用戶上傳并發(fā)布,本平臺僅提供信息存儲服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.