Memulai EFA dan NCCL untuk beban kerja ML di Amazon EC2 - Amazon Elastic Compute Cloud

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Memulai EFA dan NCCL untuk beban kerja ML di Amazon EC2

NVIDIACollective Communications Library (NCCL) adalah perpustakaan rutinitas komunikasi kolektif standar untuk beberapa GPUs di satu node atau beberapa node. NCCLdapat digunakan bersama denganEFA, Libfabric, dan MPI untuk mendukung berbagai beban kerja pembelajaran mesin. Untuk informasi lebih lanjut, lihat situs NCCLweb.

Langkah-langkah berikut membantu Anda memulai EFA dan NCCL menggunakan basis AMI untuk salah satu sistem operasi yang didukung.

catatan
  • Hanya tipe instans p3dn.24xlarge, p4d.24xlarge, p5.48xlarge yang didukung.

  • Hanya basis Amazon Linux 2 dan Ubuntu 20.04/22.04 yang didukung. AMIs

  • Hanya NCCL 2.4.2 dan yang lebih baru didukung denganEFA.

  • Untuk informasi selengkapnya tentang menjalankan beban kerja pembelajaran mesin dengan EFA dan NCCL menggunakan AWS Deep Learning AMIs, lihat Menggunakan EFA DLAMI di Panduan AWS Deep Learning AMIs Pengembang.

Langkah 1: Siapkan grup keamanan EFA yang diaktifkan

An EFA membutuhkan grup keamanan yang memungkinkan semua lalu lintas masuk dan keluar ke dan dari grup keamanan itu sendiri. Prosedur berikut membuat grup keamanan yang memungkinkan semua lalu lintas masuk dan keluar ke dan dari dirinya sendiri, dan yang memungkinkan lalu SSH lintas masuk dari IPv4 alamat apa pun untuk konektivitas. SSH

penting

Grup keamanan ini ditujukan untuk tujuan pengujian saja. Untuk lingkungan produksi Anda, kami sarankan Anda membuat SSH aturan masuk yang memungkinkan lalu lintas hanya dari alamat IP tempat Anda terhubung, seperti alamat IP komputer Anda, atau berbagai alamat IP di jaringan lokal Anda.

Untuk skenario lainnya, lihat Aturan-aturan grup keamanan untuk kasus penggunaan yang berbeda.

Untuk membuat grup keamanan EFA yang diaktifkan
  1. Buka EC2 konsol Amazon di https://console.aws.amazon.com/ec2/.

  2. Dalam panel navigasi, pilih Grup Keamanan, lalu pilih Buat grup keamanan.

  3. Di jendela Buat Grup Keamanan, lakukan hal berikut:

    1. Untuk Nama grup keamanan, masukkan nama deskriptif untuk grup keamanan, seperti EFA-enabled security group.

    2. (Opsional) Untuk Deskripsi, masukkan deskripsi singkat grup keamanan.

    3. Untuk VPC, pilih tempat Anda ingin meluncurkan instance EFA -enabled Anda. VPC

    4. Pilih Buat grup keamanan.

  4. Pilih grup keamanan yang Anda buat, dan pada tab Detail, salin ID grup keamanan.

  5. Dengan grup keamanan yang masih dipilih, pilih Tindakan, Edit aturan masuk, lalu lakukan hal berikut:

    1. Pilih Tambahkan aturan.

    2. Untuk Tipe, pilih Semua lalu lintas.

    3. Untuk Tipe sumber, pilih Kustom dan tempelkan ID grup keamanan yang Anda salin ke dalam bidang.

    4. Pilih Tambahkan aturan.

    5. Untuk Jenis, pilih SSH.

    6. Untuk jenis Sumber, pilih Anywhere- IPv4.

    7. Pilih Simpan aturan.

  6. Dengan grup keamanan yang masih dipilih, pilih Tindakan, Edit aturan keluar, lalu lakukan hal berikut:

    1. Pilih Tambahkan aturan.

    2. Untuk Tipe, pilih Semua lalu lintas.

    3. Untuk Tipe tujuan, pilih Kustom dan tempelkan ID grup keamanan yang Anda salin ke dalam bidang.

    4. Pilih Simpan aturan.

Langkah 2: Luncurkan instans sementara

Luncurkan instance sementara yang dapat Anda gunakan untuk menginstal dan mengkonfigurasi komponen EFA perangkat lunak. Anda menggunakan instance ini untuk membuat EFA -enabled AMI dari mana Anda dapat meluncurkan instance EFA -enabled Anda.

Untuk meluncurkan instans sementara
  1. Buka EC2 konsol Amazon di https://console.aws.amazon.com/ec2/.

  2. Di panel navigasi, pilih Instans, lalu pilih Luncurkan Instans untuk membuka wizard peluncuran instans baru.

  3. (Opsional) Di bagian Nama dan tanda, berikan nama untuk instans, seperti EFA-instance. Nama ditetapkan ke instans sebagai tanda sumber daya (Name=EFA-instance).

  4. Di bagian Aplikasi dan Gambar OS, pilih AMI untuk salah satu sistem operasi yang didukung. Hanya Amazon Linux 2, Ubuntu 20.04, dan Ubuntu 22.04 yang didukung.

  5. Di bagian Tipe instans, pilih p3dn.24xlarge, p4d.24xlarge, atau p5.48xlarge.

  6. Pada bagian Pasangan kunci, pilih pasangan kunci yang akan digunakan untuk instans.

  7. Di bagian Pengaturan jaringan, pilih Edit, lalu lakukan hal berikut:

    1. Untuk Subnet, pilih subnet untuk meluncurkan instans. Jika Anda tidak memilih subnet, Anda tidak dapat mengaktifkan instance untukEFA.

    2. Untuk Firewall (grup keamanan), pilih Pilih grup keamanan yang ada, lalu pilih grup keamanan yang Anda buat di langkah sebelumnya.

    3. Perluas bagian Konfigurasi jaringan lanjutan, dan untuk Elastic Fabric Adapter, pilih Aktifkan.

  8. Di bagian Penyimpanan, konfigurasikan volume sesuai kebutuhan.

    catatan

    Anda harus menyediakan penyimpanan tambahan 10 hingga 20 GiB untuk Nvidia CUDA Toolkit. Jika Anda tidak menyediakan penyimpanan yang cukup, Anda akan menerima insufficient disk space kesalahan saat mencoba menginstal driver dan CUDA toolkit Nvidia.

  9. Di panel Ringkasan di sebelah kanan, pilih Luncurkan instans.

Langkah 3: Instal GPU driver Nvidia, CUDA toolkit Nvidia, dan cu DNN

Amazon Linux 2
Untuk menginstal GPU driver Nvidia, CUDA toolkit Nvidia, dan cu DNN
  1. Untuk memastikan bahwa semua paket perangkat lunak Anda telah diperbarui, lakukan pembaruan perangkat lunak cepat di instans Anda.

    $ sudo yum upgrade -y && sudo reboot

    Hubungkan kembali ke instans Anda setelah boot ulang.

  2. Instal utilitas yang diperlukan untuk menginstal GPU driver Nvidia dan CUDA toolkit Nvidia.

    $ sudo yum groupinstall 'Development Tools' -y
  3. Nonaktifkan driver nouveau open source.

    1. Instal utilitas yang diperlukan dan paket header kernel untuk versi kernel yang sedang Anda jalankan.

      $ sudo yum install -y wget kernel-devel-$(uname -r) kernel-headers-$(uname -r)
    2. Tambahkan nouveau ke file daftar penolakan /etc/modprobe.d/blacklist.conf .

      $ cat << EOF | sudo tee --append /etc/modprobe.d/blacklist.conf blacklist vga16fb blacklist nouveau blacklist rivafb blacklist nvidiafb blacklist rivatv EOF
    3. Tambahkan GRUB_CMDLINE_LINUX="rdblacklist=nouveau" ke file grub dan bangun kembali konfigurasi Grub.

      $ echo 'GRUB_CMDLINE_LINUX="rdblacklist=nouveau"' | sudo tee -a /etc/default/grub \ && sudo grub2-mkconfig -o /boot/grub2/grub.cfg
  4. Boot ulang dan terhubung kembali ke instans Anda.

  5. Siapkan repositori yang dibutuhkan

    1. Instal EPEL repositori untuk DKMS dan aktifkan repo opsional apa pun untuk distribusi Linux Anda.

      $ sudo yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
    2. Instal kunci publik CUDA GPG repositori.

      $ distribution='rhel7'
    3. Siapkan repositori CUDA jaringan dan perbarui cache repositori.

      $ ARCH=$( /bin/arch ) \ && sudo yum-config-manager --add-repo http://developer.download.nvidia.com/compute/cuda/repos/$distribution/${ARCH}/cuda-$distribution.repo \ && sudo yum clean expire-cache
    4. (Kernel versi 5.10 saja) Lakukan langkah-langkah ini hanya jika Anda menggunakan Amazon Linux 2 dengan kernel versi 5.10. Jika Anda menggunakan Amazon Linux 2 dengan kernel versi 4.12, lewati langkah-langkah ini. Untuk memeriksa versi kernel Anda, jalankan uname -r.

      1. Buat file konfigurasi driver Nvidia bernama /etc/dkms/nvidia.conf.

        $ sudo mkdir -p /etc/dkms \ && echo "MAKE[0]=\"'make' -j2 module SYSSRC=\${kernel_source_dir} IGNORE_XEN_PRESENCE=1 IGNORE_PREEMPT_RT_PRESENCE=1 IGNORE_CC_MISMATCH=1 CC=/usr/bin/gcc10-gcc\"" | sudo tee /etc/dkms/nvidia.conf
      2. (p4d.24xlarge dan p5.48xlarge saja) Salin file konfigurasi driver Nvidia.

        $ sudo cp /etc/dkms/nvidia.conf /etc/dkms/nvidia-open.conf
  6. Instal GPU driver Nvidia, NVIDIA CUDA toolkit, dan cuDNN.

    • p3dn.24xlarge

      $ sudo yum clean all \ && sudo yum -y install kmod-nvidia-latest-dkms nvidia-driver-latest-dkms \ && sudo yum -y install cuda-drivers-fabricmanager cuda libcudnn8-devel
    • p4d.24xlarge dan p5.48xlarge

      $ sudo yum clean all \ && sudo yum -y install kmod-nvidia-open-dkms nvidia-driver-latest-dkms \ && sudo yum -y install cuda-drivers-fabricmanager cuda libcudnn8-devel
  7. Boot ulang dan terhubung kembali ke instans Anda.

  8. (p4d.24xlarge dan p5.48xlarge saja) Mulai layanan Nvidia Fabric Manager, dan pastikan bahwa layanan tersebut dimulai secara otomatis saat instans dimulai. Nvidia Fabric Manager diperlukan untuk NV Switch Management.

    $ sudo systemctl enable nvidia-fabricmanager && sudo systemctl start nvidia-fabricmanager
  9. Pastikan bahwa CUDA jalur diatur setiap kali instance dimulai.

    • Untuk shell bash, tambahkan pernyataan berikut ke /home/username/.bashrc dan /home/username/.bash_profile.

      export PATH=/usr/local/cuda/bin:$PATH export LD_LIBRARY_PATH=/usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64:$LD_LIBRARY_PATH
    • Untuk shell tcsh, tambahkan pernyataan berikut ke /home/username/.cshrc.

      setenv PATH=/usr/local/cuda/bin:$PATH setenv LD_LIBRARY_PATH=/usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64:$LD_LIBRARY_PATH
  10. Untuk mengonfirmasi bahwa GPU driver Nvidia berfungsi, jalankan perintah berikut.

    $ nvidia-smi -q | head

    Perintah harus mengembalikan informasi tentang NvidiaGPUs, GPU driver Nvidia, dan CUDA toolkit Nvidia.

Ubuntu 20.04/22.04
Untuk menginstal GPU driver Nvidia, CUDA toolkit Nvidia, dan cu DNN
  1. Untuk memastikan bahwa semua paket perangkat lunak Anda telah diperbarui, lakukan pembaruan perangkat lunak cepat di instans Anda.

    $ sudo apt-get update && sudo apt-get upgrade -y
  2. Instal utilitas yang diperlukan untuk menginstal GPU driver Nvidia dan CUDA toolkit Nvidia.

    $ sudo apt-get update && sudo apt-get install build-essential -y
  3. Untuk menggunakan GPU driver Nvidia, Anda harus terlebih dahulu menonaktifkan driver nouveau open source.

    1. Instal utilitas yang diperlukan dan paket header kernel untuk versi kernel yang sedang Anda jalankan.

      $ sudo apt-get install -y gcc make linux-headers-$(uname -r)
    2. Tambahkan nouveau ke file daftar penolakan /etc/modprobe.d/blacklist.conf .

      $ cat << EOF | sudo tee --append /etc/modprobe.d/blacklist.conf blacklist vga16fb blacklist nouveau blacklist rivafb blacklist nvidiafb blacklist rivatv EOF
    3. Buka /etc/default/grub menggunakan editor teks pilihan Anda dan tambahkan berikut ini.

      GRUB_CMDLINE_LINUX="rdblacklist=nouveau"
    4. Buat kembali konfigurasi Grub.

      $ sudo update-grub
  4. Boot ulang dan terhubung kembali ke instans Anda.

  5. Tambahkan CUDA repositori dan instal GPU driver Nvidia, NVIDIA CUDA toolkit, dan cu. DNN

    • p3dn.24xlarge

      $ sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu2004/x86_64/7fa2af80.pub \ && wget -O /tmp/deeplearning.deb http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu2004/x86_64/nvidia-machine-learning-repo-ubuntu2004_1.0.0-1_amd64.deb \ && sudo dpkg -i /tmp/deeplearning.deb \ && wget -O /tmp/cuda.pin https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pin \ && sudo mv /tmp/cuda.pin /etc/apt/preferences.d/cuda-repository-pin-600 \ && sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/3bf863cc.pub \ && sudo add-apt-repository 'deb http://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/ /' \ && sudo apt update \ && sudo apt install nvidia-dkms-535 \ && sudo apt install -o Dpkg::Options::='--force-overwrite' cuda-drivers-535 cuda-toolkit-12-3 libcudnn8 libcudnn8-dev -y
    • p4d.24xlarge dan p5.48xlarge

      $ sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu2004/x86_64/7fa2af80.pub \ && wget -O /tmp/deeplearning.deb http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu2004/x86_64/nvidia-machine-learning-repo-ubuntu2004_1.0.0-1_amd64.deb \ && sudo dpkg -i /tmp/deeplearning.deb \ && wget -O /tmp/cuda.pin https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pin \ && sudo mv /tmp/cuda.pin /etc/apt/preferences.d/cuda-repository-pin-600 \ && sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/3bf863cc.pub \ && sudo add-apt-repository 'deb http://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/ /' \ && sudo apt update \ && sudo apt install nvidia-kernel-open-535 \ && sudo apt install -o Dpkg::Options::='--force-overwrite' cuda-drivers-535 cuda-toolkit-12-3 libcudnn8 libcudnn8-dev -y
  6. Boot ulang dan terhubung kembali ke instans Anda.

  7. (p4d.24xlarge dan p5.48xlarge saja) Instal Nvidia Fabric Manager.

    1. Anda harus menginstal versi Nvidia Fabric Manager yang cocok dengan versi modul kernel Nvidia yang Anda instal pada langkah sebelumnya.

      Jalankan perintah berikut untuk menentukan versi modul kernel Nvidia.

      $ cat /proc/driver/nvidia/version | grep "Kernel Module"

      Berikut ini adalah output contoh.

      NVRM version: NVIDIA UNIX x86_64 Kernel Module 450.42.01 Tue Jun 15 21:26:37 UTC 2021

      Pada contoh di atas, versi utama 450 dari modul kernel diinstal. Ini berarti Anda perlu menginstal versi Nvidia Fabric Manager 450.

    2. Instal Nvidia Fabric Manager. Jalankan perintah berikut dan tentukan versi utama yang diidentifikasi pada langkah sebelumnya.

      $ sudo apt install -o Dpkg::Options::='--force-overwrite' nvidia-fabricmanager-major_version_number

      Misalnya, jika versi 450 utama modul kernel diinstal, gunakan perintah berikut untuk menginstal versi Nvidia Fabric Manager yang cocok.

      $ sudo apt install -o Dpkg::Options::='--force-overwrite' nvidia-fabricmanager-450
    3. Mulai layanan, dan pastikan bahwa layanan tersebut dimulai secara otomatis ketika instans dimulai. Nvidia Fabric Manager diperlukan untuk NV Switch Management.

      $ sudo systemctl start nvidia-fabricmanager && sudo systemctl enable nvidia-fabricmanager
  8. Pastikan bahwa CUDA jalur diatur setiap kali instance dimulai.

    • Untuk shell bash, tambahkan pernyataan berikut ke /home/username/.bashrc dan /home/username/.bash_profile.

      export PATH=/usr/local/cuda/bin:$PATH export LD_LIBRARY_PATH=/usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64:$LD_LIBRARY_PATH
    • Untuk shell tcsh, tambahkan pernyataan berikut ke /home/username/.cshrc.

      setenv PATH=/usr/local/cuda/bin:$PATH setenv LD_LIBRARY_PATH=/usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64:$LD_LIBRARY_PATH
  9. Untuk mengonfirmasi bahwa GPU driver Nvidia berfungsi, jalankan perintah berikut.

    $ nvidia-smi -q | head

    Perintah harus mengembalikan informasi tentang NvidiaGPUs, GPU driver Nvidia, dan CUDA toolkit Nvidia.

Langkah 4: Instal GDRCopy

Instal GDRCopy untuk meningkatkan kinerja Libfabric. Untuk informasi selengkapnyaGDRCopy, lihat GDRCopyrepositori.

Amazon Linux 2
Untuk menginstal GDRCopy
  1. Pasang dependensi yang diperlukan.

    $ sudo yum -y install dkms rpm-build make check check-devel subunit subunit-devel
  2. Unduh dan ekstrak GDRCopy paketnya.

    $ wget https://github.com/NVIDIA/gdrcopy/archive/refs/tags/v2.4.tar.gz \ && tar xf v2.4.tar.gz ; cd gdrcopy-2.4/packages
  3. Bangun GDRCopy RPM paketnya.

    $ CUDA=/usr/local/cuda ./build-rpm-packages.sh
  4. Instal GDRCopy RPM paket.

    $ sudo rpm -Uvh gdrcopy-kmod-2.4-1dkms.noarch*.rpm \ && sudo rpm -Uvh gdrcopy-2.4-1.x86_64*.rpm \ && sudo rpm -Uvh gdrcopy-devel-2.4-1.noarch*.rpm
Ubuntu 20.04/22.04
Untuk menginstal GDRCopy
  1. Pasang dependensi yang diperlukan.

    $ sudo apt -y install build-essential devscripts debhelper check libsubunit-dev fakeroot pkg-config dkms
  2. Unduh dan ekstrak GDRCopy paketnya.

    $ wget https://github.com/NVIDIA/gdrcopy/archive/refs/tags/v2.4.tar.gz \ && tar xf v2.4.tar.gz \ && cd gdrcopy-2.4/packages
  3. Bangun GDRCopy RPM paketnya.

    $ CUDA=/usr/local/cuda ./build-deb-packages.sh
  4. Instal GDRCopy RPM paket.

    $ sudo dpkg -i gdrdrv-dkms_2.4-1_amd64.*.deb \ && sudo dpkg -i libgdrapi_2.4-1_amd64.*.deb \ && sudo dpkg -i gdrcopy-tests_2.4-1_amd64.*.deb \ && sudo dpkg -i gdrcopy_2.4-1_amd64.*.deb

Langkah 5: Instal perangkat EFA lunak

Instal kernel, EFA driver, Libfabric, dan Open MPI stack yang EFA diaktifkan yang diperlukan untuk mendukung EFA instans sementara Anda.

Untuk menginstal perangkat EFA lunak
  1. Hubungkan ke instans yang Anda luncurkan. Untuk informasi selengkapnya, lihat Connect ke instans Linux Anda menggunakan SSH.

  2. Unduh file instalasi EFA perangkat lunak. File penginstalan perangkat lunak dikemas menjadi file tarball (.tar.gz) yang dikompresi. Untuk mengunduh versi stabil terbaru, gunakan perintah berikut.

    $ curl -O https://efa-installer.amazonaws.com/aws-efa-installer-1.35.0.tar.gz

    Anda juga bisa mendapatkan versi terbaru dengan mengganti nomor versi dengan latest dalam perintah sebelumnya.

  3. (Opsional) Verifikasi keaslian dan integritas file EFA tarball (.tar.gz).

    Kami menyarankan Anda melakukan hal ini untuk memverifikasi identitas penerbit perangkat lunak dan memeriksa apakah file tersebut tidak diubah atau rusak sejak file tersebut diterbitkan. Jika Anda tidak ingin memverifikasi file tarball, lewati langkah ini.

    catatan

    Atau, jika Anda lebih suka memverifikasi file tarball dengan menggunakan MD5 atau SHA256 checksum sebagai gantinya, lihat. Verifikasi EFA penginstal menggunakan checksum

    1. Unduh GPG kunci publik dan impor ke keyring Anda.

      $ wget https://efa-installer.amazonaws.com/aws-efa-installer.key && gpg --import aws-efa-installer.key

      Perintah tersebut harus mengembalikan nilai kunci. Catat nilai kunci, karena Anda membutuhkannya di langkah selanjutnya.

    2. Verifikasi sidik jari GPG kunci. Jalankan perintah berikut dan tentukan nilai kunci dari langkah sebelumnya.

      $ gpg --fingerprint key_value

      Perintah tersebut harus mengembalikan sidik jari yang identik dengan 4E90 91BC BB97 A96B 26B1 5E59 A054 80B1 DD2D 3CCC. Jika sidik jari tidak cocok, jangan jalankan skrip EFA instalasi, dan hubungi AWS Support.

    3. Unduh file tanda tangan dan verifikasi tanda tangan file EFA tarball.

      $ wget https://efa-installer.amazonaws.com/aws-efa-installer-1.35.0.tar.gz.sig && gpg --verify ./aws-efa-installer-1.35.0.tar.gz.sig

      Berikut ini adalah contoh output.

      gpg: Signature made Wed 29 Jul 2020 12:50:13 AM UTC using RSA key ID DD2D3CCC gpg: Good signature from "Amazon EC2 EFA <ec2-efa-maintainers@amazon.com>" gpg: WARNING: This key is not certified with a trusted signature! gpg: There is no indication that the signature belongs to the owner. Primary key fingerprint: 4E90 91BC BB97 A96B 26B1 5E59 A054 80B1 DD2D 3CCC

      Jika hasilnya mencakup Good signature, dan sidik jari cocok dengan sidik jari yang dikembalikan di langkah sebelumnya, lanjutkan ke langkah berikutnya. Jika tidak, jangan jalankan skrip EFA instalasi, dan hubungi AWS Support.

  4. Ekstraksi file dari file .tar.gz yang dikompresi dan navigasi ke dalam direktori yang diekstraksi.

    $ tar -xf aws-efa-installer-1.35.0.tar.gz && cd aws-efa-installer
  5. Jalankan skrip instalasi EFA perangkat lunak.

    catatan

    Dari EFA 1.30.0, Open MPI 4 dan Open MPI 5 diinstal secara default. Kecuali Anda membutuhkan Open MPI 5, kami sarankan Anda menginstal hanya Open MPI 4. Perintah berikut menginstal Open MPI 4 saja. Jika Anda ingin menginstal Open MPI 4 dan Open MPI 5, hapus--mpi=openmpi4.

    $ sudo ./efa_installer.sh -y --mpi=openmpi4

    Libfabric diinstal di /opt/amazon/efa direktori, sementara Open MPI diinstal di /opt/amazon/openmpi direktori.

  6. Jika EFA penginstal meminta Anda untuk me-reboot instance, lakukan dan kemudian sambungkan kembali ke instance. Jika tidak, log out dari instans lalu log kembali untuk menyelesaikan penginstalan.

  7. Konfirmasikan bahwa komponen EFA perangkat lunak berhasil diinstal.

    $ fi_info -p efa -t FI_EP_RDM

    Perintah harus mengembalikan informasi tentang EFA antarmuka Libfabric. Contoh berikut menunjukkan output perintah.

    • p3dn.24xlarge dengan satu antarmuka jaringan

      provider: efa fabric: EFA-fe80::94:3dff:fe89:1b70 domain: efa_0-rdm version: 2.0 type: FI_EP_RDM protocol: FI_PROTO_EFA
    • p4d.24xlarge dan p5.48xlarge dengan berbagai antarmuka jaringan

      provider: efa fabric: EFA-fe80::c6e:8fff:fef6:e7ff domain: efa_0-rdm version: 111.0 type: FI_EP_RDM protocol: FI_PROTO_EFA provider: efa fabric: EFA-fe80::c34:3eff:feb2:3c35 domain: efa_1-rdm version: 111.0 type: FI_EP_RDM protocol: FI_PROTO_EFA provider: efa fabric: EFA-fe80::c0f:7bff:fe68:a775 domain: efa_2-rdm version: 111.0 type: FI_EP_RDM protocol: FI_PROTO_EFA provider: efa fabric: EFA-fe80::ca7:b0ff:fea6:5e99 domain: efa_3-rdm version: 111.0 type: FI_EP_RDM protocol: FI_PROTO_EFA

Langkah 6: Instal NCCL

InstalNCCL. Untuk informasi selengkapnyaNCCL, lihat NCCLrepositori.

Untuk menginstal NCCL
  1. Buka direktori /opt tersebut.

    $ cd /opt
  2. Kloning NCCL repositori resmi ke instance dan navigasikan ke repositori kloning lokal.

    $ sudo git clone https://github.com/NVIDIA/nccl.git && cd nccl
  3. Bangun NCCL dan instal dan tentukan direktori CUDA instalasi.

    $ sudo make -j src.build CUDA_HOME=/usr/local/cuda

Langkah 7: Instal aws-ofi-nccl plugin

aws-ofi-ncclPlugin memetakan NCCL transportasi berorientasi koneksi APIs ke antarmuka tanpa koneksi Libfabric yang andal. Ini memungkinkan Anda untuk menggunakan Libfabric sebagai penyedia jaringan saat menjalankan aplikasi NCCL berbasis. Untuk informasi lebih lanjut tentang aws-ofi-nccl plugin, lihat aws-ofi-nccl repositori.

Untuk menginstal aws-ofi-nccl plugin
  1. Navigasi ke direktori beranda Anda.

    $ cd $HOME
  2. Instal utilitas yang diperlukan.

    • Amazon Linux 2

      $ sudo yum install hwloc-devel
    • Ubuntu

      $ sudo apt-get install libhwloc-dev
  3. Unduh file aws-ofi-nccl plugin. File dikemas menjadi tarball yang dikompresi (.tar.gz).

    $ wget https://github.com/aws/aws-ofi-nccl/releases/download/v1.11.0-aws/aws-ofi-nccl-1.11.0-aws.tar.gz
  4. Ekstraksi file dari file .tar.gz yang dikompresi dan navigasikan ke dalam direktori yang diekstraksi.

    $ tar -xf aws-ofi-nccl-1.11.0-aws.tar.gz && cd aws-ofi-nccl-1.11.0-aws
  5. Untuk menghasilkan file make, jalankan configure skrip dan tentukan direktoriMPI, LibfabricNCCL, dan CUDA instalasi.

    $ ./configure --prefix=/opt/aws-ofi-nccl --with-mpi=/opt/amazon/openmpi \ --with-libfabric=/opt/amazon/efa \ --with-cuda=/usr/local/cuda \ --enable-platform-aws
  6. Tambahkan MPI direktori Open ke PATH variabel.

    $ export PATH=/opt/amazon/openmpi/bin/:$PATH
  7. Instal aws-ofi-nccl plugin.

    $ make && sudo make install

Langkah 8: Instal NCCL tes

Instal NCCL tes. NCCLTes memungkinkan Anda untuk mengonfirmasi NCCL bahwa diinstal dengan benar dan beroperasi seperti yang diharapkan. Untuk informasi selengkapnya tentang NCCL pengujian, lihat repositori nccl-tests.

Untuk menginstal NCCL tes
  1. Navigasi ke direktori beranda Anda.

    $ cd $HOME
  2. Gandakan repositori nccl-tests resmi ke instans dan navigasi ke repositori klon lokal.

    $ git clone https://github.com/NVIDIA/nccl-tests.git && cd nccl-tests
  3. Tambahkan direktori Libfabric ke variabel LD_LIBRARY_PATH.

    • Amazon Linux 2

      $ export LD_LIBRARY_PATH=/opt/amazon/efa/lib64:$LD_LIBRARY_PATH
    • Ubuntu

      $ export LD_LIBRARY_PATH=/opt/amazon/efa/lib:$LD_LIBRARY_PATH
  4. Instal NCCL tes dan tentukan direktori MPINCCL,, dan CUDA instalasi.

    $ make MPI=1 MPI_HOME=/opt/amazon/openmpi NCCL_HOME=/opt/nccl/build CUDA_HOME=/usr/local/cuda

Langkah 9: Uji EFA dan NCCL konfigurasi Anda

Jalankan pengujian untuk memastikan bahwa instans sementara Anda dikonfigurasi dengan benar untuk EFA danNCCL.

Untuk menguji EFA dan NCCL konfigurasi Anda
  1. Buat file host yang menentukan host untuk menjalankan pengujian. Perintah berikut membuat file host dengan nama my-hosts yang mencakup referensi ke instans itu sendiri.

    IMDSv2
    [ec2-user ~]$ TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"` \ && curl -H "X-aws-ec2-metadata-token: $TOKEN" -v http://169.254.169.254/latest/meta-data/local-ipv4 >> my-hosts
    IMDSv1
    [ec2-user ~]$ curl http://169.254.169.254/latest/meta-data/local-ipv4 >> my-hosts
  2. Jalankan pengujian dan tentukan file host (--hostfile) dan jumlah yang GPUs akan digunakan (-n). Perintah berikut menjalankan all_reduce_perf pengujian pada 8 GPUs pada instance itu sendiri, dan menentukan variabel lingkungan berikut.

    • FI_EFA_USE_DEVICE_RDMA=1— (p4d.24xlargehanya) menggunakan RDMA fungsionalitas perangkat untuk transfer satu sisi dan dua sisi.

    • NCCL_DEBUG=INFO—memungkinkan output debug terperinci. Anda juga dapat menentukan VERSION untuk mencetak hanya NCCL versi di awal pengujian, atau WARN hanya menerima pesan kesalahan.

    Untuk informasi selengkapnya tentang argumen NCCL pengujian, lihat NCCLPengujian README di repositori resmi nccl-tests.

    • p3dn.24xlarge

      $ /opt/amazon/openmpi/bin/mpirun \ -x LD_LIBRARY_PATH=/opt/nccl/build/lib:/usr/local/cuda/lib64:/opt/amazon/efa/lib:/opt/amazon/openmpi/lib:/opt/aws-ofi-nccl/lib:$LD_LIBRARY_PATH \ -x NCCL_DEBUG=INFO \ --hostfile my-hosts -n 8 -N 8 \ --mca pml ^cm --mca btl tcp,self --mca btl_tcp_if_exclude lo,docker0 --bind-to none \ $HOME/nccl-tests/build/all_reduce_perf -b 8 -e 1G -f 2 -g 1 -c 1 -n 100
    • p4d.24xlarge dan p5.48xlarge

      $ /opt/amazon/openmpi/bin/mpirun \ -x FI_EFA_USE_DEVICE_RDMA=1 \ -x LD_LIBRARY_PATH=/opt/nccl/build/lib:/usr/local/cuda/lib64:/opt/amazon/efa/lib:/opt/amazon/openmpi/lib:/opt/aws-ofi-nccl/lib:$LD_LIBRARY_PATH \ -x NCCL_DEBUG=INFO \ --hostfile my-hosts -n 8 -N 8 \ --mca pml ^cm --mca btl tcp,self --mca btl_tcp_if_exclude lo,docker0 --bind-to none \ $HOME/nccl-tests/build/all_reduce_perf -b 8 -e 1G -f 2 -g 1 -c 1 -n 100
  3. Anda dapat mengonfirmasi bahwa EFA aktif sebagai penyedia dasar NCCL saat NCCL_DEBUG log dicetak.

    ip-192-168-2-54:14:14 [0] NCCL INFO NET/OFI Selected Provider is efa*

    Informasi tambahan berikut ditampilkan saat menggunakan instans p4d.24xlarge.

    ip-192-168-2-54:14:14 [0] NCCL INFO NET/OFI Running on P4d platform, Setting NCCL_TOPO_FILE environment variable to /home/ec2-user/install/plugin/share/aws-ofi-nccl/xml/p4d-24xl-topo.xml

Langkah 10: Instal aplikasi machine learning Anda

Instal aplikasi machine learning di instans sementara. Prosedur penginstalan bervariasi tergantung pada aplikasi machine learning tertentu. Untuk informasi selengkapnya tentang menginstal perangkat lunak pada instans Linux Anda, lihat Mengelola perangkat lunak di instans Amazon Linux 2 Anda.

catatan

Lihat dokumentasi aplikasi machine learning Anda untuk petunjuk penginstalan.

Langkah 11: Buat EFA dan NCCL -enabled AMI

Setelah Anda menginstal komponen perangkat lunak yang diperlukan, Anda membuat AMI yang dapat Anda gunakan kembali untuk meluncurkan instans EFA yang diaktifkan.

Untuk membuat AMI dari instance sementara Anda
  1. Buka EC2 konsol Amazon di https://console.aws.amazon.com/ec2/.

  2. Di panel navigasi, pilih Instans.

  3. Pilih instans sementara yang Anda buat dan pilih Tindakan, Gambar, Buat gambar.

  4. Untuk Buat gambar, lakukan hal berikut:

    1. Untuk nama Gambar, masukkan nama deskriptif untuk. AMI

    2. (Opsional) Untuk deskripsi Gambar, masukkan deskripsi singkat tentang tujuanAMI.

    3. Pilih Buat citra.

  5. Di panel navigasi, pilih AMIs.

  6. Temukan AMI tht yang Anda buat dalam daftar. Tunggu hingga status berubah dari pending menjadi available sebelum melanjutkan ke langkah berikutnya.

Langkah 12: Mengakhiri instans sementara

Pada titik ini, Anda tidak memerlukan lagi instans sementara yang Anda luncurkan. Anda dapat mengakhiri instans agar biaya tidak dibebankan lagi padanya.

Untuk mengakhiri instans sementara
  1. Buka EC2 konsol Amazon di https://console.aws.amazon.com/ec2/.

  2. Di panel navigasi, pilih Instans.

  3. Pilih instans sementara yang Anda buat dan pilih Tindakan, Status instans, Akhiri instans.

  4. Saat diminta konfirmasi, pilih Akhiri.

Langkah 13: Luncurkan EFA dan NCCL -enabled instance ke dalam grup penempatan cluster

Luncurkan instance Anda EFA dan NCCL -enabled ke dalam grup penempatan klaster menggunakan grup keamanan EFA -enabled AMI dan EFA -enabled yang Anda buat sebelumnya.

catatan
  • Ini bukan persyaratan mutlak untuk meluncurkan instance EFA -enabled Anda ke dalam grup penempatan cluster. Namun, sebaiknya jalankan instans EFA -enabled Anda dalam grup penempatan klaster saat meluncurkan instance ke grup latensi rendah dalam satu Availability Zone.

  • Untuk memastikan kapasitas tersedia saat Anda menskalakan instans klaster, Anda dapat membuat Reservasi Kapasitas untuk grup penempatan klaster Anda. Untuk informasi selengkapnya, lihat Buat Reservasi Kapasitas dalam grup penempatan klaster.

New console
Untuk meluncurkan instans sementara
  1. Buka EC2 konsol Amazon di https://console.aws.amazon.com/ec2/.

  2. Di panel navigasi, pilih Instans, lalu pilih Luncurkan Instans untuk membuka wizard peluncuran instans baru.

  3. (Opsional) Di bagian Nama dan tanda, berikan nama untuk instans, seperti EFA-instance. Nama ditetapkan ke instans sebagai tanda sumber daya (Name=EFA-instance).

  4. Di bagian Aplikasi dan Gambar OS, pilih My AMIs, lalu pilih AMI yang Anda buat di langkah sebelumnya.

  5. Di bagian Tipe instans, pilih p3dn.24xlarge atau p4d.24xlarge.

  6. Pada bagian Pasangan kunci, pilih pasangan kunci yang akan digunakan untuk instans.

  7. Di bagian Pengaturan jaringan, pilih Edit, lalu lakukan hal berikut:

    1. Untuk Subnet, pilih subnet untuk meluncurkan instans. Jika Anda tidak memilih subnet, Anda tidak dapat mengaktifkan instance untukEFA.

    2. Untuk Firewall (grup keamanan), pilih Pilih grup keamanan yang ada, lalu pilih grup keamanan yang Anda buat di langkah sebelumnya.

    3. Perluas bagian Konfigurasi jaringan lanjutan, dan untuk Elastic Fabric Adapter, pilih Aktifkan.

  8. (Opsional) Di bagian Penyimpanan, konfigurasikan volume sesuai kebutuhan.

  9. Di bagian Detail lanjutan, untuk nama grup Penempatan, pilih grup penempatan klaster untuk meluncurkan instans. Jika Anda perlu membuat grup penempatan klaster baru, pilih Buat grup penempatan baru.

  10. Di panel Summary di sebelah kanan, untuk Jumlah instance, masukkan jumlah instans EFA -enabled yang ingin Anda luncurkan, lalu pilih Launch instance.

Old console
Untuk meluncurkan instans Anda EFA dan NCCL -enabled ke dalam grup penempatan klaster
  1. Buka EC2 konsol Amazon di https://console.aws.amazon.com/ec2/.

  2. Pilih Luncurkan Instans.

  3. Pada halaman Pilih AMI halaman, pilih Milik Saya AMIs, temukan AMI yang Anda buat sebelumnya, lalu pilih Pilih.

  4. Di halaman Pilih Tipe Instans, pilih p3dn.24xlarge lalu pilih Berikutnya: Konfigurasikan Detail Instans.

  5. Pada halaman Konfigurasi Detail Instans, lakukan langkah berikut:

    1. Untuk Jumlah instans, masukkan jumlah instance EFA dan NCCL -enabled yang ingin Anda luncurkan.

    2. Untuk Network dan Subnet, pilih subnet VPC dan untuk meluncurkan instance.

    3. Untuk Grup penempatan, pilih Tambahkan instans ke grup penempatan.

    4. Untuk Nama grup penempatan, pilih Tambahkan ke grup penempatan baru, lalu masukkan nama deskriptif untuk grup penempatan. Lalu untuk Strategi grup penempatan, pilih klaster.

    5. Untuk EFA, pilih Aktifkan.

    6. Di bagian Antarmuka Jaringan, untuk perangkat eth0, pilih Antarmuka jaringan baru. Anda dapat secara opsional menentukan IPv4 alamat utama dan satu atau lebih IPv4 alamat sekunder. Jika Anda meluncurkan instance ke subnet yang memiliki IPv6 CIDR blok terkait, Anda dapat secara opsional menentukan IPv6 alamat utama dan satu atau beberapa alamat sekunderIPv6.

    7. Pilih Berikutnya: Tambahkan Penyimpanan.

  6. Pada halaman Tambahkan Penyimpanan, tentukan volume yang akan dilampirkan ke instance selain volume yang ditentukan oleh AMI (seperti volume perangkat root). Lalu, pilih Berikutnya: Tambahkan Tanda.

  7. Di halaman Tambahkan Tanda, tentukan tanda untuk instans, seperti nama yang mudah digunakan, lalu pilih Selanjutnya: Konfigurasikan Grup Keamanan.

  8. Di halaman Mengonfigurasi Grup Keamanan, untuk Tetapkan grup keamanan, pilih Pilih grup keamanan yang sudah ada, lalu pilih grup keamanan yang Anda buat sebelumnya.

  9. Pilih Tinjau dan Luncurkan.

  10. Di halaman Tinjau Peluncuran Instans, tinjau pengaturannya, lalu pilih Luncurkan untuk memilih pasangan kunci dan meluncurkan instans Anda.

Langkah 14: Aktifkan tanpa kata sandi SSH

Untuk mengaktifkan aplikasi Anda berjalan di semua instance di cluster Anda, Anda harus mengaktifkan SSH akses tanpa kata sandi dari node pemimpin ke node anggota. Simpul pemimpin adalah instans dari mana Anda menjalankan aplikasi Anda. Instans yang tersisa di klaster adalah simpul anggota.

Untuk mengaktifkan tanpa kata sandi SSH di antara instance di cluster
  1. Pilih satu instans dalam klaster sebagai simpul pemimpin, dan hubungkan ke instans tersebut.

  2. Nonaktifkan strictHostKeyChecking dan aktifkan ForwardAgent pada simpul pemimpin. Buka ~/.ssh/config menggunakan editor teks pilihan Anda dan tambahkan berikut ini.

    Host * ForwardAgent yes Host * StrictHostKeyChecking no
  3. Menghasilkan sebuah RSA key pair.

    $ ssh-keygen -t rsa -N "" -f ~/.ssh/id_rsa

    Pasangan kunci dibuat dalam direktori $HOME/.ssh/.

  4. Ubah izin kunci privat pada simpul pemimpin.

    $ chmod 600 ~/.ssh/id_rsa chmod 600 ~/.ssh/config
  5. Buka ~/.ssh/id_rsa.pub menggunakan editor teks pilihan Anda dan salin kunci.

  6. Untuk setiap simpul anggota di klaster, lakukan hal berikut:

    1. Hubungkan dengan instans.

    2. Buka ~/.ssh/authorized_keys menggunakan editor teks pilihan Anda tambahkan kunci publik yang Anda salin sebelumnya.

  7. Untuk menguji bahwa passwordless SSH berfungsi seperti yang diharapkan, sambungkan ke node pemimpin Anda dan jalankan perintah berikut.

    $ ssh member_node_private_ip

    Anda harus terhubung ke simpul anggota tanpa diminta untuk memasukkan kunci atau kata sandi.