Pilih preferensi cookie Anda

Kami menggunakan cookie penting serta alat serupa yang diperlukan untuk menyediakan situs dan layanan. Kami menggunakan cookie performa untuk mengumpulkan statistik anonim sehingga kami dapat memahami cara pelanggan menggunakan situs dan melakukan perbaikan. Cookie penting tidak dapat dinonaktifkan, tetapi Anda dapat mengklik “Kustom” atau “Tolak” untuk menolak cookie performa.

Jika Anda setuju, AWS dan pihak ketiga yang disetujui juga akan menggunakan cookie untuk menyediakan fitur situs yang berguna, mengingat preferensi Anda, dan menampilkan konten yang relevan, termasuk iklan yang relevan. Untuk menerima atau menolak semua cookie yang tidak penting, klik “Terima” atau “Tolak”. Untuk membuat pilihan yang lebih detail, klik “Kustomisasi”.

Jalankan pelatihan pembelajaran mesin di Amazon EKS dengan Adaptor Kain Elastis

Mode fokus
Jalankan pelatihan pembelajaran mesin di Amazon EKS dengan Adaptor Kain Elastis - Amazon EKS

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.

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.

Topik ini menjelaskan cara mengintegrasikan Elastic Fabric Adapter (EFA) dengan Pod yang di-deploy di cluster Amazon EKS Anda. Elastic Fabric Adapter (EFA) adalah antarmuka jaringan untuk EC2 instans Amazon yang memungkinkan Anda menjalankan aplikasi yang membutuhkan komunikasi antar-simpul tingkat tinggi dalam skala besar. AWS Ini merupakan sistem operasi antarmuka bypass hardware yang meningkatkan performa komunikasi antar-instans, yang sangat penting untuk skala aplikasi ini. Dengan EFA, aplikasi High Performance Computing (HPC) yang menggunakan aplikasi Message Passing Interface (MPI) dan Machine Learning (ML) menggunakan NVIDIA Collective Communications Library (NCCL) dapat menskalakan hingga ribuan atau. CPUs GPUs 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.

Jenis instans dengan EFA

Plugin Perangkat AWS Kubernetes EFA mendukung semua jenis EC2 instans Amazon yang memiliki EFA. Untuk melihat daftar semua jenis instans yang memiliki EFA, lihat Jenis instans yang didukung di Panduan EC2 Pengguna Amazon. Namun, untuk menjalankan aplikasi ML dengan cepat, kami merekomendasikan bahwa sebuah instance memiliki chip akselerasi perangkat keras seperti NVidia GPUs, chip AWS Inferentia, atau chip AWS Trainium, selain EFA. Untuk melihat daftar jenis instans yang memiliki chip akselerasi perangkat keras dan EFA, lihat Komputasi yang dipercepat di Panduan EC2 Pengguna Amazon.

Saat Anda membandingkan jenis instance untuk dipilih di antara mereka, pertimbangkan jumlah kartu jaringan EFA yang tersedia untuk jenis instance tersebut serta jumlah kartu akselerator, jumlah CPU, dan jumlah memori. Anda dapat menetapkan hingga satu EFA per kartu jaringan. EFA dihitung sebagai antarmuka jaringan.. Untuk melihat berapa banyak EFA yang tersedia untuk setiap jenis instans yang memiliki EFA, lihat daftar Kartu jaringan di EC2 Panduan Pengguna Amazon.

Antarmuka khusus EFA dan EFA

Elastic Fabric Adapter (EFA) adalah antarmuka jaringan yang menggabungkan kemampuan Elastic Network Adapter (ENA) dan antarmuka OS-bypass, didukung oleh protokol AWS Scalable Reliable Datagram (SRD). Fungsionalitas EFA memungkinkan aplikasi untuk berkomunikasi langsung dengan perangkat keras untuk transportasi latensi rendah. Anda dapat memilih untuk mengakses hanya kemampuan EFA menggunakan antarmuka khusus EFA, membatasi komunikasi ke antarmuka dalam Availability Zone yang sama.

Untuk membuat node yang dapat memiliki antarmuka khusus EFA, Anda harus menggunakan Template EC2 Peluncuran kustom dan mengaturnya ke. InterfaceType efa-only Di Template Peluncuran kustom Anda, Anda tidak dapat mengatur kartu jaringan 0 ke antarmuka khusus EFA, karena itu adalah kartu jaringan utama dan antarmuka jaringan instance. EC2 Anda harus memiliki versi VPC CNI 1.18.5 atau yang lebih baru untuk antarmuka khusus EFA. Jika Anda menggunakan Amazon Linux 2, versi ami harus v20240928 atau lebih baru untuk antarmuka khusus EFA.

Prosedur berikut memandu Anda untuk membuat cluster EKS eksctl dengan node yang memiliki antarmuka NVidia GPUs dan EFA. Anda tidak dapat menggunakan eksctl untuk membuat node dan grup node yang menggunakan antarmuka khusus EFA.

Prasyarat

  • Sebuah klaster Amazon EKS yang sudah ada. Jika Anda tidak memiliki cluster yang ada, buat satu menggunakanMemulai dengan Amazon EKS.. 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, juga eksctl dapat membuat cluster untuk Anda.

  • Versi 2.12.3 atau yang lebih baru atau versi 1.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, gunakanaws --version | cut -d / -f2 | cut -d ' ' -f1. Package manager seperti yumapt-get,, atau Homebrew untuk macOS seringkali merupakan beberapa versi di belakang versi terbaru CLI. AWS Untuk menginstal versi terbaru, lihat Menginstal dan Konfigurasi cepat dengan aws configure di Panduan Pengguna Antarmuka Baris AWS Perintah. Versi AWS CLI yang diinstal AWS CloudShell mungkin juga beberapa versi di belakang versi terbaru. Untuk memperbaruinya, lihat Menginstal AWS CLI ke direktori home Anda di AWS CloudShell Panduan Pengguna.

  • Alat baris kubectl perintah diinstal pada perangkat Anda atau AWS CloudShell. Versinya bisa sama dengan atau hingga satu versi minor lebih awal atau lebih lambat dari versi Kubernetes dari klaster Anda. Misalnya, jika versi cluster Anda1.29, Anda dapat menggunakan kubectl versi1.28,1.29, atau 1.30 dengan itu. Untuk menginstal atau memutakhirkan kubectl, lihat Mengatur kubectl dan eksctl.

  • Anda harus memiliki plugin Amazon VPC CNI untuk versi Kubernetes 1.7.10 atau yang lebih baru diinstal sebelum meluncurkan node pekerja yang mendukung beberapa Adaptor Kain Elastis, seperti atau. p4d p5 Untuk informasi selengkapnya tentang memperbarui plugin Amazon VPC CNI untuk versi Kubernetes, lihat. Tetapkan IPs ke Pod dengan Amazon VPC CNI

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 dalam dokumentasi Kubernetes. EC2 Instans Amazon dengan driver EFA yang diinstal sebelumnya mengalokasikan 5128 2MiB Halaman Besar, yang dapat Anda minta sebagai sumber daya untuk digunakan dalam spesifikasi pekerjaan Anda.

Buat grup simpul

Prosedur berikut membantu Anda membuat grup node dengan grup node yang p4d.24xlarge didukung dengan antarmuka EFA dan GPUDirect RDMA, dan menjalankan contoh pengujian NVIDIA Collective Communications Library (NCCL) untuk menggunakan Kinerja NCCL multi-node. EFAs Contoh ini dapat digunakan template untuk pelatihan pembelajaran mendalam terdistribusi di Amazon EKS menggunakan EFAs.

  1. Tentukan jenis EC2 instans Amazon yang mendukung EFA yang tersedia di AWS Wilayah tempat Anda ingin menerapkan node. Ganti region-code dengan AWS Region tempat Anda ingin menyebarkan grup node Anda.

    aws ec2 describe-instance-types --region region-code \ --filters Name=network-info.efa-supported,Values=true \ --query "InstanceTypes[*].[InstanceType]" --output text

    Saat Anda menerapkan node, jenis instance yang ingin Anda terapkan harus tersedia di AWS Wilayah tempat klaster Anda berada.

  2. Tentukan Availability Zone tempat tipe instans yang ingin Anda gunakan tersedia. Dalam tutorial ini, jenis p5.48xlarge instance digunakan dan harus dikembalikan dalam output untuk AWS Wilayah yang Anda tentukan pada langkah sebelumnya. Saat Anda menerapkan node di cluster produksi, ganti p5.48xlarge dengan jenis instance apa pun yang dikembalikan pada langkah sebelumnya.

    aws ec2 describe-instance-type-offerings --region region-code \ --location-type availability-zone --filters Name=instance-type,Values=p4d.24xlarge,p5.48xlarge \ --query 'InstanceTypeOfferings[*].Location' --output text

    Contoh 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.

  3. Buat grup simpul menggunakaneksctl. Anda memerlukan versi 0.204.0 atau yang lebih baru dari alat baris eksctl perintah yang diinstal pada perangkat Anda atau AWS CloudShell. Untuk menginstal atau memperbaruieksctl, lihat Instalasi dalam eksctl dokumentasi.

    1. Salin isi berikut ke file bernama efa-cluster.yaml. Ganti example values dengan milik Anda sendiri. Anda dapat mengganti p5.48xlarge dengan instance yang berbeda, tetapi jika Anda melakukannya, pastikan bahwa nilai untuk availabilityZones adalah Availability Zones yang dikembalikan untuk jenis instance di langkah 1.

      apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: my-efa-cluster region: region-code version: "1.XX" iam: withOIDC: true availabilityZones: ["us-west-2a", "us-west-2c"] managedNodeGroups: - name: my-efa-ng instanceType: p5.48xlarge minSize: 1 desiredCapacity: 2 maxSize: 3 availabilityZones: ["us-west-2a"] volumeSize: 300 privateNetworking: true efaEnabled: true
    2. Membuat grup simpul yang dikelola dalam klaster yang sudah ada.

      eksctl create nodegroup -f efa-cluster.yaml

      Jika Anda tidak memiliki cluster yang ada, Anda dapat menjalankan perintah berikut untuk membuat cluster dan grup node.

      eksctl create cluster -f efa-cluster.yaml
      catatan

      Karena tipe instance yang digunakan dalam contoh ini memiliki GPUs, eksctl secara otomatis menginstal plugin perangkat NVIDIA Kubernetes pada setiap instance untuk Anda.

  4. Men-deploy plugin perangkat EFA Kubernetes.

    Plugin perangkat EFA Kubernetes mendeteksi serta mengiklankan antarmuka EFA sebagai sumber daya yang dapat dialokasikan ke Kubernetes. Sebuah aplikasi dapat menggunakan jenis sumber daya yang diperluas vpc.amazonaws.com/efa dalam spesifikasi permintaan Pod seperti CPU dan memori. Untuk informasi selengkapnya, lihat Mengkonsumsi sumber daya tambahan dalam dokumentasi Kubernetes. Setelah diminta, plugin secara otomatis menetapkan dan memasang antarmuka EFA ke Pod. Menggunakan plugin perangkat menyederhanakan pengaturan EFA dan tidak memerlukan Pod untuk berjalan dalam mode istimewa.

    helm repo add eks https://aws.github.io/eks-charts helm install aws-efa-k8s-device-plugin --namespace kube-system eks/aws-efa-k8s-device-plugin

(Opsional) Uji kinerja EFA

Kami menyarankan Anda menguji pengaturan EFA. Anda dapat menggunakan Tes NCCL di aws-samples/awsome-distributed-training repositori pada. GitHub Tes NCCL mengevaluasi kinerja jaringan menggunakan Perpustakaan Komunikasi Kolektif Nvidia. Langkah-langkah berikut mengirimkan tes NCCL di Amazon EKS.

  1. Menerapkan Operator 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 di GitHub.

  2. Jalankan Uji Kinerja NCCL multi-node untuk memverifikasi RDMA/EFA: GPUDirect

    Untuk memverifikasi kinerja NCCL dengan GPUDirect RDMA melalui EFA, jalankan uji Kinerja NCCL standar. Untuk informasi lebih lanjut, lihat repo NCCL-Tests resmi di. GitHub

    Selesaikan langkah-langkah berikut ini untuk menjalankan dua simpul uji kinerja NCCL. Dalam contoh pekerjaan pengujian NCCL, setiap pekerja meminta delapan, 5210Mi GPUs, empathugepages-2Mi, dan 8000Mi memori EFAs, yang secara efektif berarti setiap pekerja mengkonsumsi semua sumber daya dari sebuah instance. p5.48xlarge

    1. Buat MPIJob manifes:

      Salin berikut ini ke file bernamanccl-tests.yaml:

      apiVersion: kubeflow.org/v2beta1 kind: MPIJob metadata: name: nccl-tests spec: runPolicy: cleanPodPolicy: Running backoffLimit: 20 slotsPerWorker: 8 mpiReplicaSpecs: Launcher: replicas: 1 template: spec: restartPolicy: OnFailure containers: - image: public.ecr.aws/hpc-cloud/nccl-tests:latest imagePullPolicy: IfNotPresent name: test-nccl-launcher env: - name: PATH value: $PATH:/opt/amazon/efa/bin:/usr/bin - name: LD_LIBRARY_PATH value: /opt/amazon/openmpi/lib:/opt/nccl/build/lib:/opt/amazon/efa/lib:/opt/aws-ofi-nccl/install/lib:/usr/local/nvidia/lib:$LD_LIBRARY_PATH - name: NCCL_DEBUG value: INFO - name: NCCL_BUFFSIZE value: '8388608' - name: NCCL_P2P_NET_CHUNKSIZE value: '524288' - name: NCCL_TUNER_PLUGIN value: /opt/aws-ofi-nccl/install/lib/libnccl-ofi-tuner.so command: - /opt/amazon/openmpi/bin/mpirun - --allow-run-as-root - --tag-output - -np - "16" - -N - "8" - --bind-to - none - -x - PATH - -x - LD_LIBRARY_PATH - -x - NCCL_DEBUG=INFO - -x - NCCL_BUFFSIZE - -x - NCCL_P2P_NET_CHUNKSIZE - -x - NCCL_TUNER_PLUGIN - --mca - pml - ^cm,ucx - --mca - btl - tcp,self - --mca - btl_tcp_if_exclude - lo,docker0,veth_def_agent - /opt/nccl-tests/build/all_reduce_perf - -b - "8" - -e - "16G" - -f - "2" - -g - "1" - -c - "1" - -n - "100" Worker: replicas: 2 template: spec: nodeSelector: node.kubernetes.io/instance-type: "p5.48xlarge" containers: - image: public.ecr.aws/hpc-cloud/nccl-tests:latest imagePullPolicy: IfNotPresent name: nccl-tests-worker volumeMounts: - name: shmem mountPath: /dev/shm resources: limits: nvidia.com/gpu: 8 hugepages-2Mi: 5120Mi vpc.amazonaws.com/efa: 32 memory: 32000Mi requests: nvidia.com/gpu: 8 hugepages-2Mi: 5120Mi vpc.amazonaws.com/efa: 32 memory: 32000Mi volumes: - name: shmem hostPath: path: /dev/shm
    2. Terapkan MPIJob NCCL-Tests:

      Kirim MPIJob dengan menerapkan manifes. Ini akan membuat dua EC2 contoh p5.48xlarge Amazon.

      kubectl apply -f nccl-tests.yaml

      Contoh output adalah sebagai berikut.

      mpijob.kubeflow.org/nccl-tests created
    3. Verifikasi bahwa pekerjaan memulai pod:

      Lihat Pod yang sedang berjalan.

      kubectl get pods

      Contoh output adalah sebagai berikut.

      NAME READY STATUS RESTARTS AGE nccl-tests-launcher-nbql9 0/1 Init:0/1 0 2m49s nccl-tests-worker-0 1/1 Running 0 2m49s nccl-tests-worker-1 1/1 Running 0 2m49s

      Operator MPI membuat Pod peluncur dan 2 Pod pekerja (satu di setiap node).

    4. Verifikasi bahwa pekerjaan berjalan dengan sukses dengan log:

      Lihat log untuk nccl-tests-launcher Pod. Ganti nbql9 dengan nilai dari output Anda.

      kubectl logs -f nccl-tests-launcher-nbql9

Jika tes berhasil diselesaikan, Anda dapat menyebarkan aplikasi Anda yang menggunakan Perpustakaan Komunikasi Kolektif Nvidia.

PrivasiSyarat situsPreferensi cookie
© 2025, Amazon Web Services, Inc. atau afiliasinya. Semua hak dilindungi undang-undang.