Bantu tingkatkan halaman ini
Ingin berkontribusi pada panduan pengguna ini? Gulir ke bagian bawah halaman ini dan pilih Edit halaman ini GitHub. Kontribusi Anda akan membantu membuat panduan pengguna kami lebih baik untuk semua orang.
Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Pelatihan machine learning menggunakan Elastic Fabric Adapter
Topik ini menjelaskan cara mengintegrasikan Elastic Fabric Adapter (EFA) dengan Pods dikerahkan di cluster Amazon EKS Anda. Elastic Fabric Adapter (EFA) adalah antarmuka jaringan untuk instans Amazon EC2 yang dapat Anda aktifkan untuk menjalankan aplikasi yang membutuhkan komunikasi antar-simpul tingkat tinggi dalam hitungan skala pada AWS. Ini merupakan sistem operasi antarmuka bypass hardware yang meningkatkan performa komunikasi antar-instans, yang sangat penting untuk skala aplikasi ini. Dengan EFA, aplikasi Komputasi Performa Tinggi (HPC) yang menggunakan aplikasi Message Passing Interface (MPI) dan Machine Learning (ML) yang juga menggunakan NVIDIA Collective Communications Library (NCCL) yang dapat menskalakan ke ribuan CPU atau GPU. Hasilnya, Anda mendapatkan kinerja aplikasi klaster HPC lokal dengan elastisitas dan fleksibilitas cloud sesuai permintaan. AWS Mengintegrasikan EFA dengan aplikasi yang berjalan di klaster Amazon EKS dapat mengurangi waktu untuk menyelesaikan beban kerja pelatihan yang terdistribusi pada skala besar tanpa harus menambahkan instans tambahan terhadap klaster Anda. Untuk informasi selengkapnya, lihat Elastic Fabric Adaptor
Plugin EFA yang dijelaskan dalam topik ini sepenuhnya mendukung instans P4d
Amazon EC2, yang mewakili awal mula perkembangan yang terdistribusi saat ini pada machine learning di cloud. Setiap instans p4d.24xlarge
memiliki delapan GPU NVIDIA A100, dan 400 Gbps GPUDirectRDMA diatas EFA. GPUDirectRDMA memungkinkan Anda untuk dapat berkomunikasi secara langsung melalui GPU-ke-GPU pada seluruh simpul dengan bypass CPU, meningkatkan komunikasi bandwidth kolektif dan menurunkan latensi. Amazon EKS dan EFA terintegrasi dengan instans P4d
yang menyediakan metode mulus untuk mengambil keuntungan dari kinerja tertinggi dari komputasi instans Amazon EC2 untuk pelatihan machine learning yang terdistribusi.
Prasyarat
-
Sebuah klaster Amazon EKS yang sudah ada. Jika Anda belum memiliki klaster yang belum ada, gunakan salah satu panduan Memulai dengan Amazon EKS kami untuk membuatnya. Klaster Anda harus men-deploy pada VPC yang memiliki setidaknya satu subnet privat dengan memiliki cukup alamat IP yang tersedia untuk men-deploy pada simpul. Subnet privat harus memiliki akses internet luar yang disediakan oleh perangkat eksternal, seperti gateway NAT.
Jika Anda berencana untuk menggunakan
eksctl
untuk membuat grup node Anda, jugaeksctl
dapat membuat cluster untuk Anda. -
Versi
2.12.3
atau yang lebih baru atau versi1.27.160
atau yang lebih baru dari AWS Command Line Interface (AWS CLI) diinstal dan dikonfigurasi pada perangkat Anda atau AWS CloudShell. Untuk memeriksa versi Anda saat ini, gunakan
. Package manager sepertiaws --version | cut -d / -f2 | cut -d ' ' -f1
yum
apt-get
,, atau Homebrew untuk macOS sering beberapa versi di belakang versi terbaru dari file AWS CLI. Untuk menginstal versi terbaru, lihat Menginstal, memperbarui, dan menghapus konfigurasi AWS CLI dan Cepat dengan aws configure di Panduan AWS Command Line Interface Pengguna. AWS CLI Versi yang diinstal AWS CloudShell mungkin juga beberapa versi di belakang versi terbaru. Untuk memperbaruinya, lihat Menginstal AWS CLI ke direktori home Anda di Panduan AWS CloudShell Pengguna. -
Alat baris
kubectl
perintah diinstal pada perangkat Anda atau AWS CloudShell. Versi dapat sama dengan atau hingga satu versi minor lebih awal atau lebih lambat dari Kubernetes versi cluster Anda. Misalnya, jika versi cluster Anda1.29
, Anda dapat menggunakankubectl
versi1.28
,1.29
, atau1.30
dengan itu. Untuk menginstal atau memutakhirkankubectl
, lihat Menginstal atau memperbarui kubectl. -
Anda harus memiliki Amazon VPC CNI plugin for Kubernetes versi
1.7.10
atau yang lebih baru diinstal sebelum meluncurkan node pekerja yang mendukung beberapa Adaptor Kain Elastis, sepertip4d.24xlarge
. Untuk informasi selengkapnya tentang memperbarui Amazon VPC CNI plugin for Kubernetes versi Anda, lihatBekerja dengan add-on Amazon VPC CNI plugin for Kubernetes Amazon EKS.
Buat grup simpul
Prosedur berikut ini membantu Anda menciptakan grup simpul dengan grup simpul didukung p4d.24xlarge
dengan antarmuka EFA dan RDMA GPUDirect, dan menjalankan contoh tes NVIDIA Collective Communications Library (NCCL) untuk Performa NCCL multi-simpul menggunakan EFA. Contohnya dapat menggunakan templat untuk didistribusikan pada pelatihan deep learning di Amazon EKS dengan menggunakan EFA.
-
Tentukan jenis instans Amazon EC2 yang mendukung EFA yang tersedia di tempat Wilayah AWS Anda ingin menerapkan node. Ganti
dengan Wilayah AWS yang Anda inginkan untuk menyebarkan grup node Anda.region-code
aws ec2 describe-instance-types --region
region-code
--filters Name=network-info.efa-supported,Values=true \ --query "InstanceTypes[*].[InstanceType]" --output textSaat Anda menerapkan node, jenis instance yang ingin Anda terapkan harus tersedia di tempat klaster Anda berada. Wilayah AWS
-
Tentukan Availability Zone tempat tipe instans yang ingin Anda gunakan tersedia. Dalam tutorial ini, jenis
p4d.24xlarge
instance digunakan dan harus dikembalikan dalam output untuk Wilayah AWS yang Anda tentukan pada langkah sebelumnya. Saat Anda menerapkan node di cluster produksi, ganti
dengan jenis instance apa pun yang dikembalikan pada langkah sebelumnya.p4d.24xlarge
aws ec2 describe-instance-type-offerings --region
region-code
--location-type availability-zone --filters Name=instance-type,Values=p4d.24xlarge
\ --query 'InstanceTypeOfferings[*].Location' --output textContoh output adalah sebagai berikut.
us-west-2a
us-west-2c
us-west-2b
Perhatikan Availability Zones yang dikembalikan untuk digunakan di langkah selanjutnya. Saat Anda menyebarkan node ke cluster, VPC Anda harus memiliki subnet dengan alamat IP yang tersedia di salah satu Availability Zone yang dikembalikan dalam output.
-
Buat grup node menggunakan salah satu
eksctl
atau AWS CLI dan AWS CloudFormation. -
Men-deploy plugin perangkat EFA Kubernetes.
Plugin perangkat EFA Kubernetes mendeteksi serta mengiklankan antarmuka EFA sebagai sumber daya yang dapat dialokasikan ke Kubernetes. Aplikasi dapat menggunakan jenis sumber daya yang diperluas
vpc.amazonaws.com/efa
dalam spesifikasi Pod permintaan seperti CPU dan memori. Untuk informasi selengkapnya, lihat Mengkonsumsi sumber daya yang diperluasdalam Kubernetes dokumentasi. Setelah diminta, plugin secara otomatis menetapkan dan memasang antarmuka EFA ke file. Pod Menggunakan plugin perangkat menyederhanakan pengaturan EFA dan tidak memerlukan a Pod untuk berjalan dalam mode istimewa. helm repo add eks https://aws.github.io/eks-chart helm install aws-efa-k8s-device-plugin --namespace kube-system eks/aws-efa-k8s-device-plugin
(Opsional) mend-deploy sebuah sampel aplikasi yang kompatibel dengan EFA
Men-deploy Operasi MPI Kubeflow
Untuk tes NCCL Anda dapat menerapkan Operasi Kubeflow MPI. Operasi MPI mempermudah untuk menjalankan pelatihan terdistribusi tipe-Allreduce di Kubernetes. Untuk informasi lebih lanjut, lihat Operator MPI
kubectl apply -f https://raw.githubusercontent.com/kubeflow/mpi-operator/master/deploy/v2beta1/mpi-operator.yaml
Menjalankan multi-simpul uji performa NCCL untuk memverifikasi GPUDirectrDMA/EFA
Untuk memverifikasi Performa NCCL dengan GPUDirectRDMA melalui EFA, jalankan uji standar Performa NCCL. Untuk informasi lebih lanjut, lihat repo NCCL-Tests11.2
dan versi terbaru EFA.
Sebagai alternatif, Anda dapat mengunduh AWS Docker gambar yang tersedia dari repo Amazon ECR
penting
Sebuah pertimbangan penting yang diperlukan untuk mengadopsi EFA dengan Kubernetes untuk mengkonfigurasi dan mengelola Huge Pages sebagai sumber daya dalam klaster. Untuk informasi selengkapnya, lihat Mengelola Halaman Besar
Selesaikan langkah-langkah berikut ini untuk menjalankan dua simpul uji kinerja NCCL. Pada contoh tes tugas NCCL, setiap pekerja meminta delapan GPU, 5210Mi dari hugepages-2Mi, empat EFA, dan memori sebesar 8000Mi, yang berarti secara efektif setiap pekerja mengkonsumsi semua sumber daya dari instans p4d.24xlarge
.
-
Buat tugas NCCL-test.
kubectl apply -f https://raw.githubusercontent.com/aws-samples/aws-efa-eks/main/examples/simple/nccl-efa-tests.yaml
Contoh output adalah sebagai berikut.
nccl-tests-efa mpijob.kubeflow.org/ dibuat
-
Lihat lari AndaPods.
kubectl get pods
Contoh output adalah sebagai berikut.
NAME READY STATUS RESTARTS AGE nccl-tests-efa-launcher-
nbql9
0/1 Init:0/1 0 2m49s nccl-tests-efa-worker-0 1/1 Running 0 2m49s nccl-tests-efa-worker-1 1/1 Running 0 2m49sOperator MPI membuat peluncur Pod dan 2 pekerja Pods (satu di setiap node).
-
Lihat log untuk
efa-launcher
Pod. Ganti
dengan nilai dari output Anda.wzr8j
kubectl logs -f nccl-tests-efa-launcher-
nbql9
Untuk contoh lainnya, lihat repositori sampel Amazon EKS EFA