次の方法で共有


分散トレーニング

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

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 を使用した分散トレーニングの詳細を確認してください。

spark-tensorflow-distributor

spark-tensorflow-distributor は、TensorFlow のオープンソースのネイティブ パッケージであり、Spark クラスターで TensorFlow を使って分散トレーニングを行うことができます。 TensorFlow 2 を使用した分散トレーニングの詳細を確認してください。

Ray

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

Horovod (非推奨)

重要

Horovod と HorovodRunner は非推奨となり、Databricks Runtime 16.0 ML 以降にはプレインストールされません。 分散ディープ ラーニングの場合、Databricks では、PyTorch での分散トレーニングに TorchDistributor を使用するか、TensorFlow を使用した分散トレーニング用の tf.distribute.Strategy API を使用することをお勧めします。

Horovod は、TensorFlow、Keras、および PyTorch 向けの分散トレーニング フレームワークです。 Azure Databricks では、HorovodRunner および horovod.spark パッケージを使用した分散型ディープ ラーニング トレーニングをサポートしています。 Keras または PyTorch を使用する Spark ML パイプライン アプリケーションの場合は、horovod.spark estimator API を使用できます。 「Horovod」を参照してください。