Docker
Узнай, как Docker обеспечивает воспроизводимое развертывание AI. Научись упаковывать модели Ultralytics YOLO26 в контейнеры для плавного масштабирования от облака до периферийных устройств.
Docker — это платформа с открытым исходным кодом, которая позволяет разработчикам автоматизировать развертывание, масштабирование и управление приложениями с помощью контейнеризации. В контексте искусственного интеллекта и машинного обучения Docker выступает стандартизированным программным блоком, в котором упакованы код и все его зависимости — такие как библиотеки, системные инструменты и настройки, — благодаря чему приложение быстро и надежно работает в разных вычислительных средах. Это устраняет распространенную проблему «на моем компьютере работает», гарантируя, что нейронная сеть, обученная на ноутбуке исследователя, при развертывании на мощном облачном сервере или периферийном устройстве будет работать точно так же.
Почему Docker важен для искусственного интеллекта и машинного обучения#
Современные операции машинного обучения (MLOps) в значительной степени зависят от воспроизводимости и переносимости. Проект в области ИИ часто включает сложный стек программного обеспечения, в том числе определённые версии Python, драйверы CUDA для ускорения на GPU и фреймворки глубокого обучения, такие как PyTorch или TensorFlow. Ручное управление всем этим в разных командах и инфраструктурах чревато ошибками.
Docker упрощает этот процесс, создавая легковесные автономные контейнеры. В отличие от традиционных виртуальных машин (VMs), которым для каждого экземпляра требуется полноценная операционная система, контейнеры используют общее ядро ОС хост-компьютера, но работают в изолированных пользовательских пространствах. Благодаря этому они потребляют значительно меньше ресурсов и быстрее запускаются, что особенно важно при масштабировании инфраструктуры обслуживания моделей или выполнении распределенных задач обучения.
Практические применения#
Docker повсеместно используется на всех этапах жизненного цикла искусственного интеллекта — от первоначальных экспериментов до финального развертывания.
-
Согласованные среды обучения: Команда специалистов по анализу данных может использовать образы Docker, чтобы делиться унифицированной средой разработки. Например, исследователь, работающий над обнаружением объектов, может загрузить готовый образ, содержащий все необходимые драйверы и библиотеки. Это гарантирует, что при обучении модели YOLO26 результаты будут воспроизводимыми для коллег независимо от различий в используемом оборудовании.
-
Развертывание периферийного искусственного интеллекта: В системах наблюдения за умным городом обновленные модели необходимо отправлять на тысячи периферийных устройств, таких как камеры дорожного движения или дроны. Контейнеры Docker позволяют инженерам упаковать новую версию модели и развернуть ее по воздуху. Поскольку контейнер включает среду выполнения инференса, процесс обновления проходит без проблем и не затрагивает основную операционную систему устройства.
Docker, Kubernetes и виртуальные машины#
Чтобы понять конкретную роль Docker, полезно отличать его от связанных технологий:
- Docker и виртуальные машины (VMs): Виртуальные машины виртуализируют аппаратное обеспечение, то есть каждая VM запускает полноценную ОС (например, Windows или Linux) поверх гипервизора. Это требует значительных объемов памяти и ресурсов CPU. Docker виртуализирует операционную систему, поэтому контейнеры намного меньше и быстрее виртуальных машин.
- Docker и Kubernetes: Это взаимодополняющие, а не конкурирующие технологии. Docker — инструмент для создания и запуска отдельных контейнеров. Kubernetes — платформа оркестрации контейнеров, которая управляет кластерами контейнеров Docker и выполняет такие задачи, как автоматическое масштабирование, балансировка нагрузки и самовосстановление в крупномасштабных средах облачных вычислений.
Пример: выполнение инференса в контейнере#
В следующем примере показано, как может выглядеть скрипт Python внутри контейнера Docker, предназначенного для компьютерного зрения. Этот скрипт использует пакет ultralytics для загрузки модели и выполнения инференса. Среда контейнера гарантирует, что необходимые зависимости, такие как opencv-python и torch, уже установлены.
from ultralytics import YOLO
# Load the YOLO26 model (weights are typically included in the Docker image)
model = YOLO("yolo26n.pt")
# Perform inference on an image source
# In a containerized microservice, this might process incoming API requests
results = model.predict("https://ultralytics.com/images/bus.jpg")
# Log the detection results
print(f"Detected {len(results[0].boxes)} objects in the image.")Интеграция Docker в рабочий процесс#
Чтобы начать использовать контейнеризацию, разработчики обычно создают Dockerfile — текстовый документ, содержащий все команды для сборки образа. После создания эти образы можно хранить в реестрах, таких как Docker Hub или каталог NVIDIA NGC, предлагающий контейнеры, оптимизированные для GPU.
Тем, кто хочет упростить процесс обучения и развертывания без ручного управления Dockerfile, платформа Ultralytics предлагает интегрированные инструменты, которые берут на себя сложность облачных сред. Это позволяет пользователям сосредоточиться на повышении точности модели, а не на настройке инфраструктуры. Кроме того, ты можешь изучить наше краткое руководство по Docker, чтобы сразу узнать, как запускать модели Ultralytics в контейнерах.









