YOLO Vision Shenzhen
深セン
今すぐ参加
用語集

モデルマージング

モデルマージが複数の事前学習済みモデルを1つに結合する方法を知りましょう。Ultralytics YOLO26の重みを融合して、余分なレイテンシなしにパフォーマンスを向上させる方法を学びましょう。

モデルマージングは、複数の事前学習済みモデルから学習されたパラメータ(重み)を単一の統合モデルに結合する、 機械学習 (ML)における革新的な手法です。従来の複数モデル設定とは異なり、マージングはパラメータ空間内で モデルウェイトを直接融合します。これにより、異なるタスクやデータセットでファインチューニングされた複数のモデルの専門知識を、複数のモデルを同時に実行する際のメモリや計算コストを発生させることなく組み合わせることが可能になります。

重みに直接操作を適用することで、モデルマージは単一ネットワークのアーキテクチャフットプリントを維持します。これは、高度なコンピュータービジョン(CV)パイプラインをエッジデバイスにデプロイする際に特に価値があり、そこでは推論レイテンシの削減とメモリの節約が重要です。

モデルマージングの区別

モデルマージをモデルアンサンブル転移学習といった関連概念と区別することは、その理解を深める上で役立ちます。

  • Model Merging vs. Model Ensemble: モデルアンサンブルは、個々のネットワークを分離したまま、推論時にそれぞれを実行し、その出力を平均化します。これにより精度は向上しますが、計算オーバーヘッドが増大します。モデルマージングは、推論に実際の重みを結合し、追加の実行時計算を必要としない単一のモデルを生成します。
  • Model Merging vs. Transfer Learning: 転移学習は、ベースモデルを取得し、新しいデータセットでさらに学習させることを含みます。モデルマージングは追加のファインチューニングを必要とせず、数学的演算を使用して既に学習済みのモデルを融合します。

一般的な手法

研究者たちは、最近のarXivの学術研究で探求されているように、ネットワークの基盤となる能力を損なうことなく重みを効果的に結合するいくつかの方法を開発しました。

  • 重み平均: 同じアーキテクチャを共有する複数のモデルから重みの平均を取る、最も単純な手法です。
  • タスク算術 (Task Arithmetic): ファインチューニングされたモデルとそのベースモデルの差である「タスクベクトル」を加算または減算することで、特定の挙動を組み合わせたり削除したりする手法です。
  • TIES-Merging:不要な値をトリミングし、モデル間で一貫した符号を選択することでパラメーター干渉を解決し、多様なタスクでパフォーマンスを維持する高度なアプローチです。

実際のアプリケーション

モデルマージングは、ゼロから再学習することなく汎用的なシステムを構築する上で非常に効果的です。

  • 自律走行車: 自律走行車は、Ultralytics YOLO26ベースモデルを使用する場合があります。エンジニアは、微妙な歩行者の動きをdetectするために1つのモデルバージョンを、複雑な道路標識を読み取るために別のモデルバージョンを個別にトレーニングできます。これら2つのモデルをマージすることで、推論時間を2倍にすることなく両方のタスクを同時に処理する、単一の高性能なdetectorが作成されます。
  • 医療分野におけるAI: 医用画像処理では、厳格なデータプライバシー法のため、異なる研究病院が専門的なローカルデータセット(例:MRIスキャン用とCTスキャン用)でモデルをファインチューニングする可能性があります。モデルを安全に統合することで、研究者は多様なデータ分布から恩恵を受ける包括的な診断ツールを作成できます。

例: シンプルな重み平均化

PyTorchを使用して基本的なモデルマージを簡単に実行できます。以下の例は、2つの同一構造モデルの状態辞書を平均化する方法を示しています。

import torch

# Load the weights (state dicts) from two identical architectures
weights_a = torch.load("yolo26_task1.pt")["model"].state_dict()
weights_b = torch.load("yolo26_task2.pt")["model"].state_dict()

# Perform simple weight averaging
merged_weights = {k: (weights_a[k] + weights_b[k]) / 2.0 for k in weights_a.keys()}

# Save the newly merged model weights
torch.save({"model": merged_weights}, "yolo26_merged.pt")

データセットのアノテーション、トレーニング、デプロイメントという複雑なワークフローを簡素化したいチームにとって、Ultralytics Platformは、エンドツーエンドのビジョンAIプロジェクトを簡単に管理するための直感的なインターフェースを提供します。

共にAIの未来を築きましょう!

未来の機械学習で、新たな一歩を踏み出しましょう。