Yolo 深圳
深セン
今すぐ参加
用語集

モデルの統合

モデルマージングによって、複数の事前学習済みモデルがどのように1つに統合されるのかをご紹介します。Ultralytics 重みデータを融合させ、追加の遅延を生じさせることなくパフォーマンスを向上させる方法をご確認ください。

モデルマージングは、機械学習(ML)における革新的な手法であり、 複数の事前学習済みモデルの学習済みパラメータ(重み)を、 単一の統合モデルに組み合わせるものです。 従来のマルチモデル 構成とは異なり、マージではパラメータ空間において モデルの重みを直接融合させます。これにより、実務者は、異なるタスクやデータセットに対して微調整された 複数のモデルの専門的な知識を組み合わせることができ、複数のモデルを 同時に実行する際のメモリや計算コストを負担することなく済みます。

重みに直接演算を適用することで、モデルマージは単一の ネットワークのアーキテクチャ構成を維持します。これは、高度な コンピュータビジョン(CV)パイプラインをエッジデバイスに 展開する際、推論の遅延を短縮し、メモリを節約することが 極めて重要となる場面で特に有用です。

モデルの区別と統合

モデルマージングを、 モデルアンサンブル 転移学習といった関連する概念と区別しておくことが役立ちます。

  • モデルの統合とモデルアンサンブルの比較:モデルアンサンブルでは、個々のニューラルネットワークを分離したまま、推論時にそれぞれを実行し、 その出力を平均化します。これにより精度は向上しますが、計算負荷は倍増します。一方、モデルの 統合では、推論の前に実際の重みを結合するため、追加の 実行時間や計算リソースを必要としない単一のモデルが得られます。
  • モデルの統合と転移学習:転移学習では、ベースモデルを用いて、 新しいデータセットでさらに学習を行います。一方、モデルの統合では、 追加の微調整は不要であり、数学的な演算を用いて すでに学習済みのモデルを融合させます。

一般的な手法

研究者たちは、ネットワークの根底にある 能力を損なうことなく重みを効果的に組み合わせるためのいくつかの手法を開発しており、これはarXivに掲載された 最近の学術研究でも取り上げられている。

  • 重み平均化:最も単純な手法であり、同じアーキテクチャを共有する複数のモデルからの重みの平均を算出する。
  • タスク算術:「タスクベクトル」(微調整済み モデルとそのベースモデルの差分)を加減算することで、特定の挙動を組み合わせたり除去したりする手法。
  • TIES-Merging:冗長な値を削除し、モデル間で一貫した符号を選択することでパラメータ間の干渉を解消する高度なアプローチであり、多様なタスクにおいて性能を維持する。

実際のアプリケーション

モデルの統合は、一から再学習することなく汎用的なシステムを構築するのに非常に効果的です。

  • 自動運転車: 自動運転車では、Ultralytics モデルが採用される可能性があります。 エンジニアは、歩行者のdetect 動きをdetect モデルと、複雑な道路標識を読み取るためのモデルを、 それぞれ個別に学習させることができます。これら2つのモデルを統合することで、推論時間を倍増させることなく、 両方のタスクを同時に処理できる、高性能な単一の検出器が実現します。
  • 医療分野における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 は、直感的なインターフェースを備えており、 エンドツーエンドのビジョンAIプロジェクトをスムーズに管理できます。

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

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