Hyperparameter tuning | Databricks on AWS [2022/6/14時点]の翻訳です。
本書は抄訳であり内容の正確性を保証するものではありません。正確な内容に関しては原文を参照ください。
Databricks機械学習ランタイムには、モデル選択とハイパーパラメーターチューニングのプロセスを自動化するオープンソースツールであるHyperoptが組み込まれています。
Hyperoptによるハイパーパラメーターチューニング
Databricks機械学習ランタイムには、分散処理を用いたハイパーパラメーターチューニング、モデル選択を推進するPythonライブラリであるHyperoptが含まれています。Hyperoptを用いることで、あなたが定義する探索空間においてアルゴリズムやハイパーパラメーターを変化させながら、一連のPythonモデルをスキャンすることができます。HyperoptはApache Spark MLlibやHorovodのような分散MLアルゴリズムや、scikit-learnやTensorFlowのようなシングルマシンのMLモデルでも動作します。
Hyperoptを用いる基本的なステップは以下のようになります。
- 最小化する目的関数を定義します。通常、これはトレーニングあるいは検証時の損失となります。
- ハイパーパラメーター探索空間を定義します。Hyperoptでは、一つのランの中で異なるMLアルゴリズムを比較できるように、条件付き探索空間を定義することができます。
- 探索アルゴリズムを指定します。決定論的グリッドサーチよりも効率的にハイパーパラメーター空間を探索できるように、Hyperoptは確率論的チューニングアルゴリズムを使用します。
- Hyperoptの関数である
fmin()
を実行します。fmin()
は以前のステップで定義した項目を受け取り、目的関数を最小化するハイパーパラメーターのセットを特定します。
scikit-learnアルゴリズムでHyperoptをクイックに使い始めるには以下をご覧ください。
- Parallelize hyperparameter tuning with scikit-learn and MLflow
- Compare multiple model types using scikit-learn, Hyperopt, and MLflow
Hyperoptがどのように動作するのかの詳細や、他のサンプルについては以下をご覧ください。
- Hyperoptのコンセプト
- Use distributed training algorithms with Hyperopt
- ベストプラクティス:DatabricksにおけるHyperoptを用いたハイパーパラメーターチューニング
自動化MLflowトラッキング
注意
Databricksランタイム10.1ML以降が動作するクラスターにおいてはMLlib自動化MLflowトラッキングは非推奨となり、Databricksランタイム10.2ML以降ではデフォルトで無効化されます。代わりに、デフォルトで有効化されているDatabricksオートロギングのmlflow.pyspark.ml.autolog()
を呼び出して、MLflow PySpark ML autologgingを使用してください。
Databricksランタイム10.2ML以降で古いMLlib自動化MLflowトラッキングを使用するには、Spark設定でspark.databricks.mlflow.trackMLlib.enabled true
とspark.databricks.mlflow.autologging.enabled false
を設定してください。