Создание воспроизводимых конвейеров машинного обучения
Конвейер sklearn, сохранение конвейеров с joblib, параметризованные запуски с конфигурационными файлами
«Создание воспроизводимых конвейеров машинного обучения» — бесплатный урок Learn AI with Python на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Learn AI with Python, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Learn AI with Python содержит 4 уроков всего.
Зачем нужна воспроизводимость?
Результат, который нельзя воспроизвести, — это не наука, а удача. Воспроизводимые конвейеры гарантируют, что одни и те же данные и конфигурация всегда дадут одну и ту же модель. Это необходимо для отладки, аудита и командной работы.
Конвейер sklearn
Конвейер scikit-learn объединяет предварительную обработку и модель в один объект. Поэтому при выводе применяются в точности те же преобразования, что и при обучении, а несоответствие между обучением и обслуживанием устраняется.
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.ensemble import RandomForestClassifier
pipe = Pipeline([
("scaler", StandardScaler()),
("model", RandomForestClassifier(n_estimators=200))
])
pipe.fit(X_train, y_train)Сохранение конвейера как артефакта
Поскольку весь конвейер является одним объектом, его можно сохранить как единый артефакт и загрузить в любом месте, зная, что предварительная обработка перемещается вместе с моделью.
joblib.dump и load
joblib эффективно сериализует объекты scikit-learn и лучше pickle работает с большими массивами NumPy. Сохраните обученный конвейер, а затем загрузите его заново для обслуживания.
import joblib
joblib.dump(pipe, "pipeline.joblib") # save
loaded = joblib.load("pipeline.joblib") # reload
preds = loaded.predict(X_new)Конфигурация YAML для гиперпараметров
Жёстко заданные значения скрывают настройки, использованные при запуске. Поместите все гиперпараметры в файл YAML, чтобы каждая настройка была явной, контролировалась системой управления версиями и изменялась без редактирования кода.
# config.yaml
model:
n_estimators: 200
max_depth: 8
data:
test_size: 0.2
random_state: 42Загрузка конфигурации
Прочитайте YAML один раз при запуске и передайте значения в конвейер, чтобы один файл управлял всем запуском.
import yaml
with open("config.yaml") as f:
cfg = yaml.safe_load(f)
model = RandomForestClassifier(
n_estimators=cfg["model"]["n_estimators"],
max_depth=cfg["model"]["max_depth"]
)Фиксация случайных начальных значений
Для воспроизводимости также нужны фиксированные случайные начальные значения повсюду: при разделении на обучающую и проверочную выборки, инициализации модели и любом перемешивании. Сохраните начальное значение в конфигурации YAML, чтобы оно было явным и единообразным.
from sklearn.model_selection import train_test_split
X_tr, X_te, y_tr, y_te = train_test_split(
X, y, test_size=cfg["data"]["test_size"],
random_state=cfg["data"]["random_state"]
)Makefile для повторяемых шагов
Makefile превращает каждый этап конвейера в именованную цель, поэтому любой участник команды может выполнить make train, не запоминая длинные команды. Это унифицирует рабочий процесс команды.
Определение целей Make
Распространённые цели — make data, make train и make evaluate; каждая вызывает соответствующий сценарий.
# Makefile
data:
python src/prepare_data.py
train:
python src/train.py --config config.yaml
evaluate:
python src/evaluate.py --config config.yamlСвязывание зависимостей
Цели Make могут зависеть друг от друга, поэтому make train при необходимости сначала запускает data. Это гарантирует правильный порядок выполнения конвейера.
train: data
python src/train.py --config config.yamlОбъединение всех компонентов
Воспроизводимая конфигурация включает конвейер, сохранённый с помощью joblib, все гиперпараметры в YAML, фиксированные начальные значения и Makefile с целями make data / train / evaluate. Любой участник может клонировать репозиторий и воспроизвести Вашу модель в точности.
Быстрая проверка
Проверьте свои знания о воспроизводимых конвейерах.
Итоги
Вы создали воспроизводимые конвейеры: конвейер sklearn, сохранённый с помощью joblib.dump/load, конфигурацию YAML со всеми гиперпараметрами, зафиксированные случайные начальные значения и Makefile с целями make data / train / evaluate. Далее: мониторинг моделей в рабочей среде.
Часто задаваемые вопросы
Урок «Создание воспроизводимых конвейеров машинного обучения» бесплатный?
Да — полный текст урока «Создание воспроизводимых конвейеров машинного обучения» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Learn AI with Python, подпишись на CoddyKit PRO. Курс Learn AI with Python содержит 4 уроков всего.
Чему я научусь в уроке «Создание воспроизводимых конвейеров машинного обучения»?
Конвейер sklearn, сохранение конвейеров с joblib, параметризованные запуски с конфигурационными файлами Ты практикуешь Learn AI with Python с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Learn AI with Python?
Предыдущий опыт не требуется. Learn AI with Python на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.
Сколько времени занимает урок «Создание воспроизводимых конвейеров машинного обучения»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Learn AI with Python?
Да. Каждый урок Learn AI with Python включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Отслеживание экспериментов с MLflow
- Реестр моделей и управление версиями
- Создание воспроизводимых конвейеров машинного обучения
- Мониторинг производительности модели в продуктивной среде