<НА ГЛАВНУЮ

Создание продакшен-уровня 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

Switch to English