Das Ausführen großer KI/ML-Workloads auf Kubernetes kann sich anfühlen, als müssten Sie sich durch ein Labyrinth aus Ressourcenzuweisungen, Sicherheitshürden und Überwachungsanforderungen navigieren – vor allem, wenn Sie keinen soliden Plan haben. Sicher, es ist spannend, Aufgaben für neuronale Netze wie Bilderkennung oder Abwanderungsvorhersage zu sehen, aber es besteht immer die Sorge, dass Ihr Cluster an seine Grenzen stößt.
MLOps ist hier ein freundlicher Anker, der die Lücke zwischen Datenwissenschaftlern, DevOps-Mitarbeitern und Sicherheitsteams schließt, indem es eine Reihe von Ideen und Tools bietet, die Ihnen helfen, den Überblick über die Erstellung, das Testen und die Veröffentlichung von Modellen zu behalten. Es fördert eine enge Zusammenarbeit, sodass ein Data Scientist in einem Team und ein Kubernetes-Guru in einem anderen Team ein Modell sicher aktualisieren können, ohne sich gegenseitig zu treten's Zehen. Wenn MLOps auf Containerorchestrierung trifft, erhalten Sie eine vorhersehbarere Möglichkeit zur Steuerung von KI-Pipelines.
Unser Ziel in diesem Artikel ist es, die Best Practices für die Ausführung komplexer KI-Aufgaben in Kubernetes zu teilen. Wir'Wir sprechen über Skalierung, Planung, Sicherheit, Ressourcenmanagement und andere Elemente, die für erfahrene Plattformingenieure und Leute, die gerade erst in das maschinelle Lernen in Kubernetes einsteigen, wichtig sind. Indem Sie durch jeden Abschnitt gehen,'erhalten praktische Tipps, um Ihren Cluster vor KI-Sicherheitsrisiken, halten Sie Ihre Kosten im Zaum und geben Sie Ihren Modellen die Rechenleistung, nach der sie sich sehnen.
Sichere Codierungspraktiken für Kubernetes [Spickzettel]
Dieser 10-seitige Spickzettel bietet Infrastruktur- und Plattformentwicklern erweiterte, umsetzbare Anleitungen zum Schutz containerisierter Anwendungen.
PDF herunterladenRessourcenmanagement
Bevor Sie Container für das Training oder die Rückschlüsse einrichten, ist es wichtig, sicherzustellen, dass die Clusterressourcen der Intensität Ihrer Workloads entsprechen. Schließlich führt das Ignorieren von GPU-Anforderungen oder das Überspringen der richtigen CPU-Dimensionierung zu langsamer Leistung, zufälligen Kills durch unzureichenden Arbeitsspeicher und enttäuschten Teams.
GPU- und spezialisierte Hardwarezuweisung
GPUs, TPUs und andere Beschleuniger sind wie die Sportwagen in einem Cluster's Garage. Sie ermöglichen es Ihnen, umfangreiche Modelle zu trainieren oder einen enormen Durchsatz während der Inferenz zu bewältigen. Die Bereitstellung dieser Hardwareressourcen in Pods hängt von Geräte-Plugins ab, die von Kubernetes bereitgestellt werden. Zum Beispiel durch Hinzufügen von das offizielle NVIDIA-Geräte-Pluginkönnen Sie GPU-Slices pro Pod anfordern.
Ein wichtiger Tipp? Durch das Festlegen der richtigen Ressourcenanforderungen wird sichergestellt, dass der Planer den richtigen Knoten mit der richtigen GPU erkennt. Wenn Sie diese Ressourcendefinitionen überspringen, landet Ihre Workload möglicherweise auf einem Knoten ohne Beschleuniger, was zu Auftragsfehlern führt. Es ist auch hilfreich, GPU-Knoten mit etwas wie nvidia.com/gpu=true zu beschriften, um sie einfach über nodeSelector oder nodeAffinity anzusprechen.
Der folgende Codeausschnitt zeigt eine grundlegende Pod-Spezifikation, die eine GPU von NVIDIA anfordert:
apiVersion: v1
Art: Pod
Metadaten:
Name: gpu-training-pod
Spekulation:
Container:
- Bezeichnung: gpu-training-container
Bild: nvcr.io/nvidia/tensorflow:22.01-tf2-py3
Betriebsmittel:
grenzen:
nvidia.com/gpu: 1
nodeSelector:
nvidia.com/gpu: "STIMMT"CPU- und Speicherdimensionierung
Nicht jede Datenpipeline oder jeder Modelltrainingsauftrag benötigt eine GPU. Viele Aufgaben laufen auf CPUs einwandfrei, wenn Sie sie richtig dimensionieren. Durch das Festlegen von Anforderungen und Limits weiß der Kubernetes-Scheduler, wie viele Pods auf einen Knoten passen. Ohne diese Parameter riskieren Sie eine schlechte Planung oder Pods, die um dieselben CPU-Kerne konkurrieren. Um die Planung auf die nächste Stufe zu heben, fügen Sie Automatische Clusterskalierung um plötzliche Verkehrsspitzen oder Ausbildungsplätze aufzufangen.
Denken Sie daran, die tatsächlichen Nutzungsmetriken sorgfältig zu beobachten, indem Sie ein Überwachungssystem wie Prometheus verwenden. Wenn Pods konstant 90 % der CPU erreichen, passen Sie die Anforderungen leicht an. Auf der anderen Seite, wenn die CPU-Auslastung der Pods bei etwa 20 % bleibt, können Sie ihre Anforderungen reduzieren.
Im Folgenden finden Sie ein Beispiel für eine Bereitstellung, in der CPU- und Arbeitsspeicheranforderungen und -grenzwerte definiert werden:
apiVersion: apps/v1
kind: Bereitstellung
Metadaten:
Name: ml-inference-deployment
Spekulation:
Nachbau: 2
Schablone:
Spekulation:
Container:
- Bezeichnung: ml-inference-container
Bild: your-registry/ml-inference:latest
Betriebsmittel:
Aufforderungen:
CPU: "500 m"
Gedächtnis: "512Mi"
grenzen:
CPU: "ca. 1000m"
Gedächtnis: "1024Mi"Skalieren Ihrer KI/ML-Workloads
Sobald Sie'Nachdem Sie festgelegt haben, wie Ressourcen angefordert und zugewiesen werden, ist es Zeit für die Skalierung. In einigen Szenarien skalieren Sie Rückschlusspods horizontal, um spitzige eingehende Anforderungen zu verarbeiten. In anderen Fällen planen Sie große Schulungsaufträge, für die möglicherweise spezielle Knotentypen erforderlich sind.
Horizontale und vertikale Skalierung
Die horizontale Skalierung ist das, was Sie benötigen, um mit unvorhersehbaren Benutzerlasten umzugehen, insbesondere für Rückschlussendpunkte. Es empfiehlt sich, HPAs , um die CPU- oder GPU-Auslastung zu beobachten, und dann neue Pods zu starten, wenn es heiß hergeht. Dennoch kann die vertikale Skalierung eine bessere Antwort sein, wenn Ihr Container mehr Arbeitsspeicher oder CPU-Kerne auf einem einzelnen Knoten benötigt. Der Vertical Pod Autoscaler (VPA) kann Ihnen dabei helfen, Anforderungen für stabile Workloads im Laufe der Zeit zu optimieren.
Hier'ist ein Ausschnitt einer HPA, der eine Bereitstellung anhand der CPU-Auslastung referenziert:
apiVersion: automatische Skalierung/v2
art: HorizontalPodAutoscaler
Metadaten:
Name: Inference-HPA
Spekulation:
scaleTargetRef:
apiVersion: apps/v1
kind: Bereitstellung
Name: Inferenz-Bereitstellung
minNachbildungen: 2
maxRepliken: 15
Metrik:
- Typ: Ressource
Ressource:
Bezeichnung: CPU
Ziel:
Typ: Auslastung
durchschnittliche Auslastung: 75Batch-Jobs und Planung
Groß angelegte Schulungen sind oft besser als ein Batch-Prozess. Um Ihre Pipeline zu vereinfachen, verwenden Sie Kubernetes Jobs für einmalige Experimente und CronJobs für geplante Aufgaben wie nächtliches erneutes Training. Bei diesem Ansatz bedeutet jede erfolgreiche Auftragsausführung, dass das Modell oder Artefakt automatisch für die weitere Verwendung an einem beliebigen Ort gespeichert werden kann.
Ein gut strukturierter Batchauftrag stellt sicher, dass lang andauernde Trainingsaufgaben Ihre Clusterknoten nicht überlasten. Um dies zu erreichen, können Sie GPU- oder CPU-Ressourcen auf die gleiche Weise wie jeder andere Pod anfordern und sicherstellen, dass Sie sie effektiv verwalten.
Nachfolgend finden Sie einen CronJob, der einen nächtlichen Trainingslauf startet:
apiVersion: batch/v1
Art: CronJob
Metadaten:
Name: Nightly-Model-Training
Spekulation:
Zeitplan: "0 2 * * *"
jobTemplate:
Spekulation:
Schablone:
Spekulation:
Container:
- Name: Trainings-Container
Bild: your-registry/training-image:latest
Betriebsmittel:
grenzen:
nvidia.com/gpu: 1
Befehl: ["Python", "train.py"]
restartPolicy: NieMulti-Cluster- und Hybrid-Strategien
Manchmal ist es notwendig, Workloads auf mehrere zu verteilen Kubernetes-Cluster, insbesondere wenn Sie Redundanz wünschen oder einige Aufträge vor Ort und andere in der Cloud ausführen möchten. Dies kann Geld sparen und das Risiko reduzieren. Tools wie Anthos Bieten Sie eine Verwaltungskonsole an, die zeigt, wie Aufträge verteilt werden. Wenn es'Wenn es in einer Umgebung ein Problem darstellt, können Sie zu einer anderen wechseln, was Ihnen Sicherheit gibt, wenn Sie'das Jonglieren mit kritischen, benutzerorientierten Inferenzaufgaben.
Speicherung und Datenverwaltung
Sobald Ihre Aufträge effizient skaliert werden können, stehen Daten im Mittelpunkt. Wo wird es gespeichert? Wie schnell können Sie es lesen? Wie untermauern Sie das? Diese Fragen tauchen häufig auf, wenn es um große Trainingsdatensätze geht, und sie sind entscheidend, um zu verhindern, dass der Datenabruf zu einem Engpass wird.
Leistungsstarke Speicherklassen
StorageClasses, die von SSDs unterstützt werden, eignen sich ideal für das Training von Workloads mit hohen Lese-/Schreibanforderungen. Um sie optimal zu nutzen, definieren Sie einen PersistentVolumeClaim (PVC), der auf die richtige StorageClass und die Clusterbestimmungen verweist, die für die Sicherung des Speichers geeignet sind. Achten Sie außerdem darauf, Lese-/Schreib-IOPS (Eingabe-/Ausgabevorgänge pro Sekunde) zu überwachen, um sicherzustellen, dass Ihre Speichervolumes den erforderlichen Durchsatz verarbeiten können.
Nachfolgend finden Sie eine PVC-Datei, die nach einer Hochleistungsspeicherklasse fragt:
piVersion: v1
art: PersistentVolumeClaim
Metadaten:
Bezeichnung: Fast-PVC
Spekulation:
access-Modi:
- LesenSchreibenEinmal
storageClassName: hohe perf-ssd
Betriebsmittel:
Aufforderungen:
Lagerung: 100GiDatenlokalisierung und Caching
Beim verteilten Training kommt es auf die Datenlokalität an. Wenn Worker Daten von Remote-Volumes abrufen, kann die Netzwerklatenz zu Verlangsamungen führen. Die Lösung? Platzieren Sie Caching-Layer vor dem Remote-Speicher oder wählen Sie knotenlokale SSD-Volumes aus. Eine andere Strategie besteht darin, einen Caching-Sidecar-Container im selben Pod auszuführen, der Lese- und Schreibvorgänge von Daten verarbeitet und so die Leistung in bestimmten Workflows verbessert.
Der folgende Codeausschnitt zeigt einen Sidecar-Container, der die Zwischenspeicherung von Trainingsdaten ermöglicht:
apiVersion: apps/v1
kind: Bereitstellung
Metadaten:
Name: training-deployment
Spekulation:
Nachbau: 2
Selektor:
matchLabels:
App: Trainings-App
Schablone:
Metadaten:
etiketten:
App: Trainings-App
Spekulation:
Container:
- Name: Caching-Sidecar
Bild: your-registry/caching-sidecar:latest
volumeMounts:
- Name: cache-volume
mountPfad: /cache
- Name: Trainings-Container
Bild: your-registry/training-image:latest
volumeMounts:
- Name: cache-volume
mountPfad: /Datensatz
Inhalte:
- Name: cache-volume
emptyDir: {}Backup und Versionierung
Die Nachverfolgung von Modellversionen ist aus gutem Grund Standard: Wenn neue Modelle in der Produktion versagen (hey, das kommt vor!), müssen Sie häufig zurückgesetzt werden. Neben dem Speichern von Modellartefakten im Objektspeicher ist es auch wichtig, geplante Sicherungen auszuführen. Auch wenn Sie'Wenn Sie einen Cloud-Dienst verwenden, der automatische Backups bereitstellt, sind zusätzliche Backups der richtige Weg, um spätere Probleme zu vermeiden.
Nachfolgend finden Sie eine Argo Arbeitsablauf , der Modellartefakte in einen Remote-Bucket in S3 hochlädt:
apiVersion: argoproj.io/v1alpha1
art: Arbeitsablauf
Metadaten:
generateName: Modell-Sicherung-
Spekulation:
Einstiegspunkt: Backup-Modell
Schablonen:
- Name: backup-model
Container:
Bild: your-registry/backup-tool:latest
Befehl: ["Backup-Modell"]
Argumente: ["--model-path=/Modelle", "--destination=s3://ml-backups"]Sicherheitsüberlegungen
Wir'Wir alle haben die Schlagzeilen über gekaperte Cluster oder exfiltrierte Daten gesehen – wie im Mai 2024 Vorfall mit unbefugtem Zutritt bei Hugging Face wo Angreifer auf ihre KI-Modell-Hosting-Plattform abzielten. Diese Verstöße verdeutlichen, warum Kubernetes-Sicherheit und KI-Sicherheit sind zu einer großen Priorität geworden. Wenn Sie containerisierte Workloads mit fortschrittlichen ML-Pipelines kombinieren, vermehren sich die Bedrohungsvektoren schnell. Lassen'Wir gehen auf einige Möglichkeiten ein, um diese Risiken in Schach zu halten.
25 KI-Agenten. 257 echte Angriffe. Wer gewinnt?
Von der Zero-Day-Discovery bis zur Eskalation von Cloud-Privilegien haben wir 25 Agenten-Modell-Kombinationen an 257 realen offensiven Sicherheitsherausforderungen getestet. Die Ergebnisse könnten Sie 👀 überraschen

Grundlagen der Kubernetes-Sicherheit
Befolgen Sie die folgenden Best Practices, um die Sicherheit zu erhöhen:
Scannen von Container-Images um Schwachstellen vor der Bereitstellung zu erkennen.
Erzwingen der rollenbasierten Zugriffskontrolle (RBAC) , um einzuschränken, wer Arbeitslasten bereitstellen, ändern oder löschen kann.
Wenden Sie Pod-Sicherheitsstandards (PSS) an um Fehlkonfigurationen zu verhindern, die Cluster Bedrohungen aussetzen könnten.
Beschränken Sie den Zugriff auf Container-Register und überwachen Sie auf nicht autorisierte Änderungen.
Markieren Sie Bilder mit stabilen Referenzen um sicherzustellen, dass nur verifizierte Versionen in der Produktion verwendet werden.
Hier's ein RBAC-Snippet, das einem Namespace minimale Berechtigungen gewährt:
kind: Rolle
apiVersion: rbac.authorization.k8s.io/v1
Metadaten:
Namensraum: ml-project
Name: ml-project-role
Regeln:
- apiGruppen: ["", "Apps"]
Ressourcen: ["hülsen", "Bereitstellungen"]
Verben: ["Erhalten", "Liste", "schaffen", "aktualisieren", "löschen"]
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
Metadaten:
Name: ml-project-rolebinding
Namensraum: ml-project
Lehrfächer:
- art: Benutzer
Name: ml-user
apiGroup: rbac.authorization.k8s.io
roleRef:
kind: Rolle
Name: ml-project-role
apiGroup: rbac.authorization.k8s.ioSchutz der Modellintegrität
Da KI-Modelle immer leistungsfähiger und breiter eingesetzt werden, werden sie auch zu Zielen für gegnerische Angriffe, Datenvergiftungen und Verteilungsabweichungen. Angreifer können Trainingsdaten manipulieren, um die Modellleistung zu untergraben oder Schwachstellen in der Logik des Modells auszunutzen.
Um diese Bedrohungen zu minimieren, überwachen Sie eingehende Daten auf Anomalien, verwenden Sie Tools zur Abweichungserkennung, um zu erkennen, wann die reale Leistung Ihres Modells nachlässt, und trainieren (oder trainieren) Sie nur mit überprüften Datasets. Die Aufrechterhaltung dieser Wachsamkeit trägt dazu bei, dass Ihr Modell angesichts neuer Bedrohungen genau und widerstandsfähig bleibt.
Im Folgenden finden Sie ein Beispiel für ein Python-Snippet, das zeigt, wie Sie die Alibi Detect-Bibliothek verwenden können, um Datenabweichungen zu erkennen:
aus alibi_detect.cd KSDrift importieren
numpy als NP importieren
# Referenzdaten (z. B. Baseline-Trainingsdaten)
X_ref = np.zufällig.rand(1000, 10)
# Neue eingehende Daten (z.B. Live-Verkehrsbeispiele)
X = np.random.rand(1000, 10) # Ersetzen durch tatsächliche Produktionsdaten
# Initialisieren Sie den Drift-Detektor
cd = KSDrift(X_ref, p_val=0,05)
# Drift-Check durchführen
preds = cd.predict(X)
Wenn preds['data_drift']:
drucken("Datendrift erkannt! P-Wert:", preds['p_val'])
# Optional können Sie eine erneute Trainingspipeline oder -warnung auslösen
oder:
drucken("Keine Datenabweichung festgestellt. P-Wert:", preds['p_val'])Signieren von Bildern
Nachdem Sie Schritte unternommen haben, um die Modellintegrität zu wahren, besteht die nächste Verteidigungsebene darin, die Authentizität eines Modells zu bestätigen, indem Sie Containerimages signieren, die Ihre Modellartefakte enthalten. Tools wie Mitunterzeichnen Machen Sie es einfach, digitale Signaturen hinzuzufügen, während die Verschlüsselung ruhender Daten und eine Kontrollkette für Trainingsdaten dazu beitragen, Ihr Ökosystem weiter zu schützen – insbesondere in regulierten Branchen.
Sie können Ihr Container-Image mit einem einfachen Cosign-Befehl signieren:
$ cosign sign --key cosign.key your-registry/your-image:tagFügen Sie darüber hinaus automatisierte Codescanschritte in CI-Pipelines hinzu. Dies hilft, potenzielle Schwachstellen in Abhängigkeiten zu erkennen, bevor sie die Produktion erreichen. Im Folgenden finden Sie einen Codeausschnitt, der Trivy, einen Open-Source-Sicherheitsscanner, in eine GitHub Actions-Pipeline integriert:
Name: code-scanning-workflow
Ein: [Drücken, pull_request]
arbeitsplätze:
abtasten:
Läuft auf: ubuntu-latest
Schritte:
- Verwendung: Aktionen/checkout@v2
- Name: Mit Trivy scannen
Verwendung: AquaSecurity/Trivy-action@master
mit:
Bild-Ref: "Ihre-Registrierung/Ihr-Bild:Neueste"
Format: "Tisch"Netzwerkisolation und Zero Trust
Die Sicherung von KI-Workloads beginnt mit einer starken Netzwerkisolation. Ein wirksamer Ansatz besteht darin, Netzwerk-Richtlinien , die einschränken, welche Pods und Namensräume miteinander kommunizieren können. Darüber hinaus ist es', um zu vermeiden, dass KI/ML-Workloads neben anderen Anwendungen im selben Cluster ausgeführt werden. Durch die Segmentierung von Workloads nach Zweck, z. B. die Trennung von Rückschlussdiensten und allgemeinen Webanwendungen, minimieren Sie das Risiko einer lateralen Bewegung im Falle einer Sicherheitsverletzung.
Dieser Ansatz steht im Einklang mit den Zero-Trust-Prinzipien, bei denen jeder Teil des Netzwerkverkehrs mit Vorsicht behandelt wird, auch wenn er's intern für den Cluster. In Kombination mit einem starken Identitätszugriffsmanagement tragen diese Leitplanken dazu bei, versehentliche Datenlecks und Infiltrationsversuche zu verhindern.
Hier's eine NetworkPolicy, die den Datenverkehr nur auf den Rückschlussnamespace beschränkt:
apiVersion: networking.k8s.io/v1
art: NetworkPolicy
Metadaten:
name: allow-namespace-traffic
Namensraum: Inferenz
Spekulation:
podSelector: {}
Eintritt:
-Von:
- namespaceSelector:
matchLabels:
Zweck: InferenzEnd-to-End-Transparenz: Vom Code bis zur Laufzeit
KI/ML-Workloads bringen komplexe Sicherheits- und Compliance-Herausforderungen mit sich, die sich über den gesamten Lebenszyklus erstrecken – von der Codeentwicklung bis zur Laufzeitausführung. Ohne vollständige Transparenz können sich Fehlkonfigurationen, Schwachstellen und Drifts in Ihre Kubernetes-Cluster einschleichen, was das Risiko von Sicherheitsverletzungen erhöht.
Um dieses Problem zu bewältigen, benötigen Teams eine Sicherheitsstrategie, die alle Phasen der KI-Pipeline abdeckt: Scannen von Infrastructure-as-Code-Konfigurationen (IaC), Sichern von Container-Images, Erzwingen von Laufzeitschutzmaßnahmenund Kontinuierliche Überwachung für Anomalien. Durch die Integration von Sicherheitskontrollen in der gesamten Pipeline stellen Sie sicher, dass KI-Workloads ausfallsicher und konform bleiben.
Wiz bietet eine Plattform, mit der Sie Schwachstellen, Compliance-Probleme und den Sicherheitsstatus in Ihrem Cluster in Echtzeit verfolgen können. Nutzen Sie das Wiz-Dashboard, um Container-Image-Probleme, Fehlkonfigurationen und sogar Geheimnisse Im Code lauernd:
Beobachtbarkeit: Überwachung, Protokollierung und Rückverfolgung
Wenn Sie Ihren Cluster für Machine Learning-Workloads optimieren, streben Sie einen kristallklaren Überblick darüber an, was's passiert. Das bedeutet, Metriken von Pods zu sammeln, Protokolle an einem zentralen Ort zu speichern und Anfragen über Microservices hinweg zu verfolgen. Eine gründliche Beobachtbarkeit macht die Fehlerbehebung zu einem Kinderspiel, wenn etwas schief geht.
Metriken und Warnmeldungen
Prometheus befindet sich in der Regel im Mittelpunkt Ihres Monitoring-Stacks und hilft Ihnen, wichtige Leistungskennzahlen zu verfolgen. Um einen reibungslosen KI/ML-Betrieb zu gewährleisten, verwenden Sie eine Kombination von Tools:
Prometheus Sammelt CPU-, Arbeitsspeicher- und GPU-Auslastungsmetriken von Modellrückschlussdiensten.
Grafana Bietet Echtzeit-Dashboards zur Visualisierung der Cluster-Leistung und zur Erkennung von Anomalien.
Regeln für Warnungen Lösen Sie automatisch Benachrichtigungen (z. B. Slack-Benachrichtigungen) aus, wenn die Ressourcennutzung definierte Schwellenwerte überschreitet.
Im Folgenden finden Sie eine PrometheusRule, die bei hoher GPU-Auslastung warnt:
Im Folgenden finden Sie eine PrometheusRule, die bei hoher GPU-Auslastung warnt:
apiVersion: monitoring.coreos.com/v1
art: PrometheusRule
Metadaten:
Name: gpu-usage-rules
Namensraum: Überwachung
Spekulation:
Gruppen:
- Name: GPU-Alerts
Regeln:
- Warnung: HighGPUUsage
Ausdruck: nvidia_gpu_utilization > 90
für: 5m
etiketten:
Schweregrad: Warnung
Anmerkungen:
Zusammenfassung: "Hohe GPU-Auslastung erkannt"Verteilte Ablaufverfolgung und Leistungseinblicke
OpenTelemetry ist eine gute Wahl für die verteilte Ablaufverfolgung, insbesondere wenn Ihre KI-Pipeline mehrere Microservices enthält. Jeder Dienst gibt Ablaufverfolgungsspannen aus, mit denen Sie ermitteln können, wo möglicherweise ein Engpass besteht. Dieser Ansatz ist von unschätzbarem Wert, wenn es darum geht, langsame Anforderungen oder zufällige Leistungsanomalien in Datenverarbeitungsflüssen zu debuggen.
Hier erfahren Sie, wie OpenTelemetry Collector und Jaeger zusammenarbeiten, um End-to-End-Ablaufverfolgung und Leistungseinblicke für KI/ML-Workloads bereitzustellen:
Korrelation von Sicherheit und Leistung mit Wiz
Manchmal ist ein Leistungsabfall mit einem sicherheitsrelevanten Ereignis verbunden. Wiz hilft Ihnen, diese Korrelation zu erkennen, indem es Sicherheitsergebnisse mit Leistungsdaten kombiniert. Vielleicht beansprucht ein verdächtiger Prozess GPU-Ressourcen oder eine bekannte Schwachstelle führt zu Cluster-Instabilität. Wenn Sie diese Muster sehen, fordert Wiz eine sofortige Korrektur auf.
🚨Kubernetes-Sicherheitsforschungsbericht 2025
Neue Erkenntnisse aus 200.000+ Cloud-Konten decken die neuesten Risiken, Angriffstrends und Sicherheitslücken in Kubernetes-Umgebungen auf.
PDF herunterladenCI/CD für KI/ML-Workflows
Wir alle wissen, dass das Versenden eines trainierten Modells mehr umfasst als nur das Kopieren einer Datei. Sie möchten das Erstellen, Testen und Bereitstellen von ML-Artefakten vollständig automatisieren. Hier kommen CI/CD-Pipelines ins Spiel. Sie können Aufgaben verketten, die Tests ausführen, Images scannen, sie per Push in eine Registrierung pushen und dann neue Versionen für die Produktion bereitstellen.
Automatisierung des Modelllebenszyklusmanagements
Tools wie Tekton oder Argo Arbeitsabläufe können Sie Pipelines für den gesamten Modelllebenszyklus definieren, von der Datenvorbereitung über das Training bis hin zur Bereitstellung. Jede Phase wird automatisch ausgelöst, wenn Sie eine Änderung übernehmen, wodurch der Prozess konsistent bleibt. Sie können auch Validierungsprüfungen hinzufügen, um sicherzustellen, dass ein Modell vordefinierte Genauigkeitsschwellenwerte erfüllt, bevor es für die Produktion markiert wird. Auf diese Weise wird verhindert, dass leistungsschwache Modelle bereitgestellt werden und sich auf die Benutzererfahrung auswirken.
Nachfolgend finden Sie eine Tekton PipelineRun , die den Startschuss für die Modellerstellung und -bereitstellung gibt:
apiVersion: tekton.dev/v1beta1
art: PipelineRun
Metadaten:
Name: ml-pipeline-run
Spekulation:
pipelineRef:
Name: ml-build-deploy-pipeline
Arbeitsbereiche:
- Name: shared-data
volumeClaimTemplate:
Spekulation:
accessModes: ["ReadWriteOnce"]
Betriebsmittel:
Aufforderungen:
Lagerung: 5Gi
Parameter:
- name: Modellname
Wert: "mein-ml-modell"Unveränderliche Artefakte und GitOps
Es ist praktisch, Bilder mit Commit-Hashes zu versehen, damit Sie genau wissen, welche Version des Codes oder Modells Sie'wieder laufen. GitOps erweitert diese Praxis, indem es Ihnen ermöglicht, Kubernetes-Manifeste in einem Git-Repository zu speichern. Alle Änderungen an diesen Manifesten werden automatisch und kontrolliert auf den Cluster angewendet. Mit dieser Methode können Sie genau nachverfolgen, wann und warum Änderungen vorgenommen werden.
Hier's an Argo CD Anwendung Verweisen auf das Git-Repository zum Verwalten von Bereitstellungskonfigurationen:
apiVersion: argoproj.io/v1alpha1
Art: Anwendung
Metadaten:
Bezeichnung: ml-inference-app
Spekulation:
Bestimmungsort:
Namensraum: ml-inference
Server: https://kubernetes.default.svc
Quelle:
repoURL: 'https://github.com/your-org/ml-deploy-configs.git'
targetRevision: main
Pfad: Manifeste/Inferenz
Projekt: default
syncPolicy:
automatisiert:
Beschneiden: Wahr
selfHeal: wahrPerformance-Optimierung
Modelle müssen schnell reagieren und dürfen keine teuren GPU- oder CPU-Stunden verschwenden. Glücklicherweise können kleinere Optimierungen an HPA-Parametern oder Lastausgleichsregeln wertvolle Millisekunden einsparen und die Kosten erheblich senken.
Lastenausgleich
Der Lastenausgleich mit Ingress-Ressourcen hilft dabei, den Datenverkehr an den richtigen Inferenzdienst weiterzuleiten. Um verschiedene Versionen eines Modells zu trennen, haben Sie die Möglichkeit, pfadbasiertes Routing zu verwenden.
Nachfolgend finden Sie einen Ingress mit pfadbasiertem Routing zu mehreren Inferenzdiensten:
apiVersion: networking.k8s.io/v1
Art: Eingang
Metadaten:
name: inference-ingress
Spekulation:
Regeln:
- Gastgeber: ml.example.com
http:
Pfade:
- Pfad: /v1/
PfadTyp: Präfix
Backend:
Dienst:
Name: inference-model-v1
Hafen:
Nummer: 8081
- Pfad: /v2/
PfadTyp: Präfix
Backend:
Dienst:
Name: inference-model-v2
Hafen:
Nummer: 8081Erstellung und Optimierung von Kostenprofilen
Jeder beobachtet gerne, wie sich seine GPU-Knoten, CPU-Knoten und die Speicherauslastung mit den Ausgaben abschneiden. Die manuelle Anpassung von Ressourcen kann jedoch zeitaufwändig und ineffizient sein. Hier können Tools wie Karpenter und Autopilot Kann Clusterknoten automatisch skalieren, um den Ressourcenanforderungen gerecht zu werden, wodurch Sie sich keine manuelle Knotenbereitstellung leisten müssen. Für das Trainieren von Workloads, die keine persistente Rechenleistung erfordern, Spot-Instanzen kann die Kosten drastisch senken – stellen Sie nur sicher, dass Ihre Pipeline mit potenziellen Unterbrechungen umgehen kann.
Nachfolgend finden Sie ein Beispiel für eine Karpenter-Konfiguration für die Zuordnung von Instance-Typen zu Workloads:
apiVersion: karpenter.sh/v1alpha5
art: Provisioner
Metadaten:
name: default
Spekulation:
Anforderungen:
-Schlüssel: "node.kubernetes.io/instance-type"
Operator: In
Werte: ["m5.groß", "m5.xlarge"]
Anbieter:
subnetSelector:
karpenter.sh/discovery: "mein-cluster"
securityGroupSelector:
karpenter.sh/discovery: "mein-cluster"Eine weitere Möglichkeit, viel zu sparen? Verwenden Sie ein Tool wie Wiz, um zu sehen, ob es Kostentreiber gibt, die mit falsch konfigurierten Ressourcen oder ungewöhnlichen Nutzungsmustern zusammenhängen. Wiz hilft Ihnen auch dabei, die Knoten während der Erstellung zu härten, um sicherzustellen, dass sie nicht nur automatisch skaliert, sondern auch sicher sind.
Schlussfolgerung
Wir'Ich habe verschiedene Strategien für Machine Learning Workflows auf Kubernetes durchgesprochen. Vom Ressourcenmanagement über Best Practices für KI-Sicherheit bis hin zur Anbindung von Tekton-Pipelines'Ich habe gesehen, wie jedes Stück zu einer stabilen Plattform beitragen kann. Die Hauptidee besteht darin, KI-Sicherheitsrisiken im Auge zu behalten, auf Kostenüberschreitungen zu achten und eine Pipeline aufzubauen, der die Leute vertrauen.
Wenn Sie diese Best Practices implementieren, minimieren Sie Clusterunterbrechungen und helfen Data Scientists, Updates sicher zu übertragen. Wir'Ich bin gespannt, wie sich diese Vorschläge in Ihre Arbeit einfügen. Wir'Ich würde gerne hören, was Sie erstellen, welche Lektionen Sie daraus ziehen und wie Sie Ihr maschinelles Lernen in Kubernetes-Workflows weiter verbessern.
Diese Reise mag sich kompliziert anfühlen, aber mit den richtigen Tools – wie Wiz'Echtzeit-Scans, Dashboards und Compliance-Funktionen – Sie können eine sicherere Umgebung für Schulungen und Rückschlüsse schaffen. Wenn Sie'Wenn Sie Ihre KI/ML-Projekte verfeinern und skalieren und gleichzeitig sicher bleiben möchten, geben Sie Wiz eine Chance, um einen umfassenden Überblick über Container-Schwachstellen, Cluster-Einstellungen und Compliance-Benchmarks zu erhalten. Mit Wiz können Sie Ihre Cluster fehlerfrei, kosteneffizient und sicher vor Eindringlingen halten.
Ihre Cloud vom Code bis zur Produktion sichern
Erfahren Sie, warum sich die am schnellsten wachsenden Unternehmen für Wiz entscheiden, um Container, Kubernetes und Cloud-Umgebungen von der Build-Zeit bis zur Echtzeit zu sichern.