准备离线模型dump数据
前提条件
本节介绍通过MindStudio提供的dump功能,生成离线模型的dump数据。启动dump前,需要完成以下操作:
生成dump数据文件
您可以参考以下步骤生成dump数据:
- 打开MindStudio,选择 菜单,弹出“Select Offline Model”窗口,如图1所示。
您也可以通过打开工程文件,然后右键单击.om模型文件,选择“Dump Configuration”菜单的方式配置dump。
- 选择.om模型文件,单击“OK”,展示模型文件结构,设置dump开关。如图2所示。
- 如果涉及多个模型需要dump数据,则需要分别设置各个模型文件的dump配置项。
- 当使用相同系列网络模型时,可能会存在因模型的Model Name值相同,造成生成的acl.json文件中dump配置混淆。
例如,先使用yolov2进行了dump配置,然后又使用yolov3,此时虽然未对yolov3配置,但acl.json文件中已经记录了yolov2的dump配置,又因为yolov2与yolov3的Model Name值相同,这样就会出现yolov3继承了yolov2的配置。
因此,当存在因使用相同系列网络模型造成Model Name相同时,可以通过修改Caffe模型文件prototxt中的name字段值并重新进行模型转换,使得系列模型的name字段值不同;也可以在dump配置时先选择None进行清理之前的配置,再次重新进行dump配置。
通过窗口右侧配置项,设置.om模型文件的dump配置项。
表1 参数说明 参数
说明
Dump Option
配置dump范围。取值为:
- ALL:所有算子开启dump。
- Several:自定义部分算子开启dump。选择该项后,需要右键单击待dump数据的算子并选择“Enable Dump”。
- None:所有算子不开启dump。
Dump Mode
dump数据模式。取值为:
- All:同时dump算子的输入、输出数据。
- Input:dump算子的输入数据。
- Output:dump算子的输出数据。
Dump Path
配置保存dump数据文件的路径,默认为:{project_path}/dump。如果Dump Path设置为其他路径,需要确保MindStudio安装用户对该路径具有读写权限。
AclConfig File
Acl配置文件,在dump操作中该文件保存算子的dump配置信息。一般路径为{project_path}/src/acl.json,实际路径可以在{project_path}/.project文件中查找。格式如图3或图4所示。当选择整个模型dump时,不含layer字段。
- 不具有输出的TBE算子、AI CPU算子,如StreamActive、NetOutput、Send、Recv、const等不会生成dump数据。
- 编译后的模型中部分算子并不会在AI CPU或AI Core执行,如concatD类型算子,则无法生成dump数据。
- 采用dump部分算子场景下,因data算子不会在AI CPU或AI Core上执行,如果用户dump data节点算子,需要一并选择dump data节点算子的后继节点,才能dump出data节点算子数据。
- 对于关联的算子需要同时开启或关闭dump:通过ATC解析OM模型文件得到算子之间的映射关系,识别出是新增算子、一对多、多对一、多对多、L1 Batch等关系。
- const算子不支持开启dump。
- 设置dump完成后,分别单击MindStudio界面 和 菜单,重新编译和运行应用工程。
建议先检查工程文件代码,确保正确引用了设置dump配置的.om模型文件。例如检查aclmdlLoadFromFile()函数或aclmdlLoadFromFileWithMem()函数。
工程运行完毕后,可以在{project_path}/dump路径下查看到生成的dump数据文件。生成的路径及格式说明:
time/device_id/model_name/model_id/data_index/dump文件
表2 字段说明 字段
说明
time
dump数据回传落盘时间。格式为:YYYYMMDDhhmmss。
device_id
Device设备ID号。
model_name
模型名称。
model_id
模型ID号。
data_index
针对每个Task ID执行的次数维护一个序号,从0开始计数,该Task每dump一次数据,序号递增1。
dump文件
命名规则如{op_type}.{op_name}.{taskid}.{timestamp}。
注:如果model_name、op_type、op_name出现了“.”、“/”、“\”、空格时,转换为下划线表示。