From 6ef3e78abe91fc55cd3223994a8d8c4b8327ba66 Mon Sep 17 00:00:00 2001 From: WeiChunyu-star Date: Tue, 2 Sep 2025 16:07:51 +0800 Subject: [PATCH] del description of inference function in README of PyTorch/models --- .../audio/ESPnet2_for_PyTorch/README.md | 204 ------------- .../classification/CRNN_for_PyTorch/README.md | 220 -------------- .../detection/DB_ID0706_for_PyTorch/README.md | 231 --------------- .../Bert_Chinese_ID3433_for_PyTorch/README.md | 264 ----------------- .../HRNet_ID1780_for_PyTorch/README.md | 237 --------------- .../InceptionV3_ID1596_for_PyTorch/README.md | 200 ------------- .../nlp/albert_ID0335_for_PyTorch/README.md | 279 ------------------ 7 files changed, 1635 deletions(-) diff --git a/PyTorch/built-in/audio/ESPnet2_for_PyTorch/README.md b/PyTorch/built-in/audio/ESPnet2_for_PyTorch/README.md index c161f6424e..5a493ce3ee 100644 --- a/PyTorch/built-in/audio/ESPnet2_for_PyTorch/README.md +++ b/PyTorch/built-in/audio/ESPnet2_for_PyTorch/README.md @@ -231,207 +231,3 @@ ESPNet是一套基于E2E的开源工具包,可进行语音识别等任务。 # 公网地址说明 代码涉及公网地址参考 public_address_statement.md - -# Conformer-推理指导 - -- [概述](#概述) -- [推理环境准备](#推理环境准备) -- [快速上手](#快速上手) - - [获取源码](#获取源码) - - [准备数据集](#准备数据集) - - [模型推理](#模型推理) -- [模型推理性能&精度](#模型推理性能&精度) - -****** - -# 概述 -Conformer是将CNN用于增强Transformer来做ASR的结构 - -- 版本说明: - ``` - url=https://github.com/espnet/espnet_onnx - commit_id=18eb341 - model_name=Conformer - ``` - -# 推理环境准备 -- 该模型需要以下插件与驱动 - **表 1** 版本配套表 - - | 配套 | 版本 | 环境准备指导 | - | ------------------------------------------------------------ | ------ | ------------------------------------------------------------ | - | 固件与驱动 | 22.0.3 | [Pytorch框架推理环境准备](https://www.hiascend.com/document/detail/zh/ModelZoo/pytorchframework/pies) | - | CANN | 6.0.0 | - | - | Python | 3.7.5 | - | - | PyTorch | 1.13.0 | - | - | 说明:Atlas 300I Duo 推理卡请以CANN版本选择实际固件与驱动版本。 | \ | \ | - - -# 快速上手 -可参考实现https://gitee.com/ascend/ModelZoo-PyTorch/tree/master/ACL_PyTorch/built-in/audio/Conformer_for_Pytorch - -## 获取源码 - -1. 获取`Pytorch`源码 - ``` - git clone https://github.com/espnet/espnet_onnx.git - cd espnet_onnx - git reset --hard 18eb341 - ``` - -2. 安装依赖 - ``` - pip3 install -r requirements.txt - ``` - -3. 安装ais-bench/auto-optimizer - - 参考[ais-bench](https://gitee.com/ascend/tools/tree/master/ais-bench_workload/tool/ais_bench)/[auto-optimizer](https://gitee.com/ascend/msadvisor/tree/master/auto-optimizer/auto_optimizer)安装。 - - -4. 获取`OM`推理代码 - - 目录结构如下: - - ``` - ├──Conformer_for_Pytorch - ├── pth2onnx.py - ├── modify_onnx_lm.py - ├── modify_onnx_decoder.py - ├── graph_fusion.py - ├── export_acc.patch - ├── espnet_onnx - ├── ... - ``` - - -## 准备数据集 -- 该模型使用AISHELL数据集进行精度评估,下载[aishell数据集](https://zhuanlan.zhihu.com/p/535316385) - - -## 模型推理 - -### 1 模型转换 - -将模型权重文件`.pth`转换为`.onnx`文件,再使用`ATC`工具将`.onnx`文件转为离线推理模型`.om`文件。 - -1. 获取权重文件 - 下载权重放在Conformer_for_Pytorch目录下。权重链接:https://github.com/espnet/espnet/tree/master/egs2/aishell/asr1 - - 指定参数为:Conformer + specaug + speed perturbation: feats=raw, n_fft=512, hop_length=128 - - 点击With Transformer LM中的Model link链接下载asr_train_asr_conformer3_raw_char_batch_bins4000000_accum_grad4_sp_valid.acc.ave.zip文件,将该文件和pth2onnx.py文件置于同一目录下 - - -2. 导出`ONNX`模型 - - ``` - cd espnet_onnx - patch -p1 < ../export_acc.patch - cp ../multi_batch_beam_search.py espnet_onnx/asr/beam_search - cp ../asr_npu_adapter.py espnet_onnx/asr - cp ../npu_model_adapter.py espnet_onnx/asr - pip3 install . #安装espnet_onnx - cd .. - ``` - 配置环境变量 - - ``` - source /usr/local/Ascend/ascend-toolkit/set_env.sh - ``` - - > **说明:** - > 该脚本中环境变量仅供参考,请以实际安装环境配置环境变量。详细介绍请参见《[CANN 开发辅助工具指南 \(推理\)](https://support.huawei.com/enterprise/zh/ascend-computing/cann-pid-251168373?category=developer-documents&subcategory=auxiliary-development-tools)》。 - - 运行`pth2onnx.py`导出`ONNX`模型。 - - ``` - python3 pth2onnx.py - ``` - 导出的onnx文件正常在/root/.cache/espnet_onnx/asr_train_asr_qkv/full目录下,在/root/.cache/espnet_onnx/asr_train_asr_qkv目录下则有配置文件config.yaml配置文件以及feats_stats.npz文件 - - 修改导出的`onnx`模型,修改xformer_decoder.onnx文件以及transformer_lm.onnx文件,原因是两模型中存在Gather算子indices为-1的场景,当前CANN还不支持该场景,有精度问题,并且可以优化部分性能。 - - ``` - python3 modify_onnx_decoder.py /root/.cache/espnet_onnx/asr_train_asr_qkv/full/xformer_decoder.onnx \ - /root/.cache/espnet_onnx/asr_train_asr_qkv/full/xformer_decoder_revise.onnx - python3 modify_onnx_lm.py /root/.cache/espnet_onnx/asr_train_asr_qkv/full/transformer_lm.onnx \ - /root/.cache/espnet_onnx/asr_train_asr_qkv/full/transformer_lm_revise.onnx - python3 modify_onnx_ctc.py /root/.cache/espnet_onnx/asr_train_asr_qkv/full/ctc.onnx \ - /root/.cache/espnet_onnx/asr_train_asr_qkv/full/ctc_dynamic.onnx - python3 modify_onnx_encoder.py /root/.cache/espnet_onnx/asr_train_asr_qkv/full/xformer_encoder.onnx \ - /root/.cache/espnet_onnx/asr_train_asr_qkv/full/xformer_encoder_multibatch.onnx 4 - - ``` - -3. 使用`ATC`工具将`ONNX`模型转为`OM`模型 - - 3.1 执行命令查看芯片名称(得到`atc`命令参数中`soc_version`) - - ``` - npu-smi info - ``` - - 3.2 执行ATC命令 - - 将xformer_encoder.sh,xformer_decoder.sh,transformer_lm.sh,ctc.sh放置到/root/.cache/espnet_onnx/asr_train_asr_qkv/full目录下,运行xformer_encoder.sh导出encoder`OM`模型,默认保存在当前文件夹下,其他模型类似。 - - ``` - bash xformer_encoder.sh soc_version - bash xformer_decoder.sh soc_version - bash transformer_lm.sh soc_version - bash ctc.sh soc_version - ``` - -### 2 开始推理验证 - -1. 修改配置参数 - - 修改/root/.cache/espnet_onnx/asr_train_asr_qkv/目录下config配置文件参数,给每个模型增加input_size,output_size参数以及修改对应的weight参数中的ctc, decoder, lm,给出样例如下 - - | 项 | 子项 | 路径或值 | - | :------ | ----------- | ------------------------------------------------------------ | - | encoder | model_path | /root/.cache/espnet_onnx/asr_train_asr_qkv/full/xformer_encoder_rank.om | - | | output_size | 5000000 | - | decoder | model_path | /root/.cache/espnet_onnx/asr_train_asr_qkv/full/xformer_decoder_{os}_{arch}.om | - | | output_size | 5000000 | - | ctc | model_path | /root/.cache/espnet_onnx/asr_train_asr_qkv/full/ctc_{os}_{arch}.om | - | | output_size | 100000000 | - | lm | model_path | /root/.cache/espnet_onnx/asr_train_asr_qkv/full/transformer_lm_{os}_{arch}.om | - | | output_size | 5000000 | - | beam_search | beam_size | 2 | - | weights | ctc | 0.3 | - | | decoder | 0.7 | - | | lm | 0.3 | - - 说明:{os}_{arch}为对应系统/架构名,如:{linux}_{aarch64} - -2. 执行推理 & 精度验证 - 运行`om_val.py`推理OM模型,生成的结果txt文件在当前文件夹下。 - - ``` - # 生成的om.txt可以跟标杆对比即可: - python3 om_val.py --dataset_path ${dataset_path}/wav/test --model_path /root/.cache/espnet_onnx/asr_train_asr_qkv - - # text是标杆文件: 默认打印error值,最终精度取ACC值:100%-error - python3 compute-wer.py --char=1 --v=1 text om.txt - ``` - -3. 性能验证 - - 打印终端的时间即为数据集上的端到端推理耗时 - - 模型推理性能&精度: - - 调用ACL接口推理计算,性能&精度参考下列数据: - 备注说明: - - 1. NPU推理采用多进程推理方案,依赖CPU性能,参考机器:96核CPU(aarch64)/CPU max MHZ: 2600/251G内存/NPU310P3 - - 2. 性能以最终total的端到端性能为准 - - | 芯片型号 | 配置 | 数据集 | 精度(overall) | 性能(fps) | - | :-----------: | :------------------------------------: | :-------: | :-------------: | - | GPU | encoder/decoder/ctc/lm(beam_size=20) | aishell | 95.27% | - | GPU | encoder/decoder/ctc/lm(beam_size=2) | aishell | 95.08% | - | Atlas | encoder/decoder/ctc/lm(default) | aishell | 95.02% | diff --git a/PyTorch/built-in/cv/classification/CRNN_for_PyTorch/README.md b/PyTorch/built-in/cv/classification/CRNN_for_PyTorch/README.md index c18ca73073..41ea48dfba 100644 --- a/PyTorch/built-in/cv/classification/CRNN_for_PyTorch/README.md +++ b/PyTorch/built-in/cv/classification/CRNN_for_PyTorch/README.md @@ -184,226 +184,6 @@ CRNN (Convolutional Recurrent Neural Network) 于2015年由华中科技大学的 ## FAQ 无。 -# CRNN-推理指导 - - -- [概述](#ZH-CN_TOPIC_0000001172161501) - -- [推理环境准备](#ZH-CN_TOPIC_0000001126281702) - -- [快速上手](#ZH-CN_TOPIC_0000001126281700) - - - [准备数据集](#section183221994411) - - [模型推理](#section741711594517) - -- [模型推理性能](#ZH-CN_TOPIC_0000001172201573) - - ****** - - - - -# 概述 - -文字识别是图像领域一个常见问题。对于自然场景图像,首先要定位图像中的文字位置,然后才能进行文字的识别。对定位好的文字区域进行识别,主要解决的问题是每个文字是什么,将图像中的文字区域进转化为字符信息。CRNN全称为Convolutional Recurrent Neural Network,是一种卷积循环神经网络结构,用于解决基于图像的序列识别问题,特别是场景文字识别问题。主要用于端到端地对不定长的文本序列进行识别,不用先对单个文字进行切割,而是将文本识别转化为时序依赖的序列学习问题,也就是基于图像的序列识别。 - - -- 参考实现: - - ``` - https://github.com/Sierkinhane/CRNN_Chinese_Characters_Rec - branch=master - commit_id=90c83db3f06d364c4abd115825868641b95f6181 - ``` - - 通过Git获取对应commit\_id的代码方法如下: - - ``` - git clone {repository_url} # 克隆仓库的代码 - cd {repository_name} # 切换到模型的代码仓目录 - git checkout {branch/tag} # 切换到对应分支 - git reset --hard {commit_id} # 代码设置到对应的commit_id(可选) - cd {code_path} # 切换到模型代码所在路径,若仓库下只有该模型,则无需切换 - ``` - - -## 输入输出数据 - -- 输入数据 - - | 输入数据 | 数据类型 | 大小 | 数据排布格式 | - | -------- | -------- | ------------------------ | ------------ | - | input | FLOAT32 | batchsize x 1 x 32 x 100 | NCHW | - - -- 输出数据 - - | 输出数据 | 大小 | 数据类型 | 数据排布格式 | - | -------- | ------------------- | -------- | ------------ | - | output1 | 26 x batchsize x 37 | FLOAT32 | ND | - - - -# 推理环境准备 - -- 该模型需要以下插件与驱动 - - **表 1** 版本配套表 - -| 配套 | 版本 | 环境准备指导 | -| ------------------------------------------------------------ | ------- | ------------------------------------------------------------ | -| 固件与驱动 | 22.0.3 | [Pytorch框架推理环境准备](https://www.hiascend.com/document/detail/zh/ModelZoo/pytorchframework/pies) | -| CANN | 6.0.RC1 | - | -| Python | 3.7.5 | - | -| PyTorch | 1.12.1 | - | -| 说明:Atlas 300I Duo 推理卡请以CANN版本选择实际固件与驱动版本。 | \ | \ | - -# 快速上手 - -具体实现可参考实现https://gitee.com/ascend/ModelZoo-PyTorch/tree/master/ACL_PyTorch/built-in/cv/CRNN_BuiltIn_for_Pytorch -进入infer路径获取推理文件 - -1. 安装依赖。 - - ``` - cd infer - pip3 install -r requirements.txt - ``` - -## 准备数据集 - -1. 获取原始数据集。(解压命令参考tar –xvf \*.tar与 unzip \*.zip) - - 本模型支持多种开源OCR mdb数据集(例如IIIT5K_lmdb),请用户自行准备好图片数据集,IIIT5K_lmdb验证集目录参考。 - - ``` - ├── IIIT5K_lmdb # 验证数据集 - ├── data.mdb # 数据文件 - └── lock.mdb # 锁文件 - ``` - -2. 数据预处理。 - - 1. 执行parse_testdata.py脚本。 - - ``` - python3 parse_testdata.py ./IIIT5K_lmdb input_bin - ``` - - 执行成功后,二进制文件生成在*./input_bin*文件夹下,标签数据label.txt生成在当前目录下。 - - -## 模型推理 - -模型转换。 - -使用PyTorch将模型权重文件.pth转换为.onnx文件,再使用ATC工具将.onnx文件转为离线推理模型文件.om文件。 - -获取权重文件。 - -导出onnx文件。 - -1. 使用pth2onnx.py导出onnx文件。 - - 运行pth2onnx.py脚本。 - - ``` - python3.7 pth2onnx.py ./checkpoint.pth ./crnn_npu_dy.onnx - ``` - - 获得crnn_npu_dy.onnx文件。 - -使用ATC工具将ONNX模型转OM模型。 - -2. 配置环境变量。 - - ``` - source /usr/local/Ascend/ascend-toolkit/set_env.sh - ``` - - > **说明:** - > 该脚本中环境变量仅供参考,请以实际安装环境配置环境变量。详细介绍请参见《[CANN 开发辅助工具指南 \(推理\)](https://support.huawei.com/enterprise/zh/ascend-computing/cann-pid-251168373?category=developer-documents&subcategory=auxiliary-development-tools)》。 - -3. 执行命令查看芯片名称($\{chip\_name\}) - - ```shell - npu-smi info - ``` - -4. 执行atc命令 - - ```shell - # Ascend${chip_name}请根据实际查询结果填写 - atc --model=crnn_npu_dy.onnx --framework=5 --output=crnn_final_bs16 --input_format=NCHW --input_shape="actual_input_1:16,1,32,100" --log=error --soc_version=Ascend${chip_name} - ``` - - 参数说明: - - - --model:为ONNX模型文件 - - - --framework:5代表ONNX模型 - - - --output:输出的OM模型 - - - --input_format:输入数据的格式 - - - --input_shape:输入数据的shape - - - --log:日志级别 - - - --soc_version:处理器型号 - - 运行成功后生成crnn_final_bs16.om模型文件 - -5. 开始推理验证。 - - a. 安装ais_bench推理工具。 - - 请访问[ais_bench推理工具](https://gitee.com/ascend/tools/tree/master/ais-bench_workload/tool/ais_bench)代码仓,根据readme文档进行工具安装。 - - b. 执行推理 - - ```shell - source /usr/local/Ascend/ascend-toolkit/set_env.sh - - python3 -m ais_bench --model ./crnn_final_bs16.om --input ./input_bin --output ./ --output_dirname result --device 0 --batchsize 16 --output_batchsize_axis 1 - ``` - - 参数说明: - - - --model:模型地址 - - --input:预处理完的数据集文件夹 - - --output:推理结果保存路径 - - --output_dirname: 推理结果存储位置 - - 运行成功后会在 ./result 下生成推理输出的bin文件 - - - c. 精度验证。 - 运行脚本postpossess_CRNN_pytorch.py进行精度测试,精度会打屏显示。 - - ``` - python3 postpossess_CRNN_pytorch.py ./result ./label.txt - ``` -6. 性能验证 - - 可使用ais_bench推理工具的纯推理模式验证不同batch_size的om模型的性能,参考命令如下: - ``` - python3.7 -m ais_bench --model=${om_model_path} --loop=20 --batchsize=${batch_size} - ``` - - 参数说明 - - --model:om模型 - - --loop:循环次数 - - --batchsize:推理张数 - -# 模型推理性能&精度 - -调用ACL接口推理计算,性能参考下列数据。 - -| 芯片型号 | Batch Size | 数据集 | 精度 | -| -------- | ---------- | ----------- | ------ | -| Atlas | 16 | IIIT5K_lmdb | 76.57% | - # 公网地址说明 代码涉及公网地址参考 public_address_statement.md diff --git a/PyTorch/built-in/cv/detection/DB_ID0706_for_PyTorch/README.md b/PyTorch/built-in/cv/detection/DB_ID0706_for_PyTorch/README.md index 88f452040e..c82ab203f9 100644 --- a/PyTorch/built-in/cv/detection/DB_ID0706_for_PyTorch/README.md +++ b/PyTorch/built-in/cv/detection/DB_ID0706_for_PyTorch/README.md @@ -216,237 +216,6 @@ DB(Differentiable Binarization)是一种使用可微分二值图来实时文字 #### DataLoader work is killed by signal: Segmentation fault. 可以参考社区[issue](https://github.com/pytorch/pytorch/issues/54752),调整num_workers参数。 -# DB模型PyTorch离线推理指导 - - -- [概述](#ZH-CN_TOPIC_0000001172161501) - - - [输入输出数据](#section540883920406) - -- [推理环境准备](#ZH-CN_TOPIC_0000001126281702) - -- [快速上手](#ZH-CN_TOPIC_0000001126281700) - - - [获取源码](#section4622531142816) - - [准备数据集](#section183221994411) - - [模型推理](#section741711594517) - -- [模型推理性能&精度](#ZH-CN_TOPIC_0000001172201573) - - ****** - - - -# 概述 - -在基于分割的文本检测网络中,最终的二值化map都是使用的固定阈值来获取,并且阈值不同对性能影响较大。而在DB中会对每一个像素点进行自适应二值化,二值化阈值由网络学习得到,彻底将二值化这一步骤加入到网络里一起训练,这样最终的输出图对于阈值就会非常鲁棒。 - - -- 参考实现: - - ``` - url=https://github.com/MhLiao/DB - commit_id=4ac194d0357fd102ac871e37986cb8027ecf094e - model_name=DB_for_PyTorch - ``` - - -## 输入输出数据 - -- 输入数据 - - | 输入数据 | 数据类型 | 大小 | 数据排布格式 | - | -------- | -------- | -------------------------- | ------------ | - | input | RGB_FP32 | batchsize x 3 x 736 x 1280 | NCHW | - - -- 输出数据 - - | 输出数据 | 数据类型 | 大小 | 数据排布格式 | - | -------- | -------- | -------------------------- | ------------ | - | output1 | FLOAT32 | batchsize x 1 x 736 x 1280 | ND | - - -# 推理环境准备 - -- 该模型需要以下插件与驱动 - - **表 1** 版本配套表 - - | 配套 | 版本 | 环境准备指导 | - | ------------------------------------------------------------ | ------- | ------------------------------------------------------------ | - | 固件与驱动 | 22.0.2 | [Pytorch框架推理环境准备](https://www.hiascend.com/document/detail/zh/ModelZoo/pytorchframework/pies) | - | CANN | 6.0.RC1 | - | - | Python | 3.7.5 | - | - | PyTorch | 1.6.0 | - | - | 说明:Atlas 300I Duo 推理卡请以CANN版本选择实际固件与驱动版本。 | \ | \ | - - - -# 快速上手 -可参考实现https://gitee.com/ascend/ModelZoo-PyTorch/tree/master/ACL_PyTorch/built-in/ocr/DBNET - -## 获取源码 - -1. 获取源码 - - ```shell - git clone https://github.com/MhLiao/DB - cd DB - git reset 4ac194d0357fd102ac871e37986cb8027ecf094e --hard - patch -p1 < ../db.diff - cd .. - cp -r db_preprocess.py DB - cp -r db_pth2onnx.py DB - cp -r db_postprocess.py DB - cd DB - - ``` - -2. 安装依赖 - - ``` - pip3 install -r requirements.txt - ``` - -## 准备数据集 - -1. 获取原始数据集 - - 本模型支持icdar2015验证集。用户需自行获取数据集解压并上传数据集到DB/datasets路径下。目录结构如下: - - ``` - datasets/icdar2015/ - ├── test_gts - ├── test_images - ├── test_list.txt - ├── train_gts - └── train_list.txt - ``` - -2. 数据预处理,将原始数据集转换为模型输入的数据。 - - 执行db_preprocess.py脚本,完成预处理 - - ```shell - python3 ./db_preprocess.py --image_src_path=./datasets/icdar2015/test_images --bin_file_path=./prep_dataset - ``` - - 结果存在 ./prep_dataset 中 - - -## 模型推理 - -1. 模型转换。 - - 使用PyTorch将模型权重文件.pth转换为.onnx文件,再使用ATC工具将.onnx文件转为离线推理模型文件.om文件。 - - 1. 获取权重文件。 - - 获取DB在线推理完成的权重文件MLT-Pretrain-Resnet50 - - 2. 导出onnx文件。 - - 1. 使用db_pth2onnx.py导出onnx文件 - - ```shell - python3 ./db_pth2onnx.py experiments/seg_detector/ic15_resnet50_deform_thre.yaml --resume ./MLT-Pretrain-Resnet50 - ``` - - 获得dbnet.onnx文件 - - 3. 使用ATC工具将ONNX模型转OM模型。 - - 1. 配置环境变量。 - - ```sh - source /usr/local/Ascend/ascend-toolkit/set_env.sh - ``` - - 2. 执行命令查看芯片名称($\{chip\_name\})。 - - ```sh - npu-smi info - ``` - - 3. 执行ATC命令。 - - ```sh - atc --framework=5 --model=./dbnet.onnx --input_format=NCHW --input_shape="actual_input_1:${bs},3,736,1280" --output=db_bs${bs} --log=error --soc_version=Ascend${chip_name} - ``` - - 运行成功后生成***db_bs${bs}.om***模型文件。 - - - 参数说明 - - - --model:为ONNX模型文件。 - - - --framework:5代表ONNX模型。 - - - --output:输出的OM模型。 - - - --input\_format:输入数据的格式。 - - - --input\_shape:输入数据的shape。 - - - --log:日志级别。--soc\_version:处理器型号。 - - - -2. 开始推理验证 - - 1. 安装ais_bench推理工具。 - - 请访问[ais_bench推理工具](https://gitee.com/ascend/tools/tree/master/ais-bench_workload/tool/ais_bench)代码仓,根据readme文档进行工具安装。 - - 2. 执行推理。 - - ```shell - python3 -m ais_bench --model ./db_bs1.om --input ./prep_dataset --output ./ --output_dirname result --device 0 - ``` - - - 参数说明: - - - --model:模型 - - --input:数据位置 - - --output:结果存的路径 - - --output_dirname: 结果存的文件夹 - - 推理后的输出默认在当前目录result下。 - - - 3. 精度验证。 - - 结果保存在result_bs1.json - - ```shell - python3 ./db_postprocess.py experiments/seg_detector/ic15_resnet50_deform_thre.yaml --bin_data_path ./result --box_thresh 0.6 > result_bs1.json - ``` - - - 参数说明: - - - ./result:为生成推理结果所在路 - - result_bs1.json:为精度生成结果文件 - - 4. 性能验证 - - 可使用ais_bench推理工具的纯推理模式验证不同batch_size的om模型的性能,参考命令如下: - - ```shell - python3 -m ais_bench --model=db_bs${bs}.om --loop=20 --batchsize=${bs} - ``` - - - 参数说明: - - --model:om模型 - -# 模型推理性能&精度 - -调用ACL接口推理计算,性能参考下列数据。 - -| 芯片型号 | Batch Size | 数据集 | 精度 | -| :------: | :--------: | :-------: | :--: | -| Atlas | 1 | icdar2015 | 0.896 | - # 公网地址说明 代码涉及公网地址参考 public_address_statement.md diff --git a/PyTorch/built-in/nlp/Bert_Chinese_ID3433_for_PyTorch/README.md b/PyTorch/built-in/nlp/Bert_Chinese_ID3433_for_PyTorch/README.md index 2cf7667f17..e84bbbcbf8 100644 --- a/PyTorch/built-in/nlp/Bert_Chinese_ID3433_for_PyTorch/README.md +++ b/PyTorch/built-in/nlp/Bert_Chinese_ID3433_for_PyTorch/README.md @@ -307,270 +307,6 @@ BERT的全称是Bidirectional Encoder Representation from Transformers,即双 A:export WANDB_DISABLED=1 - -# Bert_Base_Chinese模型-推理指导 - - 最新的推理指导参考[Bert_Base_Chinese模型-推理指导](https://gitee.com/ascend/ModelZoo-PyTorch/blob/master/ACL_PyTorch/built-in/nlp/Bert_Base_Chinese_for_Pytorch/README.md) - -- [概述](#ZH-CN_TOPIC_0000001172161501) - - - [输入输出数据](#section540883920406) - -- [推理环境准备](#ZH-CN_TOPIC_0000001126281702) - -- [快速上手](#ZH-CN_TOPIC_0000001126281700) - - - [获取源码](#section4622531142816) - - [准备数据集](#section183221994411) - - [模型推理](#section741711594517) - -- [模型推理性能&精度](#ZH-CN_TOPIC_0000001172201573) - -- [其他下游任务](#ZH-CN_TOPIC_0000001126121892) - - -## 概述 - -`BERT`来自 Google 的论文`Pre-training of Deep Bidirectional Transformers for Language Understanding`,`BERT` 是`Bidirectional Encoder Representations from Transformers`的首字母缩写,整体是一个自编码语言模型。`Bert_Base_Chinese`是`BERT`模型在中文语料上训练得到的模型。 - - ```shell - url=https://huggingface.co/bert-base-chinese - commit_id=38fda776740d17609554e879e3ac7b9837bdb5ee - model_name=Bert_Base_Chinese - ``` - -### 输入输出数据 - -- 输入数据 - - | 输入数据 | 数据类型 | 大小 | 数据排布格式 | - | -------- | -------- | ------------------------- | ------------ | - | input_ids | INT64 | batchsize x seq_len | ND | - | attention_mask | INT64 | batchsize x seq_len | ND | - | token_type_ids | INT64 | batchsize x seq_len | ND | - -- 输出数据 - - | 输出数据 | 大小 | 数据类型 | 数据排布格式 | - | -------- | -------- | -------- | ------------ | - | output | batch_size x class | FLOAT32 | ND | - - -## 推理环境准备\[所有版本\] - -- 该模型需要以下插件与驱动 - - **表 1** 版本配套表 - -| 配套 | 版本 | 环境准备指导 | -| ------------------------------------------------------------ | ------- | ------------------------------------------------------------ | -| 固件与驱动 | 1.0.17 | [PyTorch框架推理环境准备](https://www.hiascend.com/document/detail/zh/ModelZoo/pytorchframework/pies) | -| CANN | 6.0.RC1 | - | -| Python | 3.7.5 | - | -| PyTorch | 1.5.0+ | - | -| 说明:Atlas 300I Duo 推理卡请以CANN版本选择实际固件与驱动版本。 | \ | \ | - -## 快速上手 -可参考实现https://gitee.com/ascend/ModelZoo-PyTorch/tree/master/ACL_PyTorch/built-in/nlp/Bert_Base_Chinese_for_Pytorch - -### 获取源码 - -1. 获取源码。 - - ``` - git clone https://gitee.com/ascend/ModelZoo-PyTorch.git # 克隆仓库的代码 - git checkout master # 切换到对应分支 - cd /ModelZoo-PyTorch/ACL_PyTorch/built-in/nlp/Bert_Base_Chinese_for_Pytorch # 切换到模型的代码仓目录 - ``` - -2. 安装依赖。 - - ``` - pip3 install -r requirements_for_infer.txt - git clone https://gitee.com/Ronnie_zheng/MagicONNX.git MagicONNX - cd MagicONNX && git checkout dev - pip3 install . && cd .. - ``` - -2. 获取开源代码仓。 - 在已下载的源码包根目录下,执行如下命令。 - - ```shell - GIT_LFS_SKIP_SMUDGE=1 git clone https://huggingface.co/bert-base-chinese - ``` - -### 准备数据集 -1. 获取原始数据集。 - - 如果你想重新处理zhwiki的原始数据,可按照以下步骤操作。 - - 下载zhwiki原始数据: - - ``` - wget https://dumps.wikimedia.org/zhwiki/latest/zhwiki-latest-pages-articles.xml.bz2 --no-check-certificate - ``` - - 解压得到zhwiki-latest-pages-articles.xml - - ``` - bzip2 -dk zhwiki-latest-pages-articles.xml.bz2 - ``` - - 下载预处理脚本: - - ```shell - wget https://github.com/natasha/corus/raw/master/corus/third/WikiExtractor.py - ``` - - 使用WikiExtractor.py提取文本,其中extracted/wiki_zh为保存路径,建议不要修改: - - ``` - python3 WikiExtractor.py zhwiki-latest-pages-articles.xml -b 100M -o extracted/wiki_zh - ``` - - 将多个文档整合为一个txt文件,在本工程根目录下执行 - - ``` - python3 WikicorpusTextFormatting.py --extracted_files_path extracted/wiki_zh --output_file zhwiki-latest-pages-articles.txt - ``` - - 最终生成的文件名为zhwiki-latest-pages-articles.txt (也可直接采用处理好的文件) - - 从中分离出验证集: - - ```shell - python3 split_dataset.py zhwiki-latest-pages-articles.txt zhwiki-latest-pages-articles_validation.txt - ``` - -2. 数据预处理。 - - 数据预处理将原始数据集转换为模型输入的数据。 - - 执行preprocess.py脚本,完成预处理。 - - ```shell - # 输入参数:${input_path} ${model_dir} ${save_dir} ${seq_length} - python3 preprocess.py ./zhwiki-latest-pages-articles_validation.txt ./bert-base-chinese ./input_data/ 384 - ``` - - - 参数说明:第一个参数为zhwiki数据集分割得到验证集文件路径,第二个参数为源码路径(包含模型配置文件等),第三个参数为输出预处理数据路径,第四个参数为sequence长度。 - -### 模型推理 - -1. 模型转换 - - 1. 获取权重文件 - - 获取权重文件并转换成cpu适配权重替换`bert-base-chinese`目录下的文件: - - ```shell - mv pytorch_model.bin bert-base-chinese - ``` - - 2. 导出onnx文件 - - ```shell - # 输入参数:${model_dir} ${output_path} ${seq_length} - python3 pth2onnx.py ./bert-base-chinese ./bert_base_chinese.onnx 384 - ``` - - - 输入参数说明:第一个参数为源码仓路径(包含配置文件等),第二个参数为输出onnx文件路径,第三个参数为sequence长度。 - - 3. 优化onnx文件 - - ```shell - # 修改优化模型:${bs}:[1, 4, 8, 16, 32, 64],${seq_len}:384 - python3 -m onnxsim ./bert_base_chinese.onnx ./bert_base_chinese_bs${bs}.onnx --input-shape "input_ids:${bs},${seq_len}" "attention_mask:${bs},${seq_len}" "token_type_ids:${bs},${seq_len}" - python3 fix_onnx.py bert_base_chinese_bs${bs}.onnx bert_base_chinese_bs${bs}_fix.onnx - ``` - - 4. 使用ATC工具将ONNX模型转OM模型。 - - 1. 配置环境变量。 - - ``` - source /usr/local/Ascend/ascend-toolkit/set_env.sh - ``` - - > **说明:** - >该脚本中环境变量仅供参考,请以实际安装环境配置环境变量。详细介绍请参见《[CANN 开发辅助工具指南 \(推理\)](https://support.huawei.com/enterprise/zh/ascend-computing/cann-pid-251168373?category=developer-documents&subcategory=auxiliary-development-tools)》。 - - 2. 执行命令查看芯片名称($\{chip\_name\})。 - - ``` - npu-smi info - ``` - - 3. 执行ATC命令。 - ```shell - # bs:[1, 4, 8, 16, 32, 64] - atc --model=./bert_base_chinese_bs${bs}_fix.onnx --framework=5 --output=./bert_base_chinese_bs${bs} --input_format=ND --log=debug --soc_version=${chip_name} --optypelist_for_implmode="Gelu" --op_select_implmode=high_performance - ``` - - - 参数说明: - - - --model:为ONNX模型文件。 - - --framework:5代表ONNX模型。 - - --output:输出的OM模型。 - - --input\_format:输入数据的格式。 - - --input\_shape:输入数据的shape。 - - --log:日志级别。 - - --soc\_version:处理器型号。 - - 运行成功后生成bert_base_chinese_bs${bs}.om模型文件。 - -2. 开始推理验证。 - - 1. 安装ais_bench推理工具 - - 请访问[ais_bench推理工具](https://gitee.com/ascend/tools/tree/master/ais-bench_workload/tool/ais_bench)代码仓,根据readme文档进行工具安装。 - - 2. 执行推理。 - - ``` - # 以bs1模型推理为例 - mkdir -p ./output_data/bs1 - python3 -m ais_bench --model ./bert_base_chinese_bs1.om --input ./input_data/input_ids,./input_data/attention_mask,./input_data/token_type_ids --output ./output_data/ --output_dirname bs1 --batchsize 1 --device 1 - ``` - - 参数说明: - - - --model:om文件路径。 - - --input:输入文件。 - - --output:输出目录。 - - --output_dirname:输出文件名。 - - --device:NPU设备编号。 - - --outfmt: 输出数据格式。 - - --batchsize:推理模型对应的batchsize。 - - - 推理后的输出默认在当前目录outputs/bs1下。 - - 3. 精度验证。 - - 调用postprocess.py脚本与数据集标签比对,获得Accuracy数据。 - - ``` - # 以bs1模型推理为例 - # 输入参数:${result_dir} ${gt_dir} ${seq_length} - python3 postprocess.py ./output_data/bs1 ./input_data/labels 384 - ``` - - - 参数说明:第一个参数为推理结果路径,第二个参数为gt labe所在路径,第三个参数为sequence长度。 - -## 模型推理性能&精度 - -精度: - -| 模型 | NPU离线推理精度 | -| :---------------: | :-------------: | -| Bert-Base-Chinese | Acc: 59.07% | - - -## 其他下游任务 - -+ [序列标注(Sequence Labeling)](https://gitee.com/ascend/ModelZoo-PyTorch/blob/master/ACL_PyTorch/built-in/nlp/Bert_Base_Chinese_for_Pytorch/downstream_tasks/sequence_labeling/README.md) - - # 公网地址说明 代码涉及公网地址参考 public_address_statement.md diff --git a/PyTorch/contrib/cv/classification/HRNet_ID1780_for_PyTorch/README.md b/PyTorch/contrib/cv/classification/HRNet_ID1780_for_PyTorch/README.md index f58977db7f..0bd63b2a75 100644 --- a/PyTorch/contrib/cv/classification/HRNet_ID1780_for_PyTorch/README.md +++ b/PyTorch/contrib/cv/classification/HRNet_ID1780_for_PyTorch/README.md @@ -202,243 +202,6 @@ HRNet,是一个用于图像分类的高分辨网络。通过并行连接高分 无。 - - - -# HRNet模型-推理指导 - - -- [概述](#ZH-CN_TOPIC_0000001172161501) - - - [输入输出数据](#section540883920406) - - - -- [推理环境准备](#ZH-CN_TOPIC_0000001126281702) - -- [快速上手](#ZH-CN_TOPIC_0000001126281700) - - - [获取源码](#section4622531142816) - - [准备数据集](#section183221994411) - - [模型推理](#section741711594517) - -- [模型推理性能&精度](#ZH-CN_TOPIC_0000001172201573) - - - - -# 概述 - -HRNet(High-Resolution Net)是针对2D人体姿态估计(Human Pose Estimation或Keypoint Detection)任务提出的,并且该网络主要是针对单一个体的姿态评估(即输入网络的图像中应该只有一个人体目标)。 -- 参考实现: - - ``` - url=https://github.com/HRNet/HRNet-Image-Classification - commit_id=f130a24bf09b7f23ebd0075271f76c4a188093b2 - code_path=https://gitee.com/ascend/ModelZoo-PyTorch/tree/master/ACL_PyTorch/contrib/cv/classfication/HRNet-Image-Classification - model_name=HRNet - ``` - - -## 输入输出数据 - -- 输入数据 - - | 输入数据 | 数据类型 | 大小 | 数据排布格式 | - | -------- | -------- | ------------------------- | ------------ | - | input | RGB_FP32 | batchsize x 3 x 224 x 224 | NCHW | - - -- 输出数据 - - | 输出数据 | 数据类型 | 大小 | 数据排布格式 | - | -------- |------------------| -------- | ------------ | - | output1 | FLOAT32 | batchsize x 1000 | ND | - - - -# 推理环境准备 - -- 该模型需要以下插件与驱动 - - **表 1** 版本配套表 - - | 配套 | 版本 | 环境准备指导 | - |---------| ------- | ------------------------------------------------------------ | - | 固件与驱动 | 22.0.3 | [Pytorch框架推理环境准备](https://www.hiascend.com/document/detail/zh/ModelZoo/pytorchframework/pies) | - | CANN | 6.0.RC1 | - | - | Python | 3.7.5 | - | - | PyTorch | 1.11.0 | - | - | 说明:Atlas 300I Duo 推理卡请以CANN版本选择实际固件与驱动版本。 | \ | \ | - - - -# 快速上手 - -## 获取源码 - -1. 获取源码。 - - ``` - git clone https://github.com/HRNet/HRNet-Image-Classification.git - ``` - -2. 安装依赖。 - - ``` - pip3 install -r requirement_for_infer.txt - ``` - -## 准备数据集 - -1. 获取原始数据集。(解压命令参考tar –xvf \*.tar与 unzip \*.zip) - - - 该模型使用[ImageNet官网](http://www.image-net.org/)的5万张验证集进行测试,图片与标签分别存放在/local/HRNet/imagenet/val与/local/HRNet/imagenet/val_label.txt。 - ``` - imagenet - ├── val_label.txt //验证集标注信息 - └── val // 验证集文件夹 - ``` - -2. 数据预处理,将原始数据集转换为模型输入的数据。 - - 执行imagenet_torch_preprocess.py脚本,完成预处理。 - - ``` - python3 imagenet_torch_preprocess.py hrnet /local/HRNet/imagenet/val ./prep_dataset - - ``` - - - 参数说明: - - /local/HRNet/imagenet/val,原始数据验证集(.jpeg)所在路径。 - - ./prep_dataset,输出的二进制文件(.bin)所在路径。 - - - -## 模型推理 - -1. 模型转换。 - - 使用PyTorch将模型权重文件.pth转换为.onnx文件,再使用ATC工具将.onnx文件转为离线推理模型文件.om文件。 - - 1. 获取权重文件。 - - 使用在线推理完成后的权重文件 - - 2. 导出onnx文件。 - - 1. 使用hrnet_pth2onnx.py脚本。 - - 运行hrnet_pth2onnx.py脚本。 - - ``` - python3 hrnet_pth2onnx.py --cfg ./HRNet-Image-Classification/experiments/cls_hrnet_w18_sgd_lr5e-2_wd1e-4_bs32_x100.yaml --input model_best.pth.tar --output hrnet_w18.onnx - ``` - - 获得hrnet_w18.onnx文件。 - - 3. 使用ATC工具将ONNX模型转OM模型。 - - 1. 配置环境变量。 - - ``` - source /usr/local/Ascend/ascend-toolkit/set_env.sh - ``` - - 2. 执行命令查看芯片名称($\{chip\_name\})。 - - ``` - npu-smi info - ``` - - 3. 执行ATC命令。 - - ``` - atc --framework=5 --model=./hrnet_w18.onnx --input_format=NCHW --input_shape="image:{batch size},3,224,224" --output=hrnet_bs{batch size} --log=debug --soc_version=${chip_name} - 示例 - atc --framework=5 --model=./hrnet_w18.onnx --input_format=NCHW --input_shape="image:1,3,224,224" --output=hrnet_bs1 --log=debug --soc_version=${chip_name} - ``` - - - 参数说明: - - - --model:为ONNX模型文件。 - - --framework:5代表ONNX模型。 - - --output:输出的OM模型。 - - --input\_format:输入数据的格式。 - - --input\_shape:输入数据的shape。 - - --log:日志级别。 - - --soc\_version:处理器型号。 - - 运行成功后生成hrnet_bs1.om模型文件,batch size为1、4、8、32、64的修改对应的batch size的位置即可。 - -2. 开始推理验证。 - - 1. 安装ais_bench推理工具。 - - 请访问[ais_bench推理工具](https://gitee.com/ascend/tools/tree/master/ais-bench_workload/tool/ais_infer)代码仓,根据readme文档进行工具安装。 - - 2. 执行推理。 - - ``` - python3 -m ais_bench --model ./hrnet_bs{batch size}.om --input ./prep_dataset/ --output ./output --output_dirname subdir --outfmt 'TXT' --batchsize {batch size} - 示例 - python3 -m ais_bench --model ./hrnet_bs1.om --input ./prep_dataset/ --output ./output --output_dirname subdir --outfmt 'TXT' --batchsize 1 - ``` - - - 参数说明: - - - model:需要推理om模型的路径。 - - input:模型需要的输入bin文件夹路径。 - - output:推理结果输出路径。 - - outfmt:输出数据的格式。 - - output_dirname:推理结果输出子文件夹。 - - 推理后的输出默认在当前目录output的subdir下。 - - 3. 精度验证。 - - 调用imagenet_acc_eval.py脚本推理结果与label比对,可以获得Accuracy Top5数据,结果保存在result.json中。 - - ``` - python3.7 imagenet_acc_eval.py ./output/subdir /local/HRNet/imagenet/val_label.txt ./ result.json - ``` - - - 参数说明: - - - ./output/subdir/:为生成推理结果所在路径 - - - /local/HRNet/imagenet/val_label.txt:为标签数据所在路径 - - - ./ result.json:结果保存路径 - - 4. 性能验证。 - - 可使用ais_bench推理工具的纯推理模式验证不同batch_size的om模型的性能,参考命令如下: - - ``` - python3 -m ais_bench --model=./hrnet_bs{batch size}.om --loop=1000 --batchsize={batch size} - 示例 - python3 -m ais_bench --model=./hrnet_bs1.om --loop=1000 --batchsize=1 - ``` - - - 参数说明: - - --model:需要验证om模型所在路径 - - --batchsize:验证模型的batch size,按实际进行修改 - - - -# 模型推理性能&精度 - -调用ACL接口推理计算,性能参考下列数据。 - -| 芯片型号 | Batch Size | 数据集 | 精度 | -| --------- |------------| ---------- |-----------------------| -| Atlas | 1 | ImageNet | 76.02/Top1 91.72/Top5 | - - # 公网地址说明 代码涉及公网地址参考 public_address_statement.md diff --git a/PyTorch/contrib/cv/classification/InceptionV3_ID1596_for_PyTorch/README.md b/PyTorch/contrib/cv/classification/InceptionV3_ID1596_for_PyTorch/README.md index 3c1d2884dc..431e396ba0 100644 --- a/PyTorch/contrib/cv/classification/InceptionV3_ID1596_for_PyTorch/README.md +++ b/PyTorch/contrib/cv/classification/InceptionV3_ID1596_for_PyTorch/README.md @@ -205,206 +205,6 @@ GoogLeNet对网络中的传统卷积层进行了修改,提出了被称为Incep 无。 -# InceptionV3 模型推理指导 - -- [概述](#概述) - - [输入输出数据](#输入输出数据) -- [推理环境](#推理环境) -- [快速上手](#快速上手) - - [获取源码](#获取源码) - - [准备数据集](#准备数据集) - - [模型转换](#模型转换) - - [推理验证](#推理验证) -- [性能&精度](#性能精度) - ----- -# 概述 - -InceptionV3 模型是谷歌 Inception 系列里面的第三代模型,在 InceptionV2 模型的基础上,InceptionV3 通过分解卷积和新的正则化方法,极大地减少了计算开销。 - -+ 论文 - [Rethinking the Inception Architecture for Computer Vision](https://arxiv.org/abs/1512.00567) - Christian Szegedy, Vincent Vanhoucke, Sergey Ioffe, Jonathon Shlens, Zbigniew Wojna - -+ 参考实现: - https://github.com/pytorch/vision/blob/master/torchvision/models/inception.py - -## 输入输出数据 -+ 模型输入 - | input-name | data-type | data-format |input-shape | - | ---------- | --------- | ----------- | ---------- | - | actual_input_1 | FLOAT32 | NCHW | bs x 3 x 299 x 299 | - -+ 模型输出 - | output-name | data-type | data-format |output-shape | - | ----------- | ---------- | ----------- | ----------- | - | output1 | FLOAT32 | ND | bs x 1000 | - - ----- -# 推理环境 - -- 该模型推理所需配套的软件如下: - - | 配套 | 版本 | 环境准备指导 | - | --------- | ------- | ---------- | - | 固件与驱动 | 1.0.17 | [Pytorch框架推理环境准备](https://www.hiascend.com/document/detail/zh/ModelZoo/pytorchframework/pies) | - | CANN | 6.0.RC1 | - | - | Python | 3.7.5 | - | - - 说明:请根据推理卡型号与 CANN 版本选择相匹配的固件与驱动版本。 - - ----- -# 快速上手 -具体可参考实现https://gitee.com/ascend/ModelZoo-PyTorch/tree/master/ACL_PyTorch/built-in/cv/InceptionV3_for_Pytorch -在infer_atc路径下获取推理文件 -## 安装 - -- 安装推理过程所需的依赖 - ```bash - cd infer_atc - pip install -r requirements.txt - ``` - -## 准备数据集 - -1. 获取原始数据集 - 本模型推理项目使用 ILSVRC2012 数据集验证模型精度,请在 [ImageNet官网](https://gitee.com/link?target=http%3A%2F%2Fimage-net.org%2F) 自行下载,并按照以下的目录结构存放图片与标签文件。 - ``` - ├── imageNet/ - ├── val/ - ├──ILSVRC2012_val_00000001.JPEG - ├──ILSVRC2012_val_00000002.JPEG - ├──... - ├── val_label.txt - ``` - - -2. 数据预处理 - 执行前处理脚本将原始数据转换为OM模型输入需要的bin/npy文件。 - ```bash - python inceptionv3_preprocess.py --src_path /opt/npu/imageNet/val --save_path ./prep_dataset - ``` - 参数说明: - + --src_path: 测试图片所在的目录路径 - + --save_path: 存放生成的bin文件的目录路径 - - 运行成功后,每张原始图片都会对应生成一个bin文件存放于 ./prep_dataset 目录下,总计50000个bin文件。 - - -## 模型转换 - -1. PyTroch 模型转 ONNX 模型 - - 使用在线推理的权重存放到当前目录,可参考命令: - - 然后参考执行以下命令生成 ONNX 模型: - ```bash - python inceptionv3_pth2onnx.py --checkpoint ./checkpoint.pth --onnx ./inceptionv3.onnx - ``` - 参数说明: - + --checkpoint: 预训练权重文件的路径。若不指定,则会通过在线方式获取。 - + --onnx: 生成ONNX模型的保存路径 - -2. ONNX 模型转 OM 模型 - - step1: 查看NPU芯片名称 \${chip_name} - ```bash - npu-smi info - ``` - - step2: ONNX 模型转 OM 模型 - ```bash - # 配置环境变量 - source /usr/local/Ascend/ascend-toolkit/set_env.sh - - chip_name=${chip_name} # 根据 step1 的结果设值 - bs=128 # 根据需要自行设置 - - - # 执行 ATC 进行模型转换 - atc --model=./inceptionv3.onnx \ - --framework=5 \ - --output=inceptionv3_bs${bs} \ - --input_format=NCHW \ - --input_shape="actual_input_1:${bs},3,299,299" \ - --log=error \ - --soc_version=Ascend${chip_name} \ - --insert_op_conf=inceptionv3_aipp.cfg - ``` - - 参数说明: - + --framework: 5代表ONNX模型 - + --model: ONNX模型路径 - + --input_shape: 模型输入数据的shape - + --input_format: 输入数据的排布格式 - + --output: OM模型路径,无需加后缀 - + --log:日志级别 - + --soc_version: 处理器型号 - - -## 推理验证 - -1. 对数据集推理 - 安装ais_bench推理工具,请访问[ais_bench推理工具](https://gitee.com/ascend/tools/tree/master/ais-bench_workload/tool/ais_bench)代码仓,根据readme文档进行工具安装。完成安装后,执行以下命令预处理后的数据进行推理。 - ```bash - python -m ais_bench \ - --model inceptionv3_bs${bs}.om \ - --input ./prep_dataset/ \ - --output ./ \ - --output_dirname ./result/ \ - --outfmt TXT \ - --batchsize ${bs} - ``` - 参数说明: - + --model OM模型路径 - + --input 存放预处理后数据的目录路径 - + --output 用于存放推理结果的父目录路径 - + --output_dirname 用于存放推理结果的子目录名,位于--output指定的目录下 - + --outfmt 推理结果文件的保存格式 - + --batchsize 模型每次输入bin文件的数量 - - -2. 性能验证 - 对于性能的测试,需要注意以下三点: - + 测试前,请通过`npu-smi info`命令查看NPU设备状态,请务必在NPU设备空闲的状态下进行性能测试。 - + 为了避免测试过程因持续时间太长而受到干扰,建议通过纯推理的方式进行性能测试。 - + 使用吞吐率作为性能指标,单位为 fps,反映模型在单位时间(1秒)内处理的样本数。 - ```bash - python -m ais_bench --model inceptionv3_bs${bs}.om --batchsize ${bs} - ``` - 执行完纯推理命令,程序会打印出与性能相关的指标,找到以关键字 **[INFO] throughput** 开头的一行,行尾的数字即为 OM 模型的吞吐率。 - -3. 精度验证 - - 执行后处理脚本,根据推理结果计算OM模型的精度: - ```bash - python inceptionv3_postprocess.py \ - --infer_results ./result/ \ - --anno_file /opt/npu/imageNet/val_label.txt \ - --metrics_json metrics.json - ``` - 参数说明: - + --infer_results: 存放推理结果的目录路径 - + --anno_file: 标签文件路径 - + --metrics_json: 指定一个json文件用于保存指标信息。 - - 运行成功后,程序会将各top1~top5的正确率记录在 metrics.json 文件中,可执行以下命令查看: - ``` - python -m json.tool metrics.json - ``` - - ----- -# 性能&精度 - -在Atlas设备上,OM模型的精度为 **{Top1@Acc=77.31%, Top5@Acc=93.46%}**。 - -| 芯片型号 | BatchSize | 数据集 | 精度 | -| --------- | --------- | ----------- | --------------- | -|Atlas| 128 | ILSVRC2012 | Top1Acc=78.06% Top5@Acc=93.81% - # 公网地址说明 代码涉及公网地址参考 public_address_statement.md diff --git a/PyTorch/contrib/nlp/albert_ID0335_for_PyTorch/README.md b/PyTorch/contrib/nlp/albert_ID0335_for_PyTorch/README.md index 2a99178c9a..07de64d62b 100644 --- a/PyTorch/contrib/nlp/albert_ID0335_for_PyTorch/README.md +++ b/PyTorch/contrib/nlp/albert_ID0335_for_PyTorch/README.md @@ -200,285 +200,6 @@ Albert是自然语言处理模型,基于Bert模型修改得到。相比于Bert 无。 - - -# Albert模型-推理指导 - -- [概述](#ZH-CN_TOPIC_0000001172161501) - - - [输入输出数据](#section540883920406) - -- [推理环境准备](#ZH-CN_TOPIC_0000001126281702) - -- [快速上手](#ZH-CN_TOPIC_0000001126281700) - - - [获取源码](#section4622531142816) - - [准备数据集](#section183221994411) - - [模型推理](#section741711594517) - -- [模型推理性能&精度](#ZH-CN_TOPIC_0000001172201573) - -- [配套环境](#ZH-CN_TOPIC_0000001126121892) - - -# 概述 - -ALBERT是BERT 的“改进版”,主要通过通过Factorized embedding parameterization和Cross-layer parameter sharing两大机制减少参数量,得到一个占用较小的模型,对实际落地有较大的意义,不过由于其主要还是减少参数,不影响推理速度。 - - ``` - url=https://github.com/lonePatient/albert_pytorch - branch=master - commit_id=46de9ec - ``` - -## 输入输出数据 - -- 输入数据 - - | 输入数据 | 数据类型 | 大小 | 数据排布格式 | - | -------- | -------- | ------------------------- | ------------ | - | input_ids | INT64 | batchsize x seq_len | ND | - | attention_mask | INT64 | batchsize x seq_len | ND | - | token_type_ids | INT64 | batchsize x seq_len | ND | - - 说明:该模型默认的seq_len为128 - -- 输出数据 - - | 输出数据 | 大小 | 数据类型 | 数据排布格式 | - | -------- | -------- | -------- | ------------ | - | output | batch_size x class | FLOAT32 | ND | - - -# 推理环境准备\[所有版本\] - -- 该模型需要以下插件与驱动 - - **表 1** 版本配套表 - -| 配套 | 版本 | 环境准备指导 | -| ------------------------------------------------------------ | ------- | ------------------------------------------------------------ | -| 固件与驱动 | 1.0.17 | [Pytorch框架推理环境准备](https://www.hiascend.com/document/detail/zh/ModelZoo/pytorchframework/pies) | -| CANN | 6.0.RC1 | - | -| Python | 3.7.5 | - | -| PyTorch | 1.11.0 | - | -| 说明:Atlas 300I Duo 推理卡请以CANN版本选择实际固件与驱动版本。 | \ | \ | - -# 快速上手 -可参考实现 -https://gitee.com/ascend/ModelZoo-PyTorch/tree/master/ACL_PyTorch/contrib/nlp/albert - -## 获取源码 - -1. 获取源码。 - - ``` - git clone https://gitee.com/ascend/ModelZoo-PyTorch.git # 克隆仓库的代码 - git checkout master # 切换到对应分支 - cd ACL_PyTorch/contrib/nlp/albert # 切换到模型的代码仓目录 - ``` - -2. 安装依赖。 - - ``` - pip3 install -r requirements_for_infer.txt - git clone https://gitee.com/ascend/msadvisor && cd msadvisor && git checkout master - cd auto-optimizer && python3 -m pip install . - cd ../.. - ``` - -2. 获取开源代码仓。 - 在已下载的源码包根目录下,执行如下命令。 - - ``` - git clone https://github.com/lonePatient/albert_pytorch.git - cd albert_pytorch - git checkout 46de9ec - patch -p1 < ../albert.patch - cd ../ - ``` - -## 准备数据集 -1. 获取原始数据集。 - - 本模型采用[SST-2数据集](https://dl.fbaipublicfiles.com/glue/data/SST-2.zip),解压到 `albert_pytorch/dataset/SST-2`文件夹下 - - 数据目录结构请参考: - ``` - ├──SST-2 - ├──original/ - ├──dev.tsv - ├──train.tsv - ├──test.tsv - ``` - -2. 数据预处理。 - - 数据预处理将原始数据集转换为模型输入的数据。该模型数据预处理需要加载模型,所以需要先下载权重文件: - - 获取预训练权重文件,并解压到albert_pytorch/prev_trained_model/albert_base_v2。 - - 下载[训练好的模型](https://pan.baidu.com/s/1G5QSVnr2c1eZkDBo1W-uRA )(提取码:mehp )并解压到albert_pytorch/outputs/SST-2。 - - 执行“Albert_preprocess.py”脚本,完成预处理。 - - ``` - python3 Albert_preprocess.py --pth_dir=./albert_pytorch/outputs/SST-2/ --data_dir=./albert_pytorch/dataset/SST-2/ --save_dir ./preprocessed_data_seq128 --max_seq_length 128 - ``` - - 参数说明: - - --pth_dir: 模型权重所在路径 - - --data_dir:原始数据集所在路径 - - --save_dir: 预处理数据保存路径, 其中gt_label保存在 `${save_dir}/label.npy` - - --max_seq_length: 对应的seq长度,默认为128,支持:16/32/64/128 - - -## 模型推理 - -1. 模型转换。 - - 使用PyTorch将模型权重文件.pth转换为.onnx文件,再使用ATC工具将.onnx文件转为离线推理模型文件.om文件。 - - 1. 获取权重文件。 - - 数据预处理阶段已经完成模型权重下载。 - - 2. 导出onnx文件。 - - 1. 使用脚本导出onnx文件。 - - 运行“Albert_pth2onnx.py”脚本。 - - ``` - # pth转换为ONNX,此处以seq128/bs32为例 - python3 ./Albert_pth2onnx.py --batch_size=32 --pth_dir=./albert_pytorch/outputs/SST-2/ --data_dir=./albert_pytorch/datasets/SST-2/ --onnx_dir=./outputs/ --max_seq_length=128 - ``` - - - 参数说明: - - --batch_size: 导出模型batchsize。 - - --pth_dir:权重所在路径。 - - --data_dir: 数据集所在路径。 - - --onnx_dir: 输出onnx文件所在目录。 - - --max_seq_length: 模型对应seq,默认为128,支持:16/32/64/128。 - - 获得outputs/albert_seq128_bs32.onnx文件。 - - 2. 优化ONNX文件。 - - ``` - # 以seq128/bs32为例 - python3 -m onnxsim ./outputs/albert_seq128_bs32.onnx ./outputs/albert_seq128_bs32_sim.onnx - python3 opt_onnx.py --input_file ./outputs/albert_seq128_bs32_sim.onnx --output_file ./outputs/albert_seq128_bs32_opt.onnx - ``` - - 3. 使用ATC工具将ONNX模型转OM模型。 - - 1. 配置环境变量。 - - ``` - source /usr/local/Ascend/ascend-toolkit/set_env.sh - ``` - - > **说明:** - >该脚本中环境变量仅供参考,请以实际安装环境配置环境变量。详细介绍请参见《[CANN 开发辅助工具指南 \(推理\)](https://support.huawei.com/enterprise/zh/ascend-computing/cann-pid-251168373?category=developer-documents&subcategory=auxiliary-development-tools)》。 - - 2. 执行命令查看芯片名称($\{chip\_name\})。 - - ``` - npu-smi info - ``` - - 3. 执行ATC命令。 - ``` - # 以seq128/bs32为例 - atc --input_format=ND --framework=5 --model=./outputs/albert_seq128_bs32_opt.onnx --output=./outputs/albert_seq128_bs32 --log=error --soc_version=${chip_name} --input_shape="input_ids:32,128;attention_mask:32,128;token_type_ids:32,128" --optypelist_for_implmode="Gelu" --op_select_implmode=high_performance - ``` - - - 参数说明: - - - --model:为ONNX模型文件。 - - --framework:5代表ONNX模型。 - - --output:输出的OM模型。 - - --input\_format:输入数据的格式。 - - --input\_shape:输入数据的shape。 - - --log:日志级别。 - - --soc\_version:处理器型号。 - - --optypelist_for_implmode:需要指定精度模式的算子。 - - --op_select_implmode:特定算子需要采取的精度模式。 - - 运行成功后生成albert_seq128_b32.om模型文件。 - - 对于`seq16`对应的模型,ATC命令有所区别,如下: - - ``` - # 以seq16/bs64为例 - atc --input_format=ND --framework=5 --model=./outputs/albert_seq16_bs64_opt.onnx --output=./outputs/albert_seq16_bs64 --log=error --soc_version=${chip_name} --input_shape="input_ids:64,16;attention_mask:64,16;token_type_ids:64,16" --op_precision_mode=precision.ini - ``` - - - 额外参数说明: - - - --op_precision_mode:算子精度模式配置输入。 - -2. 开始推理验证。 - - 1. 安装ais_bench推理工具。 - - 请访问[ais_bench推理工具](https://gitee.com/ascend/tools/tree/master/ais-bench_workload/tool/ais_bench)代码仓,根据readme文档进行工具安装。 - - 2. 执行推理。 - - ``` - # 以bs32为例 - python3 -m ais_bench --model outputs/albert_seq128_bs32.om --input ./preprocessed_data_seq128/input_ids,./preprocessed_data_seq128/attention_mask,./preprocessed_data_seq128/token_type_ids --output results --output_dirname seq128_bs32 --outfmt NPY --batch_size 32 - ``` - - 参数说明: - - - --model:om文件路径。 - - --input:输入文件。 - - --output:输出目录。 - - --output_dirname:输出文件名。 - - --device:NPU设备编号。 - - --outfmt: 输出数据格式。 - - --batchsize:推理模型对应的batchsize。 - - - 推理后的输出默认在当前目录outputs/seq128_bs32下。 - - 3. 精度验证。 - - 调用Albert_postprocess.py脚本与数据集标签比对,获得Accuracy数据。 - - ``` - python3 Albert_postprocess.py --result_dir results/seq128_bs32 --label_path preprocessed_data_seq128/label.npy - ``` - - - 参数说明: - - --result_dir:生成推理结果所在路径。 - - --label_path:GT label文件所在路径。 - - -# 模型推理性能&精度 - -seq128对应的精度性能如下: - -精度: - -| device | ACC(seq128) | -|---------------------|-------------| -| 基准 | 92.8% | -| 910 | 92.8% | -| 910(batchsize=872) | 91.2% | - # 公网地址说明 代码涉及公网地址参考 public_address_statement.md -- Gitee