美文网首页
【ubuntu-18.04】从0开始配置tensorflow-g

【ubuntu-18.04】从0开始配置tensorflow-g

作者: WILeroy | 来源:发表于2020-05-03 18:11 被阅读0次

    1 前期准备

    本文使用docker在Linux系统中配置tensorflow-gpu的运行环境, 下面是操作系统和显卡的具体情况. 因为使用docker, 配置过程非常简单, 需要详细说明的就两部分: 1) 安装nvidia显卡驱动; 2) 使用docker配置运行环境.

    • 操作系统: ubuntu-18.04
    • 显卡: RTX-2060SUPER

    2 ubuntu-18.04安装nvidia显卡驱动

    • 使用ubuntu软件仓库安装
    • 使用PPA第三方软件仓库安装
    • 下载官网驱动+手动安装
    • 使用ubuntu的软件更新器安装

    在ubuntu中安装n卡驱动的方法有以上几种, 本文选择第1种方法, 如果想尝试使用其他几种方法安装, 可以参考另外一篇文章, Ubuntu 18.04 安装 NVIDIA 显卡驱动.

    2.1 修改apt的镜像源

    在使用ubuntu软件仓库安装显卡驱动之前, 建议先确定apt是否使用的是国内镜像源, 以保证下载速度. 使用命令cat /etc/apt/sources.list可以查看apt的镜像源配置文件, 如果输出与下面类似, 就代表当前使用的镜像源为非国内镜像源.

    #deb cdrom:[Ubuntu 18.04.4 LTS _Bionic Beaver_ - Release amd64 (20200203.1)]/ bionic main restricted
    
    # See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to
    # newer versions of the distribution.
    deb http://cn.archive.ubuntu.com/ubuntu/ bionic main restricted
    # deb-src http://cn.archive.ubuntu.com/ubuntu/ bionic main restricted
    

    修改镜像源只需要两步:

    1. 修改镜像源配置文件/etc/apt/sources.list, 将配置文件中原本的内容删除, 并将以下内容复制到其中.
    deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
    
    deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
    
    deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
    
    deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
    
    deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
    
    1. 使用命令sudo apt-get updatesudo apt-get upgrade进行更新(两条命令的作用不同).

    2.2 安装驱动

    使用命令ubuntu-drivers devices查看显卡型号与可用驱动, 结果如下:

    ubuntu-drivers devices

    上图分别输出了核显和独显的情况, 并指出n卡有3个可用驱动, 其中nvidia-driver-440为推荐驱动.

    • 如果同意安装推荐版本, 只需要使用命令sudo ubuntu-drivers autoinstall即可自动安装.
    • 另外, 也可以使用命令sudo apt install nvidia-435安装其他想安装的版本.

    安装完成后, 重启系统, 然后使用nvidia-smi命令确认安装是否成功, 以下是成功安装的结果. 因为已经设置了核显输出图形界面, 所以n卡暂时没用占用.

    nvidia-smi

    3 安装docker与使用docker配置运行环境

    所谓Docker, 就是一个开源的应用容器引擎, 可以让开发者打包其应用和依赖包到一个可移植的容器中. 本文之所以使用docker, 是为了省去配置cuda和cudnn的麻烦. tensorflow官方提供了各种版本的docker镜像, 这些镜像中已经安装了tensorflow-gpu和对应的cuda, cudnn. 在安装好n卡驱动的条件下, 简单配置docker即可使用镜像生成包含tensorflow-gpu运行环境的容器.

    3.1 docker的安装

    docker官网安装教程中介绍了多种安装方法, 本文使用下载.deb软件包安装的方法.

    1. 打开链接https://download.docker.com/linux/ubuntu/dists/, 选择子目录bionic/pool/stable, 然后按照所用处理器的架构进行选择, 最后下载想要安装的软件包.
    2. 使用命令sudo dpkg -i /path/to/package.deb进行安装.
    3. 安装完成后, 与apt, pip等工具相同, docker也需要配置仓库(保证下创建载速度). 其配置文件的路径为/etc/docker/daemon.json. 配置时, 首先使用以下内容覆盖原内容, 然后用命令systemctl daemon-reload, systemctl restart docker完成更新.
    {
    "registry-mirrors": ["https://alzgoonw.mirror.aliyuncs.com"]
    }
    
    1. 最后, 使用docker version查看docker的版本信息; 使用docker run hello-world测试docker. (运行docker命令时都需要加上sudo, 为了方便, 可以使用命令sudo gpasswd -a ${USER} docker将指定用户加入到docker用户组中).
      docker version
      docker run hello-world

    3.2 docker的基本概念与使用

    在docker中, 有两个重要的概念: 镜像(image)和容器(container). 如果使用过虚拟机, 对于镜像和容器的概念应该能很快地理解. 所谓镜像, 就相当于一个静态存储的虚拟机, 其中包含了虚拟机已有的各种配置; 而容器则是镜像实例化之后的产物, 可以理解为一个动态运行的虚拟机. 不同的是, 容器相对于虚拟机更为轻量级, 使用起来也更为灵活.

    试想, 如果有了1个已配置好tensorflow-gpu和相应cuda, cudnn的镜像, 那么就能通过该镜像运行一个容器, 然后即可在该容器中运行tensorflow-gpu程序. 当该容器尚不能满足运行要求时, 例如还缺少其他包, 也可以在原有的基础上进行配置, 然后将容器存储为新的镜像, 以实现运行环境的复用. 以下是一些必要的docker命令(都需要root权限).

    • 查看当前使用docker的详细信息: docker version.
    • 列出已有镜像: docker image ls.
    • 下载镜像: docker image pull [image-name].
    • 删除镜像: docker image rm [image-name], 若该镜像已被用于某些容器, 则无法删除.
    • 列出已有容器: docker container ls -a, 如果不要-a, 则只会创建列出正在运行的容器.
    • 使用镜像创建容器: docker run [options] [image-name] [command]. 该命令中, [options]为一些可选项: --name container-name(设置容器名), -it(交互式运行[command]), -v path-a:path-b(将真实系统的路径path-a挂载到容器的路径path-b下), -w path-a(设置容器的工作路径). 另外, [command]则为容器创建后运行的首条命令.
    • 使用已运行容器: docker exec [options] [container-name] [command], 该命令与上1条命令类似, 但[options]有一些不同.
    • 运行已停止容器: docker start [container-name].
    • 停止运行容器: docker stop [container-name].
    • 删除容器: docker container rm [container-name], 若该容器正在运行, 则无法删除.
    • 保存容器为镜像: docker commit [container-name] [new-image-name].
    • 保存镜像为文件: docker save -o [file-name] [image-name].
    • 加载本地镜像: docker load -i [file-name].

    3.3 配置tensorflow-gpu运行环境

    该部分完全参考Tensorflow-gpu Docker官网安装教程, 如条件允许, 建议直接看该教程.

    3.3.1 安装NVIDIA Docker

    NVIDIA Docker其实就是在原生docker之上增加了一部分功能, 可以让容器直接使用机器的n卡. 安装过程如下(摘抄自NVIDIA Docker支持).

    # Add the package repositories
    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
    
    sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit
    sudo systemctl restart docker
    

    3.3.2 下载镜像与容器运行

    本文的最后一部分是使用以上安装的东西配置tensorflow-gpu运行环境的方法, 根据docker部分的介绍, 也就是两部分: 下载镜像, 创建与使用容器.

    Tensorflow官方提供了各种版本的Tensorflow Docker镜像, 具体情况可以通过官网安装教程查询. 命令docker image pull tensorflow/tensorflow:latest-gpu-py3可以下载最新版本的Tensorflow Docker镜像, 该镜像的tensorflow为gpu版本, 使用python3. 获得需要的镜像后, 使用命令docker run --gpus all --name tf2-py3 -it tensorflow/tensorflow:latest-gpu-py3 /bin/bash即可创建对应容器.

    4 参考

    相关文章

      网友评论

          本文标题:【ubuntu-18.04】从0开始配置tensorflow-g

          本文链接:https://www.haomeiwen.com/subject/anzkghtx.html