分散学習
分散トレーニングでAIトレーニングを加速しましょう!トレーニング時間の短縮、モデルのスケーリング、複雑なMLプロジェクトのリソース最適化の方法を学びます。
分散トレーニングは、機械学習(ML)において
機械学習(ML)における強力な手法である。
などの複数のプロセッサに計算負荷を分散させることで、モデル作成プロセスを高速化します。
グラフィックス・プロセッシング・ユニット(GPU)や
Tensor Processing Units (TPUs)などの複数のプロセッサに計算負荷を分散させることで、モデル作成プロセスを高速化する。単一のワークステーションに設置されているものであれ、広大なネットワークに接続されているものであれ、同時実行デバイスの総合的なパワーを活用することで、次のようなことが可能になります。
開発者は、複雑なディープラーニング(DL)アーキテクチャの学習に必要な時間を大幅に短縮することができます。
ディープラーニング(DL)アーキテクチャの学習に必要な時間を大幅に短縮できる。このアプローチは
このアプローチは、膨大なデータセットを扱い、最先端の人工知能(AI)システムを開発するために不可欠である。
人工知能(AI)システムの開発には不可欠である、
反復サイクルを高速化し、より広範な実験を可能にします。
並列化のコア戦略
作業負荷を効果的に分散させるために、エンジニアは通常、次の2つの主要な戦略のいずれか、またはハイブリッド・アプローチを採用する。
を採用する:
-
データ並列:これは、物体検出のようなタスクで最も一般的な方法である。
オブジェクト検出のようなタスクで最も一般的な方法である。このセットアップでは、モデルの完全なコピー
モデルの完全なコピーが各デバイスに存在する。学習データは
学習データは小さなチャンクに分割され、各デバイスは異なるサブセットを同時に処理する。
各デバイスは異なるサブセットを同時に処理する。バックプロパゲーションの段階で
バックプロパゲーションの段階では、勾配は独立に計算され
バックプロパゲーションの段階では、勾配は個別に計算され、MPI(Message Passing Interface)のような通信プロトコルを使って全デバイス間で同期される。
メッセージ・パッシング・インターフェイス(MPI)のような通信プロトコルを使用して、全デバイス間で同期されます。
モデルの重みを一貫して更新します。
-
モデルの並列性:ニューラルネットワーク(NN)が
モデルの並列化:ニューラルネットワーク(NN)が大きすぎて、1つのGPUのメモリに収まらない場合、モデルの並列化が必要になる。
モデルの並列化が必要です。モデルのレイヤーまたはコンポーネントは、異なるデバイスに分割されます。
異なるデバイスに分割されます。データはネットワークを通過する際、デバイス間を順次または同時に流れる。
このテクニックは、膨大な
基礎モデルや
ラージ・ランゲージ・モデル(LLM)のトレーニングには欠かせない。
パラメータ数は数兆にも達するため、マイクロソフトのDeepSpeedのような専用ツールが必要となる。
Microsoft DeepSpeedのような専用ツールが必要です。
実際のアプリケーション
分散トレーニングにより、産業界は、時間やメモリーの制約により、以前は計算不可能であった問題を解くことができる。
を解決することができます。
-
自律走行:信頼性の高い自動運転車の開発には、ペタバイト級のビデオやセンサーデータを処理する必要がある。
やセンサーデータを処理する必要があります。自動車会社は、大規模な分散クラスターを使用して、リアルタイムのセマンティック・セグメンテーションと物体追跡のためのビジョン・モデルをトレーニングしています。
セマンティック・セグメンテーションとオブジェクト・トラッキングを行います。
自動車業界のワークフローにAIを活用することで、エンジニアは安全性向上のための作業を迅速に行うことができます、
エンジニアはセーフティ・クリティカルなモデルを迅速に反復し、パフォーマンスを向上させることができます。
-
メディカル・イメージングで
ヘルスケアにおけるAIでは、MRIやCTのような高解像度の3D
MRIやCTのような高解像度の3Dスキャンを解析するには、かなりの計算リソースが必要となる。分散トレーニングにより、研究者は以下のことが可能になります。
高精度の診断モデルを多様なデータセットで学習することができます、
プライバシーを遵守したデータセットで高精度の診断モデルを学習することができます。次のようなフレームワークがあります。
NVIDIA CLARAのようなフレームワークは、多くの場合、これらの複雑な医療画像を効率的に処理するために、分散技術に依存しています。
に依存しています。
YOLO分散トレーニングの実施
について ultralytics ライブラリは、分散データ並列(DDP)トレーニングの実装を簡素化します。これにより
のトレーニングを簡単に拡張できます。 YOLO11 モデルを複数の
デバイス・インデックスを指定するだけで、複数のGPUにまたがるモデルを作成できます。
from ultralytics import YOLO
# Load a pre-trained YOLO11 model
model = YOLO("yolo11n.pt")
# Train the model using two GPUs (device 0 and 1)
# The library automatically handles DDP setup for parallel processing
results = model.train(data="coco8.yaml", epochs=5, device=[0, 1])
分散学習と関連概念
分散型トレーニングは、AIエコシステムにおける他の関連用語と区別することが重要である:
-
vs. 統合学習:どちらも複数のデバイスを使用するが、主な目的は異なる。
分散学習は通常、スピードとスループットを最大化するため、高性能クラスタにデータを集中させる。これに対して
対照的に、フェデレーテッド・ラーニングはデータを
データのプライバシーを優先するため、ユーザー・デバイス(スマートフォンなど)にデータを分散させる。
データのプライバシーを優先し、モデルの更新を集約する。
を集約する。
-
対高性能コンピューティング(HPC):HPCは、天気予報のような科学シミュレーションのためのスーパーコンピューティングを含む広い分野である。
HPCは、天気予報などの科学的シミュレーションを含む広い分野である。分散トレーニングは、ニューラルにおける最適化アルゴリズムに適用されるHPCの特殊な応用である。
の最適化アルゴリズムに適用される。
ネットワークにおける最適化アルゴリズムに適用されるHPCの特定のアプリケーションであり、多くの場合、NVIDIA NCCLのような特殊な通信ライブラリを利用して
NVIDIA ような特殊な通信ライブラリを利用することが多い。
ツールとエコシステム
オープンソースのツールやプラットフォームの強固なエコシステムが、分散型トレーニングの実施をサポートしている:
-
フレームワーク: PyTorch ネイティブ・サポート
一方
TensorFlow のような戦略を提供する。
MirroredStrategy シームレスなスケーリング
-
オーケストレーション:大規模クラスタ全体のリソースを管理するには、多くの場合、KubernetesやKubernetesのようなコンテナオーケストレーションツール
ツールを使用することが多い。
Kubeflowのようなコンテナオーケストレーションツールを使用することが多い。
-
クラウドインフラ:主要プロバイダーは、次のようなマネージド・サービスを提供している。
AWS SageMakerや
Google マネージド・サービスを提供している。
ワークロードに最適化されたインフラを提供し、ハードウェア保守の負担を軽減します。
-
普遍的なスケーラビリティ:Horovodや
Rayのようなライブラリーは、フレームワークにとらわれないスケーリング・アプローチを提供する。
コードを最小限の変更で分散環境に適応させることができる。