Глоссарий

Контейнеризация

Открой для себя мощь контейнеризации для AI/ML-проектов. Упорядочивай рабочие процессы, обеспечивай согласованность и эффективно масштабируйся с помощью передовых инструментов.

Обучай модели YOLO просто
с помощью Ultralytics HUB.

Узнай больше

Контейнеризация - это метод упаковки программного кода вместе со всеми необходимыми зависимостями, библиотеками и конфигурационными файлами в единый, самодостаточный блок, называемый "контейнером". Такая упаковка обеспечивает надежную и стабильную работу приложений в различных вычислительных средах, будь то локальная машина разработчика, среда тестирования или производственный сервер в облаке. В отличие от традиционных виртуальных машин (ВМ), которые требуют установки полноценной операционной системы для каждого экземпляра, контейнеры совместно используют ядро ОС хост-системы. Это делает их значительно более легкими, быстрыми в запуске и эффективными в использовании ресурсов, что особенно полезно для ресурсоемких приложений искусственного интеллекта (AI) и машинного обучения (ML), которые часто имеют сложные требования к программному обеспечению.

Ключевые понятия и компоненты

Понимание контейнеризации включает в себя несколько основных идей:

  • Образ контейнера: Легкий, автономный, исполняемый пакет, который включает в себя все необходимое для запуска части программного обеспечения: код, время выполнения, системные инструменты, системные библиотеки и настройки. Образы часто собираются на основе инструкций в специальном файле (например, Dockerfile).
  • Контейнер: Работающий экземпляр образа контейнера. Он работает изолированно от других контейнеров и хост-системы, но разделяет ядро ОС хоста. На одной хост-машине может работать несколько контейнеров.
  • Docker: самая популярная платформа для контейнеризации, разработанная компанией Docker, Inc. Она предоставляет инструменты для легкого создания, обмена и запуска контейнерных приложений. Ultralytics предлагает руководство по быстрому запуску Docker для настройки моделей YOLO .
  • Реестр контейнеров: Репозиторий для хранения и распространения образов контейнеров. Docker Hub - широко используемый публичный реестр, но частные реестры также распространены.
  • Оркестровка: Такие инструменты, как Kubernetes и Docker Swarm, используются для управления жизненным циклом контейнеров в масштабе, обеспечивая развертывание, масштабирование, работу с сетью и доступность на нескольких хост-машинах. В рамках Cloud Native Computing Foundation (CNCF) существует множество проектов, связанных с оркестровкой контейнеров.

Преимущества контейнеризации в AI/ML

Контейнеризация дает значительные преимущества для ML- и AI-проектов:

  • Воспроизводимость: Контейнеры инкапсулируют точное окружение (библиотеки, версии, например PyTorch или OpenCV, конфигурации), необходимое для запуска приложения или модели, обеспечивая согласованность между разработкой, тестированием и производством. Это крайне важно для воспроизводимых исследований и надежного развертывания моделей.
  • Управление зависимостями: Проекты AI/ML часто зависят от конкретных версий многочисленных библиотек. Контейнеры изолируют эти зависимости, предотвращая конфликты между разными проектами или системными библиотеками.
  • Масштабируемость: Контейнеры можно быстро запускать и останавливать, что позволяет легко масштабировать приложения в зависимости от потребностей, что крайне важно для обработки переменных рабочих нагрузок в вычислениях в реальном времени. Это поддерживает потребности в масштабируемости вычислений.
  • Переносимость: Контейнеры стабильно работают в разных средах - от ноутбука разработчика до локальных серверов или публичных облаков вроде AWS, Google Cloud или Microsoft Azure. Это упрощает развертывание на различных объектах, включая пограничные устройства. Изучи различные варианты развертывания моделей, которые облегчает контейнеризация.
  • Эффективность: Контейнеры используют меньше ресурсовCPU, память, хранилище), чем ВМ, потому что им не нужна отдельная ОС для каждого экземпляра, что позволяет повысить плотность приложений на одном и том же оборудовании. Это согласуется с эффективными операциями машинного обучения (MLOps).

Контейнеризация против виртуализации

Хотя и контейнеризация, и виртуализация создают изолированные среды, их подход существенно отличается. Виртуальные машины (ВМ) эмулируют целую аппаратную систему, запуская полноценную гостевую операционную систему поверх гипервизора. Это обеспечивает сильную изоляцию, но влечет за собой значительные накладные расходы в плане потребления ресурсов (CPU, память) и времени запуска. Контейнеры же, наоборот, виртуализируют саму операционную систему, разделяя ядро хостовой ОС с помощью движков контейнеризации вроде Docker. Это приводит к гораздо меньшей площади, более быстрому запуску и лучшей производительности. Для многих задач AI/ML, особенно для развертывания микросервисов или приложений, нуждающихся в быстрой масштабируемости, контейнеры зачастую предпочтительнее. ВМ остаются пригодными, когда нужно запустить разные операционные системы на одном и том же оборудовании или требуется абсолютная максимальная изоляция между приложениями.

Приложения реального мира в AI/ML

Контейнеризация широко используется на протяжении всего жизненного цикла AI/ML:

  1. Развертывание моделей обнаружения объектов:. Ultralytics YOLO обученная для обнаружения объектов модель может быть упакована в контейнер Docker. Этот контейнер включает в себя веса модели, скрипт вывода и все необходимые зависимости (PyTorch, библиотеки CUDA и т.д.). Затем этот контейнер можно последовательно развернуть на различных платформах, от мощных облачных GPU до ограниченных в ресурсах устройств Edge AI, гарантируя, что модель будет работать так, как ожидается, независимо от окружения. Ultralytics предоставляет руководство по быстрому запуску Docker, чтобы облегчить эту задачу.
  2. Обслуживание моделей NLP в виде микросервисов: Команда, разрабатывающая приложение для обработки естественного языка (NLP), использует модели из таких платформ, как Hugging Face может контейнировать различные компоненты (например, препроцессинг текста, вывод модели, конечную точку API) в виде отдельных микросервисов. Эти контейнеры могут управляться с помощью Kubernetes, что позволяет независимо масштабировать и обновлять каждый компонент, что приводит к более устойчивой и управляемой архитектуре системы, часто следующей принципам архитектуры микросервисов. Такие платформы, как Ultralytics HUB, также используют принципы контейнеризации для упрощенного управления и развертывания моделей.

Контейнеризация, стандартизированная такими усилиями, как Open Container Initiative (OCI), стала краеугольным камнем современной разработки и развертывания программного обеспечения, особенно в быстро развивающихся областях искусственного интеллекта и компьютерного зрения (CV).

Читать полностью