0Pricing
Learn AI with Python · Урок

Масштабирование и автоматическое масштабирование конечных точек моделей

Kubernetes HPA для подов моделей, масштабирование по трафику, A/B-развертывание, канареечные релизы

«Масштабирование и автоматическое масштабирование конечных точек моделей» — бесплатный урок Learn AI with Python на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Learn AI with Python, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Learn AI with Python содержит 4 уроков всего.

Зачем нужно автоматическое масштабирование

Трафик инференса редко бывает постоянным. Подготовка ресурсов к пиковой нагрузке приводит к перерасходу средств ночью, а подготовка к средней нагрузке не справляется с пиковыми значениями. Автоматическое масштабирование автоматически изменяет количество реплик в зависимости от спроса, поэтому Вы платите за используемые ресурсы и сохраняете быструю реакцию системы.

Поды и реплики

В Kubernetes сервер модели работает как развёртывание из одинаковых подов (реплик). Масштабирование означает изменение количества реплик. Сервис распределяет запросы между всеми существующими репликами.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: model-server
spec:
  replicas: 2
  template:
    spec:
      containers:
        - name: server
          image: my-model:latest

HorizontalPodAutoscaler

Horizontal Pod Autoscaler (HPA) отслеживает метрику и добавляет или удаляет поды, чтобы поддерживать её значение около целевого уровня. Классическая метрика — загрузка CPU.

HPA по загрузке CPU

targetCPUUtilizationPercentage сообщает HPA, что среднюю загрузку CPU нужно поддерживать около целевого значения. Если средняя загрузка CPU подов составляет 80%, а целевое значение — 50%, HPA увеличивает масштаб до тех пор, пока загрузка не приблизится к 50%.

apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
  name: model-hpa
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: model-server
  minReplicas: 2
  maxReplicas: 10
  targetCPUUtilizationPercentage: 50

Ограничения масштабирования по CPU

Для некоторых рабочих нагрузок CPU плохо отражает реальную потребность в ресурсах. Модель на GPU может упираться в возможности GPU при низкой загрузке CPU, а асинхронный обработчик может иметь растущую очередь при простаивающем CPU. В таких случаях масштабируйтесь по сигналу, специфичному для рабочей нагрузки.

KEDA для масштабирования по событиям

KEDA (автоматическое масштабирование Kubernetes на основе событий) использует внешние метрики, такие как длина очереди, задержка Kafka или запросы Prometheus. KEDA может даже уменьшить масштаб до нуля, когда работы нет, чего HPA самостоятельно сделать не может.

ScaledObject KEDA на основе очереди

Этот объект KEDA ScaledObject добавляет обработчики, когда очередь сообщений растёт. Каждая единица отложенных сообщений, указанная в queueLength, запускает ещё одну реплику, поэтому обработчик успевает справляться с всплесками.

apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
  name: inference-worker
spec:
  scaleTargetRef:
    name: inference-worker
  minReplicaCount: 0
  maxReplicaCount: 20
  triggers:
    - type: rabbitmq
      metadata:
        queueName: inference
        queueLength: "10"

Балансировка нагрузки с помощью входного шлюза

Внешний трафик поступает к подам через входной шлюз. Контроллер входного шлюза nginx завершает TLS и распределяет запросы между сервисом, обслуживающим Ваши реплики, поэтому после масштабирования нагрузка сразу распределяется между ними.

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: model-ingress
spec:
  ingressClassName: nginx
  rules:
    - host: api.example.com
      http:
        paths:
          - path: /predict
            pathType: Prefix
            backend:
              service:
                name: model-server
                port:
                  number: 8000

Безопасные развёртывания: канареечный выпуск

Одновременное переключение всего трафика на новую версию модели рискованно. Канареечный выпуск направляет небольшую часть трафика на новую версию, отслеживает её метрики, а затем постепенно увеличивает её долю.

Канареечный выпуск с весами трафика

Аннотации канареечного режима входного шлюза nginx направляют определённый процент запросов во второе развёртывание. Начните с 10%, проверьте долю ошибок и задержку, затем увеличьте вес до 100%.

metadata:
  annotations:
    nginx.ingress.kubernetes.io/canary: "true"
    nginx.ingress.kubernetes.io/canary-weight: "10"

Объединение всех механизмов масштабирования

Надёжная конфигурация объединяет все эти механизмы:

  • HPA или KEDA задаёт количество реплик в зависимости от спроса
  • Входной шлюз распределяет нагрузку между репликами
  • Веса канареечного режима безопасно переводят систему на новые версии

Вместе они обеспечивают эластичное, устойчивое и безопасное обслуживание моделей с низким риском.

Быстрая проверка

Проверьте свои знания о масштабировании.

Итоги

Вы научились масштабировать конечные точки моделей:

  • HPA с параметром targetCPUUtilizationPercentage масштабирует систему по загрузке CPU
  • KEDA масштабирует систему по длине очереди и поддерживает уменьшение масштаба до нуля
  • Входной шлюз nginx распределяет нагрузку между репликами
  • Веса канареечного режима постепенно переключают трафик для безопасных выпусков

Часто задаваемые вопросы

Урок «Масштабирование и автоматическое масштабирование конечных точек моделей» бесплатный?

Да — полный текст урока «Масштабирование и автоматическое масштабирование конечных точек моделей» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Learn AI with Python, подпишись на CoddyKit PRO. Курс Learn AI with Python содержит 4 уроков всего.

Чему я научусь в уроке «Масштабирование и автоматическое масштабирование конечных точек моделей»?

Kubernetes HPA для подов моделей, масштабирование по трафику, A/B-развертывание, канареечные релизы Ты практикуешь Learn AI with Python с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Learn AI with Python?

Предыдущий опыт не требуется. Learn AI with Python на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.

Сколько времени занимает урок «Масштабирование и автоматическое масштабирование конечных точек моделей»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Learn AI with Python?

Да. Каждый урок Learn AI with Python включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Контейнеризация моделей машинного обучения с помощью Docker
  2. Развертывание в облаке: AWS SageMaker
  3. Высокопроизводительное предоставление моделей с Triton Inference Server
  4. Масштабирование и автоматическое масштабирование конечных точек моделей
← Назад к Learn AI with Python