Containerization
Узнай, как контейнеризация упрощает развёртывание ИИ. Познакомься с использованием Docker и Kubernetes для стабильного запуска Ultralytics YOLO26 в любой среде.
Контейнеризация — это стратегия развертывания программного обеспечения, которая объединяет исходный код приложения с его библиотеками, зависимостями и файлами конфигурации в единый легковесный исполняемый модуль, известный как контейнер. Такой подход абстрагирует программное обеспечение от базовой инфраструктуры, обеспечивая согласованную работу приложений в различных вычислительных средах — от локального ноутбука разработчика до крупных кластеров облачных вычислений. В контексте машинного обучения (ML) контейнеризация решает известную проблему «на моем компьютере работает», изолируя сложное окружение, необходимое для обучения и запуска нейронных сетей.
Почему контейнеризация важна для AI#
Для специалистов по обработке данных и ML-инженеров управление окружениями представляет собой серьезную проблему. Для разных проектов могут потребоваться несовместимые версии Python, драйверов CUDA или библиотек, таких как PyTorch. Контейнеризация устраняет эти конфликты, создавая изолированные неизменяемые окружения.
- Переносимость: Контейнеризированное приложение для компьютерного зрения можно беспрепятственно перемещать между средами разработки, тестирования и эксплуатации. Это гарантирует, что модель, обученная на рабочей станции, будет работать на сервере точно так же.
- Эффективность: В отличие от традиционных методов, контейнеры используют общее с хост-системой ядро операционной системы (OS), благодаря чему они чрезвычайно легковесны. Такая высокая плотность размещения позволяет эффективнее использовать ресурсы, что особенно важно для сокращения задержки инференса в приложениях реального времени.
- Масштабируемость: Современные инструменты оркестрации могут быстро запускать или останавливать экземпляры контейнеров в зависимости от нагрузки, обеспечивая масштабируемость сервисов с высоким спросом.
Контейнеризация и виртуальные машины#
Важно различать контейнеры и виртуальные машины (VMs). ВМ эмулирует весь аппаратный стек, включая полноценную гостевую операционную систему, что приводит к значительным накладным расходам ресурсов и увеличивает время запуска. В отличие от этого, контейнеризация виртуализирует операционную систему, позволяя нескольким приложениям работать как изолированные процессы на одном общем ядре. Уменьшенный размер контейнеров делает их предпочтительным выбором для сценариев Edge AI, где аппаратные ресурсы ограничены, например на устройствах IoT или дронах. Для более подробного технического сравнения ознакомься с руководством Red Hat по контейнерам и ВМ.
Основные технологии#
Основу современной экосистемы контейнеров составляют несколько ключевых технологий:
- Docker: Наиболее широко используемая платформа для создания, запуска и управления контейнерами. Ultralytics предлагает краткое руководство по Docker, которое помогает легко развертывать модели обнаружения объектов без ручной настройки окружения.
- Kubernetes: Система с открытым исходным кодом для автоматизации развертывания, масштабирования и управления контейнеризированными приложениями. Она необходима для управления большими кластерами контейнеров в корпоративных конвейерах MLOps.
- Реестры контейнеров: Такие сервисы, как каталог NVIDIA NGC, хранят и распространяют образы контейнеров, часто предварительно оптимизированные для конкретных задач, например обучения моделей с ускорением на GPU.
- Инициатива открытых контейнеров (OCI): отраслевой стандарт, обеспечивающий совместимость форматов контейнеров и сред выполнения на разных платформах и разработанный при содействии Инициативы открытых контейнеров.
Практические применения#
Контейнеризация повсеместно используется в современных рабочих процессах AI, обеспечивая быструю итерацию и надежное развертывание.
-
Умное городское видеонаблюдение: Муниципалитеты развертывают системы управления дорожным движением с использованием подключенных к сети камер. Благодаря контейнерам инженеры могут одновременно отправлять обновления программного обеспечения на тысячи периферийных устройств. Если новая модель обнаружения объектов повышает точность, контейнер обновляется по воздуху, обеспечивая стабильную производительность во всей городской инфраструктуре.
-
Воспроизводимые исследования: В академических и промышленных исследованиях критически важно воспроизводить результаты. Публикуя образ Docker с точными скриптами обработки данных для обучения и архитектурой модели, исследователи гарантируют, что их рецензенты смогут точно повторить эксперимент. Это необходимо для подтверждения достижений в области глубокого обучения (DL).
Пример: инференс в контейнере#
При создании контейнера для AI-приложения обычно добавляют скрипт для обработки обслуживания модели. Следующий фрагмент кода на Python демонстрирует простой рабочий процесс инференса с использованием пакета ultralytics. Этот скрипт будет выполняться внутри контейнера, используя предварительно установленные зависимости окружения.
from ultralytics import YOLO
# Load the YOLO26 model (weights are usually baked into the container image)
# YOLO26 is the latest state-of-the-art model for real-time tasks
model = YOLO("yolo26n.pt")
# Perform inference on an image URL
# In production, this might handle API requests or video streams
results = model.predict("https://ultralytics.com/images/bus.jpg")
# Print the number of detected objects to the logs
print(f"Inference complete. Detected {len(results[0].boxes)} objects.")Инкапсулируя эту логику в контейнере, разработчики обеспечивают неизменность версий Python и библиотек, предотвращая непредвиденные сбои в эксплуатации. Для упрощения управления моделями, обучения и развертывания многие команды используют платформу Ultralytics, которая изначально поддерживает рабочие процессы на основе контейнеров. Подробнее о стратегиях развертывания можно узнать в руководстве AWS по вариантам использования контейнеров.









