文件最后提交记录最后更新时间
!2098 【自研】【BugFix】修改环境变量设置,统一使用内置环境变量-2 【自研】【BugFix】修改环境变量设置,统一使用内置环境变量-2 3 年前
init 4 年前
!6847 [PyTorch离线推理]资料整改,替换芯片名称 Merge pull request !6847 from C17/master 1 年前
init 4 年前
init 4 年前
init 4 年前
!4050 SpeechTransformer整改 * SpeechTransformer 3 年前
!4050 SpeechTransformer整改 * SpeechTransformer 3 年前
!4050 SpeechTransformer整改 * SpeechTransformer 3 年前
!280 【BugFix】【Pytorch离线推理】【ACL接口适配】多个模型acl接口兼容性适配 * 【BugFix】【Pytorch离线推理】【ACL接口适配】多个模型acl接口兼容性适配 * Merge branch 'master' of https://gitee.com/ascend/ModelZoo-PyTorch * Merge branch 'master' of https://gitee.com/ascend/ModelZoo-PyTorch 4 年前
init 4 年前
!4050 SpeechTransformer整改 * SpeechTransformer 3 年前
README.md

Speech-Transformer模型-推理指导

概述

Speech-Transformer 是一种无递归的 encoder-decoder 网络结构,已经在小规模语音识别数据集上的识别工作中显现出了良好的结果。

  • 参考实现:

    url=git clone https://github.com/kaituoxu/Speech-Transformer
    branch=master
    model_name=Speech-Transformer
    

    通过 Git 获取对应 commit_id 的代码方法如下:

    git clone {repository_url}        # 克隆仓库的代码
    cd {repository_name}              # 切换到模型的代码仓目录
    git checkout {branch/tag}         # 切换到对应分支
    git reset --hard {commit_id}      # 代码设置到对应的commit_id(可选)
    cd {code_path}                    # 切换到模型代码所在路径,若仓库下只有该模型,则无需切换
    

输入输出数据

encoder

  • 输入数据

    输入数据 数据类型 大小 数据排布格式
    padded_input FLOAT32 1 x 512 x 320 ND
    non_pad_mask FLOAT32 1 x 512 x 1 ND
    slf_attn_mask BOOL 1 x 512 x 512 ND
  • 输出数据

    输出数据 数据类型 大小 数据排布格式
    enc_output FLOAT32 1 x 512 x 512 ND

decoder

  • 输入数据

    输入数据 数据类型 大小 数据排布格式
    ys_in INT64 1 x 128 ND
    encoder_outputs FLOAT32 1 x 512 x 512 ND
    non_pad_mask FLOAT32 1 x 128 x 1 ND
    slf_attn_mask UINT8 1 x 128 x 128 ND
  • 输出数据

    输出数据 数据类型 大小 数据排布格式
    dec_output FLOAT32 1 x 128 x 512 ND

tgt_word_prj

  • 输入数据

    输入数据 数据类型 大小 数据排布格式
    input FLOAT32 1 x 512 ND
  • 输出数据

    输出数据 数据类型 大小 数据排布格式
    output FLOAT32 1 x 4233 ND

推理环境准备[所有版本]

  • 该模型需要以下插件与驱动

    表 1 版本配套表

配套 版本 环境准备指导
固件与驱动 22.0.2 Pytorch框架推理环境准备
CANN 6.0.0 -
Python 3.7.5 -
PyTorch 1.8.0 -

快速上手

获取源码

  1. 获取源码。

    git clone https://github.com/kaituoxu/Speech-Transformer
    cd Speech-Transformer
    patch -p1 < ../SpeechTransformer.patch
    cd ..
    

    将所有文件放在开源仓 Speech-Transformer/egs/aishell 下。

  2. 安装依赖。

    1. 安装依赖包

      cd Speech-Transformer/egs/aishell
      pip3 install -r requirements.txt
      cd ../../../
      
    2. 安装kaldi

      git clone https://github.com/kaldi-asr/kaldi
      

      请根据kaldi/INSTALL文件中的Option 1进行安装。

准备数据集

  1. 获取原始数据集。(解压命令参考tar –xvf *.tar与 unzip *.zip)

    1. 下载data_aishell

      OpenSLR 下载数据集,解压 data_aishell.tgz,然后再解压 data_aishell/wav 目录下面所有的文件。

    2. 提取特征

      cd Speech-Transformer/tools
      
      # 指向kaldi的源码
      make KALDI=../../kaldi
      
      cd ../egs/aishell
      
      # 修改run.sh中data变量指向aishell数据集,例如,data_aishell放在/home目录下面,则修改data=/home
      bash run.sh
      

模型推理

  1. 模型转换。

    使用 PyTorch 将 .pth 模型权重文件转换为 .onnx 文件,再使用 ATC 工具将 .onnx 文件转为离线推理模型文件 .om 文件。

    1. 获取权重文件。

      wget https://ascend-repo-modelzoo.obs.cn-east-2.myhuaweicloud.com/model/1_PyTorch_PTH/Speech-transformer/PTH/final.pth.tar
      
    2. 导出 onnx 文件。

      bash test/pth2onnx.sh
      

      获得 encoder.onnx、decoder.onnx 和 tgt_word_prj.onnx 文件。

    3. 使用 ATC 工具将 ONNX 模型转 OM 模型。

      1. 配置环境变量。

        source /usr/local/Ascend/ascend-toolkit/set_env.sh
        

        说明: 该脚本中环境变量仅供参考,请以实际安装环境配置环境变量。详细介绍请参见《CANN 开发辅助工具指南 (推理)》。

      2. 执行命令查看芯片名称(${chip_name})。

        npu-smi info
        #该设备芯片名为Ascend310P3 (自行替换)
        回显如下:
            +--------------------------------------------------------------------------------------------+
            | npu-smi 22.0.0                       Version: 22.0.2                                       |
            +-------------------+-----------------+------------------------------------------------------+
            | NPU     Name      | Health          | Power(W)     Temp(C)           Hugepages-Usage(page) |
            | Chip    Device    | Bus-Id          | AICore(%)    Memory-Usage(MB)                        |
            +===================+=================+======================================================+
            | 0       310P3     | OK              | 17.0         56                0    / 0              |
            | 0       0         | 0000:AF:00.0    | 0            934  / 23054                            |
            +===================+=================+======================================================+
        
      3. 执行 ATC 命令。

        bash test/onnx2om.sh
        

        运行成功后生成 encoder.om、decoder.om 和 tgt_word_prj.om 模型文件。

  2. 开始推理验证。

    执行推理、精度验证和性能验证。

    bash test/eval_acc_perf.sh
    

模型推理性能&精度

评测结果:

模型 在线推理pth精度 300I Pro离线推理精度 基准性能 300I Pro性能
Speech-Transformer 9.9 10.8 0.83 fps 1.71 fps

备注:

  1. 模型不支持多 batch

  2. 精度测评脚本包含了精度和性能结果, 结果中 Err 即为精度

  3. 基准性能获取方法

    pip3 install onnxruntime-gpu
    bash test/eval_acc_perf_onnx.sh