基于Docker容器使用NVIDIA-GPU训练神经网络
一,nvidia K80驱动安装
1, 查看服务器上的Nvidia(英伟达)显卡信息,命令lspci |grep NVIDIA
05:00.0 3D controller: NVIDIA Corporation GK210GL [Tesla K80] (rev a1)
06:00.0 3D controller: NVIDIA Corporation GK210GL [Tesla K80] (rev a1)
84:00.0 3D controller: NVIDIA Corporation GK210GL [Tesla K80] (rev a1)
85:00.0 3D controller: NVIDIA Corporation GK210GL [Tesla K80] (rev a1)
2,按下来,进行显卡驱动程序的安装,这一步由主机组同事操作,当前查看到版本为:Driver Version: 396.37,运行nvidia-smi可获得此信息。
NVIDIA-SMI 396.37 Driver Version: 396.37
下次安装时,建议安装比较新的驱动版本(410及以上),因为这个驱动版本,会影响接后面的很多细节。
驱动网址:https://www.nvidia.com/Download/index.aspx?lang=en-us。

二,NVIDIA CUDA Toolkit 安装
1,根据前一节的驱动,先把合适的CUDA Toolkit版本进行下载安装。
下载网址:https://developer.nvidia.com/cuda-toolkit-archive
驱动程序和CUDA的对应关系如下图:

下次安装时,建议安装10.0及以上版本,因为主流学习框架对这些版本有更好的支持和性能。
2,使用cuda中的deviceQuery可以获得其安装信息:

三,安装cuDNN
1, cuDNN是GPU加速计算深层神经网络的库,网址:
https://developer.nvidia.com/rdp/cudnn-archive

2, 选择与cuda对应的版本,下载解压到cuda对应目录即可。
sudo cp cuda/include/cudnn.h /usr/local/cuda/include/ sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64/ sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*
***如果只是在宿主机上使用NVIDIA的GPU,那么,经过上面的步骤之后,就可以安装一些学习框架进行操作了。但如果想更灵活干净的让应用在容器内运行,则还需要进行接下来的操作准备。***
四,nvidia-docker2安装
1,Nvidia关于docker项目的支持,github网址:https://github.com/NVIDIA/nvidia-docker。它使用一个nvidia-docker2应用来延伸docker的内置功能。架构如下:

2,nvidia-docker2要求的docker安装版本比较新,安装的版本为ce-18.09.6-3。Nvidia-docker2安装的版本为2.0.3-3。(这几个rpm包我都收下载好,可随时共享)
安装命令(需要解决rpm包依赖,未列明):
Sudo -.el7.x86_64.rpm Sudo -.docker18.09.6.ce.noarch.rpm
3,在安装完成之后,有两个配置文件需要更改或新建:
a,/etc/systemd/system/docker.service.d/docker.conf
[Service] ExecStart= ExecStart=/usr/bin/dockerd --graph=/docker_data --storage-driver=overlay --insecure-registry harbor.xxxx.com.cn
graph参数指定docker镜像的存放目录,需要一个较大的硬盘空间。
b,/etc/docker/daemon.json
{
"default-runtime": "nvidia",
"runtimes": {
"nvidia": {
"path": "nvidia-container-runtime",
"runtimeArgs": []
}
}
}
此文件为nvidia-docker2应用所需,用于替换docker的默认runc。
用两个文件来自定义docker配置,即可以替换runc,又可以提定内部仓库,合理~
4,当这些更改应用之后,再启动docker服务,使用docker info会看到相应的更改已生效。
... Server Version: 18.09.6 Storage Driver: overlay Backing Filesystem: xfs Supports d_type: true Logging Driver: json-file Cgroup Driver: cgroupfs Runtimes: nvidia runc Default Runtime: nvidia Docker Root Dir: /data05 Insecure Registries: harbor.xxxx.com.cn 127.0.0.0/8 ...
五,Docker镜像测试:
1,此次测试的镜像如下:
---anibali/pytorch:cuda-9.2
---tensorflow/tensorflow:1.12.0-gpu-py3
2,在服务器新装之后,如果有特别个性化的需求,可以考虑以anaconda镜像为基础进行自定义制作。
3,在以上两个镜像中,GPU加速的效果,都可以达到CPU的10倍左右。


六,使用K8S管理docker容器的部署
未完待续
基于Docker容器使用NVIDIA-GPU训练神经网络的更多相关文章
- NVIDIA GPU的神经网络自动调度
NVIDIA GPU的神经网络自动调度 针对特定设备和工作负载的自动调整对于获得最佳性能至关重要.这是一个关于如何使用自动调度器为NVIDIA GPU调整整个神经网络的资料. 为了自动调整一个神经网络 ...
- 庐山真面目之十微服务架构 Net Core 基于 Docker 容器部署 Nginx 集群
庐山真面目之十微服务架构 Net Core 基于 Docker 容器部署 Nginx 集群 一.简介 前面的两篇文章,我们已经介绍了Net Core项目基于Docker容器部署在Linux服 ...
- Docker笔记一:基于Docker容器构建并运行 nginx + php + mysql ( mariadb ) 服务环境
首先为什么要自己编写Dockerfile来构建 nginx.php.mariadb这三个镜像呢?一是希望更深入了解Dockerfile的使用,也就能初步了解docker镜像是如何被构建的:二是希望将来 ...
- 基于docker容器搭建fastdfs分布式文件系统
本次环境的搭建参考了 https://blog.csdn.net/qq_43455410/article/details/84797814, 感谢博主. 主要流程如下: 1. 下载fastdfs镜像 ...
- 基于 docker容器搭建机器学习环境
下载docker镜像 docker pull ubuntu:18.04 进入ubuntu系统命令 docker run -ti ubuntu /bin/bash 正确退出系统方式 先按,ctrl+p ...
- OpenLDAP 多主复制(基于docker容器模式部署)
**本文主要讲述在docker环境下如何进行 OpenLDAP 多主复制,至于 OpenLDAP 原理可以先参考这篇文章了解:https://cloud.tencent.com/developer/a ...
- 使用Colaboratory的免费GPU训练神经网络
1 Colaboratory 介绍 Colaboratory 是一个 Google 研究项目,旨在帮助传播机器学习培训和研究成果.它是一个 Jupyter 笔记本环境,不需要进行任何设置就可以使用,并 ...
- 容器云平台No.1~基于Docker及Kubernetes构建的容器云平台
开篇 最近整理笔记,不知不觉发现关于kubernetes相关的笔记已经达99篇了,索性一起总结了.算是对这两年做容器云平台的一个总结,本文是开篇,先介绍下所有用到的组件.首先来看下架构图(实在画的太丑 ...
- docker容器资源限制:限制容器对内存/CPU的访问
目录 一.系统环境 二.前言 三.docker对于CPU和内存的限制 3.1 限制容器对内存的访问 3.2 限制容器对CPU的访问 一.系统环境 服务器版本 docker软件版本 CPU架构 Cent ...
随机推荐
- Javascript / Nodejs call 和 apply
call: 改变了函数运行的作用域,即改变函数里面this的指向apply:同call,apply第二个参数是数组结构 例如: this.name = 'Ab'var obj = {name: 'BB ...
- QT源码分析:QObject
QT框架里面最大的特色就是在C++的基础上增加了元对象系统(Meta-Object System),而元对象系统里面最重要的内容就是信号与槽机制,这个机制是在C++语法的基础上实现的,使用了函数.函数 ...
- 今天七夕节,外面下着大雨,用Python的tkinter做一个下爱心雨的特效,发给妹子
今天七夕,还下着雨,刚好想做一个下着爱心雨的特效 准备图片素材 1.美图秀秀找一个爱心图,大小就50*50就可以,生成的是一个png格式文件 2.由于canvas.create_image只支持gif ...
- springboot2.0以后的junit
只需要引入: <dependency> <groupId>junit</groupId> <artifactId>junit</artifactI ...
- [转帖]NSO到底是个什么样的公司?揭秘三叉戟0day的缔造者
NSO到底是个什么样的公司?揭秘三叉戟0day的缔造者 dawner2016-09-07共248912人围观 ,发现 3 个不明物体其他安全报告 https://www.freebuf.com/art ...
- mysql 启动 && 停止
启动:service mysql start关闭:service mysql stop查进程:ps aux | grep mysql杀进程:kill -9 mysqlID Good Good Stud ...
- cloudera cdh6.3 离线安装 经典大数据平台视频教程(含网盘下载地址)
cdh6.3企业级大数据视频教程 链接:https://pan.baidu.com/s/1bLGrIwzpFQB-pQRb6KOmNg 提取码:i8h8 系统和软件版本1,操作系统:Centos7.6 ...
- yii2 AppAsset.php 和 assetManager 组件
01) 背景:Yii2中使用了 AdminLTE 3.0.0 后框架自带的bootstrap.css 与 admin样式有冲突,需要去掉 bootstrap.css 在 backend/config ...
- 代理服务器支持https(转)
原标题:让代理服务器支持HTTPS很难吗? http://www.site-digger.com/html/articles/20151203/107.html
- Java ClassLoader 学习理解
/** * <html> * <body> * <P> Copyright 1994 JsonInternational</p> * <p> ...