- 17 9月, 2021 2 次提交
-
-
由 0x45f 提交于
-
由 wuhuanzhou 提交于
#### 背景 #35602 提供Python侧开发子图替换类Pass的方式: - 利用Paddle Python API或者辅助类型定义子图program用来匹配/替换图; - Python侧注册Pass时,将注册函数最终转换为protobuf定义的PassDesc数据形式,供C++侧进行解析完成Pass实例注册。 本PR即为根据PassDesc规则描述解析生成Pass实例。 #### 方案设计 ##### Pass规则验证 在以往的Pass开发中,会存在随着算子迭代引发的匹配失效或者错误匹配的问题,该问题可以通过扫描算子支持的参数设置及参数类型等来判断是否应该使用该Pass或者给出提示需要修改Pass代码。 当前Pass开发中提供了算子兼容性OpCompatSensiblePass用于解决上述问题。但同时还存在不足:由于以往Pass开发在运行时才能获取到pattern信息,所以需要在执行Pass时才可以判断。 使用PassDesc表示的Pass可以在执行Pass前验证上述问题,这个过程在VerifyDesc中完成。 ##### 根据匹配子图构造pattern GeneratePass对于图匹配和替换使用GraphPatternDecetor完成,构造匹配pattern实际上就是将对应对象成员PDPattern中添加PDNode和边关系。该过程在函数`InitGeneratePattern`中完成,该函数没有作为GeneratePass的成员方法,主要出于后续可能开发新的Decetor考虑,GeneratePass与Decetor的操作是没有关联的。 初始化pattern主要通过遍历匹配子图program的全部算子实现: 1. 添加当前算子对应PDNode及限制条件(算子类型、属性限制等); 2. 遍历当前算子对应输入并从pattern中尝试获取PDNode: - 在pattern中获取到PDNode且为输出节点:表示属于匹配子图的中间节点,将该PDNode设置为中间节点; - 在pattern中没有获取到PDNode:添加该输入PDNode并设置作为输入节点; - 设置输入到算子的边关系; 3. 遍历当前算子对应输出: - 在pattern中获取到PDNode且为输入节点:表示属于匹配子图的中间节点,将该PDNode设置为中间节点; - 在pattern中没有获取到PDNode:添加该输入PDNode并设置作为输出节点; - 设置算子到输出的边关系; ##### 根据替换子图操作graph 替换子图操作的过程在`GetGenerateRewrite`函数中完成,与`InitGeneratePattern`类似没有作为GeneratePass的成员方法。 生成替换子图操作过程如下: 1. 判断冗余替换子图; 2. 遍历替换子图program的全部算子添加替换子图Node: 1. 添加当前算子的Node及属性设置; 2. 遍历当前算子对应输入,添加中间variable节点; 3. 遍历当前算子对应输出,添加中间variable节点; 4. 添加输入/输出节点与算子节点的边关系; 3. 删除匹配图中属于中间节点的Node; ##### 优化子图验证 对于替换子图或者替换后的计算图是否可以正确运行等,可以在执行Pass时验证,从而防止在后续执行计算图时出现异常。 当前Pass执行直接修改计算图,验证失败时无法很好的完成还原操作,目前子图验证暂时默认成功,留到后续改进。
-
- 16 9月, 2021 13 次提交
-
-
由 wangguanqun 提交于
* add trainer desc config to distributed strategy * code style modified * data_feed set lod * fix bug * code style * fix bug
-
由 zhiboniu 提交于
-
由 Aganlengzi 提交于
* [NPU] add index_select_grad kernel and unit tests * dim=0 not need transpose
-
由 crystal 提交于
-
由 Wangzheee 提交于
* fix gather * fix
-
由 0x45f 提交于
* fix no_grad context error in dy2stat * remove useless comments * fix error by drop_kids in python * add test and fix review
-
由 Guoxia Wang 提交于
* support fp16 dtype
-
由 Wilber 提交于
-
由 lilong12 提交于
-
由 zhangkaihuo 提交于
-
由 wuhuanzhou 提交于
PR主要功能:针对fusion等子图替换场景,支持Python侧开发并注册Pass。 背景 Pass是指输入一个深度学习计算图Graph,依照一定条件进行修改,输出修改后的Graph的过程; 当前PaddlePadle框架编写Pass代码存在以下问题: 用户需要手写Graph的条件匹配、在Graph上的修改代码; 对Graph操作需要深入底层框架代码,了解Graph的结构,并且知道相关Pass写法; 我们提出了针对fusion等子图替换类Pass的优化方案以支持用户在Python侧开发注册Pass,提升二次开发体验: 用户只需要输入匹配和替换的子图描述,由深度学习框架编写的代码来生成匹配和替换的逻辑,不需要用户对Graph进行匹配和替换操作; API级别的替换,用户可以通过Paddle的Python API构造子图,从而不需要知道Graph的结构,也能写Paddle的Graph Pass代码
-
由 wanghuancoder 提交于
-
由 zhangkaihuo 提交于
-
- 15 9月, 2021 24 次提交
-
-
由 Sing_chan 提交于
-
由 jakpiase 提交于
* fixed slice error * added handling of StartsTensor+List and EndsTensor+List * fix for ppyolo model
-
由 jakpiase 提交于
-
由 wanghuancoder 提交于
* add inplace logic into new_executor, test=develop * check shape and add inplace FLAGS, test=develop * refine, test=develop * refine, test=develop
-
由 王明冬 提交于
* clip op extra information when export model,test=ocr * rename clip_extra parameter to kwargs in save_inference_model, test=ocr
-
由 zyfncg 提交于
* Change the invoking method of settiem from numpy to set_value op when value is not tensor * fix the check logic for inplace in setitem * fix the unittest problem caused by setitem doesn't support fp16 * modify some code format in setitem
-
由 zhaoyingli 提交于
* add dist_attr for dist op * add unitest * update inputname * update function name * add unitest * update CMakeLists.txt for CI * fix dis_matmul * fix compile error * update matmul to matmul_v2
-
由 Liu-xiandong 提交于
Put Nvidia's cusparse library into paddle.
-
由 pangyoki 提交于
* add beam_search npu op * fix CMakeList and add unittest * fix bug of beam search npu op * fix unittest * let input ids become int64 * set output ids to int64_t * delete check_dygraph * fix beam_width=1
-
由 houj04 提交于
-
由 Sing_chan 提交于
-
由 Qi Li 提交于
* [NPU] fix depthwise_conv2d_grad, test=develop * remove debug files, test=develop
-
由 Yiqun Liu 提交于
-
由 JingZhuangzhuang 提交于
Co-authored-by: Nxiaoxiaohehe001 <hiteezsf@163.com>
-
由 YuanRisheng 提交于
* Add New Op: gumbel_softmax * Add New Op: gumbel_softmax * Add New Op: gumbel_softmax (amend) * add __main__ function in unit test * fix bugs when test in windows ci * update en docs * delete reletive error in unit test * delete relative error in unit test * set hard=True in unit test
-
由 Siming Dai 提交于
Add paddle.cuda.device.stream_guard API
-
由 WangXi 提交于
-
由 Li Min 提交于
-
由 xiaoxiaohehe001 提交于
* add_split_op * add_split_teller * add_split_teller * add_split_teller * add_split_teller * add_split_teller * add_split_teller * add_split_teller * add_split_teller * add_split_teller * add_split_teller * add_split_teller * add_split_teller * add_split_teller * add_split_teller * add_split_teller
-
由 xiaoxiaohehe001 提交于
* add_transpose_teller * add_transpose_teller * add_transpose_teller * add_transpose_teller * add_transpose_teller * add_transpose_teller * add_transpose_teller * add_transpose_teller * add_transpose_teller * add_transpose_teller * add_transpose_teller * add_transpose_teller * add_transpose_teller * add_transpose_teller * add_transpose_teller
-
由 xiaoxiaohehe001 提交于
* add_scale_teller * add_scale_teller * add_scale_teller * add_scale_teller * add_scale_teller * add_scale_teller * add_scale_teller * add_scale_teller * add_scale_teller * add_scale_teller * add_scale_teller * add_scale_teller * add_scale_teller * add_scale_teller
-
由 津 提交于
-
由 津 提交于
-
由 ronnywang 提交于
-
- 14 9月, 2021 1 次提交
-
-
由 zhaoyingli 提交于
* add layerwise learning rate for adamw * fix format * add unitest * add NotImplementedError * add gpu unitest * update gpuplace
-