Hyperopt で分散トレーニング アルゴリズムを使用する
scikit-learn のような単一マシンのトレーニング アルゴリズムに加えて、Hyperopt を分散トレーニング アルゴリズムと共に使用できます。 このシナリオでは、Hyperopt はドライバー ノードで異なるハイパーパラメーター設定の試用版を生成します。 各試用版はドライバー ノードから実行され、完全なクラスター リソースにアクセスできます。 この設定は、Apache Spark MLlib や HorovodRunner など、任意の分散機械学習アルゴリズムまたはライブラリで動作します。
分散トレーニング アルゴリズムで Hyperopt を使用する場合は、fmin()
に trials
引数を渡さないでください。具体的には、SparkTrials
クラスを使用しないでください。SparkTrials
は、それ自体が分散されていないアルゴリズムの試行を分散するように設計されています。 分散トレーニング アルゴリズムでは、クラスター ドライバーで実行される Default Trials
クラスを使用します。 Hyperopt は、ML アルゴリズム自体が分散トレーニングを開始できるように、ドライバー ノードで各試行を評価します。
Databricks では、 Trials
クラスを使用した MLflow への自動ログ記録はサポートされていません。 分散トレーニング アルゴリズムを使用する場合は、MLflow を手動で呼び出して、Hyperopt の試用版をログに記録する必要があります。
ノートブックの例: Hyperopt と MLlib アルゴリズムを使用する
サンプル ノートブックでは、Hyperopt を使用して MLlib の分散トレーニング アルゴリズムを調整する方法を示します。
Hyperopt と MLlib の分散トレーニング ノートブック
ノートブックの例: HorovodRunner で Hyperopt を使用する
HorovodRunner は、Databricks で分散ディープラーニング ワークロードを実行するために使用される一般的な API です。 HorovodRunner は、Horovod を Sparkのバリア モードと統合して、Sparkで長時間実行されるディープラーニング トレーニング ジョブの安定性を高めます。
このノートブックの例は、 Hyperopt を使用して、 HorovodRunnerに基づいてディープラーニングの分散トレーニングを調整する方法を示しています。