Создание продакшен-уровня AutoML с AutoGluon
Эффективные AutoML пайплайны для табличных моделей с использованием AutoGluon.
Обзор
В этом туториале мы создаем продакшен-уровень табличной машинного обучения с помощью AutoGluon, обрабатывая реальный набор данных от сырого инжеста до готовых артефактов для развертывания.
Настройка окружения
Начнем с установки необходимых библиотек:
!pip -q install -U "autogluon==1.5.0" "scikit-learn>=1.3" "pandas>=2.0" "numpy>=1.24"И конфигурации необходимых импортов:
import os, time, json, warnings
warnings.filterwarnings("ignore")
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.metrics import roc_auc_score, log_loss, accuracy_score, classification_report
from autogluon.tabular import TabularPredictorПодготовка набора данных
Используем fetch_openml(), чтобы загрузить реальный набор данных:
df = fetch_openml(data_id=40945, as_frame=True).frame
target = "survived"
df[target] = df[target].astype(int)
drop_cols = [c for c in ["boat", "body", "home.dest"] if c in df.columns]
df = df.drop(columns=drop_cols, errors="ignore")Валидация набора данных и выполнение стратифицированного разделения:
train_df, test_df = train_test_split(
df,
test_size=0.2,
random_state=42,
stratify=df[target],
)Инициализация модели
Проверяем наличие GPU для выбора пресета обучения:
def has_gpu():
try:
import torch
return torch.cuda.is_available()
except Exception:
return False
presets = "extreme" если has_gpu() иначе "best_quality"
predictor = TabularPredictor(
label=target,
eval_metric="roc_auc",
path="/content/autogluon_titanic_advanced",
verbosity=2
)Обучение модели
Затем обучаем предсказатель:
start = time.time()
predictor.fit(
train_data=train_df,
presets=presets,
time_limit=7 * 60,
num_bag_folds=5,
num_stack_levels=2,
refit_full=False
)
train_time = time.time() - start
print(f"\nОбучение завершено за {train_time:.1f}s с presets='{presets}'")Оценка модели
С помощью тестового набора оцениваем модель и генерируем ключевые метрики:
lb = predictor.leaderboard(test_df, silent=True)
print("
=== Лидеры (топ 15) ===")
display(lb.head(15))
proba = predictor.predict_proba(test_df)
pred = predictor.predict(test_df)Анализ поведения модели
Мы можем проанализировать производительность модели и важность признаков:
fi = predictor.feature_importance(test_df, silent=True)
print("\n=== Важность признаков (топ 20) ===")
display(fi.head(20))Оптимизация для вывода
Мы можем сократить бэггированные модели для более быстрого вывода:
refit_map = predictor.refit_full()
print(f"\nrefit_full завершен за {t_refit:.1f}s")
lb_full = predictor.leaderboard(test_df, silent=True)
print("
=== Лидеры после refit_full (топ 15) ===")
display(lb_full.head(15))Заключение
Реализовав полностью автоматизированный рабочий процесс с AutoGluon, мы можем эффективно управлять сырье табличных данных, обеспечивая их готовность к развертыванию с высокой производительностью и надежностью.
Switch Language
Read this article in English