网络位置可以看到另一个人的电脑_在个人电脑上搭建 Nvidia GPU Cloud(NGC) 环境

087e09da4504e28a35a5b7e28dc8ecdb.png

Nvidia GPU Cloud 真正实现了个人电脑、工作环境、云端环境的大统一,能节省大量搭基础环境的时间

NVIDIA GPU Cloud(简称 NGC)是面向深度学习和科学计算优化的 GPU 加速云平台,包括 NGC 容器、registry 以及平台软件。

注意该“云平台”并不是传统意义上的“云”(AWS,Azure,阿里云之类向用户提供软硬件基础设施并获得利润的厂商),而是 Nvidia  向所有 GPU 用户(无论是大厂还是创业公司,无论是科研院所还是个人爱好者)提供的免费的、针对深度学习优化过的容器镜像,目的是帮助 Nvidia GPU 用户快速搭建深度学习环境、尽可能高效利用手头硬件的计算能力(顺带多卖些 GPU,提高用户粘性)。

下图是 NGC 的全貌:

14ca1e68dddf68bfe39f73b36d256468.png

上图左侧最底层是一台 DGX 服务器(焕发着象征土豪专属的金色光泽),向上为操作系统,驱动,Docker 引擎等软件栈,最上面几层将 CUDA、cuDNN、TF/Caffe/MXNet/PyTorch…… 封装在一个集装箱中,即为 Docker 容器。右侧则表明该容器可以运行在消费级 GPU(比如我手头的 GTX 1080)、私有云(比如公司的 GPU 服务器)、公有云 GPU 实例(比如 AWS G3)上。

NGC 提供的深度学习环境镜像:

15a629156b4b1928c7e5a9f6cfce2c0c.png

除了上面几个还有很多没有列出。

这些镜像不仅种类多样,涵盖主流 DL 框架,而且更新很频繁,基本每个月都会发布新版本镜像。以 TensorFlow 镜像为例,其镜像发布记录如下图:

e40754308081677e767cc72e71e93db6.png

上图最新版本 19.03 镜像中包含的软件版本:

f55d32e5179334c380e1b25e2678d778.png

可见内置了运行 TensorFlow 训练的所有必备软件,能轻松运行在单机单卡、单机多卡、多机多卡环境。

19.03 最大的一个亮点是支持自动混合精度训练,将模型中特定计算从 float 32 转换为 float16,利用 GPU Tensor Core 能大大提升训练速度。下面我们逐步介绍个人电脑上 NGC 环境搭建过程。

01

软硬件必备条件

首先要确认你的 GPU 型号是否在支持列表中。

https://docs.nvidia.com/deeplearning/dgx/support-matrix/index.html

目前 NGC 只支持 Pascal、Volta、Turing 架构 GPU,也就是设备版本号必须大于等于 6.0(可以运行 CUDA deviceQuery 查询设备版本号)。我使用的 GTX 1080,设备版本号为 6.1,满足该条件。

其次,你的电脑操作系统务必为 Linux,慢慢使用 CentOS 7,和工作环境保持一致。Ubuntu 16.04 以上也能满足,如果不幸是 Windows,那可能要准备重装双系统了。

再次,GPU 驱动务必安装且能正常工作。我这里驱动版本是 418.56。根据 Nvidia 建议,物理机驱动版本尽可能高一些,这样能更好支持新版本镜像。NGC TensorFlow 19.03 要求驱动版本 418 以上。

882850b21d4bfcecd41358f78f082d63.png

02

安装 nvidia-docker

Nvidia 利用容器来开发、测试、评测、部署深度学习框架和 HPC 应用,为此专门为 docker 开发了 runtime 以更好地支持 Nvidia GPU,即为 nvidia-docker。

本节命令全部使用 root 权限执行,如果非 root 用户需要先 sudo su。
运行以下命令安装 docker-ce:

yum install -y yum-utils device-mapper-persistent-data lvm2yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repoyum install docker-ce docker-ce-cli containerd.iosystemctl restart dockersystemctl enable docker
检查 docker 版本:

92a78e17f54202845a397b1ad6110abe.png

如果显示版本为 1.xx.x,那么说明系统中已经有旧版 docker,需要先运行以下命令予以删除:

yum remove docker docker-client docker-client-latest docker-common docker-latest  docker-latest-logrotate docker-logrotate docker-engine 

再按前面步骤安装最新 docker-ce。

确认已安装 docker-ce 无误后,运行如下命令安装 nvidia-docker:

curl -s -L https://nvidia.github.io/nvidia-docker/centos7/nvidia-docker.repo | sudo tee /etc/yum.repos.d/nvidia-docker.repoyum install -y nvidia-docker2systemctl daemon-reloadsystemctl restart docker


验证 nvidia-docker 安装成功:

ab7ed04550ad0423d2ed030121d39fff.png

如果输出和上面不同,请根据错误提示检查网络或前面安装步骤是否正确。

注意:root 账号可以直接运行 docker、nvidia-docker 命令。普通用户运行 docker、nvidia-docker 会有权限问题,解决方法是将用户加入 docker 用户组:

usermod -aG docker 你的用户名

03

获取 NGC 镜像

如果第一次使用 NGC,需要注册账号,入口:

https://ngc.nvidia.com/signup
输入用户名和邮箱,勾选相应选项后点注册即可收到邮件(注意查收垃圾邮件),按邮件指示设置密码后即可使用。

e59bed3603e7e003aed6d7fcc24236b1.png

进入控制面板:https://ngc.nvidia.com/catalog/containers
点左侧“Configuration”,然后“Get API Key”

d17442918e12570e385e06e979fdaea2.png

e42c38ff56ad3e3613f135b3521c3ef6.png

8b0d9698ca76baffbc2dd5ec415108e6.png

生成 API Key 成功后,妥善保管。
回到 GPU 云服务器命令行,运行如下命令进行登录:docker login nvcr.ioUsername: $oauthtokenPassword: 
其中用户名固定为 $oauthtoken,密码即前面生成的 API Key
命令行显示“Login Succeeded”表示这一步成功。
下面我们可以获取官方 Docker Image。以 TensorFlow 为例,NGC 页面为https://ngc.nvidia.com/catalog/containers/nvidia:tensorflow

2e571e9e535db743a66e43df38e268ba.png

运行如下命令可 pull 该 image:docker pull nvcr.io/nvidia/tensorflow:19.03-py3
整个 image pull 下来需要段时间,视网速而异。
运行 docker images 可以看到 pull 下来的 image:

f8ad3faa5b2895ffa919c7142a8d3eb5.png

04

启动 NGC 容器

运行命令:nvidia-docker run -ti -v /mnt:/mnt e8e /bin/bash
其中 e8e 为上一步 pull 下来 image 的 ID 前 3 个字母,缩写是为了输入方便,也可以使用镜像名:版本号(nvcr.io/nvidia/tensorflow:19.03-py3)。-v /mnt:/mnt 表示将本地 /mnt 目录映射到 Docker 容器 /mnt 位置,方便 Docker 与主机之间互拷文件。容器启动截图如下:

d0b77edbecc13c282ac6032c6977d53e.png

检查容器中 GPU 驱动是否正常:

3ee710d4e0f5b81197411e439a96a330.png

容器中已经安装了 TensorFlow 1.13.1,可以直接运行 TensorFlow 程序。

在容器中运行如下命令:

cd /workspace/nvidia-examples/cnnpython inception_v4.py -b 16

ac8982d02df0cf327128cd6e24ed8731.png

其中打印的第 3 列信息为训练速度(单位 img/s)。你可以换不同模型、不同 batch、不同精度(fp32/fp16)对 GPU 进行训练速度评测。
如有准备好的数据集,也可以从头训练一个模型。


运行上述命令的同时打开另一个终端运行 nvidia-smi 可以看到 GPU 被占用情况:

fbbefd1eefd15fef30de05a9d6a3658d.png

可见 GPU 计算占用率已达到 98%,显存占用 6187 MB(GTX 1080 显存总量 8119MB),除此之外还能看到温度 60 摄氏度,风扇转速 43%,板卡功耗 185W 等信息。

05

更新 NGC 镜像

如果你在容器中做了一些修改(比如安装了一些软件包,修改了系统配置等),可以在另一个终端运行如下命令保存为新镜像:

docker commit -m "一些说明"     container_id      image:version

其中 -m 后面添加注释,方便日后查询做了哪些修改;

container_id 可以在容器启动后,另一个终端运行 docker ps 查看,也可以直接从容器终端提示符 获取(例如前面图,root@c646c39c29bc 中的 c646c39c29bc 即 container_id);

image:version 则表示 docker images 显示的信息。从官网 pull 下来的镜像为 nvcr.io/nvidia/tensorflow:19.03-py3,你可以将待保存的镜像名换为与之前不同的,比如 bert:latest。保存完成再运行 docker images 见下图:

f53b10ebf08de3b79b0c4176076614d7.png

可以发现镜像尺寸有所增加。

为了节省镜像空间,建议大的数据集和工程尽可能放在共享目录中。

你也可以将自己的镜像打包上传到公共镜像库(Docker Hub)分享给其他人。具体步骤可以参考其他 Docker 教程。

06

总结

综上,你可以利用 NGC 实现自动化部署训练环境,并能与工作环境、云上开发环境保持一致,复现别人论文结果时能省去不少搭环境的时间,提高学习效率,加快模型迭代速度。

07

参考资料

【1】NGC 官网入口:https://ngc.nvidia.com/containers

【2】NGC TensorFlow release note:

https://docs.nvidia.com/deeplearning/dgx/tensorflow-release-notes/rel_19.03.html#rel_19.03

【3】 Nvidia GPU 驱动安装步骤参考:

https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html

【4】 nvidia-docker 官方代码库:https://github.com/NVIDIA/nvidia-docker




884f5ea1d9664ef53d249ae9e314f8c5.png

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值