For the complete documentation index, see llms.txt. This page is also available as Markdown.

👁️ビジョンのファインチューニング

Unslothを使ってビジョン/マルチモーダルLLMをファインチューニングする方法を学びます

ビジョンモデルをファインチューニングすると、物体/動きの検出など、通常のLLMでは得意でない特定のタスクでモデルの性能を高められます。 また、 VLMをRLで. ビジョンのファインチューニング向けの無料ノートブックを多数用意しています:

  • Qwen3-VL (8B) ビジョン: ノートブック

  • Ministral 3: 一般的なQ&A向けのビジョンファインチューニング: ノートブック 一般的なQ&Aデータセットに、より専門的なデータセットを組み合わせることで、ファインチューニング時にベースモデルの能力を忘れにくくできます。

  • Gemma 3 (4B) ビジョン: ノートブック

  • Llama 3.2 Vision 放射線画像診断向けのファインチューニング: ノートブック X線、CTスキャン、超音波をより速く分析するのに、医療従事者をどう支援できるか。

  • Qwen2.5 VL 手書きをLaTeXに変換するためのファインチューニング: ノートブック これにより、複雑な数式を手入力することなく、LaTeXとして簡単に転記できます。

データセット内の画像サイズがすべて同じであるようにするのが最善です。学習に時間がかかりすぎたり、リソースを使いすぎたりしないよう、300〜1000pxの寸法を使用してください。

ビジョン/テキストのみのファインチューニングを無効化

ビジョンモデルをファインチューニングするために、今ではモデルのどの部分をファインチューニングするかを選択できるようになりました。ビジョン層のみ、言語層のみ、あるいはアテンション/MLP層のみを選択できます。デフォルトではすべて有効になっています。

model = FastVisionModel.get_peft_model(
    model,
    finetune_vision_layers     = True, # vision レイヤーをファインチューニングしないなら False
    finetune_language_layers   = True, # language レイヤーをファインチューニングしないなら False
    finetune_attention_modules = True, # attention レイヤーをファインチューニングしないなら False
    finetune_mlp_modules       = True, # MLP レイヤーをファインチューニングしないなら False

    r = 16,                           # 大きいほど精度は高くなるが、過学習する可能性あり
    lora_alpha = 16,                  # 少なくとも alpha == r を推奨
    lora_dropout = 0,
    bias = "none",
    random_state = 3407,
    use_rslora = False,               # rank stabilized LoRA をサポートしています
    loftq_config = None,               # そして LoftQ も
    target_modules = "all-linear",    # 今は任意です! 必要ならリストを指定できます
    modules_to_save=[
        "lm_head",
        "embed_tokens",
    ],
)

ビジョン用データコレーター

ビジョン用データセット専用の特別なデータコレーターがあります:

そして、データコレーターの引数は次のとおりです:

マルチ画像学習

マルチ画像でモデルをファインチューニングまたは学習するために、最も簡単な変更は次の置き換えです:

を次のように:

map を使うと、データセットの標準化と Arrow の処理ルールが適用されますが、これらは厳密で定義がより複雑になることがあります。

ビジョンファインチューニング用データセット

ビジョンまたはマルチモーダルモデルをファインチューニングするためのデータセットは、標準的な質問と回答のペアに似ています datasets が、今回は画像入力も含まれます。例えば、 Llama 3.2 Vision ノートブック では放射線画像のケースを使って、AIが医療従事者によるX線、CTスキャン、超音波の分析をより効率的に支援できることを示しています。

ROCO放射線画像データセットのサンプル版を使用します。データセットにアクセスできます こちら。このデータセットには、医療状態や疾患を示すX線、CTスキャン、超音波が含まれています。各画像には、それを説明する専門家によるキャプションが付いています。目的は、VLMをファインチューニングして、医療従事者にとって有用な分析ツールにすることです。

データセットを見て、最初の例が何を示しているか確認しましょう:

画像
キャプション

パノラマX線写真は、右後方上顎に骨溶解性病変を示し、上顎洞底の吸収を伴っています(矢印)。

データセットを整形するには、すべてのビジョンファインチューニングタスクを次のようにフォーマットする必要があります:

VLMに放射線画像の専門家であるよう求める、独自の指示文を作成します。また、指示が1つだけでなく、複数ターンを追加して動的な会話にすることもできます。

ファインチューニング用にデータセットを「正しい」形式へ変換しましょう:

最初の例は次のような構造になります:

ファインチューニングを行う前に、もしかするとビジョンモデルはすでに画像の解析方法を知っているかもしれません。これが当てはまるか確認しましょう!

そして結果は:

詳細は、のデータセットセクションをご覧ください こちらのノートブック.

🔎ビジョンモデル、VLM向けにアシスタント応答のみで学習する

言語モデルでは、 from unsloth.chat_templates import train_on_responses_only を前述のように使用できます。ビジョンモデルでは、追加の引数を UnslothVisionDataCollator の一部として使用してください。 ビジョンのファインチューニング ビジョンデータコレーターの使い方の詳細は、こちらをご覧ください。

たとえば Llama 3.2 Vision では:

最終更新

役に立ちましたか?