Hyperopt Hyperopt

Hyperopt は、広く普及しているオープンソースのハイパーパラメーター調整ライブラリです。Hyperopt is a popular open-source hyperparameter tuning library. Hyperopt の役割は、スカラー値の目的関数を、その関数への一連の入力パラメーターに対して最適化することです。Hyperopt’s job is to optimize a scalar-valued objective function over a set of input parameters to that function. Hyperopt を使用して、特定の機械学習モデルに合わせたハイパーパラメーターの調整を行うときは、該当するハイパーパラメーターを入力として取り、トレーニングまたは検証の損失を出力する目的関数を定義します。When using Hyperopt to do hyperparameter tuning for your machine learning models, you define the objective function to take hyperparameters of interest as input and output a training or validation loss. 目的関数では、トレーニング データを読み込み、入力から受け取ったハイパーパラメーターを使用して機械学習モデルをトレーニングし、通常どおり、数回のイテレーションごとにモデル チェックポイントを保存します。In the objective function, you load the training data, train your machine learning model with hyperparameters received from the input and save model checkpoints every several iterations as usual. Hyperopt は 2 つのチューニング アルゴリズムを提供します。ランダム検索と、ベイズ法パルツェン推定量ツリー (Tree of Parzen Estimators: TPE) です。これらは、グリッド検索などのブルートフォース アプローチに比べて計算効率を向上させます。Hyperopt offers two tuning algorithms: Random Search and the Bayesian method Tree of Parzen Estimators (TPE), which offer improved compute efficiency compared to a brute force approach such as grid search.

分散設定で Hyperopt を使用するには、次の 2 つの方法があります。There are two ways to use Hyperopt in a distributed setting:

  • 分散 Hyperopt を単一マシン トレーニング アルゴリズムと共に使用します。Use distributed Hyperopt with single-machine training algorithms. 具体的には、hyperopt.fmin() を呼び出すときに SparkTrials クラスを使用し、単一マシン トレーニング アルゴリズムを目的関数で実行します。Specifically, you use the SparkTrials class when calling hyperopt.fmin() and run single-machine training algorithms in the objective function.
  • 単一マシン Hyperopt を分散トレーニング アルゴリズムと共に使用します。Use single-machine Hyperopt with distributed training algorithms. 具体的には、hyperopt.fmin() を呼び出すときに既定の base.Trials クラスを使用し、分散トレーニング アルゴリズムを目的関数で実行します。Specifically, you use the default base.Trials class when calling hyperopt.fmin() and run distributed training algorithms in the objective function.

これら 2 つのユース ケースの詳細なデモについては、次のセクションを参照してください。See the following sections for detailed demonstrations of these two use cases: