Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Optuna adalah pustaka Python sumber terbuka untuk penyetelan hyperparameter yang dapat diskalakan secara horizontal di beberapa sumber daya komputasi.
MLflow 3.0 memperkenalkan kemampuan baru yang kuat untuk pengoptimalan hyperparameter dengan mengintegrasikan dengan Optuna.
-
MlflowStoragekelas memungkinkan Optuna untuk menggunakan MLflow Tracking Server sebagai backend penyimpanannya. -
MlflowSparkStudykelas ini memungkinkan peluncuran studi Optuna paralel menggunakan ekskutor PySpark.
Pasang Optuna
MLflow 3.0 telah diinstal sebelumnya di Databricks Runtime 17.0 ML ke atas. Pada runtime yang lebih lama, gunakan perintah berikut untuk menginstal versi terbaru Optuna dan MLFlow.
%pip install mlflow --upgrade
%pip install optuna
Jalankan pengoptimalan Optuna secara paralel
Berikut adalah langkah-langkah dalam alur kerja Optuna:
Tentukan fungsi tujuan untuk dioptimalkan. Dalam fungsi tujuan, tentukan ruang pencarian hyperparameter. Untuk detail selengkapnya, lihat Dokumentasi Optuna.
Di bawah ini adalah contoh untuk pemilihan model dan penyetelan hiperparameter dengan sckit-learn. Contoh mendefinisikan fungsi
objectivetujuan , dan memanggilsuggest_floatfungsi untuk menentukan ruang pencarian untuk parameterx.
import sklearn
def objective(trial):
# Invoke suggest methods of a Trial object to generate hyperparameters.
regressor_name = trial.suggest_categorical('classifier', ['SVR', 'RandomForest'])
if regressor_name == 'SVR':
svr_c = trial.suggest_float('svr_c', 1e-10, 1e10, log=True)
regressor_obj = sklearn.svm.SVR(C=svr_c)
else:
rf_max_depth = trial.suggest_int('rf_max_depth', 2, 32)
regressor_obj = sklearn.ensemble.RandomForestRegressor(max_depth=rf_max_depth)
X, y = sklearn.datasets.fetch_california_housing(return_X_y=True)
X_train, X_val, y_train, y_val = sklearn.model_selection.train_test_split(X, y, random_state=0)
regressor_obj.fit(X_train, y_train)
y_pred = regressor_obj.predict(X_val)
error = sklearn.metrics.mean_squared_error(y_val, y_pred)
return error # An objective value linked with the Trial object
- Buat penyimpanan bersama untuk pengoptimalan terdistribusi. Dengan
MlflowStorage, Anda dapat menggunakan MLflow Tracking Server sebagai backend penyimpanan.
import mlflow
from mlflow.optuna.storage import MlflowStorage
experiment_id = mlflow.get_experiment_by_name(dbutils.notebook.entry_point.getDbutils().notebook().getContext().notebookPath().get()).experiment_id
mlflow_storage = MlflowStorage(experiment_id=experiment_id)
- Buat objek Studi Optuna, dan jalankan algoritma penyetelan dengan memanggil
optimizefungsi objek Studi.MlflowSparkStudydapat menjalankan studi Optuna paralel menggunakan eksekutor PySpark.
Di bawah ini adalah contoh dari dokumentasi Optuna.
- Buat sebuah studi, dan optimalkan fungsi
objectivedengan 8 uji coba (melakukan 8 pemanggilan fungsiobjectivedengan nilai berbeda padax). - Dapatkan parameter terbaik dari Studi
from mlflow.pyspark.optuna.study import MlflowSparkStudy
mlflow_study = MlflowSparkStudy(
study_name="spark-mlflow-tuning",
storage=mlflow_storage,
)
mlflow_study.optimize(objective, n_trials=8, n_jobs=4)
best_params = study.best_params
Contoh buku catatan
Notebook ini menyediakan contoh penggunaan Optuna untuk memilih model scikit-learn dan sekumpulan hyperparameter untuk himpunan data Iris.
Memperluas penyetelan hyperparameter dengan Optuna dan MLflow
API Integrasi Optuna MLFlow
MlflowStorage
MlflowStorage adalah kelas penyimpanan berbasis MLflow untuk Optuna dengan pemrosesan batch untuk menghindari pembatasan REST API.
| Nama Parameter Kelas | Tipe | Deskripsi |
|---|---|---|
experiment_id |
str |
ID eksperimen MLflow untuk penyimpanan |
name |
str |
Nama penyimpanan |
batch_flush_interval |
float |
Waktu dalam detik antara flush kelompok otomatis (default: 1,0 detik) |
batch_size_threshold |
float |
Jumlah maksimum item dalam batch sebelum memicu flush (default: 100) |
MlflowSparkStudy
MlflowSparkStudy adalah pembungkus kelas ~optuna.study.Study untuk menggabungkan Optuna dengan Spark melalui eksperimen MLflow.
| Nama Parameter Kelas | Tipe | Deskripsi |
|---|---|---|
study_name |
str |
Nama studi |
storage |
mlflow.optuna.MlflowStorage |
Kelas penyimpanan berbasis MLflow |
sampler |
samplers.BaseSampler |
Objek sampler yang mengimplementasikan algoritma latar belakang untuk saran nilai.
optuna.samplers.TPESampler digunakansebagai default. |
pruner |
float |
Objek pemangkas yang menentukan penghentian dini untuk percobaan yang tidak menjanjikan.
optuna.pruners.MedianPruner digunakansebagai default. |