51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

Ubuntu使用Tesla P4配置Anaconda+CUDA+PyTorch

我们之前测试了在Windows系统如何安装Tesla M4 (成了!Tesla M4+Windows 10+Anaconda+CUDA 11.8+cuDNN+Python 3.11) ,前面安装好了Ubuntu 22.04.4的操作系统 (Ubuntu 22.04.4安装Docker引擎) 。今天,简单测试一下在Ubuntu系统上如何把新买的Tesla P4用起来。首先,我们到NVIDIA官网找到Ubuntu 22.04对应的驱动,下载下来。

这里可以看到,基本上数据中心GPU的驱动都是通用的,从最低端的Tesla M4,到最高端的H系列和L系列,一个驱动文件通杀了。驱动文件的现在链接如下: https://cn.download.nvidia.cn/tesla/550.54.15/nvidia-driver-local-repo-ubuntu2204-550.54.15_1.0-1_amd64.deb 下载完成后,对于deb文件,一般有两种安装方式:命令行或者GUI图形界面。GUI图形界面非常简单,只需要在文件管理器中找到下载好的.deb文件并双击运行即可,之后系统会自动调用软件安装程序。根据图形界面中显示的软件相关信息,点击 "安装" 按钮开始安装过程,直至安装完成。但对于我来讲,配置了GPU之后,控制台会因为缺少驱动卡在POST页面,所以还是需要先通过命令行方式来安装驱动。命令行方式主要使用dpkg命令进行安装,命令如下:

                            dpkg
                          
                          
                            -i
                          
                          
                            nvidia-driver-local-repo-ubuntu2204-560
                          
                          
                            .35
                          
                          
                            .03_1
                          
                          
                            .0-1_amd64
                          
                          
                            .deb

初次尝试安装时,系统可能会提示公钥(GPG key)未安装。为了能够信任NVIDIA提供的软件包仓库,我们需要执行以下命令,将NVIDIA的公钥复制到系统的keyrings目录下:

                          cp /var/nvidia-driver-
                          
                            local
                          
                          -repo-ubuntu2204-
                          
                            560.35
                          
                          .
                          
                            03
                          
                          /nvidia-driver-
                          
                            local
                          
                          -
                          
                            73056
                          
                          A76-keyring.gpg /usr/share/keyrings/

然后再次执行安装命令,此时,最新版本已经加载到本地仓库。

完成之后,运行以下命令更新软件包列表。

                            apt
                          
                          
                            update

接下来,使用以下命令来安装最新版本的NVIDIA驱动,指定版本号为550。

                            apt
                          
                          
                            install -y nvidia-driver-560

安装完毕后,执行reboot命令重启系统,让新安装的NVIDIA驱动生效。重启后,运行nvidia-smi命令,查看NVIDIA驱动是否加载成功。

                          nvidia-smi

如果在桌面进行查看,通过Nvidia X Server Setting可以看到设备信息的图形展示。

设备信息。

安装好了驱动程序,接下来,我们来安装CUDA。首先,安装实际情况选择CUDA的环境配置,如下图所示:

不太建议选择使用runfile文件,编译可能会遇到问题,报错太多,不好解决。按照提示,下载并安装deb程序,整体和安装驱动的过程类似。

                          wget 
                          
                            https:
                          
                          /
                          
                            /developer.download.nvidia.com/compute
                          
                          
                            /cuda/repos
                          
                          
                            /ubuntu2204/x
                          
                          86_64/cuda-ubuntu2204.pin
mv cuda-ubuntu2204.pin /etc/apt/preferences.d/cuda-repository-pin-
                          
                            600
                          
`wget
`
https:
`
/
`
/developer.download.nvidia.com/compute
`
`
/cuda/
`
`
12.6
`
.
`
2
`
/local_installers/cuda-repo-ubuntu2204-
`
12
`
-
`
6
`
-local_12.
`
6.2
`
-
`
560.35
`
.
`
03
`
-
`
1_
`
amd64.deb
dpkg -i cuda-repo-ubuntu2204-
`
12
`
-
`
6
`
-local_12.
`
6.2
`
-
`
560.35
`
.
`
03
`
-
`
1_
`
amd64.deb
`
                        
                        
                        
  
                          
                          
   

   
  
                      

安装CUDA套件。

                          cp /
                          
                            var
                          
                          /cuda-repo-ubuntu2204-
                          
                            12
                          
                          -
                          
                            6
                          
                          -local/cuda-*-keyring.gpg /usr/share/keyrings/
                          

                          apt-
                          
                            get
                          
                           update
                          

                          apt-
                          
                            get
                          
                           -y install cuda-toolkit-
                          
                            12
                          
                          -
                          
                            6

CUDA提供了两种安装模式,传统内核的cuda-drivers和开发内核的nvidia-open。nvidia-open是NVIDIA提供的一种开源内核模块选项,适用于对图形性能要求不是极高,更注重软件开放性和兼容性的场景;cuda-drivers是NVIDIA的传统(闭源)驱动选项,用于支持CUDA技术,适用于需要进行高性能计算或专业图形处理的场景,这些场景对GPU的计算能力和高级图形功能有较高的要求。所以,我们本次选择安装传统内核模块cuda-drivers,执行以下命令:

                          apt-get 
                          
                            install
                          
                           -y cuda-drivers

安装完成后,查看CUDA版本信息。

接下来,安装Anaconda。先下载安装脚本:

                            wget
                          
                          
                            https:
                          
                          //repo.anaconda.com/archive/Anaconda3-2024.10-1-Linux-x86_64.sh

然后赋予可执行权限并执行:

                            chmod
                          
                           +
                          
                            x
                          
                          
                            Anaconda3-2024
                          
                          
                            .10-1-Linux-x86_64
                          
                          
                            .sh
                          
                        
                        

                        
                          
                            sh
                          
                          
                            Anaconda3-2024
                          
                          
                            .10-1-Linux-x86_64
                          
                          
                            .sh

按照提示完成安装。

默认情况下,Anaconda的Shell文件没有加载。

如果在上一步没有启用,在安装完成后,需要执行以下命令设置环境变量设置、激活Conda的Hook机制,并将conda集成到Shell的启动过程,之后就可以执行conda命令了。

                          /root/anaconda3/etc/profile.d/conda.sh

安装完成后,创建一个pytorch环境,并激活。

                          conda 
                          
                            create
                          
                          --name pytorch python = 3.10
                        
                        
                          conda 
                          
                            activate
                          
                           pytorch
                        
                            

然后就可以参照官网选项,获取安装命令了。

执行以下命令完成PyTorch环境部署

                          conda install pytorch torchvision torchaudio pytorch-cuda=
                          
                            12.4
                          
                           -
                          
                            c
                          
                           pytorch -
                          
                            c
                          
                           nvidia

安装完成后,我们执行以下命令检验GPU设备是否可用。

                            import
                          
                           torch  

                          <span class="hljs-keyword">
                            if
                          </span>
                           torch.cuda.is_available():
    print(
                          <span class="hljs-string">
                            "GPU可用"
                          </span>
                          )
    device_name = torch.cuda.get_device_name(
                          <span class="hljs-number">
                            0
                          </span>
                          )
    print(
                          <span class="hljs-string">
                            "设备名称:"
                          </span>
                          , device_name)

                          <span class="hljs-comment">
                            # 获取GPU属性(显存大小)
                          </span>
                          
    device_properties = torch.cuda.get_device_properties(
                          <span class="hljs-number">
                            0
                          </span>
                          )    
    print(
                          <span class="hljs-string">
                            "总显存大小:"
                          </span>
                          , device_properties.total_memory)
                        </code>

GPU设备检验成功,我们再运行一下矩阵运算,对比一下

                          import torch
                          

                          import time
                          

                          size = (
                          
                            20000
                          
                          ,
                          
                            20000
                          
                          )
                          

                          input_cpu = torch.randn(size)
                          

                          input_gpu = input_cpu.to(torch.device(
                          
                            'cuda'
                          
                          ))
                          

                          # 在CPU上执行矩阵乘法(耗时操作)
                          

                          start_time_cpu = 
                          
                            time
                          
                          .
                          
                            time
                          
                          ()
                          

                          output_cpu = torch.mm(input_cpu, input_cpu.t())
                          

                          duration_cpu = 
                          
                            time
                          
                          .
                          
                            time
                          
                          () - start_time_cpu
                          

                          # 在GPU上执行同样的操作
                          

                          start_time_gpu = 
                          
                            time
                          
                          .
                          
                            time
                          
                          ()
                          

                          output_gpu = torch.mm(input_gpu, input_gpu.t().to(torch.device(
                          
                            'cuda'
                          
                          )))    
                          

                          duration_gpu = 
                          
                            time
                          
                          .
                          
                            time
                          
                          () - start_time_gpu
                          

                          print(f
                          
                            "CPU矩阵乘法运行时间: {duration_cpu:.6f} 秒"
                          
                          )
                          

                          
                            print
                          
                          (f
                          
                            "GPU矩阵乘法运行时间: {duration_gpu:.6f} 秒"
                          
                          )

CPU的运算时间是10.2秒,GPU的运算时间为0.035474,差了大约286倍。

赞(1)
未经允许不得转载:工具盒子 » Ubuntu使用Tesla P4配置Anaconda+CUDA+PyTorch