Непрерывная интеграция (CI)
Улучшите рабочие процессы AI/ML с помощью непрерывной интеграции. Автоматизируйте тестирование, улучшите качество кода и оптимизируйте разработку моделей без усилий.
Непрерывная интеграция (CI) — это практика разработки программного обеспечения, при которой разработчики часто объединяют изменения своего кода в центральный репозиторий, после чего запускаются автоматизированные сборки и тесты. Основная цель CI — своевременное выявление проблем интеграции, повышение качества кода и оптимизация процесса разработки. В контексте искусственного интеллекта (AI) и машинного обучения (ML) CI выходит за рамки традиционных проверок кода и включает в себя проверку данных, моделей и общей производительности конвейера, что является критически важным компонентом Machine Learning Operations (MLOps).
Ключевые принципы непрерывной интеграции
Процесс CI построен на основе автоматизации и частой итерации. Разработчики вносят небольшие, частые изменения в общий репозиторий, используя систему контроля версий, такую как Git. Каждое внесение запускает автоматизированный рабочий процесс, или конвейер, который выполняет несколько ключевых шагов:
- Автоматизированная сборка: Система автоматически компилирует код, чтобы убедиться, что он правильно интегрируется. Для проектов ML это может включать настройку среды с использованием инструментов контейнеризации, таких как Docker.
- Автоматизированное тестирование: Запускается набор тестов для проверки новых изменений. Это включает в себя модульные тесты для логики кода, интеграционные тесты для взаимодействия компонентов и специализированные тесты для ML, такие как проверка данных и оценка модели.
- Быстрая обратная связь: Если какой-либо шаг в конвейере завершается неудачно, команда разработчиков немедленно получает уведомление. Это позволяет им быстро решать проблемы, прежде чем они станут более сложными и интегрированными в основной код.
CI для машинного обучения (CI4ML)
Применение CI к проектам машинного обучения создает уникальные проблемы. Помимо кода, системы машинного обучения включают данные и обученные модели, которые также должны быть версионированы и проверены. Эффективный конвейер CI для проекта машинного обучения, такого как проект с использованием модели Ultralytics YOLO, включает в себя дополнительные шаги:
- Валидация данных: Автоматическая проверка новых данных на корректность, соответствие схеме и потенциальные смещения в наборе данных. Для этого можно использовать такие инструменты, как Great Expectations.
- Тестирование модели: Проведение тестов для проверки ухудшения производительности. Это включает в себя сравнение метрик производительности новой модели с базовой версией на стандартизированном наборе данных для валидации.
- Проверка конвейера обучения: Обеспечение воспроизводимости и эффективности самого процесса обучения модели. Это можно сделать с помощью таких платформ, как Ultralytics HUB, которая упрощает управление наборами данных и рабочие процессы обучения.
Применение в реальном мире
- Разработка автономного вождения: Команда, работающая над моделью обнаружения объектов для автономных транспортных средств, использует конвейер CI. Когда разработчик отправляет код для улучшения способности модели обнаруживать пешеходов в ночное время, конвейер автоматически запускается. Он запускает модульные тесты, переобучает облегченную версию модели YOLO11 на тестовом наборе данных и оценивает ее mAP. Если точность не падает и все тесты пройдены, изменение утверждается для слияния. Популярные инструменты CI, такие как GitHub Actions или Jenkins, обычно используются для автоматизации этих рабочих процессов.
- Анализ медицинских изображений: В системе, предназначенной для обнаружения опухолей на медицинских изображениях, специалист по данным может добавить новые дополненные данные для повышения надежности. Конвейер CI проверяет новый формат и распределение данных. Затем он запускает проверочный прогон с использованием предварительно обученной модели, чтобы убедиться, что прогнозы модели по «золотому набору данных» остаются согласованными, предотвращая неожиданное поведение в рабочей среде. Этот процесс помогает поддерживать высокие стандарты надежности, что имеет решающее значение для ИИ в здравоохранении.
Непрерывная интеграция в сравнении с непрерывной доставкой/развертыванием (CD)
Будучи тесно связанной, CI отличается от непрерывной доставки и непрерывного развертывания (CD).
- Непрерывная интеграция (CI): Сосредоточена на частой интеграции и автоматизированном тестировании изменений кода. Результатом является проверенная сборка, готовая к следующему этапу. Ultralytics использует CI для тестирования всех запросов на включение перед их слиянием.
- Непрерывная доставка (CD): Расширяет CI, автоматически подготавливая каждое проверенное изменение для выпуска в промежуточную или производственную среду. Однако окончательное развертывание модели в производство требует ручного утверждения. Этот подход подробно описан в руководствах из таких источников, как Atlassian.
- Непрерывное развертывание (CD): Идет еще дальше, автоматически развертывая каждое проверенное изменение непосредственно в производство без какого-либо вмешательства человека. Это представляет собой самый высокий уровень автоматизации в жизненном цикле выпуска программного обеспечения.
Вместе, практики CI и CD являются основой надежной стратегии MLOps, которая направлена на объединение разработки и эксплуатации систем машинного обучения, от первоначальных экспериментов до развертывания и непрерывного мониторинга моделей.