1. 15 3月, 2022 3 次提交
    • F
      [NPU] add AMP O1 support (#40362) · 69dd43d1
      furnace 提交于
      * [NPU] add AMP O1 support
      
      * [NPU] fix NOTE and warnings
      69dd43d1
    • H
      Move one hot to phi (#39876) · 7701db37
      hong 提交于
      * move one hot to phi; test=develop
      
      * fix bugs; test=develop
      
      * fix bugs; test=develop
      
      * add infer meta; test=develop
      
      * fix bugs; test=develop
      
      * resolve confilct
      
      * resolve confilct
      
      * fix bug;
      
      * fix error; test=develop
      
      * update; test=develop
      
      * polish code; test=develop
      
      * add one api in eager mode; test=develop
      
      * add one hot test; test=develop
      
      * remove use less code; test=develop
      
      * fix bug; test=develop
      
      * polish code; test=develop
      
      * polish code; test=develop
      7701db37
    • H
      [Dygraph] Refactoring of reducer in DataParallel (#40389) · 1a32391c
      Haohongxiang 提交于
      * refactor reducer
      
      * modify cmakelists
      
      * solve conflicts
      
      * rename group and update process_group
      
      * fix bugs of ProcessGroupNCCL
      
      * modify for CIs
      
      * refactoring reducer
      1a32391c
  2. 14 3月, 2022 3 次提交
    • J
      Support custom op and paddle.autograd.bacward in eager (#40423) · 227fa408
      Jiabin Yang 提交于
      * eager, test=develop
      
      * fix bug, test=develop
      
      * eager, test=develop
      
      * merge legacy to fluid
      
      * eager, test=develop
      
      * eager, test=develop
      
      * Refactor TensorAdd func by template and remove gradient_accumulation in eager
      
      * Remove needless target name
      
      * eager, test=develop
      
      * eager, test=develop
      
      * Use overload instead of template
      
      * Remove legacy code
      
      * Remove legacy code
      
      * selectedrows, test=develop
      
      * Remove DataType test
      
      * eager, test=develop
      
      * eager, test=develop
      
      * support gan, test=develop
      
      * Using Tensor directly instead of using EagerTensor
      
      * support gradient_accumulation
      
      * make test_imperative_lod_tensor_to_selected_rows longer
      
      * make test_imperative_lod_tensor_to_selected_rows longer
      
      * refine code
      
      * ptb, test=develop
      
      * Rename all EagerTensor to Tensor
      
      * Rename some EagerTensor to Tensor
      
      * rename EagerTensor to EagerVariable
      
      * eager, test=develop
      
      * eager, test=develop
      
      * eager, test=develop
      
      * eager, test=develop
      
      * add more test
      
      * eager, test=develop
      
      * Support copiable selected rows and merge develop
      
      * save load, eager, test=develop
      
      * save load, eager, test=develop
      
      * refine, test=develop
      
      * remove useless _set_value method
      
      * refine, test=develop
      
      * refine, test=develop
      
      * revert static_runner, test=develop
      
      * EagerTensor to Tensor, test=develop
      
      * refine, test=develop
      
      * refine, test=develop
      
      * clear grad, test=develop
      
      * merge, develop
      
      * merge, develop
      
      * merge, test=develop
      
      * merge, test=develop
      
      * Support quant and part of slice
      
      * support legacy static save
      
      * extend slim tests time
      
      * remove imperative on inference
      
      * remove imperative on inference
      
      * merge develop
      
      * fix typo
      
      * fix typo
      
      * split slice related code into 2 part for imperative and eager
      
      * split slice from inference
      
      * split slice from inference
      
      * fix test_tensor_register_hook
      
      * support custom op in eager mode
      
      * fix inference deps error
      
      * split eager utils from custom operator
      
      * fix type match
      
      * fix typo
      Co-authored-by: NWang Huan <wanghuan29@baidu.com>
      Co-authored-by: NWeilong Wu <veyron_wu@163.com>
      Co-authored-by: Nwanghuancoder <wanghuancoder@163.com>
      227fa408
    • W
      [Eager] [Bug Fix] fix eager trace op bug (#40402) · 65adfecf
      wanghuancoder 提交于
      * fix some slice bug, test=develop
      
      * refine, test=develop
      65adfecf
    • 0
      Refine partial_program for new run_program OP (#40355) · afafb1c3
      0x45f 提交于
      * refine partial_program
      
      * fix code for test_mnist.py train
      
      * support quantify UT
      
      * make __fake_vars and _double_grads to lazy
      
      * fix comments
      afafb1c3
  3. 09 3月, 2022 1 次提交
  4. 08 3月, 2022 1 次提交
  5. 07 3月, 2022 1 次提交
  6. 05 3月, 2022 1 次提交
  7. 04 3月, 2022 1 次提交
    • H
      Add digamma abs trunc yaml (#40024) · 0bfba16b
      hong 提交于
      * add digamma, abs, trunc; test=develop
      
      * fix bug and add diagonal; test=develop
      
      * add name coverter; test=develop
      
      * update tracer.py; test=develop
      
      * add test case; test=develop
      
      * fix bugs; test=develop
      0bfba16b
  8. 03 3月, 2022 1 次提交
    • J
      Support slim eager (#39874) · da47544c
      Jiabin Yang 提交于
      * eager, test=develop
      
      * fix bug, test=develop
      
      * eager, test=develop
      
      * merge legacy to fluid
      
      * eager, test=develop
      
      * eager, test=develop
      
      * Refactor TensorAdd func by template and remove gradient_accumulation in eager
      
      * Remove needless target name
      
      * eager, test=develop
      
      * eager, test=develop
      
      * Use overload instead of template
      
      * Remove legacy code
      
      * Remove legacy code
      
      * selectedrows, test=develop
      
      * Remove DataType test
      
      * eager, test=develop
      
      * eager, test=develop
      
      * support gan, test=develop
      
      * Using Tensor directly instead of using EagerTensor
      
      * support gradient_accumulation
      
      * make test_imperative_lod_tensor_to_selected_rows longer
      
      * make test_imperative_lod_tensor_to_selected_rows longer
      
      * refine code
      
      * ptb, test=develop
      
      * Rename all EagerTensor to Tensor
      
      * Rename some EagerTensor to Tensor
      
      * rename EagerTensor to EagerVariable
      
      * eager, test=develop
      
      * eager, test=develop
      
      * eager, test=develop
      
      * eager, test=develop
      
      * add more test
      
      * eager, test=develop
      
      * Support copiable selected rows and merge develop
      
      * save load, eager, test=develop
      
      * save load, eager, test=develop
      
      * refine, test=develop
      
      * remove useless _set_value method
      
      * refine, test=develop
      
      * refine, test=develop
      
      * revert static_runner, test=develop
      
      * EagerTensor to Tensor, test=develop
      
      * refine, test=develop
      
      * refine, test=develop
      
      * clear grad, test=develop
      
      * merge, develop
      
      * merge, develop
      
      * merge, test=develop
      
      * merge, test=develop
      
      * Support quant and part of slice
      
      * support legacy static save
      
      * extend slim tests time
      
      * remove imperative on inference
      
      * remove imperative on inference
      
      * merge develop
      
      * fix typo
      
      * fix typo
      
      * split slice related code into 2 part for imperative and eager
      
      * split slice from inference
      
      * split slice from inference
      
      * fix test_tensor_register_hook
      Co-authored-by: NWang Huan <wanghuan29@baidu.com>
      Co-authored-by: NWeilong Wu <veyron_wu@163.com>
      Co-authored-by: Nwanghuancoder <wanghuancoder@163.com>
      da47544c
  9. 01 3月, 2022 1 次提交
  10. 28 2月, 2022 1 次提交
  11. 27 2月, 2022 1 次提交
  12. 26 2月, 2022 1 次提交
  13. 24 2月, 2022 1 次提交
    • W
      [Eager] save load testcase (#39571) · 6b5749eb
      wanghuancoder 提交于
      * eager, test=develop
      
      * fix bug, test=develop
      
      * eager, test=develop
      
      * merge legacy to fluid
      
      * eager, test=develop
      
      * eager, test=develop
      
      * Refactor TensorAdd func by template and remove gradient_accumulation in eager
      
      * Remove needless target name
      
      * eager, test=develop
      
      * eager, test=develop
      
      * Use overload instead of template
      
      * Remove legacy code
      
      * Remove legacy code
      
      * selectedrows, test=develop
      
      * Remove DataType test
      
      * eager, test=develop
      
      * eager, test=develop
      
      * support gan, test=develop
      
      * Using Tensor directly instead of using EagerTensor
      
      * support gradient_accumulation
      
      * make test_imperative_lod_tensor_to_selected_rows longer
      
      * make test_imperative_lod_tensor_to_selected_rows longer
      
      * refine code
      
      * ptb, test=develop
      
      * Rename all EagerTensor to Tensor
      
      * Rename some EagerTensor to Tensor
      
      * rename EagerTensor to EagerVariable
      
      * eager, test=develop
      
      * eager, test=develop
      
      * eager, test=develop
      
      * eager, test=develop
      
      * add more test
      
      * eager, test=develop
      
      * Support copiable selected rows and merge develop
      
      * save load, eager, test=develop
      
      * save load, eager, test=develop
      
      * refine, test=develop
      
      * refine, test=develop
      
      * refine, test=develop
      
      * revert static_runner, test=develop
      
      * EagerTensor to Tensor, test=develop
      
      * refine, test=develop
      
      * refine, test=develop
      
      * clear grad, test=develop
      
      * merge, develop
      
      * merge, develop
      
      * merge, test=develop
      
      * merge, test=develop
      Co-authored-by: NJiabinYang <360788950@qq.com>
      Co-authored-by: NWeilong Wu <veyron_wu@163.com>
      6b5749eb
  14. 23 2月, 2022 2 次提交
    • L
      fix 'is with a literal' warning (#39798) · 22abb6b3
      Leo Chen 提交于
      * fix 'is with a literal'
      
      * fix typo
      22abb6b3
    • W
      [Eager] Support Eager mode for some model testcase (#39248) · abe232d8
      wanghuancoder 提交于
      * eager, test=develop
      
      * fix bug, test=develop
      
      * eager, test=develop
      
      * merge legacy to fluid
      
      * eager, test=develop
      
      * eager, test=develop
      
      * Refactor TensorAdd func by template and remove gradient_accumulation in eager
      
      * Remove needless target name
      
      * eager, test=develop
      
      * eager, test=develop
      
      * Use overload instead of template
      
      * Remove legacy code
      
      * Remove legacy code
      
      * selectedrows, test=develop
      
      * Remove DataType test
      
      * eager, test=develop
      
      * eager, test=develop
      
      * support gan, test=develop
      
      * Using Tensor directly instead of using EagerTensor
      
      * support gradient_accumulation
      
      * make test_imperative_lod_tensor_to_selected_rows longer
      
      * make test_imperative_lod_tensor_to_selected_rows longer
      
      * refine code
      
      * ptb, test=develop
      
      * Rename all EagerTensor to Tensor
      
      * Rename some EagerTensor to Tensor
      
      * rename EagerTensor to EagerVariable
      
      * eager, test=develop
      
      * eager, test=develop
      
      * eager, test=develop
      
      * eager, test=develop
      
      * add more test
      
      * eager, test=develop
      
      * Support copiable selected rows and merge develop
      
      * refine, test=develop
      
      * refine, test=develop
      
      * refine, test=develop
      
      * refine, test=develop
      
      * clear grad, test=develop
      
      * merge, develop
      
      * merge, develop
      Co-authored-by: NJiabinYang <360788950@qq.com>
      Co-authored-by: NWeilong Wu <veyron_wu@163.com>
      abe232d8
  15. 22 2月, 2022 2 次提交
  16. 18 2月, 2022 1 次提交
    • Z
      [AMP] support GPU BF16 amp for dygraph (#39029) · 7d6d3848
      zhangbo9674 提交于
      * support dtype param for auto_cast
      
      * add amp_dtype for tracer
      
      * add unsupported bf16 list
      
      * support bf16 amp for O2
      
      * refine python interface for bfloat16
      
      * refine code
      
      * refine code
      
      * refine unittest
      
      * refine code
      
      * refine code
      
      * add bf16 o1
      
      * refine code by comment
      
      * add gradient accumulator
      
      * add recompute
      7d6d3848
  17. 16 2月, 2022 5 次提交
  18. 14 2月, 2022 1 次提交
    • Z
      Adjusted python-level trace_op to accomodate final state Eager Dygraph (#39319) · ec8a0c1d
      Zhanlue Yang 提交于
      * Removed debug info
      
      * Added automatic code generation for final state Eager Dygraph
      
      * Modified backward yaml
      
      * Added EagerUtils helper functions for final state CodeGen
      
      * Adjusted CMakeFiles to support compilation for final state auto generated codes
      
      * Added python-c code generation for final state Eager Dygraph
      
      * Fixed minor issue
      
      * Fixed yaml.load() method failure
      
      * Fixed minor issues
      
      * Refactored Python-C Attributes Parsing Functions
      
      * Fixed minor issue with Python-C AddFunctions
      
      * Adjusted python-level trace_op to accomodate final state Eager Dygraph
      
      * Added Logs for final state Eager Dygraph
      
      * Fixed merge issues
      
      * Fixed minor issue
      ec8a0c1d
  19. 10 2月, 2022 1 次提交
  20. 09 2月, 2022 1 次提交
    • J
      Replace EagerTensor with Tensor (#39376) · 945a3ce9
      Jiabin Yang 提交于
      * merge legacy to fluid
      
      * Remove legacy code
      
      * Remove legacy code
      
      * Remove DataType test
      
      * Using Tensor directly instead of using EagerTensor
      
      * support gradient_accumulation
      
      * make test_imperative_lod_tensor_to_selected_rows longer
      
      * make test_imperative_lod_tensor_to_selected_rows longer
      945a3ce9
  21. 08 2月, 2022 2 次提交
  22. 24 1月, 2022 2 次提交
  23. 23 1月, 2022 1 次提交
    • W
      Support test_imperative apply and Add a setter for EagerTensor (#39016) · 8c5c1046
      Weilong Wu 提交于
      * Rearranged Eager AutoCodeGen directory structure
      
      * Removed USE_OP in Eager AutoCodeGen
      
      * Enabled generation for Operators without Grad/Inputs/Outputs
      
      * Resolved operators without input
      
      * Fixed merge conflicts
      
      * Enabled Eager AutoCodeGen for 10+ more operators
      
      * Refactored Eager AutoCodeGen with more organized helper objects
      
      * Enabled Eager AutoCodeGen for operators with multiple OpBases
      
      * Adjusted Eager AutoCodeGen to Enable Passing Output Tensor as Input Argument
      
      * Handled Dispensable Inputs/Outputs in Eager AutoCodeGen
      
      * Adjusted function generation/call between Python-C API & Dygraph API
      
      * Synchronized auto-generated Python-C API with Dygraph Forward Functions
      
      * support more eager tensor api
      
      * fix merge compile error
      
      * fix compile error and fit develop code
      
      * support pure CPU
      
      * fix some logic error in eager_mode
      
      * support _varbase_creator in eager mode
      
      * Added safe_initialized interface to EagerTensor for use in processing dispensable inputs
      
      * for eager mode
      
      * refine
      
      * support multiple constructor for eager tensor
      
      * add place related code
      
      * polish code
      
      * specific randint with dtype of int64
      
      * Support pure cpu test
      
      * eager logic
      
      * refine test in pure cpu
      
      * eager logic
      
      * eager logic
      
      * eager logic, test=develop
      
      * skip core.eager when in inference, test=develop
      
      * refine, test=develop
      
      * refine, test=develop
      
      * call RetainGrad after run forward kernel, test=develop
      
      * refine, test=develop
      
      * support dygraph util, meta, guard test
      
      * eager test case
      
      * support inference test
      
      * refine test and fix initializer failed
      
      * modify eagertensor patch method
      
      * add eagertensor.clear_grandint, test=develop
      
      * refine, test=develop
      
      * refine, test=develop
      
      * refine, test=develop
      
      * support create varbase and fix retain grad error
      
      * call monkey_patch_varbase in _test_eager_guard, test=develop
      
      * fix windows error
      
      * split clear_gradient to clear_gradient and zero_grads, test=develop
      
      * refine, test=develop
      
      * refine, test=develop
      
      * support test_imperative_basic test in eager mode
      
      * remove additional log in variable.h
      
      * remove additional log in variable.h
      
      * remove additional code create in merge
      
      * eager
      
      * fix some eager logic, test=develop
      
      * refine, test=develop
      
      * refine, test=develop
      
      * refine, test=develop
      
      * patch_tensor_method_func, test=develop
      
      * refine, test=develop
      
      * eager test case, test=develop
      
      * refine, test=develop
      
      * eager, test=develop
      
      * eager, test=develop
      
      * eager optimizer, test=develop
      
      * eager optimizer, test=develop
      
      * eager test_imperative_optimizer_v2, test=develop
      
      * eager, test=develop
      
      * refine, test=develop
      
      * refine, test=develop
      
      * eager, test=develop
      
      * add resize in share buffer to, test=develop
      
      * eager, test=develop
      
      * fix _share_buffer_to, test=develop
      
      * refine, test=develop
      
      * refine, test=develop
      
      * support eager for dataloader,test=develop
      
      * Exposed EagerTensor's set func to implement set_value func
      
      * Rename set to _set_value, Supplement the corresponding test case
      
      * fix test concat dev api build failed
      
      * fix conflict
      
      * fix conflict
      
      * Use extern to Polish code
      Co-authored-by: Njim19930609 <jim19930609@gmail.com>
      Co-authored-by: NJiabinYang <360788950@qq.com>
      Co-authored-by: NWang Huan <wanghuan29@baidu.com>
      Co-authored-by: Nwanghuancoder <wanghuancoder@163.com>
      Co-authored-by: Nchentianyu03 <chentianyu03@baidu.com>
      8c5c1046
  24. 20 1月, 2022 1 次提交
    • W
      [Eager] Support Eager mode for some testcase (#38783) · d21074cd
      wanghuancoder 提交于
      * Rearranged Eager AutoCodeGen directory structure
      
      * Removed USE_OP in Eager AutoCodeGen
      
      * Enabled generation for Operators without Grad/Inputs/Outputs
      
      * Resolved operators without input
      
      * Fixed merge conflicts
      
      * Enabled Eager AutoCodeGen for 10+ more operators
      
      * Refactored Eager AutoCodeGen with more organized helper objects
      
      * Enabled Eager AutoCodeGen for operators with multiple OpBases
      
      * Adjusted Eager AutoCodeGen to Enable Passing Output Tensor as Input Argument
      
      * Handled Dispensable Inputs/Outputs in Eager AutoCodeGen
      
      * Adjusted function generation/call between Python-C API & Dygraph API
      
      * Synchronized auto-generated Python-C API with Dygraph Forward Functions
      
      * support more eager tensor api
      
      * fix merge compile error
      
      * fix compile error and fit develop code
      
      * support pure CPU
      
      * fix some logic error in eager_mode
      
      * support _varbase_creator in eager mode
      
      * Added safe_initialized interface to EagerTensor for use in processing dispensable inputs
      
      * for eager mode
      
      * refine
      
      * support multiple constructor for eager tensor
      
      * add place related code
      
      * polish code
      
      * specific randint with dtype of int64
      
      * Support pure cpu test
      
      * eager logic
      
      * refine test in pure cpu
      
      * eager logic
      
      * eager logic
      
      * eager logic, test=develop
      
      * skip core.eager when in inference, test=develop
      
      * refine, test=develop
      
      * refine, test=develop
      
      * call RetainGrad after run forward kernel, test=develop
      
      * refine, test=develop
      
      * support dygraph util, meta, guard test
      
      * eager test case
      
      * support inference test
      
      * refine test and fix initializer failed
      
      * modify eagertensor patch method
      
      * add eagertensor.clear_grandint, test=develop
      
      * refine, test=develop
      
      * refine, test=develop
      
      * refine, test=develop
      
      * support create varbase and fix retain grad error
      
      * call monkey_patch_varbase in _test_eager_guard, test=develop
      
      * fix windows error
      
      * split clear_gradient to clear_gradient and zero_grads, test=develop
      
      * refine, test=develop
      
      * refine, test=develop
      
      * support test_imperative_basic test in eager mode
      
      * remove additional log in variable.h
      
      * remove additional log in variable.h
      
      * remove additional code create in merge
      
      * eager
      
      * fix some eager logic, test=develop
      
      * refine, test=develop
      
      * refine, test=develop
      
      * refine, test=develop
      
      * patch_tensor_method_func, test=develop
      
      * refine, test=develop
      
      * eager test case, test=develop
      
      * refine, test=develop
      
      * eager, test=develop
      
      * eager, test=develop
      
      * eager optimizer, test=develop
      
      * eager optimizer, test=develop
      
      * eager test_imperative_optimizer_v2, test=develop
      
      * eager, test=develop
      
      * refine, test=develop
      
      * refine, test=develop
      
      * eager, test=develop
      
      * add resize in share buffer to, test=develop
      
      * eager, test=develop
      
      * fix _share_buffer_to, test=develop
      
      * refine, test=develop
      
      * refine, test=develop
      
      * support eager for dataloader,test=develop
      Co-authored-by: Njim19930609 <jim19930609@gmail.com>
      Co-authored-by: NJiabinYang <360788950@qq.com>
      d21074cd
  25. 17 1月, 2022 1 次提交
  26. 11 1月, 2022 3 次提交
    • Z
      [AMP] Check call order of paddle.amp.decorate and paddle.DataParallel (#38785) · fbb40281
      zhangbo9674 提交于
      * check amp.decorate and DataParallel
      
      * refine coverage
      
      * fix layer dtype
      
      * refine code
      fbb40281
    • 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
    • W
      [Eager] fix some eager logic (#38576) · d3686471
      wanghuancoder 提交于
      * Rearranged Eager AutoCodeGen directory structure
      
      * Removed USE_OP in Eager AutoCodeGen
      
      * Enabled generation for Operators without Grad/Inputs/Outputs
      
      * Resolved operators without input
      
      * Fixed merge conflicts
      
      * Enabled Eager AutoCodeGen for 10+ more operators
      
      * Refactored Eager AutoCodeGen with more organized helper objects
      
      * Enabled Eager AutoCodeGen for operators with multiple OpBases
      
      * Adjusted Eager AutoCodeGen to Enable Passing Output Tensor as Input Argument
      
      * Handled Dispensable Inputs/Outputs in Eager AutoCodeGen
      
      * Adjusted function generation/call between Python-C API & Dygraph API
      
      * Synchronized auto-generated Python-C API with Dygraph Forward Functions
      
      * support more eager tensor api
      
      * fix merge compile error
      
      * fix compile error and fit develop code
      
      * support pure CPU
      
      * fix some logic error in eager_mode
      
      * support _varbase_creator in eager mode
      
      * Added safe_initialized interface to EagerTensor for use in processing dispensable inputs
      
      * for eager mode
      
      * refine
      
      * support multiple constructor for eager tensor
      
      * add place related code
      
      * polish code
      
      * specific randint with dtype of int64
      
      * Support pure cpu test
      
      * eager logic
      
      * refine test in pure cpu
      
      * eager logic
      
      * eager logic
      
      * eager logic, test=develop
      
      * skip core.eager when in inference, test=develop
      
      * refine, test=develop
      
      * refine, test=develop
      
      * call RetainGrad after run forward kernel, test=develop
      
      * refine, test=develop
      
      * support dygraph util, meta, guard test
      
      * eager test case
      
      * support inference test
      
      * refine test and fix initializer failed
      
      * modify eagertensor patch method
      
      * add eagertensor.clear_grandint, test=develop
      
      * refine, test=develop
      
      * refine, test=develop
      
      * refine, test=develop
      
      * support create varbase and fix retain grad error
      
      * call monkey_patch_varbase in _test_eager_guard, test=develop
      
      * fix windows error
      
      * split clear_gradient to clear_gradient and zero_grads, test=develop
      
      * refine, test=develop
      
      * refine, test=develop
      
      * support test_imperative_basic test in eager mode
      
      * remove additional log in variable.h
      
      * remove additional log in variable.h
      
      * remove additional code create in merge
      
      * eager
      
      * fix some eager logic, test=develop
      
      * refine, test=develop
      
      * refine, test=develop
      
      * refine, test=develop
      
      * refine, test=develop
      
      * refine, test=develop
      Co-authored-by: Njim19930609 <jim19930609@gmail.com>
      Co-authored-by: NJiabinYang <360788950@qq.com>
      d3686471