入门级GPU服务器体验:如何从零开始搭建PyTorch的GPU开发环境 - 完整的GPU环境设置指南
如果你有一台带N卡的个人电脑的话,那么是不需要买GPU云服务器的。如果你的公司或实验室有GPU服务器这个福利或资源的话,那么玩玩GPU服务器也不错。
GPU服务器选择
目前云服务厂商基本都有售卖GPU云服务器,比如腾讯云和阿里云,以腾讯云为例,登录这个网址:https://cloud.tencent.com/product/gpu 点击【立即选购】可以进入选购页面。每种机型又对应不同的规格。基本上同机型(比如GN7)他们的显卡型号都是相同的,该机型下的不同规格(比如GN7.LARGE20、GN7.2XLARGE32)只是在CPU、内存、带宽以及显卡个数方面不同而已。下面简单列一下机型与显卡的对应关系(截至2022年5月):
机型 | 显卡 |
GN6 | Tesla P4 |
GN6S | Tesla P4 |
GN7 | NVIDIA T4 |
GN8 | Tesla P40 |
GN10X | Tesla V100 |
GN10Xp | Tesla V100 |
GI3X | NVIDIA T4 |
GT4 | NVIDIA A100 |
GI1 | Intel SG1加速卡 |
显卡型号知识
我们忽略Intel的那个,其余的显卡都是NVIDIA(英伟达)的显卡,也就是常说的N卡。NVIDIA牢牢抓住了人工智能爆发的浪潮,推出了CUDA、TensorRT等一系列开发框架,为GPU编程提供了便利,黄仁勋也因此赚的盆满钵满。
这里面没有我们日常所说的Geforce系列的GTX、RTX那种显卡。因为Geforce系列是桌面端的(笔记本/台式机)显卡,而这里面显卡是服务端(数据中心/工作站)的显卡。就好比我们个人电脑上的CPU是Intel酷睿(Core)系列,而公司服务器上的CPU是Intel至强(Xeon)系列。
当然并不能说服务端的这些显卡就一定比桌面端的显卡性能更好,具体还是要看算力,显卡的算力信息可以在NVIDIA的官网上查到:https://developer.nvidia.com/cuda-gpus
我的显卡是Tesla P4,算力是6.1
好了,让我们略过服务器选购的具体细节,其实这一步最大的阻碍不是算力,而是钱啦。也略过云服务器初始化的步骤,那和普通的云服务器没有差别,都是选择一台Linux然后初始化一些配置而已。
另外如果你没有购买云服务器,而是有一个装有N卡的个人电脑,那么下面的内容同样适用于你。
驱动安装
新的GPU服务器虽然有显卡,但是是没有显卡驱动的。这里需要我们手动安装一下。首先去NVIDIA官网去下载驱动:
https://www.nvidia.cn/Download/index.aspx?lang=cn
主要根据你的系统类型以及你的显卡型号(产品系列与产品家族)来选择:
点【搜索】
点【下载】
这一步不用点【下载】,因为我们是给云服务器(或者你本地的Linux虚拟机)安装显卡。所以右键复制下载链接,然后再服务器上wget下载,然后运行:
wget https://cn.download.nvidia.com/tesla/510.47.03/NVIDIA-Linux-x86_64-510.47.03.run chmod a+x NVIDIA-Linux-x86_64-510.47.03.run ./NVIDIA-Linux-x86_64-510.47.03.run
执行以后就会开始安装,期间可能收到提示:服务器上gcc版本(比如gcc8.5)和编译kernel的gcc版本(比如gcc8.4)不一致的警告。版本号差异不大的话就忽略,否则可能需要重新安装一个同版本的gcc编译器。
执行完成后怎么确认驱动安装是OK的呢?我们可以执行一下nvidia-smi
这个命令。
nvidia-smi
输出如下:
+-----------------------------------------------------------------------------+ | NVIDIA-SMI 510.47.03 Driver Version: 510.47.03 CUDA Version: 11.6 | |-------------------------------+----------------------+----------------------+ | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | | | | MIG M. | |===============================+======================+======================| | 0 Tesla P4 Off | 00000000:00:08.0 Off | 0 | | N/A 35C P0 21W / 75W | 0MiB / 7680MiB | 0% Default | | | | N/A | +-------------------------------+----------------------+----------------------+ +-----------------------------------------------------------------------------+ | Processes: | | GPU GI CI PID Type Process name GPU Memory | | ID ID Usage | |=============================================================================| | No running processes found | +-----------------------------------------------------------------------------+
能展示出信息,就是驱动安装OK了。怎么来解读这个信息呢。以中间的空行分隔,可以把整个信息分成三个部分。先说第一部分,也就是第一行:
- nvidia-smi命令的版本
- 显卡驱动的版本
- cuda的版本
第二部分,也就是第二行到空行之间的部分,这是一个显卡新的表格,===这行上面是表头,下面是表数据。这里只有一张显卡,如果有多张显卡,下面会追加几行。上图的第二部分,我换个形式会更好理解:
表头 | 数据 | 含义 |
GPU | 0 | 显卡ID,从0计数 |
Fan | N/A | 风扇转速 |
Name | Tesla P4 | 显卡型号 |
Temp | 35C | 温度 |
Perf | P0 | 性能级别,从大到小为P0~P12 |
Persistence-M | Off | 是否是持续模式 |
Pwr:Usage/Cap | 21W/75W | 能耗 |
Bus-Id | 00000000:00:08.0 | GPU总线ID |
Disap.A | Off | Disaplay Active,GPU的显示是否初始化 |
Memory-Usage | 0MiB/7680MiB | 显存使用率 |
Volatile GPU-Util | 0 | GPU利用率 |
Uncorr. ECC | 0 | ECC,错误检查与纠正 |
Compute M. | Default | 计算模式 |
MIG M. | N/A | MIG模式 |
Persistence-M(持续模式)开启之后能耗会增加,但是新GPU程序启动的耗时会减少。如果它的状态是Off,可以使用这个命令来开启:
nvidia-smi -pm 1
注意Memory-Usage(显存使用率)和GPU-Util(GPU利用率)没有必要联系。就好比内存使用率和CPU的使用率也没有必然联系一样!
MIG M.是一个比较新的数据,在老版本的nvidia-smi上是没有这个信息的,对我们来说不用特别关注,感兴趣的可以阅读:https://docs.nvidia.com/datacenter/tesla/mig-user-guide/index.html
nvidia-smi的第三部分,比较好理解,就是当前使用了GPU的进程信息。由于我们还没有使用GPU跑程序,所以这里是空的:
表头 | 含义 |
GPU | 显卡ID |
PID | 进程ID |
TYPE | 类型。C:计算进程,G:图形进程,C+G:计算与图形都有 |
Process name | 进程名 |
GPU Memory Usage | 进程的显卡使用率 |
GI ID、CI ID目前没找到资料,这个也是新版本nvidia-smi新加的,旧版本都是没有的。暂时忽略。