Hyperoptで分散トレーニング アルゴリズムを使用する

Hyperoptのオープンソース バージョンはメンテナンスされなくなりました。

Hyperopt は、次のメジャー DBR ML バージョンで削除されます。 Databricks、単一ノードの最適化にはOptunaを使用するか、非推奨の分散ハイパーパラメーターチューニング機能と同様のエクスペリエンスのためにRayTuneHyperoptを使用することをお勧めします。Databricks での RayTune の使用の詳細については、こちらをご覧ください。

Scikit-Learnなどの単一マシンのトレーニング アルゴリズムに加えて、Hyperopt を分散トレーニング アルゴリズムで使用できます。このシナリオでは、Hyperopt はドライバー ノードで異なるハイパーパラメーター設定で試用版を生成します。 各トライアルはドライバー ノードから実行され、完全なクラスター リソースにアクセスできます。 このセットアップは、Apache Spark MLlib や HorovodRunner など、あらゆる分散機械学習アルゴリズムまたはライブラリで動作します。

分散トレーニング アルゴリズムで Hyperopt を使用する場合は、 trials 引数を fmin()に渡さず、具体的には SparkTrials クラスを使用しないでください。 SparkTrials は、それ自体が分散されていないアルゴリズムの試行を配布するように設計されています。 分散トレーニング アルゴリズムでは、クラスター ドライバーで実行される既定の Trials クラスを使用します。 Hyperopt は、機械学習アルゴリズム自体が分散トレーニングを開始できるように、ドライバー ノードで各試用版を評価します。

Databricks では、 Trials クラスを使用した MLflow への自動ログ記録はサポートされていません。 分散トレーニング アルゴリズムを使用する場合は、MLflow を手動で呼び出して、Hyperopt の試用版をログに記録する必要があります。

ノートブックの例: MLlib アルゴリズムで Hyperopt を使用する

サンプル ノートブックでは、Hyperopt を使用して MLlib の分散トレーニング アルゴリズムを調整する方法を示します。

Hyperopt と MLlib の配布トレーニング ノートブック

ノートブックを新しいタブで開く

ノートブックの例: HorovodRunnerでHyperoptを使用する

HorovodRunner は、Databricks で分散ディープラーニング ワークロードを実行するために使用される一般的な API です。 HorovodRunner は、 Horovod を Spark の バリア モード と統合して、Spark での長時間実行されるディープラーニング トレーニング ジョブの安定性を高めます。

サンプル ノートブックでは、Hyperopt を使用して、HorovodRunner に基づくディープラーニングの分散トレーニングを調整する方法を示します。

Hyperopt と HorovodRunner が配布したトレーニング ノートブック

ノートブックを新しいタブで開く