GPU 已經成為支撐 AI 應用的一種關鍵計算加速設備,GPU 的多處理器架構非常適合用來加快深度神經網路應用中的大量矩陣運算過程。大量實測資料表明,跟通用處理器相比,GPU 在運行深度神經網路時具有顯著的效能優勢。在虛擬機器中使用 GPU 主要有三種設置:DirectPath I/O、NVIDIA vGPU、vSphere Bitfusion,我們來比較一下這幾種方法的優缺點。

 

1. DirectPath I/O (直通)

這種方法是在 vSphere 虛機上使用 GPU 的“最小干預”途徑,ESXi hypervisor 把 GPU 設備直接映射成虛機中的 GPU 設備,供應用使用。

DirectPath I/O 方法適用於需要佔用一塊或多塊物理 GPU 進行機器學習訓練,並且訓練需要一段時間的場景。這種情況下機器學習模型和資料可能會消耗 GPU 的所有內核和記憶體,通常是長期運行的模型訓練工作。DirectPath I/O 方法通常用於高性能計算方案中,例如計算密集型的模擬或科學計算工作。

DirectPath I/O方法的優點:

  • 所有版本的 vSphere 都支持 DirectPath I/O,虛機的作業系統裡需要安裝 GPU 驅動程式。
  • 可以將1塊或多塊 GPU 分配給一個 虛機以充分利用多塊 GPU 疊加的計算能力。
  • 使用者具有對 GPU 記憶體和內核獨佔訪問權,沒有共用的 GPU 記憶體或內核,因此不會受到其他用戶的干擾。
  • 事實證明 DirectPath I/O 所提供的計算性能與物理 GPU 相比差距僅在幾個百分點之內,它是在虛機中使用 GPU 能夠達到最高性能的一種方法。

DirectPath I/O方法的缺點

  • vMotion 不支援使用 DirectPath I/O 的虛機。
  • 只能整個地使用 GPU,而不能只使用GPU 的一部分。
  • 不支援虛機快照功能。
  • 不支援多個虛機對一塊物理 GPU 的共用。
  • GPU 計算能力可能沒有得到充分利用,機器學習作業無法保證 100% 利用 GPU 的全部計算能力或記憶體容量。

 

2. NVIDIA vGPU

vGPU 是 NVIDIA 的 GPU 虛擬化技術,它需要安裝額外的 NVIDIA vCompute Server 軟體,在 ESXi 內核中安裝 vGPU Manager,在虛機中安裝 vGPU Driver。vGPU 通過分配 GPU 記憶體來控制對於 GPU 計算資源的使用,分配的比例有全部、二分一、四分之一等,各種配置記錄在 vGPU Profile 中。在配置虛機時通過指定 vGPU Profile 來確定該虛機使用的 GPU 比例,通過這種方式來實現多個虛機對於同一塊 物理 GPU 的共用。

vGPU 支援 vMotion,這對於需要較長訓練時間的場景非常有用,我們可以把機器學習的虛機遷移到另一台伺服器而不用中斷工作,這樣便於機器維護等操作。另一種方法是掛起 (suspend) 虛機,等到維護操作結束後再恢復 (resume) 虛機,從中斷點開始繼續運行。

NVIDIA vGPU 方案的優勢:

  • vGPU 給機器學習帶來了很大的靈活性,虛機既可以使用整塊 GPU 或多塊 GPU (最多可以將四塊物理GPU分配給一個VM),也可以只使用一塊 GPU 的部分。
  • 支持虛機 vMotion 和掛起/恢復操作。
  • vGPU 性能跟 DirectPath I/O 基本相當,差距在幾個百分點(個位數)以內。
  • 針對不同的工作負載類型可以選擇多種調度演算法(盡力而為、公平共用、均等共用)來優化物理GPU內核的使用。更多詳細資訊,可以參考 NVIDIA 的文檔

 

NVIDIA vGPU 方案的缺點:

  • vGPU Profile 的資源配置是靜態的,虛機啟動後就不能改變了;要改變 GPU 分配比例需要重新配置虛機。
  • 當虛機使用多個 GPU 時,必須全部整體使用這些 GPU,而不能只使用這些 GPU 的一部分。
  • 在任何一台伺服器上,虛機所使用的 vGPU Profile 的記憶體大小必須相等。
  • vGPU 需要另行購買軟體許可證,成本較高。

 

3. VMware vSphere Bitfusion

vSphere Bitfusion 允許應用通過網路使用安裝在另一台伺服器上的 GPU,並且可以任意指定 GPU 的使用比例,通過這種方式,它“虛擬化”了對 GPU 的訪問。能夠遠端存取 GPU 是 Bitfusion 技術區別於前面兩種方案的最大特點,前兩種方案都要求工作負載和 GPU 在同一台伺服器上。

Bitfusion 軟體分為用戶端和伺服器端部分,這兩個部分都在使用者空間中運行,並且本身不包含任何驅動程式。伺服器端只需要 GPU 驅動程式軟體,用戶端需要部分 CUDA 軟體堆疊。Bitfusion 的用戶端支援多種作業系統版本,最常用的是 Linux。

Bitfusion 特別適用於教學和科研這一類應用場景,特點是使用者數量多,但是單個用戶對於 GPU 的利用率不高。Bitfusion 技術可以創建一個 GPU 資源池,提供給多個用戶共用使用,這樣可以充分提高 GPU 資源的整體利用率。下圖對比了未使用 Bitfusion 時 GPU 和使用 Bitfusion 後 vGPU 的利用率,可以看到利用率的變化還是很顯著的。這不但讓昂貴的 GPU 設備得到充分利用,同時也讓更多的使用者能夠利用 GPU 來加速機器學習過程。

未使用 Bitfusion 時 GPU 的利用率

 

使用 Bitfusion 後的 vGPU 利用率

 

相比於前面兩種方案,Bitfusion具有更大的靈活性:

  • 工作負載和 GPU 不需要在同一台伺服器上。
  • 用戶可以一次請求多個 GPU 分區,以將負載分散到多塊物理 GPU 上。
  • 既可以給應用靜態配置 GPU 份額,也可以動態分配;當不再使用 GPU 時,還可以將其釋放回 GPU 資源池。
  • 可以給不同的用戶分配不同的 GPU 份額,例如,一個用戶獲得三分之一,而另一個用戶獲得同一個 GPU 的三分之二。
  • 因為是將整個 GPU 資源池共用給多個用戶使用,避免了很多閒置場景,對於 GPU 資源的利用效率整體上要高於前面兩種方案。

 

Bitfusion 方案的缺點:

  • 由於內部 CUDA API調用是通過網路重定向的,因此對於網路延遲的要求要高,使用者需要配置其網路以最大程度地減少延遲,網路速度成為基礎架構設置的關鍵。
  • Bitfusion 方案只適用於採用 CUDA 架構的機器學習應用,有一定的適用條件。

 

三種 GPU 加速方案各有優缺點,大家可以根據自己的實際情況加以選擇。對於絕大多數機器學習應用場景來說,Bitfusion 是一個經濟適用的 GPU 共用解決方案,值得大家採用。要瞭解更多 Bitfusion 解決方案,請進一步閱讀方案介紹系列文章“Bitfusion 工作原理”和 “Bitfusion 性能資料”。

 

本文主要內容來自于英文博客 Machine Learning on vSphere: Choosing A Best Method for GPU Deployment with VMs

 

 

延伸閱讀

將 VMware vSphere / vSAN 軟體與 Intel 的最新硬體平臺技術相結合,可以為用戶交付最佳的超融合架構平臺,幫助用戶簡化資料中心管理,降低採購和運維成本,輕鬆應對企業在數位化轉型中面對的各種挑戰,是現代應用的理想運行平臺。

  • VMware vSAN 是最佳的存儲方案平臺,具有管理簡便、高性能、低成本、易擴展的特點,在 vSAN 平臺上可以支援任何類型的應用。
  • Intel 至強處理器提供最強計算能力,基於傲騰 (Optane) 和 3D NAND 技術的固態盤是理想的快取記憶體,乙太網融合網卡提供穩定的網路頻寬和低網路延遲。