MCP HubMCP Hub
스킬 목록으로 돌아가기

deploy-ml-model-serving

pjt222
업데이트됨 Yesterday
1 조회
17
2
17
GitHub에서 보기
테스팅aitestingapi

정보

이 스킬은 훈련된 ML 모델을 MLflow, BentoML 또는 Seldon Core를 사용하여 프로덕션 서빙 인프라에 배포합니다. REST/gRPC 엔드포인트를 설정하고 대규모 추론을 위한 오토스케일링, 모니터링 및 A/B 테스트 기능을 구현합니다. 배치 추론에서 실시간 추론으로 전환하거나 프로덕션 환경에서 모델 버전을 관리해야 할 때 사용하세요.

빠른 설치

Claude Code

추천
기본
npx skills add pjt222/agent-almanac -a claude-code
플러그인 명령대체
/plugin add https://github.com/pjt222/agent-almanac
Git 클론대체
git clone https://github.com/pjt222/agent-almanac.git ~/.claude/skills/deploy-ml-model-serving

Claude Code에서 이 명령을 복사하여 붙여넣어 스킬을 설치하세요

문서

ML-Modell-Serving bereitstellen

Siehe Erweiterte Beispiele fuer vollstaendige Konfigurationsdateien und Vorlagen.

Machine-Learning-Modelle mit skalierbarer Serving-Infrastruktur, Monitoring und A/B-Tests in Produktion bereitstellen.

Wann verwenden

  • Trainierte Modelle fuer Echtzeit-Inferenz in Produktion bereitstellen
  • REST- oder gRPC-APIs fuer Modellvorhersagen einrichten
  • Autoscaling fuer variable Lastmuster implementieren
  • A/B-Tests zwischen Modellversionen durchfuehren
  • Von Batch- zu Echtzeit-Inferenz migrieren
  • Vorhersagedienste mit niedriger Latenz erstellen
  • Mehrere Modellversionen in Produktion verwalten

Eingaben

  • Erforderlich: Registriertes Modell in MLflow Model Registry oder trainiertes Modellartefakt
  • Erforderlich: Kubernetes-Cluster oder Container-Orchestrierungsplattform
  • Erforderlich: Serving-Framework-Wahl (MLflow, BentoML, Seldon Core, TorchServe)
  • Optional: GPU-Ressourcen fuer Deep-Learning-Modelle
  • Optional: Monitoring-Infrastruktur (Prometheus, Grafana)
  • Optional: Load Balancer und Ingress Controller

Vorgehensweise

Schritt 1: Mit MLflow Models Serving bereitstellen

MLflows eingebautes Serving fuer schnelle Bereitstellung von scikit-learn-, PyTorch- und TensorFlow-Modellen verwenden.

# Serve model locally for testing
mlflow models serve \
  --model-uri models:/customer-churn-classifier/Production \
  --port 5001 \
  --host 0.0.0.0

# Test endpoint
curl -X POST http://localhost:5001/invocations \
  -H 'Content-Type: application/json' \
  -d '{
    "dataframe_records": [
      {"feature1": 1.0, "feature2": 2.0, "feature3": 3.0}
    ]
  }'

Docker-Bereitstellung:

# Dockerfile.mlflow-serving
FROM python:3.9-slim

# Install MLflow and dependencies
RUN pip install mlflow boto3 scikit-learn

# Set environment variables
ENV MLFLOW_TRACKING_URI=http://mlflow-server:5000
# ... (see EXAMPLES.md for complete implementation)

Docker Compose fuer lokales Testen:

# docker-compose.mlflow-serving.yml
version: '3.8'

services:
  model-server:
    build:
      context: .
      dockerfile: Dockerfile.mlflow-serving
# ... (see EXAMPLES.md for complete implementation)

Die Bereitstellung testen:

# test_mlflow_serving.py
import requests
import json

def test_prediction():
    url = "http://localhost:8080/invocations"

    # Prepare input data
# ... (see EXAMPLES.md for complete implementation)

Erwartet: Modellserver startet erfolgreich, antwortet auf HTTP-POST-Anfragen, gibt Vorhersagen im JSON-Format zurueck, Docker-Container laeuft ohne Fehler.

Bei Fehler: Modell-URI auf Gueltigkeit pruefen (mlflow models list), Erreichbarkeit des MLflow-Tracking-Servers verifizieren, sicherstellen, dass alle Modellabhaengigkeiten im Container installiert sind, Portverfuegbarkeit pruefen (netstat -tulpn | grep 8080), Modell-Flavor-Kompatibilitaet verifizieren, Container-Logs inspizieren (docker logs <container-id>).

Schritt 2: Mit BentoML fuer Produktionsmassstab bereitstellen

BentoML fuer fortgeschrittenes Serving mit besserer Leistung und Funktionen verwenden.

# bentoml_service.py
import bentoml
from bentoml.io import JSON, NumpyNdarray
import numpy as np
import pandas as pd

# Load model from MLflow
import mlflow
# ... (see EXAMPLES.md for complete implementation)

Erstellen und containerisieren:

# Build Bento
bentoml build

# Containerize
bentoml containerize customer_churn_classifier:latest \
  --image-tag customer-churn:v1.0

# Run container
docker run -p 3000:3000 customer-churn:v1.0

BentoML-Konfiguration:

# bentofile.yaml
service: "bentoml_service:ChurnPredictionService"
include:
  - "bentoml_service.py"
  - "preprocessing.py"
python:
  packages:
    - scikit-learn==1.0.2
    - pandas==1.4.0
    - numpy==1.22.0
    - mlflow==2.0.1
docker:
  distro: debian
  python_version: "3.9"
  cuda_version: null  # Set to "11.6" for GPU support

Kubernetes-Bereitstellung:

# k8s/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: churn-prediction
  labels:
    app: churn-prediction
spec:
# ... (see EXAMPLES.md for complete implementation)

Auf Kubernetes bereitstellen:

# Apply Kubernetes manifests
kubectl apply -f k8s/deployment.yaml

# Check deployment status
kubectl get deployments
kubectl get pods
kubectl get services

# Test endpoint
EXTERNAL_IP=$(kubectl get svc churn-prediction-service -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
curl -X POST http://$EXTERNAL_IP/predict \
  -H 'Content-Type: application/json' \
  -d '{"instances": [{"tenure": 12, "monthly_charges": 70.35}]}'

Erwartet: BentoML-Dienst wird erfolgreich gebaut, Container laeuft und liefert Vorhersagen, Kubernetes-Bereitstellung erstellt 3 Replikate, Load Balancer stellt externen Endpunkt bereit, Health Checks bestehen.

Bei Fehler: BentoML-Installation verifizieren (bentoml --version), pruefen ob Modell im BentoML-Store existiert (bentoml models list), sicherstellen dass Docker-Daemon laeuft, Kubernetes-Cluster-Zugang verifizieren (kubectl cluster-info), Ressourcenlimits auf Ueberschreitung pruefen, Pod-Logs inspizieren (kubectl logs <pod-name>), Dienstselektor mit Pod-Labels abgleichen.

Schritt 3: Seldon Core fuer erweiterte Funktionen implementieren

Seldon Core fuer Multi-Modell-Serving, A/B-Tests und Erklaerbarkeit verwenden.

# seldon_wrapper.py
import logging
from typing import Dict, List, Union
import numpy as np
import mlflow

logger = logging.getLogger(__name__)

# ... (see EXAMPLES.md for complete implementation)

Seldon-Bereitstellungskonfiguration:

# seldon-deployment.yaml
apiVersion: machinelearning.seldon.io/v1
kind: SeldonDeployment
metadata:
  name: churn-classifier
  namespace: seldon
spec:
  name: churn-classifier
# ... (see EXAMPLES.md for complete implementation)

A/B-Test-Konfiguration:

# seldon-ab-test.yaml
apiVersion: machinelearning.seldon.io/v1
kind: SeldonDeployment
metadata:
  name: churn-classifier-ab
spec:
  name: churn-classifier-ab
  predictors:
# ... (see EXAMPLES.md for complete implementation)

Auf Kubernetes bereitstellen:

# Install Seldon Core operator
kubectl create namespace seldon-system
helm install seldon-core seldon-core-operator \
  --repo https://storage.googleapis.com/seldon-charts \
  --namespace seldon-system \
  --set usageMetrics.enabled=true

# Create namespace for models
# ... (see EXAMPLES.md for complete implementation)

Erwartet: Seldon-Core-Operator erfolgreich installiert, Modellbereitstellung erstellt Pods, REST-Endpunkt antwortet auf Vorhersagen, A/B-Test teilt Traffic korrekt, Seldon Analytics zeichnet Metriken auf.

Bei Fehler: Pruefen ob Seldon-Core-Operator laeuft (kubectl get pods -n seldon-system), SeldonDeployment-Status pruefen (kubectl describe seldondeployment), sicherstellen dass Image-Registry vom Cluster erreichbar ist, Modell-URI-Aufloesung verifizieren, RBAC-Berechtigungen fuer Seldon-Operator pruefen, Modell-Container-Logs inspizieren.

Schritt 4: Monitoring und Observability implementieren

Umfassendes Monitoring fuer die Modell-Serving-Infrastruktur hinzufuegen.

# monitoring.py
from prometheus_client import Counter, Histogram, Gauge, start_http_server
import time
import logging

logger = logging.getLogger(__name__)

# Prometheus metrics
# ... (see EXAMPLES.md for complete implementation)

Prometheus-Konfiguration:

# prometheus-config.yaml
global:
  scrape_interval: 15s
  evaluation_interval: 15s

scrape_configs:
  - job_name: 'model-serving'
    kubernetes_sd_configs:
# ... (see EXAMPLES.md for complete implementation)

Grafana-Dashboard-JSON:

{
  "dashboard": {
    "title": "ML Model Serving Metrics",
    "panels": [
      {
        "title": "Predictions Per Second",
        "targets": [
          {
# ... (see EXAMPLES.md for complete implementation)

Erwartet: Prometheus sammelt Metriken erfolgreich, Grafana-Dashboards zeigen Vorhersagedurchsatz, Latenz-Perzentile, Fehlerraten und aktive Anfragen in Echtzeit an.

Bei Fehler: Prometheus-Scrape-Targets auf UP pruefen (http://prometheus:9090/targets), Erreichbarkeit des Metriken-Endpunkts pruefen (curl http://model-pod:8000/metrics), Kubernetes Service Discovery sicherstellen, Grafana-Datenquellenverbindung verifizieren, Firewall-Regeln fuer Metriken-Port pruefen.

Schritt 5: Autoscaling implementieren

Horizontales Pod-Autoscaling basierend auf Anfragelast konfigurieren.

# hpa.yaml
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
  name: churn-prediction-hpa
  namespace: seldon
spec:
  scaleTargetRef:
# ... (see EXAMPLES.md for complete implementation)

Autoscaling anwenden:

# Enable metrics server (if not already installed)
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml

# Apply HPA
kubectl apply -f hpa.yaml

# Check HPA status
kubectl get hpa -n seldon
kubectl describe hpa churn-prediction-hpa -n seldon

# Load test to trigger scaling
kubectl run -it --rm load-generator --image=busybox --restart=Never -- /bin/sh -c "while sleep 0.01; do wget -q -O- http://churn-prediction-service/predict; done"

# Watch scaling
kubectl get hpa -n seldon --watch

Erwartet: HPA ueberwacht CPU-/Speicher-/benutzerdefinierte Metriken, skaliert Replikate unter Last hoch, skaliert nach Stabilisierungsperiode herunter, Min-/Max-Replikatgrenzen werden eingehalten.

Bei Fehler: Metrics-Server auf Betrieb pruefen (kubectl get deployment metrics-server -n kube-system), sicherstellen dass Pod-Ressourcenanfragen definiert sind (HPA erfordert Requests), benutzerdefinierte Metriken auf Verfuegbarkeit pruefen falls verwendet, RBAC-Berechtigungen fuer HPA-Controller verifizieren, Stabilisierungsfenster auf zu restriktive Werte pruefen.

Schritt 6: Canary-Deployment-Strategie implementieren

Neue Modellversionen mit Traffic-Shifting schrittweise ausrollen.

# canary-deployment.yaml
apiVersion: machinelearning.seldon.io/v1
kind: SeldonDeployment
metadata:
  name: churn-classifier-canary
spec:
  name: churn-classifier-canary
  predictors:
# ... (see EXAMPLES.md for complete implementation)

Schrittweises Rollout-Skript:

# canary_rollout.py
import time
import subprocess
import logging

logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)

# ... (see EXAMPLES.md for complete implementation)

Erwartet: Canary-Deployment startet mit 0% Traffic, schrittweise Traffic-Umleitung erfolgt automatisch, Health Checks bestehen auf jeder Stufe, Rollback wird bei Metrikverschlechterung ausgeloest, vollstaendiges Rollout nach Bestehen aller Stufen.

Bei Fehler: Pruefen ob Seldon-Deployment mehrere Predictors hat, Traffic-Prozentsaetze auf Summe 100 pruefen, sicherstellen dass Canary-Image existiert und abrufbar ist, Prometheus-Metriken fuer Health Checks auf Verfuegbarkeit verifizieren, Rollback-Logik auf korrekte Ausfuehrung pruefen, Pod-Logs fuer beide Versionen inspizieren.

Validierung

  • Modellserver antwortet auf Vorhersageanfragen
  • REST/gRPC-Endpunkte funktionsfaehig und dokumentiert
  • Docker-Container werden erfolgreich gebaut und ausgefuehrt
  • Kubernetes-Bereitstellung erstellt erwartete Replikate
  • Load Balancer stellt externen Endpunkt bereit
  • Health Checks (Liveness/Readiness) bestehen
  • Prometheus-Metriken exportiert und gesammelt
  • Grafana-Dashboards zeigen Echtzeit-Metriken an
  • Autoscaling loest unter Last aus
  • A/B-Test teilt Traffic korrekt
  • Canary-Deployment rollt schrittweise aus
  • Rollback funktioniert bei Canary-Fehlschlag

Haeufige Stolperfallen

  • Kaltstartlatenz: Erste Anfrage langsam durch Modellladung — Readiness-Probes mit angemessener Verzoegerung verwenden, Modell-Caching implementieren
  • Speicherlecks: Langlebige Server akkumulieren Speicher — Speichernutzung ueberwachen, periodische Neustarts implementieren, Code profilieren
  • Abhaengigkeitskonflikte: Modellabhaengigkeiten inkompatibel mit Serving-Framework — exakte fixierte Versionen verwenden, vor Bereitstellung in Docker testen
  • Ressourcenlimits zu niedrig: Pods werden OOMKilled oder CPU-gedrosselt — Ressourcennutzung profilieren, angemessene Limits basierend auf Lasttests setzen
  • Fehlende Health Checks: Kubernetes leitet Traffic an ungesunde Pods — ordentliche Liveness/Readiness-Probes implementieren
  • Keine Rollback-Strategie: Schlechte Bereitstellung ohne einfaches Rollback — Canary-Deployments verwenden, vorherige Version verfuegbar halten
  • Latenz ignorieren: Nur auf Genauigkeit fokussiert, nicht auf Inferenzgeschwindigkeit — Latenz benchmarken, Modell/Code optimieren, Batching verwenden
  • Einzelnes Replikat: Keine Hochverfuegbarkeit, Ausfallzeit bei Bereitstellungen — mindestens 2 Replikate verwenden, Anti-Affinity konfigurieren
  • Kein Monitoring: Probleme werden erst erkannt wenn Kunden sich beschweren — umfassende Metriken von Tag eins implementieren
  • GPU nicht genutzt: GPU verfuegbar aber nicht verwendet — CUDA Visible Devices setzen, GPU-Zuweisung in Kubernetes verifizieren

Verwandte Skills

  • register-ml-model — Modelle vor der Bereitstellung registrieren
  • run-ab-test-models — A/B-Tests zwischen Modellversionen implementieren
  • deploy-to-kubernetes — Allgemeine Kubernetes-Bereitstellungsmuster
  • monitor-ml-model-performance — Modelldrift und -verschlechterung ueberwachen
  • orchestrate-ml-pipeline — Modellneutraining und -bereitstellung automatisieren

GitHub 저장소

pjt222/agent-almanac
경로: i18n/de/skills/deploy-ml-model-serving
0
agentsagentskillsai-assisted-developmentclaude-codeskillsteams

연관 스킬

evaluating-llms-harness

테스팅

이 Claude Skill은 MMLU, GSM8K를 포함한 60개 이상의 표준화된 학술 과제에서 LLM 성능을 벤치마크하기 위해 lm-evaluation-harness를 실행합니다. 개발자들이 모델 품질을 비교하고, 학습 진행 상황을 추적하거나 학술 결과를 보고할 수 있도록 설계되었습니다. 이 도구는 HuggingFace와 vLLM 모델을 포함한 다양한 백엔드를 지원합니다.

스킬 보기

cloudflare-cron-triggers

테스팅

이 스킬은 cron 표현식을 사용하여 Worker를 스케줄링하기 위한 Cloudflare Cron Triggers 구현에 관한 포괄적인 지식을 제공합니다. 주기적 작업, 유지보수 작업, 자동화된 워크플로우 설정 방법을 다루며, 잘못된 cron 표현식이나 시간대 문제 같은 일반적인 이슈들을 해결하는 방법을 포함합니다. 개발자들은 이를 통해 스케줄된 핸들러 구성, cron 트리거 테스트, Workflows 및 Green Compute와의 연동 작업을 수행할 수 있습니다.

스킬 보기

webapp-testing

테스팅

이 Claude Skill은 Python 스크립트를 통해 로컬 웹 애플리케이션을 테스트하기 위한 Playwright 기반 툴킷을 제공합니다. 프론트엔드 검증, UI 디버깅, 스크린샷 캡처, 로그 확인 기능을 지원하며 서버 라이프사이클을 관리합니다. 브라우저 자동화 작업에 사용하되 컨텍스트 오염을 방지하기 위해 소스 코드를 읽지 않고 스크립트를 직접 실행하세요.

스킬 보기

finishing-a-development-branch

테스팅

이 스킬은 테스트 통과를 확인한 후 체계적인 통합 옵션을 제시하여 개발자가 완성된 작업을 마무리하도록 돕습니다. 구현이 완료된 후 머지, PR 생성, 브랜치 정리와 같은 워크플로우를 안내합니다. 코드가 준비되고 테스트가 완료되었을 때 개발 프로세스를 체계적으로 마무리하기 위해 사용하세요.

스킬 보기