VMware Bitfusion GPU共享技術的應用場景

2021-02-15 亨利筆記

相關信息:

VMware招聘機器學習和雲原生開發工程師

VMware招聘內源開發工程師

VMware招聘應屆生開發工程師

《Harbor權威指南》新書發布

1. 背景

GPU作為一種加速器晶片,在機器學習,特別是深度學習中得到廣泛的應用。但是,無論是企業、學校、醫院或者政府單位,決定在人工智慧領域進行投入時,領導卻發現:

投入了100萬,光買設備就花了80萬,工程師還經常抱怨GPU資源不夠用當工程師雄心勃勃打算開始幹活,卻發現花了一個多星期,IT環境還沒有搞好

究其原因,大致有以下三個:

GPU採購成本比較高,而且由於技術發展的限制,在實際使用中,比較難於共享,從而導致浪費和不足的情況並存。GPU的使用場景比較複雜,訓練需要大量資源且需要長時間使用,在線推理需要及時響應,而開發和培訓/課程實訓場景的並發用戶數會很多。機器學習的環境配置複雜,且通常情況下數據工程師不擅長。通常,環境涉及到GPU驅動、CUDA、程序設計語言編譯器/解釋器(比如python)、機器學習平臺(比如TensorFlow、PyTorch)等。而且這些軟體對版本都有一定的匹配要求。根據不同人員的使用習慣,有人喜歡用docker,有人喜歡直接運行命令,可能還涉及到Jupyter notebook工具的使用。很多的安裝程序都需要連接到國外伺服器,下載速度很慢。

VMware基於Bitfusion技術的方案正是來應對這樣的場景和需求。

2. 場景與需求

最近我們針對於高校的使用場景做了一個驗證,和大家分享一下。當然,雖然這是高校場景,但對於其他行業,依然具有參考價值。

在高校中,遇到的場景主要包含上課和科研。

在上課場景中,通常情況下,任課老師會根據課程需要事先安裝相應的軟體和工具;在實際課程中,學生每人獲得一個這樣的環境,使用課程中相關的算法進行模型的開發和訓練。在整個過程中,學生關注於機器學習的方法和算法,而不是環境的安裝、配置和故障處理。在科研場景中,科研人員(包括老師和研究生)根據科研任務和場景,開發相應的模型、算法和參數,並且利用GPU進行訓練和調整。


3. 解決方案架構

針對於以上需求,我們構建了以下架構的IT基礎設施服務:

圖1:整體架構圖

首先構建基於Bitfusion的GPU共享池。我們通過創建4臺虛擬機,每臺虛擬機通過vSphere的直通技術使用2塊GPU V100(32GB顯存)的GPU卡。

課程場景的資源,通過Horizon虛擬桌面提供。具體流程如下:

老師通過在虛擬機中安裝課程所需的軟體,製作課程模板。課程使用機器學習常用的Ubuntu16.04和Ubuntu18.04作業系統,並且虛擬機已經安裝了Bitfusion客戶端,可以將任務發送到遠程的Bitfusion伺服器端進行計算。IT管理員通過鏡像模板在上課之前發布虛擬桌面,桌面數量與學生數量保持一致,或者略多一些。學生在上課時,通過實訓教室現有的PC,或者瘦客戶機,或者學生自己的筆記本電腦,通過瀏覽器或者Horizon客戶端登錄到虛擬桌面,根據課程指定的任務。當需要GPU資源時,Bitfusion客戶端會將任務發送到遠程Bitfusion伺服器端執行;當資源不足時,系統會進行排隊。

在科研場景中,科研人員如果是進行模型開發,依然可以在Horizon虛擬桌面中進行;如果是長時間執行的訓練的任務,則建議通過vRealize Automation雲管理平臺申請已經安裝並enable bitfusion的虛擬伺服器。科研人員在虛擬伺服器中執行相關的python代碼,運行在虛擬伺服器中的Bitfusion客戶端會將相關的程序發送到Bitfusion伺服器端執行。當然,如果科研人員希望在虛擬伺服器中使用docker或者Jupyter notebook,也是沒有問題的。

通過Bitfusion的Quota機制,可以給到不同的用戶和場景,不同的最大可使用資源份額,以避免資源的濫用。Bitfusion也可以通過設定,斷開佔用GPU資源但是卻沒有真正使用的客戶端。

4. 測試用例

在本次測試中,我們驗證了以下用例:

使用編輯器編寫python代碼,通過python命令直接運行運行python之後進入到交互命令行,運行相關命令使用Jupyter Notebook打開ipynb文件,並運行相關notebook使用Docker啟動Nvidia提供的容器鏡像,並進入容器內執行相應的python腳本

具體測試過程和結果如下:

4.1 使用編輯器編寫python代碼,通過python命令直接運行

我們使用TensorFlow官方的benchmark工具tf_cnn_benchmarks.https://github.com/tensorflow/benchmarks/tree/master/scripts/tf_cnn_benchmarks使用cifar10數據集https://www.cs.toronto.edu/~kriz/cifar.html,模型採用resnet110,batch_size為64

原生的腳本命令命令如下:

python3  ./benchmarks/scripts/tf_cnn_benchmarks/tf_cnn_benchmarks.py  --data_format=NCHW  --batch_size=64  --model=resnet110  --variable_update=replicated  --local_parameter_device=gpu  --nodistortions --num_gpus=1  --num_batches=100  --data_dir=./benchmarks/data/cifar-10-batches-py  --data_name=cifar10  --use_fp16=False

本測試中,我們使用Bitfusion來運行。Bitfusion的具體使用方法可以參看官方文檔 《在vSphere Bitfusion上運行TensorFlow的示例指南》 https://docs.vmware.com/cn/VMware-vSphere-Bitfusion/2.0/vmware-vsphere-bitfusion-20-tensorflow-example-guide.pdf。

我們嘗試以下GPU份額:完整的V100GPU、1/10個GPU、1/20個GPU. 實際使用的顯存分別為:32GB、3.2GB、1.6GB。本項測試的關注點在於我們究竟需要多少GPU,才可以正常運行這個TensorFlow benchmark。

我們使用如下命令調整GPU的份額:

bitfusion run -n 1 -p 1 -- python3  ./benchmarks/scripts/tf_cnn_benchmarks/tf_cnn_benchmarks.py  --data_format=NCHW  --batch_size=64  --model=resnet110  --variable_update=replicated  --local_parameter_device=gpu  --nodistortions --num_gpus=1  --num_batches=100  --data_dir=./benchmarks/data/cifar-10-batches-py  --data_name=cifar10  --use_fp16=False

bitfusion run -n 1 -p 0.1 -- python3  ./benchmarks/scripts/tf_cnn_benchmarks/tf_cnn_benchmarks.py  --data_format=NCHW  --batch_size=64  --model=resnet110  --variable_update=replicated  --local_parameter_device=gpu  --nodistortions --num_gpus=1  --num_batches=100  --data_dir=./benchmarks/data/cifar-10-batches-py  --data_name=cifar10  --use_fp16=False

bitfusion run -n 1 -p 0.05 -- python3  ./benchmarks/scripts/tf_cnn_benchmarks/tf_cnn_benchmarks.py  --data_format=NCHW  --batch_size=64  --model=resnet110  --variable_update=replicated  --local_parameter_device=gpu  --nodistortions --num_gpus=1  --num_batches=100  --data_dir=./benchmarks/data/cifar-10-batches-py  --data_name=cifar10  --use_fp16=False

以上所有的配置中,tf_cnn_banchmarks處理的結果均大致為:1200 images/second。當然,這個性能數據和直接使用本地的GPU還是有一些差距,主要原因是本次測試,由於條件的限制,並沒有做優化。具體的優化可以參看:《VMware vSphere BitfusionPerformance Best Practices Guide》https://www.vmware.com/content/dam/digitalmarketing/vmware/en/pdf/techpaper/performance/bitfusion-perf-best-practices.pdf

如果採用0.05個GPU支持單個任務,則一塊V100 GPU(32GB顯存)則可以同時支持20個並發tf_cnn_benchmarks任務。如果用戶希望增加更多的並發任務,則需要調整batch_size參數。在實際應用中,由於系統提供排隊機制,當單個任務執行時間不是很長的情況下,可以有更多的學生同時使用。

4.2 運行Python,並進入到交互命令行,運行相關命令

此類情形,我們需要首先申請遠程GPU資源,然後再運行相關的命令和腳本,最後需要釋放遠程的GPU資源。相關的命令可以參考Bitfusion官方文檔 - 《VMware vSphere Bitfusion 用戶指南》 https://docs.vmware.com/cn/VMware-vSphere-Bitfusion/2.0/vmware-vsphere-bitfusion-20-user-guide.pdf

在下面這個示例中,我們首先申請單塊GPU,2048M的顯存;然後進入Python交互式命令行,運行tensorflow的代碼獲得GPU信息;最後釋放GPU。

$ bitfusion request_gpus -n 1 -m 2048
Requested resources:
Server List: 192.168.131.36:56001
Client idle timeout: 0 min

$ bitfusion client -- python3
Python 3.6.9 (default, Jul 17 2020, 12:50:27)
[GCC 8.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import tensorflow as tf
...
>>> print(tf.test.gpu_device_name())
...
2020-09-27 18:08:42.584300: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1433] Found device 0 with properties:
name: Tesla V100-PCIE-32GB major: 7 minor: 0 memoryClockRate(GHz): 1.38
pciBusID: 0000:00:00.0
totalMemory: 2.00GiB freeMemory: 1.41GiB
...
2020-09-27 18:08:42.592493: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1115] Created TensorFlow device (/device:GPU:0 with 1217 MB memory) -> physical GPU (device: 0, name: Tesla V100-PCIE-32GB, pci bus id: 0000:00:00.0, compute capability: 7.0)

/device:GPU:0
...

>>> quit();

$ bitfusion release_gpus

從以上驗證結果我們可以看到Bitfusion支持交互式Python運行方式。

4.3 使用Jupyter Notebook打開ipynb文件,並運行相關notebook

Jupyter Notebook 作為一個代碼、輸出、文檔、多媒體資源整合在一起的多功能科學運算平臺,深受數據科學工作者的喜愛,被廣泛的應用在機器學習的各個教程中。

Jupyter Notebook 支持自定義kernel來運行代碼,所以我們有機會構建基於Bitfusion的python kernel。如下圖所示:

圖2:使用Bitfusion kernel運行Jupyter Notebook

具體的做法可以參看《Bitfusion Jupyter Integration—It’s Full of Stars》https://blogs.vmware.com/vsphere/2020/08/bitfusion-jupyter-integration-its-full-of-stars.html

需要指出的是,kernel在定義的時候,就需要指定所用的GPU資源。所以,如果在課程中,需要使用不同大小的GPU資源,則可能需要定義多個kernel。

本次測試使用TensorFlow官方的標準教程(tutorial)中的穿戴用品的圖像識別 - https://github.com/tensorflow/docs/blob/master/site/en/r1/tutorials/keras/basic_classification.ipynb

在測試中,我們發現只需要配置0.02個V100 GPU資源就可以順利運行basic_classification的應用;也就是說,一塊V100的GPU卡可以同時給到50個學生使用。

與交互式python類似,當用戶在Jupyter Notebook的網頁中,選定一個kernel開始運行的時候,這個kernel就佔據了GPU資源,直到kernel被停止。也就是說,如同4.1中的超配(overcommit)之後的排隊,在使用Jupyter Notebook時候,不能使用。

4.4 使用Docker啟動Nvidia提供的容器鏡像,並進入容器內執行相應的python腳本

隨著Docker的流行,很多數據科學家也開始使用Docker。Docker的優勢在於docker image中已經安裝好了運行環境,用戶省去了很多繁瑣的安裝配置工作。用戶通過切換docker images也可以很容易的切換運行環境。不管是Nvidia,還是framework的供應商(比如TensorFlow),也都提供了docker images給到大家使用。當然,使用docker也帶來的一些麻煩,就是用戶必須要了解docker的使用。

在bitfusion結合docker的場景中,docker image 管理員需要基於官方的鏡像,通過 docker build 構建基於bitfusion的docker image。比如如下的Dockerfile就是在nvcr.io/nvidia/tensorflow:19.03-py3中加入bitfusion的支持,生成新的docker image。

$ cat Dockerfile
FROM nvcr.io/nvidia/tensorflow:19.03-py3 
MAINTAINER XXX University Bitfusion

#  Set initial working directory
WORKDIR /home/bitfusion/downloads/
 
# Update package list
RUN apt-get update
 
# Install Bitfusion. Assumes deb for Ubuntu16.04
# resides in mounted directory, /pkgs
COPY bitfusion-client-ubuntu1604_2.0.0beta5-11_amd64.deb .
RUN apt-get install -y ./bitfusion-client-ubuntu1604_2.0.0beta5-11_amd64.deb
# Must run list_gpus to pull in env and tokens
RUN bitfusion list_gpus

製作新的docker image,然後通過運行docker run進入到docker進程的shell,下面用戶就可以運行相關的Python代碼了。

sudo docker build -t tensorflow:19.03-py3-bitfusion .
 
sudo docker run --rm --privileged --pid=host --ipc=host \
   --net=host -it \
   -v /data:/data \
   -v /dev/log:/dev/log \
   tensorflow:19.03-py3-bitfusion

具體的方式可以參看這份文檔。《AI/ML, vSphere Bitfusion, and Docker Containers—A Sparkling Refreshment for Modern Apps》https://blogs.vmware.com/vsphere/2020/06/ai-ml-vsphere-bitfusion-and-docker-containers-a-sparkling-refreshment-for-modern-apps.html

從以上驗證結果我們可以看到Bitfusion支持在容器環境中使用。

5. 方案主要優勢使用Bitfusion統一管理所有的GPU資源,按需使用,用完自動歸還,儘可能減少idle的情況,大大提升了GPU資源的使用效率Bitfusion GPU共享機制對用戶使用透明,用戶不需要改變任何代碼使用Horizon虛擬桌面和即時克隆技術,可以提供統一的環境給到學生,讓學生可以專注在課程本身,而不是環境的安裝和配置科研人員可以利用到更多的GPU資源,更快的完成訓練任務得到反饋,提高了科研的效率6. 擴展討論

本方案主要解決的是學習、開發和訓練的場景,依然適合於其他行業的類似場景。針對於推理場景,特別是在線推理,本架構很容易擴展支持。

圖3:支持開發、訓練和推理的架構

7. 總結

GPU最為一種加速器資源,在數據科學特別是機器學習場景中,被廣泛採用。當前的GPU使用方式,無論是資源使用效率,還是運行環境的運維上,都存在很大的挑戰。VMware的Bitfusion技術應運而生,使得GPU資源可以在多個客戶端分時共享,並且可以根據應用需求靈活動態的切割顯存。本文基於高校的教學和科研場景,結合VMware Horizon虛擬桌面產品和vRealize雲管理平臺產品,設計解決方案,並進行了相關驗證,驗證基本覆蓋了常用的使用場景和工具。通過擴展,該解決方案架構依然適用於其他行業。


正文完

參考文獻:

vSphere Bitfusion 2.0.0 安裝指南:https://docs.vmware.com/cn/VMware-vSphere-Bitfusion/2.0/vmware-vsphere-bitfusion-20-installation-guide.pdfVMware vSphere Bitfusion 用戶指南: https://docs.vmware.com/cn/VMware-vSphere-Bitfusion/2.0/vmware-vsphere-bitfusion-20-user-guide.pdf在 vSphere Bitfusion 上運行 TensorFlow 的示例指南: https://docs.vmware.com/cn/VMware-vSphere-Bitfusion/2.0/vmware-vsphere-bitfusion-20-tensorflow-example-guide.pdfBitfusion Jupyter Integration—It’s Full of Stars: https://blogs.vmware.com/vsphere/2020/08/bitfusion-jupyter-integration-its-full-of-stars.htmlAI/ML, vSphere Bitfusion, and Docker Containers—A Sparkling Refreshment for Modern Apps: https://blogs.vmware.com/vsphere/2020/06/ai-ml-vsphere-bitfusion-and-docker-containers-a-sparkling-refreshment-for-modern-apps.html

相關焦點

  • 基於VMware Bitfusion的GPU共享技術使用場景討論
    VMware基於Bitfusion技術的方案正是來應對這樣的場景和需求。2. 場景與需求最近我們針對於高校的使用場景做了一個驗證,和大家分享一下。當然,雖然這是高校場景,但對於其他行業,依然具有參考價值。
  • VMWare Fusion Pro 11 中文專業版 – 蘋果 macOS 強大的虛擬機
    而且,對於虛擬 Windows 系統,你不僅可以窗口化或全屏運行,甚至其 Unity 模式還能將其中的應用程式從 Windows 裡 「拉出來」 直接在 Mac 上使用,感覺就像使用 Mac 版應用一樣,讓你擁有一個無縫的體驗。
  • VMware中 虛擬機設置共享文件目錄
    第五步: 一般共享的存儲目錄,默認在/mnt/hgfs路徑下。第六步: 為了驗證是否已經創建了共享目錄,可以在terminal窗口鍵入 vmware-hgfsclient 命令;輸出內容如下: WinLinShare 。說明,共享目錄創建的沒有問題。
  • VMware 14 下載|VMware Workstation 14中文版下載-太平洋下載中心
    vmware workstation 14免費版是進行開發、測試 、部署新的應用程式的最佳解決方案。太平洋下載中心為您提供vmware workstation 14中文版下載。從而將受限虛擬機的策略文件中的當前系統時間存儲為最後受信任的時間戳;  – 在平板電腦運行時可以利用加速計、陀螺儀、羅盤以及環境光線傳感器;  – 支持多達16個虛擬CPU、8 TB SATA磁碟和64 GB RAM;  – 新的虛擬SATA磁碟控制器;  – VMware Workstation 14現在支持20個虛擬網絡;  – USB3流支持更快的文件複製;  – 改進型應用和
  • 2020年深度學習如何挑選GPU?這篇 GPU 最全攻略請查收
    > 16-bit capability > Tensor Cores > FLOPs2 如何選擇NVIDIA/AMD/GoogleNVIDIA的標準庫使在CUDA中建立第一個深度學習庫變得非常容易。
  • VMware今年到底會放出多少大招?
    VMware 宣布與英偉達(NVIDIA)一起為 VMware Cloud on AWS推出基於NVIDIA GPU 的加速服務給關注 AI 計算領域的朋友們以及正在應用 AI 技術的企業送來了一波真驚喜
  • fusionzoom是什麼?fusionzoom tool服務介紹
    那fusionzoom是什麼? 那fusionzoom是什麼? Fusionzoom ERP 管理系統 跨境電商一站式服務系統,重用戶體驗、數據分析,幫助企業規範工作流程,一個帳號即可管控多店鋪、多平臺,保證賣家在旺季不缺貨,不斷貨,不滯銷,不積壓。
  • 使用VMware Workstation創建共享虛擬機,讓資源更好的整合使用
    打開VMware Workstation軟體,選擇左邊庫的欄上的共享虛擬機,點擊右邊的「創建新的虛擬機」開始按照相關的嚮導操作,自定義安裝虛擬機。這裡已安裝Windows 10虛擬機作業系統為例。選擇操客戶作業系統為Microsoft Windows,版本為Microsoft Windows 10 (32-bit)。
  • VMware Server v1.0.5 Build 80187 Final + v2.0 Build 84186...
    VMware是一個虛擬機軟體.多啟動系統在一個時刻只能運行一個系統,在系統切換時需要重新啟動機器.VMWare是真正同時運行,多個作業系統在主系統的平臺上,就象Word / Excel等標準Windows應用程式那樣切換
  • 2020 年深度學習如何挑選 GPU?這篇 GPU 最全攻略請查收
    以下是針對不同深度學習架構的一些優先準則:Convolutional networks and Transformers: Tensor Cores > FLOPs > Memory Bandwidth > 16-bit capabilityRecurrent networks: Memory Bandwidth
  • A鑽之愛德媒價值共享網絡應用場景分享
    A鑽之愛德媒價值共享網絡應用場景分享應用場景這個詞在網際網路的時候使用的特別的多,特別是我們要做一個產品的時候,我們都會想這個產品的應用場景是哪些地方呢,不管是虛擬的軟體產品,還是實物產品,作為產品經理都必須要考慮產品的應用場景這個情況
  • 財務共享中心如何應用RPA?8個場景+2大案例
    財務共享中心如何應用RPA?8個場景+2大案例 作者:UB Store 而財務共享平臺通過人員、技術、流程的有效整合,可實現不同地域、不同主體的財務業務標準化和流程化,避免企業在財務職能建設中的重複投入,提升財務管理效率。 RPA可應用於財務共享平臺中,提昇平臺的服務能力和質量。二者融合,是企業財務管理數位化建設的必然選擇。
  • VMware虛擬機 軟體安裝及使用方法說明
    一、安裝vmware  安裝vmware很簡單的,我只是說說我的鬱悶事。  安裝vmware workstation我遇到的問題:」win2003 server標準版上無法安裝vmware workstation5.5.3 ? 「 當時我在cu上發貼問過。
  • 2020年深度學習如何挑選 GPU?這篇 GPU 最全攻略請查收
    以下是針對不同深度學習架構的一些優先準則:Convolutional networks and Transformers: Tensor Cores > FLOPs > Memory Bandwidth > 16-bit capabilityRecurrent networks: Memory Bandwidth
  • Too much fusion?
    新東方網>英語>英語學習>閱讀寫作>正文Too much fusion?49 來源:cityweekend.com 作者: With its industrial dining room filled with overstuffed powder blue furniture, MTL Fusion had us a bit
  • 【乾貨】VMware虛擬機三種網絡模式詳解
    虛擬機軟體是很好的選擇,常用的虛擬機軟體有vmware workstations和virtual box等。在使用虛擬機軟體的時候,很多初學者都會遇到很多問題,而vmware的網絡連接問題是大家遇到最多問題之一。在學習交流群裡面,幾乎每天都會有同學問到這些問題,寫這篇詳解也是因為群裡童鞋網絡出故障,然後在幫他解決的過程中,對自己的理解也做一個總結。
  • 【經驗】深度學習如何挑選GPU?
    以下是針對不同深度學習架構的一些優先準則:Convolutional networks and Transformers: Tensor Cores > FLOPs > Memory Bandwidth > 16-bit capabilityRecurrent networks: Memory Bandwidth
  • Ubuntu下如何安裝VMware Tools
    然後使用命令【 tar -xvzf VMwareTools-9.6.1-1378637.tar.gz -C /opt】,對壓縮包進行解壓;這裡需要注意的是,必須使用-C參數,指明解壓到哪,路徑;否則會報文件無法打開的錯誤;最好在命令前面加上【sudo】,以免出現沒有權限的錯誤;解壓完成之後,如圖:現在,使用命令切換到/opt,命令【cd /opt】,展開目錄下的文件,看到一個名字為【vmware-tools-distrib
  • 濟寧市突破技術卡點 建立全省首家區塊鏈+電子證照應用場景
    濟寧市大力推進區塊鏈技術在政務服務領域應用,圍繞人社、文旅、不動產、公積金等與群眾生產生活密切相關的領域,通過橫向打通業務系統服務後臺,建立數字保險箱可追溯系統,落地了一批區塊鏈+電子證照應用場景,推進審批服務智能化便利化,大幅精簡辦事時間、環節和材料,真正實現「數據跑路」取代「人跑腿