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

2020-05-03  本文已影响0人  WILeroy

1 前期准备

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

2 ubuntu-18.04安装nvidia显卡驱动

在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为推荐驱动.

安装完成后, 重启系统, 然后使用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权限).

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 参考

上一篇 下一篇

猜你喜欢

热点阅读