Anda dapat menggunakan bandwidth jaringan yang lebih tinggi, yaitu 100 Gbps atau lebih, untuk meningkatkan performa workload terdistribusi yang berjalan di VM GPU.
Bandwidth jaringan yang lebih tinggi tersedia untuk VM dengan GPU yang terpasang di Compute Engine sebagai berikut:
- Untuk VM tujuan umum N1 yang memasang GPU T4 dan V100, Anda bisa mendapatkan bandwidth jaringan maksimum hingga 100 Gbps, berdasarkan kombinasi jumlah GPU dan vCPU.
- Untuk VM A2 dan G2 yang dioptimalkan akselerator, Anda bisa mendapatkan bandwidth jaringan maksimum hingga 100 Gbps, berdasarkan jenis mesin.
- Untuk VM yang dioptimalkan akselerator A3, Anda bisa mendapatkan bandwidth jaringan maksimum hingga 1.800 Gbps.
Untuk meninjau konfigurasi atau jenis mesin yang mendukung kecepatan bandwidth jaringan yang lebih tinggi ini, lihat Bandwidth jaringan dan GPU.
Untuk informasi bandwidth jaringan umum di Compute Engine, lihat Bandwidth jaringan.
Ringkasan
Untuk menggunakan bandwidth jaringan yang lebih tinggi yang tersedia untuk setiap VM GPU, selesaikan langkah-langkah yang direkomendasikan berikut:
- Buat VM GPU menggunakan image OS yang mendukung Google Virtual NIC (gVNIC). Untuk VM A3, sebaiknya gunakan image Container-Optimized OS.
- Opsional: Instal Fast Socket. Fast Socket meningkatkan performa NCCL pada jaringan 100 Gbps atau lebih tinggi dengan mengurangi pertentangan antara beberapa koneksi TCP. Beberapa Deep Learning VM Image (DLVM) telah diinstal lebih dulu dengan Fast Socket.
Menggunakan Deep Learning VM Image
Anda dapat membuat VM menggunakan image apa pun yang didukung GPU dari project Deep Learning VM Images. Semua gambar DLVM yang didukung GPU memiliki driver GPU, software ML, dan gVNIC bawaan. Untuk daftar image DLVM, lihat Memilih image.
Jika ingin menggunakan Fast Socket, Anda dapat memilih image DLVM seperti:
tf-latest-gpu-debian-10
atau tf-latest-gpu-ubuntu-1804
.
Membuat VM yang menggunakan bandwidth jaringan yang lebih tinggi
Untuk bandwidth jaringan yang lebih tinggi, sebaiknya aktifkan Google Virtual NIC (gVNIC). Untuk informasi selengkapnya, lihat Menggunakan NIC Virtual Google.
Untuk VM A3, gVNIC versi 1.4.0rc3 atau yang lebih baru diperlukan. Versi driver ini tersedia di Container-Optimized OS. Untuk semua sistem operasi lainnya, Anda harus menginstal gVNIC versi 1.4.0rc3 atau yang lebih baru.
Untuk membuat VM dengan GPU yang terpasang dan bandwidth jaringan yang lebih tinggi, selesaikan hal berikut:
- Tinjau bandwidth jaringan maksimum yang tersedia untuk setiap jenis mesin yang telah memasang GPU.
Buat VM GPU Anda. Contoh berikut menunjukkan cara membuat A3, A2, dan N1 dengan VM V100 yang terpasang.
Dalam contoh ini, VM dibuat menggunakan Google Cloud CLI. Namun, Anda juga dapat menggunakan konsol Google Cloud atau Compute Engine API untuk membuat VM ini. Untuk mengetahui informasi selengkapnya tentang cara membuat VM GPU, lihat Membuat VM dengan GPU yang terpasang.
A3 (H100)
Untuk petunjuk mendetail tentang cara menyiapkan VM A3 untuk memaksimalkan performa jaringan, tinjau hal berikut:
- Untuk VM
a3-edgegpu-8g
dana3-highgpu-8g
, lihat Membuat VM A3 dengan GPUDirect-TCPX diaktifkan. - Untuk VM
a3-megagpu-8g
, lihat Men-deploy cluster A3 Mega Slurm untuk pelatihan ML.
A2 (A100)
Misalnya, untuk membuat VM yang memiliki bandwidth maksimum 100 Gbps, memiliki delapan GPU A100 yang terpasang, dan menggunakan image DLVM
tf-latest-gpu
, jalankan perintah berikut:gcloud compute instances create VM_NAME \ --project=PROJECT_ID \ --zone=ZONE \ --machine-type=a2-highgpu-8g \ --maintenance-policy=TERMINATE --restart-on-failure \ --image-family=tf-latest-gpu \ --image-project=deeplearning-platform-release \ --boot-disk-size=200GB \ --network-interface=nic-type=GVNIC \ --metadata="install-nvidia-driver=True,proxy-mode=project_editors" \ --scopes=https://www.googleapis.com/auth/cloud-platform
Ganti kode berikut:
VM_NAME
: nama VM AndaPROJECT_ID
: Project ID Anda.ZONE
: zona untuk VM. Zona ini harus mendukung jenis GPU yang ditentukan. Untuk informasi selengkapnya tentang zona, lihat Ketersediaan region dan zona GPU.
N1 (V100)
Misalnya, untuk membuat VM yang memiliki bandwidth maksimum 100 Gbps, memiliki delapan GPU V100 yang terpasang, dan menggunakan image DLVM
tf-latest-gpu
, jalankan perintah berikut:gcloud compute instances create VM_NAME \ --project PROJECT_ID \ --custom-cpu 96 \ --custom-memory 624 \ --image-project=deeplearning-platform-release \ --image-family=tf-latest-gpu \ --accelerator type=nvidia-tesla-v100,count=8 \ --maintenance-policy TERMINATE \ --metadata="install-nvidia-driver=True" \ --boot-disk-size 200GB \ --network-interface=nic-type=GVNIC \ --zone=ZONE
- Untuk VM
Jika Anda tidak menggunakan Deep Learning VM Image atau OS yang Dioptimalkan Penampung yang didukung GPU, instal driver GPU. Untuk mengetahui informasi selengkapnya, lihat Menginstal driver GPU.
Opsional: Di VM, Instal Fast Socket.
Setelah menyiapkan VM, Anda dapat memverifikasi bandwidth jaringan.
Menginstal Fast Socket
NVIDIA Collective Communications Library (NCCL) digunakan oleh framework deep learning seperti TensorFlow, PyTorch, Horovod untuk pelatihan multi-GPU dan multi-node.
Fast Socket adalah transpor jaringan eksklusif Google untuk NCCL. Di Compute Engine, Fast Socket meningkatkan performa NCCL pada jaringan 100 Gbps dengan mengurangi pertentangan antara beberapa koneksi TCP. Untuk informasi selengkapnya tentang menggunakan NCCL, lihat Panduan pengguna NCCL.
Evaluasi saat ini menunjukkan bahwa Fast Socket meningkatkan throughput all-reduce sebesar 30%–60%, bergantung pada ukuran pesan.
Untuk menyiapkan lingkungan Fast Socket, Anda dapat menggunakan Image VM Deep Learning yang telah menginstal Fast Socket sebelumnya, atau Anda dapat menginstal Fast Socket secara manual di VM Linux. Untuk memeriksa apakah Fast Socket sudah diprainstal, lihat Memverifikasi bahwa Fast Socket telah diaktifkan.
Sebelum menginstal Fast Socket di VM Linux, Anda perlu menginstal NCCL. Untuk mengetahui petunjuk mendetail, lihat dokumentasi NVIDIA NCCL.
CentOS/RHEL
Untuk mendownload dan menginstal Fast Socket di VM CentOS atau RHEL, jalankan langkah-langkah berikut:
Tambahkan repository paket dan impor kunci publik.
sudo tee /etc/yum.repos.d/google-fast-socket.repo << EOM [google-fast-socket] name=Fast Socket Transport for NCCL baseurl=https://packages.cloud.google.com/yum/repos/google-fast-socket enabled=1 gpgcheck=0 repo_gpgcheck=0 gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg EOM
Instal Fast Socket.
sudo yum install google-fast-socket
Pastikan Fast Socket telah diaktifkan.
SLES
Untuk mendownload dan menginstal Fast Socket di VM SLES, jalankan langkah-langkah berikut:
Tambahkan repository paket.
sudo zypper addrepo https://packages.cloud.google.com/yum/repos/google-fast-socket google-fast-socket
Tambahkan kunci repositori.
sudo rpm --import https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
Instal Fast Socket.
sudo zypper install google-fast-socket
Pastikan Fast Socket telah diaktifkan.
Debian/Ubuntu
Untuk mendownload dan menginstal Fast Socket di VM Debian atau Ubuntu, jalankan langkah-langkah berikut:
Tambahkan repository paket.
echo "deb https://packages.cloud.google.com/apt google-fast-socket main" | sudo tee /etc/apt/sources.list.d/google-fast-socket.list
Tambahkan kunci repositori.
curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
Instal Fast Socket.
sudo apt update && sudo apt install google-fast-socket
Pastikan Fast Socket telah diaktifkan.
Memverifikasi bahwa Fast Socket telah diaktifkan
Di VM Anda, jalankan langkah-langkah berikut:
Temukan direktori beranda NCCL.
sudo ldconfig -p | grep nccl
Misalnya, di image DLVM, Anda mendapatkan output berikut:
libnccl.so.2 (libc6,x86-64) => /usr/local/nccl2/lib/libnccl.so.2 libnccl.so (libc6,x86-64) => /usr/local/nccl2/lib/libnccl.so libnccl-net.so (libc6,x86-64) => /usr/local/nccl2/lib/libnccl-net.so
Ini menunjukkan bahwa direktori beranda NCCL adalah
/usr/local/nccl2
.Pastikan NCCL memuat plugin Fast Socket. Untuk memeriksanya, Anda perlu mendownload paket pengujian NCCL. Untuk mendownload paket pengujian, jalankan perintah berikut:
git clone https://github.com/NVIDIA/nccl-tests.git && \ cd nccl-tests && make NCCL_HOME=NCCL_HOME_DIRECTORY
Ganti
NCCL_HOME_DIRECTORY
dengan direktori beranda NCCL.Dari direktori
nccl-tests
, jalankan prosesall_reduce_perf
:NCCL_DEBUG=INFO build/all_reduce_perf
Jika Fast Socket diaktifkan, pesan
FastSocket plugin initialized
akan ditampilkan di log output.# nThread 1 nGpus 1 minBytes 33554432 maxBytes 33554432 step: 1048576(bytes) warmup iters: 5 iters: 20 validation: 1 # # Using devices # Rank 0 Pid 63324 on fast-socket-gpu device 0 [0x00] Tesla V100-SXM2-16GB ..... fast-socket-gpu:63324:63324 [0] NCCL INFO NET/FastSocket : Flow placement enabled. fast-socket-gpu:63324:63324 [0] NCCL INFO NET/FastSocket : queue skip: 0 fast-socket-gpu:63324:63324 [0] NCCL INFO NET/FastSocket : Using [0]ens12:10.240.0.24 fast-socket-gpu:63324:63324 [0] NCCL INFO NET/FastSocket plugin initialized ......
Memeriksa bandwidth jaringan
Saat menangani GPU dengan bandwidth tinggi, Anda dapat menggunakan alat traffic jaringan, seperti iperf2, untuk mengukur bandwidth jaringan.
Untuk memeriksa kecepatan bandwidth, Anda memerlukan setidaknya dua VM yang telah dipasangi GPU dan keduanya dapat mendukung kecepatan bandwidth yang sedang Anda uji.
Gunakan iPerf untuk menjalankan tolok ukur pada sistem berbasis Debian.
Buat dua VM yang dapat mendukung kecepatan bandwidth yang diperlukan.
Setelah kedua VM berjalan, gunakan SSH untuk terhubung dengan salah satu VM.
gcloud compute ssh VM_NAME \ --project=PROJECT_ID
Ganti kode berikut:
VM_NAME
: nama VM pertamaPROJECT_ID
: Project ID Anda.
Di VM pertama, jalankan langkah-langkah berikut:
Instal
iperf
.sudo apt-get update && sudo apt-get install iperf
Dapatkan alamat IP internal untuk VM ini. Lacak dengan menuliskannya.
ip a
Mulai server iPerf.
iperf -s
Tindakan ini akan memulai server yang memproses koneksi untuk melakukan tolok ukur. Biarkan ini tetap berjalan selama durasi pengujian.
Dari terminal klien baru, hubungkan ke VM kedua menggunakan SSH.
gcloud compute ssh VM_NAME \ --project=PROJECT_ID
Ganti kode berikut:
VM_NAME
: nama VM keduaPROJECT_ID
: Project ID Anda.
Di VM kedua, jalankan langkah-langkah berikut:
Instal iPerf.
sudo apt-get update && sudo apt-get install iperf
Jalankan pengujian iperf, lalu tentukan alamat IP VM pertama sebagai target.
iperf -t 30 -c internal_ip_of_instance_1 -P 16
Tindakan ini akan menjalankan pengujian selama 30 detik dan memberikan hasil yang menyerupai output berikut. Jika iPerf tidak dapat menjangkau VM lain, Anda, mungkin perlu menyesuaikan jaringan atau setelan firewall di VM, atau mungkin di konsolK Google Cloud.
Saat Anda menggunakan bandwidth maksimum yang tersedia sebesar 100 Gbps atau 1000 Gbps (A3), perhatikan pertimbangan berikut:
Karena overhead header untuk protokol seperti Ethernet, IP, dan TCP pada stack virtualisasi, throughput, yang diukur oleh
netperf
, akan mencapai saturasi pada sekitar 90 Gbps atau 800 Gbps (A3). Umumnya dikenal sebagai goodput.TCP dapat mencapai kecepatan jaringan 100 atau 1.000 Gbps. Protokol lain, seperti UDP, lebih lambat.
Karena faktor seperti overhead protokol dan kemacetan jaringan, performa aliran data menyeluruh mungkin sedikit lebih rendah.
Anda harus menggunakan beberapa aliran TCP untuk mencapai bandwidth maksimum antar-instance VM. Google merekomendasikan 4 hingga 16 aliran. Pada 16 aliran, Anda akan sering memaksimalkan throughput. Bergantung pada stack aplikasi dan software, Anda mungkin perlu menyesuaikan setelan untuk aplikasi atau kode untuk menyiapkan beberapa aliran data.
Apa langkah selanjutnya?
- Untuk memantau performa GPU, lihat Memantau performa GPU.
- Untuk menangani pemeliharaan host GPU, lihat Menangani peristiwa pemeliharaan host GPU.