您可以在整個 GPU 記憶體或僅在記憶體的專用磁碟分割中執行應用程式。vSphere Bitfusion 可以使用單一 CLI 命令配置 GPU、執行應用程式,以及取消配置 GPU,或者您可以使用個別命令執行相同的工作。
如何執行應用程式
vSphere Bitfusion 用戶端可以在遠端共用 GPU 上執行人工智慧 (AI) 和機器學習 (ML) 應用程式。
可以使用 run 命令為單一應用程式配置 GPU。依預設,應用程式會在 GPU 的整個記憶體資源中執行。必須從單一 vSphere Bitfusion 伺服器配置使用 run 命令所請求的所有 GPU,並且該伺服器必須將 GPU 列為具有不同 PCIe 位址的單獨裝置。
- 從共用集區配置 GPU。
- 當應用程式進行 CUDA 呼叫時,在環境中啟動可存取 GPU 的應用程式。
- 當應用程式關閉時取消配置 GPU。
-n num_gpus
引數在
vSphere Bitfusion 中啟動應用程式。若要區分
vSphere Bitfusion 引數與應用程式,請使用雙連字號分隔符號或將應用程式置於引號內。
bitfusion run -n num_gpus other switches -- applications and arguments
bitfusion run -n num_gpus other switches "applications and arguments"
例如,AI 應用程式 asimov_i.py 需要兩個引數:GPU 數目和批次大小。
- 如果應用程式預期具有 1 個 GPU,則執行 bitfusion run -n 1 -- python asimov_i.py --num_gpus=1 --batchsz=64
- 如果應用程式預期具有 2 個 GPU,則執行 bitfusion run -n 2 -- python asimov_i.py --num_gpus=2 --batchsz=64
如何使用部分 GPU 執行應用程式
可以在 GPU 記憶體的專用磁碟分割中執行您的應用程式,而其他應用程式可以使用其餘的 GPU 記憶體。
GPU 磁碟分割引數是選用的 run 命令引數。可以使用引數在 GPU 記憶體的磁碟分割中執行應用程式。
- GPU 磁碟分割程序是動態的。啟動具有部分引數的 run 命令時,vSphere Bitfusion 將在應用程式執行之前配置磁碟分割,之後再取消配置磁碟分割。
- 同時共用 GPU 的應用程式透過使用單獨的用戶端程序、網路串流、伺服器程序和記憶體磁碟分割相互隔離。
- vSphere Bitfusion 僅對 GPU 的記憶體進行磁碟分割,而不對計算資源進行。應用程式嚴格包含在指派的記憶體磁碟分割中,但如果需要,此應用程式可存取完整的計算資源。如果需要相同的計算儲存格,應用程式會爭用計算資源。,否則應用程式會同時執行。
磁碟分割大小可以 MB 為單位指定,或指定為 GPU 記憶體總計的一部分。
bitfusion run -n num_gpus -p gpu_fraction -- applications and arguments
以 MB 為單位對 GPU 記憶體大小進行磁碟分割
bitfusion run -n num_gpus -p MBs_per_gpu -- applications and arguments
GPU 磁碟分割範例
與單一應用程式相比,多個並行應用程式可能會更高效地使用 GPU 的計算容量。您可以使用多種方式對 GPU 的記憶體進行磁碟分割。
如果使用的推理應用程式具有較小的模型大小或小批次的工作 (例如映像數目),則可以在已進行磁碟分割的 GPU 上同時執行這些應用程式。
可以執行實證測試以瞭解應用程式所需的記憶體大小。某些應用程式會展開以使用所有可用的記憶體,但在超過特定臨界值的情況下可能無法獲得更佳效能。
下列範例假設您瞭解不同批次大小的可接受記憶體需求。
- 如果預期批次大小為 64 的應用程式需要不超過 66% 的 GPU 記憶體,請執行 bitfusion run -n 1 -p 0.66 -- python asimov_i.py --num_gpus=1 --batchsz=64
- 如果預期批次大小為 32 的應用程式需要不超過 5461 MB 的 GPU 記憶體,請執行 bitfusion run -n 1 -m 5461 -- python asimov_i.py --num_gpus=1 --batchsz=32
當您請求多個 GPU 時,所有 GPU 都會配置相同數量的記憶體。部分大小規格必須以具有最小記憶體數量的 GPU 為基礎。
在下列範例中,-p 引數會從兩個請求的 GPU 中的每一個 GPU 分別請求 33% 的記憶體。GPU 實際必須位於相同的伺服器上。如果 GPU 為 16 GB 裝置或最小 GPU 為 16 GB 裝置,則會在每個 GPU 上配置約 5461 MB。如果沒有其他應用程式正在執行,asimov_i.py 可存取兩個 GPU 的全部計算能力。
執行 bitfusion run -n 2 -p 0.33 -- python asimov_i.py --num_gpus=1 --batchsz=64
可以同時在同一個 GPU 上從單一用戶端執行多個應用程式。
- bitfusion run -n 1 -p 0.66 -- python asimov_i.py --num_gpus=1 --batchsz=64 &
- bitfusion run -n 1 -p 0.33 -- python asimov_i.py --num_gpus=1 --batchsz=32 &
NVIDIA 系統管理介面 (nvidia-smi)
例如,您可以執行 NVIDIA 系統管理介面 nvidia-smi 監控應用程式,以檢查 GPU 磁碟分割大小或驗證 vSphere Bitfusion 伺服器上的可用資源。通常,當您安裝 NVIDIA 驅動程式時,會在伺服器上提供此應用程式。
例如,若要瞭解 GPU 的功能或確定 GPU 記憶體大小調整,在 vSphere Bitfusion 用戶端上執行的應用程式不需要 NVIDIA 驅動程式,但可能需要 nvidia-smi 應用程式。為了支援此類作業,自 vSphere Bitfusion 3.0 起,將在所有 vSphere Bitfusion 用戶端上提供 nvidia-smi 應用程式。vSphere Bitfusion 將應用程式從伺服器複製到用戶端。
nvidia-smi 應用程式的輸出會顯示請求的磁碟分割值 1024MiB
。
Requested resources: Server List: 172.16.31.241:56001 Client idle timeout: 0 min Wed Sep 23 15:21:17 2020 +-----------------------------------------------------------------------------+ | NVIDIA-SMI 440.100 Driver Version: 440.64.00 CUDA Version: 10.2 | |-------------------------------+----------------------+----------------------+ | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | |===============================+======================+======================| | 0 Tesla T4 Off | 00000000:13:00.0 Off | 0 | | N/A 36C P8 9W / 70W | 0MiB / 1024MiB | 0% Default | +-------------------------------+----------------------+----------------------+ +-----------------------------------------------------------------------------+ | Processes: GPU Memory | | GPU PID Type Process name Usage | |=============================================================================| | No running processes found | +-----------------------------------------------------------------------------+
如何使用保留的 GPU 執行應用程式
您可以配置 GPU,並在同一 GPU 上執行多個應用程式。
雖然 run 命令能夠同時配置 GPU、執行應用程式和取消配置 GPU,但 vSphere Bitfusion 提供了三個單獨的命令來分別執行這些工作。
- 若要配置 GPU,請執行 request_gpus 命令。
- 若要啟動應用程式,請執行 client 命令。
- 若要取消配置 GPU,請執行 release_gpus 命令。
透過使用單獨命令,您可以對多個應用程式使用相同的 GPU,並在將 vSphere Bitfusion 整合至其他工具和工作流程 (例如,排程軟體 SLURM) 時提供更好的控制。
request_gpus
和
client
命令之間分割。
若要瞭解個別命令的使用情況,請參閱下列使用 AI 應用程式 asimov_i.py 的範例工作流程。
- 若要配置 GPU 以啟動多個連續的應用程式,請執行 bitfusion request_gpus -n 1 -m 5461。
Requested resources: Server List: 172.16.31.241:56001 Client idle timeout: 0 min
- 若要透過執行 client 命令啟動應用程式,請執行 bitfusion client nvidia-smi。
Wed Sep 23 15:26:02 2020 +-----------------------------------------------------------------------------+ | NVIDIA-SMI 440.100 Driver Version: 440.64.00 CUDA Version: 10.2 | |-------------------------------+----------------------+----------------------+ | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | |===============================+======================+======================| | 0 Tesla T4 Off | 00000000:13:00.0 Off | 0 | | N/A 36C P8 10W / 70W | 0MiB / 5461MiB | 0% Default | +-------------------------------+----------------------+----------------------+ +-----------------------------------------------------------------------------+ | Processes: GPU Memory | | GPU PID Type Process name Usage | |=============================================================================| | No running processes found | +-----------------------------------------------------------------------------+ |
- 若要透過執行 client 命令按順序在相同的 GPU 上啟動另一個應用程式,請執行 bitfusion client -- python asimov_i.py --num_gpus=1 --batchsz=64。
- 若要取消配置 GPU,請執行 bitfusion release_gpus。
如何在特定 GPU 和伺服器上執行應用程式
自 vSphere Bitfusion 4.0 起,可以使用 CLI 命令引數篩選資源集區中的 GPU,並在一組特定的 GPU 上啟動應用程式。
可以將 --filter
引數與 run、request_gpus 和 list_gpus 命令搭配使用,並對一組特定的 GPU 或伺服器執行命令。還可以組合使用篩選器,列出滿足多個條件的伺服器和 GPU。對於每種資料類型,必須使用適當的運算子,例如,<
、>
、>=
、<=
、=
或 !=
。
篩選器 | 資料類型 | 說明 |
---|---|---|
device.index |
以逗號分隔的整數清單 | GPU 的系統索引。例如,--filter "device.index=1" 或 --filter "device.index=0,1,2,3" 。若要查看 GPU 的索引,請執行 nvidia-smi 命令。 |
device.name |
字串 | GPU 裝置的型號名稱。例如,--filter "device.name=NVIDIA Tesla T4" 。 |
device.memory |
整數 | GPU 裝置的實體記憶體大小 (以 MB 為單位)。例如,對於記憶體大小為 16 GB 的 GPU 裝置,輸入 --filter "device.memory=16384" 。 |
device.capability |
版本 | NVIDIA 裝置 CUDA 計算能力。CUDA 計算能力是一種機制,即 NVIDIA 與 CUDA API 搭配使用以指定 GPU 支援的功能。值必須以 X 或 X.Y 格式輸入。例如,--filter "device.capability=8.0" 。如需詳細資訊,請參閱 NVIDIA CUDA GPU 說明文件。 |
server.addr |
字串 | vSphere Bitfusion 伺服器的 IP 位址。例如,--filter "server.addr=10.202.8.209" 。 |
server.hostname |
字串 | vSphere Bitfusion 伺服器的主機名稱。例如,--filter "server.hostname=bitfusion-server-4.0.0-13" 。 |
server.has-rdma |
布林值 | vSphere Bitfusion 伺服器使用 RDMA 網路連線。例如,--filter "server.has-rdma=true" 。 |
server.cuda-version |
版本 | vSphere Bitfusion 伺服器上安裝的 CUDA 版本。值必須以 X 、X.Y 或 X.Y.Z 格式輸入。例如,--filter "server.cuda-version=11.3" 。 |
server.driver-version |
版本 | vSphere Bitfusion 伺服器上安裝的 NVIDIA 驅動程式版本。值必須以 X 、X.Y 或 X.Y.Z 格式輸入。例如,--filter "server.driver-version=460.73" 。 |
bitfusion list_gpus --filter "device.memory>16384"
命令。
bitfusion run -n 1 --filter "device.capability=8.0" -- workload
命令。同樣,若要在僅具有 Volta GPU 微架構的 GPU 裝置上執行工作負載,請執行
bitfusion run -n 1 --filter "device.capability=7.0" -- workload
命令。
如何使用 vSphere Bitfusion 伺服器的備用清單執行應用程式
可以建立備用 vSphere Bitfusion 伺服器清單,並使用 run、request_gpus 和 list_gpus 命令在特定 GPU 上啟動應用程式。備用清單是 vSphere Bitfusion 在 ~/.bitfusion/servers.conf 檔案中維護的 GPU 伺服器的主要伺服器清單的子集。
vSphere Bitfusion 僅支援 IPv4 位址。
程序
- ♦ 使用 servers.conf 檔案或建立伺服器清單。
- 若要使用 vSphere Bitfusion 伺服器的備用 servers.conf 檔案,請執行
bitfusion run --servers value, -s value
,其中 value 引數是 servers.conf 檔案的檔案路徑。 - 若要建立 vSphere Bitfusion 伺服器的備用清單,請執行
bitfusion run --server_list value, -l value
,其中 value 引數是採用"ip_address:port;ip_address:port"
格式的伺服器清單。備註: 將清單括在引號內,因為在列出多個位址時,分號會用作分隔符號,而命令列解譯器可將清單剖析為多個命令。
- 若要使用 vSphere Bitfusion 伺服器的備用 servers.conf 檔案,請執行
如何變更可用 GPU 的等待時間
啟動應用程式時,依預設,vSphere Bitfusion 用戶端會等待長達 30 分鐘,以便有足夠的 GPU 可用。
若要修改 vSphere Bitfusion 用戶端等待可用 GPU 的預設時間,您可以將 --timeout value, -t value
引數新增至 run 和 request_gpus 命令。
10 | 10 秒 |
10s | 10 秒 |
10m | 10 分鐘 |
10h | 10 小時 |