「开源教程」快速配置 TensorFlow 本地开发环境(Docker + Jupyter + VS Code)
发布日期:2021-05-07 13:11:24 浏览次数:15 分类:原创文章

本文共 8161 字,大约阅读时间需要 27 分钟。

TensorFlow logo



本文主要参考自 ,选择了 Docker 容器作为开发环境,并且可以用 Jupyter 和 VS Code 开发。
觉得不错的话可以点个赞,收藏备忘也不错哦,另外也可以到我的博客 查看更多原创博文:)





目录





















安装 TensorFlow 有很多种方法,最方便快捷的是使用 pip 安装,这在官网上有十分简单的说明,我就不在这里重复了,这篇文章主要是带你看看安装 TensorFlow 容器,和如何解决可能会碰到的一些问题,让我们开始吧!


因为我使用的是 Ubuntu 20.04,所以在配置过程中我都是用 Ubuntu 演示的,如果你用的也是 Ubuntu,那就太好了,如果不是请仅作参考。


0. 关于开源教程


这是我写的第一篇开源教程,开源的意思就是任何人都可以引用、编辑,网上的各种教程五花八门,但很多都不会随时间更新,这就会造成一些教程一开始是可行的,但是过了一段时间就会遇到一些错误,所以我建议大家在学习的时候多看官方教程,因为官方的教程一般都会及时更新并且是最佳实践。


这篇教程也不适合所有人,很多细节我并没有研究得很透彻,主要是给那些新手快速配置环境看的,但我也希望这篇文章足够可靠,如果你有任何问题和建议都可以在评论区提出,有能力的也可以到我的 提交 PR。


1. 安装 Docker


我们先来看看 是如何介绍 Docker 的:


Get Docker


翻译:


Docker是一个用于开发,发布和运行应用程序的开放平台。Docker使您能够将应用程序与基础架构分开,从而可以快速交付软件。借助Docker,您可以以与管理应用程序相同的方式来管理基础架构。通过利用Docker的方法进行快速的运输,测试和部署,您可以大大减少编写代码和在生产环境中运行代码之间的延迟。

简单来说,Docker 可以让我们在多种环境中开发,并且易于切换,不用每次都大费周章地配置环境。因为我用的是 Ubuntu 20.04,所以我就选择 Linux 的 Docker 安装作为演示,你可以根据自己的情况在官网选择对应的安装方式。


1. 卸载旧版本(如果没有安装过 Docker,可以忽略此步骤)


sudo apt remove docker docker-engine docker.io containerd runc

2. 安装 Docker


安装 Docker 也有好几种方法,这是它们的区别:,为了避免麻烦,本文只介绍如何使用仓库来安装。



  1. 更新 apt 包的索引并安装一些可以让 apt 使用 HTTPS 连接仓库的包:

    sudo apt-get updatesudo apt-get install \apt-transport-https \ca-certificates \curl \gnupg-agent \software-properties-common

  2. 添加 Docker 的官方 GPG 公钥:

    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

    测试是否添加成功:

    sudo apt-key fingerprint 0EBFCD88

    如果出现类似以下信息,那就是成功了:

    pub     rsa4096 2017-02-22 [SCEA]        9DC8 5822 9FC7 DD38 854A  E2D8 8D81 803C 0EBF CD88uid           [ 未知 ] Docker Release (CE deb) <docker@docker.com>sub     rsa4096 2017-02-22 [S]

  3. 设置 stable(稳定版)仓库:

    sudo add-apt-repository \"deb [arch=amd64] https://download.docker.com/linux/ubuntu \$(lsb_release -cs) \stable"

  4. 安装最新版本的 Docker Engine:

    sudo apt updatesudo apt install docker-ce docker-ce-cli containerd.io

    测试是否安装成功:

    sudo docker run hello-world

    第一次运行需要下载,等待一段时间即可,以下是成功信息:

    Hello from Docker!This message shows that your installation appears to be working correctly....


3. 让你的 Docker 更好用


由于 Docker 官方的镜像源受到魔法的影响,直接连接速度感人,所以我们使用 Docker 的第一步就是换源。这里有几个免费的加速器:


1、Docker官方的中国镜像加速器:https://registry.docker-cn.com  不用注册2、中科大的镜像加速器:https://docker.mirrors.ustc.edu.cn/   不用注册3、阿里云的镜像加速器:登录阿里云的容器hub服务,镜像加速器那一栏里会为你独立分配一个加速器地址 要注册4、DaoCloud的镜像加速器:登录DaoCloud的加速器获取脚本,该脚本可以将加速器添加到守护进程的配置文件中 要注册

这里使用 Docker 官方的中国镜像加速器作为示范,直接输入终端即可:


sudo mkdir -p /etc/dockersudo tee /etc/docker/daemon.json <<-'EOF'{
"registry-mirrors": ["https://registry.docker-cn.com"]}EOFsudo systemctl daemon-reloadsudo systemctl restart docker

使用阿里云镜像加速器可以参考这篇文章:


因为 Docker 的使用可能会影响到系统安全,所以大部分的 docker 命令都要使用 sudo 才能运行,如果你不想每次都加一个 sudo 的话,可以使用以下命令解决:



  1. 添加 docker 组:
    sudo groupadd docker

  2. 添加当前用户到 docker 组:
    sudo usermod -aG docker $USER


用户组的更改需要重新登录才能刷新,重新登录后可以使用 docker run hello-world 测试是否成功,建议不要在服务器上使用这个方法。


4. 下载 TensorFlow Docker 映像































标记 说明
latest TensorFlow CPU 二进制映像的最新版本。(默认版本)
nightly TensorFlow 映像的每夜版(不稳定)。
version 指定 TensorFlow 二进制映像的版本,例如:2.1.0
devel TensorFlow master 开发环境的每夜版。包含 TensorFlow 源代码。
custom-op 用于开发 TF 自定义操作的特殊实验性映像。

::如需了解更多信息,请点击以下链接:https://github.com/tensorflow/custom-op :


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



















标记变体 说明
tag-gpu 支持 GPU 的指定标记版本。(详见下文)
tag-jupyter 针对 Jupyter 的指定标记版本(包含 TensorFlow 教程笔记本)

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


docker pull tensorflow/tensorflow                     # latest stable releasedocker pull tensorflow/tensorflow:devel-gpu           # nightly dev release w/ GPU supportdocker pull tensorflow/tensorflow:latest-gpu-jupyter  # latest release w/ GPU support and Jupyter

以上内容摘自 [TensorFlow 官网安装教程],我使用的是 docker pull tensorflow/tensorflow:latest-gpu-jupyter,注意一定要换源后再安装,不然你就可以先睡一觉明天再起来看了。


安装成功后你就可以在 Docker 容器中开发了,例如在仅支持 CPU 的映像中启动 bash 会话:


docker run -it tensorflow/tensorflow bash

不过这样还不够方便,我们可以使用 Jupyter 笔记本来开发:


docker run -it -p 8888:8888 tensorflow/tensorflow:latest-jupyter

然后按照终端输出的提示在主机网络浏览器中打开以下网址:http://127.0.0.1:8888/?token=...


5. 使用 GPU 支持


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



  1. 使用最新的驱动程序
    如果你使用的也是 Ubuntu 20.04,那么恭喜你,切换到最新的驱动十分容易,只需要打开自带的软件“软件和更新”,然后选择最新的驱动即可,如图所示:
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Evu8zS8P-1610349437491)({
    { ‘/assets/images/nvidia-drive.png’ | absolute_url }})]
    如果你使用的不是 20 版本的 Ubuntu,或者使用的是其他发行版,那么可以参考


  2. 检查 GPU 是否可用:

    lspci | grep -i nvidia

  3. 安装 NVIDIA 容器工具包:



    请通过 docker -v 检查 Docker 版本。对于 19.03 之前的版本,您需要使用 nvidia-docker2 和 --runtime=nvidia 标记;对于 19.03 及之后的版本,您将需要使用 nvidia-container-toolkit 软件包和 --gpus all 标记。


    现在 Docker 的最新版是 20.10.2,所以我将基于最新版演示,如果你是按照我的教程操作的那一定没问题



    1. 配置 stable 仓库和 GPG 公钥:
      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

    2. 安装 nvidia-container-toolkit
      sudo apt updatesudo apt install -y nvidia-container-toolkit

    3. 重启 Docker:
      sudo systemctl restart docker

    4. 测试是否安装成功:
      sudo docker run --rm --gpus all nvidia/cuda:11.0-base nvidia-smi
      示例输出:
      Mon Jan 11 05:33:48 2021       +-----------------------------------------------------------------------------+| NVIDIA-SMI 460.32.03    Driver Version: 460.32.03    CUDA Version: 11.2     ||-------------------------------+----------------------+----------------------+| 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  GeForce GTX 950M    Off  | 00000000:01:00.0 Off |                  N/A || N/A   50C    P0    N/A /  N/A |    397MiB /  4046MiB |      0%      Default ||                               |                      |                  N/A |+-------------------------------+----------------------+----------------------+                                                                            +-----------------------------------------------------------------------------+| Processes:                                                                  ||  GPU   GI   CI        PID   Type   Process name                  GPU Memory ||        ID   ID                                                   Usage      ||=============================================================================|+-----------------------------------------------------------------------------+

    其他系统请参考


  4. 验证安装效果:

    docker run --gpus all --rm nvidia/cuda nvidia-smi

  5. 使用支持 GPU 的映像在容器中启动 bash

    docker run --gpus all -it tensorflow/tensorflow:latest-gpu bash


6. 使用 VS Code 编辑 Jupyter 笔记本


我们可以使用仅支持 CPU 的 Jupyter 服务器:


docker run -it -p 8888:8888 tensorflow/tensorflow:latest-jupyter

也可以使用支持 GPU 的 Jupyter 服务器:


docker run -it -p 8888:8888 tensorflow/tensorflow:latest-gpu-jupyter

我比较喜欢使用支持 GPU 的,如果不想每次输入这么长的命令可以使用 alias


vim ~/.bashrc# 将以下内容加入 .bashrcalias webj='docker run -it -p 8888:8888 tensorflow/tensorflow:latest-gpu-jupyter'# 更新 aliassource ~/.bashrc

然后就可以使用 webj 来达到相同的作用了:


webj# 示例输出[I 05:46:26.894 NotebookApp] Writing notebook server cookie secret to /root/.local/share/jupyter/runtime/notebook_cookie_secretjupyter_http_over_ws extension initialized. Listening on /http_over_websocket[I 05:46:27.805 NotebookApp] Serving notebooks from local directory: /tf[I 05:46:27.806 NotebookApp] Jupyter Notebook 6.1.5 is running at:[I 05:46:27.806 NotebookApp] http://7ce58fd012c4:8888/?token=dc6015d8174f76ba8842f65df0c731dd3c802dc7ec7818e1[I 05:46:27.806 NotebookApp]  or http://127.0.0.1:8888/?token=dc6015d8174f76ba8842f65df0c731dd3c802dc7ec7818e1[I 05:46:27.806 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).[C 05:46:27.817 NotebookApp]         To access the notebook, open this file in a browser:        file:///root/.local/share/jupyter/runtime/nbserver-1-open.html    Or copy and paste one of these URLs:        http://7ce58fd012c4:8888/?token=dc6015d8174f76ba8842f65df0c731dd3c802dc7ec7818e1     or http://127.0.0.1:8888/?token=dc6015d8174f76ba8842f65df0c731dd3c802dc7ec7818e1

在终端按住 Ctrl 单击最后一个链接就可以打开 Jupyter 笔记本的网站了。


另外我们也可以让 VS Code 使用这个支持 GPU 的服务器,首先我们要在 VS Code 中新建一个 Jupyter 笔记本,然后打开,在右上角的 Jupyter Server 中选择 Existing 然后填入上述链接即可:


VS Code Jupyter
VS Code Jupyter 更换服务器


参考



上一篇:Java 学习笔记
下一篇:学习 Node.js 的第一天

发表评论

最新留言

第一次来,支持一个
[***.219.124.196]2025年04月08日 18时00分28秒