自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Docker Compose + GPU + TensorFlow 所產(chǎn)生的奇妙火花

開發(fā) 開發(fā)工具 機(jī)器學(xué)習(xí)
Docker 有很多優(yōu)勢,但是在數(shù)據(jù)科學(xué)和深度學(xué)習(xí)方面,使用 Docker 也存在一些阻礙。本文介紹了一系列 Docker 實(shí)用工具,以及 GPU-ready 樣板文件,讓我們看看 Docker Compose + GPU + TensorFlow 能產(chǎn)生什么奇特效果吧。

Docker 很棒——越來越多的人在開發(fā)與分布中使用它。Docker 有很多優(yōu)勢:即時環(huán)境設(shè)置、獨(dú)立于平臺的 app、現(xiàn)成的解決方案、更好的版本控制、簡化的維護(hù)。

但是在數(shù)據(jù)科學(xué)和深度學(xué)習(xí)方面,使用 Docker 有一些阻礙。你必須記住所有的 Docker 標(biāo)志,以在主機(jī)和容器之間共享端口和文件,創(chuàng)建不必要的 run.sh 腳本,并處理 CUDA 版本和 GPU 共享。如果你曾經(jīng)見過下面這個錯誤,你就會明白這種痛苦:

  1. $ nvidia-smi 
  2. Failedto initialize NVML:Driver/library version mismatch 

[[204696]]

我們的目標(biāo)

本文的目的在于為你介紹一系列 Docker 實(shí)用工具,以及我們經(jīng)常在公司使用的 GPU-ready 樣板文件。

因此,以下結(jié)果將不會出現(xiàn):

  1. docker run 
  2. --rm 
  3. --device /dev/nvidia0:/dev/nvidia0 
  4. --device /dev/nvidiactl:/dev/nvidiactl 
  5. --device /dev/nvidia-uvm:/dev/nvidia-uvm 
  6. -p 8888:8888 
  7. -v `pwd`:/home/user 
  8. gcr.io/tensorflow/tensorflow:latest-gpu 

取而代之的是這種結(jié)果:

  1. doc up 

酷!

我們實(shí)際上想要達(dá)到的:

  • 通過一個指令管理我們的應(yīng)用程序狀態(tài)(運(yùn)行、停止、移除)
  • 把所有的運(yùn)行標(biāo)志保存到我們能夠提交到 git repo 的單個配置文件
  • 忘記 GPU 驅(qū)動程序版本不匹配和共享
  • 在生產(chǎn)工具比如 Kubernetes 或 Rancher 中使用 GPU-ready 的容器

因此,這里是我們強(qiáng)烈推薦給每個深度學(xué)習(xí)者的工具清單:

1. CUDA

首先,你需要 CUDA 工具包,如果你打算自己動手訓(xùn)練模型,那這是必須要有的。我們推薦使用 runfile 安裝程序類型而不是 deb,因?yàn)樗粫谝院蟮母轮谢煜蕾囮P(guān)系。

(可選)如何檢查它是否工作:

  1. cd /usr/local/cuda/samples/1_Utilities/deviceQuery 
  2. make 
  3. ./deviceQuery #Shouldprint "Result = PASS

2. Docker

你不想讓海量的庫污染你的計(jì)算機(jī),也害怕版本出現(xiàn)問題。同樣,你不必親自構(gòu)建和安裝——通常,軟件已為你創(chuàng)建好了,并包裝在圖像中。安裝 Docker 很簡單:

  1. curl -sSL https://get.docker.com/ | sh 

3. Nvidia Docker

如果使用 Docker,必須有來自英偉達(dá)的實(shí)用程序(https://github.com/NVIDIA/nvidia-docker),它真正簡化了在 Docker 容器內(nèi)使用 GPU 的步驟。

安裝非常簡單:

  1. wget -P /tmp https://github.com/NVIDIA/nvidia-docker/releases/download/v1.0.1/nvidia-docker_1.0.1-1_amd64.deb 
  2. sudo dpkg -i /tmp/nvidia-docker*.deb 

現(xiàn)在,不用每次都用下列方式來共享英偉達(dá)設(shè)備:

  1. docker run --rm --device /dev/nvidia0:/dev/nvidia0 --device /dev/nvidiactl:/dev/nvidiactl --device /dev/nvidia-uvm:/dev/nvidia-uvm nvidia/cuda nvidia-smi 

你可以使用 nvidia-docker 命令:

  1. nvidia-docker run --rm nvidia/cuda nvidia-smi 

同樣,你也無需擔(dān)心驅(qū)動程序版本不匹配:英偉達(dá)的 docker 插件將會幫你解決問題。

4. Docker Compose

超級有用的實(shí)用程序,允許你在文件中存儲 docker run 配置,并更輕松地管理應(yīng)用程序狀態(tài)。盡管它的設(shè)計(jì)目的是組合多個 docker 容器,但 docker compose 在你只有一個服務(wù)的時候依然非常有用。這里有一個穩(wěn)定版本

(https://github.com/docker/compose/releases):

  1. curl -L https://github.com/docker/compose/releases/download/1.15.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose 
  2. chmod +x /usr/local/bin/docker-compose 

5. Nvidia Docker Compose

不幸的是,Docker Compose 并不知道 Nvidia Docker 的存在。幸運(yùn)的是,有一個解決方法:有一個小的 Python 腳本,可以用 nvidia-docker 驅(qū)動程序生成配置。通過 pip 安裝 Nvidia Docker Compose:

  1. pip install nvidia-docker-compose 

現(xiàn)在你可以使用 nvidia-docker-compose 命令,而不是 docker-compose 了。

替代選擇

如果你不想使用 nvidia-docker-compose,你可以手動傳遞音量驅(qū)動程序,只需把這些選項(xiàng)添加到 docker-compose.yml:

  1. #Yournvidia driver version here 
  2. volumes: 
  3. nvidia_driver_375.26: 
  4. external:true 
  5. ... 
  6. volumes: 
  7. -nvidia_driver_375.26:/usr/local/nvidia:ro 

6. Bash 別名

但是 nvidia-docker-compose 需要輸入 21 個字符,這太多了。

[[204697]]

很幸運(yùn)我們可以使用 bash 別名。在你最喜愛的編輯器打開~/.bashrc(有時是~/.bash_profile),輸入以下代碼行:

  1. alias doc='nvidia-docker-compose' 
  2. alias docl='doc logs -f --tail=100' 

通過運(yùn)行 source ~/.bashrc 更新你的設(shè)置。

開始 TensorFlow 服務(wù)

現(xiàn)在我們準(zhǔn)備好利用上述所有工具的優(yōu)點(diǎn)。比如,我們運(yùn)行一個 Tensorflow GPU 啟用的 Docker 容器。

在項(xiàng)目目錄中創(chuàng)建具有以下內(nèi)容的 docker-compose.yml 文件:

  1. version:'3' 
  2. services: 
  3. tf: 
  4. image:gcr.io/tensorflow/tensorflow:latest-gpu 
  5. ports: 
  6. -8888:8888 
  7. volumes: 
  8. -.:/notebooks 

現(xiàn)在我們可以使用單個命令開始 TensorFlow Jupiter:

  1. doc up 

doc 是 nvidia-docker-compose 的別名——它將使用正確的 volume-driver 生成已修改的配置文件 nvidia-docker-compose.yml,然后運(yùn)行 docker-compose。

你可以使用相同的命令管理你的服務(wù):

  1. doc logs 
  2. doc stop 
  3. doc rm 
  4. #...etc 

結(jié)論

但是這值得嗎?下面讓我們看一下其優(yōu)缺點(diǎn)。

優(yōu)點(diǎn)

  • 無需考慮 GPU 設(shè)備共享
  • 不必再為英偉達(dá)驅(qū)動程序版本擔(dān)憂
  • 擺脫了偏愛干凈、簡單配置的命令標(biāo)志
  • 再也不需要--name 標(biāo)志管理容器狀態(tài)
  • 眾所周知已記錄并得到廣泛使用的實(shí)用程序
  • 你的配置已為編制工具做好準(zhǔn)備,比如理解 docker-compose 文件的編制工具 Kubernetes

缺點(diǎn)

  • 你不得不安裝更多工具

它是生產(chǎn)就緒(production-ready)的嗎

是的。在電影推薦應(yīng)用 Movix 中,我們使用 GPU 加速的 TensorFlow 網(wǎng)絡(luò)基于用戶輸入計(jì)算實(shí)時的電影選擇。

我們在 Proxy API 的 Rancher 集群中有三臺帶有 Nvidia Titan X 的電腦。配置儲存在常規(guī) docker-compose.yml 文件中:因此在一個新服務(wù)器上部署應(yīng)用程序或者設(shè)置開發(fā)環(huán)境變得很輕松。目前為止它的表現(xiàn)堪稱***。

為機(jī)器學(xué)習(xí)的未來做好準(zhǔn)備吧!

原文:https://hackernoon.com/docker-compose-gpu-tensorflow-%EF%B8%8F-a0e2011d36

【本文是51CTO專欄機(jī)構(gòu)“機(jī)器之心”的原創(chuàng)譯文,微信公眾號“機(jī)器之心( id: almosthuman2014)”】

 

戳這里,看該作者更多好文

責(zé)任編輯:趙寧寧 來源: 51CTO專欄
相關(guān)推薦

2018-06-05 13:33:16

SDN5GNFV

2018-08-06 18:36:21

2022-06-24 14:09:47

物聯(lián)網(wǎng)元宇宙數(shù)字孿生

2021-01-05 08:49:52

DevOps開發(fā)工具

2010-05-13 17:33:24

MySQL索引

2010-08-04 09:03:53

PerlOracle 10g

2018-04-04 12:34:44

云計(jì)算區(qū)塊鏈融合

2022-11-19 09:30:31

開源容器

2023-06-25 08:12:02

2023-10-11 06:50:32

Oracle數(shù)據(jù)庫系統(tǒng)

2019-07-29 08:00:18

文件容器Docker Comp

2017-07-17 16:27:10

Docker Comp鏈接容器

2022-08-27 15:27:34

LinuxdockerCompose

2014-12-15 11:23:00

Docker Comp分布式應(yīng)用容器應(yīng)用

2022-06-24 10:11:15

DockerLinux

2024-01-17 08:01:28

Docker語法命令

2022-03-16 14:05:04

區(qū)塊鏈人工智能物聯(lián)網(wǎng)

2017-05-23 15:53:52

docker服務(wù)容器

2023-11-02 08:45:07

2019-09-17 08:00:24

DockerCompose命令
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號