Hiperparaméter-finomhangolás optunával
Az Optuna egy nyílt forráskódú Python-kódtár a hiperparaméterek finomhangolásához, amely horizontálisan skálázható több számítási erőforrásra. Az Optuna az MLflow-val is integrálható a modell- és próbaverziókövetés és -monitorozás érdekében.
Az Optuna telepítése
Az Optuna és integrációs moduljának telepítéséhez használja az alábbi parancsokat.
%pip install optuna
%pip install optuna-integration # Integration with MLflow
Keresési terület meghatározása és Optuna-optimalizálás futtatása
Az Optuna-munkafolyamat lépései a következők:
- Definiáljon egy optimalizálni kívánt objektív függvényt. A célfüggvényen belül adja meg a hiperparaméter keresési területét.
- Hozzon létre egy Optuna Study objektumot, és futtassa a hangolási algoritmust a
optimize
Tanulmány objektum függvényének meghívásával.
Az alábbiakban egy minimális példát talál az Optuna dokumentációjából.
- Határozza meg az objektív függvényt
objective
, és hívja meg asuggest_float
függvényt a paraméterx
keresési helyének meghatározásához. - Hozzon létre egy tanulmányt, és optimalizálja a
objective
függvényt 100 próbaverzióval, azaz a függvény 100 hívásávalobjective
, különböző értékekkelx
. - A tanulmány legjobb paramétereinek lekérése
def objective(trial):
x = trial.suggest_float("x", -10, 10)
return (x - 2) ** 2
study = optuna.create_study()
study.optimize(objective, n_trials=100)
best_params = study.best_params
Optuna-próbaverziók párhuzamosítása több géppel
Az Optuna-próbaverziókat több gépre is terjesztheti egy Azure Databricks-fürtben a Joblib Apache Spark Háttérrendszerrel.
import joblib
from joblibspark import register_spark
register_spark() # register Spark backend for Joblib
with joblib.parallel_backend("spark", n_jobs=-1):
study.optimize(objective, n_trials=100)
Integrálás az MLflow-jal
Az Optuna-kísérletek hiperparamétereinek és metrikáinak nyomon követéséhez használja az MLflowCallback
Optuna-integrációs modulokat, amikor meghívja a függvényt optimize
.
import mlflow
from optuna.integration.mlflow import MLflowCallback
mlflow_callback = MLflowCallback(
tracking_uri="databricks",
metric_name="accuracy",
create_experiment=False,
mlflow_kwargs={
"experiment_id": experiment_id
}
)
study.optimize(objective, n_trials=100, callbacks=[mlflow_callback])
Példa jegyzetfüzetre
Ez a jegyzetfüzet egy példa arra, hogy az Optuna használatával választ ki egy scikit-learn modellt és egy hiperparaméter-készletet az Írisz-adatkészlethez.
Az egygépes Optuna-munkafolyamaton felül a jegyzetfüzet bemutatja, hogyan
- Optuna-próbaverziók párhuzamosítása több géppel a Joblib használatával
- Próbafuttatások nyomon követése az MLflow használatával