伤透了心的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)的最小正整数解. 格式 输入格式 输入只有一 ...
随机推荐
- kubernetes之kubelet运行机制分析
kubernetes集群中,每个Node节点工作节点上都会启动一个kubelet服务进程.用于处理master节点下发到本节点的任务,管理pod和pod中的容器.每个kubelet进程都会在API S ...
- 【记录】【MySQL】拼接字符串函数 CONCAT(str1,str2)
CONCAT(str1,str2) 就是把str1和str2拼接
- Ubuntu16.04环境下的硬盘挂载
需求:在Ubuntu16.04系统下,挂载一个新的硬盘 第一步:查看目前已经存在的分区的状态 命令:df -l 如上图所示,并未看到要挂载的硬盘(sda)的状态. 第二步:查看计算机硬盘的状态(包括格 ...
- PHP中YUM的理解
1. YUM是什么? 1)全称:Yellow dog Updater ,Modified. 2)百度简述:是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器.基于RPM包 ...
- 2019-7-01 python基础数据类型
一.python的注释 python的注释分类: 单行注释: # 单行注释 多行注释:(可以是三个单也可以是三个双) ''' 单三引号多行注释 ''' """ 双 ...
- C++错题记录
D. 通俗讲 , 前置++ : 先自增,再赋值 后置++: 先赋值,再自增 从反汇编中,可以看出: 前置++效率比后置++高 前置++: 自增后返回引用 后置++: 拷贝一份临时变量,再自增 ...
- Go语言【数据结构】数组
数组 简介 数组是具有相同唯一类型的一组已编号且长度固定的数据项序列,这种类型可以是任意的原始类型例如整形.字符串或者自定义类型.数组形式 numbers[0], numbers[1] ..., nu ...
- 七牛云图床存储+Alfread工作流+使用QSHELL
layout: post title: 七牛云图床存储+Alfread工作流+使用QSHELL 来源:http://www.cnblogs.com/cmi-sh-love/p/8901620.html ...
- Spring Security 解析(二) —— 认证过程
Spring Security 解析(二) -- 认证过程 在学习Spring Cloud 时,遇到了授权服务oauth 相关内容时,总是一知半解,因此决定先把Spring Security .S ...
- 回归写博客时间-----CeliaTodd
2019-10-17-19:28:01 记录自己的学习路程 国庆期间本来是有持续写博客的,但是有各种原因就没时间写博客了, 但是学习的进度还是没有落下的,现在正式回归写博客的时间了. 但现在不是写Py ...