私有云如何執行深度學習?看ZStack+Docker支撐GPU業務實踐
前景
ZStack
所聚焦的IaaS
,作為雲端計算裡的底座基石,能夠更好的實現物理資源隔離,以及伺服器等硬體資源的統一管理,為上層大資料、深度學習Tensorflow
等業務提供了穩定可靠的基礎環境。
近年來,雲端計算發展探索出了有別於傳統虛擬化、更貼近於業務的PaaS 型服務,該型別依賴於docker 實現,如K8S 等典型的容器雲,可以直接從映象商店下載封裝好業務軟體的映象,更加快捷地實現業務部署。
此外,GPU 場景也是客戶業務的典型場景,相比於CPU 的運算特點,在資料分析、深度學習有著明顯的優勢。
ZStack 是如何與容器結合,以IaaS+PaaS 的組合拳,為上層業務提供支撐的呢?本篇文章帶大家瞭解一下,如何在ZStack 上部署 centos7.6 虛擬機器,在虛擬機器裡部署docker ,以及如何使用nvidia-docker 實現在容器裡呼叫GPU 的業務場景。
環境
虛機系統: Centos 7.6
虛機核心: Linux 172-18-47-133 3.10.0-957.el7.x86_64 #1 SMP Thu Nov 8 23:39:32 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
docker 版本: docker-ce 19.03
nvidia-docker 版本: nvidia-docker-1.0.11.x86_64
顯示卡: RTX6000
Cuda 版本: 10.1
顯示卡驅動: 418
如下圖所示:
Part 01
顯示卡驅動安裝
1 、下載對應版本的CUDA ,並以此安裝驅動。CUDA 已經緊密結合了NVIDIA ,以下驅動在centos 、ubuntu 上面均可執行,並自帶絕大部分NVIDIA 型號的顯示卡驅動,實用性非常強。
wget http://plan.zstack.io/storage/iso/nvidia/cuda_10.1.168_418.67_linux.run
chmod+x http://plan.zstack.io/storage/iso/nvidia/cuda_10.1.168_418.67_linux.run
GPU 透傳給虛擬機器的操作步驟,詳見在zstack.io 官網可搜尋到的《GPU 實踐手冊》。
特別提醒:平臺CPU 模式一定要設定成passthrough !否則後續無法正常呼叫GPU 做任何操作。
2 、安裝驅動,會自動禁止使用預設顯示卡驅動。特殊情況如需手動禁用,可使用如下操作:
echo “blacklist nouveau” >>/usr/lib/modprobe.d/dist-blacklist.conf
echo “options nouveau modeset=0” >>/usr/lib/modprobe.d/dist-blacklist.conf
mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.bak
dracut /boot/initramfs-$(uname -r).img $(uname -r)
reboot
lsmod|grep nouveau (為空則不載入預設顯示卡驅動)
3 、./cuda_10.1.168_418.67_linux.run (安裝時除了最後一項外,其他均需選擇)
4 、安裝完成就表示驅動已安裝完畢,可以執行nvidia-smi 命令檢視
5 、 驅動安裝完畢後,建議採用CUDA 自帶的測試工具來測試,如果測試結果顯示 PASS ,表示 CUDA 安裝成功。
yum install gcc-c++
yum install cpp
cd /root/NVIDIA_CUDA-10.1_Samples/1_Utilities/bandwidthTest/
make
./bandwidthTest
Part 02
DOCKER-CE 安裝:
1 、如果安裝docker ,需先解除安裝,再安裝docker-ce
yum remove docker docker-common docker selinux docker-engine
2 、配置docker-ce repo 源:
yum-config-manager --add-repo
3 、列出可以安裝的版本:
yum list docker-ce --showduplicates | sort -r
4 、預設安裝即可, 當前為19.03 版本:
yum install docker-ce (預設安裝的是Docker version 19.03.13, build 4484c46d9d )
5 、啟動服務及開機自啟配置:
systemctl start docker
systemctl enable docker
6 、從映象商店搜尋一個帶有GPU 驅動的映象:
docker search nvidia (映象商店可以搜尋帶nvidia 驅動的映象,用第一個即可)
7 、修改配置檔案:
cat >> /etc/docker/daemon.json <<EOF
{
"runtimes": {
"nvidia": {
"path": "/usr/bin/nvidia-container-runtime",
"runtimeArgs": []
}
}
}
EOF
Part 03
nividia-docker 安裝
1 、配置nvidia-docker 相關源:
curl -s -L | sudo tee /etc/yum.repos.d/nvidia-docker.repo
2 、搜尋nvidia-docker 包的版本:
yum search --showduplicates nvidia-docker
3 、安裝nvidia-docker :
yum install nvidia-docker-1.0.1-1.x86_64
4 、啟動服務,和配置開機自啟動:
systemctl start nvidia-docker;
systemctl enable nvidia-docker;
systemctl status nvidia-docker
(需確保nvidia-docker 狀態一直正常執行,否則無正常使用)
5 、檢查相關依賴軟體包是否已安裝,如果缺失,可執行以下命令安裝:
yum install libnvidia-container1
yum install nvidia-container-toolkit
yum install libnvidia-container-tools
6 、 重啟一下docker 服務:
systemctl restart docker
完成測試
nvidia-docker run --rm --gpus all nvidia/cuda:10.1
-base nvidia-smi ( 如下圖所示,即為安裝成功。此處必須加gpus all 引數 如此才可呼叫GPU)
使用備註(躺坑日記)
a 、如果需要向容器裡傳檔案,參考一下方式傳CUDA 軟體進容器,前面是本地檔案,後面是容器id 以及內部目錄位置。反過來就是從容器裡傳檔案出來。
docker cp /root/cuda_10.1.168_418.67_linux.run ffb6138f3299:/mnt/1.run
b 、排除容器問題,一次性清理所有容器,則使用如下命令:
docker rm -f $(docker ps -aq)
c 、重灌驅動步驟:
yum remove nvidia-container-runtime
yum remove nvidia-container-toolkit
yum remove libnvidia-container-tools
yum remove nvidia-docker
./cuda_10.1.168_418.67_linux.run
yum install nvidia-docker-1.0.1-1.x86_64
systemctl start nvidia-docker; systemctl enable nvidia-docker; systemctl status nvidia-docker
yum install libnvidia-container1
yum install nvidia-container-toolkit
yum install libnvidia-container-tools
nvidia-docker run --rm --gpus all nvidia/cuda:10.1-base nvidia-smi 再跑就可以了
d 、進入容器內部,執行操作使用如下命令:
docker -it nvidia/cuda:10.1-base /bin/bash
e 、nvidia-docker 服務異常systemctl status nvidia-docker ,報錯error cuda all cuda-capable device are busy
此時問題為,平臺CPU 模式沒有改成直通,修改後需要重啟虛擬機器才能生效。透過lscpu ,檢視並確認虛擬機器CPU 必須為物理CPU 型號,而非QEMU 型號CPU 。
f 、nvidia-docker 服務異常 systemctl status nvidia-docker , 服務啟動後自己停止,原因可能是 GPU 驅動沒有裝好。一定要經過 CUDA 自帶指令碼測試,測試透過才能認為顯示卡狀態可用。
2 、nvidia-docker run 時報錯:如果顯示 no options [gpus] , --gpu all ,這個引數無效,報錯原因是docker 版本過低,建議使用19.03 。低版本如17.03 的docker-ce ,因為呼叫 GPU 引數不同,所以可能被識別無效。
3 、報錯提示為缺少nvidia-container-runtime-hook ,如下圖,需要執行安裝:yum install libnvidia-container1; yum install nvidia-container-toolkit-1.3.0-2.x86_64; yum install libnvidia-container-tools-1.3.0-1.x86_64
結語
歷經一天時間,完成了ubuntu 下和centos 下的docker+ GPU +nvidia-docker 的實踐安裝使用,中間簡單的安裝了一個Rancher PaaS 平臺,進行容器管理。
IaaS 和PaaS 都有著各自鮮明的優勢,很多人總有這麼一個疑問:到底該選擇IaaS 的資源隔離,來更好的管控硬體、迎合未來的混合雲市場?還是選擇PaaS ,讓應用更輕便、以釋放人力到自己的核心業務上呢?最佳答案是:為何不全都要呢。ZStack IaaS 結合PaaS 實現IT 改造,增加對IT 的每一個細節掌控,共同撐起雲端計算的未來。
ZStack的願景就是:“讓每一家企業都擁有自己的雲。”
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69984952/viewspace-2736367/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 看SparkSql如何支撐企業數倉SparkSQL
- vSphere Bitfusion執行TensorFlow深度學習任務深度學習
- 深度學習在搜尋業務中的探索與實踐深度學習
- 深度學習在小米電商業務的應用實踐深度學習
- [AI開發]深度學習如何選擇GPU?AI深度學習GPU
- 祕密武器 | 看AnalyticDB如何強力支撐雙十一
- 公有云高手UCloud如何玩轉私有云?Cloud
- 如何在 GPU 深度學習雲服務裡,使用自己的資料集?GPU深度學習
- 如何免費雲端執行Python深度學習框架?Python深度學習框架
- Titan XP值不值?教你如何挑選深度學習GPU深度學習GPU
- SACC2018:機器學習與深度學習如何助力企業業務?機器學習深度學習
- SmartX 超融合支撐 Rhapsody 醫療整合引擎執行效率實測詳解
- spring boot / cloud (二十) 相同服務,釋出不同版本,支撐並行的業務需求Spring BootCloud並行
- 百度搜尋深度學習模型業務及最佳化實踐深度學習模型
- 公有云和私有云不同在哪?Linux技術學習Linux
- 如何搭建自己的私有云盤
- 如何在免費雲端執行 Python 深度學習框架?Python深度學習框架
- 支撐性服務 & 自動化
- 如何用雲端 GPU 為你的 Python 深度學習加速?GPUPython深度學習
- 分析如何支撐高併發?
- 雲上深度學習實踐分享——雲上MXNet實踐深度學習
- 物聯網學習教程—— 執行緒私有資料執行緒
- 八大深度學習最佳實踐深度學習
- 深度學習的應用與實踐深度學習
- 沒有IT運維,中小企業如何自建企業私有云盤?運維
- 行業實踐:RocketMQ 業務整合典型行業應用和實踐行業MQ
- 視訊私有云實戰:基於Docker構建點播私有云平臺Docker
- 快速搭建私有云服務 go-btfsGo
- 深度學習,機器學習神器,白嫖免費GPU深度學習機器學習GPU
- 影片爆炸時代,誰在支撐影片生態網高速執行?
- 在 Google Colab 中快速實踐深度學習Go深度學習
- 搭建私有云:OwnCloudCloud
- 建立私有云(Seafile)
- 簡化IT SmartX讓超融合支撐核心業務成為可能
- 從技術支撐到落地實踐 華為雲全面賦能“新雲原生企業”
- 企業為什麼要建立私有云
- 實踐400+私有云打造的雲安全高可用架構詳解架構
- 軟體工程實踐專案學習與執行日誌軟體工程