快速安裝深度學習系統 Ubuntu20.04 tensorflow 2.7.0

 
 留言

程式日新月異,nvidia-docker的版本也變化很快,如今都已經改名成nvidia container tookit了,有看過小編的文章應該有印象之前有介紹過nvidia-docker 一款非常好搭建環境的軟體,從前要安裝cuda、cudnn各式各樣的環境,如今只要安裝一款docker所有事情就都解決了,甚至也可以用vs code 在container中 debug,想要學習的話繼續看下去吧
快速搭建Tensorflow深度學習環境–Nvidia-docker

一.安裝nvidia container toolkit(舊名nvidia-docker)

nvidia container toolkit官網

安裝nvidia-docker 只要照著官網的步驟走很快就可以完成了,首先要注意官網支持的linux版本,小編是安裝最新的Ubuntu20.04 Long term support(LTS)版本

然後就跟著官網的步驟走就可以了

#step1
sudo apt-get install curl

#step2
curl https://get.docker.com | sh \
  && sudo systemctl --now enable docker

#step3
distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
   && curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - \
   && curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list

#step4
curl -s -L https://nvidia.github.io/nvidia-container-runtime/experimental/$distribution/nvidia-container-runtime.list | sudo tee /etc/apt/sources.list.d/nvidia-container-runtime.list

#step5
sudo apt-get update

#step6
sudo apt-get install -y nvidia-docker2

#step7
sudo systemctl restart docker

#step8
sudo docker run --rm --gpus all nvidia/cuda:11.0-base nvidia-smi

如果最後有跑出如下畫面就代表成功安裝了

 

  • 讓使用docker 不用sudo
    使用docker的時候通常都要加上最高權限才可以使用,若不想每次都sudo並打密碼的話可以打如下指令,把現在的使用者加進docker中

sudo groupadd docker
sudo usermod -aG docker $USER

二.安裝tensorflow docker image

Tensorflow docker hub官網

再來就可以上docker hub上Tensorflow的官網抓取image了,抓取指令如下

docker pull image_name

舉例說明,假設小編想要抓2.7.0 GPU版本的tensorflow,那就可以打成如下指令,冒號後面代表tag的編碼

docker pull tensorflow/tensorflow:2.7.0-gpu

抓完後就可以打指令看看image有沒有抓下來

三.實際使用安裝的環境跑深度學習程式碼

要測試的程式碼如下,是mnist的分類網路,首先把下列程式碼寫成 learn_mnist.py 檔案,接下來要把程式碼跑在visual studio code中,然後使用docker的環境來跑

import tensorflow as tf

mnist = tf.keras.datasets.mnist

(x_train, y_train), (x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0

model = tf.keras.models.Sequential([
  tf.keras.layers.Flatten(input_shape=(28, 28)),
  tf.keras.layers.Dense(128, activation='relu'),
  tf.keras.layers.Dropout(0.2),
  tf.keras.layers.Dense(10, activation='softmax')
])

model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])

model.fit(x_train, y_train, epochs=5)
model.evaluate(x_test,  y_test, verbose=2)

首先安裝visiual studio code
然後安裝python 擴充包 以及docker 擴充包

之後按F1,加入Dockerfile,並將Dockerfile的image改成上述下載的tensorflow2.7.0

具體操作可以參考Docker VSCode Python Tutorial ▶️ Run your App in a Container

之後就可以build image然後享受在container中debug了,下圖是build完執行後的結果

docker run image 基本教學

docker run -it --gpus all -v source_file:container_file image_name /bin/bash

  • -it: 開啟交互模式
  • –gpus all: 開啟GPU模式
  • -v: 將local的檔案映射到container中
  • /bin/bash: 可以深入到container中使用

create image 基本教學

docker build -t image_name .

  • FROM: 使用到的 Docker Image 名稱,今天使用 tensorflow/tensorflow:2.7.0-gpu

  • MAINTAINER: 用來說明,撰寫和維護這個 Dockerfile 的人是誰,也可以給 E-mail的資訊

  • RUN: RUN 指令後面放 Linux 指令,用來執行安裝和設定這個 Image 需要的東西

  • ADD: 把 Local 的檔案複製到 Image 裡,如果是 tar.gz 檔複製進去 Image 時會順便自動解壓縮。Dockerfile 另外還有一個複製檔案的指令 COPY 未來還會再介紹

  • ENV: 用來設定環境變數

  • CMD: 在指行 docker run 的指令時會直接呼叫開啟 Tomcat Service

以下是我的docker file

# For more information, please refer to https://aka.ms/vscode-docker-python
FROM tensorflow/tensorflow:2.7.0-gpu

# Keeps Python from generating .pyc files in the container
ENV PYTHONDONTWRITEBYTECODE=1

# Turns off buffering for easier container logging
ENV PYTHONUNBUFFERED=1

# Install pip requirements
COPY requirements.txt .
RUN python -m pip install -r requirements.txt

WORKDIR /app
COPY . /app

# Creates a non-root user with an explicit UID and adds permission to access the /app folder
# For more info, please refer to https://aka.ms/vscode-docker-python-configure-containers
RUN adduser -u 5678 --disabled-password --gecos "" appuser && chown -R appuser /app
USER appuser

# During debugging, this entry point will be overridden. For more information, please refer to https://aka.ms/vscode-docker-python-debug
CMD ["python", "learn_mnist.py"]

四.參考資料

https://philipzheng.gitbooks.io/docker_practice/content/image/create.html

https://ithelp.ithome.com.tw/articles/10191016
https://joshhu.gitbooks.io/dockercommands/content/index.html
http://www.runoob.com/docker/docker-command-manual.html

https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html

https://www.tensorflow.org/install

arrow
arrow

    Darwin的AI天地 發表在 痞客邦 留言(0) 人氣()