Distributed Training
分散トレーニングが複数のGPUにわたってAIワークロードをスケールする仕組みを解説します。DDPを使用してUltralytics YOLO26のトレーニングを高速化し、より高速で高精度な結果を得る方法を学びます。
分散トレーニングは、機械学習において、モデルのトレーニング処理を複数のプロセッサまたはマシンに分割する手法です。このアプローチは、大規模なデータセットや複雑なニューラルネットワークアーキテクチャを処理するために不可欠です。これらを単一のデバイスでトレーニングすると、現実的でないほど長い時間がかかる可能性があります。複数のグラフィックス・プロセッシング・ユニット (GPUs)またはテンソル・プロセッシング・ユニット (TPUs) の計算能力を組み合わせて活用することで、分散トレーニングは開発サイクルを大幅に高速化し、研究者やエンジニアがより迅速に反復して、モデルの精度を高められるようにします。
分散トレーニングの仕組み#
分散トレーニングの中心的な考え方は、並列化です。1つのチップでデータを順番に処理する代わりに、タスクを小さな単位に分割し、それらを同時に処理します。これを実現する主な戦略は次の2つです。
- データ並列化: これは、物体検出などのタスクで最も一般的なアプローチです。この構成では、モデル全体のコピーを各デバイスに配置します。グローバルなトレーニングデータを小さなバッチに分割し、各デバイスが異なるバッチを同時に処理します。各ステップの後、モデルの重みの一貫性を保つため、勾配(モデルへの更新)をすべてのデバイス間で同期します。
- モデル並列化: ニューラルネットワーク (NN)が大きすぎて単一のGPUのメモリに収まらない場合、モデル自体を複数のデバイスに分割します。モデルの異なるレイヤーやコンポーネントを異なるチップに配置し、それらの間でデータを受け渡します。これは、大規模な基盤モデルや大規模言語モデル (LLMs)のトレーニングで必要になることが多い手法です。
実世界での利用例#
分散トレーニングは、従来は計算上実行不可能だった問題を解決できるようにし、さまざまな業界を変革してきました。
- 自動運転: 安全な自動運転車を開発するには、ペタバイト規模の動画やセンサーデータを分析する必要があります。自動車業界のエンジニアは、大規模な分散クラスターを使用して、リアルタイムのセマンティックセグメンテーションや車線検出向けのビジョンモデルをトレーニングします。この大規模な処理により、自動車分野のAIシステムは多様な道路状況に確実に対応できます。
- 医用画像: ヘルスケア分野では、MRIなどの高解像度3Dスキャンを分析するために、大容量のメモリと高い処理能力が必要です。分散トレーニングにより、研究者は腫瘍検出などの重要なタスク向けに、高性能な診断ツールを構築できます。NVIDIA MONAIなどのフレームワークを使用することで、病院はメモリのボトルネックを発生させずに多様なデータセットでモデルをトレーニングでき、ヘルスケア分野のAIの成果を向上させられます。
Ultralyticsで分散トレーニングを利用する#
ultralyticsライブラリを使用すると、分散データ並列 (DDP) トレーニングを簡単に実装できます。トレーニング引数でデバイスのインデックスを指定するだけで、最先端のYOLO26モデルのトレーニングを複数のGPUにスケールできます。
from ultralytics import YOLO
# Load a pre-trained YOLO26 model
model = YOLO("yolo26n.pt")
# Train the model using two GPUs (device 0 and 1)
# The library automatically handles the DDP communication backend
results = model.train(data="coco8.yaml", epochs=100, device=[0, 1])関連する概念と比較#
それぞれの役割を理解するには、分散トレーニングと機械学習エコシステムにおける類似用語を区別すると役立ちます。
- 連合学習との比較: どちらも複数のデバイスを使用しますが、目的は異なります。分散トレーニングでは通常、速度を最大化するために高性能クラスターへデータを集中させます。一方、連合学習では、データプライバシーを優先するため、データをユーザーデバイス(スマートフォンなど)上で分散したまま保持し、生データをソースから外部へ送信せずにグローバルモデルを更新します。
- 高性能コンピューティングとの比較: 高性能コンピューティング (HPC) は、気象予測などの科学シミュレーション向けスーパーコンピューティングを含む、幅広い分野です。分散トレーニングは、ディープラーニングの最適化アルゴリズムに高性能コンピューティングを適用する、特定の用途です。GPU間のレイテンシを最小限に抑えるため、NVIDIA NCCLなどの専用通信ライブラリに依存することがよくあります。
クラウドプラットフォームによるスケーリング#
分散トレーニングのインフラストラクチャを管理するのは複雑な場合があります。最新のプラットフォームでは、マネージド環境を提供することでこの作業を簡素化しています。たとえば、Ultralytics Platformを使用すると、ユーザーはデータセットを管理し、クラウド環境やローカルクラスターにデプロイできるトレーニングジョブを開始できます。この統合により、データアノテーションから最終的なモデルデプロイまでのワークフローが効率化され、複数のGPUへのスケールアップを可能な限りシームレスに実行できます。同様に、Google Cloud Vertex AIやAmazon SageMakerなどのクラウドプロバイダーは、エンタープライズ規模で分散トレーニングジョブを実行するための堅牢なインフラストラクチャを提供しています。









