XGBoost Example
XGBoost Example
Файл: examples/xgboost/example.py. Самый полный и надёжный пример в репозитории — единственный, где корневой README и код полностью совпадают.
Данные: examples/xgboost/data/train_xgboost.csv и test_xgboost.csv (оба файла присутствуют в репозитории — пример готов к запуску "из коробки"). Конфигурация берётся из configs/settings.yaml через mlumina.core.MLuminaConfig.
Что делает скрипт
if __name__ == "__main__":
run_example() # локальный цикл: обучение + тюнинг без Ray
run_example_ray() # распределённый цикл: обучение + тюнинг через Ray
run_example() — локальный путь
get_config()— читает уже проинициализированныйMLuminaConfig(инициализация происходит автоматически при импортеmlumina.core.config, см. страницу Getting Started в книге «Документация MLumina»).xgboost_load_dataset(train_path=config.data.train_file, eval_path=config.data.eval_file, ray_data=False)— загружаетxgb.DMatrixиз CSV, путь к файлам берётся изconfigs/settings.yaml(data.train_file/data.eval_file).XGBoostModel(mlflow_uri=config.cluster.mlflow_uri).train(dtrain, deval, **config.training.xgboost.model_dump())— обучает модель с фиксированными параметрами из секцииtraining.xgboostконфига (objective,tree_method,subsample,colsample_bytree,num_boost_round,error_func).XGBoostTuningModel(...).run_optimization(dtrain, deval)— подбирает гиперпараметры локальным Optuna (диапазоны — из секцииtune.xgboostконфига).- Переобучает модель на лучших параметрах (
xgboost_tuning_model.train(...)) — отдельно от автоматического переобучения, котороеrun_optimizationуже делает сама внутри себя при включённом MLflow.
run_example_ray() — распределённый путь
То же самое, но:
ray.init(address=f"ray://{config.cluster.head_host}")— подключение к Ray-кластеру по адресу из конфига (cluster.head_host, напримерhead:10001внутри Docker-сети).xgboost_load_dataset(..., ray_data=True)(по умолчанию) — данные загружаются какRayDMatrix.XGBoostModel.train_ray(...)иXGBoostTuningModel.run_optimization_ray(...)— распределённое обучение/тюнинг черезxgboost_rayиray.tune.
Как запустить
Внутри контейнера с доступом к Ray-кластеру (например, docker compose exec head bash, либо через сервис scheduler):
python examples/xgboost/example.py
Перед запуском убедитесь, что configs/settings.yaml указывает на существующие файлы (data.train_file/data.eval_file — тип pydantic.FilePath, при отсутствии файла на диске конфигурация не проинициализируется вовсе, упадёт при импорте mlumina.core).
На что обратить внимание
- В
run_example()xgboost_tuning_model.train(...)в конце вызывается на экземпляре, хотяXGBoostModel.train—@staticmethod(Python это допускает); работает корректно, просто нетипичный стиль вызова. - При включённом
mlflow_uri(он передаётся автоматически изconfig.cluster.mlflow_uri)run_optimization/run_optimization_rayтеперь сами логируют финальную модель в MLflow — соответственно, ручное переобучение в концеrun_example()/run_example_ray()частично дублирует эту работу (не ошибка, просто модель обучается дважды: один раз внутри тюнинга для лога в MLflow, второй раз — явно в самом скрипте).