上級 14 分Fine-tuning

Unsloth : 大きなGPU上でLLMをファインチューニングします public

端的な回答

Unslothは、LoRAとQLoRAのファインチューニングで負荷の高い処理を書き換える、オープンソースのPythonライブラリです(コアのライセンスはApache 2.0、GitHubのスター数は76,000を超えています)。開発元によると、VRAM使用量を70%削減しつつ、最大2倍の速度を実現します。ドキュメントでは、80億パラメータのモデルを4ビットQLoRAでファインチューニングする場合、最低6 GBが必要とされているため、12 GBのグラフィックカードで十分です。その後、GGUF形式でエクスポートすれば、Ollamaで実行できます。

Unslothは、一般向けのグラフィックカード上でオープンモデルのファインチューニングを可能にします。他の環境と同じ手法ですが、計算カーネルを再実装することで、必要な時間とメモリを削減しています。70億または80億パラメータのモデルは、12 GBのカードで調整でき、その結果はGGUF形式でエクスポートしてOllamaで実行できます。しかし、すべてに先立つ根本的な問いが残ります。本当にファインチューニングが必要ですか?

著者 Mohamed Meguedmi·更新 2026-09-29·Windows・macOS・Linuxでテスト済み

#何かをインストールする前に答えを出しておくべき問い

はい、一般向けのGPUでも、70億または80億パラメータのモデルをファインチューニングできます。Unslothのドキュメントでは、4ビットQLoRAの最低要件はVRAM 5〜6 GBとされているため、12 GBのGPUなら、コンテキストやバッチ用の余裕を残して利用できます。UnslothはLoRAおよびQLoRAのファインチューニングで負荷の高い処理を書き直しており、開発元によると、最大2倍の速度と70%少ないVRAM使用量を実現します。ただし、この数値が当てはまるのは一部のノートブックのみです。学習結果はGGUF形式でエクスポートして、Ollamaで実行できます。ただし、インストールする前に考えるべき本質的な問いがあります。ファインチューニングで変わるのはモデルの振る舞い(口調、形式、文体)であり、知識を最新にするものではありません。モデルに自分のドキュメントの内容を把握させたいなら、まず文書検索の仕組みを構築してください。また、データセットの準備には学習そのものより時間がかかることも見込んでください。

ファインチューニングはモデルの行動を変えるもので、ドキュメント検索は回答の際に知っていることを変えるものです。これらを混同すると、数週間の時間を失います。

やりたいことと、それに対応するツール
あなたのニーズ正しい回答
ドキュメントに基づいた回答RAGチェーン:ドキュメントは毎日変更される可能性があります
一貫した出力形式ファインチューニング、または制約付き生成
自社らしい語り口、業務に合った文体Fine-tuning
専門分野の語彙十分な例を使用したファインチューニング
頻繁に変化する情報常に RAG を選ぶ:料金情報のために再学習する意味はありません
より短いまたはより長い応答まずはシステムプロンプトを使う。このためにモデルを学習させないこと。
i
率直な答えが「モデルに自分たちのドキュメントを知っていてほしい」なら
ここでいったん立ち止まり、まず文書検索の仕組みを構築してください。ファイルを追加すれば更新でき、出典も示せます。ファインチューニングではこうはいきません。一方、Unslothのガイドは別の見方を示しています。それによれば、ファインチューニングは知識を取り込み、RAGが行うことをすべて再現できますが、その逆は成り立ちません。原理的にはそのとおりです。ただし、実用面でRAGを選ぶ理由は別にあり、更新のしやすさ、追跡可能性、変更のたびに再学習するコストにあります。

#Unslothが実際に変更する点

ローカルAIキット

お使いのマシンで、プライベートかつ無料のChatGPTを1時間で構築 — LM Studio、Ollama、Open WebUI、ご自身のドキュメント、クラウド不要。

  • 永久に利用できるオンラインスペース
  • PDF + ファイル
  • 30日間返金対応

この手法は新しいものではありません。モデルの重みを凍結し、各重みに追加した細い行列だけを学習します。Unsloth のガイドによると、学習するのはパラメータの約 1%です。LoRA は元のモデルを 16 ビットで保持し、QLoRA はそれを 4 ビットに量子化することで、メモリ使用量を 75%削減します。これは標準的な手法であり、Unsloth 独自のものではありません。

このライブラリが提供するものは、計算カーネルを重い処理段階用に書き直した実装です。プロジェクトは3つの形態で存在します。ネイティブアプリケーションであるUnsloth Desktop、WebインターフェースであるUnsloth Studio、そして本記事で取り上げているコード駆動型のUnsloth Coreです。ライセンスは二重で、コア部分はApache 2.0、Studioインターフェースなどの一部のオプションコンポーネントはAGPL-3.0です。言語モデル、拡散モデル、音声合成モデル、埋め込みモデルの学習を、精度の劣化なしに2倍速く、VRAM使用量を70%削減できると主張しています。エキスパート混合アーキテクチャ(MoE)では、公開されている性能向上はさらに大きく、一部の最新モデルでは最大12倍速く、VRAMを35%以上節約できるとされています。ただし、これらはすべてベンダーが提示する数値であり、最良のケースを示しています。README自体も、「2倍、70%」という数値は特定のノートブックにのみ適用されることを示しています。

ノートブック別にUnslothが公表する性能向上(開発元の数値)
Notebook公称速度公表されたVRAM
Llama 3.1 (8B) Alpaca2倍速70%削減
gpt-oss (20B)2倍速70%削減
Qwen3.5 (4B)、ビジョン1.5倍速60%の削減
Gemma 4 (E2B)、ビジョン1.5倍速50%の削減
Orpheus-TTS (3B)1.5倍速50%の削減
embeddinggemma (300M)2倍速20%削減

#どのモデルにどのカードを使うか

Unsloth が公表しているファインチューニングに必要な最小 VRAM 容量(GB)
モデルサイズQLoRA (4ビット)LoRA (16ビット)一般向けGPUでの解釈
30億3,58QLoRA なら、比較的新しい GPU であればどれでも快適に動作
70億5198GBでのQLoRA;16ビットLoRAは24GBのGPUが必要です
8B6228 GB以上でQLoRAが可能。12 GBなら余裕があります
140億8,53312GBでのQLoRA;24GBのGPUでは16ビットLoRAは実現できません
270億226424 GBでQLoRA、余裕なし;16ビットLoRAは単一カードでは不可能
320億2676QLoRAでも24 GBを超えます
700 億41164一般向けグラフィックカード1枚では対応できない

ドキュメントでは、これらの数値は必要量の最低限を示すものであり、モデルによってはさらに多く必要になると明記しています。また、メモリがいっぱいになるよくある原因としてバッチサイズが大きすぎることを挙げ、1、2、または3に下げるよう示しています。最初の試行では、コンテキスト長を2048にすることを推奨しています。

Unslothのドキュメントに記載されている対応ハードウェア
プラットフォームドキュメントに記載されている内容
NVIDIA、Unsloth Core で動作Linux と Windows。Compute Capability は最低7.0(V100、T4、RTX 20 シリーズ以降、A100、H100)で、Blackwell と DGX Spark も対象です。GTX 1070 と1080でも動作しますが、速度は遅くなります。
AMDおよびIntel専用のガイドがあります。これらのGPUでは、CoreでもStudioでも学習が動作します。
MacUnsloth Studio はトレーニング、MLX、および GGUF の推論をサポートしています(macOS 12 以降)。Core に関しては、Apple シリコン(MLX)のサポートは「準備中」と表示されています。
GPUなしStudioはGGUFモデルによるチャットやデータの準備に使用できますが、トレーニングには対応していません。
複数のGPUAccelerateおよびDeepSpeed (FSDP、DDP) でサポートされ、手動設定が必要です。device_map="balanced" は、モデルが大きすぎる場合、複数のGPUに分散して配置します。
i
最新のページを確認してください
この分野は急速に変化しています。READMEでは現在、Windows、WSL、LinuxでのAMD GPUを使った学習と、デスクトップアプリが告知されています。ハードウェアを購入する前に、最新のドキュメントを確認してください。
!
Studioをネットワークに公開する場合:サーバー側ツールが有効
UnslothのREADMEは、Studioのサーバー側ツールがデフォルトで有効になっていると警告しています。インターフェースを公開する場合(--secure、ローカル以外のホスト、LANアクセス)は管理者パスワードが必要で、--disable-toolsを使うとこれらのツールが無効になります。公開する必要が生じるまでは、127.0.0.1にバインドしたままにしてください。

#本当の作業はデータセット作り

ファインチューニングはライブラリの問題で失敗することはありません。データの問題で失敗します。

フォーマット
多くの場合、質問と回答の2列からなるデータセットを、モデルが想定する会話形式に合わせて用意します。このガイドでは、Instructモデルから始めることを推奨しています。会話テンプレート(ChatML、ShareGPT)をそのまま利用でき、ベースモデルよりも少ないデータで済むためです。量よりも一貫性が重要です。
量
Unslothのガイドでは、最低でも100行、より良い結果を得るには1,000行を超える量を推奨しています。トーンや形式は少数の例でも変えられますが、実際の業務に即した振る舞いを身につけさせるには、互いに一貫した例がさらに多く必要です。
品質
モデルは提示された内容を模倣します。これには誤りも含まれます。データに存在する系統的な欠陥は、モデルにも系統的な欠陥として反映されます。
検証用データセット
学習時にモデルに一切見せない例です。これらがなければ、学習と単なる丸暗記を区別することはできません。
コードなし
Unsloth Studio は、PDF、CSV、または DOCX を視覚的なフローでデータセットに変換する Data Recipes を提供しています。完全な構築を開始する前に、事前にプレビューが可能です。
!
過学習は成功に見える
Unslothのガイドは、損失が0まで下がったら過学習の可能性があるため、検証結果を確認する必要がある、と一言で説明しています。同ガイドによれば、損失が0.5〜1.0なら多くの場合は良い兆候ですが、データセットとタスクによって異なります。データを丸暗記したモデルは、テスト用の質問には完璧に答える一方、それ以外のすべてには以前よりうまく答えられなくなります。データの20%をテスト用に確保し、過学習を抑えるために1〜3エポックを目安にしてください。また、学習曲線よりも検証用データセットでの結果を注視してください。

#モデルアダプタから利用可能なモデルへの変換

手順は3段階です。4ビットのモデルを読み込み、公式ノートブックのいずれかを使って学習させ、その後エクスポートします。最初のコードブロックではモデルを読み込み、LoRAアダプターを追加します。実際の学習にはUnslothのノートブックのいずれかを使います。このガイドでは、そのノートブックをローカル環境にコピーすることを勧めています。

Unsloth Coreで4ビットモデルをロードする
from unsloth import FastLanguageModel

model, tokenizer = FastLanguageModel.from_pretrained(
    model_name="unsloth/Qwen3-8B-unsloth-bnb-4bit",  # quantification dynamique 4 bits d'Unsloth
    max_seq_length=2048,
    load_in_4bit=True,
)
model = FastLanguageModel.get_peft_model(model, r=16, lora_alpha=16)

名前の接尾辞が重要です。ガイドによると、名前がunsloth-bnb-4bitで終わるモデルは、Unslothの動的4ビット量子化版です。標準のBitsAndBytes量子化よりもVRAMを少し多く消費しますが、精度は大幅に高くなります。名前が単にbnb-4bitで終わる場合は、標準版を指します。また、ガイドでは、学習とモデルの提供に同じ精度を使うことが望ましいとしています。つまり、4ビットで提供するなら、学習も4ビットで行うということです。

公式ガイドの既定の設定
パラメータガイドでの設定値知っておくべきこと
per_device_train_batch_size2より大きなモデルはGPUの使用効率が高く、訓練速度はフィルムの詰まりによって遅くなるため、gradient_accumulation_steps を優先してください
gradient_accumulation_steps4追加のメモリを必要とせず、より大きなバッチをシミュレート
max_steps60短時間の試行用の値。本格的な学習では、num_train_epochsに置き換え、値を1〜3に設定する
learning_rate2e-4値を低くすると、調整はゆっくり進み、より精密になります。1e-4、5e-5、2e-5を試す
max_seq_length2048テストに推奨される長さです。「余裕を持たせるため」に値を大きくすると、データに存在しない長さのシーケンス用にメモリを確保してしまいます。まず、実際のサンプルの長さを測定してください。
  1. 01
    トレーニング
    結果として、Unslothの例では約100MBのLoRAアダプタが生成されます。これは完全なモデルではありません。
  2. 02
    評価
    検証用データセットを使い、元のモデルとも比較して評価します。「より良い」ことは、思い込むのではなく実証する必要があります。ガイドでは、自動評価ツールがご自身の評価基準を適切に反映しない場合があると指摘しています。
  3. 03
    統合するか、別に保管するか
    アダプタは別ファイルのまま保持して差し替えることも、重みに統合することもできます。統合する場合は、model.save_pretrained_mergedでsave_method="merged_16bit"を指定します。
  4. 04
    GGUFにエクスポートし、量子化を行う
    model.save_pretrained_ggufは、q4_k_m、q8_0、f16から選んだ形式でファイルを作成します。これにより、作成したファイルをOllamaやllama.cppで、一般的なハードウェア上で実行できるようになります。
トレーニング済みモデルをGGUF形式でエクスポート(同じセッション内)
model.save_pretrained_gguf(
    "mon-modele-q4", tokenizer, quantization_method="q4_k_m"
)
# puis, avec le Modelfile fourni : ollama create mon-modele -f Modelfile
!
エクスポートしたモデルがOllamaででたらめな回答を返す
Unslothのドキュメントでも説明されている、よくあるケースです。モデルはUnslothでは正常に動作するのに、エクスポートすると意味不明な文章を出力したり、生成が終わらなくなったり、同じ内容を繰り返したりします。最も一般的な原因は、学習時とは異なる会話テンプレートを使っていることです。学習時と推論時には同じテンプレートと正しいシーケンス終了トークンを使い、エンジンが開始トークンを余分に追加していないか確認する必要があります。ドキュメントでは、Unslothがファインチューニング時に使ったテンプレートを組み込んだOllamaのModelfileを自動的に作成すると明記されています。

#よくある落とし穴

気づかないままベースモデルから始める
このガイドではInstructモデルを推奨しています。会話テンプレートに対応しており、必要なデータも少なくて済むためです。ベースモデルには異なる形式(Alpaca、Vicuna)と、より多くの例が必要です。
会話テンプレートを忘れる
モデルが期待するフォーマットとは異なるフォーマットで例を提供すると、技術的には成功したが実用的には無意味なトレーニングになります。
トレーニングデータ上で評価する
この間違いを犯すと、華々しい結果を発表しながら、実際には期待外れのモデルを提供することになります。
文書検索の代わりになると思い込む
モデルに学習させた内容は、手元の情報が変わった時点で古くなります。また、モデルは出典を示しません。変化する事実を扱う場合は、ドキュメント検索のほうが確実です。
学習例のデータクリーニングを軽視する
データセット内のほぼ同一の重複データは、学習をその特定のケースに偏らせますが、追跡している指標にはその兆候が現れません。
複数の設定を一度に変更
学習率、アダプタのランク、シーケンス長を同じ実験で変更すると、観察された変化がどのパラメータによって引き起こされたかを判断できません。

#具体的なユースケース

一貫したトーンのカスタマーサポート
実際のやり取りで調整したモデルは、各プロンプトで文体の指示を繰り返さなくても、ブランドらしい語り口で回答します。
厳密なフォーマットでの抽出
入力と出力の例を使ってファインチューニングすると、プロンプトだけの場合よりも確実に出力形式を固定できます。結果を後続のシステムに渡す前に役立ちます。

これらのケースに共通するのは、どれも測定できるという点です。学習を始める前に、漠然とした改善の印象ではなく、例えば「検証用データセットの出力の少なくとも95%がJSON形式に従っている」のように、検証可能な一文で成功基準を定めてください。結果が費やした時間に見合うかを判断するのは、直感ではなく、この基準です。

#カードの価格だけではわからない実際のコスト

グラフィックカードは、必要な費用や作業の一項目にすぎません。一貫性のあるサンプルを収集して整え、モデルが一度も目にしない評価用データセットを作り、各バージョンを元のモデルと比較する作業は、学習そのものよりも負担が大きいことがよくあります。Unslothのガイドでは、その学習を60ステップの試行で例示しています。

そのため、Unslothで学習がどれほど速くなっても、プロジェクトの所要時間は期待するほど短くなりません。技術的なボトルネックは解消しても、データに関する作業はなくならないからです。

→
最初の試行にかかる時間を計測する
Unsloth のガイドでは、短時間で試すために max_steps = 60 を提案しています。数百例に絞った小規模なデータセットで、学習と評価を含む最初の試行を最後まで行うと、データセット全体での実行に取りかかる前に、総所要時間を見積もれます。

#FAQ

Unslothは無料ですか?+
コアライブラリはApache 2.0ライセンスで提供され、LoRAとQLoRAによるファインチューニングを無料で行えます。GitHubリポジトリのスター数は76,000を超えています。Studioインターフェースなど、一部のオプションコンポーネントはAGPL-3.0ライセンスで提供されています。ドキュメントでは、このデュアルライセンスを、プロジェクトのオープン性を保ちながら活動資金を確保するための手段と説明しています。ノートブックはColabとKaggleで無料で実行できます。
70億パラメータのモデルを調整するための適切なGPUはどれですか?+
Unslothの表では、70億パラメータのモデルに必要なメモリの最小容量は、4ビットQLoRAで5 GB、16ビットLoRAで19 GBとされています。したがって、メモリ容量12 GBのGPUならQLoRAに適しています。ドキュメントには、これらは最低限必要な容量であり、バッチサイズや長いサンプルによっては、さらに多くのメモリが必要になると明記されています。
例は何件必要ですか?+
Unslothのガイドでは、最低限100行、より良い結果を得るには1,000行を超えるデータを推奨しています。データセットが小さすぎる場合は、合成データやHugging Faceのデータセットを追加できます。数よりも一貫性が重要です。良い例が良い習慣を教えるのと同じくらい確実に、悪い例は悪い習慣を教えてしまいます。
得られたモデルはOllamaで動作しますか?+
はい:model.save_pretrained_gguf で GGUF 形式にエクスポートし、量子化(ドキュメントで q4_k_m が推奨されています)を選択後、Ollama に Modelfile を使ってモデルを構築します。Unsloth はトレーニング用の会話テンプレートに基づいてこの Modelfile を生成します。応答が不整合になる場合は、まずテンプレートと終端トークンが一致しているかを確認してください。
AMD、Mac、またはGPUなしで動作しますか?+
はい、AMDとIntelでは動作し、それぞれ専用ガイドがあります。MacではUnsloth Studioが学習とGGUFでの推論に対応していますが、CoreはApple Siliconではまだ利用できません。GPUがない場合、Studioはチャットとデータ準備に使えますが、学習には使えません。CoreにはCompute Capability 7.0以上のNVIDIA製カードが必要です。
ファインチューニングをすると、モデルは私のデータに精通するようになりますか?+
長期的にはそうなりません。Unslothのガイドでは、ファインチューニングで知識を取り込めるとしていますが、データが変われば、その知識はすぐに古くなります。一方、文書は1分で差し替えられ、引用もできます。事実や文書は文書検索で扱い、トーン、形式、文体はファインチューニングで調整します。両者を組み合わせるのは一般的です。

推奨ハードウェア: RTX 5070 Ti 16 GB — 16 GB の NVIDIA グラフィックカード。7〜8B モデルを QLoRA でファインチューニングするのに十分です。 すべてのAIハードウェア →

このガイドは役に立ちましたか?

ご意見、誤りのご指摘、補足はありますか?ぜひお知らせください。皆さんにとってより良いガイドにするために役立ちます。