BatchSize即每次模型推理处理的图片数,对于每次推理图片数量固定的场景,处理图片数由数据shape的N值决定;对于每次推理图片数量不固定的场景,则可以通过动态BatchSize功能来动态分配每次处理的图片数量。例如用户执行推理业务时需要每次处理2张,4张,8张图片,则可以在模型中配置档位信息2,4,8,申请了档位后,模型推理时会根据实际档位申请内存。
下面介绍如何在模型构建时支持动态BatchSize功能:
1 2 3 4 5 |
auto shape_data = vector<int64_t>({ -1,1,28,28 }); TensorDesc desc_data(ge::Shape(shape_data), FORMAT_ND, DT_FLOAT); auto data = op::Data("data"); data.update_input_desc_data(desc_data); data.update_output_desc_out(desc_data); |
1 2 3 4 5 6 7 |
void PrepareOptions(std::map<AscendString, AscendString>& options) { options.insert({ {ge::ir_option::INPUT_FORMAT, "NCHW"}, {ge::ir_option::INPUT_SHAPE, "data:-1,1,28,28"}, {ge::ir_option::DYNAMIC_BATCH_SIZE, "2,4,8"} // 设置N的档位 }); } |