配置动态shape
功能介绍
配置动态shape可以给予图编译阶段更多shape range信息,编译器用以编译高效的算子和更好的管理内存。 设置maxOutputSize用于配置更为精准的输出最大值,图执行器会根据此配置在图计算前预申请好输出内存,提升性能。
使用约束
无
使用方法
假如有一个动态shape的resize沉图,具体实现如下,该沉图有两个输入,一个是需要resize的图片数据,一个是resize目标大小信息:
def resize_bilinear(x: torch.Tensor, hw: torch.Tensor): return F.interpolate(x, size=[hw[0], hw[1]], mode="bilinear", align_corners=True)
对于该动态沉图,具体配置如下所示。
- ge.inputShape:动态输入的shape范围。对于该动态沉图,由于输入的图片高、宽是不固定的,但根据具体业务得知是在1~1728范围内,所以在ge.inputShape中将第一个输入的高、宽维度设置成1~1728范围。对于第二个输入只有高、宽两个数字,所以ShapeRange是固定的数值[2]。更多介绍请参考《Ascend Graph开发指南》。
- ge.outputMaxSize(可选):指定图输出的最大内存。
- inputs_tensor_desc
- data_type:tensor的数据类型。
- shape:tensor的shape信息,动态的维度请设置成-1。
- format:每个输入的format信息需要根据实际的情况设置,支持NCHW, NHWC, ND三种格式。
{ "build_options": { "ge.inputShape": "1,3,1~1728,1~1728;2", "ge.outputMaxSize": "107495424" }, "inputs_tensor_desc": [ { "data_type": "DT_FLOAT", "shape": [1, 3, -1, -1], "format": "NCHW" }, { "data_type": "DT_INT32", "shape": [2], "format": "ND" } ] }
父主题: 专题