From 42108fb04e90b1d142f7cdcc201ed15486d2b686 Mon Sep 17 00:00:00 2001 From: WangXi Date: Wed, 19 Feb 2020 11:59:26 +0800 Subject: [PATCH] Add check nan inf tools doc (#1658) --- .../advanced_guide/flags/check_nan_inf_cn.md | 74 +++++++++++++++ .../advanced_guide/flags/check_nan_inf_en.md | 87 ++++++++++++++++++ .../flags/check_nan_inf_files/cpu_nan_inf.png | Bin 0 -> 11981 bytes .../cpu_nan_inf_op_var.png | Bin 0 -> 13735 bytes .../flags/check_nan_inf_files/gpu_nan_inf.png | Bin 0 -> 40748 bytes doc/fluid/advanced_guide/flags/debug_cn.rst | 7 +- doc/fluid/advanced_guide/flags/debug_en.rst | 5 + 7 files changed, 172 insertions(+), 1 deletion(-) create mode 100644 doc/fluid/advanced_guide/flags/check_nan_inf_cn.md create mode 100644 doc/fluid/advanced_guide/flags/check_nan_inf_en.md create mode 100644 doc/fluid/advanced_guide/flags/check_nan_inf_files/cpu_nan_inf.png create mode 100644 doc/fluid/advanced_guide/flags/check_nan_inf_files/cpu_nan_inf_op_var.png create mode 100644 doc/fluid/advanced_guide/flags/check_nan_inf_files/gpu_nan_inf.png diff --git a/doc/fluid/advanced_guide/flags/check_nan_inf_cn.md b/doc/fluid/advanced_guide/flags/check_nan_inf_cn.md new file mode 100644 index 000000000..2b24f7e63 --- /dev/null +++ b/doc/fluid/advanced_guide/flags/check_nan_inf_cn.md @@ -0,0 +1,74 @@ +# check nan inf工具 + +check nan inf工具用于检查Operator的结果是否含有nan(not a number,非有效数)或inf(infinite,无穷大数)。支持float32、double、float16三类浮点型,整型由于不存在nan、inf不作检查。 + +## 使用 + +#### 1. 使用方法 +设置环境变量为FLAGS_check_nan_inf为True或者1即可。 +``` +export FLAGS_check_nan_inf=1 # 或者=True +``` + +#### 2. 进阶使用 +添加上述环境变量后,可以通过设置环境变量跳过op、op类型及op变量的检查。设置的格式如下: +``` +PADDLE_INF_NAN_SKIP_OP="op0,op1,op2" +PADDLE_INF_NAN_SKIP_ROLE="role1,role2,role3" +PADDLE_INF_NAN_SKIP_VAR="op0:var0,op0:var1,op1:var0" +``` +其中上面三个环境变量分别表示跳过op、op类型和op里变量的检查。 +##### 2.1 跳过op检查 +如下设置中前一个只跳过mul op的nan inf检查,后一个设置则跳过mul、softmax_with_cross_entropy这两个op的检查。 +`注意`:op跳过只接受精准匹配,要跳过softmax_with_cross_entropy的检查,不能设置环境变量为softmax_with或者with_cross进行模糊匹配,必须设置softmax_with_cross_entropy全名。 +``` +export PADDLE_INF_NAN_SKIP_OP="mul" +export PADDLE_INF_NAN_SKIP_OP="mul,softmax_with_cross_entropy" +``` +##### 2.2 跳过op类型检查 +目前接受的类型有: forward、backward、optimize、rpc、dist、lrsched、loss、default。正常fp32训练中,不需要跳过op类型进行nan inf检查。但在`fp16`中,在反向过程出现inf会对其进行修正,所以一般需要跳过backward的检查,这也是添加该功能的缘由。 +如下设置中前一个只跳过backward的检查,后一个设置跳过backward、optimize两种类型的检查。同上,op类型跳过也只支持精准匹配。 +``` +export PADDLE_INF_NAN_SKIP_ROLE="backward" +export PADDLE_INF_NAN_SKIP_ROLE="backward,optimize" +``` +##### 2.3 跳过指定op中变量的检查 +如下设置中前一个跳过mul op中fc_0.tmp_0变量,后一个设置则跳过mul op中fc_0.tmp_0和fc_0.tmp_1变量及 dropout op的new_relative变量。 +``` +export PADDLE_INF_NAN_SKIP_VAR="mul:fc_0.tmp_0" +export PADDLE_INF_NAN_SKIP_VAR="mul:fc_0.tmp_0,mul:fc_0.tmp_1,dropout:new_relative" +``` +`注意`:指定op变量检查中,对于op只接受精准匹配,对于变量则为模糊匹配,如上述的mlu op中的fc_0.tmp_0和fc_0.tmp_1变量可用c_0.tmp进行匹配。 + +## 试用 +可以使用单测中的[check_nan_inf_base.py](https://github.com/PaddlePaddle/Paddle/blob/develop/python/paddle/fluid/tests/unittests/check_nan_inf_base.py)文件进行试用。该脚本已设置FLAGS_check_nan_inf=1打开check nan inf功能。直接python check_nan_inf_base.py执行即可。 +#### 1. GPU日志信息 +其中GPU的check nan信息由于在GPU中打印,所以nan inf信息会出现在出错信息栈前面。工具中会打印出现inf、nan的op及tensor名称,每个block会打印nan、inf、num中的3个值,并打印各自block中nan、inf、num的数量。 +![gpu_nan_inf.png](check_nan_inf_files/gpu_nan_inf.png) +#### 2. CPU日志信息 +CPU中打印的nan、inf、num会在出错信息栈前面显示,同样打印了nan、inf、num中的三个值,并打印nan、inf、num的数量。check nan信息中op及tensor的名称会在最后显示。 + +![cpu_nan_inf.png](check_nan_inf_files/cpu_nan_inf.png) + +![cpu_nan_inf_op_var.png](check_nan_inf_files/cpu_nan_inf_op_var.png) + +## 速度 +测试环境:v100 32G单卡测试,Resnet50模型,imagenet数据集。`不同环境模型数据集下速度可能不同,以下速度仅供参考` +>不检查nan inf速度,每张卡307.7 images/s。 +检查nan inf速度,每张卡250.2 images/s。 + +## 原理 +#### 1. 工具原理 +对于浮点类型操作,正常数值num,无穷大inf,非数值nan有如下运行关系。更详细可查看[INF, NAN, and NULL](https://wiki.analytica.com/index.php?title=INF,_NAN,_and_NULL_-_Exception_values&title=INF,_NAN,_and_NULL_-_Exception_values) +``` +nan - nan = nan, inf - inf = nan, num - num = 0, +nan + nan = nan, inf + inf = inf, nan + 0 = nan, +inf + 0 = inf, nan + inf = nan, 0 + 0 = 0 +``` +基于此使用如下操作仅需最后检查sum是否为nan或者inf就行了。 +``` +for(value:values): sum += (value-value) +``` + +***`注意`:本文档的进阶使用、速度、原理目前仅在develop版本的paddle生效,并将随1.7版本的paddle发布。 +此前版本的check nan inf工具在GPU上不推荐使用,旧工具速度为0.25 images/s,测试会拖慢1000多倍的训练速度。*** \ No newline at end of file diff --git a/doc/fluid/advanced_guide/flags/check_nan_inf_en.md b/doc/fluid/advanced_guide/flags/check_nan_inf_en.md new file mode 100644 index 000000000..96271125a --- /dev/null +++ b/doc/fluid/advanced_guide/flags/check_nan_inf_en.md @@ -0,0 +1,87 @@ +# check nan inf tool + +The check nan inf tool is used to check whether the result of the Operator contains nan(not a number) or inf(infinite number). +Float32, double, and float16 are supported. Integers are not checked because there is no nan or inf. + +## Use +#### 1. Method of use +Set the environment variable FLAGS_check_nan_inf to True or 1. +``` +export FLAGS_check_nan_inf=1 # or set =True +``` + +#### 2. Advanced use +After adding the above environment variables, you can skip the check of op, op role, and variables by setting environment variables. +The format of the setting is as follows: +``` +PADDLE_INF_NAN_SKIP_OP="op0,op1,op2" +PADDLE_INF_NAN_SKIP_ROLE="role1,role2,role3" +PADDLE_INF_NAN_SKIP_VAR="op0:var0,op0:var1,op1:var0" +``` +The three above environment variables respectively indicate skipping the checks of op, op role, and variables in op. +##### 2.1 Skip op check +In the following settings, the previous one only skips the nan inf check of the mul op, and the latter setting skips the check of mul and softmax_with_cross_entropy op. +`Note`: Op skip only accepts exact matches. To skip the softmax_with_cross_entropy check, you cannot set the environment variable to softmax_with or with_cross for fuzzy matching. +You must set the full softmax_with_cross_entropy name. +``` +export PADDLE_INF_NAN_SKIP_OP="mul" +export PADDLE_INF_NAN_SKIP_OP="mul,softmax_with_cross_entropy" +``` +##### 2.2 Skip op role check +The currently accepted types are: forward, backward, optimize, rpc, dist, lrsched, loss, default. +In fp32 training, it is not necessary to skip the nan inf check of the op role. +However in `fp16` training, inf will be corrected in the backpropagation, so it is generally necessary to skip the backward check, which is why this feature is added. +In the following setting, the previous setting only skips the backward check, and the latter setting skips both the backward and optimize checks. +Same as above, the op role skipping only supports exact matching. +``` +export PADDLE_INF_NAN_SKIP_ROLE="backward" +export PADDLE_INF_NAN_SKIP_ROLE="backward,optimize" +``` +##### 2.3 Skip the checking of variables in the specified op +In the following setting, the former skip the fc_0.tmp_0 variable in mul op, and the latter setting skips the fc_0.tmp_0 and fc_0.tmp_1 variables in mul op and the new_relative variable in dropout op. +``` +export PADDLE_INF_NAN_SKIP_VAR="mul:fc_0.tmp_0" +export PADDLE_INF_NAN_SKIP_VAR="mul:fc_0.tmp_0,mul:fc_0.tmp_1,dropout:new_relative" +``` +`Note`: In the specified op variable check, only exact matching is accepted for op, and fuzzy matching is used for variables. +For example, the fc_0.tmp_0 and fc_0.tmp_1 variables in mul op mentioned above can be matched by c_0.tmp + +## Test +You can use the [check_nan_inf_base.py](https://github.com/PaddlePaddle/Paddle/blob/develop/python/paddle/fluid/tests/unittests/check_nan_inf_base.py) file for test. +The script has set FLAGS_check_nan_inf=1 to enable the nan inf check. Just execute `python check_nan_inf_base.py` to test. + +#### 1. GPU log information +The check information of the GPU is printed in the GPU, so the nan inf information appears in front of the error information stack. +The tool will print the name of the op and tensor which find inf or nan. Each block will print the three values of nan, inf, and num. +And will print the number of nan, inf, and num in the respective block. +![gpu_nan_inf.png](check_nan_inf_files/gpu_nan_inf.png) + +#### 2. CPU log information +The nan, inf, and num printed in the CPU are displayed in front of the error message stack. +The three values of nan, inf, and num are also printed, and the number of nan, inf, and num is printed. +The name of the op and tensor which has nan or inf will be displayed in the end. +![cpu_nan_inf.png](check_nan_inf_files/cpu_nan_inf.png) +![cpu_nan_inf_op_var.png](check_nan_inf_files/cpu_nan_inf_op_var.png) + +## Speed +Test environment: v100 32G single card, Resnet50 model, Imagenet dataset. +`The speed may be different under different environments and different model datasets. The following speeds are only for reference` +> Without check nan inf speed, 307.7 images/s per card. +Check nan inf speed, 250.2 images/s per card. + +## Principle +#### 1. Tool principle +For floating-point operations, num(normal numeric), inf(infinite), and nan(not a number) have the following relations. +More details can be found in [INF, NAN, and NULL](https://wiki.analytica.com/index.php?title=INF,_NAN,_and_NULL_-_Exception_values&title=INF,_NAN,_and_NULL_-_Exception_values) +``` +nan - nan = nan, inf - inf = nan, num - num = 0, +nan + nan = nan, inf + inf = inf, nan + 0 = nan, +inf + 0 = inf, nan + inf = nan, 0 + 0 = 0 +``` +Based on this, using the following operation and only check the sum is nan or inf is enough. +``` +for(value:values): sum += (value-value) +``` + +***`Note`: The Advanced use, Speed, and Principles of this document are currently only effective in the develop version of the Paddle, and will be released with the 1.7 version of the Paddle. +It is not recommended to use the previous version of the check nan inf tool on the GPU, the speed of old tools is 0.25 images/s,will slow down the training speed by a thousand times.*** \ No newline at end of file diff --git a/doc/fluid/advanced_guide/flags/check_nan_inf_files/cpu_nan_inf.png b/doc/fluid/advanced_guide/flags/check_nan_inf_files/cpu_nan_inf.png new file mode 100644 index 0000000000000000000000000000000000000000..79fd14c363fc34ce88a46e38ab5c99eecd169bb2 GIT binary patch literal 11981 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 RVBy2SNQ*0om5CVn|1Xb10Zae@ literal 0 HcmV?d00001 diff --git a/doc/fluid/advanced_guide/flags/check_nan_inf_files/cpu_nan_inf_op_var.png b/doc/fluid/advanced_guide/flags/check_nan_inf_files/cpu_nan_inf_op_var.png new file mode 100644 index 0000000000000000000000000000000000000000..ed7b2f1c7717c68c1651f103a080e384c6a99a74 GIT binary patch literal 13735 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 literal 0 HcmV?d00001 diff --git a/doc/fluid/advanced_guide/flags/debug_cn.rst b/doc/fluid/advanced_guide/flags/debug_cn.rst index f414de88c..63eb1bec4 100644 --- a/doc/fluid/advanced_guide/flags/debug_cn.rst +++ b/doc/fluid/advanced_guide/flags/debug_cn.rst @@ -79,4 +79,9 @@ FLAGS_reader_queue_speed_test_mode=True - 启用pyreader测试模式。 注意 ------- -仅当使用py_reader时该flag才有效。 \ No newline at end of file +仅当使用py_reader时该flag才有效。 + +.. toctree:: + :hidden: + + check_nan_inf_cn.md diff --git a/doc/fluid/advanced_guide/flags/debug_en.rst b/doc/fluid/advanced_guide/flags/debug_en.rst index 39b93240d..713e7d954 100644 --- a/doc/fluid/advanced_guide/flags/debug_en.rst +++ b/doc/fluid/advanced_guide/flags/debug_en.rst @@ -79,3 +79,8 @@ FLAGS_reader_queue_speed_test_mode=True will enable the pyreader test mode. Note ------- This flag will work only when you are using py_reader. + +.. toctree:: + :hidden: + + check_nan_inf_en.md \ No newline at end of file -- GitLab