Bitfusion 要解決的是以下問題:
- 有些團隊在利用機器學習進行研究時沒有 GPU 可以用來加速學習速度;
- 而另一些團隊已經擁有了 GPU,但是他們沒有完全利用 GPU 的處理能力,很多 GPU 資源在白白閒置。
Bitfusion 把 GPU 資源集中起來,組成 GPU 資源池,然後共用給大家使用,這個方案分為兩部分:
- Bitfusion 伺服器:把 GPU 安裝在 vSphere 伺服器上 (要求 vSphere 7 以上版本),然後在上面運行 Bitfusion Server (以 OVA 格式提供的 virtual appliance),Bitfusion Server 可以把物理 GPU 資源虛擬化,共用給多個用戶使用。
- Bitfusion 客戶機:Bitfusion Client 是運行在其他 vSphere 伺服器上的 Linux 虛機 (要求 vSphere 6.7 以上版本), 機器學習 ML (Machine Learning) 工作負載運行在這些虛擬機器上,Bitfusion 會把它們對於GPU 的服務請求通過網路傳輸給 Bitfusion Server,計算完成後再返回結果。對於 ML 工作負載來說,遠端 GPU 是完全透明的,它就像是在使用本地的 GPU 硬體。
Bitfusion 把機器學習對於本地 GPU 的訪問轉換成遠端 GPU 訪問,它是怎麼識別這些 GPU 調用的?它對機器學習應用有什麼要求嗎?Bitfusion 對於機器學習的基本要求就是必須使用 CUDA 架構,只有機器學習應用和 GPU 都使用 CUDA 架構才能被 Bitfusion 支援。
Bitfusion 工作原理
CUDA 的全稱是 Compute Unified Device Architecture,它是由 NVIDIA 提供的通用平行計算架構,該架構使開發人員能夠快速地開發利用 GPU 的軟體,通過充分利用 GPU 所提供的上千個處理單元來快速解決複雜計算問題。NVIDIA 為開發人員提供了 CUDA 工具包,其中包括在 GPU 加速庫、編譯器、開發工具和 CUDA 運行時。
目前主流的 GPU 廠商有 NVIDIA、AMD 和 Intel,NVIDIA 當然支援自家的 CUDA,Intel 也提供了對於 CUDA 的支援;AMD 則另外搞了一套標準 HIP (Heterogeneous Computing Interface for Portability,可移植異構計算介面),提供了一個工具 Hipify 來將 CUDA 代碼轉換成 HIP。
使用 TensorFlow 框架開發的機器學習軟體運行堆疊如下圖所示,其中 CuDNN (CUDA Deep Neural Network) 是 NVIDIA 為深度神經網路開發的 GPU 加速庫。
在整個軟體堆疊中,Bitfusion 在 CUDA driver 這個層面上截獲了所有的 CUDA 服務訪問,然後把這些服務請求和資料通過網路傳遞給 Bitfusion Server,在伺服器這一端再把這些服務請求交給真正的 CUDA driver 來處理,這就是 Bitfusion 的基本工作原理,如下圖所示。我們可以看到 Bitfusion Client 的軟體堆疊中插入了一個 CUDA driver 的代理,通過這個代理來把服務請求轉發給 Bitfusion Server 上的 CUDA 下層服務堆疊。GPU 輔助的神經網路學習完成之後,結果再逆向通過這個堆疊返回機器學習應用 ML App。
GPU 分區
在實現 CUDA 堆疊功能的基礎上,Bitfusion 還支持對於 GPU 的靈活劃分。對於很多機器學習應用來講,它們的計算量不需要用到整塊 GPU,只需要部分計算能力就行了。同時,把一塊物理 GPU 劃分成多個分區分配給多個用戶使用,就可以實現 GPU 共用。
NVIDIA 自己的 vGPU 解放方案也可以實現 GPU 的分區,通過分配 GPU 記憶體來控制對於 GPU 計算資源的使用,分配的比例有全部、二分一、四分之一等,各個 vGPU 的大小必須一致,比較死板。
相比之下 Bitfusion 的分區方案就靈活多了,可以根據使用者需求任意劃分分區,分區大小不需要一致。特別適合於機器學習這種應用場景,不同的機器學習應用需要的 GPU 算力是不一樣的,分配一塊合適的分區有助於避免 GPU 資源的浪費。同時,由於神經網路的訓練通常是一個需要反復調整參數持續改進的過程,獨佔整個 GPU 會造成極大的資源浪費,Bitfusion 的 GPU 分區功能特別適合這種應用場景。
Bitfusion 的 GPU 分區方案具有以下特點:
- 分區可以是任意大小:Bitfusion 可以指定任意大小的分區,例如 1%;如前所述,這特別適用于開發測試等試驗性的應用場景。
- GPU 獨立性:各個 GPU 分區相互獨立,各自運行不同的 AI 框架和模型,絕對不會相互影響。
- 大小可動態調整:GPU 分區可以動態調整大小,例如從同一塊物理 GPU 分出的兩塊分區分別為 45% 和 55%,55% 的 GPU 分區可以進一步拆分成更小的兩塊 35% 和 20%,而不會影響另一塊 45% 分區 上工作負載的正常運行。
- 支援多個物理 GPU:從不同物理 GPU 中分出來的多個 GPU 分區能夠以多個 GPU 的形式分配給同一個使用者和工作負載,這既可以提高整個 GPU 資源池的利用率,也有助於開發和調試多 GPU 工作負載應用。
總結
Bitfusion 的工作原理決定了其應用場景,想要使用 Bitfusion 來共用 GPU 加速機器學習必須滿足以下條件:
- GPU 支持 CUDA 架構並且支持 vSphere 7
- 機器學習應用的 Linux 虛機必須在 vSphere 平臺上運行 (vSphere 6.7 以上版本)
提請大家注意,Bitfusion 並不適用於 VDI 應用場景,如果你想共用 GPU 加速 3D 設計渲染的話,NVIDIA 的 vGPU 是更合適的解決方案。Bitfusion 目前只支援 GPU 虛擬化共用,將來還有計劃支援其他硬體加速設備 FPGA 和 ASIC 的虛擬化和共用。
Bitfusion 的工作原理決定了它有一些額外的資源消耗,主要是用戶端和伺服器之間的網路傳輸開銷。這些額外的開銷對於GPU的利用率會有一些怎樣的損耗呢?我們在“Bitfusion 性能資料”中來回答這些問題。同時,如果你想瞭解其他 GPU 加速方案的話,請閱讀“虛擬化環境下利用 GPU 加速機器學習的幾種方案”。
延伸閱讀
將 VMware vSphere / vSAN 軟體與 Intel 的最新硬體平臺技術相結合,可以為用戶交付最佳的超融合架構平臺,幫助用戶簡化資料中心管理,降低採購和運維成本,輕鬆應對企業在數位化轉型中面對的各種挑戰,是現代應用的理想運行平臺。
- VMware vSAN 是最佳的存儲方案平臺,具有管理簡便、高性能、低成本、易擴展的特點,在 vSAN 平臺上可以支援任何類型的應用。
- Intel 至強處理器提供最強計算能力,基於傲騰 (Optane) 和 3D NAND 技術的固態盤是理想的快取記憶體,乙太網融合網卡提供穩定的網路頻寬和低網路延遲。
Comments
0 Comments have been added so far