Skip to content

Commit 3186b59

Browse files
committed
Optimize doc of dynamic-to-static debugging and error_handling
1 parent d2f73ff commit 3186b59

File tree

2 files changed

+20
-13
lines changed

2 files changed

+20
-13
lines changed

doc/paddle/guides/dygraph_to_static/debugging_cn.md

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
```python
1010
import paddle
1111
import numpy as np
12-
paddle.disable_static()
1312
# 关闭动转静动能
1413
paddle.jit.ProgramTranslator().enable(False)
1514

@@ -98,7 +97,7 @@ func(np.ones([3, 2]))
9897
return x
9998
```
10099
101-
2. 使用 `set_code_level(level)` 或环境变量 `TRANSLATOR_CODE_LEVEL=level`
100+
2. 使用 [`set_code_level(level=100, also_to_stdout=False)`](../../../paddle/api/paddle/fluid/dygraph/jit/set_code_level_cn.html) 或环境变量 `TRANSLATOR_CODE_LEVEL=level`
102101
103102
通过调用 `set_code_level` 或设置环境变量 `TRANSLATOR_CODE_LEVEL`,可以在日志中查看转换后的代码:
104103
@@ -130,7 +129,8 @@ func(np.ones([3, 2]))
130129
3, true_fn_0, false_fn_0, (x,), (x,), (x,))
131130
return x
132131
```
133-
`set_code_level` 函数可以设置查看不同的AST Transformer转化后的代码,详情请见 [set_code_level](../../../paddle/api/paddle/fluid/dygraph/jit/set_code_level_cn.html)。
132+
此外,如果您想将转化后的代码也输出到 ``sys.stdout``, 可以设置参数 ``also_to_stdout`` 为 True,否则将仅输出到 ``sys.stderr``
133+
`set_code_level` 函数可以设置查看不同的 AST Transformer 转化后的代码,详情请见 [set_code_level](../../../paddle/api/paddle/fluid/dygraph/jit/set_code_level_cn.html)。
134134
135135
## 使用 `print`
136136
`print` 函数可以用来查看变量,该函数在动转静中会被转化。当仅打印 Paddle Tensor 时,实际运行时会被转换为 Paddle 算子 [Print](../../api_cn/layers_cn/Print_cn.html),否则仍然运行 `print`
@@ -168,7 +168,7 @@ Here call print function.
168168
169169
## 日志打印
170170
ProgramTranslator在日志中记录了额外的调试信息,以帮助您了解动转静过程中函数是否被成功转换。
171-
您可以调用 [`paddle.jit.set_verbosity(level)`]((../../../paddle/api/paddle/fluid/dygraph/jit/set_verbosity_cn.html)) 或设置环境变量 `TRANSLATOR_VERBOSITY=level` 来设置日志详细等级,并查看不同等级的日志信息。目前,`level` 可以取值0-3:
171+
您可以调用 [`paddle.jit.set_verbosity(level=0, also_to_stdout=False)`]((../../../paddle/api/paddle/fluid/dygraph/jit/set_verbosity_cn.html)) 或设置环境变量 `TRANSLATOR_VERBOSITY=level` 来设置日志详细等级,并查看不同等级的日志信息。目前,`level` 可以取值0-3:
172172
- 0: 无日志
173173
- 1: 包括了动转静转化流程的信息,如转换前的源码、转换的可调用对象
174174
- 2: 包括以上信息,还包括更详细函数转化日志
@@ -190,7 +190,7 @@ os.environ["TRANSLATOR_VERBOSITY"] = '3'
190190
191191
运行结果:
192192
```bash
193-
2020-XX-XX 00:00:00,123-Level 1: Source code:
193+
2020-XX-XX 00:00:00,123 Dynamic-to-Static INFO: (Level 1) Source code:
194194
@paddle.jit.to_static
195195
def func(x):
196196
x = paddle.to_tensor(x)
@@ -200,5 +200,6 @@ def func(x):
200200
x = paddle.ones(shape=[1])
201201
return x
202202

203-
2020-XX-XX 00:00:00,152-Level 1: Convert callable object: convert <built-in function len>.
203+
2020-XX-XX 00:00:00,152 Dynamic-to-Static INFO: (Level 1) Convert callable object: convert <built-in function len>.
204204
```
205+
此外,如果您想将日志也输出到 ``sys.stdout``, 可以设置参数 ``also_to_stdout`` 为 True,否则将仅输出到 ``sys.stderr``,详情请见 [set_verbosity](../../../paddle/api/paddle/fluid/dygraph/jit/set_verbosity_cn.html)。

doc/paddle/guides/dygraph_to_static/error_handling_cn.md

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,15 @@
11
# 报错信息处理
22

3-
本节内容将介绍使用动态图转静态图(下文简称:动转静)功能发生异常时,[ProgramTranslator](./program_translator_cn.html)对报错信息做的处理,以帮助您更好地理解动转静报错信息。使用动转静功能运行动态图代码时,内部可以分为2个步骤:动态图代码转换成静态图代码,运行静态图代码。接下来将分别介绍这2个步骤中的异常报错情况。
3+
本节内容将介绍使用动态图转静态图(下文简称:动转静)功能发生异常时,[ProgramTranslator](./program_translator_cn.html)的动转静报错模块对报错信息做的处理,以帮助您更好地理解动转静报错信息。使用动转静功能运行动态图代码时,内部可以分为2个步骤:动态图代码转换成静态图代码,运行静态图代码。接下来将分别介绍这2个步骤中的异常报错情况。
44

55
## 动转静过程中的异常
6-
在动态图代码转换成静态图代码的过程中,如果ProgramTranslator无法转换一个函数时,将会显示警告信息,并尝试直接运行该函数。
6+
在动态图代码转换成静态图代码的过程中,如果 ProgramTranslator 无法转换一个函数时,将会显示警告信息,并尝试直接运行该函数。
77
如下代码中,函数 `inner_func` 在调用前被转换成静态图代码,当 `x = inner_func(data)` 调用该函数时,不能重复转换,会给出警告信息:
88

99
```python
1010
import paddle
1111
import numpy as np
1212

13-
paddle.disable_static()
14-
1513
@paddle.jit.to_static
1614
def func():
1715
def inner_func(x):
@@ -26,7 +24,7 @@ func()
2624
ProgramTranslator打印的警告信息如下:
2725

2826
```bash
29-
WARNING: <function inner_func at 0x7fa9bcaacf50> doesn't have to be transformed to static function because it has been transformed before, it will be run as-is.
27+
2020-01-01 00:00:00,104-WARNING: <function inner_func at 0x125b3a550> doesn't have to be transformed to static function because it has been transformed before, it will be run as-is.
3028
```
3129
3230
## 运行转换后的代码报错
@@ -77,7 +75,7 @@ AssertionError: In user code:
7775
7876
1. 报错栈中,涉及代码转换过程的信息栈默认会被隐藏,不进行展示,以减少干扰信息。
7977
80-
2. ProgramTranslator处理后的报错信息中,会包含提示"In user code:",表示之后的报错栈中,包含动转静前的动态图代码,即用户写的代码:
78+
2. ProgramTranslator 处理后的报错信息中,会包含提示 "In user code:",表示之后的报错栈中,包含动转静前的动态图代码,即用户写的代码:
8179
```bash
8280
AssertionError: In user code:
8381
@@ -95,7 +93,11 @@ AssertionError: In user code:
9593
AssertionError: Only one dimension value of 'shape' in reshape can be -1. But received shape[1] is also -1.
9694
```
9795
98-
运行以下代码,在静态图运行时,即运行期会抛出异常:
96+
> **注解:**
97+
>
98+
> 如果您想查看 Paddle 原生报错信息栈,即未被动转静模块处理过的报错信息栈,可以设置环境变量 ``TRANSLATOR_DISABLE_NEW_ERROR=1`` 关闭动转静报错模块。该环境变量默认值为0,表示默认开启动转静报错模块。
99+
100+
运行以下代码,在静态图运行期会抛出异常:
99101
100102
```Python
101103
@paddle.jit.to_static
@@ -158,3 +160,7 @@ InvalidArgumentError: The 'shape' in ReshapeOp is invalid. The input tensor X'si
158160
```
159161

160162
上述异常中,除了隐藏部分报错栈、报错定位到转换前的动态图代码外,报错信息中包含了C++报错栈 `C++ Traceback``Error Message Summary`,这是 Paddle 的 C++ 端异常信息,经处理后在 Python 的异常信息中显示。
163+
164+
> **注解:**
165+
>
166+
> 如果您想查看被隐藏的信息栈,可以设置环境变量 ``TRANSLATOR_SIMPLIFY_NEW_ERROR=0``,将显示完整的报错信息栈,该环境变量默认值为1,表示隐藏冗余的报错信息栈。

0 commit comments

Comments
 (0)