概要
- Qwen3.5 モデルファミリーが Unsloth でファインチューニング可能に
- Vision と テキスト 両方のファインチューニング対応
- VRAM使用量 削減と 学習速度 向上
- 多言語対応 や GGUFエクスポート もサポート
- MoEモデル や各種注意点も記載
Qwen3.5モデルのUnslothによるファインチューニング概要
- Qwen3.5ファミリー (0.8B, 2B, 4B, 9B, 27B, 35B‑A3B, 122B‑A10B)を Unsloth でファインチューニング可能
- Vision と テキスト の両方でファインチューニング対応
- Qwen3.5-35B-A3B(bf16 LoRA) は 74GB VRAM で動作
- Unsloth により 1.5倍速い学習、 FA2構成よりVRAM半減
- bf16 LoRAのVRAM消費例
- 0.8B:3GB
- 2B:5GB
- 4B:10GB
- 9B:22GB
- 27B:56GB
Google Colabノートブック・学習レシピ
- 0.8B/2B/4Bモデル は 無料Google Colabノートブック でbf16 LoRAファインチューニング可能
- 推論能力維持 には推論型例を75%以上混ぜることを推奨
- Full fine-tuning (FFT) も可能(VRAMは4倍必要)
- 201言語対応 の多言語ファインチューニング
モデルエクスポート・推論環境
- GGUF形式 でエクスポート可能(llama.cpp/Ollama/LM Studio等対応)
- vLLM にもエクスポート対応
- Colabやローカル環境 ではUnsloth最新版へアップデート推奨
- pip install --upgrade --force-reinstall --no-cache-dir unsloth unsloth_zoo
- transformers v5 必須(Unslothは自動でv5を利用、Colab除く)
カスタムカーネル・量子化・MoEモデル対応
- Qwen3.5 は Mamba Tritonカーネル を利用し、初回コンパイルに時間がかかる場合あり(特にT4 GPU)
- QLoRA(4bit)学習は非推奨 (MoE・Dense問わず、量子化誤差大)
- MoEモデル(35B, 122B, 397B) は bf16構成推奨
- MoE QLoRA 4bitはBitsandBytes制限で非推奨
- UnslothのMoEカーネル はデフォルト有効、 UNSLOTH_MOE_BACKEND で切替可能
- Router-layerファインチューニング はデフォルト無効(安定性重視)
マルチGPU・バッチサイズ調整・OOM対策
- Qwen3.5-122B-A10B(bf16 LoRA) は 256GB VRAM で動作
- マルチGPU 利用時は device_map = "balanced" 指定またはマルチGPUガイド参照
- OOM時 は per_device_train_batch_size=1 や max_seq_length短縮 で対処
Visionファインチューニング・マルチモーダル対応
- Qwen3.5 は Causal Language Model with Vision Encoder (統合型VLM)
- torchvision/pillow等 のVision依存パッケージ必須
- Vision/テキスト/Attention/MLP層 ごとにファインチューニング範囲を選択可能(デフォルト全ON)
- マルチイメージ学習 には専用ガイドあり
- 推論/デプロイ はllama.cpp, vLLM, Ollama, LM Studio, SGLang等に対応
モデル保存・エクスポート・Hugging Face連携
- GGUF形式 で直接保存・Hugging Faceへプッシュ可能
- 推論時に挙動悪化 した場合は チャットテンプレ/EOSトークン不一致 が主因(学習時と同じテンプレ必須)
- vLLM 0.16.0 はQwen3.5未サポート、 0.170以降 またはNightly版推奨
- 16bit保存 や LoRAアダプタのみ保存 も対応
主要Pythonコード例
import os
import torch
from unsloth import FastModel
model, tokenizer = FastModel.from_pretrained(
model_name = "unsloth/Qwen3.5-35B-A3B",
max_seq_length = 2048,
load_in_4bit = False, # MoE QLoRA非推奨、Dense 27BはOK
load_in_16bit = True, # bf16/16bit LoRAまたはFull Fine-tuning用
full_finetuning = False,
)
model.save_pretrained_gguf("directory", tokenizer, quantization_method = "q4_k_m")
model.save_pretrained_gguf("directory", tokenizer, quantization_method = "q8_0")
model.save_pretrained_gguf("directory", tokenizer, quantization_method = "f16")
model.push_to_hub_gguf("hf_username/directory", tokenizer, quantization_method = "q4_k_m")
model.push_to_hub_gguf("hf_username/directory", tokenizer, quantization_method = "q8_0")
model.save_pretrained_merged("finetuned_model", tokenizer, save_method = "merged_16bit")
# HuggingFaceにアップロードする場合
model.push_to_hub_merged("hf/model", tokenizer, save_method = "merged_16bit", token = "")
model.save_pretrained("finetuned_lora")
tokenizer.save_pretrained("finetuned_lora")
model.save_pretrained_merged("finetuned_model", tokenizer, save_method = "lora")
# HuggingFaceにアップロードする場合
model.push_to_hub_merged("hf/model", tokenizer, save_method = "lora", token = "")
参考リンク・追加情報
- 詳細な推論・デプロイガイド は公式ドキュメント参照
- Vision RL/GRPO 等の高度な学習もUnslothで対応
- 最終更新 :44分前(記事執筆時点)
Qwen3.5モデルのUnslothによるファインチューニングは、速度・省メモリ・多機能性で先進的な選択肢