VMware 在2020年7月即將發布bitfusion的正式版。Bitfusion 把GPU資源集中起來,組成GPU資源池並共享給大家使用,來運行機器學習的工作負載。BitfusionServer把安裝在vSphere伺服器上的GPU資源虛擬化並共享出來,Bitfusion Client上運行機器學習的工作負載,把對於GPU資源的服務請求通過網絡傳輸給BitfusionServer,計算完成後返回結果給Bitfusion Client。
想要了解有關vSphere 7 bitfusion的更多信息,請訪問我們的網站:https://www.vmware.com/products/vsphere.html
一. 背景介紹目前主流的機器學習框架有很多,如TensorFlow,Pytorch,飛槳等等。根據業務需求大家可能會使用不同的機器學習框架,同時有些用戶可能更偏愛國內的機器學習框架,如百度飛槳。下面在實際部署應用中,來展示如何在vSphere7.0中使用Bitfusion調用遠端的GPU資源來運行飛槳框架。
從圖中可以看到,Bitfusion Client 和 Bitfusion Server 在CUDA driver級別進行交互,在BitfusionClient的軟體堆棧中有一個CUDA driver的代理,通過它截獲Client上的所有CUDA服務訪問,通過網絡將數據和服務請求發送給BitfusionServer進行處理。
目前Bitfusion appliance對應的 Bitfusion Server上是CUDA 10.2版本,我們鼓勵用戶在BitfusionClient上安裝相同的CUDA版本號,這樣可以避免因版本差異帶來的一些問題。但是有些機器學習框架最高支持到CUDA10.1,如飛槳,用戶同樣可以在BitfusionClient上安裝CUDA其他版本,我們經過測試發現,這同樣能夠調用遠端的GPU資源,運行機器學習框架,並沒有不良反應。
以Bitfusion Client為Ubuntu 16.04作為安裝環境為例子,詳細闡述安裝飛槳機器學習框架的環境。關於飛槳機器學習的框架的更多詳細信息,可以訪問https://www.paddlepaddle.org.cn/documentation/docs/zh/install/install_Ubuntu.html。
1. 保證Bitfusion 安裝成功。
– 關於Bitfusion詳細的安裝過程,VMware官方提供了Bitfusion安裝文檔,可以訪問https://communities.vmware.com/community/vmtn/beta/vsphere-betaprogram/bitfusion下載安裝文檔。
– 安裝完成之後通過 Bitfusion health 查看Bitfusion的健康,保證沒有致命(fatal)錯誤。
– 通過 bitfusion list_gpus 命令檢查是否能夠訪問遠端的GPU資源。
(base) test@bfclient-ubu-1804-z0:~$ bitfusion list_gpus
- server 0 [10.110.165.153:56001]: running 0 tasks
|- GPU 0: free memory 16160 MiB / 16160 MiB
2. 保證 Bitfusion Client 端 CUDA 安裝成功。
– 從NVIDIA官網中,對於不同的作業系統下載對應版本的CUDA軟體包。
– 通過 cat /usr/local/cuda/version.txt 命令檢查CUDA版本信息。
(base) test@bfclient-ubu-1804-z0:~$ cat/usr/local/cuda/version.txt
CUDA Version 10.0.130
3. 保證 Bitfusion Client 端 cuDNN 安裝成功。
– 請根據想要安裝的飛槳版本來確認需要安裝的cuDNN版本,然後從NVIDIA官網中,下載對應版本的cuDNN軟體包進行安裝。
tar -xzvf cudnn-10.0-linux-x64-v7.6.5.32.tgz
sudo cp cuda/include/cudnn.h /usr/local/cuda/include
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn.h/usr/local/cuda/lib64/libcudnn*
– 通過 cat /usr/local/cuda/include/cudnn.h | grepCUDNN_MAJOR -A 2 命令檢查 cuDNN 版本信息。
(base)test@bfclient-ubu-1804-z0:~$ cat/usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
#define CUDNN_MAJOR 7
#define CUDNN_MINOR 6
#define CUDNN_PATCHLEVEL 5
--
#define CUDNN_VERSION (CUDNN_MAJOR * 1000 +CUDNN_MINOR * 100 + CUDNN_PATCHLEVEL)
#include "driver_types.h"
4. 保證 python, pip 安裝成功。
– 請按照python官網安裝對應的python軟體,並安裝pip包。
– 通過 python --version查看安裝的python版本信息。
(base) test@bfclient-ubu-1804-z0:~$ python --version
Python 3.7.3
– 通過 python -m pip --version 查看安裝的pip版本信息。
(base) test@bfclient-ubu-1804-z0:~$ python -m pip --version
pip 19.1.1 from/home/test/anaconda3/lib/python3.7/site-packages/pip (python 3.7)
5. 保證飛槳機器學習框架安裝成功。
– 通過 python -m pip install paddlepaddle-gpu -ihttps://mirror.baidu.com/pypi/simple 命令安裝飛槳。
python -m pip install paddlepaddle-gpu -ihttps://mirror.baidu.com/pypi/simple
– 判斷飛槳是否成功安裝可以應用。
(base) test@bfclient-ubu-1804-z0:~$ bitfusion run -n 1 --python
Requested resources:
Server List: 10.110.165.153:56001
Client idle timeout: 0 min
Python 3.7.3 (default, Mar 27 2019, 22:11:17)
[GCC 7.3.0] :: Anaconda, Inc. on linux
Type "help", "copyright","credits" or "license" for more information.
>>> import paddle.fluid as fluid
>>> fluid.install_check.run_check()
Running Verify Fluid Program ...
W0615 06:12:17.658315 13986 device_context.cc:252]Please NOTE: device: 0, CUDA Capability: 70, Driver API Version: 10.2, RuntimeAPI Version: 10.0
W0615 06:12:17.674289 13986 device_context.cc:260]device: 0, cuDNN Version: 7.6.
Your Paddle Fluid works well on SINGLE GPU or CPU.
Your Paddle Fluid works well on MUTIPLE GPU or CPU.
Your Paddle Fluid is installed successfully! Let'sstart deep Learning with Paddle Fluid now
在測試過程中,採用了Resnet50 (Residual Neural Net 50 [50層殘差神經網絡])來對ImageNet進行圖像分類學習。Bitfusion模式下採用Tesla V100 GPU卡進行實驗,使用虛擬網卡VMXNET3,直接採用10Gb/s 網絡,測試結果如下圖所示:
如果用戶對於工作負載沒有較高延遲的需求,但是對吞吐量有較高的要求,顯然通過Bitfusion調用遠端的GPU資源運行機器學習的工作負載是一個較好的選擇。
點擊「閱讀原文」詳細了解vSphere 7 bitfusion。