使用Docker安装TensorFlow ,并设置GPU/CPU支持

2022-05-26 17:34:07 浏览数 (1)

一、Ubunutu20.4系统设置root登录及密钥登录

1、进入服务器主界面,将系统更换为Ubuntu20.4

https://console.cloud.tencent.com/cvm/instance/index?rid=4&ProjectId=0&pid=0

image-20220526164532459image-20220526164532459
2、在Git官网下载Git并安装,然后执行以下命令,生成ssh密钥,此操作在本机上执行。
代码语言:text复制
-- 设置Git用户名和邮箱
git config --global user.name "用户名"
git config --global user.email "邮箱"
-- 生成ssh密钥
ssh-keygen -t rsa -C "邮箱"
之后一直回车,全部默认,不需要设置其他内容

然后将C:UsersPanYiFan.ssh下的id_rsa.pub使用记事本打开,复制里面的内容。

3、在云服务界面,选择SSH密钥-->创建密钥-->导入已有密钥,自定义名称,然后将复制到密钥粘贴到公钥里面,之后点击确定。
image-20220526165526421image-20220526165526421
4、选择实例-->更多操作-->密码/密钥-->加载密钥,选择刚才所加的密钥,然后一直默认,确认前选择同意重启服务器,之后点击确定。
image-20220526165728895image-20220526165728895
5、复制公网IP,使用SSH连接工具连上服务器,登录需要选择使用Ubuntu用户登录。
6、
代码语言:shell复制
ubuntu@master:~$ sudo passwd
New password:
Retype new password:
passwd: password updated successfully
登录到root
ubuntu@master:~$ su
root@master:/home/ubuntu# vim /etc/ssh/sshd_config
进入vim后,录入[:set nu],显示出来行号
将第33行改为yes,如下
#PermitRootLogin prohibit-password
33 PermitRootLogin yes
之后按esc,:wq保存

root@master:/home/ubuntu# service ssh restart
然后设置root的用户的免密登录密钥
代码语言:txt复制
root@master:/home/ubuntu# vim /root/.ssh/authorized_keys
然后将刚才生成的公钥复制到这个地方
最后依次按esc,:wq保存退出。

然后最后退出远程软件,验证是否可以直接root登录

二、安装Docker

step 1: 安装必要的一些系统工具

代码语言:txt复制
 sudo apt-get update
 sudo apt-get install 
    ca-certificates 
    curl 
    gnupg 
    lsb-release

step 2: 安装GPG证书,写入软件源信息

代码语言:txt复制
sudo mkdir -p /etc/apt/keyrings
 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
 echo 
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu 
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Step 3: 更新并安装Docker-CE

代码语言:txt复制
 sudo apt-get update
 sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin

三、安装TensorFlow

1、设置 NVIDIA 容器工具包,官网

1、设置包存储库和 GPG 密钥:

代码语言:txt复制
$ distribution=$(. /etc/os-release;echo $ID$VERSION_ID) 
      && curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg 
      && curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list | 
            sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | 
            sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list

2、更新包列表后安装nvidia-docker2包(和依赖项):

代码语言:txt复制
$ sudo apt-get update
$ sudo apt-get install -y nvidia-docker2

3、设置默认运行时后重启 Docker 守护进程完成安装:

代码语言:txt复制
$ sudo systemctl restart docker

4、此时,可以通过运行基本 CUDA 容器来测试工作设置:

代码语言:txt复制
$ sudo docker run --rm --gpus all nvidia/cuda:11.0.3-base-ubuntu20.04 nvidia-smi

5、这应该会产生如下所示的控制台输出:

代码语言:txt复制
 ----------------------------------------------------------------------------- 
| NVIDIA-SMI 450.51.06    Driver Version: 450.51.06    CUDA Version: 11.0     |
|------------------------------- ---------------------- ---------------------- 
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|=============================== ====================== ======================|
|   0  Tesla T4            On   | 00000000:00:1E.0 Off |                    0 |
| N/A   34C    P8     9W /  70W |      0MiB / 15109MiB |      0%      Default |
|                               |                      |                  N/A |
 ------------------------------- ---------------------- ---------------------- 

 ----------------------------------------------------------------------------- 
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|  No running processes found                                                 |
 ----------------------------------------------------------------------------- 
2、下载 TensorFlow Docker 映像

官方 TensorFlow Docker 映像位于 tensorflow/tensorflow Docker Hub 代码库中。映像版本按照以下格式进行标记:

标记

说明

latest

TensorFlow CPU 二进制映像的最新版本。(默认版本)

nightly

TensorFlow 映像的每夜版。(不稳定)

version

指定 TensorFlow 二进制映像的版本,例如:2.1.0

devel

TensorFlow master 开发环境的每夜版。包含 TensorFlow 源代码。

custom-op

用于开发 TF 自定义操作的特殊实验性映像。详见此处。

每个基本标记都有会添加或更改功能的变体:

标记变体

说明

tag-gpu

支持 GPU 的指定标记版本。(详见下文)

tag-jupyter

针对 Jupyter 的指定标记版本(包含 TensorFlow 教程笔记本)

您可以一次使用多个变体。例如,以下命令会将 TensorFlow 版本映像下载到计算机上:

代码语言:shell复制
docker pull tensorflow/tensorflow                     # latest stable release
docker pull tensorflow/tensorflow:devel-gpu           # nightly dev release w/ GPU support
docker pull tensorflow/tensorflow:latest-gpu-jupyter  # latest release w/ GPU support and Jupyter
3、启动 TensorFlow Docker 容器

要启动配置 TensorFlow 的容器,请使用以下命令格式:

代码语言:txt复制
docker run [-it] [--rm] [-p hostPort:containerPort] tensorflow/tensorflow[:tag] [command]

有关详情,请参阅 docker 运行参考文档。

4、使用仅支持 CPU 的映像的示例

我们使用带 latest 标记的映像验证 TensorFlow 安装效果。Docker 会在首次运行时下载新的 TensorFlow 映像:

代码语言:shell复制
docker run -it --rm tensorflow/tensorflow 
   python -c "import tensorflow as tf; print(tf.reduce_sum(tf.random.normal([1000, 1000])))"

成功:TensorFlow 现已安装完毕。请查看教程开始使用。

我们来演示更多 TensorFlow Docker 方案。在配置 TensorFlow 的容器中启动 bash shell 会话:

代码语言:txt复制
docker run -it tensorflow/tensorflow bash

在此容器中,您可以启动 python 会话并导入 TensorFlow。

如需在容器内运行在主机上开发的 TensorFlow 程序,请装载主机目录并更改容器的工作目录 (-v hostDir:containerDir -w workDir):

代码语言:shell复制
docker run -it --rm -v $PWD:/tmp -w /tmp tensorflow/tensorflow python ./script.py

向主机公开在容器中创建的文件时,可能会出现权限问题。通常情况下,最好修改主机系统上的文件。

使用每夜版 TensorFlow 启动 Jupyter 笔记本服务器:

代码语言:txt复制
docker run -it -p 8888:8888 tensorflow/tensorflow:nightly-jupyter

按照说明在主机网络浏览器中打开以下网址:http://127.0.0.1:8888/?token=...

5、GPU 支持

Docker 是在 GPU 上运行 TensorFlow 的最简单方法,因为主机只需安装 NVIDIA® 驱动程序,而不必安装 NVIDIA® CUDA® 工具包。

安装 Nvidia 容器工具包以向 Docker 添加 NVIDIA® GPU 支持。nvidia-container-runtime 仅适用于 Linux。有关详情,请参阅 nvidia-container-runtime 平台支持常见问题解答。

检查 GPU 是否可用:

代码语言:txt复制
lspci | grep -i nvidia

验证 nvidia-docker 安装效果:

代码语言:txt复制
docker run --gpus all --rm nvidia/cuda nvidia-smi

注意nvidia-docker v2 使用 --runtime=nvidia,而不是 --gpus allnvidia-docker v1 使用 nvidia-docker 别名,而不是 --runtime=nvidia--gpus all 命令行标记。

6、使用支持 GPU 的映像的示例

下载并运行支持 GPU 的 TensorFlow 映像(可能需要几分钟的时间):

代码语言:shell复制
docker run --gpus all -it --rm tensorflow/tensorflow:latest-gpu 
   python -c "import tensorflow as tf; print(tf.reduce_sum(tf.random.normal([1000, 1000])))"

设置支持 GPU 的映像可能需要一段时间。如果重复运行基于 GPU 的脚本,您可以使用 docker exec 重复使用容器。

使用最新的 TensorFlow GPU 映像在容器中启动 bash shell 会话:

代码语言:txt复制
docker run --gpus all -it tensorflow/tensorflow:latest-gpu bash

0 人点赞