mle-workflow
affaan-m/ECC
Превратите прототипную модель в рабочую систему машинного обучения с помощью контрактов на данные, повторяемого обучения, измеримых контрольных точек качества, готовых к развертыванию артефактов и оперативного мониторинга.
...Расширить всеРабочий процесс в области инженерии машинного обучения
Используйте этот навык, чтобы превратить работу над моделью в производственную систему машинного обучения с четкими соглашениями об обмене данными, повторяемым обучением, измеримыми контрольными точками качества, готовыми к развертыванию артефактами и оперативным мониторингом.
Когда следует активировать
- При планировании или анализе производственной функции машинного обучения, обновления модели, системы ранжирования, рекомендательной системы, классификатора, рабочего процесса встраивания или конвейера прогнозирования
- Преобразование кода из ноутбука в повторно используемый конвейер обучения, оценки, пакетного или онлайн-вывода
- Разработка критериев продвижения моделей, офлайн- и онлайн-оценок, отслеживания экспериментов или путей отката
- Отладка сбоев, вызванных дрифтом данных, утечкой меток, устаревшими признаками, несоответствием артефактов или несогласованностью логики обучения и обслуживания
- Добавление мониторинга модели, канарного развертывания, тестового трафика или проверок качества после развертывания
Калибровка области применения
Используйте только те «полосы», которые подходят для конкретной системы. Этот навык полезен для ранжирования, поиска, рекомендаций, классификаторов, прогнозирования, встраивания, рабочих процессов LLM, обнаружения аномалий и пакетной аналитики, но он не должен навязывать одну архитектуру для всех этих задач.
- Не следует предполагать, что каждая модель имеет меченые данные с учителем, онлайн-обслуживание, хранилище признаков, PyTorch, графические процессоры (GPU), проверку человеком, A/B-тесты или обратную связь в реальном времени.
- Не добавляйте громоздкие механизмы MLOps, если договор о данных, базовые настроек, скрипт оценки и инструкции по откату позволяют провести проверку изменений.
- Обязательно явно формулируйте допущения, если в проекте отсутствуют метки, результаты поступают с задержкой, определения срезов, производственный трафик или ответственность за мониторинг.
- Рассматривайте примеры как взаимозаменяемые шаблоны. Заменяйте метрики, режим обслуживания, хранилища данных и механизмы развертывания на эквиваленты, характерные для конкретного проекта.
Связанные навыки
python-patternsиpython-testingдля реализации на Python и покрытия с помощью pytestpytorch-patternsдля моделей глубокого обучения, модулей загрузки данных, работы с устройствами и циклов обученияeval-harnessиai-regression-testingдля контрольных точек развертывания и регрессионных проверок с помощью агентовdatabase-migrations,postgres-patterns, а такжеclickhouse-ioдля хранения данных и аналитических интерфейсовdeployment-patterns,docker-patterns, а такжеsecurity-reviewдля серверов, секретных данных, контейнеров и укрепления производственной среды
Повторно используйте среду разработки программного обеспечения
Не следует рассматривать машинное обучение (MLE) отдельно от разработки программного обеспечения. Большинство рабочих процессов ECC в области разработки программного обеспечения (SWE) напрямую применимы к системам машинного обучения, причём зачастую с более строгими режимами отказов:
Рекомендуемая minimal --with capability:machine-learning установка обеспечивает доступность основной поверхности агента наряду с этим навыком. Для тестовых наборов, состоящих только из навыков или ограниченных агентом, используйте в паре skill:mle-workflow с agent:mle-reviewer там, где целевая среда поддерживает агенты.
| Интерфейс разработки программного обеспечения | Использование MLE |
|---|---|
product-capability / architecture-decision-records |
Превращайте работу с моделями в явные контракты на продукт и фиксируйте необратимые решения относительно данных, моделей и способов внедрения |
repo-scan / codebase-onboarding / code-tour |
Выясните существующие процессы обучения, выделения признаков, развертывания, оценки и мониторинга перед внедрением параллельного стека машинного обучения |
plan / feature-dev |
Определяйте изменения модели как возможности продукта с этапами подготовки данных, оценки, развертывания и отката |
tdd-workflow / python-testing |
Перед внедрением протестируйте преобразования признаков, логику сегментации, вычисления метрик, загрузку артефактов и схемы инференса |
code-reviewer / mle-reviewer |
Проверяйте качество кода, а также риски, характерные для машинного обучения, такие как утечки, воспроизводимость, развертывание и мониторинг |
build-fix / pr-test-analyzer |
Диагностируйте сбои в непрерывной интеграции (CI), нестабильные оценки, отсутствующие тестовые наборы, а также сбои моделей или зависимостей, связанные со средой |
quality-gate / test-coverage |
Требуйте автоматизированного подтверждения для преобразований, метрик, контрактов вывода, контрольных точек развертывания и поведения при откате |
eval-harness / verification-loop |
Превратите офлайн-метрики, проверки срезов, бюджеты задержки и тренировки отката в повторяемые контрольные точки |
ai-regression-testing |
Зафиксируйте каждую ошибку в производственной среде как регрессию: отсутствующую функцию, устаревшую метку, некорректный артефакт, дрейф схемы или несоответствие при обслуживании |
api-design / backend-patterns |
Разрабатывайте API прогнозирования, пакетные задания, идемпотентные конечные точки переобучения и конверты ответов |
database-migrations / postgres-patterns / clickhouse-io |
Версионные метки, моментальные снимки функций, журналы прогнозирования, метрики экспериментов и аналитика дрейфа |
deployment-patterns / docker-patterns |
Объединяйте воспроизводимые образы обучения и обслуживания с проверками работоспособности, ограничениями ресурсов и откатом |
canary-watch / dashboard-builder |
Обеспечьте прозрачность работоспособности развертывания с помощью панелей мониторинга версий моделей, сегментов, отклонений, задержек, затрат и отложенных меток |
security-review / security-scan |
Проверяйте артефакты моделей, ноутбуки, подсказки, наборы данных и журналы на наличие секретной информации, персональных данных, небезопасной десериализации и рисков цепочки поставок |
e2e-testing / browser-qa / accessibility |
Тестируйте критические продуктовые потоки, использующие прогнозы, включая объясняемость и состояния резервного интерфейса пользователя |
benchmark / performance-optimizer |
Измеряйте пропускную способность, задержку p95, использование памяти и GPU, а также стоимость одного прогноза или переобучения |
cost-aware-llm-pipeline / token-budget-advisor |
Направляйте рабочие нагрузки LLM/встраивания в зависимости от качества, задержки и бюджета, а не по умолчанию на самую большую модель |
documentation-lookup / search-first |
Перед началом программирования проверьте текущее поведение библиотек для обслуживания моделей, хранилищ признаков, векторных баз данных и инструментов оценки |
git-workflow / github-ops / opensource-pipeline |
Сборка изменений MLE для рецензирования с четко очерченной областью охвата, исключением сгенерированных артефактов и воспроизводимыми доказательствами тестирования |
strategic-compact / dmux-workflows |
Разделение длительных задач машинного обучения на параллельные направления: контракт на данные, набор инструментов оценки, путь предоставления, мониторинг и документация |
Десять симуляций задач MLE
Используйте эти симуляции для проверки полноты охвата при планировании или рецензировании работ по MLE. Эффективный рабочий процесс MLE должен сводить каждую задачу к явным контрактам, повторно используемым интерфейсам для инженеров-программистов (SWE), автоматизированным доказательствам и артефактам, поддающимся рецензированию.
| ID | Типичная задача MLE | Оптимизированный путь ECC | Требуемый результат | Охваченные этапы конвейера |
|---|---|---|---|---|
| MLE-01 | Определение неоднозначной задачи прогнозирования, ранжирования, рекомендаций, классификации, встраивания или прогнозирования | product-capability, plan, architecture-decision-records, mle-workflow |
Итерация Краткое определение заинтересованных сторон, лица, принимающего решение, показателя успеха, недопустимых ошибок, допущений, ограничений и первого эксперимента | контракт на продукт, убытки заинтересованных сторон, риски, внедрение |
| MLE-02 | Определите целевые показатели, метки, источники данных и допустимый уровень ошибок | repo-scan, database-reviewer, database-migrations, postgres-patterns, clickhouse-io |
Договор о данных и метриках с детализацией по сущностям, временем присвоения меток, доверием к меткам, временем формирования признаков, соединениями на определенный момент времени, политикой разбиения и моментальным снимком набора данных | контракт на данные, проектирование метрик, утечка данных, воспроизводимость |
| MLE-03 | Постройте базовую модель и путь оценки перед добавлением сложности | tdd-workflow, python-testing, python-patterns, code-reviewer |
Базовый оцениватель с матрицей путаницы, примечаниями по калибровке, оценкой задержки/стоимости, известными слабыми местами и тестами на форму оценки и детерминизм | базовая модель, оценка, тестирование, паритет обслуживания |
| MLE-04 | Генерируйте признаки на основе гипотез о том, что определяет различия в результатах | python-patterns, pytorch-patterns, docker-patterns, deployment-patterns |
План выделения признаков и модуль преобразования, охватывающие источники сигнала, пропущенные значения, выбросы, корреляции, проверки утечки и эквивалентность обучения и сервиса | конвейер признаков, утечка данных, обучение, артефакты |
| MLE-05 | Настройка пороговых значений, конфигураций и сложности модели с учетом компромиссов | eval-harness, ai-regression-testing, quality-gate, test-coverage |
Отчет по пороговым значениям и конфигурациям, сравнивающий точность, полноту, F1, AUC, калибровку, срезы по группам, задержку, затраты, сложность и классы допустимых ошибок | оценка, пороговое значение, продвижение, регрессия |
| MLE-06 | Проведите анализ ошибок и используйте их в следующем эксперименте | eval-harness, ai-regression-testing, mle-reviewer, silent-failure-hunter |
Отчет о кластерах ошибок для ложных срабатываний, пропущенных сигналов, неоднозначных меток, устаревших признаков, отсутствующих сигналов и трассировок ошибок с извлеченными уроками | анализ ошибок, трассировка ошибок, итерация, регрессия |
| MLE-07 | Упаковка артефакта модели для пакетного или онлайн-вывода | api-design, backend-patterns, security-review, security-scan |
Пакет артефактов с управлением версиями, включающий предварительную обработку, конфигурацию, ограничения зависимостей, проверку схемы, безопасную загрузку и журналы, защищающие персональные данные | артефакт, безопасность, договор о выводах |
| MLE-08 | Развертывание онлайн-обслуживания или пакетной оценки с фиксацией обратной связи | api-design, backend-patterns, e2e-testing, browser-qa, accessibility |
Конечная точка прогнозирования или пакетная задача с конвертом ответа, таймаутом, пакетной обработкой, резервным вариантом, версией модели, уровнем достоверности, регистрацией обратной связи и тестами продуктового потока | обслуживание, пакетная инференция, резервный вариант, рабочий процесс пользователя |
| MLE-09 | Развертывание модели с использованием тестового трафика, тестов «канарейка» и A/B-тестов или отката | canary-watch, dashboard-builder, verification-loop, performance-optimizer |
План развертывания с указанием распределения трафика, информационных панелей, задержки p95, стоимости, ограничений качества, артефакта отката и триггера отката | развертывание, тестирование «канарейки», откат |
| MLE-10 | Эксплуатация, отладка и обновление производственной модели после запуска | silent-failure-hunter, dashboard-builder, mle-reviewer, doc-updater, github-ops |
Журнал наблюдений и план обновления с проверками отклонений, оценкой работоспособности с отложенной маркировкой, уведомлением ответственных лиц, обновлениями руководств, критериями переобучения и доказательствами PR | мониторинг, реагирование на инциденты, переобучение |
Краткое описание итерации
Прежде чем приступать к изменению кода модели, скомпонуйте работу в один артефакт, подходящий для рецензирования. Он должен быть достаточно кратким, чтобы поместиться в описании PR, и достаточно точным, чтобы другой инженер мог проанализировать компромиссы.
Goal:
Who cares:
Decision owner:
User or system action changed by the model:
Success metric:
Guardrail metrics:
Mistake budget:
Unacceptable mistakes:
Acceptable mistakes:
Assumptions:
Constraints:
Labels and data snapshot:
Baseline:
Candidate signals:
Threshold or config plan:
Eval slices:
Known risks:
Next experiment:
Rollback or fallback:
Этот компакт является эквивалентом в MLE тщательно проработанной проектной записки инженера-программиста (SWE). Он не позволяет команде оптимизировать метрику, которой никто не доверяет, добавлять функции, не устраняющие реальный режим ошибок, или внедрять сложность без возможности отката.
«Мозг решений»
Используйте этот цикл всякий раз, когда задача неоднозначна, имеет значительные последствия или связана с большим количеством метрик:
- Начинайте с решения, а не с модели. Назовите действие, которое изменяет поведение на последующих этапах.
- Определите, кому это важно и почему. Разные заинтересованные стороны несут разные издержки из-за ложных срабатываний, пропущенных сигналов, задержек, расходов на вычисления, непрозрачности или упущенных возможностей.
- Превратите неоднозначность в гипотезы. Спросите себя, какой сигнал позволил бы различить результаты, какие доказательства опровергли бы его и какой простой базовый показатель должен быть труднопревзойденным.
- Изучите существующие решения или похожую известную проблему, прежде чем разрабатывать систему под заказ.
- Оценивайте варианты с учетом
(probability, confidence) x (cost, severity, importance, impact). - Учитывайте враждебное поведение, стимулы, выборочное раскрытие информации, сдвиг распределения и циклы обратной связи.
- Отдавайте предпочтение самому простому изменению, которое уменьшает наиболее важную ошибку. Простота — это не лень; это способ минимизировать грубые ошибки, сохраняя при этом скорость итераций.
- Зафиксируйте решение, доказательства, контраргументы и следующий обратимый шаг.
Показатели и экономика ошибок
Выбирайте метрики, исходя из стоимости неудач, а не из привычки:
- Используйте матрицу путаницы на раннем этапе, чтобы команда могла обсуждать конкретные ложные срабатывания и пропуски, а не абстрактную точность.
- Отдавайте предпочтение точности, когда доминирует стоимость ошибочного положительного решения.
- Отдавайте предпочтение коэффициенту вызова, когда доминируют затраты, связанные с пропущенным положительным результатом.
- Используйте F1 только в тех случаях, когда компромисс между точностью и полнотой действительно сбалансирован и поддается объяснению.
- Используйте AUC или метрики ранжирования, когда порядок качества имеет большее значение, чем отдельный порог.
- Отслеживайте задержку, пропускную способность, потребление памяти и затраты как первостепенные показатели, поскольку именно они определяют допустимую сложность модели.
- Перед тем как радоваться улучшению результатов в автономном режиме, сравните их с базовым показателем и текущей производственной моделью.
- Рассматривайте сигналы обратной связи из реального мира как отложенные метки с систематической ошибкой, задержкой и пробелами в охвате; не считайте их «истинной реальностью» без предварительного анализа.
При выборе каждого показателя следует указывать, какую ошибку он делает менее затратной, какую — более вероятной, и кто несет эти затраты.
Гипотезы о данных и признаках
Особенности должны вытекать из теории разделения:
- Текст, категориальные поля, исторические числовые данные, отношения в графах, свежесть, частота и агрегаты — это семейства потенциальных сигналов, а не готовые признаки.
- Для каждого семейства признаков следует указать, почему оно должно разделять результаты и как оно может раскрывать информацию о будущем.
- В случае зашумленных меток следует рассмотреть возможность арбитража, доверия к меткам, мягких целей или взвешивания по уровню доверия.
- В случае дисбаланса классов сравните взвешенные потери, повторную выборку, сдвиг порогового значения и откалиброванные правила принятия решений.
- В случае отсутствующих значений определите, является ли отсутствие информативным, поддающимся импутации или поводом для отказа от оценки.
- В случае выбросов решите, следует ли их обрезать, сгруппировать, исследовать или сохранить в качестве редкого, но важного сигнала.
- В случае коррелирующих признаков проверьте, являются ли они избыточными, нестабильными или прокси для недоступного будущего состояния.
Не усложняйте модель до тех пор, пока анализ ошибок не покажет, что базовая модель не справляется с задачей по причине, которую дополнительный сигнал или увеличение емкости могут правдоподобно устранить.
Цикл анализа ошибок
После каждого базового варианта, цикла обучения, изменения порогового значения или изменения конфигурации:
- Разделите ошибки на ложные срабатывания, ложные пропуски, случаи «воздержания», случаи с низким уровнем достоверности и сбои системы.
- Группируйте ошибки по общим признакам: язык, тип сущности, источник, время, география, устройство, разреженность, актуальность, свежесть признака, источник метки или версия модели.
- Отделите ошибки модели от ошибок в данных, неоднозначности меток, неоднозначности продукта, пробелов в инструментарии и несоответствий при предоставлении услуг.
- Проследите, как каждая основная группа ошибок связана с одним из четырёх направлений: улучшение меток, улучшение признаков, улучшение пороговых значений/настроек или улучшение резервного варианта продукта.
- Сохраняйте каждую важную ошибку в виде регрессионного теста, фрагмента оценки, панели дашборда или записи в руководстве по эксплуатации.
- Напишите следующую итерацию в виде фальсифицируемого эксперимента, а не в виде расплывчатой задачи типа «улучшить модель».
Самый эффективный цикл MLE — это не «обучение → метрика → развертывание». Это «ошибка → кластер → гипотеза → эксперимент → доказательство → более простая система».
Журнал наблюдений
Ведите краткую цепочку решений и доказательств рядом с кодом, PR, отчетом об эксперименте или руководством по эксплуатации:
Iteration:
Change:
Why this mattered:
Metric movement:
Slice movement:
False positives:
False negatives:
Unexpected errors:
Decision:
Tradeoff accepted:
Lesson captured:
Regression added:
Debt created:
Next iteration:
Используйте этот журнал, чтобы наработки по модели накапливались. Цель заключается в том, чтобы каждая итерация облегчала принятие следующего решения, а не просто приводила к появлению очередного артефакта.
Основной рабочий процесс
1. Определите договор о прогнозировании
Зафиксируйте договор на уровне продукта перед написанием кода модели:
- Цель прогнозирования и лицо, ответственное за принятие решений
- Входная сущность, схема выходных данных, поля доверия/калибровки и допустимая задержка
- Пакетный, онлайн, потоковый или гибридный режим обслуживания
- Поведение при сбое, когда модель, хранилище признаков или зависимость недоступны
- Проверка человеком или возможность переопределения для решений с серьезными последствиями
- Требования к конфиденциальности, срокам хранения и аудиту входных данных, прогнозов и меток
Не принимайте «улучшение модели» в качестве требования. Привяжите модель к наблюдаемому поведению продукта и измеримому критерию приемлемости.
2. Зафиксируйте договор о данных
Каждая задача машинного обучения требует явного контракта на данные:
- Уровень детализации сущностей и первичный ключ
- Определение метки, временная метка метки и задержка доступности метки
- Временная метка признака, SLA актуальности и правила соединения данных на определенный момент времени
- Политика разделения на обучающую, валидационную, тестовую и ретроспективную выборки
- Обязательные столбцы, допустимые нулевые значения, диапазоны, категории и единицы измерения
- Поля, содержащие личную информацию (PII) или конфиденциальные данные, которые не должны попадать в обучающие наборы или журналы
- Идентификатор версии набора данных или моментального снимка для обеспечения воспроизводимости
В первую очередь обеспечьте защиту от утечки данных. Если характеристика недоступна на момент прогнозирования или объединяется с использованием информации о будущем, удалите её или переместите в конвейер, предназначенный исключительно для анализа.
3. Создание воспроизводимого конвейера
Код обучения должен быть выполнимым другим инженером без скрытого состояния ноутбука:
- Используйте типизированные конфигурационные файлы или классы данных для всех гиперпараметров и конфигурационных путей
- Зафиксируйте зависимости от пакетов и моделей
- Установите семена генератора случайных чисел и задокументируйте любое недетерминированное поведение GPU
- Записывайте версию набора данных, SHA-хэш кода, хэш конфигурации, метрики и URI артефакта
- Сохраняйте логику предварительной обработки вместе с артефактом модели, а не отдельно в ноутбуке
- Обеспечьте, чтобы преобразования для обучения, оценки и вывода были общими или генерировались из одного источника
- Сделайте каждый шаг идемпотентным, чтобы повторные попытки не повреждали артефакты или метрики
Отдавайте предпочтение неизменяемым значениям и чистым функциям преобразования. Избегайте изменения общих фреймов данных или глобальной конфигурации при генерации признаков.
import hashlib
from dataclasses import dataclass
from pathlib import Path
@dataclass(frozen=True)
class TrainingConfig:
dataset_uri: str
model_dir: Path
seed: int
learning_rate: float
batch_size: int
def artifact_name(config: TrainingConfig, code_sha: str) -> str:
config_key = f"{config.dataset_uri}:{config.seed}:{config.learning_rate}:{config.batch_size}"
config_hash = hashlib.sha256(config_key.encode("utf-8")).hexdigest()[:12]
return f"{code_sha[:12]}-{config_hash}"
4. Оценка перед продвижением
Критерии перевода в производственную среду должны быть определены до завершения обучения:
- Сравнение базовой модели и текущей производственной модели
- Основная метрика, соотнесенная с поведением продукта
- Контрольные метрики для задержки, калибровки, срезов справедливости, затрат и концентрации ошибок
- Показатели по сегментам для важных когортов, регионов, устройств, языков или источников данных
- Доверительные интервалы или дисперсия при повторных запусках, если показатели содержат шумы
- Примеры сбоев, проверяемые специалистом для моделей с высоким уровнем воздействия
- Явные пороговые значения, при которых «не следует запускать в производство»
PROMOTION_GATES = {
"auc": ("min", 0.82),
"calibration_error": ("max", 0.04),
"p95_latency_ms": ("max", 80),
}
def assert_promotion_ready(metrics: dict[str, float]) -> None:
missing = sorted(name for name in PROMOTION_GATES if name not in metrics)
if missing:
raise ValueError(f"Model promotion metrics missing required gates: {missing}")
failures = {
name: value
for name, (direction, threshold) in PROMOTION_GATES.items()
for value in [metrics[name]]
if (direction == "min" and value < threshold)
or (direction == "max" and value > threshold)
}
if failures:
raise ValueError(f"Model failed promotion gates: {failures}")
Используйте офлайн-показатели в качестве контрольных точек, а не гарантий. Если модель изменяет поведение продукта, запланируйте тестирование в теневой среде, поэтапный запуск или A/B-тестирование перед полномасштабным внедрением.
5. Подготовка к развертыванию
Артефакт машинного обучения готов к производственному использованию только в том случае, если контракт на предоставление услуг поддается тестированию:
- Артефакт модели включает версию, ссылку на обучающие данные, конфигурацию и предварительную обработку
- Схема входных данных отклоняет недопустимые, устаревшие или выходящие за пределы диапазона признаки
- Схема вывода включает версию модели и поля доверия или объяснения, если это целесообразно
- Путь предоставления услуг имеет таймаут, пакетную обработку, ограничения по ресурсам и резервное поведение
- Требования к ЦП/ГП явно указаны и протестированы
- Журналы прогнозов не содержат персональных данных и включают достаточное количество идентификаторов для отладки и сопоставления меток
- Интеграционные тесты охватывают отсутствующие признаки, устаревшие признаки, некорректные типы, пустые пакеты и резервный путь
Никогда не допускайте расхождений между кодом характеристик, предназначенным только для обучения, и кодом характеристик для развертывания без теста, подтверждающего их эквивалентность.
6. Эксплуатация модели
Для мониторинга модели необходимы как системные, так и качественные показатели:
- доступность, частота ошибок, частота таймаутов, глубина очереди и задержки p50/p95/p99
- Частота нулевых значений признаков, смещение диапазона, смещение категорий и смещение актуальности
- Смещение распределения прогнозов и смещение распределения доверия
- Показатели работоспособности поступления меток и показатели качества задержек
- Ограничительные показатели бизнес-KPI и триггеры отката
- Панели мониторинга по версиям для тестовых версий и откатов
Каждое развертывание должно иметь план отката, в котором указаны предыдущий артефакт, конфигурация, зависимости данных и механизм переключения трафика.
Контрольный список для проверки
- Контракт на прогнозирование является явным и поддается тестированию
- Договор о данных определяет уровень детализации сущностей, сроки присвоения меток, сроки предоставления функций и моментальные снимки/версии
- Риски утечки были проверены с учетом доступности на момент прогнозирования
- Обучение воспроизводимо на основе кода, конфигурации, версии данных и начальных данных
- Показатели сравниваются с базовыми значениями и текущей производственной моделью
- Для групп с высоким риском предусмотрены сегментированные метрики и защитные механизмы
- Шлюзы продвижения автоматизированы и работают по принципу «закрытие при сбое»
- Преобразования при обучении и обслуживании являются общими или проходят тестирование на эквивалентность
- Артефакт модели содержит информацию о версии, конфигурации, ссылку на набор данных и предварительную обработку
- Путь развертывания проверяет входные данные и поддерживает поведение при превышении времени ожидания, переходе на резервный вариант и откате
- Мониторинг охватывает работоспособность системы, дрейф признаков, дрейф прогнозов и задержки в получении меток
- Конфиденциальные данные исключаются из артефактов, журналов, запросов и примеров
Антипаттерны
- Для воспроизведения модели требуется состояние ноутбука
- Случайное деление приводит к утечке будущих данных в валидационный или тестовый наборы
- Объединение признаков игнорирует время события и доступность меток
- Офлайн-метрика улучшается, в то время как важные срезы ухудшаются
- Пороги настраиваются на тестовом наборе данных многократно
- Предварительная обработка данных для обучения копируется вручную в код сервера
- В журналах прогнозов отсутствует версия модели
- Мониторинг проверяет только время работы сервиса, но не качество данных или прогнозов
- Для отката требуется повторное обучение вместо перехода на проверенный артефакт
Ожидаемые результаты
При использовании данного навыка следует предоставлять конкретные артефакты: контракт на данные, контрольные точки продвижения, этапы конвейера, план тестирования, план развертывания или результаты проверки. Следует указывать неизвестные факторы, препятствующие готовности к производственной эксплуатации, вместо того, чтобы заполнять пробелы предположениями.
---
name: mle-workflow
description: Turn model work into a production ML system with data contracts, repeatable training, measurable quality gates, deployable artifacts, and operational monitoring.
---
# Machine Learning Engineering Workflow
Use this skill to turn model work into a production ML system with clear data contracts, repeatable training, measurable quality gates, deployable artifacts, and operational monitoring.
## When to Activate
- Planning or reviewing a production ML feature, model refresh, ranking system, recommender, classifier, embedding workflow, or forecasting pipeline
- Converting notebook code into a reusable training, evaluation, batch inference, or online inference pipeline
- Designing model promotion criteria, offline/online evals, experiment tracking, or rollback paths
- Debugging failures caused by data drift, label leakage, stale features, artifact mismatch, or inconsistent training and serving logic
- Adding model monitoring, canary rollout, shadow traffic, or post-deploy quality checks
## Scope Calibration
Use only the lanes that fit the system in front of you. This skill is useful for ranking, search, recommendations, classifiers, forecasting, embeddings, LLM workflows, anomaly detection, and batch analytics, but it should not force one architecture onto all of them.
- Do not assume every model has supervised labels, online serving, a feature store, PyTorch, GPUs, human review, A/B tests, or real-time feedback.
- Do not add heavyweight MLOps machinery when a data contract, baseline, eval script, and rollback note would make the change reviewable.
- Do make assumptions explicit when the project lacks labels, delayed outcomes, slice definitions, production traffic, or monitoring ownership.
- Treat examples as interchangeable scaffolds. Replace metrics, serving mode, data stores, and rollout mechanics with the project-native equivalents.
## Related Skills
- `python-patterns` and `python-testing` for Python implementation and pytest coverage
- `pytorch-patterns` for deep learning models, data loaders, device handling, and training loops
- `eval-harness` and `ai-regression-testing` for promotion gates and agent-assisted regression checks
- `database-migrations`, `postgres-patterns`, and `clickhouse-io` for data storage and analytics surfaces
- `deployment-patterns`, `docker-patterns`, and `security-review` for serving, secrets, containers, and production hardening
## Reuse the SWE Surface
Do not treat MLE as separate from software engineering. Most ECC SWE workflows apply directly to ML systems, often with stricter failure modes:
The recommended `minimal --with capability:machine-learning` install keeps the core agent surface available alongside this skill. For skill-only or agent-limited harnesses, pair `skill:mle-workflow` with `agent:mle-reviewer` where the target supports agents.
| SWE surface | MLE use |
|-------------|---------|
| `product-capability` / `architecture-decision-records` | Turn model work into explicit product contracts and record irreversible data, model, and rollout choices |
| `repo-scan` / `codebase-onboarding` / `code-tour` | Find existing training, feature, serving, eval, and monitoring paths before introducing a parallel ML stack |
| `plan` / `feature-dev` | Scope model changes as product capabilities with data, eval, serving, and rollback phases |
| `tdd-workflow` / `python-testing` | Test feature transforms, split logic, metric calculations, artifact loading, and inference schemas before implementation |
| `code-reviewer` / `mle-reviewer` | Review code quality plus ML-specific leakage, reproducibility, promotion, and monitoring risks |
| `build-fix` / `pr-test-analyzer` | Diagnose broken CI, flaky evals, missing fixtures, and environment-specific model or dependency failures |
| `quality-gate` / `test-coverage` | Require automated evidence for transforms, metrics, inference contracts, promotion gates, and rollback behavior |
| `eval-harness` / `verification-loop` | Turn offline metrics, slice checks, latency budgets, and rollback drills into repeatable gates |
| `ai-regression-testing` | Preserve every production bug as a regression: missing feature, stale label, bad artifact, schema drift, or serving mismatch |
| `api-design` / `backend-patterns` | Design prediction APIs, batch jobs, idempotent retraining endpoints, and response envelopes |
| `database-migrations` / `postgres-patterns` / `clickhouse-io` | Version labels, feature snapshots, prediction logs, experiment metrics, and drift analytics |
| `deployment-patterns` / `docker-patterns` | Package reproducible training and serving images with health checks, resource limits, and rollback |
| `canary-watch` / `dashboard-builder` | Make rollout health visible with model-version, slice, drift, latency, cost, and delayed-label dashboards |
| `security-review` / `security-scan` | Check model artifacts, notebooks, prompts, datasets, and logs for secrets, PII, unsafe deserialization, and supply-chain risk |
| `e2e-testing` / `browser-qa` / `accessibility` | Test critical product flows that consume predictions, including explainability and fallback UI states |
| `benchmark` / `performance-optimizer` | Measure throughput, p95 latency, memory, GPU utilization, and cost per prediction or retrain |
| `cost-aware-llm-pipeline` / `token-budget-advisor` | Route LLM/embedding workloads by quality, latency, and budget instead of defaulting to the largest model |
| `documentation-lookup` / `search-first` | Verify current library behavior for model serving, feature stores, vector DBs, and eval tooling before coding |
| `git-workflow` / `github-ops` / `opensource-pipeline` | Package MLE changes for review with crisp scope, generated artifacts excluded, and reproducible test evidence |
| `strategic-compact` / `dmux-workflows` | Split long ML work into parallel tracks: data contract, eval harness, serving path, monitoring, and docs |
## Ten MLE Task Simulations
Use these simulations as coverage checks when planning or reviewing MLE work. A strong MLE workflow should reduce each task to explicit contracts, reusable SWE surfaces, automated evidence, and a reviewable artifact.
| ID | Common MLE task | Streamlined ECC path | Required output | Pipeline lanes covered |
|----|-----------------|----------------------|-----------------|------------------------|
| MLE-01 | Frame an ambiguous prediction, ranking, recommender, classifier, embedding, or forecast capability | `product-capability`, `plan`, `architecture-decision-records`, `mle-workflow` | Iteration Compact naming who cares, decision owner, success metric, unacceptable mistakes, assumptions, constraints, and first experiment | product contract, stakeholder loss, risk, rollout |
| MLE-02 | Define metric goals, labels, data sources, and the mistake budget | `repo-scan`, `database-reviewer`, `database-migrations`, `postgres-patterns`, `clickhouse-io` | Data and metric contract with entity grain, label timing, label confidence, feature timing, point-in-time joins, split policy, and dataset snapshot | data contract, metric design, leakage, reproducibility |
| MLE-03 | Build a baseline model and scoring path before adding complexity | `tdd-workflow`, `python-testing`, `python-patterns`, `code-reviewer` | Baseline scorer with confusion matrix, calibration notes, latency/cost estimate, known weaknesses, and tests for score shape and determinism | baseline, scoring, testing, serving parity |
| MLE-04 | Generate features from hypotheses about what separates outcomes | `python-patterns`, `pytorch-patterns`, `docker-patterns`, `deployment-patterns` | Feature plan and transform module covering signal source, missing values, outliers, correlations, leakage checks, and train/serve equivalence | feature pipeline, leakage, training, artifacts |
| MLE-05 | Tune thresholds, configs, and model complexity under tradeoffs | `eval-harness`, `ai-regression-testing`, `quality-gate`, `test-coverage` | Threshold/config report comparing precision, recall, F1, AUC, calibration, group slices, latency, cost, complexity, and acceptable error classes | evaluation, threshold, promotion, regression |
| MLE-06 | Run error analysis and turn mistakes into the next experiment | `eval-harness`, `ai-regression-testing`, `mle-reviewer`, `silent-failure-hunter` | Error cluster report for false positives, false negatives, ambiguous labels, stale features, missing signals, and bug traces with lessons captured | error analysis, bug trace, iteration, regression |
| MLE-07 | Package a model artifact for batch or online inference | `api-design`, `backend-patterns`, `security-review`, `security-scan` | Versioned artifact bundle with preprocessing, config, dependency constraints, schema validation, safe loading, and PII-safe logs | artifact, security, inference contract |
| MLE-08 | Ship online serving or batch scoring with feedback capture | `api-design`, `backend-patterns`, `e2e-testing`, `browser-qa`, `accessibility` | Prediction endpoint or batch job with response envelope, timeout, batching, fallback, model version, confidence, feedback logging, and product-flow tests | serving, batch inference, fallback, user workflow |
| MLE-09 | Roll out a model with shadow traffic, canary, A/B test, or rollback | `canary-watch`, `dashboard-builder`, `verification-loop`, `performance-optimizer` | Rollout plan naming traffic split, dashboards, p95 latency, cost, quality guardrails, rollback artifact, and rollback trigger | deployment, canary, rollback |
| MLE-10 | Operate, debug, and refresh a production model after launch | `silent-failure-hunter`, `dashboard-builder`, `mle-reviewer`, `doc-updater`, `github-ops` | Observation ledger and refresh plan with drift checks, delayed-label health, alert owners, runbook updates, retrain criteria, and PR evidence | monitoring, incident response, retraining |
## Iteration Compact
Before touching model code, compress the work into one reviewable artifact. This should be short enough to fit in a PR description and precise enough that another engineer can challenge the tradeoffs.
```text
Goal:
Who cares:
Decision owner:
User or system action changed by the model:
Success metric:
Guardrail metrics:
Mistake budget:
Unacceptable mistakes:
Acceptable mistakes:
Assumptions:
Constraints:
Labels and data snapshot:
Baseline:
Candidate signals:
Threshold or config plan:
Eval slices:
Known risks:
Next experiment:
Rollback or fallback:
```
This compact is the MLE equivalent of a strong SWE design note. It keeps the team from optimizing a metric no one trusts, adding features that do not address the real error mode, or shipping complexity without a rollback.
## Decision Brain
Use this loop whenever the task is ambiguous, high-impact, or metric-heavy:
1. Start from the decision, not the model. Name the action that changes downstream behavior.
2. Name who cares and why. Different stakeholders pay different costs for false positives, false negatives, latency, compute spend, opacity, or missed opportunities.
3. Convert ambiguity into hypotheses. Ask what signal would separate outcomes, what evidence would disprove it, and what simple baseline should be hard to beat.
4. Research prior art or a nearby known problem before inventing a bespoke system.
5. Score choices with `(probability, confidence) x (cost, severity, importance, impact)`.
6. Consider adversarial behavior, incentives, selective disclosure, distribution shift, and feedback loops.
7. Prefer the simplest change that reduces the most important mistake. Simplicity is not laziness; it is a way to minimize blunders while preserving iteration speed.
8. Capture the decision, evidence, counterargument, and next reversible step.
## Metric and Mistake Economics
Choose metrics from failure costs, not habit:
- Use a confusion matrix early so the team can discuss concrete false positives and false negatives instead of abstract accuracy.
- Favor precision when the cost of an incorrect positive decision dominates.
- Favor recall when the cost of a missed positive dominates.
- Use F1 only when the precision/recall tradeoff is genuinely balanced and explainable.
- Use AUC or ranking metrics when ordering quality matters more than a single threshold.
- Track latency, throughput, memory, and cost as first-class metrics because they shape feasible model complexity.
- Compare against a baseline and the current production model before celebrating an offline gain.
- Treat real-world feedback signals as delayed labels with bias, lag, and coverage gaps; do not treat them as ground truth without analysis.
Every metric choice should state which mistake it makes cheaper, which mistake it makes more likely, and who absorbs that cost.
## Data and Feature Hypotheses
Features should come from a theory of separation:
- Text, categorical fields, numeric histories, graph relationships, recency, frequency, and aggregates are candidate signal families, not automatic features.
- For every feature family, state why it should separate outcomes and how it could leak future information.
- For noisy labels, consider adjudication, label confidence, soft targets, or confidence weighting.
- For class imbalance, compare weighted loss, resampling, threshold movement, and calibrated decision rules.
- For missing values, decide whether absence is informative, imputable, or a reason to abstain.
- For outliers, decide whether to clip, bucket, investigate, or preserve them as rare but important signal.
- For correlated features, check whether they are redundant, unstable, or proxies for unavailable future state.
Do not add model complexity until error analysis shows that the baseline is failing for a reason additional signal or capacity can plausibly fix.
## Error Analysis Loop
After each baseline, training run, threshold change, or config change:
1. Split mistakes into false positives, false negatives, abstentions, low-confidence cases, and system failures.
2. Cluster errors by shared traits: language, entity type, source, time, geography, device, sparsity, recency, feature freshness, label source, or model version.
3. Separate model mistakes from data bugs, label ambiguity, product ambiguity, instrumentation gaps, and serving mismatches.
4. Trace each major cluster to one of four moves: better labels, better features, better threshold/config, or better product fallback.
5. Preserve every important mistake as a regression test, eval slice, dashboard panel, or runbook entry.
6. Write the next iteration as a falsifiable experiment, not a vague "improve model" task.
The strongest MLE loop is not train -> metric -> ship. It is mistake -> cluster -> hypothesis -> experiment -> evidence -> simpler system.
## Observation Ledger
Keep a compact decision and evidence trail beside the code, PR, experiment report, or runbook:
```text
Iteration:
Change:
Why this mattered:
Metric movement:
Slice movement:
False positives:
False negatives:
Unexpected errors:
Decision:
Tradeoff accepted:
Lesson captured:
Regression added:
Debt created:
Next iteration:
```
Use the ledger to make model work cumulative. The goal is for each iteration to make the next decision easier, not merely to produce another artifact.
## Core Workflow
### 1. Define the Prediction Contract
Capture the product-level contract before writing model code:
- Prediction target and decision owner
- Input entity, output schema, confidence/calibration fields, and allowed latency
- Batch, online, streaming, or hybrid serving mode
- Fallback behavior when the model, feature store, or dependency is unavailable
- Human review or override path for high-impact decisions
- Privacy, retention, and audit requirements for inputs, predictions, and labels
Do not accept "improve the model" as a requirement. Tie the model to an observable product behavior and a measurable acceptance gate.
### 2. Lock the Data Contract
Every ML task needs an explicit data contract:
- Entity grain and primary key
- Label definition, label timestamp, and label availability delay
- Feature timestamp, freshness SLA, and point-in-time join rules
- Train, validation, test, and backtest split policy
- Required columns, allowed nulls, ranges, categories, and units
- PII or sensitive fields that must not enter training artifacts or logs
- Dataset version or snapshot ID for reproducibility
Guard against leakage first. If a feature is not available at prediction time, or is joined using future information, remove it or move it to an analysis-only path.
### 3. Build a Reproducible Pipeline
Training code should be runnable by another engineer without hidden notebook state:
- Use typed config files or dataclasses for all hyperparameters and paths
- Pin package and model dependencies
- Set random seeds and document any nondeterministic GPU behavior
- Record dataset version, code SHA, config hash, metrics, and artifact URI
- Save preprocessing logic with the model artifact, not separately in a notebook
- Keep train, eval, and inference transformations shared or generated from one source
- Make every step idempotent so retries do not corrupt artifacts or metrics
Prefer immutable values and pure transformation functions. Avoid mutating shared data frames or global config during feature generation.
```python
import hashlib
from dataclasses import dataclass
from pathlib import Path
@dataclass(frozen=True)
class TrainingConfig:
dataset_uri: str
model_dir: Path
seed: int
learning_rate: float
batch_size: int
def artifact_name(config: TrainingConfig, code_sha: str) -> str:
config_key = f"{config.dataset_uri}:{config.seed}:{config.learning_rate}:{config.batch_size}"
config_hash = hashlib.sha256(config_key.encode("utf-8")).hexdigest()[:12]
return f"{code_sha[:12]}-{config_hash}"
```
### 4. Evaluate Before Promotion
Promotion criteria should be declared before training finishes:
- Baseline model and current production model comparison
- Primary metric aligned to product behavior
- Guardrail metrics for latency, calibration, fairness slices, cost, and error concentration
- Slice metrics for important cohorts, geographies, devices, languages, or data sources
- Confidence intervals or repeated-run variance when metrics are noisy
- Failure examples reviewed by a human for high-impact models
- Explicit "do not ship" thresholds
```python
PROMOTION_GATES = {
"auc": ("min", 0.82),
"calibration_error": ("max", 0.04),
"p95_latency_ms": ("max", 80),
}
def assert_promotion_ready(metrics: dict[str, float]) -> None:
missing = sorted(name for name in PROMOTION_GATES if name not in metrics)
if missing:
raise ValueError(f"Model promotion metrics missing required gates: {missing}")
failures = {
name: value
for name, (direction, threshold) in PROMOTION_GATES.items()
for value in [metrics[name]]
if (direction == "min" and value < threshold)
or (direction == "max" and value > threshold)
}
if failures:
raise ValueError(f"Model failed promotion gates: {failures}")
```
Use offline metrics as gates, not guarantees. When the model changes product behavior, plan shadow evaluation, canary rollout, or A/B testing before full rollout.
### 5. Package for Serving
An ML artifact is production-ready only when the serving contract is testable:
- Model artifact includes version, training data reference, config, and preprocessing
- Input schema rejects invalid, stale, or out-of-range features
- Output schema includes model version and confidence or explanation fields when useful
- Serving path has timeout, batching, resource limits, and fallback behavior
- CPU/GPU requirements are explicit and tested
- Prediction logs avoid PII and include enough identifiers for debugging and label joins
- Integration tests cover missing features, stale features, bad types, empty batches, and fallback path
Never let training-only feature code diverge from serving feature code without a test that proves equivalence.
### 6. Operate the Model
Model monitoring needs both system and quality signals:
- Availability, error rate, timeout rate, queue depth, and p50/p95/p99 latency
- Feature null rate, range drift, categorical drift, and freshness drift
- Prediction distribution drift and confidence distribution drift
- Label arrival health and delayed quality metrics
- Business KPI guardrails and rollback triggers
- Per-version dashboards for canaries and rollbacks
Every deployment should have a rollback plan that names the previous artifact, config, data dependency, and traffic-switch mechanism.
## Review Checklist
- [ ] Prediction contract is explicit and testable
- [ ] Data contract defines entity grain, label timing, feature timing, and snapshot/version
- [ ] Leakage risks were checked against prediction-time availability
- [ ] Training is reproducible from code, config, data version, and seed
- [ ] Metrics compare against baseline and current production model
- [ ] Slice metrics and guardrails are included for high-risk cohorts
- [ ] Promotion gates are automated and fail closed
- [ ] Training and serving transformations are shared or equivalence-tested
- [ ] Model artifact carries version, config, dataset reference, and preprocessing
- [ ] Serving path validates inputs and has timeout, fallback, and rollback behavior
- [ ] Monitoring covers system health, feature drift, prediction drift, and delayed labels
- [ ] Sensitive data is excluded from artifacts, logs, prompts, and examples
## Anti-Patterns
- Notebook state is required to reproduce the model
- Random split leaks future data into validation or test sets
- Feature joins ignore event time and label availability
- Offline metric improves while important slices regress
- Thresholds are tuned on the test set repeatedly
- Training preprocessing is copied manually into serving code
- Model version is missing from prediction logs
- Monitoring only checks service uptime, not data or prediction quality
- Rollback requires retraining instead of switching to a known-good artifact
## Output Expectations
When using this skill, return concrete artifacts: data contract, promotion gates, pipeline steps, test plan, deployment plan, or review findings. Call out unknowns that block production readiness instead of filling them with assumptions.
Все файлы
1 файловУстановить mle-workflow
Скачайте файлы навыков и распакуйте их в каталог .claude/skills/.
Скачать ZIPКлонируйте репозиторий и скопируйте файлы навыка в свой проект.
git clone https://github.com/affaan-m/ECC/tree/main/skills/mle-workflow # Copy SKILL.md to your .claude/skills/ directory
Копировать





Дом
