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:latestHorizontal 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: 50Ograniczenia 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: 8000Bezpieczne 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
targetCPUUtilizationPercentageskaluje 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
- Konteneryzacja modeli ML za pomocą Dockera
- Wdrażanie w chmurze: AWS SageMaker
- Wysokowydajne udostępnianie modeli za pomocą Triton Inference Server
- Skalowanie i automatyczne skalowanie punktów końcowych modeli