Qwen3.5 ファインチューニングガイド – Unsloth ドキュメンテーション
45日前原文(unsloth.ai)
概要
- 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によるファインチューニングは、速度・省メモリ・多機能性で先進的な選択肢