编译器安装

首次安装:

pip install -i https://testpypi.python.org/pypi npu_compiler

升级安装:

pip install —upgrade -i https://testpypi.python.org/pypi npu_compiler

模型文件准备

  • 准备TensorFlow生成的PB文件,和其对应的CKPT文件
  • 通过TensorFlow提供的freeze_graph.py将PB与CKPT合并,生成新的PB文件

编译选项

编译之前需要配置config.yaml,具体选项为:

项目 选项 说明
PB_FILE 包含CKPT的PB文件名和路径
OUTPUT_FILE NPU编译后输出文件名
SECURE true / false 是否对模型加密(还未支持)
NPU_UNIT NPU32 / NPU64 选择NPU型号对应的MAC数量(SNPU选32,主NPU选64)
COMPRESS true / false 是否启动压缩模式
COMPRESS_QUANT_BITS 4/5/6/7/8/9/10 量化压缩的最终bit数
FLOAT16 true/false 是否启用FLOAT16量化模式
FLOAT16_EXP_BITS 3/4/5/6 选择FLOAT16指数位的Bit数(默认5)
OUTPUT_TYPE jason/raw 目前请选择raw格式
INPUT_OPS OP_NAME: [shape] 设置输入的OP名字和SHAPE
OUTPUT_OPS [OUT_OP_NAMES, ... ] 设置输出OP的名字列表

配置文件例子:

kws_config.yaml

PB_FILE: kws_i320_norm_cnn32_lstm96x2_with_ckpt.pb

OUTPUT_FILE: kws_i320_norm_cnn32_lstm96x2_NCHW_fp32_0626.npu

SECURE: false # true/false

NPU_UNIT: NPU32 # NPU16/NPU32/NPU64

COMPRESS: true # true/false

COMPRESS_QUANT_BITS: 6 # 4/5/6/7/8/9/10

FLOAT16: true # true/false

FLOAT16_EXP_BITS: 5 #3/4/5/6

OUTPUT_TYPE: raw # json/raw

INPUT_OPS:

Feats: [1, 1, 320]

State_c0: [1, 96]

State_h0: [1, 96]

State_c1: [1, 96]

State_h1: [1, 96]

OUTPUT_OPS: [Model/rnn_out, State_c0_out, State_h0_out, State_c1_out, State_h1_out]

编译

可以通过命令行直接编译:

gxnpuc --config=config.yaml

或者通过python环境运行:

python gen_model.py config.yaml

gen_model.py里的内容为:

import npu_compiler

import sys

config = sys.argv[1]

if __name__ == '__main__':

    npu_compiler.run(config)

编译器的OP支持范围

编译器通过对Tensorflow的OP解析来支持各种运算,目前支持的OP的列表如下:

  • "Placeholder"
  • "Const"
  • "Identity"
  • "MatMul"
  • "Add"
  • "Sub"
  • "Mul"
  • "Div"
  • "Softmax"
  • "Sigmoid"
  • "Tanh"
  • "Relu"
  • "Shape"
  • "Fill"
  • "StridedSlice"
  • "Concat"
  • "BiasAdd"
  • "Split"
  • "Pack"
  • "Conv2D"
  • "MaxPool"
  • "ConcatV2"

如遇到不支持的OP,请随时和我们联系!我们会尽快添加!

results matching ""

    No results matching ""