Bantu meningkatkan halaman ini
Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Untuk berkontribusi pada panduan pengguna ini, pilih GitHub tautan Edit halaman ini di yang terletak di panel kanan setiap halaman.
Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menyebarkan beban kerja yang dipercepat
Tutorial ini menunjukkan bagaimana Mode Otomatis Amazon EKS menyederhanakan peluncuran beban kerja yang dipercepat perangkat keras. Mode Otomatis Amazon EKS menyederhanakan operasi di luar cluster itu sendiri dengan mengotomatiskan komponen infrastruktur utama yang menyediakan kemampuan komputasi, jaringan, penyeimbangan beban, penyimpanan, dan Manajemen Identitas dan Akses di luar kotak.
Mode Otomatis Amazon EKS menyertakan driver dan plugin perangkat yang diperlukan untuk jenis instans tertentu, seperti driver NVIDIA dan N AWS euron. Anda tidak perlu menginstal atau memperbarui komponen ini.
Mode Otomatis EKS secara otomatis mengelola driver untuk akselerator ini:
catatan
EKS Auto Mode menyertakan plugin perangkat NVIDIA untuk Kubernetes. Plugin ini berjalan secara otomatis dan tidak terlihat sebagai daemon yang ditetapkan di cluster Anda.
Dukungan jaringan tambahan:
-
Adaptor Kain Elastis (EFA)
- Untuk informasi tentang mengelola perangkat EFA di cluster EKS Anda, lihat. Kelola perangkat EFA di Amazon EKS
Mode Otomatis Amazon EKS menghilangkan kerja keras driver akselerator dan manajemen plugin perangkat.
Anda juga dapat memperoleh manfaat dari penghematan biaya dengan menskalakan cluster ke nol. Anda dapat mengonfigurasi Mode Otomatis EKS untuk menghentikan instans saat tidak ada beban kerja yang berjalan. Ini berguna untuk beban kerja inferensi berbasis batch.
Berikut ini memberikan contoh cara meluncurkan beban kerja yang dipercepat dengan Mode Otomatis Amazon EKS.
Prasyarat
-
Cluster Kubernetes dengan Mode Otomatis Amazon EKS dikonfigurasi.
-
Kelas
defaultEKS Node seperti yang dibuat saat Pogeneral-purposeols atausystemManaged Node diaktifkan.
Langkah 1: Menyebarkan beban kerja GPU
Dalam contoh ini, Anda akan membuat NodePool beban kerja berbasis NVIDIA yang membutuhkan memori GPU 45GB. Dengan Mode Otomatis EKS, Anda menggunakan batasan penjadwalan Kubernetes untuk menentukan persyaratan instans Anda.
Untuk menerapkan Mode Otomatis Amazon EKS NodePool dan sampelworkload, tinjau definisi berikut NodePool dan Pod, lalu simpan sebagai nodepool-gpu.yaml danpod.yaml:
nodepool-gpu.yaml
apiVersion: karpenter.sh/v1 kind: NodePool metadata: name: gpu spec: disruption: budgets: - nodes: 10% consolidateAfter: 1h consolidationPolicy: WhenEmpty template: metadata: {} spec: nodeClassRef: group: eks.amazonaws.com kind: NodeClass name: default requirements: - key: "karpenter.sh/capacity-type" operator: In values: ["on-demand"] - key: "kubernetes.io/arch" operator: In values: ["amd64"] - key: "eks.amazonaws.com/instance-family" operator: In values: - g6e - g6 taints: - key: nvidia.com/gpu effect: NoSchedule terminationGracePeriod: 24h0m0s
pod.yaml
apiVersion: v1 kind: Pod metadata: name: nvidia-smi spec: nodeSelector: eks.amazonaws.com/compute-type: auto restartPolicy: OnFailure containers: - name: nvidia-smi image: public.ecr.aws/amazonlinux/amazonlinux:2023-minimal args: - "nvidia-smi" resources: requests: memory: "30Gi" cpu: "3500m" nvidia.com/gpu: 1 limits: memory: "30Gi" nvidia.com/gpu: 1 tolerations: - key: nvidia.com/gpu effect: NoSchedule operator: Exists
Perhatikan bahwa eks.amazonaws.com/compute-type: auto pemilih mengharuskan beban kerja diterapkan pada node Mode Otomatis Amazon EKS. Ini NodePool juga menetapkan noda yang hanya memungkinkan pod dengan toleransi untuk GPU NVIDIA dijadwalkan.
Terapkan beban kerja NodePool dan ke cluster Anda.
kubectl apply -f nodepool-gpu.yaml kubectl apply -f pod.yaml
Anda akan melihat output berikut:
nodepool.karpenter.sh/gpu created pod/nvidia-smi created
Tunggu beberapa detik, dan periksa node di cluster Anda. Anda sekarang akan melihat node baru yang disediakan di cluster Mode Otomatis Amazon EKS Anda:
> kubectl get nodes NAME TYPE CAPACITY ZONE NODE READY AGE gpu-dnknr g6e.2xlarge on-demand us-west-2b i-02315c7d7643cdee6 True 76s
Langkah 2: Validasi
Anda dapat melihat Mode Otomatis Amazon EKS diluncurkan g6e.2xlarge bukan karena beban kerja memerlukan instance dengan L40SGPU, sesuai dengan batasan penjadwalan Kubernetes berikut: g6.2xlarge
... nodeSelector: eks.amazonaws.com/instance-gpu-name: l40s ... requests: memory: "30Gi" cpu: "3500m" nvidia.com/gpu: 1 limits: memory: "30Gi" nvidia.com/gpu: 1
Sekarang, lihat log kontainer dengan menjalankan perintah berikut:
kubectl logs nvidia-smi
Contoh output:
+---------------------------------------------------------------------------------------+ | NVIDIA-SMI 535.230.02 Driver Version: 535.230.02 CUDA Version: 12.2 | |-----------------------------------------+----------------------+----------------------+ | GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. | | | | MIG M. | |=========================================+======================+======================| | 0 NVIDIA L40S On | 00000000:30:00.0 Off | 0 | | N/A 27C P8 23W / 350W | 0MiB / 46068MiB | 0% Default | | | | N/A | +-----------------------------------------+----------------------+----------------------+ +---------------------------------------------------------------------------------------+ | Processes: | | GPU GI CI PID Type Process name GPU Memory | | ID ID Usage | |=======================================================================================| | No running processes found | +---------------------------------------------------------------------------------------+
Anda dapat melihat bahwa wadah telah mendeteksi bahwa ia berjalan pada instance dengan NVIDIA GPU dan Anda tidak perlu menginstal driver perangkat apa pun, karena ini dikelola oleh Mode Otomatis Amazon EKS.
Langkah 3: Clean-up
Untuk menghapus semua objek yang dibuat, gunakan kubectl untuk menghapus penerapan sampel NodePool sehingga node dihentikan:
kubectl delete -f nodepool-gpu.yaml kubectl delete -f pod.yaml
Contoh NodePools Referensi
Buat NVIDIA NodePool
Berikut ini NodePool mendefinisikan:
-
Hanya meluncurkan contoh
g6edang6keluarga -
Konsolidasikan node saat kosong selama 1 jam
-
Nilai 1 jam untuk
consolidateAftermendukung beban kerja runcing dan mengurangi churn node. Anda dapat menyetconsolidateAfterel berdasarkan persyaratan beban kerja Anda.
-
Contoh NodePool dengan keluarga instans GPU dan konsolidasi
apiVersion: karpenter.sh/v1 kind: NodePool metadata: name: gpu spec: disruption: budgets: - nodes: 10% consolidateAfter: 1h consolidationPolicy: WhenEmpty template: metadata: {} spec: nodeClassRef: group: eks.amazonaws.com kind: NodeClass name: default requirements: - key: "karpenter.sh/capacity-type" operator: In values: ["on-demand"] - key: "kubernetes.io/arch" operator: In values: ["amd64"] - key: "eks.amazonaws.com/instance-family" operator: In values: - g6e - g6 terminationGracePeriod: 24h0m0s
Alih-alih menyet eks.amazonaws.com/instance-gpu-name el yang mungkin Anda gunakan eks.amazonaws.com/instance-family untuk menentukan keluarga instance. Untuk label terkenal lainnya yang memengaruhi peninjauan penjadwalan, lihatLabel yang Didukung Mode Otomatis EKS.
Jika Anda memiliki persyaratan penyimpanan khusus, Anda dapat menyetel penyimpanan sementara nodeiops, size dan throughput dengan membuat sendiri NodeClass untuk referensi di. NodePool Pelajari lebih lanjut tentang NodeClass opsi yang dapat dikonfigurasi.
Contoh konfigurasi penyimpanan untuk NodeClass
apiVersion: eks.amazonaws.com/v1 kind: NodeClass metadata: name: gpu spec: ephemeralStorage: iops: 3000 size: 80Gi throughput: 125
Tentukan sebuah AWS Trainium dan AWS Inferentia NodePool
Berikut ini NodePool memiliki satu eks.amazonaws.com/instance-category set yang mengatakan, hanya meluncurkan contoh keluarga Inferentia dan Trainium:
- key: "eks.amazonaws.com/instance-category"
operator: In
values:
- inf
- trn