View a markdown version of this page

Gunakan GPU multi-instance (MIG) dengan GPU NVIDIA di Amazon EKS - Amazon EKS

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.

Gunakan GPU multi-instance (MIG) dengan GPU NVIDIA di Amazon EKS

Multi-Instance GPU (MIG) adalah fitur perangkat keras pada GPU NVIDIA yang mempartisi satu GPU fisik menjadi beberapa instance terisolasi. Jumlah maksimum instance yang dipartisi tergantung pada GPU. Setiap instance memiliki memori khusus, unit komputasi, dan bandwidth memori, sehingga beban kerja yang berjalan pada satu instans tidak dapat memengaruhi beban kerja pada instans lain. Tidak seperti time-slicing, yang berbagi GPU melalui multiplexing waktu perangkat lunak tanpa isolasi, MIG menyediakan memori tingkat perangkat keras dan isolasi kesalahan antara Pod.

MIG paling cocok untuk inferensi multi-tenant dan beban kerja yang membutuhkan kualitas layanan yang dapat diprediksi. Ini tersedia pada GPU NVIDIA Ampere (A100), Hopper (H100 dan H200), dan Blackwell. Pada AWS, ini adalah P-family tipe instance Blackwell-based g7 dan tipe g7e instance and. Untuk daftar lengkapnya, lihat MIG-capable jenis contoh.

MIG sangat cocok ketika:

  • Anda memerlukan isolasi memori, sehingga satu beban kerja tidak dapat menghabiskan memori GPU yang dibutuhkan beban kerja lain.

  • Anda menjalankan inferensi multi-tenant di mana penyewa berbagi perangkat keras GPU tetapi memerlukan kualitas layanan per penyewa.

  • Anda sudah menjalankan pelatihan pada instans A100, H100, H200, atau Blackwell dan ingin menggunakan kembali GPU tersebut untuk beban kerja inferensi yang lebih kecil saat pelatihan tidak aktif.

Pertimbangkan pendekatan yang berbeda ketika:

  • Node Anda menggunakan jenis instans GPU yang tidak mendukung MIG, seperti g6e keluarga g5g6,, atau. Gunakan pemot ongan waktu sebagai gantinya.

  • Anda tidak perlu isolasi memori dan menginginkan konfigurasi yang paling sederhana. Gunakan pemot ongan waktu sebagai gantinya.

  • Anda perlu sering mengubah partisi GPU tanpa gangguan. Mengubah mode MIG atau tata letak partisi memerlukan reset GPU, yang dilakukan Operator GPU dengan me-reboot node.

  • Anda menjalankan pelatihan multi-GPU yang bergantung pada komunikasi kolektif atau peer-to-peer antar GPU. MIG tidak mendukung NCCL atau cross-GPU P2P.

Pertimbangan-pertimbangan

Tinjau pertimbangan berikut sebelum Anda menggunakan MIG dalam produksi.

Pertimbangan umum

  • Mengubah konfigurasi MIG memerlukan reset GPU. Mengaktifkan atau menonaktifkan mode MIG, atau mengubah tata letak partisi, memerlukan reset GPU, sehingga tidak dapat diubah di tempat. Misalnya, MIG Manager di Operator GPU NVIDIA menerapkan perubahan konfigurasi dengan menghentikan Pod GPU pada node dan me-reboot node ketika reboot diperlukan untuk mengubah mode MIG.

  • Komputasi tidak sepenuhnya sebanding dengan ukuran instance. Inst 1g ans tidak memberikan bagian proporsional dari seluruh throughput GPU untuk setiap beban kerja, karena bandwidth memori dan perilaku cache berbeda di seluruh profil. Tolok ukur beban kerja Anda pada profil yang ingin Anda gunakan sebelum Anda mengukur partisi.

  • Time-slicing tidak berpengaruh pada contoh MIG. Instans MIG sudah terisolasi dari perangkat keras dan tidak dapat dibagikan lebih lanjut melalui pemotongan waktu. Meminta strategi TimeSlicing berbagi pada perangkat MIG tidak mengubah perilaku perangkat keras. Untuk berbagi satu instans MIG di seluruh kontainer, gunakan NVIDIA Multi-Process Service (MPS) sebagai gantinya.

  • Komunikasi lintas GPU terbatas. Ketika MIG diaktifkan, instans MIG pada GPU yang berbeda tidak dapat menggunakan komunikasi GPU-to-GPU peer-to-peer (P2P), dan NCCL tidak bekerja dengan MIG. Multi-GPU beban kerja yang bergantung pada komunikasi kolektif atau P2P di seluruh GPU, seperti pelatihan multi-GPU tensor-paralel, memerlukan seluruh GPU sebagai gantinya. Untuk detailnya, lihat Pertimbangan Aplikasi di Panduan Pengguna NVIDIA MIG di situs web NVIDIA.

Pertimbangan plugin perangkat NVIDIA

  • Permintaan sumber daya pod harus sesuai dengan strategi. Dengan strategi tunggal, Pods memintanvidia.com/gpu. Dengan strategi campuran, Pod meminta sumber daya khusus profil, seperti. nvidia.com/mig-1g.10gb Pod yang meminta profil yang tidak diiklankan node tetap berada di Pending negara bagian tersebut. Konfirmasikan sumber daya yang diiklankan dengankubectl describe node <node-name>.

  • Plugin perangkat mandiri di AL2023. Jika Anda menginstal plugin perangkat NVIDIA secara terpisah, misalnya sebagai bagian dari pengaturan cluster, kecualikan dari node MIG Anda sehingga tidak bertentangan dengan plugin perangkat yang dikelola Operator GPU. Tambahkan aturan afinitas simpul ke plugin perangkat mandiri yang mengecualikan node yang memiliki nvidia.com/mig.config label.

  • Tidak ada dukungan pada Mode Otomatis EKS. Mode Otomatis EKS mengelola plugin perangkat NVIDIA dan tidak mengekspos konfigurasinya (lihatMenyebarkan beban kerja yang dipercepat). Anda tidak dapat mengaktifkan MIG pada node Mode Otomatis EKS. Konfigurasikan MIG pada node Karpenter yang dikelola sendiri atau grup node terkelola, tempat Anda mengontrol AMI dan pengaturan plugin perangkat.

Pertimbangan driver NVIDIA DRA

  • MIG statis membutuhkan instans yang telah dibuat sebelumnya. Dengan MIG statis, driver DRA mengalokasikan instans MIG yang ada tetapi tidak mengaktifkan mode MIG atau mempartisi GPU. Anda harus mengaktifkan mode MIG dan membuat instance terlebih dahulu, misalnya dengan MIG Manager di Operator GPU NVIDIA ataunvidia-smi. Untuk informasi selengkapnya, lihat Gunakan MIG dengan driver NVIDIA DRA.

  • Dynamic MIG adalah fitur alfa. Dengan MIG dinamis, pengemudi membuat dan menghancurkan partisi MIG sesuai permintaan sebagai respons terhadap permintaan beban kerja. Ini membutuhkan gerbang DynamicMIG fitur, yang dinonaktifkan secara default. Untuk informasi selengkapnya, lihat Gunakan MIG dengan driver NVIDIA DRA.

  • Nonaktifkan plugin perangkat bawaan di Bottlerocket. Driver DRA tidak dapat berjalan bersama plugin perangkat NVIDIA pada node yang sama. Di Bottlerocket, nonaktifkan plugin perangkat bawaan, yang memerlukan Bottlerocket versi 1.63.0 atau yang lebih baru. Untuk informasi selengkapnya, lihat Instal driver NVIDIA DRA.

  • Dukungan komputasi. Driver NVIDIA DRA didukung dengan penyediaan kapasitas statis di Karpenter, grup node yang dikelola EKS, atau node yang dikelola sendiri, dan tidak didukung dengan Mode Otomatis EKS. Untuk informasi selengkapnya, lihat NodePool dokumentasi statis Karpenter di situs web Karpenter.

MIG-capable jenis contoh

Pada AWS, jenis instance berikut menyediakan MIG-capable GPU.

Tipe instans GPU Memori GPU

p4d.24xlarge

8 x NVIDIA A100 40GB

320GB

p4de.24xlarge

8 x NVIDIA A100 80GB

640GB

p5.48xlarge

8 x NVIDIA H100 80GB

640GB

p5e.48xlarge

8 x NVIDIA H200

1128GB

p5en.48xlarge

8 x NVIDIA H200

1128GB

p6-b200.48xlarge

8 x NVIDIA Blackwell B200

1432GB

p6-b300.48xlarge

8 x NVIDIA Blackwell Ultra B300

2144GB

g7.48xlarge

8 x NVIDIA RTX PRO 4500 Edisi Server Blackwell

256GB

g7e.48xlarge

8 x NVIDIA RTX PRO 6000 Edisi Server Blackwell

768 GB

MIG tidak tersedia dig5,g6, atau g6e keluarga. Untuk p6e-gb200 UltraServers, yang menggunakan GPU MIG-capable NVIDIA GB200, lihatGunakan P6e-GB200 UltraServers dengan Amazon EKS.

catatan

Jenis g7 instance memerlukan driver NVIDIA versi 595 atau yang lebih baru. AMI yang EKS-optimized dipercepat saat ini menyertakan driver NVIDIA versi 580, jadi untuk menggunakan MIG pada g7 Anda harus membuat AMI khusus dengan driver versi 595. Untuk informasi selengkapnya, lihat Membangun AMI EKS-optimized Amazon Linux kustom.

Instans MIG dijelaskan oleh profil yang menggunakan pola penamaan<slices>g.<memory>gb, di mana <slices> adalah jumlah irisan komput <memory> asi dan merupakan memori instance dalam gigabyte. Misalnya, 3g.40gb profil menyediakan tiga dari tujuh irisan komputasi dan memori 40 GB. Profil yang didukung masing-masing GPU diperbaiki oleh perangkat keras. Untuk daftar lengkapnya, lihat Panduan Multi-Instance Pengguna GPU NVIDIA di situs web NVIDIA.

Profil MIG per jenis instans

Profil MIG yang tersedia pada node bergantung pada GPU untuk jenis instans. Bagian berikut mencantumkan profil untuk setiap jenis instans MIG-capable Amazon EC2. Untuk setiap profil, Max instance adalah jumlah maksimum instance profil yang dapat Anda buat pada satu GPU, dan Memori per instance adalah memori GPU yang dialokasikan untuk masing-masing.

Profil Hitung irisan Memori per instans Instans maks

1g.5gb

1 dari 7

5GB

7

1g.10gb

1 dari 7

10 GB

4

2g.10gb

2 dari 7

10 GB

3

3g.20gb

3 dari 7

20 GB

2

4g.20gb

4 dari 7

20 GB

1

7g.40gb

7 dari 7

40GB

1

Profil Hitung irisan Memori per instans Instans maks

1g.10gb

1 dari 7

10 GB

7

1g.20gb

1 dari 7

20 GB

4

2g.20gb

2 dari 7

20 GB

3

3g.40gb

3 dari 7

40GB

2

4g.40gb

4 dari 7

40GB

1

7g.80gb

7 dari 7

80GB

1

Profil Hitung irisan Memori per instans Instans maks

1g.10gb

1 dari 7

10 GB

7

1g.20gb

1 dari 7

20 GB

4

2g.20gb

2 dari 7

20 GB

3

3g.40gb

3 dari 7

40GB

2

4g.40gb

4 dari 7

40GB

1

7g.80gb

7 dari 7

80GB

1

Profil Hitung irisan Memori per instans Instans maks

1g.18gb

1 dari 7

18GB

7

1g.35gb

1 dari 7

35GB

4

2g.35gb

2 dari 7

35GB

3

3g.71gb

3 dari 7

71GB

2

4g.71gb

4 dari 7

71GB

1

7g.141gb

7 dari 7

141GB

1

Profil Hitung irisan Memori per instans Instans maks

1g.23gb

1 dari 7

23GB

7

1g.45gb

1 dari 7

45GB

4

2g.45gb

2 dari 7

45GB

3

3g.90gb

3 dari 7

90GB

2

4g.90gb

4 dari 7

90GB

1

7g.180gb

7 dari 7

180GB

1

p6-b300.48 xbesar — NVIDIA Blackwell Ultra B300

Menggunakan p6-b300.48xlarge HGX B300, yang mendukung partisi setiap GPU menjadi 7 instance 32 GB, 4 dari 67 GB, 2 dari 135 GB, atau 1 dari 270 GB. Ukuran ini adalah awal dan mungkin berubah. Untuk detail profilnya, lihat Profil MIG yang Didukung NVIDIA di situs web NVIDIA.

Profil Hitung irisan Memori per instans Instans maks

1g.16gb

1 dari 2

16GB

2

2g.32gb

2 dari 2

32 GB

1

RTX PRO 4500 Blackwell juga mendukung varian profil berkemampuan grafis (+gfx) dan mesin media (,). +me.all -me Untuk daftar lengkapnya, lihat Profil MIG yang Didukung NVIDIA di situs web NVIDIA.

Profil Hitung irisan Memori per instans Instans maks

1g.24gb

1 dari 4

24GB

4

2g.48gb

2 dari 4

48GB

2

4g.96gb

4 dari 4

96GB

1

RTX PRO 6000 Blackwell Server Edition juga mendukung varian profil berkemampuan grafis () dan mesin +gfx media (,). +me.all -me Untuk daftar lengkapnya, lihat Profil MIG yang Didukung NVIDIA di situs web NVIDIA.

Strategi MIG

Driver NVIDIA DRA dan plugin perangkat NVIDIA mengekspos instans MIG ke Kubernetes dengan cara yang berbeda. Plugin perangkat menggunakan pengaturan strategi MIG di seluruh simpul, sementara driver DRA tidak memiliki pengaturan yang setara karena memilih instance berdasarkan atributnya. Memahami perbedaan ini adalah kunci untuk memilih di antara kedua model.

Driver NVIDIA DRA

Driver NVIDIA DRA tidak menggunakan konsep strategi tunggal atau campuran, dan tidak ada pengaturan yang setara untuk dikonfigurasi. Alih-alih mengiklankan instans MIG sebagai sumber daya terhitung, driver menerbitkan setiap instance sebagai perangkat mig.nvidia.com DeviceClass dengan atribut seperti ituprofile. Pod memilih instance dengan mencocokkan atribut ini dengan pemilih Common Expression Language (CEL) dalam ResourceClaim atauResourceClaimTemplate, seperti yang ditunjukkan padaGunakan MIG dengan driver NVIDIA DRA.

Karena seleksi adalah per instans, node profil campuran bekerja tanpa sakelar mode strategi. Satu GPU dapat dipartisi menjadi beberapa profil yang berbeda, dan setiap klaim memilih profil yang dibutuhkannya. Pilihan yang penting untuk driver DRA bukanlah strategi tunggal versus campuran, tetapi MIG statis versus dinamis, yang mengontrol apakah Anda membuat instans MIG sebelumnya atau driver membuatnya sesuai permintaan. Untuk informasi selengkapnya, lihat Gunakan MIG dengan driver NVIDIA DRA.

Plugin perangkat NVIDIA

Plugin perangkat NVIDIA mengiklankan instans MIG ke Kubernetes menggunakan salah satu dari dua strategi. Karena plugin perangkat mengekspos instans MIG sebagai sumber daya yang diperluas tingkat simpul, yang hanya membawa jumlah bilangan bulat dan tidak ada atribut per instans, strategi menentukan bagaimana sumber daya tersebut diberi nama.

  • Strategi tunggal — Setiap GPU pada node menggunakan profil MIG yang sama. Plugin perangkat mengiklankan setiap instance sebagai nvidia.com/gpu sumber daya, dan Pod meminta nvidia.com/gpu: 1 seperti yang mereka lakukan untuk GPU khusus. Manifest yang ada tidak berubah. Baik Bottlerocket dan AL2023 mendukung strategi tunggal.

  • Strategi campuran — GPU pada node yang sama dapat menggunakan profil MIG yang berbeda. Plugin perangkat mengiklankan setiap profil sebagai sumber daya yang berbeda, seperti nvidia.com/mig-1g.10gb ataunvidia.com/mig-3g.40gb, dan Pod meminta profil spesifik yang mereka butuhkan. Anda tidak dapat menggunakan strategi campuran dengan plugin perangkat NVIDIA bawaan Bottlerocket. Untuk informasi lebih lanjut, lihat GitHub masalah Bottlerocket #4483 di. GitHub

Gunakan MIG dengan driver NVIDIA DRA

Saat mengalokasikan instans MIG dengan driver NVIDIA DRA, Pod meminta instans MIG melalui sumber daya tambahan plugin perangkat ResourceClaim atau lebih ResourceClaimTemplate tepat nvidia.com/mig-<profile> nya.

Karena driver DRA menjelaskan instance berdasarkan atributnya dan bukan sebagai sumber daya yang dihitung, ia tidak menggunakan strategi tunggal atau campuran yang diperlukan plugin perangkat (lihatStrategi MIG). Driver mengekspos setiap instance MIG sebagai perangkat mig.nvidia.com DeviceClass dengan gpu.nvidia.com/type atributmig, dan mengiklankan atribut per instans seperti profile (misalnya,1g.5gb) dan GPU parentUUID fisik. Anda mencocokkan atribut ini dengan pemilih Common Expression Language (CEL) untuk meminta profil tertentu atau untuk menyimpan beberapa instance pada GPU yang sama.

Driver DRA mengalokasikan instans MIG dalam salah satu dari dua mode:

  • MIG Statis — Anda mengaktifkan mode MIG dan membuat instance MIG pada node sebelum driver dimulai, misalnya dengan MIG Manager di Operator GPU NVIDIA seperti yang dijelaskan dalamGunakan MIG pada node AL2023 dengan plugin perangkat NVIDIA. Driver menemukan instance yang ada dan mengalokasikannya ke Pod tetapi tidak mengubah konfigurasi MIG node. Instans yang ditambahkan setelah driver dimulai tidak ditemukan sampai plugin kubelet GPU dimulai ulang. MIG statis adalah default dan tidak memerlukan gerbang fitur.

  • MIG dinamis — Driver membuat dan menghancurkan partisi MIG sesuai permintaan sebagai respons terhadap permintaan beban kerja, sehingga Anda tidak mempartisi GPU terlebih dahulu. Dynamic MIG adalah fitur alfa yang dinonaktifkan secara default. Anda meminta profil dengan pemilih yang ResourceClaimTemplate sama yang ditunjukkan pada bagian berikut, dan driver mempartisi GPU untuk memenuhi permintaan.

Pertimbangan-pertimbangan

  • MIG dinamis menggantikan penemuan statis pada node. Driver mengelola semua partisi dan menghancurkan partisi MIG apa pun yang tidak dibuat ketika plugin kubelet GPU dimulai. Jangan aktifkan MIG dinamis pada node dengan partisi yang telah dibuat sebelumnya yang ingin Anda simpan, dan jangan jalankan mig-parted atau nvidia-smi mig saat plugin berjalan, karena perubahan manual dapat bertentangan dengan status partisi driver dan menyebabkan persiapan atau pembersihan Pod gagal.

  • MIG dinamis berada dalam keadaan alfa dan memerlukan gerbang fitur untuk diaktifkan saat menginstal driver NVIDIA DRA, lihat Instal driver NVIDIA DRA untuk instruksi.

  • Hopper (H100 dan H200) dan arsitektur yang lebih baru mengaktifkan mode MIG sesuai permintaan. Generasi sebelumnya tidak dapat mengaktifkan mode MIG sesuai permintaan, termasuk GPU Ampere (A100).

  • MIG dinamis bergantung pada fitur perangkat yang dapat dipartisi Kubernetes (aktif GitHub), yang diaktifkan secara default KEP-4815 di Kubernetes versi 1.36 dan yang lebih baru. Pada versi sebelumnya fitur ini tidak diaktifkan secara default, sehingga penjadwal tidak dapat mengalokasikan perangkat MIG yang dibuat secara dinamis.

Prasyarat

  • Cluster Amazon EKS yang menjalankan Kubernetes versi 1.34 atau yang lebih baru dengan kapasitas statis yang disediakan oleh Karpenter, grup node yang dikelola EKS, atau grup node yang dikelola sendiri.

  • MIG-capable P-family node dengan mode MIG diaktifkan dan GPU dipartisi ke dalam instans MIG. Untuk MIG statis, lihat MIG Manager di Operator GPU NVIDIA di situs web NVIDIA.

  • Driver NVIDIA DRA diinstal seperti yang dijelaskan dalamInstal driver NVIDIA DRA, opsional dengan Dynamic MIG diaktifkan jika Anda tidak menggunakan partisi MIG statis.

Prosedur

Contoh berikut dapat digunakan dengan MIG statis atau dinamis dan driver NVIDIA DRA.

  1. Buat ResourceClaimTemplate yang meminta instance MIG dari mig.nvidia.comDeviceClass, dan Pod yang mereferensikannya. Contoh ini meminta instans MIG yang tersedia tanpa membatasi profil.

    cat <<EOF | kubectl apply -f - apiVersion: resource.k8s.io/v1 kind: ResourceClaimTemplate metadata: name: mig-profile-any spec: spec: devices: requests: - name: mig exactly: deviceClassName: mig.nvidia.com count: 1 --- apiVersion: v1 kind: Pod metadata: name: mig-dra-pod spec: tolerations: - key: nvidia.com/gpu operator: Exists effect: NoSchedule containers: - name: cuda image: nvidia/cuda:12.6.0-base-ubuntu22.04 command: ["nvidia-smi", "-L"] resources: claims: - name: mig resourceClaims: - name: mig resourceClaimTemplateName: mig-profile-any restartPolicy: OnFailure EOF
  2. Verifikasi bahwa Pod dialokasikan satu instans MIG.

    kubectl logs mig-dra-pod

    Contoh output adalah sebagai berikut. Pod melihat satu instance MIG dari GPU yang dipartisi.

    GPU 0: NVIDIA A100-SXM4-40GB (UUID: GPU-edd63844-8488-f76a-f6e0-1027a7319a88) MIG 2g.10gb Device 0: (UUID: MIG-a5ad493e-e7e8-5675-9381-1d0f5311a456)

Minta profil MIG tertentu

Untuk meminta profil tertentu alih-alih instance yang tersedia, tambahkan pemilih CEL yang cocok dengan profile atribut. Berikut ini ResourceClaimTemplate meminta 1g.5gb instance, dan Pod mereferensikannya.

cat <<EOF | kubectl apply -f - apiVersion: resource.k8s.io/v1 kind: ResourceClaimTemplate metadata: name: mig-profile-1g.5gb spec: spec: devices: requests: - name: mig exactly: deviceClassName: mig.nvidia.com selectors: - cel: expression: "device.attributes['gpu.nvidia.com'].profile == '1g.5gb'" --- apiVersion: v1 kind: Pod metadata: name: mig-profile-pod spec: tolerations: - key: nvidia.com/gpu operator: Exists effect: NoSchedule containers: - name: cuda image: nvidia/cuda:12.6.0-base-ubuntu22.04 command: ["nvidia-smi", "-L"] resources: claims: - name: mig resourceClaims: - name: mig resourceClaimTemplateName: mig-profile-1g.5gb restartPolicy: OnFailure EOF

Meminta beberapa instans MIG dari GPU yang sama

Untuk memastikan bahwa beberapa instans MIG dalam satu klaim berasal dari GPU fisik yang sama, tambahkan constraints blok denganmatchAttribute: "gpu.nvidia.com/parentUUID". Berikut ini ResourceClaimTemplate meminta 1g.5gb instance dan 2g.10gb instance dari GPU yang sama, dan Pod mereferensikan klaim tersebut. Karena wadah mereferensikan klaim tanpa menyebutkan permintaan tertentu, ia menerima kedua instance MIG.

cat <<EOF | kubectl apply -f - apiVersion: resource.k8s.io/v1 kind: ResourceClaimTemplate metadata: name: multi-mig spec: spec: devices: requests: - name: mig-small exactly: deviceClassName: mig.nvidia.com selectors: - cel: expression: "device.attributes['gpu.nvidia.com'].profile == '1g.5gb'" - name: mig-medium exactly: deviceClassName: mig.nvidia.com selectors: - cel: expression: "device.attributes['gpu.nvidia.com'].profile == '2g.10gb'" constraints: - requests: [] matchAttribute: "gpu.nvidia.com/parentUUID" --- apiVersion: v1 kind: Pod metadata: name: multi-mig-pod spec: tolerations: - key: nvidia.com/gpu operator: Exists effect: NoSchedule containers: - name: cuda image: nvidia/cuda:12.6.0-base-ubuntu22.04 command: ["nvidia-smi", "-L"] resources: claims: - name: mig resourceClaims: - name: mig resourceClaimTemplateName: multi-mig restartPolicy: OnFailure EOF

Gunakan MIG pada node Bottlerocket dengan plugin perangkat NVIDIA

Pada Bottlerocket, AMI yang EKS-optimized dipercepat menyertakan plugin perangkat NVIDIA. Anda mengaktifkan MIG dengan strategi tunggal melalui settings.kubelet-device-plugins.nvidia pengaturan. Bottlerocket mendukung MIG di versi 1.34.0 dan yang lebih baru.

Prasyarat

  • Cluster Amazon EKS. Prosedur berikut menyediakan MIG-capable P-family node dengan EKS-optimized Bottlerocket NVIDIA AMI, versi 1.34.0 atau yang lebih baru.

  • Karpenter diinstal dan dikonfigurasi di cluster Anda, karena prosedur berikut menggunakan Karpenter EC2NodeClass untuk menyediakan pengaturan MIG di data pengguna node Bottlerocket. Untuk informasi selengkapnya, lihat Mem ulai dengan Karpenter di situs web Karpenter.

  • kubectldikonfigurasi untuk berkomunikasi dengan cluster Anda, lihat Instal atau perbarui kubectl untuk informasi selengkapnya.

Prosedur

Tambahkan pengaturan partisi MIG ke data pengguna Bottlerocket untuk node GPU Anda. Cara Anda menyediakan data pengguna tergantung pada bagaimana Anda menyediakan node. Contoh berikut menunjukkan Karpenter EC2NodeClass untuk p4d.24xlarge node.

cat <<EOF | kubectl apply -f - apiVersion: karpenter.k8s.aws/v1 kind: EC2NodeClass metadata: name: gpu-bottlerocket-mig spec: amiFamily: Bottlerocket amiSelectorTerms: - alias: bottlerocket@latest role: eksctl-KarpenterNodeRole-<cluster-name> subnetSelectorTerms: - tags: karpenter.sh/discovery: <cluster-name> securityGroupSelectorTerms: - tags: karpenter.sh/discovery: <cluster-name> userData: | [settings.kubelet-device-plugins.nvidia] device-partitioning-strategy = "mig" [settings.kubelet-device-plugins.nvidia.mig.profile] "a100.40gb" = "2g.10gb" EOF

Ketika node yang disediakan dengan pengaturan ini bergabung dengan cluster, mode MIG diaktifkan pada GPU, setiap GPU dipartisi menjadi 2g.10gb instance, dan plugin perangkat mengiklankan instance yang dihasilkan sebagai sumber daya. nvidia.com/gpu Karena a p4d.24xlarge memiliki delapan GPU A100 dan masing-masing mendukung tiga 2g.10gb instance, node mengiklankan. nvidia.com/gpu: 24

catatan

Peng mig.profile aturan dikunci oleh model GPU, seperti a100.40gb atauh100.80gb. Tanpa mig.profile pengaturan, GPU mengaktifkan mode MIG dan menggunakan profil terbesarnya. Karena Bottlerocket menggunakan strategi tunggal, setiap GPU pada node menggunakan profil yang sama. Untuk menggunakan profil yang berbeda pada node yang sama (strategi campuran), gunakan jalur AL2023 dengan Operator GPU NVIDIA.

Gunakan MIG pada node AL2023 dengan plugin perangkat NVIDIA

Pada AL2023, langkah-langkah berikut menggunakan Operator GPU NVIDIA untuk menginstal plugin perangkat NVIDIA dan MIG Manager. MIG Manager mengaktifkan mode MIG dan mempartisi GPU sesuai dengan konfigurasi yang Anda berikan. Plugin perangkat NVIDIA kemudian mengiklankan instance yang dihasilkan ke Kubernetes. Operator GPU mendukung strategi tunggal dan campuran.

Karena EKS-optimized AL2023 NVIDIA AMI sudah menyertakan driver dan toolkit NVIDIA, nonaktifkan manajemen driver di Operator GPU untuk menghindari konflik dengan driver yang sudah diinstal sebelumnya. Atau, Anda dapat menginstal dan mengelola plugin perangkat NVIDIA dan MIG Manager sendiri tanpa menggunakan Operator GPU.

Prasyarat

  • Cluster Amazon EKS. Prosedur berikut menyediakan MIG-capable P-family node (sepertip4d.24xlarge) dengan EKS-optimized AL2023 NVIDIA AMI.

  • Karpenter diinstal dan dikonfigurasi di cluster Anda, karena prosedur membuat Karpenter EC2NodeClass dan NodePool untuk menyediakan node GPU. Untuk informasi selengkapnya, lihat Mem ulai dengan Karpenter di situs web Karpenter.

  • Helm diinstal di lingkungan baris perintah Anda, lihat petunjuk Peng aturan Helm untuk informasi selengkapnya.

  • kubectldikonfigurasi untuk berkomunikasi dengan cluster Anda, lihat Instal atau perbarui kubectl untuk informasi selengkapnya.

Prosedur

  1. Buat node P-family GPU EC2NodeClass dan NodePool untuk AL2023. Pada AL2023, partisi MIG diterapkan oleh Operator GPU pada langkah-langkah selanjutnya, jadi ini adalah kelas node GPU AL2023 standar. Contoh berikut menyediakan p4d.24xlarge node dengan EKS-optimized AL2023 NVIDIA AMI.

    cat <<EOF | kubectl apply -f - apiVersion: karpenter.k8s.aws/v1 kind: EC2NodeClass metadata: name: gpu-mig-al2023 spec: amiFamily: AL2023 amiSelectorTerms: - alias: al2023@latest role: eksctl-KarpenterNodeRole-<cluster-name> subnetSelectorTerms: - tags: karpenter.sh/discovery: <cluster-name> securityGroupSelectorTerms: - tags: karpenter.sh/discovery: <cluster-name> tags: karpenter.sh/discovery: <cluster-name> --- apiVersion: karpenter.sh/v1 kind: NodePool metadata: name: gpu-mig-al2023 spec: template: spec: nodeClassRef: group: karpenter.k8s.aws kind: EC2NodeClass name: gpu-mig-al2023 taints: - key: nvidia.com/gpu effect: NoSchedule requirements: - key: karpenter.sh/capacity-type operator: In values: ["spot", "on-demand"] - key: node.kubernetes.io/instance-type operator: In values: ["p4d.24xlarge"] - key: kubernetes.io/arch operator: In values: ["amd64"] limits: cpu: 1000 memory: 5000Gi EOF
  2. Tambahkan repositori NVIDIA Helm.

    helm repo add nvidia https://nvidia.github.io/gpu-operator helm repo update
  3. Buat gpu-operator-values.yaml file yang menonaktifkan manajemen driver, memilih strategi campuran, dan menentukan profil MIG untuk diterapkan. Contoh berikut mendefinisikan p4d-half-balanced konfigurasi yang mempartisi empat dari delapan GPU pada p4d.24xlarge node dan meninggalkan sisanya utuh.

    cat <<EOF > gpu-operator-values.yaml driver: enabled: false toolkit: enabled: false devicePlugin: enabled: true nfd: enabled: true gfd: enabled: true mig: strategy: mixed migManager: enabled: true env: - name: WITH_REBOOT value: "true" config: create: true name: custom-mig-parted-configs default: all-disabled data: config.yaml: |- version: v1 mig-configs: all-disabled: - devices: all mig-enabled: false p4d-half-balanced: - devices: [0, 1, 2, 3] mig-enabled: true mig-devices: "1g.5gb": 2 "2g.10gb": 1 "3g.20gb": 1 - devices: [4, 5, 6, 7] mig-enabled: false EOF
  4. Instal Operator GPU dengan file nilai.

    helm install gpu-operator nvidia/gpu-operator \ --namespace gpu-operator \ --create-namespace \ --values gpu-operator-values.yaml
  5. Label MIG-capable node Anda dengan konfigurasi profil yang akan diterapkan. Komponen MIG Manager mengawasi label ini dan mempartisi GPU sesuai dengan itu, me-reboot node untuk menerapkan perubahan.

    kubectl label nodes -l node.kubernetes.io/instance-type=p4d.24xlarge \ nvidia.com/mig.config=p4d-half-balanced --overwrite
  6. Setelah Operator GPU mempartisi GPU, Pod meminta profil MIG tertentu dengan nama sumber dayanya, bukannvidia.com/gpu. Contoh berikut menjalankan Pod yang meminta satu 1g.5gb instance.

    cat <<EOF | kubectl apply -f - apiVersion: v1 kind: Pod metadata: name: mig-inference spec: tolerations: - key: nvidia.com/gpu operator: Exists effect: NoSchedule containers: - name: cuda image: nvidia/cuda:12.6.0-base-ubuntu22.04 command: ["nvidia-smi", "-L"] resources: limits: nvidia.com/mig-1g.5gb: 1 EOF

Untuk contoh konfigurasi strategi campuran lengkap untuk P-family instans, termasuk grup node terkelola dengan reservasi kapasitas dan beban kerja per profil, lihat bagian MIG dari Panduan Praktik Terbaik Amazon EKS.

Verifikasi bahwa MIG aktif

Setelah MIG-enabled node Anda aktifReady, konfirmasikan bahwa mode MIG aktif pada GPU dan bahwa node mengiklankan sumber daya MIG yang diharapkan.

  1. Konfirmasikan bahwa node mengiklankan sumber daya MIG. Dengan strategi tunggal, node melaporkan instance sebagainvidia.com/gpu. Dengan strategi campuran, node melaporkan sumber daya khusus profil, seperti. nvidia.com/mig-1g.10gb

    kubectl describe node <node-name> | grep nvidia.com
  2. J nvidia-smi alankan dari Pod pada MIG-enabled node untuk mengonfirmasi bahwa mode MIG aktif.

    nvidia-smimelaporkan MIG M.: Enabled untuk GPU yang mengaktifkan mode MIG dan mencantumkan instans MIG yang dikonfigurasi pada masing-masing. Berikut ini adalah contoh output dari GPU A100 40 GB dengan MIG diaktifkan dan dipartisi menjadi3g.20gb,2g.10gb, dan 1g.5gb instance.

    +-----------------------------------------------------------------------------------------+ | NVIDIA-SMI 580.159.03 Driver Version: 580.159.03 CUDA Version: 13.0 | +-----------------------------------------+------------------------+----------------------+ | 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 A100-SXM4-40GB On | 00000000:10:1C.0 Off | On | | N/A 35C P0 65W / 400W | 213MiB / 40960MiB | N/A Default | | | | Enabled | +-----------------------------------------+------------------------+----------------------+ +-----------------------------------------------------------------------------------------+ | MIG devices: | +------------------+----------------------------------+-----------+-----------------------+ | GPU GI CI MIG | Shared Memory-Usage | Vol| Shared | | ID ID Dev | Shared BAR1-Usage | SM Unc| CE ENC DEC OFA JPG | | | | ECC| | |==================+==================================+===========+=======================| | 0 1 0 0 | 107MiB / 20096MiB | 42 0 | 3 0 2 0 0 | | | 0MiB / 12211MiB | | | +------------------+----------------------------------+-----------+-----------------------+ | 0 5 0 1 | 71MiB / 9984MiB | 28 0 | 2 0 1 0 0 | | | 0MiB / 6105MiB | | | +------------------+----------------------------------+-----------+-----------------------+ | 0 13 0 2 | 36MiB / 4864MiB | 14 0 | 1 0 0 0 0 | | | 0MiB / 3052MiB | | | +------------------+----------------------------------+-----------+-----------------------+

    Dengan strategi campuran, Pod hanya melihat instance MIG yang diminta, bukan tata letak GPU lengkap dari node. mig-inferencePod dari langkah sebelumnya meminta satu nvidia.com/mig-1g.5gb instance, jadi nvidia-smi -L di dalam Pod itu mencantumkan satu perangkat MIG.

    kubectl logs mig-inference

    Contoh output adalah sebagai berikut.

    GPU 0: NVIDIA A100-SXM4-40GB (UUID: GPU-5b7ce860-1951-004c-4881-6ac6997df770) MIG 1g.5gb Device 0: (UUID: MIG-9b065868-21b6-5b8d-8ab9-e99089ed472c)

    Untuk melihat tata letak partisi penuh dari setiap GPU pada node, jalankan nvidia-smi -L pada host alih-alih di dalam Pod beban kerja. Perintah berikut memulai Pod debugging istimewa pada node dan menjalankan hostnvidia-smi. Ganti node-name dengan nama MIG-enabled node Anda.

    kubectl debug node/<node-name> -it --profile=sysadmin --image=nvidia/cuda:12.6.0-base-ubuntu22.04 -- chroot /host nvidia-smi -L

    Berikut ini adalah contoh output untuk p4d-half-balanced konfigurasi. Empat GPU pertama dipartisi menjadi instans MIG, dan empat sisanya adalah GPU utuh. Setiap MIG baris adalah instance terisolasi perangkat keras dengan UUID, memori, dan irisan komputasi sendiri.

    GPU 0: NVIDIA A100-SXM4-40GB (UUID: GPU-5b7ce860-1951-004c-4881-6ac6997df770) MIG 3g.20gb Device 0: (UUID: MIG-7dc16162-7ba2-5894-abde-d753dc8ecf56) MIG 2g.10gb Device 1: (UUID: MIG-56cfe1f0-0662-50e4-a5f7-111107e4d5e6) MIG 1g.5gb Device 2: (UUID: MIG-1409727e-2ffa-5fd4-9586-204c9e2b36d5) MIG 1g.5gb Device 3: (UUID: MIG-9b065868-21b6-5b8d-8ab9-e99089ed472c) GPU 1: NVIDIA A100-SXM4-40GB (UUID: GPU-73692a43-dd2d-f1a1-b0df-2f4734e2a87d) MIG 3g.20gb Device 0: (UUID: MIG-745fd93a-9582-57a6-8b3b-9782d289ca1b) MIG 2g.10gb Device 1: (UUID: MIG-8440294e-c4a0-5687-add5-2cc506babb2f) MIG 1g.5gb Device 2: (UUID: MIG-559810c0-f2bb-5ca2-b529-47228d99437f) MIG 1g.5gb Device 3: (UUID: MIG-a91cf3f9-6459-59e9-97a8-dc69b9958eef) GPU 2: NVIDIA A100-SXM4-40GB (UUID: GPU-4e56019e-84de-eef5-5ac3-85e468e93639) MIG 3g.20gb Device 0: (UUID: MIG-c130392b-fd7c-59f8-9f4b-ecab27a2984b) MIG 2g.10gb Device 1: (UUID: MIG-7d61cf16-ad08-57be-b2c2-ac6e515b28c3) MIG 1g.5gb Device 2: (UUID: MIG-f5388dec-d841-506c-bb7a-6ac136ceee53) MIG 1g.5gb Device 3: (UUID: MIG-02d54020-c6cb-5997-894b-e95af0f49388) GPU 3: NVIDIA A100-SXM4-40GB (UUID: GPU-4fd894a0-b471-9e77-eb67-0ad15002ed5b) MIG 3g.20gb Device 0: (UUID: MIG-10399b59-2625-5106-b3f8-76ae19da46e1) MIG 2g.10gb Device 1: (UUID: MIG-ef81ee7d-fc48-56ed-8479-8ffa76eb4154) MIG 1g.5gb Device 2: (UUID: MIG-ed9bf59d-6bf2-5e07-80fb-dd0d7ca41f9d) MIG 1g.5gb Device 3: (UUID: MIG-a15d6f7d-661b-514e-8838-06fe4ffe7f75) GPU 4: NVIDIA A100-SXM4-40GB (UUID: GPU-05b6b91b-da6e-3078-1f4f-a7bbf1ff7ed2) GPU 5: NVIDIA A100-SXM4-40GB (UUID: GPU-078a8df1-f387-0315-6b0b-af12e082f6d5) GPU 6: NVIDIA A100-SXM4-40GB (UUID: GPU-6cdeffe7-45f1-7e8e-bcc1-4634399ad877) GPU 7: NVIDIA A100-SXM4-40GB (UUID: GPU-5f68814a-4e4a-5dec-79b4-8d70a61c7714)