Distributed Training
分散学習が複数のGPUにわたりAIワークロードをどのようにスケールさせるか解説します。DDPを使用してUltralytics YOLO26の学習を加速し、より速く正確な結果を得る方法を学びましょう。
分散学習は、モデルの学習ワークロードを複数のプロセッサやマシンに分割する機械学習の手法です。このアプローチは、単一のデバイスでは学習に膨大な時間がかかってしまうような大規模なデータセットや複雑なニューラルネットワークアーキテクチャを扱う際に不可欠です。複数のGPU (Graphics Processing Units)やTPUの計算能力を組み合わせることで、分散学習は開発サイクルを大幅に加速させ、研究者やエンジニアがより迅速に反復を行い、モデルの精度 (accuracy)を向上させることを可能にします。
Link to this section分散学習の仕組み#
分散学習の核心は並列化です。データを1つのチップで逐次処理するのではなく、タスクを小さな塊に分割して同時に処理します。これを実現するための主な戦略は2つあります。
- データ並列処理 (Data Parallelism): これは物体検出 (object detection)などのタスクにおいて最も一般的なアプローチです。この設定では、モデル全体のコピーがすべてのデバイスに配置されます。グローバルな学習データ (training data)は小さなバッチに分割され、各デバイスが異なるバッチを同時に処理します。各ステップの後、モデル重み (model weights)が一貫性を保つように、勾配(モデルの更新情報)がすべてのデバイス間で同期されます。
- モデル並列処理 (Model Parallelism): ニューラルネットワーク (NN)が大きすぎて単一のGPUメモリに収まらない場合、モデル自体を複数のデバイスに分割します。モデルの異なるレイヤーやコンポーネントが異なるチップに配置され、その間でデータがやり取りされます。これは、大規模な基盤モデル (foundation models)や大規模言語モデル (LLM)を学習する際によく必要となります。
Link to this section実社会での応用#
分散学習は、以前は計算的に不可能だった問題を解決できるようにすることで、産業を大きく変革しました。
- 自動運転: 安全な自動運転車 (autonomous vehicles)の開発には、ペタバイト規模の動画データやセンサーデータの分析が必要です。自動車メーカーのエンジニアは、リアルタイムのセマンティックセグメンテーション (semantic segmentation)や車線検出のためのビジョンモデルを学習させるために、大規模な分散クラスターを使用しています。この大規模なスケールにより、自動車分野のAI (AI in automotive)システムが多様な道路状況に対して確実に反応できるようになります。
- 医療画像解析: ヘルスケア分野では、MRIのような高解像度3Dスキャンの分析に多大なメモリと処理能力を要します。分散学習により、研究者は腫瘍検出 (tumor detection)やその他の重要なタスクのための高性能な診断ツールを構築できます。NVIDIA MONAIのようなフレームワークを使用することで、病院はメモリのボトルネックに直面することなく多様なデータセットでモデルを学習させ、ヘルスケア分野のAI (AI in healthcare)の成果を向上させることができます。
Link to this sectionUltralyticsで分散学習を活用する#
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])Link to this section関連概念と比較#
機械学習のエコシステムにおける同様の用語と分散学習を区別し、それぞれの役割を理解することは有益です。
- フェデレーション学習 (Federated Learning) との比較: 両者とも複数のデバイスが関与しますが、目的が異なります。分散学習は、通常、速度を最大化するために高性能クラスターにデータを一元化します。対照的に、フェデレーション学習 (federated learning)は、データプライバシー (data privacy)を優先するために、(スマートフォンなどの)ユーザーデバイス上でデータを分散したまま保持し、生データがソースから離れることなくグローバルモデルを更新します。
- ハイパフォーマンスコンピューティング (HPC) との比較: HPCは、気象予測のような科学シミュレーションのためのスーパーコンピューティングを含む広範な分野です。分散学習は、ディープラーニングにおける最適化アルゴリズム (optimization algorithms)に適用されるHPCの特定のアプリケーションです。これは多くの場合、GPU間のレイテンシを最小限に抑えるためにNVIDIA NCCLのような専門的な通信ライブラリに依存しています。
Link to this sectionクラウドプラットフォームでのスケーリング#
分散学習のためのインフラストラクチャの管理は複雑になる場合があります。現代のプラットフォームは、管理された環境を提供することでこれを簡素化しています。例えば、Ultralytics Platformを使用すると、ユーザーはデータセットを管理し、クラウド環境やローカルクラスターに展開可能な学習実行を開始できます。この統合により、データアノテーション (data annotation)から最終的なモデル展開 (model deployment)までのワークフローが効率化され、複数のGPUへのスケーリングが可能な限りシームレスになります。同様に、Google Cloud Vertex AIやAmazon SageMakerのようなクラウドプロバイダーは、エンタープライズ規模で分散学習ジョブを実行するための堅牢なインフラストラクチャを提供しています。






