Linux安装Pytorch1.8GPU(CUDA11.1)的实现
作者:太阳花的小绿豆 发布时间:2021-12-20 10:02:00
先说下自己之前的环境(都是Linux系统,差别不大):
Centos7.6
NVIDIA Driver Version 440.33.01(等会需要更新驱动)
CUDA10.1
Pytorch1.6/1.7
提示,如果想要保留之前的PyTorch1.6或1.7的环境,请不要卸载CUDA环境,可以通过Anaconda管理不同的环境,互不影响。但是需要注意你的NVIDIA驱动版本是否匹配。
在这里能够看到官方给的对应CUDA版本所需使用驱动版本。
通过上表可以发现,如果要使用CUDA11.1,那么需要将显卡的驱动更新至455.23或以上(Linux x86_64环境)。由于我之前的驱动版本是440.33.01,那么肯定不满足,所以需要更新下显卡的驱动。通过以下指令可以查看你电脑上的驱动版本:
nvidia-smi
如果你的驱动版本是满足的,那么可以直接跳到创建Pytorch1.8虚拟环境章节。
更新驱动
卸载旧驱动
我之前安装的是NVIDIA-440的版本,找到之前下载的安装程序,然后打开终端通过以下指令进行卸载:
sh ./NVIDIA-Linux-x86_64-440.33.01.run --uninstall
安装新驱动
1)下载驱动,直接去NVIDIA官网下载:https://www.nvidia.cn/Download/index.aspx?lang=cn
根据你的GPU型号以及操作信息选择对应的驱动,注意CUDA Toolkit11版的当前可选的只有11.0和11.2,而我们要装的是11.1所以选择11.2即可。
2)关闭Xserver服务 (如果没有安装桌面系统可以跳过)
我的桌面系统是gdm(GNOME Display Manager)类型的,通过systemctl
可以看到:
systemctl status gdm.service
显示结果:
● gdm.service - GNOME Display Manager
Loaded: loaded (/usr/lib/systemd/system/gdm.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2021-01-22 09:27:06 CST; 1 months 22 days ago
Process: 32347 ExecStartPost=/bin/bash -c TERM=linux /usr/bin/clear > /dev/tty1 (code=exited, status=0/SUCCESS)
Main PID: 32344 (gdm)
Tasks: 22
CGroup: /system.slice/gdm.service
├─32344 /usr/sbin/gdm
└─32357 /usr/bin/X :0 -background none -noreset -audit 4 -verbose -auth /run/gdm/auth-for-gdm-mBzawN/databa...Jan 22 09:27:06 localhost.localdomain systemd[1]: Starting GNOME Display Manager...
Jan 22 09:27:06 localhost.localdomain systemd[1]: Started GNOME Display Manager.
关闭gdm服务:
systemctl stop gdm.service
注意,如果还开启了类似VNC远程桌面的服务也要记得关闭。
3)安装新版本驱动
sh ./NVIDIA-Linux-x86_64-460.32.03.run
4)检查nvidia服务
通过以下指令能够看到当前主机上的nvidia驱动版本以及所有可用GPU设备信息。
nvidia-smi
5)再次开启桌面服务、VNC等
如果不是gdm或者不使用桌面环境可以跳过此步骤
systemctl start gdm.service
创建PyTorch1.8虚拟环境
为了不同版本之间的环境互相隔离,强烈建议使用Anaconda的虚拟环境。其实使用起来也非常简单:
创建虚拟环境,这里我创建了一个名为torch18的虚拟环境,并且创建python3.8的编译环境。
conda create -n torch18 python=3.8
安装完成后,激活虚拟环境
conda activate torch18
接着安装点常用的包,这里直接通过requirements.txt
批量安装(不需要可以跳过)
pip install -r requirements.txt
requirements.txt
文件里可以是你常用的一些包,例如:
numpy==1.17.0
matplotlib==3.2.1
lxml==4.6.2
tqdm==4.42.1
如果需要退出虚拟环境,执行以下指令即可:
conda deactivate
安装PyTorch1.8
在线安装
进入PyTorch官网:https://pytorch.org/
我们通过选择自己的系统类型、安装方式以及CUDA的版本可以得到对应的安装指令。官方默认会顺带安装torchvision和torchaudio但我只需要torchvision所以通过以下指令安装 (注意,要进入对应的虚拟环境安装,例如上面的torch18环境):
pip install torch==1.8.0+cu111 torchvision==0.9.0+cu111 -f https://download.pytorch.org/whl/torch_stable.html
安装完成后就可以使用了,不需要在单独安装CUDA,并且不会影响之前安装的CUDA版本。
下面进行简单的测试:
首先在终端输入python
进入python环境:
pyhton
然后导入torch
包,查看cuda是否可用:
import torch
torch.cuda.is_available()
如果打印的是True
表示成功
离线安装
有些时候,可能你的设备无法连接外网,此时需要提前准备好需要安装的whl文件,那么我们这里就以torch
和torchvision
为例(注意安装torch前需要提前安装好numpy包)。刚刚我们在线安装时发现安装指令最后有个网址,https://download.pytorch.org/whl/torch_stable.html,没错就是官方存放所有的安装包,所以我们可以直接去那里下载。
我们在这里可以找到我们需要的torch-1.8.0+cu111-cp38-cp38-linux_x86_64.whl
以及torchvision-0.9.0+cu111-cp38-cp38-linux_x86_64.whl
两个文件即可。注意,cu111
代表CUDA11.1,cp38
表示python3.8的编译环境,linux_x86_64
表示x86的平台64位操作系统。下载完成后,我们将这两个文件传入你的离线主机(服务器)中。接着在保存这两个文件夹的目录下打开终端:
进入对应虚拟环境
conda activate torch18
安装torch
pip install torch-1.8.0+cu111-cp38-cp38-linux_x86_64.whl
安装torchvison
pip install torchvision-0.9.0+cu111-cp38-cp38-linux_x86_64.whl
安装完成后进行简单的测试:
首先在终端输入python
进入python环境:
pyhton
然后导入torch
包,查看cuda是否可用:
import torch
torch.cuda.is_available()
如果打印的是True
表示成功
通过docker安装
在有些情况下是需要使用docker来跑深度学习环境的(现在很多大公司都是使用paas平台来部署的)。那么我们就需要使用pytorch官方的docker镜像了。我们可以在docker hub上去搜索相关镜像,https://registry.hub.docker.com/。下图是我搜索的pytorch字段的结果(点击Tags后)。
我们可以看到当前最新的docker 镜像有pytorch/pytorch:1.8.0-cuda11.1-cudnn8-devel
和pytorch/pytorch:1.8.0-cuda11.1-cudnn8-runtime
,对于普通开发者下载pytorch/pytorch:1.8.0-cuda11.1-cudnn8-runtime
就行了。关于安装docker的过程这里不赘述。
1)我们直接通过以下指令就能pull这个镜像了
docker pull pytorch/pytorch:1.8.0-cuda11.1-cudnn8-runtime
2)注意,在启动镜像前需要确保已安装NVIDIA Container Toolkit
,否则会报错(若已安装可直接跳过此步骤):
distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
&& curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.repo | sudo tee /etc/yum.repos.d/nvidia-docker.repo
安装NVIDIA Container Toolkit
,参考官方文档:https://github.com/NVIDIA/nvidia-docker
这里以Centos7为例:
首先根据你的系统类型以及版本下载对应.repo
文件到/etc/yum.repos.d
distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
&& curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.repo | sudo tee /etc/yum.repos.d/nvidia-docker.repo
清空yum的过期缓存数据(如果不是root用户需要加sudo)
yum clean expire-cache
安装NVIDIA Container Toolkit
(如果不是root用户需要加sudo)
yum install -y nvidia-docker2
重启docker服务(如果不是root用户需要加sudo)
systemctl restart docker
3)通过docker启动pytorch1.8.0容器
docker run --gpus all --rm -it --ipc=host pytorch/pytorch:1.8.0-cuda11.1-cudnn8-runtime
4)进入容器后可以通过nvidia-smi
看到所有的GPU设备信息
5)接着进入python环境简单测试下pytorch能否正常调用GPU(打印True为成功)
import torch
torch.cuda.is_available()
来源:https://blog.csdn.net/qq_37541097/article/details/114896215
猜你喜欢
- 一、requests库requests是使用Apache2 licensed 许可证的HTTP库。比urllib模块更简洁。Request支
- 基于微信可以做很多有意思的练手项目,看了这张速查表你就会发现,可以做的事情超过你的想象。有一次我想要统计微信群里哪些同学在北京,但发现直接问
- 网站,(100-1)%的内容是导航1、Jesse James Garrett 在《用户体验要素》一书中提到了多重导航系统:全局导航、局部导航
- 一、常见模型分类1.1、循环服务器模型循环接收客户端请求,处理请求。同一时刻只能处理一个请求,处理完毕后再处理下一个。优点:实现简单,占用资
- #!c:\python27\python.exe# -*- coding: utf-8 -*-import osimport refrom
- Windows Server 2003系统是现在很流行的服务器操作系统,许多网站都用它来做。但是如何保证服务器的相对安全,这个只要进行一些简
- 所谓产品其实最终展现在用户面前的只是界面而已,所谓界面绝大多数时候只包括两个部分:图片、文字。重视界面上的每一个像素和每一个文字是UED的基
- 加密解密字符串的asp函数,如用于ASP链接地址栏参数的加密,看代码就明白。比如:show.asp?id=DB26538FA54C70E1E
- 本文实例讲述了python实现指定字符串补全空格的方法。分享给大家供大家参考。具体分析如下:如果希望字符串的长度固定,给定的字符串又不够长度
- bbssend.asp'寻呼台页面,向在线网友发送寻呼信息<%@ Language=VBScript %&
- 1、主题如何使用Pycahrm内置终端以及远程SSH工具。2、准备工作Pycharm版本为3.0或更高连接SSH服务器3、使用SSH客户端4
- 对网站的LOGO设计做了一些归纳,希望得到批评,发现写的太长了,又不忍心删减,就分成两部分了,第一部分是有关设计基础的。第二部分是关于网站L
- 在django操作数据库的时候如何找出内容不为空的数据呢?from django.db.models import Qclass Index
- 本文做的是基于opencv将视频帧转成图片输出,由于一个视频包含的帧数过多,经常我们并不是需要它的全部帧转成图片,因此我们希望可以设置每隔多
- 你可以通过自定义函数接口 (UDF)来添加函数。自定义函数被编译为目标文件,然后用CREATE FUNCTION 和DROP FUNCTIO
- 为了测试某个服务的稳定性,通常需要在服务长时间运行的情况下,监控其资源消耗情况,比如cpu和内存使用这里借助python的psutil这个包
- 文本框 textarea 限制输入文字个数的的javascript代码,我们经常在评论留言页面我们需要在客户端限制访客的留言长度,当然最好我
- Chrome 浏览器的书签如果可以导出,并转换为我们需要的格式时,我们就可以编写各种插件来配合书签的使用。答案显然是可以的,接下来我们以 P
- 前言:我们想要在爬虫中使用xpath、beautifulsoup、正则表达式,css选择器等来提取想要的数据,但是因为scrapy是一个比较
- 每年意甲德甲英超西甲各大联赛的赛程表都是球迷们的必看之物,想起之前写过的一段生成赛程表的代码,用Python来写这类东西太舒服了。这个算法叫