2. 模型编译

2.1. 模型下载

本例中将以 ONNX model zoo 中的 BERT-Squad 模型为例。 首先通过 wget 命令下载该模型:

wget https://github.com/onnx/models/raw/87d452a218093f6a60ceb62712ffe1186dce6d64/text/machine_comprehension/bert-squad/model/bertsquad-12.onnx

2.2. 模型转换和编译

通过以下的命令将 bertsquad-12.onnx 模型转换成精度为FP16、batch size为16的模型并编译成PopEF格式的二进制文件 executable.popef。 命令中模型转换的参数请参考 PopRT User Guide

gc-docker -- --rm \
    -v `pwd -P`:/model_conversion \
    -w /model_conversion \
    graphcorecn/poprt-staging:latest \
    --input_model bertsquad-12.onnx \
    --input_shape input_ids:0=16,256 input_mask:0=16,256 segment_ids:0=16,256 unique_ids_raw_output___9:0=16 \
    --precision fp16 \
    --convert_version 11 \
    --export_popef \
    --ipu_version ipu21

备注

如果在 IPU-M2000 或 Bow-2000 环境中测试,请使用参数 --ipu_version ipu2 代替 --ipu_version ipu21

模型转换成功,在目录中将包含以下文件。

$ tree . -L 1

  ├── bertsquad-12.onnx
  ├── bertsquad-12.onnx.optimized.onnx
  ├── executable.popef
  • bertsquad-12.onnx: 原始模型

  • bertsquad-12.onnx.optimized.onnx: 通过PopRT转换后的模型

  • executable.popef: 编译得到的PopEF文件