分散トレーニング

可能であれば、Azure Databricks では、単一マシンでニューラル ネットワークをトレーニングすることを推奨しています。トレーニングと推論のための分散コードは単一マシン コードよりも複雑で、通信オーバーヘッドのため低速になります。 ただし、モデルまたはデータが大きすぎて単一マシンのメモリに収まらない場合は、分散型のトレーニングと推論を検討する必要があります。 これらのワークロードに対して、Databricks Runtime ML には、TorchDistributor、DeepSpeed ディストリビューター、および Ray パッケージが含まれています。

Azure Databricks からはまた、pyspark.ml.connect モジュールで Spark ML モデルの分散トレーニングが提供されます。「pyspark.ml.connect を使用して Databricks Connect で Spark ML モデルをトレーニングする」を参照してください。

Note

Databricks では、ノード間のネットワーク パフォーマンスが低いため、NC シリーズ VM を使用してマルチノード分散トレーニングを実行することを推奨していません。 代わりに、1 つのマルチ GPU ノードを使用するか、高速ネットワークをサポートする NCasT4_v3 シリーズなどの別の GPU VM サイズを使用してください。

DeepSpeed ディストリビューター

DeepSpeed ディストリビューターは TorchDistributor をベースに構築されており、高い計算処理能力を必要とするが、メモリに制約されるモデルをご利用のお客様にお勧めのソリューションです。 DeepSpeed は、Microsoft によって開発されたオープンソース ライブラリであり、メモリ使用の最適化、通信オーバーヘッドの削減、高度なパイプライン並列処理といった仕様になっています。 DeepSpeed を使用した分散トレーニングの詳細を確認してください。

TorchDistributor

TorchDistributor は、ユーザーが自分の Spark クラスターで PyTorch を使用して分散トレーニングを行うのに役立つ PySpark のオープンソース モジュールであるため、Spark ジョブとして PyTorch トレーニング ジョブを起動できます。 その内部では、ワーカー間の環境と通信チャネルが初期化され、CLI コマンド torch.distributed.run を使用してワーカー ノード間で分散トレーニングが実行されます。 TorchDistributor を使用した分散トレーニングの詳細を確認してください。

Ray

Ray は、ML ワークフローと AI アプリケーションのスケーリングを行うための並列コンピューティング処理に特化したオープンソースのフレームワークです。 「Azure Databricks の Ray とは」を参照してください。