当前位置:   article > 正文

NPU迁移pytorch模型和性能调优_pytorch npu

pytorch npu

上一节说到驱动和固件安装https://blog.csdn.net/lmlmlmj/article/details/136931985?spm=1001.2014.3001.5502

一.模型迁移

1.环境安装

安装conda,这里不作赘述。然后激活环境 source /root/miniconda3/bin/activate

安装pytorch(1.11.0 python3.8版本)

wget https://download.pytorch.org/whl/torch-1.11.0-cp38-cp38-manylinux2014_aarch64.whl

pip3 install torch-1.11.0-cp38-cp38-manylinux2014_aarch64.whl

通过源码编译安装torch_npu插件时,安装如下环境依赖:

pip3 install pyyaml

pip3 install wheel

pip3 install setuptools

安装torch_npu插

wget https://gitee.com/ascend/pytorch/releases/download/v5.0.rc3-pytorch1.11.0/torch_npu-1.11.0.post4-cp38-cp38-linux_aarch64.whl

pytorch 发行版 - Gitee.com  这是下载其他版本的地址

pip3 install torch_npu-1.11.0.post4-cp38-cp38-linux_aarch64.whl

执行如下命令,若返回True则说明安装成功

python3 -c "import torch;import torch_npu;print(torch_npu.npu.is_available())"

APEX安装

apt-get install -y patch build-essential libbz2-dev libreadline-dev wget curl llvm libncurses5-dev libncursesw5-dev xz-utils tk-dev liblzma-dev m4 dos2unix libopenblas-dev git

apt-get install -y gcc==7.3.0 cmake==3.12.0

请确保已安装PyTorch框架且setuptools版本小于等于65.7.0,若版本不符合条件,可使用以下命令安装。

pip install setuptools==65.7.0

git clone -b master apex: Ascend apex adapter

cd apex/

bash scripts/build.sh --python=3.#查看多少版本

cd apex/dist/pip3 uninstall apex

pip3 install --upgrade apex-0.1+ascend-cp38-cp38-aarch64.whl # version为python版本和cpu架构

自己安装时一定要和cann,torch版本对上

2.迁移yolov5

配置环境变量

export PYTHONPATH={CANN包安装目录}/ascend-toolkit/latest/tools/ms_fmk_transplt/torch_npu_bridge:$PYTHONPATH

在训练脚本中导入以下库代码:

import torch_npu

from torch_npu.contrib import transfer_to_npu

然后进行训练,但发现训练时间过长的问题。结果方法进行性能和精度调优。

二.性能调优

1.初级调优

优化数据

升级pillow库

apt-get install libtiff5-dev libjpeg8-dev libopenjp2-7-dev zlib1g-dev libfreetype6-dev liblcms2-dev libwebp-dev tcl8.6-dev tk8.6-dev python3-tk libharfbuzz-dev libfribidi-dev libxcb1-dev

安装SSE4版本pillow-simd。

pip3 install pillow-simd

安装对应框架版本的torchvision,PyTorch 1.11.0需安装0.12.0版本,PyTorch 2.0.1版本需安装0.15.2版本,PyTorch 2.1.0版本需安装0.16.0版本。。

安装opencv

export GIT_SSL_NO_VERIFY=true

下载源码安装包

git clone https://github.com/opencv/opencv.git
cd opencv
mkdir -p build

编译安装

cd build  
cmake -D BUILD_opencv_python3=yes -D BUILD_opencv_python2=no -D PYTHON3_EXECUTABLE=/usr/local/python3.7.5/bin/python3.7m -D PYTHON3_INCLUDE_DIR=/usr/local/python3.7.5/include/python3.7m -D
PYTHON3_LIBRARY=/usr/local/python3.7.5/lib/libpython3.7m.so -D PYTHON3_NUMPY_INCLUDE_DIRS=/usr/local/python3.7.5/lib/python3.7/site-packages/numpy/core/include -D PYTHON3_PACKAGES_PATH=/usr/local/python3.7.5/lib/python3.7/site-packages -D PYTHON3_DEFAULT_EXECUTABLE=/usr/local/python3.7.5/bin/python3.7m .. 

make -j$nproc
make install

非阻塞数据下发

在使用.to()指定训练设备时,建议使用non_blocking=True加速数据下沉来提升训练性能。

开启电源高性能模式

按照操作走https://www.hiascend.com/document/detail/zh/CANNCommunityEdition/700alpha003/ptmoddevg/ptmigr/AImpug_0057.html

算子二进制调优

PyTorch框架提供与算子编译相关的二进制配置参数,可设置模型编译时是否优先在线编译,以此优化模型训练性能。参数配置代码如下,可设置True或False。当前针对Atlas 训练系列产品,若不添加以下代码则默认为True。

先要进行分析工具分析是否存在动态shape

须安装如下依赖。

pip3 install pandas         #pandas版本号需大于或等于1.2.4
pip3 install libcst         #Python语法树解析器,用于解析Python文件
pip3 install prettytable    #将数据可视化为图表形式
pip3 install jedi           #三方库套件、亲和API分析时必须安装

进入分析工具所在路径。

cd Ascend-cann-toolkit安装目录/ascend-toolkit/latest/tools/ms_fmk_transplt/

./pytorch_analyse.sh -i 待分析脚本路径 -o 分析结果输出路径 -v 待分析脚本框架版本  -m dynamic_shape

然后在分析脚本下修改脚本,将

for i, (ings, targets, paths, _) in pbar:修改为

for i, (ings, targets, paths, _) in DETECTOR.start(pbar):

运行,读取msft_dynamic_shape_analysis_report.csv 分析为动态shape,需要使用算子二进制

使用算子二进制之前,先进行安装算子包Ascend-cann-kernels-xxx_linux.run

获取软件包https://www.hiascend.com/zh/developer/download/community/result?module=cann

进行安装

安装成功。

动态shape场景下,在模型脚本的main_worker函数中配置进程级别的开关,配置为False。

torch_npu.npu.set_compile_mode(jit_compile=False)

NPU亲和API扫描(参考https://www.hiascend.com/document/detail/zh/CANNCommunityEdition/700alpha003/ptmoddevg/ptmigr/AImpug_0059.html)我这里没用到

NPU亲和优化器替换

当前昇腾AI处理器支持NPU亲和的融合优化器功能,优化器做了昇腾AI处理器亲和性优化,使性能提升。

按照自己是那种优化器进行替换

https://www.hiascend.com/document/detail/zh/CANNCommunityEdition/700alpha003/ptmoddevg/ptmigr/AImpug_0060.html

然后配置文件进行训练

训练速度果然上来了,速度很快,不根据给出的性能指标,比A100稍慢。

进阶调优

后续再讲

参考文献:

https://www.hiascend.com/document/

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/1005185
推荐阅读
相关标签
  

闽ICP备14008679号