1. 30 11月, 2022 1 次提交
  2. 29 11月, 2022 1 次提交
  3. 28 11月, 2022 1 次提交
  4. 08 11月, 2022 1 次提交
  5. 23 10月, 2022 1 次提交
  6. 27 9月, 2022 1 次提交
  7. 29 8月, 2022 1 次提交
  8. 09 8月, 2022 1 次提交
  9. 13 7月, 2022 1 次提交
  10. 12 7月, 2022 1 次提交
    • X
      [ Dy2Static ]Change NameVisitor in while to FunctionScopeAnalysis (#44155) · c5c6026e
      xiongkun 提交于
      * change NameVisitor to FunctionScopeAnalysis
      
      * polish the logic of undefined var in while_loop. create vars after body execution
      
      * replace old NameVisitor in while and fix all CI
      
      * Togather with CreateVariableTransformer
      
      * add create_variable_transformer
      
      * fix bugs
      
      * merge
      
      * fix some error, TODO: ForNodePreTransform ahead
      
      * merge for unite PR
      
      * fix conflict with base_transformer PR
      
      * fix ci errors, fix [for i in range()] error
      
      * fix according to code review
      c5c6026e
  11. 08 7月, 2022 1 次提交
  12. 28 6月, 2022 1 次提交
  13. 27 6月, 2022 1 次提交
  14. 23 6月, 2022 1 次提交
  15. 05 6月, 2022 1 次提交
    • S
      【code format check upgrade】 step2:yapf (#42944) · a072fca8
      Sing_chan 提交于
      * use yapf to format all python file
      
      * yapf exclude two unittests file for they rely on writing and reading file, and format will break them
      
      * disable diff_py_file because too many diff files cause command following failed
      a072fca8
  16. 11 1月, 2022 1 次提交
    • M
      Jit pre save hook (#38186) · e91f7c02
      Ming-Xu Huang 提交于
      * Pre-save hooks of jit.save
      
      1. Added pre_save_hooks features to jit.save.
      2. Added related unittests
      
      * Added jit pre_save_hooks functions's alias to paddle.jit and copyright.
      
      * Make jit.save_pre_hook style be consisent with Paddle's rule.
      
      * Fixed arguments passing bug in run_save_pre_hooks
      
      * Added API Documents
      
      * Move clear and run_pre_save_hooks as internal methonds only.
      
      * Made register_save_pre_hook as an internal function.
      e91f7c02
  17. 11 6月, 2021 1 次提交
  18. 22 2月, 2021 1 次提交
    • H
      [Dy2stat] Refactoring tensor_shape_transformer.py to Fix Change after Assign Bug (#31082) · cf43a321
      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.
      cf43a321
  19. 03 12月, 2020 1 次提交
    • L
      [Dy2stat] Add a decorator paddle.jit.not_to_static to support that not to... · b9a8ebd5
      liym27 提交于
      [Dy2stat] Add a decorator paddle.jit.not_to_static to support that not to convert a function in Dynamic-to-Static. (#29253)
      
      Usage scenarios:A function could have run successfully in static mode,  you can use it to decorate a function in the following cases:
        1. An unknown error occurs in the dynamic-to-static conversion process of the function;
        2. In the internal implementation of the function, it has two branches: dynamic branch and static branch;
        3. Users don't want to convert the function in the process of dynamic to static.
      b9a8ebd5
  20. 02 12月, 2020 1 次提交
    • H
      [Dy2stat] Fix PaddleGan Deoldify Model Dy2stat Problems (#29226) · aec05d81
      Huihuang Zheng 提交于
      This PR fixes several problems in dy2stat for Deoldify model in PaddleGan.
      
      In model, software engineer wrote if x.shape == y.shape, the Tenser shape is a tuple in dygraph so the == returns True/False, but in static graph the == becomes element-wise comparison, which is a different behavior. In this PR we reduce the element-wise comparison result.
      
      If software engineer write computations which uses parameters in hooks, the static graph can loss the parameter variable because we put param_guard at forward of a Layer. In this PR we made param_guard cover pre-hook and post-hook.
      
      In PaddleGan, software engineer calculated some parameter values in __init__ by running some dygraph code. Those code also run during dy2stat. So some variables may be assign as a VarBase (Tensor) first and then Variable, which raised an error. We fixed the bug in this PR by handling the case.
      
      TODO: We just added testcase for the 1. shape comparison. Should add test case for 2. and 3. But since we are chasing 2.0RC, I will do it in the near future PR
      aec05d81
  21. 28 11月, 2020 1 次提交
  22. 25 11月, 2020 1 次提交
  23. 29 9月, 2020 1 次提交
    • H
      [Dy2stat] Refine Dy2stat APIs to 2.0rc (#27430) · cc2fc938
      Huihuang Zheng 提交于
      Refine Dy2stat APIs to 2.0rc
      
      After discussion, we accepted 3 key points from reviewers:
      
      1. In 2.0rc we changed dygraph_to_static folder to dy2static
      2. Keep the three files: convert_call_func.py, convert_operators.py, variable_trans_func.py
      3. Remove convert_operators path when users import convert_xxx. 
      
      After this PR, users can import convert_xxx APIs by:
      
      `import paddle.jit.dy2static.convert_xxx`
      
      The file structure will be:
      
      ```
      jit
          dy2static
                convert_operators.py
                convert_func_call.py
                variable_trans_func.py
      ```
      
      Detail changed API in files:
      
      In python/paddle/jit/dygraph_to_static/convert_call_func.py:
      from ...fluid.dygraph.dygraph_to_static.convert_call_func import convert_call  #DEFINE_ALIAS
      
      In python/paddle/jit/dygraph_to_static/convert_operators.py:
      from ...fluid.dygraph.dygraph_to_static.convert_operators import cast_bool_if_necessary  #DEFINE_ALIAS
      from ...fluid.dygraph.dygraph_to_static.convert_operators import convert_assert  #DEFINE_ALIAS
      from ...fluid.dygraph.dygraph_to_static.convert_operators import convert_ifelse  #DEFINE_ALIAS
      from ...fluid.dygraph.dygraph_to_static.convert_operators import convert_len  #DEFINE_ALIAS
      from ...fluid.dygraph.dygraph_to_static.convert_operators import convert_logical_and  #DEFINE_ALIAS
      from ...fluid.dygraph.dygraph_to_static.convert_operators import convert_logical_not  #DEFINE_ALIAS
      from ...fluid.dygraph.dygraph_to_static.convert_operators import convert_logical_or  #DEFINE_ALIAS
      from ...fluid.dygraph.dygraph_to_static.convert_operators import convert_print  #DEFINE_ALIAS
      from ...fluid.dygraph.dygraph_to_static.convert_operators import convert_var_dtype  #DEFINE_ALIAS
      from ...fluid.dygraph.dygraph_to_static.convert_operators import convert_var_shape  #DEFINE_ALIAS
      from ...fluid.dygraph.dygraph_to_static.convert_operators import convert_while_loop  #DEFINE_ALIAS
      
      In python/paddle/jit/dygraph_to_static/variable_trans_func.py:
      from ...fluid.dygraph.dygraph_to_static.variable_trans_func import create_fill_constant_node  #DEFINE_ALIAS
      from ...fluid.dygraph.dygraph_to_static.variable_trans_func import create_static_variable_gast_node  #DEFINE_ALIAS
      from ...fluid.dygraph.dygraph_to_static.variable_trans_func import data_layer_not_check  #DEFINE_ALIAS
      from ...fluid.dygraph.dygraph_to_static.variable_trans_func import to_static_variable  #DEFINE_ALIAS
      from ...fluid.dygraph.dygraph_to_static.variable_trans_func import to_static_variable_gast_node  #DEFINE_ALIAS
      cc2fc938
  24. 03 9月, 2020 1 次提交
  25. 28 8月, 2020 1 次提交
    • L
      [Dy2Stat] Add debugging and logging mechanism for dygraph to static (#26457) · b1f9ed60
      liym27 提交于
      * [Dy2Stat] Add debugging and logging mechanism for dygraph to static. 
      
      * Remove TransformerError temporarily. 
      
      * import mock in PY2, from unittest import mock in PY3. test=develop
      
      * Expose interfaces set_code_level and set_verbosity in paddle.jit, fix doc of the two interface. 
      
      * polish doc of set_verbosity and set_code_level. 
      b1f9ed60
  26. 13 8月, 2020 1 次提交
  27. 11 8月, 2020 1 次提交
    • P
      Paddle-2.0 API directory migration (#25898) · 2efcb481
      pangyoki 提交于
      * Directory migration, test=develop
      
      * Change imperative from paddle init to paddle framework, test=develop
      
      * Fixed jit bug, test=develop
      
      * default static mode, test=develop
      
      * fixed format and create parameter belongs to framework, test=develop
      
      * Fixed import package, test=develop
      
      * fix __init__ format, test=develop
      
      * fixed alias problem
      
      * fixed paddle.enable_imperative problems, test=develop
      
      * Add unittest
      
      * delete install_check comment
      
      * Fixed unittest timeout
      
      * fixed unittest error
      
      * move Program default_xx_program to static package
      
      * optimize unittest method
      
      * fixed framework __init__ format
      
      * fixed jit path
      
      * delete alias
      
      * move jit to paddle
      
      * Fixed unittest format
      
      * fixed paddle.default_main_program
      
      * Fixed save load API in paddle __init__.py
      
      * fixed ci paddle.imperative.to_variable
      2efcb481