配置动态shape
功能介绍
配置动态shape可以给予图编译阶段更多shape range信息,编译器用以编译高效的算子和更好地管理内存。设置maxOutputSize用于配置更为精准的输出最大值,图执行器会根据此配置在图计算前预申请好输出内存,提升性能。
使用约束
无
使用方法
假如有一个动态shape的resize沉图,具体实现如下,该沉图有两个输入,一个是需要resize的图片数据,一个是resize目标大小信息:
1 2 | 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范围。
- 支持按照name设置:"input_name1:n1,c1,h1,w1;input_name2:n2,c2,h2,w2",例如:"input_name1:8~20,3,5,-1;input_name2:5,3~9,10,-1"。指定的节点必须放在双引号中,节点中间使用英文分号分隔。input_name必须是转换前的网络模型中的节点名称。如果用户知道data节点的name,推荐按照name设置。
- 支持按照index设置:"n1,c1,h1,w1;n2,c2,h2,w2",例如:"8~20,3,5,-1;5,3~9,10,-1"。可以不指定节点名,节点按照索引顺序排列,节点中间使用英文分号分隔。按照index设置shape范围时,data节点需要设置属性index,说明是第几个输入,index从0开始。
- 动态维度有shape范围的用波浪号“~”表示,固定维度用固定数字表示,无限定范围的用-1表示。
- ge.outputMaxSize(可选):指定图输出的最大内存。
- inputs_tensor_desc
- data_type:tensor的数据类型。
- shape:tensor的shape信息,动态的维度请设置成-1。
- format:每个输入的format信息需要根据实际的情况设置,支持NCHW, NHWC, ND三种格式。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | { "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" } ] } |
父主题: 专题