Speicher - Amazon EKS

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Speicher

Datenmanagement und Speicherung

Stellen Sie mithilfe eines CSI-Treibers KI-Modelle auf Pods bereit

KI/ML-Workloads erfordern häufig Zugriff auf große Modellartefakte (z. B. trainierte Gewichte, Konfigurationen), und Pods benötigen eine zuverlässige, skalierbare Methode, um auf diese zuzugreifen, ohne sie in Container-Images einzubetten, was die Bildgröße und die Abrufzeiten der Container-Registry erhöhen kann. Um den betrieblichen Aufwand bei der Verwaltung von Volume-Mounts zu reduzieren, empfehlen wir die Bereitstellung von KI-Modellen auf Pods, indem Amazon-Speicherdienste (z. B. S3, FSx für Lustre, FSx für OpenZFS, EFS) als persistente Volumes (PVs) mithilfe ihrer jeweiligen CSI-Treiber bereitgestellt werden. Einzelheiten zur Implementierung finden Sie in den nachfolgenden Themen in diesem Abschnitt.

Optimieren Sie den Speicher für ML-Modell-Caches auf EKS

Die Nutzung einer optimalen Speicherlösung ist entscheidend, um die Latenz beim Starten von Pods und Anwendungen zu minimieren, den Speicherverbrauch zu reduzieren, das gewünschte Leistungsniveau zur Beschleunigung von Workloads zu erreichen und die Skalierbarkeit von ML-Workloads sicherzustellen. ML-Workloads basieren häufig auf Modelldateien (Gewichtungen), die groß sein können und gemeinsamen Zugriff auf Daten über Pods oder Knoten hinweg erfordern. Die Auswahl der optimalen Speicherlösung hängt von den Merkmalen Ihres Workloads ab, wie z. B. der Effizienz eines einzelnen Knotens, dem Zugriff auf mehrere Knoten, den Latenzanforderungen, den Kostenbeschränkungen und auch den Anforderungen an die Datenintegration (z. B. mit einem Amazon S3 S3-Datenrepository). Wir empfehlen, verschiedene Speicherlösungen mit Ihren Workloads zu vergleichen, um herauszufinden, welche Ihren Anforderungen entspricht. Wir haben die folgenden Optionen bereitgestellt, um Ihnen bei der Bewertung anhand Ihrer Workload-Anforderungen zu helfen.

Der EKS-CSI-Treiber unterstützt die folgenden AWS-Speicherservices, von denen jeder seinen eigenen CSI-Treiber hat und seine eigenen Stärken für KI- und ML-Workflows hat:

Die Wahl des AWS-Speicherservices hängt von Ihrer Bereitstellungsarchitektur, Ihrem Umfang, Ihren Leistungsanforderungen und Ihrer Kostenstrategie ab. Speicher-CSI-Treiber müssen auf Ihrem EKS-Cluster installiert werden, sodass der CSI-Treiber persistente Volumes (PV) außerhalb des Lebenszyklus eines Pods erstellen und verwalten kann. Mithilfe des CSI-Treibers können Sie PV-Definitionen unterstützter AWS-Speicherservices als EKS-Clusterressourcen erstellen. Pods können dann auf diese Speichervolumes für ihre Datenvolumen zugreifen, indem sie einen Persistent Volume Claim (PVC) für den PV erstellen. Abhängig vom AWS-Speicherservice und Ihrem Bereitstellungsszenario kann ein einzelnes PVC (und das zugehörige PV) für einen Workload an mehrere Pods angehängt werden. Bei ML-Trainings werden gemeinsame Trainingsdaten beispielsweise auf einem PV gespeichert und von mehreren Pods abgerufen. Für Online-Inferenzen in Echtzeit werden LLM-Modelle auf einem PV zwischengespeichert und von mehreren Pods abgerufen. Nachfolgend finden Sie Beispiele für PV- und PVC-YAML-Dateien für AWS-Speicherservices, um Ihnen den Einstieg zu erleichtern.

Leistungsüberwachung Eine schlechte Festplattenleistung kann das Lesen von Container-Images verzögern, die Latenz beim Pod-Start erhöhen und den Inferenz- oder Trainingsdurchsatz verringern. Verwenden Sie Amazon CloudWatch, um die Leistungskennzahlen für Ihre AWS-Speicherservices zu überwachen. Wenn Sie Leistungsengpässe feststellen, ändern Sie Ihre Speicherkonfigurationsparameter, um die Leistung zu optimieren.

Szenario: Arbeitslast mehrerer GPU-Instanzen

Amazon FSx for Lustre: In Szenarien, in denen Sie eine Umgebung mit mehreren EC2 GPU-Recheninstanzen mit latenzsensitiven dynamischen Workloads und hohem Bandbreitendurchsatz haben, wie z. B. verteiltes Training und Model Serving, und Sie eine native Amazon S3 S3-Datenrepository-Integration benötigen, empfehlen wir Amazon for Lustre. FSx FSx for Lustre bietet ein vollständig verwaltetes paralleles Hochleistungsdateisystem, das für rechenintensive Workloads wie Hochleistungsrechnen (HPC) und Machine Learning konzipiert ist.

Sie können den FSx for Lustre CSI-Treiber installieren, um FSx Dateisysteme auf EKS als persistentes Volume (PV) zu mounten, und dann das Lustre-Dateisystem als eigenständigen Hochleistungs-Cache oder als S3-verknüpftes Dateisystem bereitstellen FSx , das als Hochleistungs-Cache für S3-Daten fungiert und einen schnellen I/O und hohen Durchsatz für den Datenzugriff über Ihre GPU-Recheninstanzen hinweg bietet. FSx for Lustre kann entweder mit Scratch-SSD- oder Persistent-SSD-Speicheroptionen bereitgestellt werden:

  • Scratch-SSD-Speicher: Empfohlen für kurzlebige oder kurzlebige Workloads (Stunden), bei denen eine feste Durchsatzkapazität pro TIB bereitgestellt wird.

  • Persistenter SSD-Speicher: Empfohlen für unternehmenskritische, lang andauernde Workloads, die ein Höchstmaß an Verfügbarkeit erfordern, z. B. HPC-Simulationen, Big-Data-Analysen oder Machine-Learning-Schulungen. Mit persistentem SSD-Speicher können Sie sowohl die erforderliche Speicherkapazität als auch die Durchsatzkapazität (pro TIB) konfigurieren.

Überlegungen zur Leistung:

  • Administrativer Pod FSx zur Verwaltung des Lustre-Dateisystems: Konfigurieren Sie einen „administrativen“ Pod, auf dem der Lustre-Client installiert und das FSx Dateisystem gemountet ist. Auf diese Weise steht ein Access Point für die Feinabstimmung des FSx Dateisystems zur Verfügung. Dies gilt auch für Situationen, in denen Sie das FSx Dateisystem mit Ihren ML-Trainingsdaten oder LLM-Modellen vorwärmen müssen, bevor Sie Ihre GPU-Compute-Instances starten. Dies ist besonders wichtig, wenn Ihre Architektur Spot-basierte Amazon EC2 GPU/Compute-Instances verwendet, bei denen Sie den administrativen Pod verwenden können, um die gewünschten Daten „warm“ oder „vorab in das FSx Dateisystem zu laden“, sodass die Daten für die Verarbeitung bereit sind, wenn Sie Ihre Spot-basierten Amazon-Instances ausführen. EC2

  • Elastic Fabric Adapter (EFA): Persistent-SSD-Speicherbereitstellungstypen unterstützen den Elastic Fabric Adapter (EFA), wobei die Verwendung von EFA ideal für GPU-basierte Workloads mit hoher Leistung und Durchsatz ist. Beachten Sie, dass FSx For Lustre NVIDIA GPUDirect Storage (GDS) unterstützt. Dabei handelt es sich bei GDS um eine Technologie, die einen direkten Datenpfad zwischen lokalem oder Remote-Speicher und GPU-Speicher herstellt, um einen schnelleren Datenzugriff zu ermöglichen.

  • Komprimierung: Aktivieren Sie die Datenkomprimierung im Dateisystem, wenn Sie über Dateitypen verfügen, die komprimiert werden können. Dies kann zur Steigerung der Leistung beitragen, da die Datenkomprimierung die Datenmenge reduziert, die zwischen FSx For Lustre-Dateiservern und Speichern übertragen wird.

  • Striping-Konfiguration des Lustre-Dateisystems:

    • Data Striping: Ermöglicht es FSx Luster, die Daten einer Datei auf mehrere Object Storage Targets (OSTs) innerhalb eines Lustre-Dateisystems zu verteilen, wodurch der parallel Zugriff und der Durchsatz maximiert werden, insbesondere für umfangreiche ML-Trainingsaufgaben.

    • Eigenständiges Dateisystem-Striping: Standardmäßig wird mithilfe der PFL-Funktion (Progressive File Layouts) von for Lustre eine 4-Komponenten-Lustre-Striping-Konfiguration für Sie erstellt. FSx In den meisten Szenarien müssen Sie die standardmäßige Anzahl und Größe der PFL-Lustre-Stripes nicht aktualisieren. Wenn Sie das Lustre-Daten-Striping anpassen müssen, können Sie das Lustre-Striping manuell anpassen, indem Sie sich auf die Striping-Parameter eines for Lustre-Dateisystems beziehen. FSx

    • S3-verknüpftes Dateisystem: Dateien, die mit der nativen Amazon S3 S3-Integration (Data Repository Association oder DRA) in das FSx Dateisystem importiert wurden, verwenden nicht das standardmäßige PFL-Layout, sondern das Layout im Dateisystemparameter. ImportedFileChunkSize S3-importierte Dateien, die größer als die sind, ImportedFileChunkSize werden auf mehreren gespeichert, OSTs wobei die Anzahl der Stripes auf dem ImportedFileChunkSize definierten Wert basiert (Standard 1 GiB). Wenn Sie große Dateien haben, empfehlen wir, diesen Parameter auf einen höheren Wert einzustellen.

    • Platzierung: Stellen Sie ein FSx for Lustre-Dateisystem in derselben Availability Zone wie Ihre Rechen- oder GPU-Knoten bereit, um den Zugriff auf die Daten mit der geringsten Latenz zu ermöglichen und Zugriffsmuster zwischen Availability Zones zu vermeiden. Wenn Sie mehrere GPU-Knoten in verschiedenen Availability Zones haben, empfehlen wir die Bereitstellung eines FSx Dateisystems in jeder Availability Zone für den Datenzugriff mit niedriger Latenz.

Beispiel

Definition eines persistenten Volumes (PV) FSx für ein For Lustre-Dateisystem unter Verwendung von Static Provisioning (wobei die FSx Instanz bereits bereitgestellt wurde).

apiVersion: v1 kind: PersistentVolume metadata: name: fsx-pv spec: capacity: storage: 1200Gi volumeMode: Filesystem accessModes: - ReadWriteMany mountOptions: - flock persistentVolumeReclaimPolicy: Recycle csi: driver: fsx.csi.aws.com volumeHandle: [FileSystemId of FSx instance] volumeAttributes: dnsname: [DNSName of FSx instance] mountname: [MountName of FSx instance]

Beispiel

Die Definition von Persistent Volume Claim für PV lautet: fsx-pv

apiVersion: v1 kind: PersistentVolumeClaim metadata: name: fsx-claim spec: accessModes: - ReadWriteMany storageClassName: "" resources: requests: storage: 1200Gi volumeName: fsx-pv

Beispiel

Konfigurieren Sie einen Pod für die Verwendung eines persistenten Volumenanspruchs vonfsx-claim:

apiVersion: v1 kind: Pod metadata: name: fsx-app spec: containers: - name: app image: amazonlinux:2023 command: ["/bin/sh"] volumeMounts: - name: persistent-storage mountPath: /data volumes: - name: persistent-storage persistentVolumeClaim: claimName: fsx-claim

Vollständige Beispiele finden Sie unter Beispiele FSx für Lustre-Treiber unter GitHub. Überwachen Sie die Leistungskennzahlen von Amazon FSx for Lustre mithilfe von Amazon CloudWatch. Wenn Leistungsengpässe festgestellt werden, passen Sie Ihre Konfigurationsparameter nach Bedarf an.

Szenario: Arbeitslast einer einzelnen GPU-Instanz

Mountpoint für Amazon S3 mit CSI-Treiber: Mit dem Mountpoint for Amazon S3 CSI-Treiber können Sie einen S3-Bucket als Volume in Ihren Pods mounten. Diese Methode ermöglicht eine detaillierte Zugriffskontrolle darüber, welche Pods auf bestimmte S3-Buckets zugreifen können. Jeder Pod verfügt über eine eigene Mountpoint-Instanz und einen eigenen lokalen Cache (5-10 GB), wodurch die Lade- und Leseleistung des Modells zwischen den Pods isoliert wird. Dieses Setup unterstützt die Authentifizierung auf Pod-Ebene mit IAM Roles for Service Accounts (IRSA) und die unabhängige Modellversionierung für verschiedene Modelle oder Kunden. Der Kompromiss besteht in einer erhöhten Speichernutzung und einem erhöhten API-Verkehr, da jeder Pod S3-API-Aufrufe ausgibt und seinen eigenen Cache verwaltet.

Beispiel für ein teilweises Beispiel für eine Pod-Implementierung mit YAML und CSI-Treiber:

# CSI driver dynamically mounts the S3 bucket for each pod volumes: - name: s3-mount csi: driver: s3.csi.aws.com volumeAttributes: bucketName: your-s3-bucket-name mountOptions: "--allow-delete" # Optional region: us-west-2 containers: - name: inference image: your-inference-image volumeMounts: - mountPath: /models name: s3-mount volumeMounts: - name: model-cache mountPath: /models volumes: - name: model-cache hostPath: path: /mnt/s3-model-cache

Überlegungen zur Leistung:

  • Daten-Caching: Mountpoint for S3 kann Inhalte zwischenspeichern, um Kosten zu senken und die Leistung bei wiederholten Lesevorgängen derselben Datei zu verbessern. Informationen zu den Caching-Optionen und -Parametern finden Sie unter Caching-Konfiguration.

  • Objektgröße: Wenn Sie Dateien mit einer Größe von mehr als 72 GB speichern und darauf zugreifen, finden Sie unter Konfiguration der Mountpoint-Leistung Informationen darüber, wie Sie die Parameter --read-part-size und die --write-part-size Befehlszeilenparameter so konfigurieren, dass sie Ihr Datenprofil und Ihre Workload-Anforderungen erfüllen.

  • Shared-Cache ist für Objekte mit einer Größe von bis zu 1 MB konzipiert. Es unterstützt keine großen Objekte. Verwenden Sie die Option Lokaler Cache, um Objekte in NVMe oder EBS-Volumes auf dem EKS-Knoten zwischenzuspeichern.

  • Gebühren für API-Anfragen: Wenn Sie mit dem Mountpoint für S3 eine große Anzahl von Dateivorgängen ausführen, können die Gebühren für API-Anfragen zu einem Teil der Speicherkosten werden. Um dem entgegenzuwirken, sollten Sie, wenn keine starke Konsistenz erforderlich ist, immer das Zwischenspeichern von Metadaten aktivieren und den metadata-ttl Zeitraum festlegen, in dem die Anzahl der API-Operationen auf S3 reduziert werden soll.

Weitere Informationen finden Sie im Mountpoint for Amazon S3 CSI-Treiber in der offiziellen Amazon EKS-Dokumentation. Wir empfehlen, die Leistungskennzahlen von Amazon S3 mit CloudWatch Amazon-Metriken zu überwachen, falls Engpässe auftreten, und Ihre Konfiguration gegebenenfalls anzupassen.

Amazon FSx für OpenZFS — persistenter gemeinsam genutzter Speicher

Für Szenarien mit mehreren EC2 GPU-Recheninstanzen mit latenzempfindlichen Workloads, die hohe Verfügbarkeit, hohe Leistung, Kostensensitivität und mehrere Pod-Bereitstellungen für verschiedene Anwendungen erfordern, empfehlen wir Amazon for OpenZFS. FSx Einige Beispiele für Workloads umfassen Inferenz in Echtzeit, Reinforcement-Learning und Training generativer gegnerischer Netzwerke. FSx für OpenZFS ist besonders vorteilhaft für Workloads, die einen leistungsstarken Zugriff auf eine fokussierte Verzeichnisstruktur mit kleinen Dateien und kleinen I/O-Datenzugriffsmustern benötigen. Außerdem bietet OpenZFS die Flexibilität, FSx die Leistung unabhängig von der Speicherkapazität zu skalieren. So können Sie optimale Kosteneffizienz erzielen, indem Sie die Speichergröße an die tatsächlichen Bedürfnisse anpassen und gleichzeitig das erforderliche Leistungsniveau beibehalten

Der native CSI-Treiber FSx für OpenZFS ermöglicht die Erstellung mehrerer Dateisysteme in einem einzigen PVCs , indem mehrere Volumes erstellt werden. Dies reduziert den Verwaltungsaufwand und maximiert die Nutzung des Durchsatzes und der IOPS des Dateisystems durch konsolidierte Anwendungs-Pod-Bereitstellungen auf einem einzigen Dateisystem. Darüber hinaus umfasst es Unternehmensfunktionen wie Zero-Copy-Snapshots, Zero-Copy-Clones sowie Benutzer- und Gruppenkontingente, die dynamisch über den CSI-Treiber bereitgestellt werden können.

FSx for OpenZFS unterstützt bei der Erstellung drei verschiedene Bereitstellungstypen:

  • Single-AZ: Die kostengünstigste Option mit Latenzen unter einer Millisekunde, bietet jedoch keine Hochverfügbarkeit auf Dateisystem- oder Availability Zone-Ebene. Empfohlen für Entwicklungs- und Test-Workloads oder solche, die auf Anwendungsebene eine hohe Verfügbarkeit aufweisen.

  • Single-AZ (HA): Bietet Hochverfügbarkeit auf Dateisystemebene mit Latenzen unter einer Millisekunde. Empfohlen für Workloads mit der höchsten Leistung, die eine hohe Verfügbarkeit erfordern.

  • Multi-AZ: Bietet Hochverfügbarkeit auf Dateisystemebene sowie in allen Availability Zones. Empfohlen für Hochleistungs-Workloads, die zusätzliche Verfügbarkeit in allen Availability Zones erfordern.

Überlegungen zur Leistung:

  • Bereitstellungstyp: Wenn die zusätzliche Verfügbarkeit in allen Availability Zones nicht erforderlich ist, sollten Sie den Bereitstellungstyp Single-AZ (HA) in Betracht ziehen. Dieser Bereitstellungstyp bietet bis zu 100% des Durchsatzes für Schreibvorgänge, hält Latenzen von unter einer Millisekunde aufrecht, und die Gen2-Dateisysteme verfügen über einen zusätzlichen NVMe Cache zum Speichern von bis zu Terabyte an häufig aufgerufenen Daten. Die Multi-AZ-Dateisysteme bieten bis zu 75% des Durchsatzes für Schreibvorgänge bei einer erhöhten Latenz, um den AZ-übergreifenden Datenverkehr zu bewältigen.

  • Durchsatz und IOPS: Sowohl der Durchsatz als auch die für das Dateisystem konfigurierten IOPS können nach der Bereitstellung nach oben oder unten skaliert werden. Sie können bis zu 10% GB/s of disk throughput providing up to 21GB/s des zwischengespeicherten Datenzugriffs bereitstellen. Die IOPS können von der Festplatte auf bis zu 400.000 skaliert werden, und der Cache kann über 1 Million IOPS bereitstellen. Beachten Sie, dass die Durchsatzskalierung eines Single-AZ-Dateisystems zu einem kurzen Ausfall des Dateisystems führt, da keine Hochverfügbarkeit besteht. Die Durchsatzskalierung eines Single-AZ- (HA) - oder Multi-AZ-Dateisystems kann unterbrechungsfrei erfolgen. Die SSD-IOPS können einmal alle sechs Stunden skaliert werden.

  • Speicherklasse: FSx Für OpenZFS werden sowohl die SSD-Speicherklasse als auch die Intelligent-Tiering-Speicherklasse unterstützt. Für AI/ML Workloads wird empfohlen, die SSD-Speicherklasse zu verwenden, um eine gleichbleibende Leistung für die Arbeitslast zu gewährleisten und die CPUs/GPUs so ausgelastet wie möglich zu halten.

  • Komprimierung: Aktivieren Sie den LZ4 Komprimierungsalgorithmus, wenn Sie einen Workload haben, der komprimiert werden kann. Dadurch wird die Datenmenge reduziert, die jede Datei im Cache verbraucht, sodass mehr Daten direkt aus dem Cache bereitgestellt werden können, da Netzwerkdurchsatz und IOPS die Last auf der SSD-Festplatte reduzieren.

  • Datensatzgröße: Die meisten AI/ML Workloads profitieren davon, die standardmäßige Datensatzgröße von 128 KB beizubehalten. Dieser Wert sollte nur reduziert werden, wenn der Datensatz aus großen Dateien (über 10 GiB) mit konsistenten kleinen Blockzugriffen von der Anwendung aus unter 128 KiB besteht.

Sobald das Dateisystem erstellt ist, wird vom Dienst automatisch ein zugehöriges Root-Volume erstellt. Es hat sich bewährt, Daten in untergeordneten Volumes des Root-Volumes im Dateisystem zu speichern. Mithilfe des CSI-Treibers FSx für OpenZFS erstellen Sie einen zugehörigen Persistent Volume Claim, um das untergeordnete Volume dynamisch zu erstellen.

Beispiele:

Eine Speicherklassendefinition (SC) für ein Volume FSx für OpenZFS, mit der ein untergeordnetes Volume des Root-Volumes ($ROOT_VOL_ID) in einem vorhandenen Dateisystem erstellt und das Volume mithilfe des NFS v4.2-Protokolls in das VPC CIDR ($VPC_CIDR) exportiert wird.

apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: fsxz-vol-sc provisioner: fsx.openzfs.csi.aws.com parameters: ResourceType: "volume" ParentVolumeId: '"$ROOT_VOL_ID"' CopyTagsToSnapshots: 'false' DataCompressionType: '"LZ4"' NfsExports: '[{"ClientConfigurations": [{"Clients": "$VPC_CIDR", "Options": ["rw","crossmnt","no_root_squash"]}]}]' ReadOnly: 'false' RecordSizeKiB: '128' Tags: '[{"Key": "Name", "Value": "AI-ML"}]' OptionsOnDeletion: '["DELETE_CHILD_VOLUMES_AND_SNAPSHOTS"]' reclaimPolicy: Delete allowVolumeExpansion: false mountOptions: - nfsvers=4.2 - rsize=1048576 - wsize=1048576 - timeo=600 - nconnect=16 - async

Ein dynamisch erstellter Persistent Volume Claim (PVC) für das oben erstellte Objekt. fsxz-vol-sc Beachten Sie, dass die zugewiesene Speicherkapazität 1 Gi beträgt. Dies ist FSx für OpenZFS-Volumes erforderlich, wie in den häufig gestellten Fragen zu CSI-Treibern angegeben. Dem Volume wird die volle Kapazität zur Verfügung gestellt, die mit dieser Konfiguration für das Dateisystem bereitgestellt wird. Wenn die Volumenkapazität eingeschränkt werden muss, können Sie dies mithilfe von Benutzer- oder Gruppenkontingenten tun.

apiVersion: v1 kind: PersistentVolumeClaim metadata: name: dynamic-vol-pvc namespace: example spec: accessModes: - ReadWriteMany storageClassName: fsxz-vol-sc resources: requests: storage: 1Gi

Konfigurieren Sie einen Pod so, dass er ein Volume mithilfe des Persistent Volume Claim (PVC) bereitstellt dynamic-vol-pvc:

kind: Pod apiVersion: v1 metadata: name: fsx-app namespace: example spec: volumes: - name: dynamic-vol-pv persistentVolumeClaim: claimName: dynamic-vol-pvc containers: - name: app image: amazonlinux:2023 command: ["/bin/sh"] volumeMounts: - mountPath: "/mnt/fsxz" name: dynamic-vol-pv

Amazon EFS für gemeinsam genutzte Modell-Caches

In Szenarien, in denen Sie über eine Umgebung mit mehreren EC2 GPU-Recheninstanzen verfügen und dynamische Workloads haben, die gemeinsamen Modellzugriff über mehrere Knoten und Availability Zones (z. B. Online-Inferenz in Echtzeit mit Karpenter) mit moderaten Leistungs- und Skalierbarkeitsanforderungen erfordern, empfehlen wir die Verwendung eines Amazon Elastic File System (EFS) -Dateisystems als persistentes Volume über den EFS CSI-Treiber. Amazon EFS ist ein vollständig verwaltetes, hochverfügbares und skalierbares Cloud-basiertes NFS-Dateisystem, das EC2 Instances und Container mit gemeinsam genutztem Dateispeicher mit gleichbleibender Leistung ermöglicht, bei denen keine vorherige Bereitstellung von Speicher erforderlich ist. Verwenden Sie EFS als Modellvolume und mounten Sie das Volume als gemeinsam genutztes Dateisystem, indem Sie ein persistentes Volume auf dem EKS-Cluster definieren. Jeder Persistent Volume Claim (PVC), der von einem EFS-Dateisystem unterstützt wird, wird als EFS-Zugriffspunkt zum EFS-Dateisystem erstellt. EFS ermöglicht mehreren Knoten und Pods den Zugriff auf dieselben Modelldateien, sodass keine Daten mit dem Dateisystem jedes Knotens synchronisiert werden müssen. Installieren Sie den EFS-CSI-Treiber, um EFS mit EKS zu integrieren.

Sie können ein Amazon EFS-Dateisystem mit den folgenden Durchsatzmodi bereitstellen:

  • Bursting-Durchsatz: Skaliert den Durchsatz mit der Größe des Dateisystems und eignet sich für unterschiedliche Workloads mit gelegentlichen Bursts.

  • Bereitgestellter Durchsatz: Dedizierter Durchsatz, ideal für konsistente ML-Trainingsaufgaben mit vorhersehbaren Leistungsanforderungen innerhalb bestimmter Grenzen.

  • Elastischer Durchsatz (empfohlen für ML): Automatische Skalierung je nach Arbeitslast, Kosteneffizienz für unterschiedliche ML-Workloads.

Leistungsspezifikationen finden Sie unter Amazon EFS-Leistungsspezifikationen.

Überlegungen zur Leistung:

  • Verwenden Sie Elastic Throughput für unterschiedliche Workloads.

  • Verwenden Sie die Standard-Speicherklasse für aktive ML-Workloads.

Vollständige Beispiele für die Verwendung des Amazon EFS-Dateisystems als persistentes Volume innerhalb Ihres EKS-Clusters und Ihrer Pods finden Sie in den EFS-CSI-Treiberbeispielen unter GitHub. Überwachen Sie Amazon EFS-Leistungskennzahlen mithilfe von Amazon CloudWatch. Wenn Leistungsengpässe festgestellt werden, passen Sie Ihre Konfigurationsparameter nach Bedarf an.

Verwenden Sie S3 Express One Zone für latenzempfindliche, objektorientierte Workflows

Für latenzempfindliche AI/ML Workloads auf Amazon EKS, wie z. B. umfangreiches Modelltraining, Inferenz oder Hochleistungsanalysen, empfehlen wir die Verwendung von S3 Express One Zone für das Speichern und Abrufen von Modellen mit hoher Leistung. S3 Express One Zone bietet einen hierarchischen Namespace, ähnlich einem Dateisystem, in den Sie einfach in einen Verzeichnis-Bucket hochladen, der sich dafür eignet, „alles hineinzuwerfen“ und gleichzeitig die hohe Geschwindigkeit aufrechtzuerhalten. Dies ist besonders nützlich, wenn Sie an objektorientierte Workflows gewöhnt sind. Wenn Sie eher an Dateisysteme gewöhnt sind (z. B. POSIX-konform), bevorzugen Sie möglicherweise Amazon FSx for Lustre oder OpenZFS. Amazon S3 Express One Zone speichert Daten in einer einzigen Availability Zone (AZ) mithilfe von Verzeichnis-Buckets und bietet eine geringere Latenz als Standard-S3-Buckets, die Daten auf mehrere verteilen. AZs Um optimale Ergebnisse zu erzielen, stellen Sie sicher, dass sich Ihre EKS-Rechenleistung in derselben AZ wie Ihr Express One Zone-Bucket befindet. Weitere Informationen zu den Unterschieden von S3 Express One Zone finden Sie unter Unterschiede bei Directory-Buckets.

Für den Zugriff auf S3 Express One Zone mit Dateisystemsemantik empfehlen wir die Verwendung des Mountpoint S3 CSI-Treibers, der S3-Buckets (einschließlich Express One Zone) als lokales Dateisystem mountet. Auf diese Weise werden Dateioperationen (z. B. Öffnen, Lesen, Schreiben) in S3-API-Aufrufe umgewandelt. Dadurch wird ein Zugriff mit hohem Durchsatz ermöglicht, der für leseintensive Workloads von mehreren Clients und sequentielle Schreibvorgänge auf neue Objekte optimiert ist. Einzelheiten zu den unterstützten Vorgängen und Einschränkungen (z. B. keine vollständige POSIX-Konformität, aber Anhängen und Umbenennen werden in Express One Zone unterstützt) finden Sie in der Dokumentation zur Mountpoint-Semantik.

Vorteile bei der Leistung

  • Bietet bis zu zehnmal schnelleren Datenzugriff als S3 Standard, mit konsistenter Latenz im einstelligen Millisekundenbereich und bis zu 80% niedrigeren Anforderungskosten.

  • Skaliert für die Verarbeitung von Hunderttausenden bis Millionen von Anfragen pro Sekunde pro Verzeichnis-Bucket und vermeidet so Drosselungen oder Stromausfälle, wie sie bei Standard-S3 bei extremer Auslastung auftreten (z. B. von Clustern mit Zehntausenden überlasteten Netzwerken). GPUs/CPUs

  • Verwendet einen sitzungsbasierten Authentifizierungsmechanismus. Authentifizieren Sie sich einmal, um ein Sitzungstoken zu erhalten, und führen Sie dann wiederholte Operationen mit hoher Geschwindigkeit ohne zusätzlichen Authentifizierungsaufwand pro Anfrage durch. Dies ist für Workloads wie häufiges Checkpointing oder das Laden von Daten optimiert.

Empfohlene Anwendungsfälle

  • Caching: Einer der häufigsten Anwendungsfälle bei der Verwendung des Mountpoint S3 CSI-Treibers mit S3 Express One Zone ist das Caching. Die erste Instanz liest Daten aus S3 Standard (für allgemeine Zwecke) und speichert sie in der Express One Zone mit niedrigerer Latenz im Cache. Nachfolgende Lesevorgänge durch andere Clients greifen schneller auf die zwischengespeicherten Daten zu. Dies ist ideal für Szenarien mit mehreren Knoten, in denen mehrere EKS-Knoten dieselben Daten lesen (z. B. gemeinsam genutzte Trainingsdatensätze). Dadurch kann die Leistung bei wiederholten Zugriffen um das bis zu 7-fache verbessert und die Rechenkosten gesenkt werden. Für Workloads, die eine vollständige POSIX-Konformität erfordern (z. B. Dateisperren und direkte Änderungen), sollten Sie Amazon FSx for Lustre oder OpenZFS als Alternativen in Betracht ziehen.

  • AI/ML Umfangreiches Training und Inferenz: Ideal für Workloads mit Hunderten oder Tausenden von Rechenknoten (z. B. GPUs in EKS-Clustern), bei denen eine allgemeine Drosselung von S3 zu Verzögerungen führen und teure Rechenressourcen verschwenden könnte. Zum Beispiel tests/checkpoints profitieren LLM-Forscher oder Organisationen, die ein Tagesmodell verwenden, von schnellem und zuverlässigem Zugriff, ohne dass die regionale S3 beeinträchtigt wird. Für kleinere Workloads (z. B. 10 Knoten) können S3 Standard oder andere Speicherklassen ausreichend sein.

  • Daten-Pipelines: Load/prepare Modelle, archivierte Trainingsdaten oder Stream-Checkpoints. Wenn Ihr Team Objektspeicher herkömmlichen Dateisystemen vorzieht (z. B. aufgrund der Vertrautheit mit S3), verwenden Sie dies, anstatt technische Änderungen für POSIX-konforme Optionen wie für Lustre vorzunehmen. FSx

Überlegungen

  • Belastbarkeit: Das Single-AZ-Design bietet eine Beständigkeit von 99,999999999% (wie Standard S3, durch Redundanz innerhalb der AZ), aber eine geringere Verfügbarkeit (99,95% konzipiert, 99,9% SLA) im Vergleich zu Multi-AZ-Klassen (99,99% Verfügbarkeit). Es ist weniger widerstandsfähig gegenüber AZ-Ausfällen. Wird für wiederherstellbare oder zwischengespeicherte Daten verwendet. Ziehen Sie Multi-AZ-Replikation oder Backups für kritische Workloads in Betracht.

  • API- und Funktionsunterstützung: Unterstützt eine Teilmenge von S3 APIs (z. B. keine Lebenszyklusrichtlinien oder Replikation); möglicherweise sind geringfügige Änderungen an der App für die Sitzungsauthentifizierung oder die Objekthandhabung erforderlich.

  • EKS-Integration: Platzieren Sie Ihre EKS pods/nodes in derselben AZ wie der Verzeichnis-Bucket, um die Netzwerklatenz zu minimieren. Verwenden Sie Mountpoint for Amazon S3- oder CSI-Treiber für den nativen Kubernetes-Zugriff.

  • Testen: Testen Sie die Latenz beim Abruf in einer Umgebung außerhalb der Produktionsumgebung, um Leistungssteigerungen zu überprüfen. Überwachen Sie die Drosselung in S3-Standardszenarien (z. B. hohe GPU-Sättigung) und vergleichen Sie sie.

Die Speicherklasse S3 Express One Zone ist in mehreren Regionen verfügbar und lässt sich in EKS für Workloads integrieren, die Objektzugriff benötigen, ohne auf Speicherplatz warten zu müssen. Weitere Informationen finden Sie unter Erste Schritte mit S3 Express One Zone.