中科曙光服务器飞桨部署过程(海光DCU)
接到公司任务,让我帮忙部署百度飞桨到一台中科曙光服务器。
服务器配置:
系统:Centos7.9
硬盘:①480G固态硬盘 ②4T的机械硬盘
CPU:AMD 7261 8核处理器
系统安装:
为了实验的顺利进行,需要准备一个全新没被使用过的的Linux系统。
制作安装U盘
Centos下载地址:https://www.centos.org/download/
插入U盘,用U盘制作Centos7.9镜像。
用UltralSO打开ISO镜像点击菜单栏中的 启动-写入硬盘映像。
先对U盘进行格式化,再点击写入。
等待写完后,插入服务器,按F7选择U盘启动。
系统安装过程
略……
什么是DCU?
DCU(Deep Computing Unit 深度计算器)是 海光(HYGON)推出的一款专门用于 AI 人工智能和深度学习的加速卡。DCU也可以应用于密集型数值计算。由下图可以看出,DCU是类似GPU的硬件。
安装DCU驱动
环境准备
运行如下两句命令:
①安装编译需要的工具
1 | sudo yum install -y rpm-build gcc-c++ cmake automake elfutils-libelf-devel |
②kernel-devel是一个开发Linux内核必备的包,它提供了编译、调试、测试Linux内核所需的库文件、头文件和文档。
1 | sudo yum install -y kernel-devel-`uname -r` |
下载DTK驱动
注册并登录中科曙光:https://developer.hpccube.com/tool/#sdk
下载dtk-22.10驱动即可,因为没发现dtk-22.10.1的预编译飞桨
链接:https://cancon.hpccube.com:65024/6/main/dtk-22.10%E9%A9%B1%E5%8A%A8
右键 rock-4.5.2-0-5.11.38-1-V01.4.2.run 点击生成直链:
复制第四个直链结果:
组合成如下命令,在终端执行,即可下载到本地:
1 | sudo wget -c https://cancon.hpccube.com:65024/directlink/6/dtk-22.10%E9%A9%B1%E5%8A%A8/rock-4.5.2-0-5.11.38-1-V01.4.2.run |
安装驱动:
赋予可执行权限:
1 | sudo chmod +x rock-4.5.2-0-5.11.38-1-V01.4.2.run |
执行:
1 | sudo ./rock-4.5.2-0-5.11.38-1-V01.4.2.run |
等待大约3分钟后会看到,如下字样
输入如下命令重启:
1 | reboot |
重启后执行如下命令:
1 | lsmod | grep hydcu |
可以看到如下结果则代表安装成功。
安装DCU Toolkit
下载DCU Toolkit
组合成下载命令,在终端进行执行:
1 | wget -c https://cancon.hpccube.com:65024/directlink/1/DTK-22.10.1/CentOS7.6/DTK-22.10.1-CentOS7.6-x86_64.tar.gz |
解压到opt文件夹下
1 | tar xvf ./DTK-22.10.1-CentOS7.6-x86_64.tar.gz -C /opt |
安装
运行如下命令进行安装:
1 | source /opt/dtk-22.10.1/env.sh |
库环境变量
1 | export LD_LIBRARY_PATH=/opt/dtk-22.10.1/lib:$LD_LIBRARY_PATH |
可以将上面这句话写到/root/.bashrc里面
测试是否安装成功
输入如下命令
1 | rocminfo | grep DCU |
可以查看到如下结果,则表明已经安装成功
PaddlePaddle安装
方式一:Docker镜像安装PaddlePaddle
安装Docker到服务器
1、卸载原系统Docker
因为原系统有可能使用的是Docker的替代品podman。
1 | sudo yum remove docker \ |
2、设置安装源
1 | sudo yum install -y yum-utils |
3、安装Docker
1 | sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin |
4、启动Docker
1 | // 启动Docker |
拉取镜像
打开光源dockerHub:https://sourcefind.cn/#/image/dcu/paddlepaddle
根据需要实际情况安装自己的版本。
由于上文用到的DTK是22.10.1。因此我搜索22.10.
点击红框中的按钮进行复制。
即:
1 | docker pull image.sourcefind.cn:5000/dcu/admin/base/paddlepaddle:2.3.2-centos7.6-dtk-22.10.1-py39-latest |
待下载完后,执行可以看到镜像ID,此处我的镜像ID为:0f911e7500d2
1 | docker images |
启动容器
1 | # 启动容器,注意这里的参数,例如 shm-size, device 等都需要配置 |
进入容器后执行:
1 | rocm-smi |
可看到类似如下的结果:
方式二:预编译安装
下载Anaconda
1 | wget -c https://repo.anaconda.com/archive/Anaconda3-2023.09-0-Linux-x86_64.sh |
安装Anaconda
赋予可执行权限
1 | sudo chmod +x Anaconda3-2023.09-0-Linux-x86_64.sh |
安装:
1 | sudo ./Anaconda3-2023.09-0-Linux-x86_64.sh |
①按一次回车
②按多次空格
③然后输入yes同意协议
④同意协议后再按回车进行安装。
⑤然后再输入yes
输入如下语句,应用环境变量
1 | source /root/.bashrc |
创建虚拟环境
1 | conda create -n python38DCU python=3.8 |
查看虚拟环境
1 | conda env list |
激活虚拟环境
1 | conda activate python39DCU |
下载whl
下载地址:https://cancon.hpccube.com:65024/4/main/paddle/dtk22.10
如上方操作一样,右键paddlepaddle-2.3.2_dtk2210_git0195561-cp38-cp38-manylinux2014_x86_64.whl
文件,生成直链,点击第四行复制直链链接。组合成wget下载命令。
1 | wget -c https://cancon.hpccube.com:65024/directlink/4/paddle/dtk22.10/paddlepaddle-2.3.2_dtk2210_git0195561-cp38-cp38-manylinux2014_x86_64.whl |
安装whl
1 | pip install paddlepaddle-2.3.2_dtk2210_git0195561-cp38-cp38-manylinux2014_x86_64.whl -i https://mirror.baidu.com/pypi/simple |
验证是否安装成功
执行如下命令,可看到paddlepaddle-rocm即安装成功~!。
1 | conda list | grep paddle |
方式三:编译安装
待续……
图片分类实验
ResNet50 训练示例
第一步:克隆分类套件
1 | git clone https://github.com/PaddlePaddle/PaddleClas.git |
第二步:设置DCU的设备ID
1 | export HIP_VISIBLE_DEVICES=0,1 |
第三步:模型训练
1 | python -m paddle.distributed.launch --gpus="0,1" tools/train.py -c ./ppcls/configs/ImageNet/ResNet/ResNet50.yaml |
目标检测实验
PaddleDetection使用
克隆PaddleDetection
只能用PaddleDetection release2.2,其他版本存在兼容性问题
1 | git clone -b release/2.2 https://github.com/PaddlePaddle/PaddleDetection.git |
切换目录PaddleDetection
1 | cd PaddleDetection |
查看分支信息
看看你的是不是2.2版本
1 | git branch -v |
安装PaddleDetection依赖
1 | pip install Cython -i https://mirror.baidu.com/pypi/simple |
安装相关依赖
注意:修改requirements.txt文件,将里面的sklearn修改为scikit-learn
1 | pip install -r requirements.txt -i https://mirror.baidu.com/pypi/simple |
如下图,看到Installing collected packages: .....
字样则表示安装已经成功
安装Paddledet
1 | python setup.py install |
验证PaddleDetection是否安装成功
1 | python ppdet/modeling/tests/test_architectures.py |
出现了一个bug,显示找不到libpython3.8.so.1.0,所以需要进行全局查找
1 | find / -name "libpython3.8.so.1.0" |
找出其位置后,将其复制到/usr/lib64
1 | cp /root/anaconda3/envs/python38DCU/lib/libpython3.8.so.1.0 /usr/lib64 |
1 | python ppdet/modeling/tests/test_architectures.py |
然后再次执行测试命令,得到ok字样即安装成功~!
训练示例
第一步:下载数据集
1 | python PaddleDetection/dataset/voc/download_voc.py |
1 | python PaddleDetection/dataset/voc/create_list.py |
第二步:修改 config 文件的参数
切换到PaddleDetection文件夹
1 | cd PaddleDetection/ |
修改 configs/yolov3/_base_/optimizer_270e.yml
文件中的学习率参数base_lr: 0.0005
修改 configs/yolov3/_base_/yolov3_reader.yml
工作数量为1worker_num: 1
第三步:执行训练
1 | export HIP_VISIBLE_DEVICES=0,1 |
1 | python -m paddle.distributed.launch --gpus 0,1 tools/train.py -c configs/yolov3/yolov3_darknet53_270e_voc.yml --eval |