玩转AMD+PyTorch


作者Lou Xiao创建时间2023-08-13 23:16:24更新时间2023-08-13 23:16:24

0. 前言

最近接触到基于AMD显卡的深度学习平台,不同于Nvidia平台,以AMD GPU平台的深度学习生态不够完善,在日常使用中存在诸多困难。
经过不断的试错摸索,寻找了一套简单有效的操作流程,现整理成文字,作为新手的快速入门"傻瓜式"教程。

1. 服务器简要说明

服务器配置说明:

规格说明
内存128GiB
CPUAMD CPU 2GHz 32core x2; 共计64核心
显卡AMD GPU 16GB gfx906, x2
存粗100TB的nfs共享存储

显卡性能测试
使用相同的测试代码,torch.Size([16, 3, 512, 512]),batch size=16。

显卡型号Time/Batch/seconds
GeForce RTX 2080 Ti0.50
AMD GPU(gfx906) 官方显卡驱动 + 官方公版ROCm+官方PyTorch1.70
AMD GPU(gfx906) 官方显卡驱动(/显卡驱动)+ 订制DTK + 订制PyTorch0.77

2. 快速安装PyTorch

2.1. 登陆 dcu服务器

1.双击鼠标左键复制此行;2.单击复制所有代码。
                                
                                    
1 # 服务器:N01,N02,..,N20
2 ssh N01

2.2. 下载并安装mimiconda(首次安装)

1.双击鼠标左键复制此行;2.单击复制所有代码。
                                
                                    
1 wget -c "https://mirrors.bfsu.edu.cn/anaconda/miniconda/Miniconda3-latest-Linux-x86_64.sh" -O 'Miniconda3-latest-Linux-x86_64.sh'
2 /bin/bash ./Miniconda3-latest-Linux-x86_64.sh -b -u -p "$HOME/.miniconda"

2.3. 修改shell的配置文件(首次安装)

1.双击鼠标左键复制此行;2.单击复制所有代码。
                                
                                    
1 cat >> "$HOME/.bashrc" <<'EOF'
2 # >>> conda init >>>
3 if [ -f "$HOME/.miniconda/etc/profile.d/conda.sh" ]; then
4 source "$HOME/.miniconda/etc/profile.d/conda.sh"
5 CONDA_CHANGEPS1=true conda activate base
6 else
7 export PATH="$HOME/.miniconda/bin:$PATH"
8 fi
9 # <<< conda init <<<
10 EOF
11
12 # !!! 重新加载配置文件(很重要)
13 source "$HOME/.bashrc"

2.4. 设置python软件包的仓库地址的国内镜像(首次安装,提高python包的安装速度)

1.双击鼠标左键复制此行;2.单击复制所有代码。
                                
                                    
1 pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
2 conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
3 conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
4 conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge
5 conda config --set show_channel_urls yes

2.5. 创建PyTorch的运行环境(日常重复执行N次)

!!! 这个环节很重要,注意操作顺序。

⓵创建一个运行环境

  • 环境名称是Torch(也可以是其他任何英文名称,叫什么名字不影响);
  • python版本必须是3.8;
  • 需要安装 openmpi=4.1
1.双击鼠标左键复制此行;2.单击复制所有代码。
                                
                                    
1 conda create -n Torch python=3.8 openmpi=4.1
2 conda activate Torch

⓶安装PyTorch(关键步骤)

  • 安装特殊优化的PyTorch,此处是订制版本,且PyTorch版本是1.13.1
  • 在路径/dcu/public/dtk-23.04/存放有 定制的安装包:
    • torch-1.13.1+git55d300e.abi0.dtk2304-cp38-cp38-manylinux2014_x86_64.whl
    • torchaudio-0.13.1+8bfbf47.abi0.dtk2304.torch1.13.1-cp38-cp38-manylinux2014_x86_64.whl
    • torchvision-0.14.1+git9134838.abi0.dtk2304.torch1.13-cp38-cp38-manylinux2014_x86_64.whl
    • deepspeed-0.13.5+bc0d246-cp38-cp38-linux_x86_64.whl (预编译的DeepSpeed安装包)
1.双击鼠标左键复制此行;2.单击复制所有代码。
                                
                                    
1 pip install /dcu/public/dtk-23.04/*.whl

⓷测试PyTorch能够正常使用GPU

1.双击鼠标左键复制此行;2.单击复制所有代码。
                                
                                    
1 python -c "import torch;print(torch.cuda.is_available())"

若结果如下图所示,则表示安装成功!

1.双击鼠标左键复制此行;2.单击复制所有代码。
                                
                                    
1 $ python -c "import torch;print(torch.cuda.is_available())"
2 True

⓸安装其它python包

根据需求安装其它软件包:pip install xxx==x.y.zconda install xxx=x.y.z

4. 关于dcu超算的备注:

申请计算资源时,一定要全额申请,比如1个计算节点(cpu:32核,ram:128GB,dcu:4)

申请4个dcu节点:

1.双击鼠标左键复制此行;2.单击复制所有代码。
                                
                                    
1 salloc -p -N 4 --mem-per-gpu=32G --cpus-per-dcu=8 --dcus-per-node=4

5. 一点细节

服务器使用了module软件来管理AMD的订制套件(主要是动态连接库:libxxx.so)。
登陆服务器后,默认只激活了compiler/dtk/23.04,这个就是AMD显卡的软件库,订制版的PyTorch依赖它。
我的建议是:忘记module,忘记compiler/dtk/23.04,则炼丹体验大幅度提升。
如果不小心,操作module了,破坏了运行环境,只需登出再重新登陆,则恢复默认。

文章目录