Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Optuna , birden çok işlem kaynağı arasında yatay olarak ölçeklendirilebilen hiper parametre ayarlamaya yönelik açık kaynak bir Python kitaplığıdır.
MLflow 3.0, Optuna ile tümleştirerek hiper parametre iyileştirmesi için güçlü yeni özellikler sunar.
-
MlflowStoragesınıfı, Optuna'nın depolama arka ucu olarak MLflow İzleme Sunucusu'nu kullanmasına izin verir. -
MlflowSparkStudysınıfı, PySpark yürütücülerini kullanarak paralel Optuna çalışmalarının başlatılmasını sağlar.
Optuna'yi yükleme
MLflow 3.0, Databricks Runtime 17.0 ML ve üzeri sürümlerde önceden yüklenmiştir. Eski çalışma zamanlarında, Optuna ve MLFlow'un en son sürümünü yüklemek için aşağıdaki komutları kullanın.
%pip install mlflow --upgrade
%pip install optuna
Optuna iyileştirmeyi paralel olarak çalıştırma
Optuna iş akışındaki adımlar şunlardır:
İyileştirecek bir nesnel işlev tanımlayın. Amaç işlevinde hiper parametre arama alanını tanımlayın. Daha fazla ayrıntı için Optuna belgelerine bakın.
Aşağıda, sckit-learn ile model seçimi ve hiper parametre ayarlama örneği verilmiştir. Örnek, objektif fonksiyonu
objectivetanımlar vesuggest_floatfonksiyonunu,xparametresinin arama alanını tanımlamak üzere çağırır.
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
- Dağıtılmış iyileştirme için paylaşılan bir depolama alanı oluşturun.
MlflowStorageile depolama arka ucu olarak MLflow İzleme Sunucusu'nu kullanabilirsiniz.
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)
- Bir Optuna Study nesnesi oluşturun ve Study nesnesinin
optimizeişlevini çağırarak ayarlama algoritmasını çalıştırın.MlflowSparkStudyPySpark yürütücülerini kullanarak paralel Optuna çalışmaları başlatmayı çalıştırabilir.
Aşağıda Optuna belgelerinden bir örnek verilmiştir.
- Bir Çalışma oluşturun ve
objectiveişlevini,objectiveişlevininxfarklı değerleriyle yapılan 8 çağrı ile optimize edin. - Çalışmanın en iyi parametrelerini alma
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
Not defteri örneği
Bu not defteri,
Optuna ve MLflow ile hiperparametre ayarlamasını ölçeklendirme
MLFlow Optuna Tümleştirme API'si
MlflowStorage
MlflowStorage REST API tıkanmasını önlemek için toplu işlem ile Optuna için MLflow tabanlı bir depolama sınıfıdır.
| Sınıf Parametresi adı | Türü | Açıklama |
|---|---|---|
experiment_id |
str |
Depolama için MLflow deneme kimliği |
name |
str |
Depolamanın adı |
batch_flush_interval |
float |
Otomatik toplu temizlemeler arasındaki saniye cinsinden süre (varsayılan: 1,0) |
batch_size_threshold |
float |
Temizleme tetiklemeden önce toplu işlemdeki en fazla öğe sayısı (varsayılan: 100) |
MlflowSparkStudy
MlflowSparkStudy , Optuna'nın MLflow denemesi aracılığıyla Spark ile entegre edilmesi için ~optuna.study.Study sınıfının bir sarmalayıcısıdır.
| Sınıf Parametresi adı | Türü | Açıklama |
|---|---|---|
study_name |
str |
Çalışmanın adı |
storage |
mlflow.optuna.MlflowStorage |
MLflow tabanlı depolama sınıfı |
sampler |
samplers.BaseSampler |
Değer önerisi için arka plan algoritması uygulayan bir örnekleyici nesnesi.
optuna.samplers.TPESampler kullanılırvarsayılan olarak. |
pruner |
float |
Ümit vermeyen deneylerin erken durdurulmasına karar veren bir budayıcı nesnesi.
optuna.pruners.MedianPruner kullanılırvarsayılan olarak. |