Memulai dengan EFA dan NCCL - 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 dengan EFA dan NCCL

NVIDIA Collective Communications Library (NCCL) adalah perpustakaan rutinitas komunikasi kolektif standar untuk banyak GPU pada simpul tunggal atau beberapa simpul. NCCL dapat digunakan bersama-sama dengan EFA, Libfabric, dan MPI untuk mendukung berbagai beban kerja machine learning. Untuk informasi lebih lanjut, lihat situs web NCCL.

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

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

  • Hanya AMI dasar Amazon Linux 2 dan Ubuntu 20.04/22.04 yang didukung.

  • Hanya NCCL 2.4.2 dan yang lebih baru yang didukung EFA.

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

Langkah 1: Siapkan grup keamanan yang diaktifkan EFA

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

penting

Grup keamanan ini ditujukan untuk tujuan pengujian saja. Untuk lingkungan produksi Anda, kami sarankan Anda membuat aturan SSH masuk yang memungkinkan lalu lintas hanya dari alamat IP dari mana 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 yang diaktifkan EFA
  1. Buka konsol Amazon EC2 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 VPC untuk tujuan peluncuran instans Anda yang didukung EFA.

    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 Tipe, pilih SSH.

    6. Untuk tipe 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 instans sementara yang dapat Anda gunakan untuk menginstal dan mengonfigurasi komponen perangkat lunak EFA. Anda menggunakan instans ini untuk membuat AMI yang diaktifkan EFA sebagai tempat untuk meluncurkan instans Anda yang diaktifkan EFA.

Untuk meluncurkan instans sementara
  1. Buka konsol Amazon EC2 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 Application and OS Images, 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 instans untuk EFA.

    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. Jika Anda tidak menyediakan penyimpanan yang cukup, Anda akan menerima kesalahan insufficient disk space saat mencoba menginstal driver Nvidia dan toolkit CUDA.

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

Langkah 3: Instal driver Nvidia GPU, kit alat CUDA Nvidia, dan cuDNN

Amazon Linux 2
Untuk menginstal driver Nvidia GPU, kit alat CUDA Nvidia, dan cuDNN
  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. Pasang utilitas yang diperlukan untuk memasang driver GPU Nvidia dan toolkit Nvidia CUDA.

    $ 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 repositori EPEL 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 GPG publik repositori CUDA.

      $ distribution='rhel7'
    3. Siapkan repositori jaringan CUDA 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 driver Nvidia GPU, kit alat CUDA Nvidia, 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 jalur CUDA diatur setiap kali instans 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 driver Nvidia GPU berfungsi, jalankan perintah berikut.

    $ nvidia-smi -q | head

    Perintah tersebut harus mengembalikan informasi tentang Nvidia GPU, driver Nvidia GPU, dan kit alat Nvidia CUDA.

Ubuntu 20.04/22.04
Untuk menginstal driver Nvidia GPU, kit alat CUDA Nvidia, dan cuDNN
  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. Pasang utilitas yang diperlukan untuk memasang driver GPU Nvidia dan toolkit Nvidia CUDA.

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

    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 repositori CUDA dan instal driver Nvidia GPU, toolkit CUDA NVIDIA, dan cuDNN.

    • 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 jalur CUDA diatur setiap kali instans 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 driver Nvidia GPU berfungsi, jalankan perintah berikut.

    $ nvidia-smi -q | head

    Perintah tersebut harus mengembalikan informasi tentang Nvidia GPU, driver Nvidia GPU, dan kit alat Nvidia CUDA.

Langkah 4: Instal GDRCopy

Instal GDRCopy untuk meningkatkan performa Libfabric. Untuk informasi selengkapnya tentang GDRCopy, lihat repositori GDRCopy.

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

    $ sudo yum -y install dkms rpm-build make check check-devel subunit subunit-devel
  2. Mengunduh dan mengekstraksi paket GDRcopy.

    $ 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 paket RPM GDRCopy.

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

    $ 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. Instal dependensi yang diperlukan.

    $ sudo apt -y install build-essential devscripts debhelper check libsubunit-dev fakeroot pkg-config dkms
  2. Mengunduh dan mengekstraksi paket GDRcopy.

    $ 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 paket RPM GDRCopy.

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

    $ 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 lunak EFA

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

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

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

    $ C:\> curl -O https://efa-installer.amazonaws.com/aws-efa-installer-1.33.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 tarball EFA (.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 memilih untuk memverifikasi file tarball menggunakan checksum MD5 atau SHA256, lihat Memverifikasi penginstal EFA menggunakan checksum.

    1. Unduh kunci GPG publik dan impor ke dalam 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 kunci GPG. 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 instalasi EFA, dan hubungi AWS Support.

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

      $ wget https://efa-installer.amazonaws.com/aws-efa-installer-1.33.0.tar.gz.sig && gpg --verify ./aws-efa-installer-1.33.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 instalasi EFA, dan hubungi AWS Support.

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

    $ C:\> tar -xf aws-efa-installer-1.33.0.tar.gz && cd aws-efa-installer
  5. Unduh skrip penginstalan perangkat lunak EFA.

    catatan

    Dari EFA 1.30.0, Open MPI 4 dan Open MPI 5 sama-sama diinstal secara default. Kami sarankan Anda untuk menginstal Open MPI 4 saja, kecuali jika Anda membutuhkan Open MPI 5. Perintah berikut menginstal Open MPI 4 saja. Jika Anda ingin menginstal Open MPI 4 and Open MPI 5, hapus --mpi=openmpi4.

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

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

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

  7. Pastikan bahwa komponen perangkat lunak EFA telah berhasil diinstal.

    $ fi_info -p efa -t FI_EP_RDM

    Perintah tersebut harus mengembalikan informasi tentang antarmuka Libfabric EFA. 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

Instal NCCL. Untuk informasi lebih lanjut tentang NCCL, lihat repositori NCCL.

Untuk menginstal NCCL
  1. Buka direktori /opt tersebut.

    $ cd /opt
  2. Gandakan repositori NCCL resmi ke instans dan navigasi ke repositori klon lokal.

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

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

Langkah 7: Instal aws-ofi-nccl plugin

aws-ofi-nccl Plugin ini memetakan API transportasi berorientasi koneksi NCCL ke antarmuka Libfabric yang tidak dapat diandalkan tanpa koneksi. Hal ini memungkinkan Anda untuk menggunakan Libfabric sebagai penyedia jaringan saat menjalankan aplikasi berbasis NCCL. 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.9.2-aws/aws-ofi-nccl-1.9.2-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.9.2-aws.tar.gz && cd aws-ofi-nccl-1.9.2-aws
  5. Untuk menghasilkan file membuat file, jalankan skrip configure dan tentukan direktori penginstalan MPI, Libfabric, NCCL, dan CUDA.

    $ ./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 direktori Open MPI ke variabel PATH.

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

    $ make && sudo make install

Langkah 8: Instal uji NCCL

Instal uji NCCL. Uji NCCL memungkinkan Anda untuk mengonfirmasi bahwa NCCL diinstal dengan benar dan beroperasi sesuai harapan. Untuk informasi lebih lanjut tentang pengujian NCCL, lihat repositori nccl-tests.

Untuk menginstal pengujian EFA
  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 pengujian NCCL dan tentukan direktori penginstalan MPI, NCCL, dan CUDA.

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

Langkah 9: Uji konfigurasi EFA dan NCCL Anda

Jalankan pengujian untuk memastikan bahwa instans sementara Anda sudah dikonfigurasi dengan benar untuk EFA dan NCCL.

Untuk menguji konfigurasi EFA dan NCCL 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 GPU yang akan digunakan (-n). Perintah berikut menjalankan uji all_reduce_perf pada 8 GPU di instans itu sendiri, dan menentukan variabel lingkungan berikut.

    • FI_EFA_USE_DEVICE_RDMA=1—(hanya p4d.24xlarge) menggunakan fungsi RDMA perangkat untuk transfer satu sisi dan dua sisi.

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

    Untuk informasi lebih lanjut mengenai argumen uji NCCL, lihat Tes NCCL README dalam repositori nccl-tests resmi.

    • 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 pokok NCCL ketika log NCCL_DEBUG 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: Membuat AMI dengan EFA dan NCCL yang diaktifkan

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

Untuk membuat AMI dari instans sementara Anda
  1. Buka konsol Amazon EC2 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 tujuan AMI.

    3. Pilih Buat gambar.

  5. Di panel navigasi, pilih AMI.

  6. Temukan AMI 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 konsol Amazon EC2 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 instans yang diaktifkan EFA dan NCCL ke dalam grup penempatan klaster

Luncurkan instans yang diaktifkan EFA dan NCCL Anda ke dalam grup penempatan klaster menggunakan AMI yang diaktifkan EFA dan grup keamanan yang diaktifkan EFA yang Anda buat sebelumnya.

catatan
  • Meluncurkan instans yang diaktifkan EFA ke dalam grup penempatan kluster bukanlah persyaratan mutlak. Namun, kami menyarankan Anda untuk menjalankan instans yang diaktifkan EFA dalam grup penempatan klaster saat instans diluncurkan ke grup dengan latensi rendah di Zona Ketersediaan tunggal.

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

New console
Untuk meluncurkan instans sementara
  1. Buka konsol Amazon EC2 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 Application and OS Images, pilih AMI Saya, lalu pilih AMI yang Anda buat pada 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 instans untuk EFA.

    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 Ringkasan di sebelah kanan, untuk Jumlah instans, masukkan jumlah instans yang diaktifkan EFA yang ingin Anda luncurkan, lalu pilih Luncurkan instans.

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

  2. Pilih Luncurkan Instans.

  3. Di halaman Pilih AMI, pilih AMI saya, 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 instans yang diaktifkan EFA dan NCCL yang ingin Anda luncurkan.

    2. Untuk Jaringan dan Subnet, pilih VPC dan subnet sebagai tujuan peluncuran instans.

    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. Secara opsional, Anda dapat menentukan alamat IPv4 primer dan satu atau lebih alamat IPv4 sekunder. Jika Anda meluncurkan instans ke subnet yang memiliki blok CIDR IPv6 terkait, Anda dapat secara opsional menentukan alamat IPv6 primer dan satu atau lebih alamat IPv6 sekunder.

    7. Pilih Berikutnya: Tambahkan Penyimpanan.

  6. Di halaman Tambahkan Penyimpanan, tentukan volume yang akan dipasang ke instans 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: Mengaktifkan SSH tanpa kata sandi

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

Untuk mengaktifkan SSH tanpa kata sandi antar instans dalam klaster
  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. Membuat pasangan kunci RSA.

    $ 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 apakah SSH tanpa kata sandi berfungsi seperti yang diharapkan, hubungkan ke simpul 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.