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 untuk beban kerja ML di Amazon EC2
NVIDIA Collective Communications Library (NCCL) adalah perpustakaan rutinitas komunikasi kolektif standar untuk beberapa GPUs di satu node atau beberapa node. 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 basis Amazon Linux 2 dan Ubuntu 20.04/22.04 yang didukung. AMIs
-
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 AMIs, lihat Menggunakan EFA pada DLAMI di Panduan Pengembang.AWS Deep Learning AMIs
Langkah-langkah
- Langkah 1: Siapkan grup keamanan yang diaktifkan EFA
- Langkah 2: Luncurkan instans sementara
- Langkah 3: Instal driver Nvidia GPU, kit alat CUDA Nvidia, dan cuDNN
- Langkah 4: Instal GDRCopy
- Langkah 5: Instal perangkat lunak EFA
- Langkah 6: Instal NCCL
- Langkah 7: Instal uji NCCL
- Langkah 8: Uji konfigurasi EFA dan NCCL Anda
- Langkah 9: Instal aplikasi machine learning Anda
- Langkah 10: Membuat AMI dengan EFA dan NCCL yang diaktifkan
- Langkah 11: Mengakhiri instans sementara
- Langkah 12: Luncurkan instans yang diaktifkan EFA dan NCCL ke dalam grup penempatan klaster
- Langkah 13: Mengaktifkan SSH tanpa kata sandi
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 membuat grup keamanan yang memungkinkan semua lalu lintas masuk dan keluar ke dan dari dirinya sendiri, dan yang memungkinkan lalu lintas SSH 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 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
Buka EC2 konsol Amazon di https://console.aws.amazon.com/ec2/
. -
Dalam panel navigasi, pilih Grup Keamanan, lalu pilih Buat grup keamanan.
-
Di jendela Buat Grup Keamanan, lakukan hal berikut:
-
Untuk Nama grup keamanan, masukkan nama deskriptif untuk grup keamanan, seperti
EFA-enabled security group
. -
(Opsional) Untuk Deskripsi, masukkan deskripsi singkat grup keamanan.
-
Untuk VPC, pilih VPC untuk tujuan peluncuran instans Anda yang didukung EFA.
-
Pilih Buat grup keamanan.
-
-
Pilih grup keamanan yang Anda buat, dan pada tab Detail, salin ID grup keamanan.
-
Dengan grup keamanan yang masih dipilih, pilih Tindakan, Edit aturan masuk, lalu lakukan hal berikut:
-
Pilih Tambahkan aturan.
-
Untuk Tipe, pilih Semua lalu lintas.
-
Untuk Tipe sumber, pilih Kustom dan tempelkan ID grup keamanan yang Anda salin ke dalam bidang.
-
Pilih Tambahkan aturan.
-
Untuk Tipe, pilih SSH.
-
Untuk jenis Sumber, pilih Anywhere- IPv4.
-
Pilih Simpan aturan.
-
-
Dengan grup keamanan yang masih dipilih, pilih Tindakan, Edit aturan keluar, lalu lakukan hal berikut:
-
Pilih Tambahkan aturan.
-
Untuk Tipe, pilih Semua lalu lintas.
-
Untuk Tipe tujuan, pilih Kustom dan tempelkan ID grup keamanan yang Anda salin ke dalam bidang.
-
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
Buka EC2 konsol Amazon di https://console.aws.amazon.com/ec2/
. -
Di panel navigasi, pilih Instans, lalu pilih Luncurkan Instans untuk membuka wizard peluncuran instans baru.
-
(Opsional) Di bagian Nama dan tanda, berikan nama untuk instans, seperti
EFA-instance
. Nama ditetapkan ke instans sebagai tanda sumber daya (Name=
).EFA-instance
-
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.
-
Di bagian Tipe instans, pilih
p3dn.24xlarge
,p4d.24xlarge
, ataup5.48xlarge
. -
Pada bagian Pasangan kunci, pilih pasangan kunci yang akan digunakan untuk instans.
-
Di bagian Pengaturan jaringan, pilih Edit, lalu lakukan hal berikut:
-
Untuk Subnet, pilih subnet untuk meluncurkan instans. Jika Anda tidak memilih subnet, Anda tidak dapat mengaktifkan instans untuk EFA.
-
Untuk Firewall (grup keamanan), pilih Pilih grup keamanan yang ada, lalu pilih grup keamanan yang Anda buat di langkah sebelumnya.
-
Perluas bagian Konfigurasi jaringan lanjutan.
Untuk antarmuka Jaringan 1, pilih Indeks kartu jaringan = 0, Indeks perangkat = 0, dan Jenis antarmuka = EFA dengan ENA.
(Opsional) Jika Anda menggunakan jenis instans multi-kartu, seperti
p4d.24xlarge
ataup5.48xlarge
, untuk setiap antarmuka jaringan tambahan yang diperlukan, pilih Tambahkan antarmuka jaringan, untuk indeks kartu jaringan pilih indeks berikutnya yang tidak digunakan, lalu pilih Indeks perangkat = 1 dan Jenis antarmuka = EFA dengan ENA atau EFA saja.
-
-
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. -
Di panel Ringkasan di sebelah kanan, pilih Luncurkan instans.
Langkah 3: Instal driver Nvidia GPU, kit alat CUDA Nvidia, dan cuDNN
Langkah 4: Instal GDRCopy
Instal GDRCopy untuk meningkatkan kinerja Libfabric. Untuk informasi selengkapnyaGDRCopy, lihat GDRCopy repositori
Langkah 5: Instal perangkat lunak EFA
Instal kernel berkemampuan EFA, driver EFA, Libfabric, aws-ofi-nccl plugin, dan tumpukan MPI Terbuka yang diperlukan untuk mendukung EFA pada instans Anda.
Untuk menginstal perangkat lunak EFA
-
Hubungkan ke instans yang Anda luncurkan. Untuk informasi selengkapnya, lihat Connect ke instans Linux Anda menggunakan SSH.
-
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.$
curl -O https://efa-installer.amazonaws.com/aws-efa-installer-1.38.0.tar.gzAnda juga bisa mendapatkan versi terbaru dengan mengganti nomor versi dengan
latest
dalam perintah sebelumnya. (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 lebih suka memverifikasi file tarball dengan menggunakan MD5 atau SHA256 checksum sebagai gantinya, lihat. Memverifikasi penginstal EFA menggunakan checksum
-
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.keyPerintah tersebut harus mengembalikan nilai kunci. Catat nilai kunci, karena Anda membutuhkannya di langkah selanjutnya.
-
Verifikasi sidik jari kunci GPG. Jalankan perintah berikut dan tentukan nilai kunci dari langkah sebelumnya.
$
gpg --fingerprintkey_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 Dukungan. -
Unduh file tanda tangan dan verifikasi tanda tangan pada file tarball EFA.
$
wget https://efa-installer.amazonaws.com/aws-efa-installer-1.38.0.tar.gz.sig && gpg --verify ./aws-efa-installer-1.38.0.tar.gz.sigBerikut 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 Dukungan.
-
-
Ekstraksi file dari file
.tar.gz
yang dikompresi dan navigasi ke dalam direktori yang diekstraksi.$
tar -xf aws-efa-installer-1.38.0.tar.gz && cd aws-efa-installer -
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=openmpi4Libfabric diinstal di
/opt/amazon/efa
direktori. aws-ofi-nccl Plugin diinstal di/opt/amazon/ofi-nccl
direktori. Open MPI diinstal di/opt/amazon/openmpi
direktori. -
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.
-
Pastikan bahwa komponen perangkat lunak EFA telah berhasil diinstal.
$
fi_info -p efa -t FI_EP_RDMPerintah tersebut harus mengembalikan informasi tentang antarmuka Libfabric EFA. Contoh berikut menunjukkan output perintah.
-
p3dn.24xlarge
dengan satu antarmuka jaringanprovider: 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
danp5.48xlarge
dengan berbagai antarmuka jaringanprovider: 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
-
Buka direktori
/opt
tersebut.$
cd /opt -
Gandakan repositori NCCL resmi ke instans dan navigasi ke repositori klon lokal.
$
sudo git clone https://github.com/NVIDIA/nccl.git -b v2.23.4-1 && cd nccl -
Bangun dan instal NCCL dan tentukan direktori instalasi CUDA.
$
sudo make -j src.build CUDA_HOME=/usr/local/cuda
Langkah 7: 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
-
Navigasi ke direktori beranda Anda.
$
cd $HOME -
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 -
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
-
-
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 8: 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
-
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. -
Jalankan pengujian dan tentukan file host (
--hostfile
) dan jumlah GPUs yang akan digunakan (-n
). Perintah berikut menjalankanall_reduce_perf
pengujian pada 8 GPUs pada instance itu sendiri, dan menentukan variabel lingkungan berikut.-
FI_EFA_USE_DEVICE_RDMA=1
—(hanyap4d.24xlarge
) menggunakan fungsi RDMA perangkat untuk transfer satu sisi dan dua sisi. -
NCCL_DEBUG=INFO
—memungkinkan output debug terperinci. Anda juga dapat menentukanVERSION
untuk mencetak versi NCCL saja di awal pengujian, atauWARN
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/amazon/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
danp5.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/amazon/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
-
-
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 9: 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 10: 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
Buka EC2 konsol Amazon di https://console.aws.amazon.com/ec2/
. -
Di panel navigasi, pilih Instans.
-
Pilih instans sementara yang Anda buat dan pilih Tindakan, Gambar, Buat gambar.
-
Untuk Buat gambar, lakukan hal berikut:
-
Untuk Nama gambar, masukkan nama deskriptif untuk AMI.
-
(Opsional) Untuk Deskripsi gambar, masukkan deskripsi singkat tentang tujuan AMI.
-
Pilih Buat gambar.
-
-
Di panel navigasi, pilih AMIs.
-
Temukan AMI yang Anda buat dalam daftar. Tunggu hingga status berubah dari
pending
menjadiavailable
sebelum melanjutkan ke langkah berikutnya.
Langkah 11: 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
Buka EC2 konsol Amazon di https://console.aws.amazon.com/ec2/
. -
Di panel navigasi, pilih Instans.
-
Pilih instans sementara yang Anda buat dan pilih Tindakan, Status instans, Akhiri instans.
-
Ketika diminta konfirmasi, pilih Akhiri.
Langkah 12: 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 Buat Reservasi Kapasitas dalam grup penempatan klaster.
Langkah 13: 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
-
Pilih satu instans dalam klaster sebagai simpul pemimpin, dan hubungkan ke instans tersebut.
-
Nonaktifkan
strictHostKeyChecking
dan aktifkanForwardAgent
pada simpul pemimpin. Buka~/.ssh/config
menggunakan editor teks pilihan Anda dan tambahkan berikut ini.Host * ForwardAgent yes Host * StrictHostKeyChecking no
-
Membuat pasangan kunci RSA.
$
ssh-keygen -t rsa -N "" -f ~/.ssh/id_rsaPasangan kunci dibuat dalam direktori
$HOME/.ssh/
. -
Ubah izin kunci privat pada simpul pemimpin.
$
chmod 600 ~/.ssh/id_rsa chmod 600 ~/.ssh/config -
Buka
~/.ssh/id_rsa.pub
menggunakan editor teks pilihan Anda dan salin kunci. -
Untuk setiap simpul anggota di klaster, lakukan hal berikut:
-
Hubungkan dengan instans.
-
Buka
~/.ssh/authorized_keys
menggunakan editor teks pilihan Anda tambahkan kunci publik yang Anda salin sebelumnya.
-
-
Untuk menguji apakah SSH tanpa kata sandi berfungsi seperti yang diharapkan, hubungkan ke simpul pemimpin Anda dan jalankan perintah berikut.
$
sshmember_node_private_ip
Anda harus terhubung ke simpul anggota tanpa diminta untuk memasukkan kunci atau kata sandi.