vSphere7.0 bitfusion:運行飛槳(PaddlePaddle) 框架

2021-02-20 VMware中國研發中心

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。

相關焦點

  • 飛槳萬能轉換小工具X2Paddle,教你玩轉模型遷移
    飛槳開發了一個新的功能模塊,叫X2Paddle(Github見參考1),可以支持主流深度學習框架模型轉換至飛槳,包括Caffe、Tensorflow、onnx等模型直接轉換為Paddle Fluid可加載的預測模型,並且還提供了這三大主流框架間的API差異比較,方便我們在自己直接復現模型時對比API之間的差異,深入理解API的實現方式從而降低模型遷移帶來的損失
  • 飛槳框架高層API,一起輕鬆玩轉AI
    為了簡化深度學習的學習過程、降低深度學習的開發難度,百度飛槳框架歷經近一年的打磨,不斷地優化深度學習 API,並針對開發者的使用場景進行封裝,在飛槳框架的最新版本中,推出了高低融合、科學統一的飛槳全新 API 體系。飛槳框架將 API 分為兩種,基礎 API 和高層 API。
  • Paddle.js & PaddleClas 實戰 ——『尋物大作戰』AI 小遊戲
    所依賴的技術主要包含兩大部分:百度飛槳圖像分類套件 PaddleClas 和基於 JavaScript 的前端深度學習推理引擎 Paddle.js。接下來將對這兩部分進行詳細說明。圖 1-1 模型性能對比Paddle.js 是百度飛槳基於 JavaScript 的深度學習框架,也是國內首款開源前端推理框架,該項目發展至今已形成一套完整的全鏈路前端
  • 飛槳開源框架2.0,帶你走進全新高層API,十行代碼搞定深度學習模型開發
    本示例的完整代碼可以在AI Studio上獲取,無需準備任何軟硬體環境即可直接在線運行代碼,相當方便哦:https://aistudio.baidu.com/aistudio/projectdetail/1216442對於數據預處理與數據加載,飛槳框架提供了許多API,列表如下:飛槳框架內置數據集:paddle.vision.datasets內置包含了許多CV領域相關的數據集,直接調用
  • 教程 | 如何用百度深度學習框架PaddlePaddle做數據預處理
    例如,對一個 5 維非序列的稀疏 01 向量 [0, 1, 1, 0, 0],類型是 sparse_binary_vector,返回的是 [1, 2]。(因為只有第 1 位和第 2 位有值)對一個 5 維非序列的稀疏浮點向量 [0, 0.5, 0.7, 0, 0],類型是 sparse_float_vector,返回的是 [(1, 0.5), (2, 0.7)]。
  • 飛槳框架2.0RC新增模型保存、加載方案,與用戶場景完美匹配,更全面、更易用
    飛槳框架2.0RC為開發者提供了全新的動態圖模式下的模型保存與加載體系,其中包含兩個模型保存與加載的方案,分別適用於上述兩個場景。(友情提示:飛槳框架2.0RC版本開始主推動態圖模式,仍兼容保留對靜態圖模式的支持,但不再推薦使用。)
  • 飛槳深度學習開源框架2.0搶先看:成熟完備的動態圖開發模式
    在動態圖開發模式下,用戶運行飛槳提供的API後,可即時返回運行結果,不需要先創建計算圖再運行,這樣便於用戶更加方便地組織代碼,交互式地調試程序。組建網絡的高效性。廣覆蓋Python語法,降低轉換出錯概率:飛槳通過將Python寫的動態圖代碼轉寫為靜態圖代碼,並在底層自動使用靜態圖執行器運行。這種轉換方式使得用戶可以靈活使用Python語法及控制流來構建神經網絡模型,並且能夠利用靜態圖的圖優化策略進行加速。
  • 【深度學習系列】PaddlePaddle之手寫數字識別
    博客專欄:https://www.cnblogs.com/charlotte77/前文傳送門:【好書推薦&學習階段】三個月教你從零入門深度學習上周在搜索關於深度學習分布式運行方式的資料時,無意間搜到了paddlepaddle,發現這個框架的分布式訓練方案做的還挺不錯的,想跟大家分享一下。
  • Transformer-paddle2.0
    很久前就想做paddle2.0的高級api了,所以最近忙裡偷閒把transformer的paddle2.0版本實現了。
  • 如何用PaddleDetection做一個完整的目標檢測項目
    【飛槳開發者說】:餘志良,菲特(天津)智能科技有限公司項目經理,百度黃埔學院二期學員PaddleDetection 是百度飛槳推出的物體檢測統一框架
  • 在Node.js上接入Paddle Lite,讓你的網站具備AI推理能力
    /paddlenode')var arr = new Array(150528)for(var i=0; i<arr.length; i++) arr[i]=1;addon.set_model_file(".
  • 推理引擎Paddle Inference改造三要點,ERNIE時延降低81.3%
    飛槳開源框架1.8版本中,Paddle Inference在算子融合、TensorRT子圖集成和半精度浮點數(Float 16)加速三個方面對ERNIE模型推理進行了全方位優化。Paddle Inference是飛槳深度學習框架的推理引擎,通過對不同平臺伺服器應用場景的深度適配優化,降低時延,提升部署效率,詳情請參考:https://mp.weixin.qq.com/s/DX2pM2H2Nq9MCg2eU4sV7g
  • ERNIE時延降低81.3%,飛槳原生推理庫Paddle Inference再升級
    飛槳開源框架1.8版本中,Paddle Inference在算子融合、TensorRT子圖集成和半精度浮點數(Float 16)加速三個方面Paddle Inference是飛槳深度學習框架的推理引擎,通過對不同平臺伺服器應用場景的深度適配優化,降低時延,提升部署效率,詳情請參考:https://mp.weixin.qq.com/s/DX2pM2H2Nq9MCg2eU4sV7g
  • PaddleDetection目標檢測套件
    首先創建python的虛擬環境,然後安裝paddlepaddle-gpuconda create -n ppdetection python=3.7conda activate ppdetectionpip install paddlepaddle-gpu==1.8.4
  • PaddleWeekly | Wechaty社區大使帶你玩轉專屬微信Bot
    主要框架/工具組件:飛槳PaddlePaddle核心框架https://github.com/AgentMaker/Paddle-Image-Models/tree/seg上周Star抽獎結果:恭喜GitHub用戶Kangvcar中獎,要記得在7日內聯繫
  • 一步一步教你如何安裝PaddlePaddle
    在解析過 PaddlePaddle 框架之後,從這篇文章開始上手,安裝 PaddlePaddle。使用 pip 安裝如果你還沒有在 pip 命令的話,首先要安裝 pip,要確保安裝的 pip 版本是大於 9.0.0 的,否則可能無法安裝 paddlepaddle。
  • 【深度學習系列】用PaddlePaddle和Tensorflow進行圖像分類
    本文首先自己設計一個小型CNN網絡結構來對圖像進行分類,再了解一下LeNet-5網絡結構對圖像做分類,並用比較流行的Tensorflow框架和百度的PaddlePaddle實現LeNet-5網絡結構,並對結果對比。
  • 19行關鍵代碼,帶你輕鬆入門PaddlePaddle單機訓練
    新入手一個框架是不是會很難? 第1行在Python環境下安裝PaddlePaddle框架,萬裡徵程開頭難,輸完這行指令,你已經成功了一大半!第2-3行進入代碼環境,導入數據包,沒啥可說的import paddle as paddleimport paddle.fluid as fluid第4-7行
  • 基於飛槳的小樣本學習工具包助你舉一反三
    本項目依賴飛槳開源框架v2.0或更新的版本,需要提前前往飛槳官網安裝。__version__'1.0.0'我們的項目提供了計算機視覺數據集(CVDataset)和關係分類數據集(RCDataset)兩種模板數據集接口,以及繼承自CVDataset的六種圖像分類數據集(Omniglot[3], Mini-ImageNet[4], Tiered-ImageNet[5], CIFAR-FS[6], FC100[7], CU-Birds[8])與繼承自RCDataset
  • PPSIG攜手100+位contributor,共建飛槳開源社區
    同時,還提供了一臺已經搭建該服務的伺服器(地址參見readme文件),使用者可以在前端程序設置伺服器地址後直接運行。未來將在前端提供更多的推理參數,從而讓自動標註更加準確。此外,還會在豎排版古籍領域,增加更多功能。