Андела спонсировала этот пост.
Это вторая из двух статей. Читайте также:
- Почему вам следует намеренно разрывать конвейеры машинного обучения
В первой части этой серии мы обосновали необходимость использования хаос-инжиниринга для повышения надежности конвейеров машинного обучения (ML). Сердцем любой успешной операции ML является ее инфраструктура — конвейеры данных, реестры моделей и хранилища функций. Это компоненты, наиболее подверженные сбоям, которые призвана выявить хаос-инжиниринг.
Как только вы узнаете о наиболее распространенных режимах сбоев в конвейерах машинного обучения, возникает следующий вопрос: как безопасно имитировать эти сбои, чтобы проверить устойчивость вашей системы?
Ответ заключается в применении принципов хаос-инжиниринга к уникальным компонентам жизненного цикла машинного обучения: конвейерам данных, реестрам моделей и хранилищам функций. Это не типичные зависимости приложения — они тесно связаны с логикой вашей системы искусственного интеллекта. Если какой-либо из них незаметно потерпит неудачу, ваша модель может ухудшиться настолько, что традиционный мониторинг просто не сможет это отследить.
Давайте разберемся, как внести хаос в каждый компонент и почему это важно.
Внесение хаоса в конвейеры данных
Конвейеры данных — это основа систем машинного обучения. Они перемещают необработанные данные из исходных систем на этапы разработки функций и обучения. Но конвейеры часто представляют собой сложные направленные ациклические графы (DAG) с множеством точек сбоя: ненадежные API, неработающие задания cron, медленный прием или смена формата.
Сценарии отказов для моделирования:
- Данные задерживаются или поступают не в порядке.
- Форматы файлов изменяются автоматически (например, с CSV на JSON).
- Отсутствующие значения неожиданно увеличиваются.
- Целые столбцы или таблицы удаляются.
Техники внедрения хаоса:
- Моделирование задержки файла: Временно сохраните файл ежедневного приема в промежуточной среде. Используйте задержки сна в Airflow/Kubeflow, чтобы имитировать задержку заданий cron.
- Дрейф схемы: Добавьте версию набора данных с переименованным или отсутствующим столбцом, чтобы увидеть, как отреагируют ваши сценарии извлечения, преобразования, загрузки (ETL) или хранилище функций.
- Моделирование ошибок API: Замените живые вызовы API макетами, которые случайным образом возвращают 500, 429 или искаженные данные.
- Введем частичные данные: Используйте Chaos Mesh, чтобы прервать середину многоэтапного задания ETL и проверить, обнаруживает ли нисходящая логика и сообщает ли она неполные данные.
Инструменты для использования:
- Сетка Хаоса и сценарии Python/Bash.
- Расход воздуха повторы задач и моделирование сбоев.
- Большие надежды для проверки после приема.
Внесение хаоса в хранилища функций
Хранилища функций служат мостом между обучением и обслуживанием. Ожидается, что они будут предоставлять согласованные, свежие и версионные функции для обеих сред. Но они также уязвимы к устареванию, дрейфу формата и низкой наблюдаемости.
Сценарии отказов для моделирования:
- Пакетное задание завершается сбоем, и функции не обновляются.
- Поток в реальном времени отстает на несколько часов.
- Несоответствие версии функции между обучением и выводом.
- Распределение признаков меняется (среднее значение, стандартное отклонение) с течением времени.
Техники внедрения хаоса:
- Отключить задание обновления функций (или смоделируйте его с помощью уничтожения модуля Chaos Mesh) и измерьте, как ведут себя последующие модели с устаревшими функциями.
- Обслуживание поврежденных функций путем введения значений, выходящих за пределы диапазона (например, очень больших чисел для нормализованных полей), чтобы проверить надежность модели.
- Имитировать перекос путем введения различных распределений функций во время обучения и вывода (применяйте сдвиг или преобразование только во время обслуживания).
- Проверьте логику отката путем удаления часто используемой функции и наблюдения за тем, использует ли система по умолчанию другую функцию или она полностью выходит из строя.
Инструменты для использования:
- Праздник, популярный магазин функций с открытым исходным кодом, в котором Chaos Mesh останавливает процессы обновления интернет-магазина.
- Пользовательские скрипты для замены файлов .parquet или .csv на поврежденные.
- Большие надежды на проверку согласованности функций.
Внесение хаоса в модельные реестры
Реестры моделей, такие как MLflow, SageMaker Model Registry или пользовательские хранилища артефактов, играют центральную роль в отслеживании, управлении версиями и развертывании моделей. Неисправный реестр или несовпадающие метаданные могут привести к использованию неправильной модели, потере отслеживаемости или недействительным откатам.
Сценарии отказов для моделирования:
- Случайно перераспределена старая версия модели.
- Новая модель регистрируется без связанных метаданных (входной схемы).
- Сигнатура модели изменилась, а код вывода — нет.
- Реестр недоступен во время развертывания.
Техники внедрения хаоса:
- Перезаписать теги версии чтобы указать на неправильные артефакты и протестировать последующих потребителей на предмет проверки совместимости.
- Удалить или зашифровать метаданные (ожидаемый список функций, тип модели) и проверьте, проверяет ли ваш конвейер CI/CD модели перед обслуживанием.
- Блокировать доступ в реестр, используя ошибку сети или правило брандмауэра для имитации сбоя во время развертывания.
- Умышленное развертывание сломанной модели для организации и измерения оповещений, отката и поведения обслуживания.
Инструменты для использования:
- Млфлов API и интерфейс командной строки (CLI) для имитации неправильных регистраций.
- Chaos Mesh (сетевой хаос) для блокировки доступа к реестру.
- Селдон Кор или пользовательскую логику CI/CD для проверки барьеров развертывания.
Инструменты для внесения хаоса в конвейеры машинного обучения
Внесение хаоса в конвейер машинного обучения — это не просто переключение случайных переключателей. Речь идет о стратегическом моделировании реальных режимов сбоя, чтобы проверить, как ваша система ведет себя в условиях стресса. Чтобы сделать это хорошо, вам нужны правильные инструменты.
Хаос-тестирование в машинном обучении требует сочетания инструментов внедрения ошибок на уровне инфраструктуры с специфичными для машинного обучения данными и структурами проверки моделей. Цель состоит в том, чтобы смоделировать сбой на протяжении всего жизненного цикла — от приема необработанных данных до вывода в реальном времени — без ущерба для ваших производственных систем.
Вот некоторые из наиболее эффективных инструментов, которые помогут вам разрабатывать и проводить эксперименты с хаосом, адаптированные для систем искусственного интеллекта:
Сетка Хаоса
Лучше всего для: Внедрение ошибок на уровне инфраструктуры в платформы машинного обучения на базе Kubernetes (Kubeflow, MLflow, Airflow на K8s)
Chaos Mesh — это встроенная в Kubernetes среда разработки хаоса, которая позволяет моделировать различные типы сбоев — такие как сбой модуля, задержка в сети, повреждение диска и даже перекос времени — непосредственно внутри вашей инфраструктуры машинного обучения.
ЛакмусХаос
Лучше всего для: Создание хаоса рабочих процессов в средах и сервисах, включая системы, не относящиеся к Kubernetes.
LitmusChaos — еще один проект Cloud Native Computing Foundation (CNCF) с мощной поддержкой сложных, многоэтапных сценариев хаоса. В то время как Chaos Mesh превосходно справляется с целевыми ошибками K8, LitmusChaos лучше подходит для хореографии рабочих процессов полного хаоса. Это особенно полезно в мультиоблачных или гибридных стеках MLOps.
Большие надежды
Лучше всего для: Проверка целостности данных, ожиданий и обнаружение незначительных ухудшений качества данных.
«Большие надежды» — это среда проверки данных, но в хаос-инжиниринге для машинного обучения она выполняет решающую роль: обнаруживает невидимые сбои данных. Это гарантирует, что ваши входные данные соответствуют ожидаемым шаблонам и определениям схемы, даже после того, как в восходящем направлении возник сбой.
Селдон Кор
Лучше всего для: Надежное обслуживание моделей, канареечное развертывание, управление версиями и аварийное переключение на основе логических выводов.
Seldon Core — это собственная платформа обслуживания моделей Kubernetes, которая предлагает A/B-тестирование, разделение трафика, механизмы отката и подробные метрики для поведения модели в реальном времени. Для экспериментов с хаосом он обеспечивает переключение версий модели, внесение ошибок вывода и мониторинг в масштабе.
Млфлов
Лучше всего для: Отслеживание модельных экспериментов, управление версиями и реестром.
MLflow по своей сути не является инструментом проектирования хаоса, но он играет решающую роль в управлении и аудите экспериментов с хаосом, особенно в управлении версиями и оценке моделей. Вы можете использовать его для отслеживания снижения производительности в ходе экспериментов, выявления регрессий и обеспечения соблюдения правил развертывания.
Бонус: собственные скрипты Python и Bash.
Лучше всего для: Легкие, целенаправленные эксперименты с хаосом в ETL и конвейерах обучения.
Иногда простые инструменты помогают. Для внесения хаоса в сценарии преобразования данных, учебные задания на базе блокнотов или рабочие процессы CI/CD написание сценариев на Python или Bash дает вам полный контроль. Они особенно полезны в группах DAG Airflow или конвейерах Kubeflow, где вы хотите тестировать сбои в середине задачи.
Перерыв, чтобы строить лучше
В DevOps мы давно поняли, что системы не становятся устойчивыми случайно; они становятся устойчивыми, потому что мы тестируем их в наихудших возможных условиях. Хаос-инжиниринг научил нас моделировать сбои в сети, отключать сервисы в случайном порядке и подвергать стресс-тестированию среду не для того, чтобы вызвать разрушение, а для того, чтобы обнаружить невидимые трещины, которые в конечном итоге сломают нас.
Пришло время перенести ту же философию в системы машинного обучения.
Конвейеры машинного обучения разные. Они не создают исключений, когда что-то ломается. Они деградируют — тихо, опасно и часто незаметно. Небольшая задержка в доставке функций, неправильно маркированный пакет обучения или незамеченный сдвиг в распределении входных данных могут испортить поведение ваших моделей на дни или недели, даже не отключая монитор и не вызывая оповещения.
Настоящая опасность заключается не в простоях; это уверенно ошибается.
Вот почему системам искусственного интеллекта требуется нечто большее, чем просто высокая доступность. Им нужно:
- Наблюдаемость: Мониторинг не только журналов и задержек, но и качества данных, отклонения функций и прогнозируемых распределений.
- Отказоустойчивость: Возможность корректно снижать производительность, безопасно отступать и активировать интеллектуальные оповещения, когда что-то идет не так.
- Готовность к Хаосу: Системы, которые намеренно тестируются в условиях сбоя, поэтому, когда наступит сбой (а он произойдет), вы уже знаете, что сломается и как восстановиться.
Хаос-инжиниринг — это недостающая петля обратной связи в большинстве стеков MLOps.
Внедряя контролируемые сбои в циклы приема данных, обработки функций, обучения, обслуживания и обратной связи, вы переходите от реактивного тушения пожаров к упреждающему построению устойчивости. Вы перестаете надеяться, что ваш конвейер работает, и начинаете понимать, почему он выходит из строя и как он восстанавливается.
Что вы можете сделать дальше
Вот как можно начать работу с хаос-инжинирингом для ваших систем машинного обучения уже сегодня:
Andela предоставляет крупнейшую в мире частную рыночную площадку для талантов удаленных технологий, управляемую платформой на базе искусственного интеллекта для управления полным жизненным циклом найма по контракту. Andela помогает компаниям масштабировать команды и быстрее реализовывать проекты в специализированных областях: разработка приложений, искусственный интеллект, облако, данные и аналитика. Узнайте больше Последние новости от Анделы ТЕНДЕНЦИОННЫЕ ИСТОРИИ YOUTUBE.COM/THENEWSTACK Технологии развиваются быстро, не пропустите ни одной серии. Подпишитесь на наш канал YouTube, чтобы смотреть все наши подкасты, интервью, демонстрации и многое другое. ПОДПИСАТЬСЯ Группа, созданная в Sketch. Тинега — старший инженер DevOps и технолог в Andela, частной глобальной торговой площадке для технических талантов. Тинега начал свою карьеру в сфере технологий в 2018 году после получения стипендии Google Africa Developer Scholarship — программы обучения Анделы в партнерстве с Google. Тинега… Читать далее от Тинега Ончари