AIGC工具tailor使用指导
tailor简介
tailor是AIGC场景下用于模型转换(onnx到mindir)和性能分析的辅助工具,当前支持以下功能。
功能大类 |
具体功能 |
---|---|
模型转换 |
|
benchmark |
|
profiling |
支持分析算子的profiling |
环境准备
本工具支持x86和ARM的系统环境,使用前需要安装以下软件。
软件 |
安装步骤 |
---|---|
mindspore-lite |
安装版本:2.2.10 |
下载地址:https://www.mindspore.cn/lite/docs/zh-CN/r2.2/use/downloads.html 需要下载的安装包与操作系统有关,请根据需要选择合适的安装包。
|
|
安装方式如下: MindSpore Lite云侧推理包解压缩后,设置`LITE_HOME`环境变量为解压缩的路径,例如: export LITE_HOME=$some_path/mindspore-lite-2.2.10-linux-aarch64 设置环境变量LD_LIBRARY_PATH: export LD_LIBRARY_PATH=$LITE_HOME/runtime/lib:$LITE_HOME/runtime/third_party/dnnl:$LITE_HOME/tools/converter/lib:$LD_LIBRARY_PATH 如果需要使用convert_lite或者benchmark工具,则需要设置环境变量PATH。 export PATH=$LITE_HOME/tools/converter/converter:$LITE_HOME/tools/benchmark:$PATH |
|
cann |
安装版本:CANN 7.0.0 |
下载地址:https://support.huawei.com/enterprise/zh/ascend-computing/cann-pid-251168373/software/258923273?idAbsPath=fixnode01%7C23710424%7C251366513%7C22892968%7C251168373 请下载toolkit和对应机器的kernels包,以Snt9B为例则下载“Ascend-cann-toolkit_7.0.0_linux-aarch64.run”和“Ascend-cann-kernels-型号_7.0.0_linux.run”。 |
|
安装命令(以Snt9B的cann安装为例): ./Ascend-cann-toolkit_7.0.0_linux-aarch64.run --full ./Ascend-cann-kernels-型号_7.0.0_linux.run --install 请安装在默认路径下:/usr/local/Ascend,暂不支持安装在自定义路径下。 |
|
tailor |
安装版本:0.3.4 |
下载地址: https://cneast3-modelarts-sdk.obs.cn-east-3.myhuaweicloud.com/tailor-0.3.4-py3-none-any.whl SHA-256: https://cneast3-modelarts-sdk.obs.cn-east-3.myhuaweicloud.com/tailor-0.3.4-py3-none-any.whl/1713929258832/tailor-0.3.4-py3-none-any.whl.sha256 |
|
安装命令: pip install tailor-0.3.4-py3-none-any.whl |
使用指导
tailor支持“命令行”和“Python API”两种方式使用。
- 命令行方式
命令行运行样例:
tailor --model_path="./resnet50-v2-7.onnx"--config_path="./config.ini"--input_shape="data:1,3,224,224"--output_path="/home/"--accuracy="fp32"--aoe=True
config.ini参考内容如下:
[ascend_context] input_shape=data:[-1,3,224,224] dynamic_dims=[1],[2],[3]
表3 参数说明 参数名称
功能描述
参数类型
是否必填
默认值
备注
--model_path
指定onnx模型路径。
string
是
-
-
--config_path
指定模型配置文件路径。
string
否
-
tailor支持动态分档转换功能,需要指定配置文件路径,需要注意即便有配置文件,只要是动态模型就需要指定--input_shape参数。
--input_shape
指定模型转换的shape。
string
否
-
固定shape模型转换可以不填,动态模型转换必填。
--output_path
指定结果输出路径。
string
否
默认为当前目录下。
-
--aoe
是否在转换时进行AOE优化。
bool
否
False
AOE优化可以提升模型性能,但不是一定有提升,需要注意开启AOE,会导致模型转换耗时极大延长。
--accuracy
指定模型精度,只支持fp16和fp32。
string
否
fp16
-
- Python API
- 导入包并创建tailor对象。
from tailor.tailor import Tailor onnx_model_path = "./resnet50-v2-7.onnx" # 相对路径或者绝对路径均可以 t = Tailor(onnx_model_path)
- 查询onnx模型的输入信息。
# 查询onnx模型的输入信息 t.get_model_input_info()
图1 查询onnx模型的输入输出信息
- 查询onnx模型的输出信息。
# 查询模型的输出信息 t.get_model_output_info()
图2 查询onnx模型的输出信息
- 固定shape模型,可以直接运行。
t.run()
- 指定档位信息运行。
input_shape="data:1,3,224,224" t.run(input_shape=input_shape)
- 动态档位执行config_path运行。需要注意,只要是动态模型,就必须要传入input_shape,因为转换模型后的benchmark和profiling都依赖单个shape操作。
input_shape="data:1,3,224,224" config_path = "./resnet/config.ini" t.run(input_shape=input_shape, config_path=config_path)
- 指定精度为fp32。
input_shape="data:1,3,224,224" t.run(input_shape=input_shape, accuracy='fp32')
- 开启AOE优化。
input_shape="data:1,3,224,224" t.run(input_shape=input_shape, aoe=True)
- 指定输出位置。
input_shape="data:1,3,224,224" # 不指定输出路径,则默认在当前执行目录存储结果 t.run(input_shape=input_shape, output_path="/home/xxx")
- 导入包并创建tailor对象。
运行结果将存储在output文件夹中,如果用户指定了output_path,会指定位置保存,如果不指定则在当前代码执行目录生成文件夹保存输出。整体运行的结果都存放在output文件夹中,每转一次模型就会根据模型名称以及相关参数生成结果文件,如下图所示。
在每次运行的结果文件中,分为三部分:convert、benchmark、profiling,相关的文件及存储内容如下。
类别 |
文件名称 |
是否一定生成 |
文件存储内容 |
---|---|---|---|
convert |
resnet50-v2-7.mindir |
是 |
转换后的mindir模型。 |
resnet50-v2-7.om |
否 |
转换过程中的om文件,不是必定生成。 |
|
onnx_to_mindspore.sh |
是 |
模型转换命令,可以本地直接运行。 |
|
resnet50-v2-7_convert.log |
是 |
模型转换过程的日志。 |
|
config.ini |
否 |
配置文件,在指定fp32精度或者AOE打开时会生成。 |
|
onnx_to_mindspore_aoe.sh |
否 |
在打开AOE功能时会生成。 |
|
benchmark |
run_benchmark.sh |
是 |
运行benchmark的脚本,可本地直接运行。 |
run_benchmark_accuracy.sh |
是 |
benchmark运行精度的脚本,可本地直接运行。 |
|
performance.txt |
是 |
benchmark性能测试结果。 |
|
accuracy.txt |
是 |
精度测试结果。 |
|
*.bin |
是 |
自动构造的输入随机bin文件,可能存在多个。 |
|
resnet50-v2-7_output.txt |
是 |
上述bin文件作为输入时onnx模型运行的结果。 |
|
profiling |
run_profiling.sh |
是 |
运行profiling的脚本,可本地直接运行。 |
profiling.config |
是 |
运行profiling的配置文件。 |
|
profiling.json |
是 |
运行profiling的配置文件。 |
|
PROF_xxx开头的文件夹 |
是 |
运行profiling的结果文件夹。 |
|
run_aggregate.sh |
是 |
运行数据聚合的脚本,可直接本地运行。 |
|
run_profiling.log |
是 |
存储运行profiling的日志信息。 |