profession

level

3

ML engineer

An ML engineer turns a model into a service: fast, reliable, logged, monitored and safely released.

monthly pay

junior 120 000 ₽ · mid 230 000 ₽ · senior 400 000 ₽

The job is a model that keeps working in production, not only in a notebook.

20 blocks · 160 lessons

A profession cannot start free. It opens together with Python. Every course · 3899 ₽ / month

progress

0%

block 1

Профессия ML engineer

Модель в продакшене: путь запроса от признаков до ответа, чем ML engineer отличается от data scientist, ноутбук и сервис, версия модели, время ответа и лог запроса.

course
  1. 1Модель в продакшене2099 ₽
  2. 2ML engineer и data scientist2099 ₽
  3. 3Ноутбук против сервиса2099 ₽
  4. 4Версия модели2099 ₽
  5. 5Время ответа2099 ₽
  6. 6Из чего складывается ответ2099 ₽
  7. 7Лог одного запроса2099 ₽
  8. 8Пачка ответов2099 ₽
  9. Проверка блока2099 ₽

block 2

Числа сервиса

Латентность в миллисекундах и секундах, RPS и пропускная способность, сколько нужно серверов, бюджет латентности по этапам, стоимость инференса и память модели.

course
  1. 1Миллисекунды и секунды2099 ₽
  2. 2Запросы в секунду2099 ₽
  3. 3Сколько запросов выдержит сервер2099 ₽
  4. 4Сколько нужно серверов2099 ₽
  5. 5Бюджет латентности2099 ₽
  6. 6Стоимость инференса2099 ₽
  7. 7Память модели2099 ₽
  8. 8Худший и лучший ответ2099 ₽
  9. Проверка блока2099 ₽

block 3

Логи и сообщения

Строка лога f-строкой с уровнем и временем, числа в логах, разбор строки через find и срезы, нормализация входа, маскирование персональных данных, подсчёт ошибок и формат версии.

course
  1. 1Строка лога2099 ₽
  2. 2Числа в логе2099 ₽
  3. 3Разбор строки лога2099 ₽
  4. 4Время и уровень по позициям2099 ₽
  5. 5Нормализация входа2099 ₽
  6. 6Маскирование персональных данных2099 ₽
  7. 7Сколько ошибок в логе2099 ₽
  8. 8Формат версии2099 ₽
  9. Проверка блока2099 ₽

block 4

Проверка входа

Проверка типов и диапазонов признаков, коды ответа 200, 400 и 422, запасной ответ при плохом входе, правила с and, or и not, порог уверенности модели и выбор версии модели по флагу.

course
  1. 1Признак в допустимом диапазоне2099 ₽
  2. 2Тип признака2099 ₽
  3. 3Коды ответа 200, 400, 4222099 ₽
  4. 4Запасной ответ2099 ₽
  5. 5Правила допуска с not2099 ₽
  6. 6Порог уверенности2099 ₽
  7. 7Выбор версии модели2099 ₽
  8. 8Проверка запроса целиком2099 ₽
  9. Проверка блока2099 ₽

block 5

Повторы и очереди

Повтор запроса с лимитом попыток, экспоненциальная задержка, таймаут по суммарному времени, обработка очереди циклом while, break на первой ошибке, continue для битых запросов, накопительные счётчики и предохранитель.

course
  1. 1Повтор запроса2099 ₽
  2. 2Экспоненциальная задержка2099 ₽
  3. 3Таймаут по суммарному времени2099 ₽
  4. 4Очередь запросов2099 ₽
  5. 5Стоп на первой ошибке2099 ₽
  6. 6Пропуск битых запросов2099 ₽
  7. 7Накопительные метрики2099 ₽
  8. 8Предохранитель2099 ₽
  9. Проверка блока2099 ₽

block 6

Пакетная обработка

Инференс по списку запросов, батчи по N через range с шагом, время батча против обработки по одному, пропускная способность, средняя и максимальная латентность, подсчёт ошибок 5xx, распределение по репликам и подбор батча под лимит памяти.

course
  1. 1Инференс по списку запросов2099 ₽
  2. 2Батчи по N запросов2099 ₽
  3. 3Батч против вызовов по одному2099 ₽
  4. 4Пропускная способность2099 ₽
  5. 5Средняя и максимальная задержка2099 ₽
  6. 6Считаем ошибки 5xx2099 ₽
  7. 7Распределение по репликам2099 ₽
  8. 8Батч под лимит памяти2099 ₽
  9. Проверка блока2099 ₽

block 7

Латентность и перцентили

Сбор латентностей в список, медиана против среднего, p50/p95/p99 по индексу, отбрасывание прогрева, скользящее окно последних запросов, проверка SLO, топ медленных запросов и объединение логов реплик.

course
  1. 1Собираем латентности в список2099 ₽
  2. 2Медиана вместо среднего2099 ₽
  3. 3Перцентили p50, p95, p992099 ₽
  4. 4Отбрасываем прогрев2099 ₽
  5. 5Скользящее окно запросов2099 ₽
  6. 6SLO: 95% быстрее 200 мс2099 ₽
  7. 7Топ медленных запросов2099 ₽
  8. 8Перцентили не усредняют2099 ₽
  9. Проверка блока2099 ₽

block 8

Сравнение версий

Shadow-режим через zip старой и новой версии, доля и номера расхождений через enumerate, проверки all и any, попарное сравнение латентности, регрессия на эталонных примерах и решение о выкатке.

course
  1. 1Shadow-режим: две версии на одном трафике2099 ₽
  2. 2Доля расхождений с допуском2099 ₽
  3. 3Номера расходящихся запросов2099 ₽
  4. 4Все ответы валидны: all2099 ₽
  5. 5Хоть один сбой: any2099 ₽
  6. 6Латентность версий попарно2099 ₽
  7. 7Регрессия на эталонных примерах2099 ₽
  8. 8Решение о выкатке2099 ₽
  9. Проверка блока2099 ₽

block 9

Конвейер функциями

Шаги preprocess, predict и postprocess функциями, функция-конвейер, порог и версия по умолчанию, возврат прогноза вместе со временем, функция-проверка входа, чистые функции и воспроизводимость, параметры нормализации из обучения и обработка батча.

course
  1. 1Три шага инференса2099 ₽
  2. 2Функция-конвейер2099 ₽
  3. 3Порог и версия по умолчанию2099 ₽
  4. 4Прогноз вместе со временем2099 ₽
  5. 5Функция-проверка входа2099 ₽
  6. 6Чистые функции и воспроизводимость2099 ₽
  7. 7Нормализация из обучения2099 ₽
  8. 8Батч через конвейер2099 ₽
  9. Проверка блока2099 ₽

block 10

Запросы и версии

Разбор query-строки через split, проверка чисел через isdigit, разбор строки лога, сборка ответа через join, сравнение семантических версий по частям, совместимость клиента и модели, файлы модели по расширению и проверка формата id.

course
  1. 1Разбор query-строки2099 ₽
  2. 2Числа из запроса: isdigit2099 ₽
  3. 3Поля лога через split2099 ₽
  4. 4Сборка ответа через join2099 ₽
  5. 5Семантическая версия по частям2099 ₽
  6. 6Совместимость клиента и модели2099 ₽
  7. 7Файлы модели по расширению2099 ₽
  8. 8Проверка формата id2099 ₽
  9. Проверка блока2099 ₽

block 11

Запросы и кэш

Запрос и ответ модели как словари, feature store, кэш предсказаний и его hit rate, конфиг сервиса со значениями по умолчанию, коды ответов, версии моделей по клиентам и кэш с ограничением размера.

course
  1. 1Запрос и ответ2099 ₽
  2. 2Feature store2099 ₽
  3. 3Кэш предсказаний2099 ₽
  4. 4Hit rate и латентность2099 ₽
  5. 5Конфиг сервиса2099 ₽
  6. 6Коды ответов2099 ₽
  7. 7Версии моделей по клиентам2099 ₽
  8. 8Кэш с ограничением размера2099 ₽
  9. Проверка блока2099 ₽

block 12

Схема признаков

Обязательные и лишние поля запроса через разность множеств, допустимые категории и замена неизвестных на «other», дедупликация повторных запросов, версии кортежами, кортежи как ключи кэша и сверка схемы обучения с продом.

course
  1. 1Обязательные поля2099 ₽
  2. 2Лишние поля2099 ₽
  3. 3Допустимые категории2099 ₽
  4. 4Неизвестные значения2099 ₽
  5. 5Повторные запросы2099 ₽
  6. 6Версия кортежем2099 ₽
  7. 7Ключ кэша кортежем2099 ₽
  8. 8Схема обучения и прода2099 ₽
  9. Проверка блока2099 ₽

block 13

Отказоустойчивость

try/except вокруг модели, fallback-прогноз, свои ValueError и TimeoutError, учёт запросов в finally, circuit breaker, graceful degradation и отчёт по типам ошибок.

course
  1. 1Модель не роняет сервис2099 ₽
  2. 2Fallback-прогноз2099 ₽
  3. 3Своя ValueError2099 ₽
  4. 4Таймаут модели2099 ₽
  5. 5Учёт в finally2099 ₽
  6. 6Circuit breaker2099 ₽
  7. 7Graceful degradation2099 ₽
  8. 8Отчёт по типам ошибок2099 ₽
  9. Проверка блока2099 ₽

block 14

Реестр моделей

Реестр версий как список словарей, сортировка через lambda по метрике и дате, требования по латентности, чемпион и претендент, правило продвижения в production, откат на предыдущую версию и канареечная доля трафика.

course
  1. 1Записи реестра2099 ₽
  2. 2Сортировка по метрике2099 ₽
  3. 3Свежие версии2099 ₽
  4. 4Требования по латентности2099 ₽
  5. 5Чемпион и претендент2099 ₽
  6. 6Правило продвижения2099 ₽
  7. 7Откат версии2099 ₽
  8. 8Канареечный трафик2099 ₽
  9. Проверка блока2099 ₽

block 15

Мониторинг

Модули statistics, math, hashlib, collections и json в мониторинге модели: онлайн-признаки против обучающих, дрейф в сигмах, PSI по корзинам, перцентили латентности, стабильная A/B-маршрутизация по хешу, распределение прогнозов, структурированный лог и алерт по порогу.

course
  1. 1Онлайн против обучения2099 ₽
  2. 2Дрейф в сигмах2099 ₽
  3. 3PSI по корзинам2099 ₽
  4. 4Перцентили латентности2099 ₽
  5. 5Стабильная A/B-маршрутизация2099 ₽
  6. 6Распределение прогнозов2099 ₽
  7. 7Структурированный лог2099 ₽
  8. 8Алерт по порогу2099 ₽
  9. Проверка блока2099 ₽

block 16

Сервис классами

Собираем сервис прогноза классами: модель с версией и predict, dataclass запроса и ответа, конвейер признаков, сервер с валидацией, кэш, счётчики метрик и наследование моделей с одним интерфейсом.

course
  1. 1Модель как объект2099 ₽
  2. 2Запрос и ответ: dataclass2099 ₽
  3. 3Конвейер признаков2099 ₽
  4. 4Сервер модели2099 ₽
  5. 5Валидация на входе2099 ₽
  6. 6Кэш прогнозов2099 ₽
  7. 7Счётчики метрик2099 ₽
  8. 8Наследование: один интерфейс2099 ₽
  9. Проверка блока2099 ₽

block 17

Артефакты модели

Модель как файл: параметры и метаданные в JSON, реестр версий, журнал запросов JSONL с дозаписью, чтение журнала и метрики по нему, конфиг сервиса из файла и проверка версии схемы при загрузке.

course
  1. 1Модель в JSON2099 ₽
  2. 2Метаданные артефакта2099 ₽
  3. 3Реестр версий2099 ₽
  4. 4Журнал запросов JSONL2099 ₽
  5. 5Чтение журнала2099 ₽
  6. 6Метрики по журналу2099 ₽
  7. 7Конфиг сервиса из файла2099 ₽
  8. 8Совместимость схемы2099 ₽
  9. Проверка блока2099 ₽

block 18

Тесты и релиз

Как выпускать модель без аварий: тесты функциями, эталонные примеры, инварианты диапазона и монотонности, регрессия против старой версии, канареечный релиз 5% → 25% → 100%, продвижение и откат по метрикам и чек-лист релиза.

course
  1. 1Тест — это функция2099 ₽
  2. 2Эталонные примеры2099 ₽
  3. 3Инвариант: вероятность в [0, 1]2099 ₽
  4. 4Инвариант: монотонность2099 ₽
  5. 5Регрессия против старой версии2099 ₽
  6. 6Канарейка: доля трафика2099 ₽
  7. 7Продвижение по ступеням2099 ₽
  8. 8Чек-лист релиза2099 ₽
  9. Проверка блока2099 ₽

block 19

Проект: сервис скоринга

Собираем сервис скоринга заявок на рассрочку: загрузка модели из JSON, класс Scorer с логистической формулой, валидация, кэш, журнал JSONL, метрики латентности, A/B двух версий по хешу и отчёт сервиса.

course
  1. 1Модель из артефакта2099 ₽
  2. 2Класс Scorer2099 ₽
  3. 3Валидация заявки2099 ₽
  4. 4Кэш с версией в ключе2099 ₽
  5. 5Журнал JSONL2099 ₽
  6. 6Метрики латентности2099 ₽
  7. 7A/B двух версий по хешу2099 ₽
  8. 8Отчёт сервиса2099 ₽
  9. Проверка блока2099 ₽

block 20

Итоговый кейс: инцидент

Разбираем инцидент после релиза по журналу сервиса: симптомы, рост p95, дрейф признака, срез по версии приложения, баг единиц измерения, сдвиг прогнозов, решение «откат или фикс» и постмортем.

course
  1. 1Симптомы в цифрах2099 ₽
  2. 2Латентность до и после2099 ₽
  3. 3Дрейф признака2099 ₽
  4. 4Срез по версии приложения2099 ₽
  5. 5Баг единиц измерения2099 ₽
  6. 6Сдвиг распределения прогнозов2099 ₽
  7. 7Откат или фикс2099 ₽
  8. 8Постмортем2099 ₽
  9. Проверка блока2099 ₽