专业的编程技术博客社区

网站首页 > 博客文章 正文

GPU服务器安装cuda,anaconda,pytorch,然后测试矩阵乘法

baijin 2024-09-01 12:59:36 博客文章 7 ℃ 0 评论

1. 准备一台GPU服务器

OS: ubuntu 20.04

实例规格:4vCPU 16GiB

主机名:test-t4

远程登录刚建好的ecs,运行nvidia-smi查看GPU信息,发现有一张telsa T4卡,驱动版本为470.57.02,CUDA库版本为11.4(此信息不准,公共镜像没有预装cuda库)。

2. 下载Anaconda

访问Anaconda官网,查找最新版linux安装包链接

命令行中运行以下命令下载最新版Anaconda3-2022.05

wget -P /gpu https://repo.anaconda.com/archive/Anaconda3-2022.05-Linux-x86_64.sh

2.1 验证包的完整性

验证下载完成的安装包完整性

先去官方文档找到安装包的hash值为a7c0afe862f6ea19a596801fc138bde0463abcbce1b753e8d5c474b506a2db2d

接下来用sha256sum命令计算已下载文件的哈希值,与官方值进行比对,发现完全一致,表示安装包已完整下载。

root@test-t4:/gpu# sha256sum Anaconda3-2022.05-Linux-x86_64.sh 
a7c0afe862f6ea19a596801fc138bde0463abcbce1b753e8d5c474b506a2db2d  Anaconda3-2022.05-Linux-x86_64.sh

运行脚本启动安装进程,一路ENTER,或yes,1分钟左右即可完成安装。

bash /gpu/Anaconda3-2020.02-Linux-x86_64.sh
Welcome to Anaconda3 2020.02

In order to continue the installation process, please review the license
agreement.
Please, press ENTER to continue
>>> 

完成安装后,重新启动命令行,重新加载环境变量。输入conda命令,确认为可用状态。

3.安装pytorch

3.1创建conda虚拟环境

为pytorch创建一个独立的conda环境,环境名pytorchtest,python解析器版本3.9

conda create -n pytorchtest python=3.9

创建成功,输出如下

(base) root@test-t4:~# conda create -n pytorchtest python=3.9
Collecting package metadata (current_repodata.json): done
Solving environment: done


##省略若干行##

  environment location: /root/anaconda3/envs/pytorchtest

  added / updated specs:
    - python=3.9

##省略若干行##

The following NEW packages will be INSTALLED:

  _libgcc_mutex      pkgs/main/linux-64::_libgcc_mutex-0.1-main
  _openmp_mutex      pkgs/main/linux-64::_openmp_mutex-5.1-1_gnu
  ca-certificates    pkgs/main/linux-64::ca-certificates-2022.4.26-h06a4308_0
  certifi            pkgs/main/linux-64::certifi-2022.5.18.1-py39h06a4308_0
  ld_impl_linux-64   pkgs/main/linux-64::ld_impl_linux-64-2.38-h1181459_1
  libffi             pkgs/main/linux-64::libffi-3.3-he6710b0_2
  libgcc-ng          pkgs/main/linux-64::libgcc-ng-11.2.0-h1234567_1
  libgomp            pkgs/main/linux-64::libgomp-11.2.0-h1234567_1
  libstdcxx-ng       pkgs/main/linux-64::libstdcxx-ng-11.2.0-h1234567_1
  ncurses            pkgs/main/linux-64::ncurses-6.3-h7f8727e_2
  openssl            pkgs/main/linux-64::openssl-1.1.1o-h7f8727e_0
  pip                pkgs/main/linux-64::pip-21.2.4-py39h06a4308_0
  python             pkgs/main/linux-64::python-3.9.12-h12debd9_1
  readline           pkgs/main/linux-64::readline-8.1.2-h7f8727e_1
  setuptools         pkgs/main/linux-64::setuptools-61.2.0-py39h06a4308_0
  sqlite             pkgs/main/linux-64::sqlite-3.38.3-hc218d9a_0
  tk                 pkgs/main/linux-64::tk-8.6.12-h1ccaba5_0
  tzdata             pkgs/main/noarch::tzdata-2022a-hda174b7_0
  wheel              pkgs/main/noarch::wheel-0.37.1-pyhd3eb1b0_0
  xz                 pkgs/main/linux-64::xz-5.2.5-h7f8727e_1
  zlib               pkgs/main/linux-64::zlib-1.2.12-h7f8727e_2


Proceed ([y]/n)? y


Downloading and Extracting Packages

##省略若干行##

Preparing transaction: done
Verifying transaction: done
Executing transaction: done
#
# To activate this environment, use
#
#     $ conda activate pytorchtest
#
# To deactivate an active environment, use
#
#     $ conda deactivate

进入pytorch的conda环境

conda activate pytorchtest

3.2安装pytorch

复制pytorch官方推荐安装命令

conda install pytorch torchvision torchaudio cudatoolkit=11.3 -c pytorch

进入pytorch conda环境后运行pytorch安装命令

3.3 pytorch下载0进度问题解决办法

出现一个问题,pytorch安装包无法下载,进度一直为0%

这里需要更换为清华源,方法为逐条执行以下命令。

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/menpo/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/

运行官网推荐命令时,去掉末尾的-c pytorch

conda install pytorch torchvision torchaudio cudatoolkit=11.3

顺利安装完成。

验证pytorch是否安装成功,在conda环境中进python命令行模式,输入import torch,如不报错,代表pytorch安装成功。下图代表pytorch已安装成功。

3.4 cuda和pytorch版本不适配问题解决

torch.cuda.is_available()输出为false,说明cuda无法开启。经查询,从清华源默认安装的pytorch版本比较老1.7.1,无法适配cuda版本11.3。


卸载已安装的pytorch torchvision torchaudio cudatoolkit等安装包

conda uninstall pytorch
conda uninstall cudatoolkit=11.3

重新指定版本安装

conda install pytorch=1.11.0 torchvision=0.12.0 torchaudio=0.11.0 cudatoolkit=11.3

验证pytorch版本

print(torch.__version__)根据输出发现pytorch版本已正确安装。

(pytorchtest) root@test-t4:~# python
Python 3.9.12 (main, Jun  1 2022, 11:38:51) 
[GCC 7.5.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import torch
>>> print(torch.__version__)
1.11.0
>>> torch.cuda
<module 'torch.cuda' from '/root/anaconda3/envs/pytorchtest/lib/python3.9/site-packages/torch/cuda/__init__.py'>
>>> torch.cuda.is_available()
False

torch.cuda.is_available()还是false

3.5 清华源默认推送cpu版本pytorch问题解决

conda list发现,上面的pytorch默认安装的是cpu版,需要安装cuda版

用清华源安装pytorch及相关组件时,会默认推送cpu版本,而我们需要gpu版本的安装包。从网上查询资料找到解决方法,先安装cpuonly这个包,然后卸载cpuonly,卸载过程中,会自动将原来安装的cpu版本的包替换成gpu版本。

conda install cpuonly
conda uninstall cpuonly

卸载cpuonly过程打印的部分片段,可以看出pytorch-1.11.0,torchvision-0.12.0 两个关键的包被替换成gpu(cuda)版。

(pytorchtest) root@test-t4:~/anaconda3/pkgs# conda uninstall cpuonly
Collecting package metadata (repodata.json): done
Solving environment: done

## Package Plan ##

  environment location: /root/anaconda3/envs/pytorchtest

  removed specs:
    - cpuonly


The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    ffmpeg-4.2.2               |       h20bf706_0        59.6 MB  https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
    intel-openmp-2021.4.0      |    h06a4308_3561         4.2 MB  https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
    jpeg-9b                    |                0         941 KB  https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
    libopus-1.3.1              |       h7b6447c_0         491 KB  https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
    libtiff-4.1.0              |       h2733197_1         449 KB  https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
    libuv-1.40.0               |       h7b6447c_0         736 KB  https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
    libvpx-1.7.0               |       h439df22_0         1.2 MB  https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
    libwebp-1.2.0              |       h89dd481_0         493 KB  https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
    mkl-2021.4.0               |     h06a4308_640       142.6 MB  https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
    mkl-service-2.4.0          |   py39h7f8727e_0          59 KB  https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
    mkl_fft-1.3.1              |   py39hd3c417c_0         182 KB  https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
    mkl_random-1.2.2           |   py39h51133e4_0         309 KB  https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
    numpy-1.22.3               |   py39he7a7128_0          10 KB  https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
    numpy-base-1.22.3          |   py39hf524024_0         5.4 MB  https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
    pytorch-1.11.0             |py3.9_cuda11.3_cudnn8.2.0_0        1.02 GB  https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch
    torchvision-0.12.0         |       py39_cu113         9.2 MB  https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch
    x264-1!157.20191217        |       h7b6447c_0         922 KB  https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
    zstd-1.4.9                 |       haebb681_0         480 KB  https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
    ------------------------------------------------------------
                                           Total:        1.24 GB

安装完成后,conda list发现pytorch,torchvision版本变为gpu版本,torch.cuda.is_available()结果变为True!

4. 安装jupyter notebook

4.1 安装和配置

为了提高python数学计算的便捷性,jupyter notebook是比较好的工具。

conda install nb_conda -y
#生成配置文件
jupyter notebook --generate-config
#设置密码
jupyter notebook password

#修改配置文件
vim /root/.jupyter/jupyter_notebook_config.py

修改下方参数的值。切记:参数名前面不能留空格,否则会报“unexpected indent”错误。

c.NotebookApp.ip = '*'。#不限制访问IP
c.NotebookApp.open_browser = False
c.NotebookApp.port = 8888
c.NotebookApp.allow_root =True

增加安全组规则,放开8888端口

4.2 运行jupyter notebook

本地用浏览器打开http://180.184.77.192:8888/,输入上面设置的密码,即可开始使用jupyter notebook

5 对比CPU和T4的矩阵乘法运算速度

  • 使用 torch.mm(a,b)来处理N阶二维矩阵乘法,引入计时器time.time(),统计CPU和GPU的计算耗时。
  • 目标是计算N阶随机矩阵的乘法,并对比cpu和T4的计算速度。

5.1 python代码

import torch
import time

N = 100 #定义矩阵的维度
# 生成两个N维随机矩阵,load到CPU
a = torch.randn(N,N)
b = torch.randn(N,N)
# 生成两个N维随机矩阵,load进T4
cuda = torch.device("cuda:0")

c = a.to(cuda)
d = b.to(cuda)

cpu_start= time.time()
x= torch.mm(a,b)
cpu_end= time.time()
print("cpu time cost: ",cpu_end-cpu_start,'s') 
gpu_start= time.time()
y= torch.mm(c,d)
gpu_end= time.time()
print("T4 time cost: ",gpu_end-gpu_start,'s')

其中N为方阵的阶数,设置不同的N,观测耗时结果。本次测试N取值为100,500,1000,5000,10000。

5.2 测试结果

矩阵阶数

cpu time cost(秒)

gpu time cost(秒)

100

0.0003

0.0005

500

0.0015

0.0006

1000

0.0127

0.0004

5000

1.0003

0.0005

10000

7.478

0.0007

  • 100阶矩阵的乘法运算速度,cpu和T4都是百微秒级,多次重复测试发现,CPU略快于GPU;
  • 阶数为500时,cpu的耗时增长到毫秒级,而T4仍然微秒级,cpu耗时比T4大;
  • 阶数越大,cpu耗时增长越多

随着阶数增长,耗时变化图如下所示

6 总结

  • 计算量非常小时,CPU比GPU更快,因为计算时间可能比CPU到GPU的数据拷贝时间还短。
  • 计算量越大,GPU的优势越明显。
  • pytorch,cuda和gpu驱动三者版本需要适配,pytorch才能正常调用GPU算力。
  • 清华源安装软件包时,必须指定版本,指定类型(CPU/GPU)。

以上是深度学习的基础环境部署和验证。

欢迎大家评论交流!

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表