docker简单操作,以及运行gpu
来源:互联网 发布:淘宝皇冠账号多少钱 编辑:程序博客网 时间:2024/06/07 21:56
最近正在做关于gpu的运行相关的工作。所以本篇文章所写的都是本人经过真实操作的,并非网络版本的copy,这个也是增加积累以及分享。
先说下我最近的目的,希望训练模型可以运行在cpu以及gpu上,由于gpu运行速度较快,所以在机器学习中,计算资源的考虑必不可少,其实我的最终目标是使用kubernetes集群来管理运行基于tensorflow的模型训练任务。由于目前k8s运行gpu还没有实际跑通,所以最近一直比较苦恼,若是有大神能指导下,感谢之至。
好的,下面来说如何在docker中运行gpu。
先简单介绍下docker的基本使用。下面我就完全以我的操作来说明。
首先下载需要的image,我是需要下载Google tensorflow的cpu版本,当然docker hub上基本都有常用的image,所以如果机器直接可访问外网,那么直接
docker pull tensorflow:tensorflow
如果无法访问外网,那么你需要通过其他方式下载,完了save镜像成为一个tar包,然后copy到你的环境中,进行load即可。下载image后,为了整个集群的各个node节点都可用,可以push到私有仓库即可。具体如下:
docker tag tensorflow:tensorflow 27.10.0.101:5000/tensorflow:v1
docker push 27.10.0.101:5000/tensorflow:v1
如上,就已经push到私有仓库了。如何创建私有仓库此处不做说明,因为网上资料已经很好了。
我们也可以自己制作image,比如说我是制作基于cpu 版本的tensorflow的mnist手写字体的image,具体如下:
vim Dockerfile
FROM 27.10.0.101:5000/tensorflow:v1
MAINTAINER ANDYTAO
COPY MNIST_data /MNIST_data
COPY mnist.py /
如上Dockerfile已经创建好,执行 docker build -t mnist:v1 -f Dockerfile .
如此,我创建的mnist运行image已经完成。接下来介绍如何运行?
docker run -it mnist:v1 /bin/bash
启动容器,进入容器后 cd /
python mnist.py
到此,docker简单的运行介绍完毕。
GPU运行:
要运行gpu,那么毫无疑问是需要gpu的运行环境的。安装NVIDIA driver以及cuda,以及cudnn。注意在安装这些时,需要根据os版本,内核版本等来选择适合的版本安装。以下的介绍都是基于tensorflow官网的提示进行的,本人也是在摸索中前进的。
1、下载对应的gpu image。docker pull gcr.io/tensorflow/tensorflow:0.110-gpu 可参考tensorflow官网
2、根据宿主机配置选择合适版本nvidia-docker。具体参考:http://www.nvidia.cn/object/docker-container-cn.html
3、安装nvidia-docker
4、启动nvidia-docker服务。systemctl start nvidia-docker.service
5、同样,如上所示,制作Dockerfile,切记将FROM基础镜像换成gpu版本的image。
6、运行python mnist.py
7、回到宿主机,执行watch -n 1 nvidia-smi 可以看到gpu的利用率,内存都发生了变化,那么证明运行成功。
至此,docker中运行gpu的示例demo已经完毕,但是我目前遇到的问题如何在k8s里边运行gpu。因为k8s封装了docker,直接起的容器方式就是通过docker,但是我目前跑通gpu的实例如上,需要借助nvidia-docker而不是docker,所以我不知道这两种方式如何进行统一或者一致,否则k8s如何进行底层切换?cpu时使用docker创建container,而gpu时使用nvidia-docker?所以各位明白我文章开头说的问题了吧。
我看到网上也有说使用docker run -v 以及--device运行gpu的方式,我也试过,但是每当代码执行的时候,老是报错,can't open libcuda.so,以及什么文件找不到的问题,并且代码执行之后,从宿主机看,gpu使用率以及内存都不发生任何变化,也没有检测到pid,所以我目前还不知道如何通过k8s来真正执行gpu,目前还在学习中,一旦问题解决,后期还会分享。
- docker简单操作,以及运行gpu
- docker简单操作
- docker简单操作
- docker【7】docker运行简单的应用程序(tomcat)以及怎么把宿主机的文件copy到容器
- docker学习笔记------简单操作docker容器
- 用Docker来运行最新版的MySQL 以及 Docker 加速
- 内存、时间复杂度、CPU/GPU以及运行时间
- FSL配置GPU环境运行bedpostx以及probtrackx
- 2-docker简单使用(运行nginx容器)
- 写一个简单docker运行命令
- Ubuntu下安装docker以及简单介绍docker
- Docker 的介绍 ,安装以及简单应用
- 安装docker以及一些简单的使用
- docker的入门以及docker常见操作命令
- CentOS7 Docker安装操作以及基本命令
- CentOS7 Docker安装操作以及基本命令
- docker学习笔记-----docker镜像简单操作
- docker入门——简单操作
- Windows常用软件记录
- Mysql数据备份方法
- 【录教程必备】推荐几款屏幕录制工具(可录制GIF)
- Java中的main()方法详解
- new创建 一维数组、二维数组、三维数组、四维数组...
- docker简单操作,以及运行gpu
- 240 Search a 2D Matrix II
- JS 中对象和DOM
- Retrofit的使用
- intptr_t 其实不是指针类型 .
- 003
- PHP 中 9 大缓存技术总结
- 图像拼接
- Hibernate一对多及多对一关联映射(三)