Qwen3.5 是開源社區的香餑餑,Unsloth 第一時間跟進了完整的微調支持
我花了兩天研究了他們的文檔和 Colab 筆記本,整理出這份從零到一的微調教程
0.8B 到 122B 全尺寸覆蓋,文本、視覺、強化學習三條路線全打通
Qwen3.5 微調概覽
先說結論:Qwen3.5 + Unsloth 是目前性價比最高的開源模型微調方案。
核心優勢:
訓練速度比標準 FA2快 1.5 倍
顯存占用減少 50%
支持 0.8B、2B、4B、9B、27B、35B-A3B、122B-A10B全系列
支持文本 SFT、視覺微調、強化學習(GRPO)三條路線
導出格式豐富:GGUF(Ollama)、vLLM、LoRA 適配器
支持201 種語言的多語言微調
各模型 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)訓練——量化差異高于正常水平
?? 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,首次登錄設置密碼后就能開始了。
![]()
Unsloth Studio 界面
在搜索欄搜索 Qwen3.5,選模型、選數據集、調參數、點開始訓練——全程鼠標操作:
![]()
配置訓練參數
訓練過程中可以實時監控損失曲線:
![]()
訓練過程監控
訓練完成后可以直接導出為 GGUF、safetensor 等格式:
![]()
導出模型 方式二:代碼微調(SFT 文本微調)
對于想精細控制的同學,下面是一個最小可運行的 SFT 代碼:
from unsloth import FastLanguageModel
import torch
from datasets import load_dataset
from trl import SFTTrainer, SFTConfig
max_seq_length = 2048# 先從小開始
# 加載數據集(替換成你自己的)
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,
)
# 訓練
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()
關鍵參數說明:
load_in_16bit = True:使用 bf16 LoRA,穩定性最好use_gradient_checkpointing = "unsloth":Unsloth 專屬的檢查點機制,顯存占用更低r = 16:LoRA 秩,越大精度越高但越容易過擬合lora_alpha = 16:建議 alpha >= r
如果遇到 OOM,把per_device_train_batch_size降到 1,或者降低max_seq_length。
MoE 模型微調(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 訓練內核默認啟用,號稱比標準方案快 12 倍、顯存減少 35%、上下文長度提升 6 倍。默認禁用路由層微調以保證穩定性。
122B-A10B 的 bf16 LoRA 需要 256GB 顯存,多卡用戶加device_map = "balanced"。
視覺微調(Qwen3.5 VLM)
Qwen3.5 本身就是一個統一的視覺語言模型,所以視覺微調非常自然:
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, # 微調視覺層
finetune_language_layers = True, # 微調語言層
finetune_attention_modules = True, # 微調注意力層
finetune_mlp_modules = True, # 微調 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"],
)
亮點在于可以精細控制微調哪些部分——你可以選擇只微調視覺層、只微調語言層,或者只微調注意力 / MLP 層,組合隨意。
想在免費 T4 GPU 上跑?用官方 Colab 筆記本:
視覺微調: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, # 關鍵:禁用 fast vLLM 推理
)
如果你想保留模型的推理能力,建議訓練數據中至少保留 75% 的推理風格示例,其余可以用直接答案。
GGUF 量化基準測試——選什么量化最靠譜?
Unsloth 做了超過150 次 KL 散度基準測試,總計 9TB 的 GGUF,得出了幾條關鍵結論,這里幫你劃重點:
![]()
KLD 基準測試結果
量化選擇建議:
別碰 MXFP4——在很多張量上表現都很差,已從 Q2_K_XL、Q3_K_XL、Q4_K_XL 中退役。Q4_K 在幾乎所有場景下都比 MXFP4 好
ssm_out 層別量化——Mamba 層(ssm_out)量化后 KLD 飆升,磁盤空間卻省不了多少
3-bit 是甜點區——ffn_up_exps 和 ffn_gate_exps 通常可以量化到 3 位(iq3_xxs 附近),2 位就開始明顯降級了
Imatrix 確實有效——能降低 KLD 和 PPL,但推理速度慢 5-10%。對低位數量化幫助更大
attn_ 層高度敏感 *——對于混合架構,注意力層保持高精度很重要
另外一個很重要的發現:困惑度(PPL)和 KL 散度可能具有誤導性。Unsloth Dynamic IQ2_XXS 在真實評估(LiveCodeBench v6、MMLU Pro)上表現優于 AesSedai 的 IQ3_S,盡管體積小 11GB,但后者的 PPL 和 KLD 指標反而更好看。所以千萬不要只看 PPL 就下結論。
![]()
GGUF 量化選擇五大關鍵原則 導出與部署
微調完成后,導出到各種格式都很方便:
導出為 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")
導出為 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 版本。如果導出模型在其他運行時效果變差,大概率是聊天模板 / EOS 令牌用錯了——必須和訓練時保持一致。
總結
整理一下整個微調路徑:
路線
適合誰
顯存門檻
Unsloth Studio
不想寫代碼
取決于模型
?????
SFT 代碼微調
需要精細控制
3GB(0.8B)起
?????
視覺微調
做多模態應用
10GB(4B)起
????
GRPO 強化學習
提升推理能力
10GB 起
????
MoE 微調
要大模型能力
74GB 起
???
![]()
Qwen3.5 微調路徑一覽
Unsloth 在 Qwen3.5 上的支持可以說是教科書級別的——從 Studio 無代碼方案到 Colab 免費筆記本,再到 GGUF 量化基準的深度研究,生態做得相當完整。唯一的坑是 MoE 模型對硬件要求較高,以及 transformers v5 的硬依賴。
Unsloth 微調文檔:https://unsloth.ai/docs/zh/mo-xing/qwen3.5/fine-tune
GGUF 基準測試:https://unsloth.ai/docs/zh/mo-xing/qwen3.5/gguf-benchmarks
Colab 視覺微調筆記本:https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/Qwen3_5_(4B)_Vision.ipynb
Unsloth GitHub:https://github.com/unslothai/unsloth
.5
制作不易,如果這篇文章覺得對你有用,可否點個關注。給我個三連擊:點贊、轉發和在看。若可以再給我加個,謝謝你看我的文章,我們下篇再見!
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
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.