Ray Wrapper: Linear Regression and SVM
Ray Wrapper: Linear Regression and SVM
Самые простые примеры из ray_wrapper/examples/ — хорошая отправная точка, чтобы понять паттерн ray.tune.Tuner, используемый во всех остальных моделях пакета mlumina.ray_wrapper. У обеих моделей есть только tune.py (готовой функции train_* без подбора гиперпараметров для них не предусмотрено).
Linear Regression — ray_wrapper/examples/lin_reg/tune.py
ray.init(address="auto")
search_space = {
"fit_intercept": tune.choice([True, False]),
"positive": tune.choice([True, False]),
"test_size": 0.2,
"random_state": 42,
}
tune_lin_reg(search_space=search_space, num_samples=4, resources={"CPU": 1}, max_concurrent_trials=4)
Внутри (ray_wrapper/models/lin_reg/lin_reg.py) каждый trial строит sklearn-датасет diabetes (build_sklearn_ray_datasets, регрессия), обучает sklearn.linear_model.LinearRegression с параметрами из search_space, репортит rmse/r2. Отбор — ASHAScheduler(metric="rmse", mode="min"). test_size/random_state передаются как обычные (не варьируемые) значения конфига — tune.choice/tune.loguniform применяются только к fit_intercept/positive.
SVM — ray_wrapper/examples/svm/tune.py
ray.init(address="auto")
search_space = {
"kernel": tune.choice(["rbf", "linear", "poly"]),
"C": tune.loguniform(1e-2, 1e2),
"gamma": tune.choice(["scale", "auto"]),
"degree": tune.choice([2, 3, 4]),
"class_weight": tune.choice([None, "balanced"]),
"test_size": 0.2,
"random_state": 42,
}
tune_svm(search_space=search_space, num_samples=8, resources={"CPU": 1}, max_concurrent_trials=4)
В отличие от lin_reg, это классификация: внутри (ray_wrapper/models/svm/svm.py) каждый trial строит датасет breast_cancer (бинарная классификация), обучает Pipeline(StandardScaler → SVC(kernel, C, gamma, degree, class_weight)), репортит accuracy. Отбор — ASHAScheduler(metric="accuracy", mode="max").
Как запустить
Оба скрипта вызывают ray.init(address="auto") — рассчитаны на запуск изнутри кластера (в контейнере head/worker, где переменная окружения RAY_ADDRESS/сокет автообнаружения кластера уже настроены), либо нужно подключаться явно через ray://<head>:10001, поправив скрипт:
# из контейнера head/worker
python ray_wrapper/examples/lin_reg/tune.py
python ray_wrapper/examples/svm/tune.py
Результаты (tune.Tuner.fit() → ResultGrid) сохраняются локально в /tmp/ray_results/tune_lin_reg_<uuid> / tune_svm_<uuid> на том узле, где физически исполнялся driver-процесс trial'а — при работе на многих worker'ах это может быть не тот узел, с которого был запущен скрипт.
No comments to display
No comments to display