伤透了心的pytorch的cuda容器版
公司GPU的机器版本本比较低,找了好多不同的镜像都不行,
自己从anaconda开始制作也没有搞定(因为公司机器不可以直接上网),
哎,官网只有使用最新的NVIDIA驱动,安装起来才顺利。
最后,找到一个暂时可用的镜像:
https://linux.ctolib.com/anibali-docker-pytorch.html
其间遇到两个问题:
1, 安装全没出错,但torch.cuda.is_available()为False,这表示torch还是不能使用GPU。
2,在跑例程时,显示RuntimeError: CUDA error: out of memory,这表示运行的时候使用CUDA_VISIBLE_DEVICES限制一下使用的GPU。
PyTorch Docker image
Ubuntu + PyTorch + CUDA (optional)
Requirements
In order to use this image you must have Docker Engine installed. Instructions for setting up Docker Engine are available on the Docker website.
CUDA requirements
If you have a CUDA-compatible NVIDIA graphics card, you can use a CUDA-enabled version of the PyTorch image to enable hardware acceleration. I have only tested this in Ubuntu Linux.
Firstly, ensure that you install the appropriate NVIDIA drivers and libraries. If you are running Ubuntu, you can install proprietary NVIDIA drivers from the PPA and CUDA from the NVIDIA website.
You will also need to install nvidia-docker2
to enable GPU device access within Docker containers. This can be found at NVIDIA/nvidia-docker.
Prebuilt images
Pre-built images are available on Docker Hub under the name anibali/pytorch. For example, you can pull the CUDA 10.0 version with:
$ docker pull anibali/pytorch:cuda-10.0
The table below lists software versions for each of the currently supported Docker image tags available for anibali/pytorch
.
Image tag | CUDA | PyTorch |
---|---|---|
no-cuda |
None | 1.0.0 |
cuda-10.0 |
10.0 | 1.0.0 |
cuda-9.0 |
9.0 | 1.0.0 |
cuda-8.0 |
8.0 | 1.0.0 |
The following images are also available, but are deprecated.
Image tag | CUDA | PyTorch |
---|---|---|
cuda-9.2 |
9.2 | 0.4.1 |
cuda-9.1 |
9.1 | 0.4.0 |
cuda-7.5 |
7.5 | 0.3.0 |
Usage
Running PyTorch scripts
It is possible to run PyTorch programs inside a container using the python3
command. For example, if you are within a directory containing some PyTorch project with entrypoint main.py
, you could run it with the following command:
docker run --rm -it --init \ --runtime=nvidia \ --ipc=host \ --user="$(id -u):$(id -g)" \ --volume="$PWD:/app" \ -e NVIDIA_VISIBLE_DEVICES=0 \ anibali/pytorch python3 main.py
Here's a description of the Docker command-line options shown above:
--runtime=nvidia
: Required if using CUDA, optional otherwise. Passes the graphics card from the host to the container.--ipc=host
: Required if using multiprocessing, as explained at https://github.com/pytorch/pytorch#docker-image.--user="$(id -u):$(id -g)"
: Sets the user inside the container to match your user and group ID. Optional, but is useful for writing files with correct ownership.--volume="$PWD:/app"
: Mounts the current working directory into the container. The default working directory inside the container is/app
. Optional.-e NVIDIA_VISIBLE_DEVICES=0
: Sets an environment variable to restrict which graphics cards are seen by programs running inside the container. Set toall
to enable all cards. Optional, defaults to all.
You may wish to consider using Docker Compose to make running containers with many options easier. At the time of writing, only version 2.3 of Docker Compose configuration files supports the runtime
option.
Running graphical applications
If you are running on a Linux host, you can get code running inside the Docker container to display graphics using the host X server (this allows you to use OpenCV's imshow, for example). Here we describe a quick-and-dirty (but INSECURE) way of doing this. For a more comprehensive guide on GUIs and Docker check out http://wiki.ros.org/docker/Tutorials/GUI.
On the host run:
sudo xhost +local:root
You can revoke these access permissions later with sudo xhost -local:root
. Now when you run a container make sure you add the options -e "DISPLAY"
and --volume="/tmp/.X11-unix:/tmp/.X11-unix:rw"
. This will provide the container with your X11 socket for communication and your display ID. Here's an example:
docker run --rm -it --init \ --runtime=nvidia \ -e "DISPLAY" --volume="/tmp/.X11-unix:/tmp/.X11-unix:rw" \ anibali/pytorch python3 -c "import tkinter; tkinter.Tk().mainloop()"
十倍的时间差距:
伤透了心的pytorch的cuda容器版的更多相关文章
- 安装graphlab伤透了心,终于搞定了
为了方便研究各种机器学习算法,我想用graphlab来辅助我对后续算法的研究.所以我的目标就是安装graphlab到我的windows笔记本中.而基于python的graphlab的安装最好是采用如下 ...
- pytorch查看CUDA支持情况,只需要三行代码,另附Cuda runtime error (48) : no kernel image is available for execution处理办法
import torch import torchvision print(torch.cuda.is_available()) 上面的命令只是检测CUDA是否安装正确并能被Pytorch检测到,并没 ...
- ubuntu 18.04安装pytorch、cuda、cudnn等
版权声明:本文为博主原创文章,欢迎转载,并请注明出处.联系方式:460356155@qq.com ubuntu 16.04用了1年多了,18.04版已经发布也半年了,与时俱进,重装Linux系统,这里 ...
- pytorch中CUDA类型的转换
import torch import numpy as np device = torch.device("cuda:0" if torch.cuda.is_available( ...
- pytorch 中序列化容器nn.Sequential
按下图顺序搭建以及执行
- '"千"第一周学习情况记录
一周过去了,今天将我这一周的学习内容和主要感想记录与此和大家共同分享,一起进步.我将自己的学习计划命名为"千",因为我喜欢这个字,希望能用此来鼓舞自己不断前进.时间总是很快的,这一 ...
- 可视化工具solo show-----Prefuse自带例子GraphView讲解
2014.10.15日以来的一个月,挤破了头.跑断了腿.伤透了心.吃够了全国最大餐饮连锁店——沙县小吃.其中酸甜苦辣,绝不是三言两语能够说得清道的明的.校招的兄弟姐妹们,你们懂得…… 体会最深的一句话 ...
- 一文读懂UGC:互联网上的生态秘密
转载自近乎: UGC(User- Generated Content)用户原创生产内容,它是相对于PGC(Professionally-produced Content)专业生产内容的一种内容来源,简 ...
- 【未完成0.0】Noip2012提高组day2 解题报告
第一次写一套题的解题报告,感觉会比较长.(更新中Loading....):) 题目: 第一题:同余方程 描述 求关于x的同余方程ax ≡ 1 (mod b)的最小正整数解. 格式 输入格式 输入只有一 ...
随机推荐
- svn"重新定位"提示版本库uuid不匹配
svn"重新定位"提示版本库 uuid不匹配: 版本库 "https://wolfcome110/svn/andon" 的 uuid是 "d52648 ...
- 记一次偶发的bug排查——redis-py-cluster库的bug
排查流水账: 通过平台监控,发现很多偶发的查看推荐列表的接口时延大于0.5s 写单元测试,不能重现.在测试环境不能重现.只有在正式环境可以偶发重现. 通过日志埋点,等待重现 不断地加日志埋点后发现耗 ...
- initramfs文件系统制作
源码下载:https://busybox.net/downloads/ 源码版本:busybox-1.30.0.tar.bz2 [ 源码编译步骤 ] make menuconfig ARCH= COM ...
- 如何利用Docker构建基于DevOps的全自动CI
来自用户的DevOps实践分享,分享从开发代码到生产环境部署的一条龙操作的实践及经验, 包含工具技术的选型及考量.私有代码库与私有镜像库的应用等. (一)容器服务的Rancher选型 1.为什么说是下 ...
- python入门之格式化输出
目录 扩展: 保留几位小数 一.占位符格式化输出 1.1 %s 1.2 %d 二..format()方式 三.f-string 扩展: 保留几位小数 保留两位小数 a = 12345.2487 pri ...
- 解决angular+element原有组件样式不能覆盖element自带样式问题
在对应的组件中写入 ::ng-deep + 想要改变的element组件样式名即可
- SQL Server 数据库启动过程(用户数据库加载过程的疑难杂症)
前言 本篇主要是上一篇文章的补充篇,上一篇我们介绍了SQL Server服务启动过程所遇到的一些问题和解决方法,可点击查看,我们此篇主要介绍的是SQL Server启动过程中关于用户数据库加载的流程, ...
- python_协程
协程 问题一: 生成器与函数的区别?生成器分阶段的返回多个值,相当于有多个出口(结果): yield ''' yield # 中断.返回函数值 1.只能在函数中使用 2.会暂停函数执行并且返回表达式结 ...
- The four Day 给出一个平衡字符串,将它分割成尽可能多的平衡字符串
""" 在一个「平衡字符串」中,'L' 和 'R' 字符的数量是相同的. 给出一个平衡字符串 s,请你将它分割成尽可能多的平衡字符串. 返回可以通过分割得到的平衡字符串的 ...
- Drools7 Hello Wrold 入门详细步骤--系列01课
一.什么叫规则引擎?规则--->写在文档上引擎--->在java代码上,引用这个文档上的规则 二.drools规则引擎有什么用?简单来说就是将多变的规则,从业务代码中剥离出来(当规则变了之 ...