模型编译时,若遇到AI CPU算子不支持某种数据类型导致编译失败的场景,可通过启用Cast算子自动插入特性快速将输入转换为算子支持的数据类型,从而实现网络的快速打通。
如图1,表示MatrixInverse算子的输入x不支持float16的数据类型。
此种场景下,即可开启Cast算子自动插入特性,详细操作方法见操作步骤。
修改“Ascend-cann-toolkit安装目录/ascend-toolkit/latest”目录中“lib64/plugin/opskernel/config/init.conf”文件,将“AutoCastMode”参数的值修改为1,如下所示:
... AutoCastMode = 1
如下所示,MatrixInverse算子的输入x不支持float16,算子信息库配置如下:
"MatrixInverse":{ "input0":{ "name":"x", "type":"DT_FLOAT,DT_DOUBLE,DT_COMPLEX128,DT_COMPLEX64" }, "opInfo":{ "computeCost":"100", "engine":"DNN_VM_AICPU", "flagAsync":"False", "flagPartial":"False", "formatAgnostic":"False", "opKernelLib":"TFKernel", "opsFlag":"OPS_FLAG_OPEN", "subTypeOfInferShape":"1" }, "output0":{ "name":"y", "type":"DT_FLOAT,DT_DOUBLE,DT_COMPLEX128,DT_COMPLEX64" } },
例如,对MatrixInverse算子,输入增加对float16类型的支持,并增加cast规则,将float16转换为float32,代表在此输入前会插入一个float16到float32的cast算子。
"input0":{ "name":"x", "type":"DT_FLOAT,DT_DOUBLE,DT_COMPLEX128,DT_COMPLEX64,DT_FLOAT16", "srcAutoCastType":"DT_FLOAT16", "dstAutoCastType":"DT_FLOAT" },
例如,对MatrixInverse算子,输出增加对float16类型的支持,并增加cast规则,将float32转换为float16,代表在此输出后插入一个float32到float16的cast算子。
"output0":{ "name":"y", "type":"DT_FLOAT,DT_DOUBLE,DT_COMPLEX128,DT_COMPLEX64,DT_FLOAT16" "srcAutoCastType":"DT_FLOAT", "dstAutoCastType":"DT_FLOAT16" }