基于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 ...
随机推荐
- JobStorage.Current property value has not been initialized. You must set it before using Hangfire Client or Server API.
JobStorage.Current property value has not been initialized. You must set it before using Hangfire Cl ...
- 负载均衡Nginx和F5的区别
今早上看书,看到为了保证Zuul的高可用性,在Zuul的前端可以使用Nginx或F5再次进行负载转发 使用过Nginx,那F5是什么,他们有什么区别吗? (1)F5 F5负载均衡器是应用交付网络的全球 ...
- php 按照字典序排序 微信卡券签名算法用到
代码 <?php $data=array("api_ticket"=>"IpK_1T69hDhZkLQTlwsAXzJqxGE_7RuU_tjnx8rWC9f ...
- Vue框架——页面组件中使用小组件
小组件在components文件夹中,页面组件在views文件夹中 一.先写小组件的vue,比如text.vue(在template设置模板渲染,style设置样式) <template> ...
- C/C++語言 - 日常算法 - 蛇形填數
C/C++語言 - 日常算法 - 蛇形填數 日期 : 2019-06-11 問題描述: 在n×n方阵里填入1,2,…,n×n,要求填成蛇形. 例如,n=4时方阵为: 10 11 12 1 9 ...
- Mysql的常见索引
PRIMARY KEY(主键索引) ALTER TABLE table_name ADD PRIMARY KEY ( col ) 它是一种特殊的唯一索引,不允许有空值: UNIQUE(唯一索引) AL ...
- ssm动态sql语句
1.将上面的元素分为四组来演示,分别为:[if,where,trim],[if,set,trim],[choose,when,otherwise],[foreach] ________________ ...
- The underlying connection was closed: An unexpected error occurred on a rece
服务器问题,在后台访问外网了,特别是https的网站,容易出这个问题. 修改服务器配置,或修改代码解决.
- ElementUI table中el-table-column怎么设置百分比显示。
看文档找到一种方法,是把 width 换成 min-width ,就支持百分比显示啦 !
- JDBC简单增删改查实现(单表)
0.准备工作 开发工具: MySQL数据库, intelliJ IDEA2017. 准备jar包: mysql-connector-java-5.1.28-bin.jar(其他均可) 1. 数据库数据 ...