View a markdown version of this page

Jalan GPU-accelerated kan wadah (Windows pada EC2 G-Series) - 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.

Jalan GPU-accelerated kan wadah (Windows pada EC2 G-Series)

penting

Plugin Perangkat Kubernetes untuk DirectX by TensorWorks adalah alat pihak ketiga yang tidak didukung, didukung, atau dikelola oleh. AWS AWS tidak bertanggung jawab atas keamanan, keandalan, atau kinerja plugin ini.

Pelajari cara menjalankan beban kerja kontainer GPU-accelerated Windows di Amazon EKS (Layanan Kubernetes Elastic) menggunakan GPU NVIDIA dengan Plugin Perangkat Kubernetes untuk DirectX by. TensorWorks Untuk informasi selengkapnya, lihat Plugin Perangkat Kubernetes untuk DirectX.

Ada dua pendekatan utama GPU-acceleration untuk menyiapkan wadah Windows Anda:

  • Opsi 1: Buat EKS Windows Optimized AMI khusus dengan driver GPU yang diperlukan pra-instal.

    • Gunakan pendekatan ini ketika Anda memerlukan lingkungan yang konsisten dan pra-konfigurasi yang siap menjalankan wadah GPU-accelerated Windows, dan Anda dapat menginvestasikan upaya tambahan untuk membangun dan memelihara AMI khusus.

  • Opsi 2: Instal driver GPU yang diperlukan pada node pekerja EKS Anda setelah meluncurkan instance Anda.

    • Gunakan pendekatan ini ketika Anda menginginkan proses penyiapan yang lebih sederhana dan tidak keberatan menginstal driver GPU pada setiap node pekerja baru. Lebih cocok untuk lingkungan pengembangan saat Anda mengevaluasi atau membuat prototipe beban GPU-accelerated kerja.

Kedua pendekatan dapat dimanfaatkan menggunakan langkah-langkah yang dirinci dalam panduan ini.

Pertimbangan-pertimbangan

Panduan ini memberikan langkah-langkah untuk menginstal dan mengatur wadah Windows Anda menggunakan GPU NVIDIA, driver NVIDIA GRID, dan Plugin Perangkat Kubernetes GPU-acceleration untuk DirectX by. TensorWorks Langkah-langkah telah diuji dan diverifikasi GPU-acceleration untuk menyediakan beban kerja kontainer Windows Anda di Amazon EKS. Lihat Keterbatasan yang Sudah Diketahui untuk informasi selengkapnya tentang driver yang kompatibel dan plugin perangkat. Sebelum melanjutkan, perhatikan hal berikut:

  • Hanya jenis G-family instans dengan driver NVIDIA GRID yang telah diuji dan diverifikasi untuk bekerja dengan panduan ini. Meskipun jenis instance lain dan kombinasi driver mungkin juga mampu menjalankan wadah GPU-accelerated Windows, mereka mungkin memerlukan langkah-langkah konfigurasi tambahan yang tidak tercakup dalam panduan ini.

  • Hanya DirectX-based beban kerja yang telah diuji dan diverifikasi untuk bekerja dengan panduan ini. Sementara API GPU lain seperti OpenGL, Vulkan, dan OpenCL mungkin berpotensi kompatibel untuk menjalankan wadah GPU-accelerated Windows, mereka mungkin memerlukan langkah-langkah konfigurasi tambahan yang tidak tercakup dalam panduan ini.

  • Ada beberapa batasan yang diketahui yang harus diperhatikan sebelum menjalankan wadah GPU-accelerated Windows. Silakan lihat Keterbatasan yang Sudah Diketahui bagian untuk informasi lebih lanjut.

Prasyarat

Untuk mengaktifkan akselerasi GPU untuk wadah 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 G-family tipe instance, seperti G4 atau G 5.

  • Menyediakan node Windows dengan runtime kontainer dengan containerd atau1.7.x. 2.x.x (Lihat Ambil informasi versi Windows AMI untuk memverifikasi versi containerd di AMI yang dioptimalkan Amazon EKS Anda.)

Instal driver GPU pada setiap node Windows

Untuk menginstal driver NVIDIA GRID pada node pekerja EKS Anda, ikuti langkah-langkah yang diuraikan dalam driver NVIDIA untuk instans Amazon EC2 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 GPU pada instance:

nvidia-smi

Perintah ini menampilkan versi driver NVIDIA, serta informasi tentang perangkat keras GPU. Pastikan output dari perintah ini cocok dengan versi driver NVIDIA GRID yang Anda harapkan akan diinstal.

Terapkan plugin perangkat GPU di setiap node

Untuk mengaktifkan penemuan dan paparan sumber daya GPU ke wadah di node Windows Anda, Anda memerlukan plugin perangkat. Terapkan Plugin Perangkat DirectX oleh Tensorworks pada setiap node pekerja dengan menjalankannya sebagai cluster DaemonSet EKS Anda. Ikuti panduan instalasi yang ditentukan dalam README.md, yang akan memerlukan langkah-langkah berikut. Disarankan untuk:

  • 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 ditingkatkan. Disarankan untuk menerapkan kontrol RBAC untuk membatasi akses ke ini DaemonSet sehingga hanya pengguna yang berwenang yang dapat menjalankan perintah istimewa.

Saat menjalankan GPU-accelerated wadah, plugin perangkat mendukung dua mode:

  • Single-tenancy mode: Mode ini mendedikasikan semua sumber daya GPU ke satu wadah pada instance. Instal plugin perangkat dengan dukungan sewa 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"
  • Multi-tenancy mode: Mode ini memungkinkan berbagi sumber daya GPU di antara beberapa wadah 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 Plugin Perangkat DirectX berjalan dengan benar di semua node Windows Anda.

kubectl get ds device-plugin-wddm -n <namespace>

Memverifikasi wadah siap untuk digunakan

Setelah plugin DaemonSet perangkat berjalan pada node pekerja GPU-powered Windows, gunakan perintah berikut untuk memverifikasi bahwa setiap node memiliki GPU yang dapat dialokasikan. 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 GPU-acceleration

Sebelum meluncurkan pod Anda, tentukan nama sumber daya directx.microsoft.com/display di.spec.containers[].resources. Ini akan menunjukkan bahwa kontainer Anda memerlukan GPU-enabled kemampuan, dan kube-scheduler akan mencoba menempatkan pod Anda pada node Windows yang telah dikonfigurasi sebelumnya dengan sumber daya GPU yang tersedia.

Sebagai contoh, lihat perintah sampel di bawah ini yang meluncurkan simulasi Job untuk menjalankan Monte Carlo untuk memperkirakan nilai pi. Contoh ini berasal dari Kubernetes Device Plugins untuk GitHub repositori DirectX, yang memiliki beberapa contoh untuk dipilih yang dapat Anda jalankan untuk menguji kemampuan GPU node Windows Anda.

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 GPU dapat digunakan

Semua GPU pada instance akan dapat digunakan oleh setiap wadah yang berjalan di host, bahkan ketika Anda meminta sejumlah GPU tertentu untuk wadah tertentu. Selain itu, perilaku default adalah bahwa semua wadah yang berjalan di host akan menggunakan GPU dengan indeks 0, bahkan jika ada beberapa GPU yang tersedia di node. Jadi, agar tugas multi-GPU beroperasi dengan benar, Anda harus secara eksplisit menetapkan perangkat GPU tertentu yang akan digunakan dalam kode aplikasi Anda.

Implementasi yang tepat untuk mengalokasikan perangkat untuk 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 cuda SetDevice ().

Kebutuhan untuk secara eksplisit menentukan perangkat adalah karena masalah yang diketahui mempengaruhi wadah Windows. Anda dapat melacak kemajuan penyelesaian masalah ini di masalah microsoft/Windows -Containers #333. Tabel berikut mewakili representasi visual dan contoh praktis dari perilaku alokasi GPU ini.

Pertimbangkan skenario di mana ada satu node Windows tipe instance EC2g4dn.12xlarge, yang dilengkapi dengan empat GPU. Pertimbangkan skenario di mana tiga pod diluncurkan pada instance ini. Tabel menunjukkan bahwa terlepas dari jumlah GPU yang diminta oleh setiap wadah, ketiga pod memiliki akses ke keempat GPU pada instance, dan secara default akan menggunakan GPU dengan indeks perangkat 0.

Pod GPU yang diminta Akses GPU Aktual Penggunaan GPU Default Indeks GPU yang Tersedia Total GPU Instans

Pod 1

1 GPU

Semua 4 GPU

GPU dengan indeks 0

0, 1, 2, 3

4

Pod 2

2 GPU

Semua 4 GPU

GPU dengan indeks 0

0, 1, 2, 3

4

Pod 3

1 GPU

Semua 4 GPU

GPU dengan indeks 0

0, 1, 2, 3

4

Dukungan plugin perangkat Kubernetes

Implementasi resmi NVIDIA dari plugin perangkat Kubernetes tidak mendukung Windows. Anda dapat melacak kemajuan dalam menambahkan dukungan Windows resmi di NVIDIA/k8s-device-plugin masalah #419.

Batasan instans komputasi GPU

Bergantung pada konfigurasi AWS akun Anda, Anda mungkin memiliki batasan layanan pada jumlah dan jenis instans komputasi GPU Amazon EC2 yang dapat Anda luncurkan. Jika Anda membutuhkan kapasitas tambahan, Anda dapat Mem inta kenaikan kuota.

Harus membangun AMI yang Dioptimalkan GPU Windows

Tidak ada komponen yang dikelola EKS Windows GPU Optimized AMI atau EC2 Image Builder yang disediakan oleh Amazon EKS. Anda harus mengikuti langkah-langkah dalam panduan ini untuk membangun EKS Windows Optimized AMI khusus dengan driver GPU yang diperlukan pra-instal, atau menginstal driver GPU yang diperlukan pada node pekerja EKS Anda setelah meluncurkan instans Anda.

Inferentia dan Trainium tidak didukung

AWS Beban kerja berbasis Inferentia dan AWS Trainium tidak didukung di Windows.