Bantu tingkatkan 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 Edit halaman ini pada GitHub tautan 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.
penting
Plugin Perangkat Kubernetes untuk DirectX
Pelajari cara menjalankan beban kerja container Windows yang dipercepat GPU di Amazon EKS (Elastic Kubernetes Service) menggunakan NVIDIA GPUs dengan Kubernetes Device Plugin for DirectX by. TensorWorks Untuk informasi selengkapnya, lihat Kubernetes Device Plugin for DirectX
Ada dua pendekatan utama untuk menyiapkan akselerasi GPU untuk wadah Windows Anda:
-
Opsi 1: Buat AMI EKS Windows Dioptimalkan khusus dengan driver GPU yang diperlukan yang sudah diinstal sebelumnya.
-
Gunakan pendekatan ini ketika Anda membutuhkan lingkungan yang konsisten dan telah dikonfigurasi sebelumnya yang siap menjalankan kontainer Windows yang dipercepat GPU, dan Anda dapat menginvestasikan upaya tambahan untuk membangun dan memelihara AMI kustom.
-
-
Opsi 2: Instal driver GPU yang diperlukan pada node pekerja EKS Anda setelah meluncurkan instance Anda.
-
Gunakan pendekatan ini saat Anda menginginkan proses penyiapan yang lebih sederhana dan jangan keberatan menginstal driver GPU di setiap node pekerja baru. Lebih cocok untuk lingkungan pengembangan saat Anda mengevaluasi atau membuat prototipe beban kerja yang dipercepat GPU.
-
Kedua pendekatan dapat dimanfaatkan menggunakan langkah-langkah yang dirinci dalam panduan ini.
Pertimbangan
Panduan ini menyediakan langkah-langkah untuk menginstal dan mengatur akselerasi GPU untuk container Windows Anda menggunakan NVIDIA GPUs, driver NVIDIA GRID, dan Plugin Perangkat Kubernetes
-
Hanya tipe instans G-family dengan driver NVIDIA GRID yang telah diuji dan diverifikasi untuk bekerja dengan panduan ini. Sementara jenis instans lain dan kombinasi driver mungkin juga mampu menjalankan kontainer Windows yang dipercepat GPU, mereka mungkin memerlukan langkah-langkah konfigurasi tambahan yang tidak tercakup dalam panduan ini.
-
Hanya beban kerja berbasis DirectX yang telah diuji dan diverifikasi untuk bekerja dengan panduan ini. Sementara GPU lain APIs seperti OpenGL, Vulkan, dan OpenCL mungkin berpotensi kompatibel untuk menjalankan wadah Windows yang dipercepat GPU, mereka mungkin memerlukan langkah-langkah konfigurasi tambahan yang tidak tercakup dalam panduan ini.
-
Ada beberapa batasan yang diketahui harus diperhatikan sebelum menjalankan wadah Windows yang dipercepat GPU. Silakan lihat Keterbatasan yang Sudah Diketahui bagian untuk informasi lebih lanjut.
Prasyarat
Untuk mengaktifkan akselerasi GPU untuk container Windows Anda di Amazon EKS, Anda harus menyiapkan persyaratan berikut sebelum melanjutkan:
-
Luncurkan cluster Amazon EKS dengan Kubernetes v1.27 atau yang lebih baru.
-
Menyediakan node Windows dengan Windows Server 2022 atau yang lebih baru.
-
Menyediakan node Windows dalam keluarga G jenis instance, seperti G4 atau G5
. -
Menyediakan node Windows dengan runtime container dengan containerd
1.7.x
atau.2.x.x
(Lihat Ambil informasi versi Windows AMI untuk memverifikasi versi containerd di Amazon EKS Optimized AMI Anda.)
Instal driver GPU pada setiap node Windows Windows
Untuk menginstal driver NVIDIA GRID pada node pekerja EKS Anda, ikuti langkah-langkah yang diuraikan dalam driver NVIDIA untuk EC2 instans Amazon Anda. Arahkan ke opsi Instalasi - Opsi 3: Driver GRID dan ikuti langkah-langkah instalasi.
Instal untuk Windows Server Core
Untuk Windows Server Core, yang tidak memiliki pengalaman desktop, instal driver NVIDIA GRID secara diam-diam dengan menggunakan perintah berikut:
$nvidiaInstallerFilePath = nvidia-driver-installer.exe # Replace with path to installer
$installerArguments = "-s -clean -noreboot -noeula"
Start-Process -FilePath $nvidiaInstallerFilePath -ArgumentList $installerArguments -Wait -NoNewWindow -PassThru
Verifikasi instalasi Anda
Jalankan PowerShell perintah berikut untuk menampilkan informasi diagnostik tentang GPUs pada instance:
nvidia-smi
Perintah ini menampilkan versi driver NVIDIA, serta informasi tentang perangkat keras GPU. Pastikan bahwa output dari perintah ini cocok dengan versi driver NVIDIA GRID yang Anda harapkan akan diinstal.
Menyebarkan plugin perangkat GPU di setiap node
Untuk mengaktifkan penemuan dan eksposur sumber daya GPU ke wadah di node Windows Anda, Anda memerlukan plugin perangkat. Terapkan Plugin Perangkat DirectX
-
Menyebarkan plugin perangkat di
kube-system
namespace. -
Tetapkan batas sumber daya yang sesuai DaemonSet untuk memastikan tidak mengkonsumsi sumber daya yang berlebihan pada node Anda.
catatan
Plugin perangkat DaemonSet akan berjalan di setiap node sebagai wadah proses host dengan hak istimewa yang ditinggikan. Disarankan untuk menerapkan kontrol RBAC untuk membatasi akses ke ini DaemonSet sehingga hanya pengguna yang berwenang yang dapat menjalankan perintah istimewa.
Saat menjalankan kontainer yang dipercepat GPU, plugin perangkat mendukung dua mode:
-
Mode penyewaan tunggal: Mode ini mendedikasikan semua sumber daya GPU ke satu wadah pada instance. Instal plugin perangkat dengan dukungan penyewaan tunggal menggunakan perintah berikut. Lihat README.md untuk informasi lebih lanjut.
kubectl apply -f "https://raw.githubusercontent.com/TensorWorks/directx-device-plugins/main/deployments/default-daemonsets.yml"
-
Mode multi-tenancy: Mode ini memungkinkan berbagi sumber daya GPU di antara beberapa kontainer pada instance. Instal plugin perangkat dengan dukungan multi-tenancy menggunakan perintah berikut. Lihat README.md untuk informasi lebih lanjut.
kubectl apply -f "https://raw.githubusercontent.com/TensorWorks/directx-device-plugins/main/deployments/multitenancy-inline.yml"
Atau, gunakan a ConfigMap untuk menentukan multi-tenancy.
kubectl apply -f "https://raw.githubusercontent.com/TensorWorks/directx-device-plugins/main/deployments/multitenancy-configmap.yml"
Memverifikasi penyebaran plugin perangkat
Setelah Anda menerapkan plugin perangkat, ganti <namespace>
dan jalankan perintah berikut untuk memverifikasi DirectX Device Plugin berjalan dengan benar di semua node Windows Anda.
kubectl get ds device-plugin-wddm -n <namespace>
Memverifikasi kontainer siap untuk digunakan
Setelah plugin DaemonSet perangkat berjalan pada node pekerja Windows yang didukung GPU, gunakan perintah berikut untuk memverifikasi bahwa setiap node telah dialokasikan. GPUs Nomor yang sesuai harus sesuai dengan jumlah perangkat DirectX pada setiap node.
kubectl get nodes "-o=custom-columns=NAME:.metadata.name,DirectX:.status.allocatable.directx\.microsoft\.com/display"
Menjalankan wadah Windows dengan akselerasi GPU
Sebelum meluncurkan pod Anda, tentukan nama resource directx.microsoft.com/display
di.spec.containers[].resources
. Ini akan menunjukkan bahwa kontainer Anda memerlukan kemampuan berkemampuan GPU, dan kube-scheduler
akan mencoba menempatkan pod Anda pada node Windows yang telah dikonfigurasi sebelumnya dengan sumber daya GPU yang tersedia.
Sebagai contoh, lihat contoh perintah di bawah ini yang meluncurkan simulasi Job
to run Monte Carlo untuk memperkirakan nilai pi. Contoh ini berasal dari Kubernetes Device Plugins for GitHub DirectX
cat <<EOF | kubectl apply -f -
apiVersion: batch/v1
kind: Job
metadata:
name: example-cuda-montecarlo-wddm
spec:
template:
spec:
containers:
- name: example-cuda-montecarlo-wddm
image: "index.docker.io/tensorworks/example-cuda-montecarlo:0.0.1"
resources:
limits:
directx.microsoft.com/display: 1
nodeSelector:
"kubernetes.io/os": windows
restartPolicy: Never
backoffLimit: 0
EOF
Keterbatasan yang Sudah Diketahui
Semua GPUs bisa digunakan
Semua GPUs pada instance akan dapat digunakan oleh setiap kontainer yang sedang berjalan di host, bahkan ketika Anda meminta jumlah tertentu GPUs untuk wadah tertentu. Selain itu, perilaku default adalah bahwa semua kontainer yang berjalan di host akan menggunakan GPU dengan indeks 0, bahkan jika ada beberapa yang GPUs tersedia di node. Jadi, agar tugas multi-GPU beroperasi dengan benar, Anda harus secara eksplisit menunjuk perangkat GPU tertentu yang akan digunakan dalam kode aplikasi Anda.
Implementasi yang tepat untuk mengalokasikan perangkat yang akan digunakan untuk aplikasi akan tergantung pada bahasa pemrograman atau kerangka kerja yang Anda gunakan. Misalnya, jika Anda menggunakan pemrograman CUDA, untuk memilih GPU tertentu, Anda dapat secara eksplisit menentukan perangkat yang akan digunakan dalam kode aplikasi Anda dengan menggunakan fungsi (). cudaSetDevice
Kebutuhan untuk menentukan perangkat secara eksplisit disebabkan oleh masalah yang diketahui memengaruhi wadah Windows. Anda dapat melacak kemajuan dalam menyelesaikan masalah ini di masalah Microsoft/Windows-Containers
Pertimbangkan skenario di mana ada satu node Windows tipe EC2 instanceg4dn.12xlarge
, yang dilengkapi dengan empat GPUs. Pertimbangkan skenario di mana tiga pod diluncurkan pada instance ini. Tabel menunjukkan bahwa terlepas dari jumlah yang GPUs diminta oleh setiap kontainer, ketiga pod memiliki akses ke keempatnya GPUs pada instance, dan secara default akan menggunakan GPU dengan indeks perangkat 0.
Pod | Diminta GPUs | Akses GPU Aktual | Penggunaan GPU Default | Indeks GPU yang Tersedia | Jumlah Instance GPUs |
---|---|---|---|---|---|
Pod 1 |
1 GPU |
Semua 4 GPUs |
GPU dengan indeks 0 |
0, 1, 2, 3 |
4 |
Pod 2 |
2 GPUs |
Semua 4 GPUs |
GPU dengan indeks 0 |
0, 1, 2, 3 |
4 |
Pod 3 |
1 GPU |
Semua 4 GPUs |
GPU dengan indeks 0 |
0, 1, 2, 3 |
4 |
Dukungan plugin perangkat Kubernetes
Implementasi resmi NVIDIA dari plugin perangkat Kubernetes
Keterbatasan instans komputasi GPU
Bergantung pada konfigurasi AWS akun, Anda mungkin memiliki batasan layanan pada jumlah dan jenis instans komputasi EC2 GPU Amazon yang dapat Anda luncurkan. Jika Anda membutuhkan kapasitas tambahan, Anda dapat Meminta kenaikan kuota.
Harus membangun AMI yang Dioptimalkan GPU Windows
Tidak ada komponen yang dikelola AKS Windows GPU Optimized AMI atau EC2 Image Builder yang disediakan oleh Amazon EKS. Anda harus mengikuti langkah-langkah dalam panduan ini untuk membangun AMI EKS Windows Optimized kustom dengan driver GPU yang diperlukan yang sudah diinstal sebelumnya, atau menginstal driver GPU yang diperlukan pada node pekerja EKS Anda setelah meluncurkan instance Anda.
Inferensia dan Trainium tidak didukung
AWS
Beban kerja berbasis Inferentia