本頁說明如何建立使用較高網路頻寬的 A2、G2 和 N1 執行個體。如要瞭解如何為其他加速器最佳化機型系列使用更高的網路頻寬,請參閱建立高頻寬 GPU 機器。
您可以提高網路頻寬 (100 Gbps 以上),提升在 GPU VM 上執行的分散式工作負載效能。在 Compute Engine 上,如果 A2、G2 和 N1 VM 附加 GPU,則可用的網路頻寬會更高,如下所示:
- 對於附加 T4 和 V100 GPU 的 N1 一般用途 VM,根據 GPU 和 vCPU 數量的組合,您最多可獲得 100 Gbps 的網路頻寬。
- 對於 A2 和 G2 加速器最佳化 VM,視機型而定,您最多可獲得 100 Gbps 的網路頻寬。
如要查看支援這些較高網路頻寬速率的設定或機器類型,請參閱「網路頻寬和 GPU」。
如需 Compute Engine 的一般網路頻寬資訊,請參閱「網路頻寬」。
總覽
如要使用各 GPU VM 適用的較高網路頻寬,請完成下列建議步驟:
- 使用支援 Google 虛擬 NIC (gVNIC) 的 OS 映像檔建立 GPU VM。
- 選用:安裝 Fast Socket。 Fast Socket 可減少多個 TCP 連線之間的爭用,進而提升 100 Gbps 以上網路的 NCCL 效能。部分深度學習 VM 映像檔 (DLVM) 已預先安裝 Fast Socket。
使用深度學習 VM 映像檔
您可以從深度學習 VM 映像檔專案,使用任何支援 GPU 的映像檔建立 VM。所有支援 GPU 的 DLVM 映像檔都已預先安裝 GPU 驅動程式、機器學習軟體和 gVNIC。如需 DLVM 映像檔清單,請參閱「選擇映像檔」。
如要使用快速通訊端,可以選擇 DLVM 映像檔,例如:tf-latest-gpu-debian-10
或 tf-latest-gpu-ubuntu-1804
。
建立使用較高網路頻寬的 VM
如要提高網路頻寬,建議啟用 Google 虛擬 NIC (gVNIC)。詳情請參閱「使用 Google Virtual NIC」。
如要建立附加 GPU 且網路頻寬較高的 VM,請完成下列步驟:
- 查看各機器類型可用的最大網路頻寬,這些機器類型已附加 GPU。
建立 GPU VM。下列範例說明如何建立 A2 和 N1,並附加 V100 VM。
在這些範例中,VM 是使用 Google Cloud CLI 建立。不過,您也可以使用 Google Cloud console 或 Compute Engine API 建立這些 VM。如要進一步瞭解如何建立 GPU VM,請參閱「建立連接 GPU 的 VM」。
A2 (A100)
舉例來說,如要建立頻寬上限為 100 Gbps、附加八個 A100 GPU,並使用
tf-latest-gpu
DLVM 映像檔的 VM,請執行下列指令: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
更改下列內容:
VM_NAME
:VM 名稱PROJECT_ID
:您的專案 IDZONE
:VM 所在的可用區。這個區域必須支援指定的 GPU 類型。如要進一步瞭解區域,請參閱 GPU 地區和區域供應情形。
N1 (V100)
舉例來說,如要建立頻寬上限為 100 Gbps、附加八個 V100 GPU,並使用
tf-latest-gpu
DLVM 映像檔的 VM,請執行下列指令: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
如果您未使用支援 GPU 的深度學習 VM 映像檔或 Container-Optimized OS,請安裝 GPU 驅動程式。詳情請參閱「安裝 GPU 驅動程式」。
選用:在 VM 上安裝 Fast Socket。
設定 VM 後,您可以驗證網路頻寬。
安裝 Fast Socket
TensorFlow、PyTorch、Horovod 等深度學習架構會使用 NVIDIA Collective Communications Library (NCCL),進行多 GPU 和多節點訓練。
Fast Socket 是 Google 專有的 NCCL 網路傳輸方式。在 Compute Engine 上,Fast Socket 可減少多個 TCP 連線之間的爭用,進而提升 100 Gbps 網路的 NCCL 效能。如要進一步瞭解如何使用 NCCL,請參閱 NCCL 使用手冊。
目前的評估結果顯示,Fast Socket 可將全縮減輸送量提升 30% 至 60%,實際提升幅度取決於訊息大小。
如要設定 Fast Socket 環境,您可以使用預先安裝 Fast Socket 的深度學習 VM 映像檔,也可以在 Linux VM 上手動安裝 Fast Socket。如要確認是否已預先安裝 Fast Socket,請參閱「確認 Fast Socket 已啟用」。
在 Linux VM 上安裝 Fast Socket 前,請先安裝 NCCL。 如需詳細操作說明,請參閱 NVIDIA NCCL 說明文件。
CentOS/RHEL
如要在 CentOS 或 RHEL VM 上下載及安裝 Fast Socket,請完成下列步驟:
新增套件存放區並匯入公開金鑰。
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
安裝 Fast Socket。
sudo yum install google-fast-socket
確認 Fast Socket 已啟用。
SLES
如要在 SLES VM 上下載及安裝 Fast Socket,請完成下列步驟:
新增套件存放區。
sudo zypper addrepo https://packages.cloud.google.com/yum/repos/google-fast-socket google-fast-socket
新增存放區金鑰。
sudo rpm --import https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
安裝 Fast Socket。
sudo zypper install google-fast-socket
確認 Fast Socket 已啟用。
Debian/Ubuntu
如要在 Debian 或 Ubuntu VM 上下載及安裝 Fast Socket,請完成下列步驟:
新增套件存放區。
echo "deb https://packages.cloud.google.com/apt google-fast-socket main" | sudo tee /etc/apt/sources.list.d/google-fast-socket.list
新增存放區金鑰。
curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
安裝 Fast Socket。
sudo apt update && sudo apt install google-fast-socket
確認 Fast Socket 已啟用。
確認是否已啟用快速 Socket
在 VM 上完成下列步驟:
找出 NCCL 主目錄。
sudo ldconfig -p | grep nccl
舉例來說,在 DLVM 映像檔上,您會看到下列輸出內容:
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
這表示 NCCL 主目錄為
/usr/local/nccl2
。確認 NCCL 載入 Fast Socket 外掛程式。如要檢查,請下載 NCCL 測試套件。如要下載測試套件,請執行下列指令:
git clone https://github.com/NVIDIA/nccl-tests.git && \ cd nccl-tests && make NCCL_HOME=NCCL_HOME_DIRECTORY
將
NCCL_HOME_DIRECTORY
替換為 NCCL 主目錄。從
nccl-tests
目錄執行all_reduce_perf
程序:NCCL_DEBUG=INFO build/all_reduce_perf
如果啟用快速 Socket,輸出記錄檔中會顯示
FastSocket plugin initialized
訊息。# 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 ......
檢查網路頻寬
本節說明如何檢查 A3 Mega、A3 High、A3 Edge、A2、G2 和 N1 執行個體的網路頻寬。使用高頻寬 GPU 時,您可以運用 iperf2 等網路流量工具測量網路頻寬。
如要檢查頻寬速度,您需要至少兩個已附加 GPU 的 VM,且兩者都支援您測試的頻寬速度。
在 Debian 系統上使用 iPerf 執行基準測試。
建立兩個可支援所需頻寬速度的 VM。
兩個 VM 執行個體都啟動後,請使用 SSH 連線至其中一個 VM。
gcloud compute ssh VM_NAME \ --project=PROJECT_ID
更改下列內容:
VM_NAME
:第一個 VM 的名稱PROJECT_ID
:您的專案 ID
在第一個 VM 上完成下列步驟:
安裝「
iperf
」。sudo apt-get update && sudo apt-get install iperf
取得這個 VM 的內部 IP 位址。請寫下這些資訊,以便追蹤。
ip a
啟動 iPerf 伺服器。
iperf -s
這會啟動伺服器,監聽連線以執行基準測試。在測試期間,請讓這項服務持續執行。
從新的用戶端終端機,使用 SSH 連線至第二部 VM。
gcloud compute ssh VM_NAME \ --project=PROJECT_ID
更改下列內容:
VM_NAME
:第二個 VM 的名稱PROJECT_ID
:您的專案 ID
在第二部 VM 上,完成下列步驟:
安裝 iPerf。
sudo apt-get update && sudo apt-get install iperf
執行 iperf 測試,並將第一個 VM 的 IP 位址指定為目標。
iperf -t 30 -c internal_ip_of_instance_1 -P 16
這會執行 30 秒的測試,並產生類似下列輸出內容的結果。如果 iPerf 無法連線至其他 VM,您可能需要調整 VM 上的網路或防火牆設定,或是在 Google Cloud 控制台中調整。
使用 100 Gbps 或 1000 Gbps 的最大可用頻寬 (A3 Mega、A3 High 或 A3 Edge) 時,請注意下列事項:
由於乙太網路、IP 和 TCP 等網路通訊協定的封包標頭負擔,以及虛擬化堆疊的影響,
netperf
測得的總處理量會飽和在 90 Gbps 或 800 Gbps 左右 (A3 Mega、A3 High 或 A3 Edge)。一般稱為「有效輸送量」。TCP 可達到 100 或 1000 Gbps 的網路速度。其他通訊協定 (例如 UDP) 的速度較慢。
由於通訊協定負荷和網路壅塞等因素,資料串流的端對端效能可能會略有降低。
您必須使用多個 TCP 串流,才能在 VM 執行個體之間達到最大頻寬。Google 建議使用 4 到 16 個串流。16 個流程通常可將總處理量提升至最高。視應用程式和軟體堆疊而定,您可能需要調整應用程式或程式碼的設定,才能設定多個串流。
後續步驟
- 如要監控 GPU 效能,請參閱「監控 GPU 效能」。
- 如要處理 GPU 主機維護作業,請參閱「處理 GPU 主機維護事件」。