0Pricing
Learn AI with Python · Lekcja

Skalowanie i automatyczne skalowanie punktów końcowych modeli

Kubernetes HPA dla podów modeli, skalowanie zależne od ruchu, wdrażanie A/B, wydania canary.

Skalowanie i automatyczne skalowanie punktów końcowych modeli to bezpłatna lekcja Learn AI with Python na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Learn AI with Python, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Learn AI with Python zawiera 4 lekcji w sumie.

Dlaczego automatyczne skalowanie

Ruch związany z wnioskowaniem rzadko utrzymuje się na stałym poziomie. Przygotowanie zasobów na szczytowe obciążenie oznacza marnowanie pieniędzy w nocy, a przygotowanie ich na średnie obciążenie powoduje problemy w godzinach szczytu. Automatyczne skalowanie samoczynnie dostosowuje liczbę replik do zapotrzebowania, dzięki czemu płaci się za wykorzystywane zasoby i zachowuje responsywność usługi.

Pody i repliki

W Kubernetes serwer modelu działa jako obiekt Deployment złożony z identycznych podów (replik). Skalowanie oznacza zmianę liczby replik. Usługa równoważy obciążenie żądań między dostępnymi replikami.

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

Horizontal Pod Autoscaler

Horizontal Pod Autoscaler (HPA) monitoruje metrykę oraz dodaje lub usuwa pody, aby utrzymać jej wartość w pobliżu celu. Klasyczną metryką jest wykorzystanie procesora CPU.

HPA na podstawie wykorzystania CPU

targetCPUUtilizationPercentage informuje HPA, aby utrzymywał średnie wykorzystanie CPU w pobliżu wartości docelowej. Jeśli średnie wykorzystanie CPU przez pody wynosi 80%, a cel to 50%, HPA zwiększa skalę do momentu, aż wykorzystanie ponownie zbliży się do 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

Ograniczenia skalowania na podstawie CPU

CPU jest słabym wskaźnikiem zastępczym w przypadku niektórych obciążeń. Model GPU może być ograniczany przez GPU, podczas gdy wykorzystanie CPU pozostaje niskie, albo kolejka asynchronicznego workera może rosnąć mimo bezczynności CPU. W takich przypadkach należy skalować na podstawie sygnału właściwego dla danego obciążenia.

KEDA do skalowania sterowanego zdarzeniami

KEDA (Kubernetes Event-Driven Autoscaling) skaluje na podstawie zewnętrznych metryk, takich jak długość kolejki, opóźnienie w Kafka lub zapytania Prometheus. Może nawet skalować do zera, gdy nie ma pracy, czego HPA nie potrafi zrobić samodzielnie.

ScaledObject KEDA oparty na kolejce

Ten obiekt KEDA ScaledObject dodaje workery, gdy rośnie kolejka komunikatów. Każda jednostka zaległości queueLength uruchamia kolejną replikę, dzięki czemu konsument nadąża za nagłymi wzrostami obciążenia.

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"

Równoważenie obciążenia za pomocą Ingress

Ruch zewnętrzny dociera do podów za pośrednictwem obiektu ingress. Kontroler nginx ingress kończy obsługę TLS i rozdziela żądania między usługę obsługującą repliki, dzięki czemu zwiększenie skali natychmiast rozkłada obciążenie.

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

Bezpieczne wdrożenia: canary

Jednoczesne skierowanie całego ruchu do nowej wersji modelu jest ryzykowne. Wdrożenie canary kieruje niewielką część ruchu do nowej wersji, monitoruje jej metryki, a następnie stopniowo zwiększa udział tego ruchu.

Canary z wagami ruchu

Adnotacje canary kontrolera nginx ingress kierują określony procent żądań do drugiego wdrożenia. Należy rozpocząć od 10%, zweryfikować współczynnik błędów i opóźnienie, a następnie zwiększyć wagę do 100%.

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

Łączenie wszystkich elementów skalowania

Solidna konfiguracja łączy wszystkie te elementy:

  • HPA lub KEDA ustala liczbę replik na podstawie zapotrzebowania
  • Ingress równoważy obciążenie między replikami
  • Wagi canary bezpiecznie wdrażają nowe wersje

Razem zapewniają elastyczne, odporne na awarie i obarczone niewielkim ryzykiem udostępnianie modeli.

Szybkie sprawdzenie

Sprawdź swoją wiedzę o skalowaniu.

Podsumowanie

Nauczyłeś się skalować endpointy modeli:

  • HPA z użyciem targetCPUUtilizationPercentage skaluje na podstawie CPU
  • KEDA skaluje na podstawie długości kolejki i obsługuje skalowanie do zera
  • nginx ingress równoważy obciążenie między replikami
  • Wagi canary stopniowo przenoszą ruch, umożliwiając bezpieczne wdrażanie wersji

Często zadawane pytania

Czy lekcja „Skalowanie i automatyczne skalowanie punktów końcowych modeli” jest bezpłatna?

Tak — pełny tekst „Skalowanie i automatyczne skalowanie punktów końcowych modeli” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Learn AI with Python, przejdź na CoddyKit PRO. Kurs Learn AI with Python zawiera 4 lekcji w sumie.

Co nauczysz się w „Skalowanie i automatyczne skalowanie punktów końcowych modeli”?

Kubernetes HPA dla podów modeli, skalowanie zależne od ruchu, wdrażanie A/B, wydania canary. Ćwiczysz Learn AI with Python z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Learn AI with Python?

Nie wymagamy żadnego doświadczenia. Learn AI with Python w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.

Ile czasu zajmuje lekcja „Skalowanie i automatyczne skalowanie punktów końcowych modeli”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Learn AI with Python?

Tak. Każda lekcja Learn AI with Python zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Konteneryzacja modeli ML za pomocą Dockera
  2. Wdrażanie w chmurze: AWS SageMaker
  3. Wysokowydajne udostępnianie modeli za pomocą Triton Inference Server
  4. Skalowanie i automatyczne skalowanie punktów końcowych modeli
← Powrót do Learn AI with Python