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

Unsloth を使って視覚/マルチモーダル LLM をファインチューニングする方法を学びましょう

視覚モデルのファインチューニングにより、物体検出や動き検出など通常のLLMが得意でない特定のタスクでモデルを優れた性能にできます。 また訓練することもできます 強化学習(RL)を用いたVLM. 視覚ファインチューニング用の無料ノートブックを多数用意しています:

  • Ministral 3:一般的なQ&A向けのビジョンファインチューニング: ノートブックarrow-up-right 一般的なQ&Aデータセットとよりニッチなデータセットを連結することで、ファインチューニング中にベースモデルのスキルを忘れさせないようにできます。

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

  • Llama 3.2 ビジョン 放射線画像向けのファインチューニング: ノートブックarrow-up-right X線、CTスキャン、超音波検査の分析を医療専門家がより速く行えるように支援するにはどうすればよいか。

  • Qwen2.5 VL 手書き文字をLaTeXに変換するためのファインチューニング: ノートブックarrow-up-right これにより、複雑な数式を手作業で書かずに簡単にLaTeXとして転写できます。

circle-info

データセットのすべての画像が同じサイズ/寸法であることを確認するのが最適です。トレーニングが長引かないように、またはリソースを使いすぎないように、300–1000pxの寸法を使用してください。

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

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

model = FastVisionModel.get_peft_model(
    model,
    finetune_vision_layers     = True, # ビジョン層をファインチューニングしない場合はFalse
    finetune_language_layers   = True, # 言語層をファインチューニングしない場合はFalse
    finetune_attention_modules = True, # アテンション層をファインチューニングしない場合は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,               # ランク安定化LoRAをサポートしています
    loftq_config = None,               # そしてLoftQ
    target_modules = "all-linear",    # これでオプションです!必要ならリストで指定できます
    modules_to_save=[
        "lm_head",
        "embed_tokens",
    ],
)

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

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

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

マルチ画像トレーニング

マルチ画像でモデルをファインチューニングまたは訓練するための最も簡単な変更は、次を入れ替えることです:

次のように:

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

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

ビジョンまたはマルチモーダルモデルをファインチューニングするためのデータセットは、標準的な質問&回答ペアに似ていますが、 データセット 今回は画像入力も含まれる点が異なります。例えば、 Llama 3.2 ビジョン ノートブックarrow-up-right は、放射線画像の事例を用いて、AIがX線、CTスキャン、超音波検査を医療専門家がより効率的に分析する手助けをする方法を示しています。

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

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

画像
キャプション

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

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

VLMに放射線画像の専門家になるよう指示するカスタムインストラクションを作成します。1つの指示だけでなく、複数のターンを追加して動的な会話にすることもできます。

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

最初の例は現在次のように構造化されています:

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

そして結果:

詳細については、当社のデータセットセクションを こちらのノートブックでご覧くださいarrow-up-right.

🔎ビジョンモデル(VLM)におけるアシスタント応答のみでのトレーニング

言語モデルの場合、以下を使用できます from unsloth.chat_templates import train_on_responses_only 前述のように。ビジョンモデルの場合は、追加の引数を UnslothVisionDataCollator の一部として使用してください、以前と同様です!詳細な使用方法は ビジョンファインチューニング ビジョンデータコレータの使い方を参照してください。

例えば Llama 3.2 ビジョンの場合:

最終更新

役に立ちましたか?