- 01 9月, 2021 2 次提交
-
-
由 0x45f 提交于
* modify dy2stat error message in compile time * fix variable name
-
由 Aurelius84 提交于
* Support append method and initialized value for List in ControlFlow * polish error msg and en doc * fix code style
-
- 05 8月, 2021 2 次提交
-
-
由 0x45f 提交于
* integrated gast library * integrated gast library * fix unittest and remove ast2.py * remove 'gast' from __all__ in __init__.py * add copyright in other files * fix copyright
-
由 Aurelius84 提交于
* Support Mixed Precision training in @to_static * fix block.vars logic * fix GPU training loss diff * remove unused code
-
- 28 7月, 2021 1 次提交
-
-
由 Aurelius84 提交于
* Add build_strategy in @to_static to support open pass * fix os.environ * add timeout * disable test_build_strategy on openblas
-
- 27 7月, 2021 1 次提交
-
-
由 Aurelius84 提交于
Revert "Revert "[Dy2Stat] Refactor ExecutorCache logic and pre-support BuildStrategy for pass (#34181)" (#34348)" (#34384) This reverts commit 577fdde5.
-
- 23 7月, 2021 1 次提交
-
-
由 Aurelius84 提交于
Revert "[Dy2Stat] Refactor ExecutorCache logic and pre-support BuildStrategy for pass (#34181)" (#34348) This reverts commit 609f8225.
-
- 22 7月, 2021 1 次提交
-
-
由 Aurelius84 提交于
* modify into program_id * fix cache_info declare problem * fix python int to C long problem * modify point to reference * add ENVS
-
- 20 7月, 2021 1 次提交
-
-
由 0x45f 提交于
* support Nest sequtial container * rename model path
-
- 15 7月, 2021 1 次提交
-
-
由 wanghuancoder 提交于
* cache core.ops, test=develop * refine, test=develop
-
- 14 7月, 2021 1 次提交
-
-
由 Aurelius84 提交于
* fix paddle.no_grad * fix paddle.no_grad
-
- 05 7月, 2021 1 次提交
-
-
由 Aurelius84 提交于
-
- 30 6月, 2021 1 次提交
-
-
由 Aurelius84 提交于
* refine temp_scope_vec logic * polish partial_program * fix fake var * add stop_gradient in spec * fix fake_var * fix unittest
-
- 24 6月, 2021 1 次提交
-
-
由 Aurelius84 提交于
* support type hint * fix unittest
-
- 21 6月, 2021 1 次提交
-
-
由 tianshuo78520a 提交于
* del py2 code2 * fix test timeout
-
- 17 6月, 2021 1 次提交
-
-
由 Aurelius84 提交于
* support non-tensor type * fix unittest failed * add unittest with prune * rm unused code * coverage * fix two or
-
- 16 6月, 2021 1 次提交
-
-
由 Aurelius84 提交于
-
- 09 6月, 2021 2 次提交
-
-
由 Aurelius84 提交于
-
由 Aurelius84 提交于
* Modify into core.ops.run_program * add DDout in core.ops.run_program * fix typo * add DOut * fix typo * put DOut last
-
- 08 6月, 2021 1 次提交
-
-
由 Aurelius84 提交于
* move data to CUDAPlace in advance
-
- 04 6月, 2021 1 次提交
-
-
由 Huihuang Zheng 提交于
This PR made these changes to support double grad: 1. Translate `paddle.grad` to `paddle.static.gradients` to support double grad for dy2stat. 2. Fix IfElseTransformer bug which may not change value if "Store before Load" variable is in "Store" statement is in IfElse conditional statement 3. Add `DOut` to support double grad variables in `run_program_op` 4. Add support for renaming for double grads for `jit.save/load`
-
- 20 5月, 2021 1 次提交
-
-
由 Aurelius84 提交于
* Support convert sublayers in Sequential Container * remove paddle.jit.set_code_level
-
- 19 5月, 2021 1 次提交
-
-
由 Aurelius84 提交于
* BugFix StaticAanlysis with gast.Subscript * remove codes
-
- 30 4月, 2021 1 次提交
-
-
由 Huihuang Zheng 提交于
Dy2stat failed when user writes return paddle.to_tensor(xxx), the reason is that visit_Expr doesn't work when the Expr is in return. Some other statements may trigger same bug. To fix it, we re-wrote a transformer to transform paddle.to_tensor to paddle.assign for all Call nodes.
-
- 09 4月, 2021 2 次提交
-
-
由 Aurelius84 提交于
* fix undefind var in For * fix code style
-
由 Aurelius84 提交于
* support DictCmp and zip grammar * fix code style
-
- 24 3月, 2021 1 次提交
-
-
由 Huihuang Zheng 提交于
Our old `loop_body` function may return single element when `loop_vars` just contains only 1 element, which can cause bug. The key point of this PR is forcing `loop_body` functions always return tuple.
-
- 11 3月, 2021 1 次提交
-
-
由 Aurelius84 提交于
* Fix bug with static_convert_var_shape * replace dot with dash
-
- 04 3月, 2021 3 次提交
-
-
由 liym27 提交于
-
由 Huihuang Zheng 提交于
Fix wrong code comment
-
由 Huihuang Zheng 提交于
Fix Read-Only Attribute as while_loop Output: Usually, our convert_while_loop will be like: ``` [a, b, c] = paddle.jit.dy2static.convert_while_loop( condition_name, body_name, [a, b, c]) ``` where a, b, c are in loop_var_names. However, if loop_var_names contains property such as foo.x, we cannot assign the attribute as output of convert_while_loop because Python property is a kind of read-only attribute. To handle the case, we replace the attributes which are output of convert_while_loop with generated variables, then if we know the attribute is not read-only at runtime, we assign the attribute. The created statements are like: ``` [a, b, __attribute_variable_1] = paddle.jit.dy2static.convert_while_loop( condition_name, body_name, [a, b, foo.x]) if not isinstance(getattr(type(foo), x, None), property): foo.x = __attribute_variable_1 ```
-
- 26 2月, 2021 1 次提交
-
-
由 Aurelius84 提交于
* fix eval_if_exist_else_none bug * fix typo * fix typo * fix test_op_num unittest
-
- 22 2月, 2021 1 次提交
-
-
由 Huihuang Zheng 提交于
**Problem** In our old shape transformer logic, if user write: ``` s = tensor.shape ... y = paddle.some_api(s) ``` Dy2stat will change it to ``` ... y = paddle.some_api(convert_var_shape(tensor)) ``` However it will cause fatal bug if user changes the shape of `x` after assign. For example: ``` s = tensor.shape ... tensor = paddle.some_change_shape_api(tensor) ... y = paddle.some_api(s) ``` Then the Dy2stat will get wrong result because the code is translated into: ``` tensor = paddle.some_change_shape_api(tensor) ... y = paddle.some_api(convert_var_shape(tensor)) # tensor shape has been changed, not origin `s` value ``` **Solution Logic** It can not be solved in the old logic, so I refactoring tensor_shape_transformer logic. Now we will use `s` to store shape attribute and generate a var `s__STATIC_CONVERT_VAR_SHAPE_SUFFIX` to store static shape API `shape(tensor)` ``` s = tensor.shape ... y = paddle.some_api(s) ``` Dy2stat will change it to ``` s = tensor.shape s__STATIC_CONVERT_VAR_SHAPE_SUFFIX = shape(tensor) ... y = paddle.some_api(choose_shape_attr_or_api(s, s__STATIC_CONVERT_VAR_SHAPE_SUFFIX )) ``` In this case, the code is consistent with origin dygraph meaning and it fixed the change after assign bug. **Code Key Note** To help reviewers, the key change of this PR is changing `self.name_to_var_shape` from "mapping name to shape node" to "mapping name to its STATIC_CONVERT_VAR_SHAPE_SUFFIX name", then if a variable name has the SUFFIX, we can choose to use attribute shape or shape api. Other changes go with the key change. **Consideration** The issue of this PR is that we store extra static `shape` API result, will it harms the speed of Dy2stat? In some cases it will, but we argue that the benefit would be greater than the cost. 1. The extra calling to static `shape` API will happen when coder assign among shape variables. Take the following dygraph code as an instance: ``` s1 = tensor.shape s2 = s1 s3 = s2 ... ``` Then we called extra static `shape` APIs again and again, however users seldom write code like this. 2. If the shape variable is used a lot, for example: ``` s = tensor.shape y1 = paddle.some_api1(s) y2 = paddle.some_api2(s) y3 = paddle.some_api3(s) ``` Our old logic will create 3 shape APIs but now just 1. This is more common user code pattern. In fact, if reviewers take a look at the current unit test in this PR, you could see the op numbers decrease after this PR. So we argue that this PR can also improve speed in this code pattern.
-
- 20 2月, 2021 1 次提交
-
-
由 Huihuang Zheng 提交于
As the title, when slice_node like 1:3 being passed to idx of convert_var_shape, it will cause syntax error because a function cannot take this as argument. This PR fixed it.
-
- 18 2月, 2021 1 次提交
-
-
由 Huihuang Zheng 提交于
Dy2stat didn't support tuple as iteration variable in the past. This PR added there main cases: 1). Non-enumerate case: for var1, var2 in var|var.numpy() will be re-written as: for FOR_ITER_TUPLE_PREFIX_x in var | var.numpy(): var1 = FOR_ITER_TUPLE_PREFIX_x[0] var2 = FOR_ITER_TUPLE_PREFIX_x[1] 2). Enumerate out tuple case: for t in enumerate(var|var.numpy) will be rewritten as: for FOR_ITER_TUPLE_INDEX_PREFIX_x, FOR_ITER_TUPLE_PREFIX_x in enumerate(var|var.numpy): t = (FOR_ITER_TUPLE_INDEX_PREFIX_x, FOR_ITER_TUPLE_PREFIX_x) 3). Enumerate inner tuple case: for i, (var1, (var2, va3)) in enumerate(var|var.numpy()) will be re-written as: for i, FOR_ITER_TUPLE_PREFIX_x in var | var.numpy(): var1 = FOR_ITER_TUPLE_PREFIX_x[0] var2 = FOR_ITER_TUPLE_PREFIX_x[1][0] var3 = FOR_ITER_TUPLE_PREFIX_x[1][1]
-
- 27 1月, 2021 1 次提交
-
-
由 liym27 提交于
-
- 20 1月, 2021 1 次提交
-
-
由 Aurelius84 提交于
* add paddle. * add unittest
-
- 14 1月, 2021 1 次提交
-
-
由 Chen Weihang 提交于
-
- 11 1月, 2021 2 次提交
-
-
由 Huihuang Zheng 提交于
Add clone method for static Variable so that this interface will be same as dygraph. It fixed some bugs in dy2stat
-
由 XiaoguangHu 提交于
* delete paddle.nn.functional.assign * fix dynamic to static error
-