分散トレーニング

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

Databricks では、pyspark.ml.connect モジュールを使用した Spark 機械学習モデルの分散トレーニングも提供しています pyspark.ml.connectを用いDatabricks Connect経由でSpark MLのモデルをトレーニングするを参照してください。

DeepSpeedディストリビューター

DeepSpeed ディストリビューターは TorchDistributor の上に構築されており、より高いコンピュート電力を必要とするが、メモリの制約によって制限されるモデルを持つお客様に推奨されるソリューションです。 DeepSpeed は、Microsoft によって開発されたオープンソース ライブラリであり、メモリ使用量の最適化、通信オーバーヘッドの削減、および高度なパイプライン並列処理を提供します。 DeepSpeed ディストリビューターを使用した分散トレーニングの詳細

TorchDistributor

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

spark-tensorflow-distributor

spark-tensorflow-distributor は、Spark クラスター上の TensorFlow を使用した分散トレーニング用の TensorFlow のオープンソース ネイティブ パッケージです。 TensorFlow 2 を使用した分散トレーニングの詳細については、こちらを参照してください。

Ray

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

Horovod (非推奨)

重要

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

Horovod は、TensorFlow、Keras、PyTorch 用の分散トレーニング フレームワークです。 Databricks は、HorovodRunner とhorovod.sparkパッケージを使用した分散ディープラーニング トレーニングをサポートしています。 または Sparkを使用する 機械学習パイプラインKerasPyTorch アプリケーションの場合は、horovod.spark 推定API を使用できます。Horovod を参照してください。