diff --git a/debug/accuracy_tools/api_accuracy_checker/README.md b/debug/accuracy_tools/api_accuracy_checker/README.md index 53a904f5295c08dc0b7c3eb2e32851493a62e99c..264839ae85e0fdc663c64f79526e18af04b056ba 100644 --- a/debug/accuracy_tools/api_accuracy_checker/README.md +++ b/debug/accuracy_tools/api_accuracy_checker/README.md @@ -43,7 +43,7 @@ Ascend模型精度预检工具能在昇腾NPU上扫描用户训练模型中所 Exception: Model pretest: exit after iteration 1. ``` - - 若报错信息不一致,可能是由于服务器的其他错误信息覆盖导致,可以尝试查找报错信息中的Exception。 + 若报错信息不一致,可能是由于服务器的其他错误信息覆盖导致,可以尝试查找报错信息中的Exception。 - 若训练脚本中的代码不是通过torch.utils.data.dataloader来加载数据或在部分流水并行、张量并行场景下,工具的开关无法在每张卡上自动打开,导致多卡训练dump结果只有一组json,那么需要在训练代码中添加打开工具开关的调用: @@ -70,26 +70,28 @@ Ascend模型精度预检工具能在昇腾NPU上扫描用户训练模型中所 若有需要,用户可以通过msCheckerConfig.update_config来配置dump路径以及开启真实数据模式、指定dump某个step或配置API dump白名单,详细请参见“**msCheckerConfig.update_config**”。 -3. 将API信息输入给run_ut模块运行精度检测并比对,运行如下命令: +2. 将API信息输入给run_ut模块运行精度检测并比对,运行如下命令: ```bash cd $ATT_HOME/debug/accuracy_tools/api_accuracy_checker/run_ut python run_ut.py -forward ./forward_info_0.json -backward ./backward_info_0.json ``` + 某些场景下(如推理),可以不指定backward_info_0.json,不影响预检功能。 + | 参数名称 | 说明 | 是否必选 | | -------------------------------- | ------------------------------------------------------------ | -------- | | -forward或--forward_input_file | 指定前向API信息文件forward_info_{pid}.json。 | 是 | - | -backward或--backward_input_file | 指定反向API信息文件backward_info_{pid}.json。 | 是 | + | -backward或--backward_input_file | 指定反向API信息文件backward_info_{pid}.json。 | 否 | | -save_error_data | 保存精度未达标的API输入输出数据。 | 否 | | -o或--out_path | 指指定run_ut执行结果存盘路径,默认“./”(相对于run_ut的路径)。 | 否 | | -j或--jit_compile | 开启jit编译。 | 否 | | -d或--device | 指定Device ID,选择UT代码运行所在的卡,默认值为0。 | 否 | - | -csv_path或--result_csv_path | 指定本次运行中断时生成的accuracy_checking_result_{timestamp}.csv文件路径,执行run_ut中断时,若想从中断处继续执行,配置此参数即可。 | 否 | + | -csv_path或--result_csv_path | 指定本次运行中断时生成的`accuracy_checking_result_{timestamp}.csv`文件路径,执行run_ut中断时,若想从中断处继续执行,配置此参数即可。 | 否 | - run_ut执行结果包括`accuracy_checking_result_{timestamp}.csv`和`accuracy_checking_details_{timestamp}.csv`两个文件。`accuracy_checking_result_{timestamp}.csv`是API粒度的,标明每个API是否通过测试。建议用户先查看`accuracy_checking_result_{timestamp}.csv`文件,对于其中没有通过测试的或者特定感兴趣的API,根据其API name字段在`accuracy_checking_details_{timestamp}.csv`中查询其各个输出的达标情况以及比较指标。API达标情况介绍请参考“**API预检指标**”。 + run_ut执行结果包括`accuracy_checking_result_{timestamp}.csv`和`accuracy_checking_details_{timestamp}.csv`两个文件。`accuracy_checking_result_{timestamp}.csv`是API粒度的,标明每个API是否通过测试。建议用户先查看`accuracy_checking_result_{timestamp}.csv`文件,对于其中没有通过测试的或者特定感兴趣的API,根据其API name字段在`accuracy_checking_details_{timestamp}.csv`中查询其各个输出的达标情况以及比较指标。详细介绍请参见“**预检结果**”。 -4. 如果需要保存比对不达标的输入和输出数据,可以在run_ut执行命令结尾添加-save_error_data,例如: +3. 如果需要保存比对不达标的输入和输出数据,可以在run_ut执行命令结尾添加-save_error_data,例如: ```bash python run_ut.py -forward ./forward_info_0.json -backward ./backward_info_0.json -save_error_data @@ -157,6 +159,41 @@ msCheckerConfig.update_config(dump_path="./", real_data=False, target_iter=[1], - 配置的API名称须存在于att\debug\accuracy_tools\api_accuracy_checker\hook_module目录下的support_wrap_ops.yaml文件下。 - 方式一和方式二都可以在dump时设置并控制dump对应的API,默认情况下没有配置白名单,dump所有API数据,若在dump操作时没有配置白名单,那么可以在执行run_ut模块前使用方式一配置白名单。 +## 预检结果 + +精度预检生成的`accuracy_checking_result_{timestamp}.csv`和`accuracy_checking_details_{timestamp}.csv`文件示例如下: + +可以通过先查看`accuracy_checking_result_{timestamp}.csv`文件的Forward Test Success和Backward Test Success,判断是否存在未通过测试的API,再查看`accuracy_checking_details_{timestamp}.csv`文件的API详细达标情况,API达标情况介绍请参见“**API预检指标**”。 + +`accuracy_checking_result_{timestamp}.csv` + +![891a3bd8_12631423](img/accuracy_checking_result.png) + +| 字段 | 含义 | +| --------------------- | ------------------------------------------------------------ | +| API name | API名称。 | +| Forward Test Success | 前向API是否通过测试,TRUE为通过,FALSE为不通过。 | +| Backward Test Success | 反向API是否通过测试,TRUE为通过,FALSE为不通过,N/A表示该API没有反向。 | +| Message | 备注信息。 | + +`accuracy_checking_details_{timestamp}.csv` + +![f07237b1_12631423](img/accuracy_checking_details.png) + +| 字段 | 含义 | +| ------------------------------------- | ------------------------------------------------------------ | +| Npu Name | NPU下的API名称。 | +| Bench Dtype | 标杆数据的数据类型。 | +| NPU Dtype | NPU数据的数据类型。 | +| Shape | API的Shape信息。 | +| Cosine Similarity | 余弦相似度。 | +| Max Abs Error | 最大绝对误差。 | +| Relative Error (dual hundredth) | 双百精度指标。 | +| Relative Error (dual thousandth) | 双千精度指标。 | +| Relative Error (dual ten thousandth) | 双万精度指标。 | +| Error Rate | 误差率。 | +| Status | 通过状态,pass表示通过测试,error表示未通过,warning表示存在双千或双万精度指标未通过测试。 | + ## API预检指标 API预检通过测试,则在`accuracy_checking_details_{timestamp}.csv`文件中的“pass”列标记“pass”,否则标记“error”或“warning”,详细规则如下: @@ -173,11 +210,11 @@ API预检通过测试,则在`accuracy_checking_details_{timestamp}.csv`文件 # 溢出解析工具 -针对训练过程中的溢出检测场景(参见[ptdbg_ascend精度工具功能说明](https://gitee.com/ascend/att/tree/master/debug/accuracy_tools/ptdbg_ascend/doc)中的"溢出检测场景"进行溢出检测dump),对于输入正常但输出存在溢出的API,会在训练执行目录下将溢出的API信息按照前向和反向分类,dump并保存为`forward_info_{pid}.json`和`backward_info_{pid}.json`,前向过程溢出的API可通过该工具对`forward_info_{pid}.json`进行解析,输出溢出API为正常溢出还是非正常溢出,从而帮助用户快速判断。 +针对训练过程中的溢出检测场景(参见[ptdbg_ascend精度工具功能说明](https://gitee.com/ascend/att/tree/master/debug/accuracy_tools/ptdbg_ascend/doc)中的"溢出检测场景"进行溢出检测dump),对于输入正常但输出存在溢出的API,会在训练执行目录下将溢出的API信息按照前向和反向分类,dump并保存为`forward_info_{pid}.json`,前向过程溢出的API可通过该工具对`forward_info_{pid}.json`进行解析,输出溢出API为正常溢出还是非正常溢出,从而帮助用户快速判断。 工具支持PyTorch版本:1.8.1/1.11.0/2.0/2.1。 -若溢出检测场景dump结果生成`forward_info_{pid}.json`和`backward_info_{pid}.json`文件,则使用本工具进行解析。操作步骤如下: +若溢出检测场景dump结果生成`forward_info_{pid}.json`文件,则使用本工具进行解析。操作步骤如下: 1. 安装预检工具 @@ -200,12 +237,11 @@ API预检通过测试,则在`accuracy_checking_details_{timestamp}.csv`文件 python run_overflow_check.py -forward ./forward_info_0.json ``` - | 参数名称 | 说明 | 是否必选 | - | -------------------------------- | -------------------------------------------------- | -------- | - | -forward或--forward_input_file | 指定前向API信息文件forward_info_{pid}.json。 | 是 | - | -backward或--backward_input_file | 指定反向API信息文件backward_info_{pid}.json。 | 是 | - | -j或--jit_compile | 开启jit编译。 | 否 | - | -d或--device | 指定Device ID,选择UT代码运行所在的卡,默认值为0。 | 否 | + | 参数名称 | 说明 | 是否必选 | + | ------------------------------ | -------------------------------------------------- | -------- | + | -forward或--forward_input_file | 指定前向API信息文件forward_info_{pid}.json。 | 是 | + | -j或--jit_compile | 开启jit编译。 | 否 | + | -d或--device | 指定Device ID,选择UT代码运行所在的卡,默认值为0。 | 否 | 反向过程溢出的API暂不支持该功能。 diff --git a/debug/accuracy_tools/api_accuracy_checker/img/accuracy_checking_details.png b/debug/accuracy_tools/api_accuracy_checker/img/accuracy_checking_details.png new file mode 100644 index 0000000000000000000000000000000000000000..db65c788f682cb2badda9dd303770b3f94f5b4d1 Binary files /dev/null and b/debug/accuracy_tools/api_accuracy_checker/img/accuracy_checking_details.png differ diff --git a/debug/accuracy_tools/api_accuracy_checker/img/accuracy_checking_result.png b/debug/accuracy_tools/api_accuracy_checker/img/accuracy_checking_result.png new file mode 100644 index 0000000000000000000000000000000000000000..d7f60d0916690d871f7a2eca37ca919e42596c15 Binary files /dev/null and b/debug/accuracy_tools/api_accuracy_checker/img/accuracy_checking_result.png differ diff --git a/debug/accuracy_tools/ptdbg_ascend/doc/FAQ.md b/debug/accuracy_tools/ptdbg_ascend/doc/FAQ.md index 7115a576a6959514ed9fce001774ad273b0f64c5..12c8b454f0413d9dd86fc8a216f7556d76784790 100644 --- a/debug/accuracy_tools/ptdbg_ascend/doc/FAQ.md +++ b/debug/accuracy_tools/ptdbg_ascend/doc/FAQ.md @@ -1,12 +1,13 @@ ## FAQ ## 工具使用 -### 1.环境变量方式导入ptdbg_ascend +### 1. 环境变量方式导入ptdbg_ascend + 当需要使用export att/debug/accuracy_tools/ptdbg_ascend/src/python/ptdbg_ascend/common的目录下,手动添加一个version.py,并加上以下版本号信息,其中‘3.4’为当前ptdbg_ascend的版本 ``` __version__ = '3.4' ``` -### 2.dump指定融合算子 +### 2. dump指定融合算子 dump指定操作当前支持dump指定融合算子的输入输出,需要在att/debug/accuracy_tools/ptdbg_ascend/src/python/ptdbg_ascend/hook_module/support_wrap_ops.yaml中添加,比如以下代码段调用的softmax融合算子 ``` def npu_forward_fused_softmax(self, input_, mask): @@ -38,7 +39,31 @@ def npu_forward_fused_softmax(self, input_, mask): torch版本和硬件差异属于正常情况 ## 异常情况 -### 1. 单机多卡场景dump目录下只生成一个rank目录或pkl文件格式损坏 +### 1. dump过程中报错:NameError: name 'PrecisionDebugger' is not defind + +**故障现象** + +使用ptdbg_ascend工具进行dump操作时,报错提示ptdbg_ascend某些函数找不到(例如PrecisionDebugger、seed_all),NameError: name 'xx' is not defind。 + +**故障原因** + +执行ptdbg_ascend的dump操作之前,同一命令行视图下先安装了精度预检工具,并配置了精度预检工具的环境变量:export PYTHONPATH=$PYTHONPATH:$ATT_HOME/debug/accuracy_tools/,导致ptdbg_ascend的dump操作读取到错误的路径。 + +**故障处理** + +执行如下命令,查看是否配置了精度预检工具的环境变量。 + +```bash +echo $PYTHONPATH +``` + +若配置了精度预检工具的环境变量,则执行如下命令取消该环境变量。 + +```bash +unset PYTHONPATH +``` + +### 2. 单机多卡场景dump目录下只生成一个rank目录或pkl文件格式损坏 **故障现象** @@ -56,7 +81,7 @@ register_hook需要在set_dump_path之后调用,也需要在每个进程上被 - 找到训练代码中调用DDP或者DistributedDataParallel的代码行,把register_hook放到该代码行所在的代码块之后。 - 若代码中均无以上两种情况,那么尽可能把这行代码往后放,并配置register_hook的rank参数。 -### 2. HCCL 报错: error code: EI0006 +### 3. HCCL 报错: error code: EI0006 **故障现象** @@ -69,7 +94,7 @@ CANN软件版本较低导致不兼容。 **故障处理** 升级新版CANN软件版本。 -### 3. torch_npu._C._clear_overflow_npu() RuntimeError NPU error,error code is 107002 +### 4. torch_npu._C._clear_overflow_npu() RuntimeError NPU error,error code is 107002 如果运行溢出检测功能遇到这个报错,采取以下解决方法: 如果是单卡运行,添加如下代码,0是卡号,选择自己空闲的卡号。 @@ -83,24 +108,24 @@ torch.npu.set_device(f'npu:{rank}') ``` 如果运行精度比对功能遇到这个报错,尝试安装最新版本的ptdbg_ascend -### 4. 运行compare.py时报错:json.decoder.JSONDecodeError: Extra data: line 1 column 37(char 36) +### 5. 运行compare.py时报错:json.decoder.JSONDecodeError: Extra data: line 1 column 37(char 36) 遇到这种情况,先更新工具版本为最新版本,再重新运行训练代码dump数据,再用新的dump数据进行精度比对,如果最新版本未能解决问题,请联系ptdbg工具开发人员。 -### 5. AssertionError: assert set(WrapTensorOps) <= set(_tensor_ops) +### 6. AssertionError: assert set(WrapTensorOps) <= set(_tensor_ops) 遇到这种情况,先检查安装的torch版本,建议先更新工具版本为2.2以上,版本2.2的工具支持torch1.8、1.11和2.0 -### 6. dump得到的VF_lstm_99_forward_input.1.0.npy、VF_lstm_99_forward_input.1.1.npy类似的数据是否正常? +### 7. dump得到的VF_lstm_99_forward_input.1.0.npy、VF_lstm_99_forward_input.1.1.npy类似的数据是否正常? 带1.0/1.1/1.2后缀的npy是正常现象,例如当输入数据为[[tensor1, tensor2, tensor3]]会生成这样的后缀 -### 7. dump数据时,dump输出目录只得到了.npy文件,不生成pkl文件 +### 8. dump数据时,dump输出目录只得到了.npy文件,不生成pkl文件 - 检查set_dump_switch("ON"),set_dump_switch("OFF")是否都配置了; - 如果都配置了,观察模型运行日志结尾是否打印“Dump switch is turned off”,如果没有,则表明代码没有执行到set_dump_switch("OFF"),请检查模型代码中是否有exit()操作。 -### 8. 进行compare报错:The current file contains stack information, please turn on the stack_mode +### 9. 进行compare报错:The current file contains stack information, please turn on the stack_mode 在比对脚本中,设置stack_mode=True,例如: ``` @@ -114,38 +139,38 @@ dump_result_param={ } compare(dump_result_param, "./output", stack_mode=True) ``` -### 9. dump指定反向API的ACL级别的数据报错:NameError:name 'torch_npu' is not defined +### 10. dump指定反向API的ACL级别的数据报错:NameError:name 'torch_npu' is not defined - 如果是npu环境,请安装torch_npu; - 如果是gpu环境,暂不支持dump指定API的ACL级别的数据 -### 10. 配置dump_path后,使用工具报错:[ERROR]The file path /home/xxx/dump contains special characters +### 11. 配置dump_path后,使用工具报错:[ERROR]The file path /home/xxx/dump contains special characters - 请检查你设置的dump绝对路径是否包含特殊字符,确保路径名只包含大小写字母、数字、下划线、斜杠、点和短横线 - 注意,如果你执行脚本的路径为/home/abc++/,你设置的dump_path="./dump",工具实际校验的路径为绝对路径/home/abc++/dump,++为特殊字符,会引发本条报错 -### 11. 遇到报错'IsADirectoryError: [Errno 21] Is a directory: '/data/rank0/api_stack_xxx'' +### 12. 报错:'IsADirectoryError: [Errno 21] Is a directory: '/data/rank0/api_stack_xxx'' - 请检查register_hook是否写在了set_dump_path前面,register_hook必须在set_dump_path后调用 - 请检查是否写了多个register_hook或者set_dump_path,如有,请保留一个register_hook或者set_dump_path -### 12. 无法dump matmul权重的反向梯度数据 +### 13. 无法dump matmul权重的反向梯度数据 - matmul期望的输入是二维,当输入不是二维时,会将输入通过view操作展成二维,再进行matmul运算,因此在反向求导时,backward_hook能拿到的是UnsafeViewBackward这步操作里面数据的梯度信息,取不到MmBackward这步操作里面数据的梯度信息,即权重的反向梯度数据。 - 典型的例子有,当linear的输入不是二维,且无bias时,会调用output = input.matmul(weight.t()),因此拿不到linear层的weight的反向梯度数据。 -### 13. pkl文件中的某些api的dtype类型为float16,但是读取此api的npy文件显示的dtype类型为float32 +### 14. pkl文件中的某些api的dtype类型为float16,但是读取此api的npy文件显示的dtype类型为float32 - ptdbg工具在dump数据时需要将原始数据从npu to cpu上再转换为numpy类型,npu to cpu的逻辑和gpu to cpu是保持一致的,都存在dtype可能从float16变为float32类型的情况,如果出现dtype不一致的问题,最终dump数据的dtype以pkl文件为准。 -### 14. 使用dataloader后raise异常Exception: ptdbg: exit after iteration [x, x, x] +### 15. 使用dataloader后raise异常Exception: ptdbg: exit after iteration [x, x, x] - 正常现象,dataloader通过raise结束程序,堆栈信息可忽略。 -### 15. 工具报错:AssertionError: Please register hooks to nn.Module +### 16. 工具报错:AssertionError: Please register hooks to nn.Module - 请在model示例化之后配置register hook。 -### 16. 添加ptdbg_ascend工具后截取操作报错:`IndexError: too many indices for tensor of dimension x` 或 `TypeError: len() of a 0-d tensor`。 +### 17. 添加ptdbg_ascend工具后截取操作报错:`IndexError: too many indices for tensor of dimension x` 或 `TypeError: len() of a 0-d tensor`。 删除ptdbg_ascend工具的hook_module目录下yaml文件中Tensor:下的`- __getitem__`即可。 diff --git "a/debug/accuracy_tools/ptdbg_ascend/doc/ptdbg_ascend\347\262\276\345\272\246\345\267\245\345\205\267\345\212\237\350\203\275\350\257\264\346\230\216_v4.0.T3.md" "b/debug/accuracy_tools/ptdbg_ascend/doc/ptdbg_ascend\347\262\276\345\272\246\345\267\245\345\205\267\345\212\237\350\203\275\350\257\264\346\230\216_v4.0.T3.md" index 71003983a31232dd97bf86eeeee2cf918b4070eb..427cf52d509ae6e8bd297148d1dce98b17f1563b 100644 --- "a/debug/accuracy_tools/ptdbg_ascend/doc/ptdbg_ascend\347\262\276\345\272\246\345\267\245\345\205\267\345\212\237\350\203\275\350\257\264\346\230\216_v4.0.T3.md" +++ "b/debug/accuracy_tools/ptdbg_ascend/doc/ptdbg_ascend\347\262\276\345\272\246\345\267\245\345\205\267\345\212\237\350\203\275\350\257\264\346\230\216_v4.0.T3.md" @@ -185,13 +185,20 @@ PyTorch训练场景的精度问题分析建议参考以下思路进行精度比 说明:多机多卡场景需要每个设备单独执行比对操作。 -假设NPU dump npy数据目录为npu_dump/dump_conv2d_v1.0,GPU dump npy数据目录为gpu_dump/dump_conv2d_v1.0。 +假设NPU dump npy数据目录为npu_dump/dump_conv2d_v3.0,GPU dump npy数据目录为gpu_dump/dump_conv2d_v3.0。 1. 创建比对脚本,例如compare_distributed.py,拷贝如下代码。 ```python from ptdbg_ascend import * - compare_distributed('./npu_dump/ptdbg_dump_v2.0', './gpu_dump/ptdbg_dump_v2.0', './output') + compare_distributed('./npu_dump/dump_conv2d_v3.0', './gpu_dump/dump_conv2d_v3.0', './output') + ``` + + 若使用debugger方式dump数据,且配置了PrecisionDebugger模块的step参数,则compare_distributed指定到step目录层级,如下示例: + + ```python + from ptdbg_ascend import * + compare_distributed('./npu_dump/step0', './gpu_dump/step0', './output') ``` 2. 执行比对: @@ -1383,7 +1390,7 @@ compare(input_param, output_path, stack_mode=False, auto_analyze=True, fuzzy_mat | 参数名 | 说明 | 是否必选 | | ------------ | ------------------------------------------------------------ | -------- | -| input_param | 配置dump数据文件及目录。配置参数包括:
- "npu_pkl_path":指定NPU dump目录下的.pkl文件。参数示例:"npu_pkl_path": "./npu_dump/ptdbg_dump_v2.0/rank0/api_stack_dump.pkl"。必选。
- "bench_pkl_path":指定CPU、GPU或NPU dump目录下的.pkl文件。参数示例:"bench_pkl_path": "./gpu_dump/ptdbg_dump_v2.0/rank0/api_stack_dump.pkl"。必选。
- "npu_dump_data_dir":"指定NPU dump目录下的dump数据目录。参数示例:"npu_dump_data_dir": "./npu_dump/ptdbg_dump_v2.0/rank0/api_stack_dump"。必选。
- "bench_dump_data_dir":"指定CPU、GPU或NPU dump目录下的dump数据目录。参数示例:"npu_dump_data_dir": "./gpu_dump/ptdbg_dump_v2.0/rank0/api_stack_dump"。必选。
- "is_print_compare_log":配置是否开启日志打屏。可取值True或False。可选。 | 是 | +| input_param | 配置dump数据文件及目录。配置参数包括:
- "npu_pkl_path":指定NPU dump目录下的.pkl文件。参数示例:"npu_pkl_path": "./npu_dump/ptdbg_dump_v2.0/rank0/api_stack_dump.pkl"。必选。
- "bench_pkl_path":指定CPU、GPU或NPU dump目录下的.pkl文件。参数示例:"bench_pkl_path": "./gpu_dump/ptdbg_dump_v2.0/rank0/api_stack_dump.pkl"。必选。
- "npu_dump_data_dir":"指定NPU dump目录下的dump数据目录。参数示例:"npu_dump_data_dir": "./npu_dump/ptdbg_dump_v2.0/rank0/api_stack_dump"。可选,仅比对pkl文件时不选。
- "bench_dump_data_dir":"指定CPU、GPU或NPU dump目录下的dump数据目录。参数示例:"npu_dump_data_dir": "./gpu_dump/ptdbg_dump_v2.0/rank0/api_stack_dump"。可选,仅比对pkl文件时不选。
- "is_print_compare_log":配置是否开启日志打屏。可取值True或False。可选。 | 是 | | output_path | 配置比对结果csv文件存盘目录。参数示例:'./output'。文件名称基于时间戳自动生成,格式为:`compare_result_{timestamp}.csv`。 | 是 | | stack_mode | 配置stack_mode的开关。仅当dump数据时配置set_dump_switch的mode="api_stack"时需要开启。参数示例:stack_mode=True,默认为False。 | 否 | | auto_analyze | 自动精度分析,开启后工具自动针对比对结果进行分析,识别到第一个精度不达标节点(在比对结果文件中的“Accuracy Reached or Not”列显示为No),并给出问题可能产生的原因(打屏展示并生成advisor_{timestamp}.txt文件)。可取值True或False,参数示例:auto_analyze=False,默认为True。 | 否 |