华为云用户手册

  • 引言 训练精度问题是多种因素共同作用的结果,主要表现是训练过程的Loss不收敛、Loss收敛不符合预期或者Loss收敛趋势符合预期,但是模型评测结果表现不佳。影响模型Loss收敛的原因是多方面的:首先,数据问题可能导致不收敛,例如数据预处理不完善;其次,模型的训练超参数也同样会导致类似的情况;另外,网络随机参数初始化差异以及典型场景(例如Dropout和数据集Shuffle等操作)都可能在训练阶段Loss层面引入误差;再者,模型本身的算法设计过程也可能会引入不收敛情况;最后,则是不符合预期的计算或者通信导致的模型收敛问题。在迁移流程中,一般已经有模型训练的标杆,因此主要关注昇腾软件栈引入的精度偏差即可。由于昇腾芯片和GPU芯片的架构差异(包括不同架构下的GPU芯片),收到数值计算精度的影响,在软件实现上也存在微小的偏差。一般来说,只要数值差异在特定的容忍范围内,不会影响模型的最终收敛。 父主题: PyTorch迁移精度调优
  • Msprobe梯度监控 梯度监控工具提供了将模型梯度数据导出的能力。使用梯度监控工具,可以实现对训练过程模型每一层梯度信息进行监控,目前支持两种能力: 将模型权重的梯度数据导出。这种功能可以将模型权重的梯度值以统计量的形式采集出来,用以分析问题,例如检测确定性问题,使用训练状态监控工具监控NPU训练过程中的确定性计算问题。 将两份梯度数据进行相似度对比。在有标杆问题中,可以确认训练过程中精度问题出现的Step,以及抓取反向过程中的问题。 使用步骤如下: 通过pip安装msprobe工具。 # shell pip install mindstudio-probe 创建配置文件config.json。 { "task": "grad_probe", "dump_path": "./dump_path", "rank": [], "step": [], "grad_probe": { "grad_level": "L1", "param_list": [], "bounds": [-1, 0, 1] } } task参数需指定为grad_probe,dump_path表示输出目录,需手工指定,默认输出到dump_path目录。参数grad_level可取值L0、L1、L2,级别越大导出的数据越详细。更多详细参数说明请参考参数说明。 监控逻辑插入训练脚本。 from msprobe.pytorch import PrecisionDebugger debugger = PrecisionDebugger("config_json_path") # 模型初始化之后位置添加。 debugger.monitor(model) ... # 结束训练之后,调用stop接口。 debugger.stop() (可选)梯度数据相似度比对。 from msprobe import * GradComparator.compare_distributed("配置文件里写的dump_path", "配置文件里写的dump_path", "比对结果输出目录") 最终生成结果为similarities.csv表示每个Step各个权重参数两次比对相似度值,以及 {param_name}.png和summary_similarities.png以折线图方式表示各个Step相似度不比对结果。 详细工具的使用指导请参考梯度状态监控工具介绍。 父主题: Msprobe工具使用指导
  • Msprobe API预检 Msprobe是MindStudio Training Tools工具链下精度调试部分的工具包,主要包括精度预检、溢出检测和精度比对等功能,目前适配PyTorch和MindSpore框架。这些子工具侧重不同的训练场景,可以定位模型训练中的精度问题。 精度预检工具旨在计算单个API在整网计算中和标杆场景下的差异,对于无明确精度差异来源情况或者对模型了解不多的情形下都推荐使用预检工具,检查第一个步骤或Loss明显出现问题的步骤。它可以抓取模型中API输入的数值范围,根据范围随机生成输入,用相同的输入分别在NPU(GPU)和CPU上执行算子,比较输出差异。预检最大的好处是,它能根据算子(API)的精度标准来比较输出结果并判定其是否有精度问题。预检工具使用包含以下三步:dump、run_ut以及api_precision_compare。基本步骤如下: 通过pip安装Msprobe工具。 # shell pip install mindstudio-probe 获取NPU和GPU的dump数据。 PyTorch训练脚本插入dump接口方式如下: from msprobe.pytorch import PrecisionDebugger debugger = PrecisionDebugger(config_path='./config.json') ... debugger.start() # 一般在训练循环开头启动工具。 ... # 循环体 debugger.stop() # 一般在训练循环末尾结束工具。 debugger.step() # 在训练循环的最后需要重置工具,非循环场景不需要。 具体的config.json的配置要求请参见介绍。 使用run_ut.py执行预检。 msprobe -f pytorch run_ut -api_info ./dump.json 这里-api_info指定的是步骤2导出的dump.json文件,表示整网计算过程中API的输入输出情况。执行完成run_ut命令之后将输出api_precision_compare_result_{timestamp}.csv和 api_precision_compare_details_{timestamp}.csv文。accuracy_checking_result_{timestamp}.csv属于API级,标明每个API是否通过测试。建议用户先查看accuracy_checking_result_{timestamp}.csv文件,对于其中没有通过测试的或者特定感兴趣的API,根据其API name字段在 accuracy_checking_details_{timestamp}.csv中查询其各个输出的达标情况以及比较指标。 比对NPU和GPU预检结果。 msprobe -f pytorch api_precision_compare -npu /home/xxx/npu/accuracy_checking_details_{timestamp}.csv -gpu /home/xxx/gpu/accuracy_checking_details_{timestamp}.csv -o /home/xxx 这里-npu指定步骤3NPU预检结果中accuracy_checking_details_{timestamp}.csv文件路径,-gpu指定GPU预检结果accuracy_checking_details_{timestamp}.csv文件路径, -o需指定执行比对结果的存盘路径。执行完成后输出api_precision_compare_result_{timestamp}.csv和 api_precision_compare_details_{timestamp}.csv文件。用户可以通过先查看api_precision_compare_result_{timestamp}.csv文件的Forward Test Success和Backward Test Success,判断是否存在未通过测试的API,再查看api_precision_compare_details_{timestamp}.csv文件的API详细达标情况。 详细工具的使用指导请参考离线预检和在线预检介绍。 父主题: Msprobe工具使用指导
  • 精度调优总体思路 精度问题定位首先要能在昇腾环境上稳定地复现问题,这样才可以在该异常场景下进行针对性分析。大模型训练通常使用多机训练,多机训练的问题复现成本通常较高,且难以直接Dump分析(例如直接使用精度工具采集整网Tensor信息可能会产生TB级的Dump数据,存储和复制都比较困难),所以建议用户在复现前先进行模型裁剪,例如第一优先级是缩小DP、将模型转为单机训练等,这样会大大降低后续定位的难度。 根据精度问题现象可以选择合适的定位方式,Msprobe是MindStudio Training Tools工具链下精度调试部分的工具包,主要包括精度预检、溢出检测和精度比对等功能,通过采集和对比标杆(GPU/CPU)环境和昇腾环境上运行训练时的差异点来判断问题所在。整体流程如下图所示,更多介绍请参考昇腾精度调试指南。 图1 精度调优流程 溢出检测和Dump比对是通过在PyTorch模型中注入Hook从而Dump模型训练过程的输入输出数据,比对NPU环境和标杆环境的所有输入输出的差异来发现异常信息。更多介绍请参考Msprobe工具溢出检测和精度比对介绍。 API精度预检是通过提取模型中所有的API前反向信息,通过工具构造相应的API单元测试,将NPU输出与标杆比对,从而检测出精度有差异的API。更多介绍请参考Msprobe工具离线预检和在线预检介绍。 父主题: PyTorch迁移精度调优
  • 精度校验 迁移之后的精度校验工作是以CPU/GPU环境训练过程作为标杆的,这里的前提是在迁移前,模型已经在CPU/GPU环境达到预期训练结果。在此基础上,迁移过程的精度问题一般包括: Loss曲线与CPU/GPU差异不符合预期。 验证准确度与CPU/GPU差异不符合预期。 在迁移到NPU环境下训练发现以上问题时,说明精度可能存在偏差,需要进一步做精度调优。下文将分别阐述精度诊断的整体思路和如何借助精度工具进行精度问题的定位。 父主题: PyTorch迁移精度调优
  • Msprobe精度比对 精度比对功能主要针对两类场景的问题: 同一模型,从CPU或GPU移植到NPU中存在精度下降问题,对比NPU芯片中的API计算数值与CPU或GPU芯片中的API计算数值,进行问题定位。 同一模型,进行迭代(模型、框架版本升级或设备硬件升级)时存在的精度下降问题,对比相同模型在迭代前后版本的API计算数值,进行问题定位。 首先通过在PyTorch训练脚本中插入dump接口,跟踪计算图中算子的前向传播与反向传播时的输入与输出,然后再使用子命令compare进行比对生成比对表格。当前比对结果支持计算Cosine(余弦相似度)、MaxAbsErr(最大绝对误差)和MaxRelativeErr(最大相对误差)、One Thousandth Err Ratio(双千分之一)和Five Thousandths Err Ratio(双千分之五)这几种评价指标,工具通过阈值过滤筛选出不达标API的输入输出提示用户进行重点关注。使用步骤如下: 通过pip安装Msprobe工具。 # shell pip install mindstudio-probe 获取NPU和标杆的dump数据。 PyTorch训练脚本插入dump接口方式如下: from msprobe.pytorch import PrecisionDebugger debugger = PrecisionDebugger(config_path='./config.json') ... debugger.start() # 一般在训练循环开头启动工具。 ... # 循环体 debugger.stop() # 一般在训练循环末尾结束工具。 debugger.step() # 在训练循环的最后需要重置工具,非循环场景不需要。 具体的config.json的配置要求请参见介绍。 创建比对compare.json文件。 单卡场景 { "npu_path": "./npu_dump/dump.json", "bench_path": "./bench_dump/dump.json", "stack_path": "./npu_dump/stack.json", "is_print_compare_log": true } 多卡场景 { "npu_path": "./npu_dump/step0", "bench_path": "./bench_dump/step0", "is_print_compare_log": true } 单卡场景npu_path、bench_path、stack_path分别表示从步骤2中NPU环境所生成的dump.json、标杆环境生成的dump.json及NPU环境生成的stack.json文件,is_print_compare_log配置是否开启日志打屏。 多卡场景区别于单卡场景会在步骤2按rank标号信息生成多个rank的dump文件结果,npu_path指定NPU环境生成包含多rank目录,gpu_path指定标杆环境包含多rank目录,is_print_compare_log配置是否开启日志打屏。 精度比对生成比对报告 msproe -f pytorch compare -i ./compare.json -o ./output -s 这里-i指定步骤3所创建compare.json文件,-o指定比对结果文件存盘目录,-s配置是否生成堆栈信息。生成结果为advisor_{timestamp}.txt和compare_result_{timestamp}.xlsx文件,advisor_{timestamp}.txt列出了可能存在精度问题的API的专家建议,compare_result_{timestamp}.xlsx文件列出了所有执行精度比对的API详细信息和比对结果。 详细工具的使用指导请参考Pytorch精度比对介绍。 父主题: Msprobe工具使用指导
  • 准备工作 在定位精度问题之前,首先需要排除训练脚本及参数配置等差异的干扰。目前大部分精度无法对齐的问题都是由于模型超参数、Python三方库版本、模型源码等与标杆环境(GPU/CPU)设置的不一致导致,为了在定位过程中少走弯路,需要在定位前先对训练环境及代码做有效排查。此外,问题定位主要基于GPU环境和NPU环境上运行的过程数据做对比,所以需要分别准备GPU和NPU训练环境,大部分场景需要规模相同的训练环境。如果已经将模型缩减到单机可运行,则只是单台GPU设备即可。 定位前的排查当前主要包含如下几个方面: 训练超参数。常见的超参如下图所示: 图1 训练超参数 模型的超参通常可能调整的主要有学习率、batch size、并行切分策略、学习率warm-up、模型参数、FA配置等。用户在进行NPU精度和GPU精度比对前,需要保证两边的配置一致。 表1 超参说明 超参 说明 学习率 影响模型收敛程度,决定了模型在每次更新权重时所采用的步长。学习率过高,模型可能会过度调整权重,导致不稳定的训练过程;如果学习率过低,模型训练速度会变慢,甚至陷入局部最优。 batch size 影响训练速度,有时候也会影响模型精度。 micro batch size 影响流水线并行中设备的计算效率。 切分策略 包括DP(Data Parallel)、TP(Tensor Parallel)、PP(Pipeline Parallel)。 DP:数据并行(Data Parallelism)是大规模深度学习训练中常用的并行模式,它会在每个进程(设备)或模型并行组中维护完整的模型和参数,但在每个进程上或模型并行组中处理不同的数据。因此,数据并行非常适合大数据量的训练任务。 TP:张量并行也叫层内并行,通过将网络中的权重切分到不同的设备,从而降低单个设备的显存消耗,使得超大规模模型训练成为可能。张量并行不会增加设备等待时间,除了通信代价外,没有额外代价。 PP:流水线并行将模型的不同层放置到不同的计算设备,降低单个计算设备的显存消耗,从而实现超大规模模型训练。流水线并行也叫层间并行,层输入输出的依赖性使得设备需要等待前一步的输出,通过batch进一步切分成微batch, 网络层在多个设备上的特殊安排和巧妙的前向后向计算调度,可以最大程度减小设备等待(计算空泡),从而提高训练效率。 学习率预热 不同的学习率调度器(决定什么阶段用多大的学习率)有不同的学习率调度相关超参,例如线性调度可以选择从一个初始学习率lr-warmup-init开始预热。您可以选择多少比例的训练迭代步使用预热阶段的学习率。不同的训练框架有不同的参数命名,需要结合代码实现设置对应的参数。 模型结构 配置模型结构的超参主要有num-layer、hidden-size、seq-length等。 FA配置 超参数为use-flash-attn,决定训练过程中的Attention模块是否使用融合flash attention算子(性能较优)或者使用小算子。 训练脚本 由算法迁移人员排查迁移后的NPU脚本是否存在问题,可以通过Beyond Compare工具比对GPU训练脚本和NPU训练脚本之间是否存在差异。例如是否GPU环境下开启了FA但是NPU上未开启FA。 三方库版本比对 大模型训练通常会使用Deepspeed、Megatron等三方库,需要确保这些三方库的版本一致。 环境版本更新 这一项仅在条件允许的情况下进行,根据精度问题定位经验,部分问题是由于使用了较早版本的昇腾软件版本或者非商用发布的昇腾软件版本,所以推荐在条件允许的前提下配套安装最新商发版本的昇腾开发套件CANN Toolkit、昇腾驱动以及torch_npu包。具体操作,请参考昇腾商用版资源下载指导。 数据集。 需要排查是否使用的训练数据集存在差异。 初始权重。 需要排查是否加载的初始权重有差异,建议加载相同的初始权重。 父主题: PyTorch迁移精度调优
  • 问题复现 一般场景的训练模型都是包括随机种子、数据集Shuffle、网络结构Dropout等操作的,目的是在网络阶段引入一定的随机性使得训练结果更加具有鲁棒性。然而在精度诊断或者对齐阶段,这些随机性会导致训练运行结果每次表现不一致,无法进行和标杆的比对。因此在训练模型复现问题时,需要固定存在随机性的步骤,保证实验可重复性。存在随机性的步骤包括模型参数初始化,数据Batch加载顺序,Dropout层等。部分算子的计算结果也存在不确定性,需要固定。 当前固定随机性操作可分为工具固定和人工固定两种。 工具固定Seed 对于网络中随机性的固定,Msprobe提供了固定Seed的方式,只需要在config.json文件中添加对应seed配置即可。 Msprobe工具提供了seed_all接口用于固定网络中的随机数。如果客户使用了工具但取用了其他随机种子,则必须使用客户的随机种子固定随机性。 函数原型 from msprobe.pytorch.common import seed_all seed_all(seed=1234, mode=False) 表1 参数说明 参数名 说明 是否必选 seed 随机数种子。参数示例:seed=1000。默认值:1234。 否 mode 确定性计算模式。可配置True或False。参数示例:mode=True。默认值:False。 即使在相同的硬件和输入下,API多次执行的结果也可能不同,开启确定性计算是为了保证在相同的硬件和输入下,API多次执行的结果相同。 确定性计算会导致API执行性能降低,通常不需要在精度问题刚开始定位时就开启,而是建议在发现模型多次执行结果不同的情况下时再开启。 rnn类算子、ReduceSum、ReduceMean等算子可能与确定性计算存在冲突,如果开启确定性计算后多次执行的结果不相同,则考虑存在这些算子。 否 函数示例 seed_all函数的随机数种子,取默认值即可,无须配置;第二个参数默认关闭,不开启确定性计算时也无须配置。 确定性计算是NPU的一套机制,用于保证算子的计算确定性。之所以要有这个机制,是为了在Debug过程中,让所有的算子计算结果前后完全一致可复现,这是大多数精度问题分析的重要前提。因此,在精度问题定位过程中,确定性计算不是目的,而是手段。很多场景下需要在确定性计算使能的情况下,进行下一步的精度问题分析定位。Cuda对部分算子实现了确定性计算,但仍有部分算子无法固定。通常需要依赖确定性计算的场景是长稳问题,因为长稳问题需要通过多次长跑来分析Loss情况,这时候如果NPU本身计算结果不确定,就难以支撑和GPU结果的多次对比。 示例1:仅固定随机数,不开启确定性计算。 seed_all() 示例2:固定随机数,开启确定性计算。 seed_all(mode=True) 在多卡训练场景下由于通信算子计算累加计算顺序不确定,需要添加以下环境变量,固定通信算子计算的确定性: export HCCL_DETERMINISTIC=TRUE 固定随机数范围 seed_all函数可固定随机数的范围如下表所示。 API 固定随机数 os.environ['PYTHONHASHSEED'] = str(seed) 禁止Python中的hash随机化。 random.seed(seed) 设置random随机生成器的种子。 np.random.seed(seed) 设置numpy中随机生成器的种子。 torch.manual_seed(seed) 设置当前CPU的随机种子。 torch.cuda.manual_seed(seed) 设置当前GPU的随机种子。 torch.cuda.manual_seed_all(seed) 设置所有GPU的随机种子。 torch_npu.npu.manual_seed(seed) 设置当前NPU的随机种子。 torch_npu.npu.manual_seed_all(seed) 设置所有NPU的随机种子。 torch.backends.cudnn.enable=False 关闭cuDNN。 torch.backends.cudnn.benchmark=False cuDNN确定性地选择算法。 torch.backends.cudnn.deterministic=True cuDNN仅使用确定性的卷积算法。 工具固定(Dropout) Dropout的实质是以一定概率使得输入网络的数据某些位置元素的数值变为0,这样可以使得模型训练更加有效。但在精度问题的定位过程之中,需要避免产生这种问题,因此需要关闭Dropout。 在导入PrecisionDebugger后,工具会自动将如下接口参数p(丢弃概率)置为0。 torch.nn.functional.dropout torch.nn.functional.dropout2d torch.nn.functional.dropout3d torch.nn.Dropout torch.nn.Dropout2d torch.nn.Dropout3d 人工固定(硬件随机差异) 工具内部对于随机的控制,是通过设定统一的随机种子进行随机性固定的。但是由于硬件的差异,会导致同样的随机种子在不同硬件上生成的随机数不同。具体示例如下: 由上图可见,torch.randn在GPU和NPU上固定随机种子后,仍然生成不同的随机张量。 对于上述场景,用户需要将网络中的randn在CPU上完成后再转到对应device。例如,StableDiffusion中需要在forward过程中逐步生成随机噪声。 这样在Host侧生成的随机张量能够保证一样,搬移到NPU或者GPU设备上仍然一样。 固定随机性完成后,可以使用缩小的模型在单机环境进行问题复现。复现后使用下一章节介绍的msprobe工具进行问题定位。需要注意的是,部分模型算法本身存在固有的随机性,在使用上述方法固定随机性后,如果使用工具也未能找到出问题的API,需要分析是否由算法本身的随机性导致。 父主题: PyTorch迁移精度调优
  • 性能可视化工具与性能分析工具 对于高阶的调优用户,可以使用可视化profiling数据查看数据详情并分析可优化点,昇腾提供了Ascend-Insight可视化工具,相比于Chrometrace等工具提供了更优的功能和性能。详细信息,请参见昇腾Ascend-Insight用户指南。 对于GPU和NPU性能比对、NPU多次训练之间性能比对的场景,昇腾提供了性能比对工具compare_tools,通过对训练耗时和内存占用的比对分析,定位到具体劣化的算子,帮助用户提升性能调优的效率。工具将训练耗时拆分为计算、通信、调度三大维度,并针对计算和通信分别进行算子级别的比对;将训练占用的总内存,拆分成算子级别的内存占用进行比对。 对于集群训练场景,昇腾提供了集群分析工具cluster_analysis,当前主要对基于通信域的迭代内耗时分析、通信时间分析以及通信矩阵分析为主,从而定位慢卡、慢节点以及慢链路问题。 父主题: PyTorch迁移性能调优
  • API替换总览 •torch_npu.optim.NpuFusedAdamW •optimizer.clip_grad_norm_fused_ •torch_npu.npu_confusion_transpose •torch_npu.npu_scaled_masked_softmax •torch_npu.fast_gelu •torch_npu.npu_rms_norm •torch_npu.npu_swiglu •torch_npu.npu_rotary_mul •torch_npu.npu_fusion_attention 上述torch_npu api的功能和参数描述见概述。
  • 优化器替换 替换优化器一般都能有较大的性能受益,可以优先考虑将torch原生的优化器替换为昇腾提供的亲和优化器。下文以AdamW优化器为例,其他优化器的替换方式一致。 torch_npu.optim.NpuFusedAdamW torch原生代码示例如下: import torch optimizer = torch.optim.AdamW( model.parameters(), learning_rate, momentum=momentum, weight_decay=weight_decay ) torch_npu代码示例如下: import torch_npu from torch_npu.contrib import transfer_to_npu optimizer = torch_npu.optim.NpuFusedAdamW( model.parameters(), learning_rate, momentum=momentum, weight_decay=weight_decay )
  • analyze命令详解 all:同时进行融合算子图调优、亲和API替换调优、AICPU调优、算子调优等分析,并输出相关简略建议到执行终端中,并生成“ma_advisor_**.html”文件可供用户在浏览器中进行预览: ma-advisor analyze all --data-dir='/temp/profiling_dir' 图5 命令样例 命令执行后同时会生成各场景优化建议的html,相关算子问题概览会按照不同建议进行汇总。 图6 生成结果 表1 参数解释 参数 缩写 是否必填 说明 --data-dir -d 必填 代表存储Profiling单卡性能数据的目录,目前暂不支持同时分析多卡Profiling目录,Profiling数据可通过如下方法获取: 在执行推理或训练程序时,完成Profiling数据的采集、解析与导出(您可以在昇腾文档页面左上角切换版本,选择对应版本的指导文档)。数据采集时需要配置“aic-metrics”参数为“PipeUtilization”,“aicpu”参数为“on”。 MA-Advisor依赖Profiling工具解析后的timeline数据、summary数据以及info.json*文件,请确保指定的“profiling_dir”目录下存在以上文件。 --cann_version -cv 选填 使用Profiling工具采集时对应的CANN软件版本,可通过在环境中执行如下命令获取其version字段,目前配套的兼容版本为“6.3.RC2”,“7.0.RC1”和“7.0.0”,此字段不填默认按“7.0.RC1”版本数据进行处理,其余版本采集的Profiling数据在分析时可能会导致不可知问题: cat /usr/local/Ascend/ascend-toolkit/latest/aarch64-linux/ascend_toolkit_install.info --torch_version -tv 选填 运行环境的torch版本,默认为1.11.0,支持torch1.11.0和torch2.1.0,当运行环境torch版本为其他版本如torch1.11.3时,可以忽略小版本号差异选择相近的torch版本如1.11.0。 --debug -D 选填 工具执行报错时可打开此开关,将会展示详细保存堆栈信息。 --help -h,-H 选填 在需要查询当前命令附属子命令或相关参数时,给出帮助建议。 graph:单独对推理dump的子图数据进行调优,并在分析完成后,给出相关建议到终端中,并生成“ma_advisor_graph_**.html”文件到执行目录中,目前暂不支持同时分析多卡推理性能数据: ma-advisor analyze graph --data-dir='/temp/profiling_dir' 图7 命令样例 命令执行后生成融合算子优化建议的HTML,相关融合算子问题概览会按照不同融合算子类型进行汇总。 图8 生成结果 表2 参数解释 参数 缩写 是否必填 说明 --data-dir -d 必填 代表存储Profiling单卡性能数据的目录,目前暂不支持同时分析多卡Profiling目录,Profiling数据可通过如下方法获取: 在执行推理或训练程序时,完成Profiling数据的采集、解析与导出(您可以在昇腾文档页面左上角切换版本,选择对应版本的指导文档)。数据采集时需要配置“aic-metrics”参数为“PipeUtilization”,“aicpu”参数为“on”, “with_stack”参数为True。 MA-Advisor依赖Profiling工具解析后的timeline数据、summary数据以及info.json*文件,请确保指定的“profiling_dir”目录下存在以上文件。 --cann_version -cv 选填 使用Profiling工具采集时对应的CANN软件版本,可通过在环境中执行如下命令获取其version字段,目前配套的兼容版本为“6.3.RC2”,“7.0.RC1”和“7.0.0”,此字段不填默认按“7.0.RC1”版本数据进行处理,其余版本采集的Profiling数据在分析时可能会导致不可知问题: cat /usr/local/Ascend/ascend-toolkit/latest/aarch64-linux/ascend_toolkit_install.info --debug -D 选填 工具执行报错时可打开此开关,将会展示详细保存堆栈信息。 --help -h,-H 选填 在需要查询当前命令附属子命令或相关参数时,给出帮助建议。 profiling:单独对推理、训练Profiling性能数据进行算子调优分析,在分析完成后,给出相关分析说明到执行终端中,并生成“ma_advisor_profiling_**.html”文件到执行目录中,目前暂不支持同时分析多卡Profiling性能数据。 ma-advisor analyze profiling --data-dir='/temp/profiling_dir' 图9 命令样例 命令执行后生成AICORE算子使用AOE配置优化建议、AICPU算子优化建议的HTML,目前由于AOE优化不支持动态shape算子优化,因此如果检测到算子均为动态shape时,将不会推荐AOE调优;除此之外,单算子问题概览会按照不同算子类型进行汇总,同时根据耗时大小进行降序显示。 图10 生成结果 表3 参数解释 参数 缩写 是否必填 说明 --data-dir -d 必填 代表存储Profiling单卡性能数据的目录,目前暂不支持同时分析多卡Profiling目录,Profiling数据可通过如下方法获取: 在执行推理或训练程序时,完成Profiling数据的采集、解析与导出(您可以在昇腾文档页面左上角切换版本,选择对应版本的指导文档)。数据采集时需要配置“aic-metrics”参数为“PipeUtilization”,“aicpu”参数为“on”。MA-Advisor依赖Profiling工具解析后的timeline数据、summary数据以及info.json*文件,请确保指定的“profiling_dir”目录下存在以上文件。 --cann_version -cv 选填 使用Profiling工具采集时对应的CANN软件版本,可通过在环境中执行如下命令获取其version字段,目前配套的兼容版本为“6.3.RC2”,“7.0.RC1”和“7.0.0”,此字段不填默认按“7.0.RC1”版本数据进行处理,其余版本采集的Profiling数据在分析时可能会导致不可知问题: cat /usr/local/Ascend/ascend-toolkit/latest/aarch64-linux/ascend_toolkit_install.info --ntework_type -t 选填 “train”或者“infer”,不填默认为“train”。 --debug -D 选填 工具执行报错时可打开此开关,将会展示详细保存堆栈信息。 --help -h,-H 选填 在需要查询当前命令附属子命令或相关参数时,给出帮助建议。 timeline:单独对推理、训练timeline性能数据进行亲和API调优分析,在分析完成后,给出相关亲和API分析说明到执行终端中,并生成“ma_advisor_timeline_**.html”文件到执行目录中,目前暂不支持同时分析多卡Profiling性能数据。 ma-advisor analyze timeline --data-dir='/temp/profiling_dir' 图11 命令样例 命令执行后生成亲和API相关优化建议的html,将会按建议替换的亲和API进行汇总聚类,同时给出对应待替换API的堆栈信息。 图12 生成结果 表4 参数解释 参数 缩写 是否必填 说明 --data-dir -d 必填 代表存储Profiling单卡性能数据的目录,目前暂不支持同时分析多卡Profiling目录,Profiling数据可通过如下方法获取: 在执行推理或训练程序时,完成Profiling数据的采集、解析与导出(您可以在昇腾文档页面左上角切换版本,选择对应版本的指导文档)。数据采集时需要配置“aic-metrics”参数为“PipeUtilization”,“aicpu”参数为“on”, “with_stack”参数为True。 MA-Advisor依赖Profiling工具解析后的timeline数据、summary数据以及info.json*文件,请确保指定的“profiling_dir”目录下存在以上文件。 --cann_version -cv 选填 使用Profiling工具采集时对应的CANN软件版本,可通过在环境中执行如下命令获取其version字段,目前配套的兼容版本为“6.3.RC2”,“7.0.RC1”和“7.0.0”,此字段不填默认按“7.0.RC1”版本数据进行处理,其余版本采集的Profiling数据在分析时可能会导致不可知问题: cat /usr/local/Ascend/ascend-toolkit/latest/aarch64-linux/ascend_toolkit_install.info --debug -D 选填 工具执行报错时可打开此开关,将会展示详细保存堆栈信息。 --help -h,-H 选填 在需要查询当前命令附属子命令或相关参数时,给出帮助建议。
  • auto-completion命令详解 支持自动补全模式,在终端中自动完成ma-advisor命令补全,支持“bash(默认)/zsh/fish”。 ma-advisor auto-completion Bash 图15 提示 根据提示,在terminal中输入对应的命令即可开启在bash中对MA-Advisor相关命令自动补全功能,例如,执行如下命令后,即可在bash命令行中,后续执行ma-advisor相关命令时,使用Tab键即可自动补全: eval "$(_MA_ADVISOR_COMPLETE=bash_source ma-advisor)"
  • query命令详解 timeline:单独对推理、训练timeline性能数据进行单算子详情查询,根据算子名称以及任务类型(AI_CPU|AI_CORE)进行查询,算子查询统计信息输出到运行终端,并在执行目录下的"log/ma_advisor.xlsx"文件中给出相关算子详细信息。 ma-advisor query timeline --data-dir='/temp/profiling_dir' --op_name='Mul' --task_type='AI_CPU'
  • MA-Advisor命令总览 MA-Advisor当前支持如下四种命令: analyze:根据Profiling单卡数据进行相关调优分析,并给出调优建议。 query:根据Profiling单卡timeline数据,输入算子相关参数,查询出算子详细信息。 env:对当前昇腾环境进行运行前预检查,分析出相关环境问题,并给出环境检查修复建议。 update: 更新用于分析的知识库,将云端知识库同步至分析环境中。 auto-completion:自动补全模式,在终端中自动完成MA-Advisor命令补全,支持“bash(默认)/zsh/fish”。 在执行任何命令前,如果对其参数有疑问,可执行-h进行查看帮助,例如: ma-advisor analyze -h 图4 查看帮助
  • 自动诊断工具MA-Advisor简介 MA-Advisor是一款昇腾迁移性能问题自动诊断工具,当前支持如下场景的自动诊断: 推理场景下的子图数据调优分析,给出对应融合算子的调优建议。 推理、训练场景下对Profiling timeline单卡数据进行调优分析,给出相关亲和API替换的调优建议。 推理、训练场景下对Profiling单卡数据进行调优分析,给出AICPU相关调优建议。 推理、训练场景下对Profiling单卡数据进行调优分析,给出block dim、operator no bound相关AOE配置以及调优建议。 支持对昇腾训练、推理环境进行预检,完成相关依赖配置项的提前检查,并在检测出问题时给出相关修复建议。 自动诊断工具可以有效减少人工分析profiling的耗时,降低性能调优的门槛,帮助客户快速识别性能瓶颈点并完成性能优化。推荐用户在采集profiling分析后使用自动诊断工具进行初步性能调优。更进一步的性能调优再使用Ascend-Insight工具进行 数据可视化 并人工分析瓶颈点。 父主题: 自动诊断工具MA-Advisor使用指导
  • 商业信息重新认证 云商店伙伴不支持“重新认证”操作;若云商店伙伴需要修改银行信息或公司信息等,请提工单进行处理。 在“商业信息”页面,单击“重新认证”。 在系统弹出的“提示”对话框中,单击“确定”,进入“商业信息”页面。 修改商业信息。 仅修改公司信息 根据需要修改公司的基本信息、税务信息、财务联系人信息,修改完成后,单击“已完成,提交修改”。 提交完成后,请等待认证审核结果。 修改公司信息以及银行信息 根据需要修改公司的基本信息、税务信息、财务联系人信息,修改完成后,单击“继续修改银行信息”。 根据需要修改银行信息,修改完成后,单击“已完成,提交修改”。 在系统弹出的“提示”对话框中,单击“确定”。 输入转账金额,单击“提交认证”。 如果伙伴是华为供应商系统中的非IOI伙伴,且已修改银行信息,则需要执行5~6,上传银行确认函。 (可选)单击“下载银行确认函模板”,确认银行确认函模板中的信息并加盖公章或签字。 (可选)单击“提交银行确认函”,上传已加盖公章或签字的银行确认函扫描件。
  • 注意事项 合作伙伴修改商业信息时,请谨慎变更申请,一旦提交申请,在认证完成之前,伙伴无法进行结算处理。 伙伴是华为供应商管理系统中的同名非IOI伙伴,若伙伴在进行商业信息认证时提交的银行账号、华为签约主体、签约币种与系统中的信息不一致,即伙伴使用新的银行账号,则需要上传银行确认函。 若伙伴需要使用新的银行账号,则需执行下文“商业信息首次认证”的步骤1~步骤10,下载银行确认函。 云商店伙伴只有进行商业信息认证才可进行结算。 云商店伙伴须在云商店签署合作分成协议后,才可进行商业信息认证。 云商店伙伴提交商业信息认证后,不支持对信息进行修改。
  • 售前工程师申请条件 已成为数字化转型咨询与系统集成发展路径的项目专员,岗位为解决方案架构师; 同时持有华为云业务方向专业认证中级H CS P(基于华为云构建客户的业务体系)及HCCDP – Solution Architectures或HCCDE – Solution Architectures或HCIP-Cloud Service Solutions Architect或HCIE-Cloud Service Solutions Architect认证,且证书在有效期内; 从事华为云的时间大于半年; 补贴期内最多可申请2次激励。 补贴期指项目专员从事华为云业务之日起一年内。
  • 步骤一:注册集群 登录UCS控制台。 在左侧导航栏中选择“容器舰队”,单击附着集群选项卡中的“注册集群”按钮。 参考表1填写待添加集群的基础信息,其中带“*”的参数为必填参数。 表1 注册集群基础信息配置 参数 参数说明 集群名称* 输入集群的自定义名称,需以小写字母开头,由小写字母、数字、中划线(-)组成,且不能以中划线(-)结尾。 集群服务商* 选择一个集群服务商。 所属区域* 选择集群所在的区域。 集群标签 非必填项,以键值对的形式为集群添加标签,可以通过标签实现集群的分类。键值对可自定义,以字母或者数字开头和结尾,由字母、数字、连接符(-)、下划线(_)、点号(.)组成,且63个字符之内。 上传KubeConfig* 上传kubectl的配置文件来完成集群认证,支持JSON或YAML格式。获取KubeConfig文件的操作步骤因厂商而异,请参见KubeConfig。 选择Context* 选择对应的Context。在完成KubeConfig文件上传后,选项列表将自动获取文件中的“contexts”字段。 默认值为KubeConfig文件中“current-context”字段指定的Context,若文件中无此字段则需要从列表中手动选择。 容器舰队 选择集群所属的舰队。 舰队用于权限精细化管理,一个集群只能加入一个舰队。若不选择舰队,集群注册成功后将显示在“未加入舰队的集群”页签下,后续还可以再添加至舰队中。 不支持在注册集群阶段选择已开通集群联邦能力的舰队,如果一定要加入这个舰队,请在集群注册成功后,再添加到该舰队中。关于集群联邦的介绍,请参见开通集群联邦章节。 如需新建舰队,请参见管理容器舰队。 单击“确定”,集群注册成功后如图1所示,请在30分钟内接入网络。您可选择集群的接入方式或单击右上角按钮查看详细的网络接入流程。 如您未在30分钟内接入网络,将会导致集群注册失败,可单击右上角按钮重新注册集群。如果已经接入但数据未采集上来,请等待2分钟后刷新集群。 图1 集群等待接入状态
  • 步骤三:购买终端节点 登录UCS控制台,单击待接入集群栏的“单击接入”进入集群接入界面,单击“私网接入”。 查看“创建终端节点”中的服务名称,单击,记录服务名称。 图3 创建终端节点 登录 VPC终端节点 控制台,单击“创建终端节点”,创建连接不同服务的终端节点。 选择终端节点的区域。 选择“按名称查找服务”,输入所记录的服务名称,并单击“验证”。 图4 购买终端节点 选择步骤一:准备网络环境中与集群网络连通的虚拟私有云以及对应的子网。 根据需求选择终端节点的“节点IP”为“自动分配”或“手动分配”。 配置完其他参数后,单击“立即购买”,并进行规格确认。 规格确认无误,单击“提交”,任务提交成功。 参数信息配置有误,需要修改,单击“上一步”,修改参数,然后单击“提交”。
  • 步骤四:接入集群 登录UCS控制台,在“等待接入”状态下的目标集群栏中单击“私网接入”。 选择项目,再选择步骤三:购买终端节点中创建的终端节点。 图5 选择终端节点 将2中的agent配置文件上传至节点。 单击“安装集群代理agent配置”,在待接入集群中执行如下命令,可单击右侧直接复制命令。 图6 安装集群代理agent配置 私网接入的集群无法通过私网下载SWR镜像仓库中的镜像,请确保工作负载运行的节点可访问公网。 拉取proxy-agent容器镜像要求集群需要具备公网访问能力,或将proxy-agent镜像上传至集群可访问的镜像仓库,否则将导致proxy-agent部署失败。 前往UCS控制台刷新集群状态,集群处于“运行中”。
  • 步骤二:注册集群 登录UCS控制台。 在左侧导航栏中选择“容器舰队”,单击附着集群选项卡中的“注册集群”按钮。 参考表1填写待添加集群的基础信息,其中带“*”的参数为必填参数。 表1 注册集群基础信息配置 参数 参数说明 集群名称* 输入集群的自定义名称,需以小写字母开头,由小写字母、数字、中划线(-)组成,且不能以中划线(-)结尾。 集群服务商* 选择一个集群服务商。 所属区域* 选择集群所在的区域。 集群标签 非必填项,以键值对的形式为集群添加标签,可以通过标签实现集群的分类。键值对可自定义,以字母或者数字开头和结尾,由字母、数字、连接符(-)、下划线(_)、点号(.)组成,且63个字符之内。 上传KubeConfig* 上传kubectl的配置文件来完成集群认证,支持JSON或YAML格式。获取KubeConfig文件的操作步骤因厂商而异,请参见KubeConfig。 选择Context* 选择对应的Context。在完成KubeConfig文件上传后,选项列表将自动获取文件中的“contexts”字段。 默认值为KubeConfig文件中“current-context”字段指定的Context,若文件中无此字段则需要从列表中手动选择。 容器舰队 选择集群所属的舰队。 舰队用于权限精细化管理,一个集群只能加入一个舰队。若不选择舰队,集群注册成功后将显示在“未加入舰队的集群”页签下,后续还可以再添加至舰队中。 不支持在注册集群阶段选择已开通集群联邦能力的舰队,如果一定要加入这个舰队,请在集群注册成功后,再添加到该舰队中。关于集群联邦的介绍,请参见开通集群联邦章节。 如需新建舰队,请参见管理容器舰队。 单击“确定”,集群注册成功后如图2所示,请在30分钟内接入网络。您可选择集群的接入方式或单击右上角按钮查看详细的网络接入流程。 如您未在30分钟内接入网络,将会导致集群注册失败,可单击右上角按钮重新注册集群。如果已经接入但数据未采集上来,请等待2分钟后刷新集群。 图2 集群等待接入状态
  • 前提条件 已创建一个准备接入UCS的集群,并且集群状态正常。 在UCS提供服务的区域中创建一个VPC,具体操作请参见创建虚拟私有云和子网。当前仅支持“华北-北京四”区域。 该VPC子网网段不能与IDC或第三方云中已使用的网络网段重叠,否则将无法接入集群。例如,IDC中已使用的VPC子网为192.168.1.0/24,那么华为云VPC中不能使用192.168.1.0/24这个子网。 已获取待添加集群的KubeConfig文件,具体操作步骤因厂商而异,请参见KubeConfig。关于KubeConfig文件的更多说明请参考使用kubeconfig文件组织集群访问。
  • 约束与限制 华为云账号用户需具备UCS FullAccess和VPCEndpoint Administrator权限。 若集群地域位于境外,应确保您的行为符合所适用的法律法规要求。 请确保注册的集群为通过CNCF一致性认证,且版本在1.19至1.29之间的Kubernetes集群。 附着集群通过私网接入时,由于网络限制,镜像仓库功能的使用可能受限: 私网接入的集群无法通过私网下载SWR镜像仓库中的镜像,请确保工作负载运行的节点可访问公网。
  • 操作步骤 登录UCS控制台,在左侧导航栏中选择“容器舰队”。 单击华为云集群选项卡中的“注册集群”按钮。 勾选需要注册的CCE Standard集群或 CCE Turbo 集群,并选择一个舰队,单击“确定”。 注册集群时若不选择舰队,集群注册成功后将显示在“未加入舰队的集群”页签下,您可以随后再将其添加至舰队中,具体操作请参见管理未加入舰队的集群。 不支持在注册集群阶段选择已开通集群联邦能力的舰队,如果一定要加入这个舰队,请在集群注册成功后,再添加到该舰队中。关于集群联邦的介绍,请参见开通集群联邦章节。
  • log-agent指标说明 log-agent插件的log-operator、fluent-bit和otel-collector组件提供了一系列指标,您可以使用 AOM 或Prometheus来监控这些指标,以便及时了解log-agent插件的运行情况,具体操作可参考使用AOM监控自定义指标或使用Prometheus监控自定义指标。详细的指标如下所述: log-operator组件(仅华为云集群) 端口:8443;地址:/metrics;协议:https 表7 指标 指标名 说明 类型 log_operator_aksk_latest_update_times AK/SK最后更新时间 Gauge log_operator_aksk_update_total AK/SK更新次数 Counter log_operator_send_request_total 发送请求数 Counter log_operator_webhook_listen_status Webhook监听状态 Gauge log_operator_http_request_duration_seconds HTTP请求时延 Histogram log_operator_http_request_total HTTP请求数 Counter log_operator_webhook_request_total Webhook请求数 Counter fluent-bit组件 端口:2020;地址:/api/v1/metrics/prometheus;协议:http 表8 指标 指标名 说明 类型 fluentbit_filter_add_records_total 用于记录在过滤器中添加的记录总数 Counter fluentbit_filter_drop_records_total 用于记录被过滤掉的日志记录数量 Counter fluentbit_input_bytes_total 用于衡量Fluent Bit在处理日志数据时输入的总字节数 Counter fluentbit_input_files_closed_total 用于记录关闭的文件总数 Counter fluentbit_input_files_opened_total 用于监控Fluent Bit的文件输入插件(input plugin)打开的文件数量 Counter fluentbit_input_files_rotated_total 用于记录Fluent Bit输入插件已经轮转的文件总数 Counter fluentbit_input_records_total 用于衡量 Fluent Bit 在输入插件中处理的记录数 Counter fluentbit_output_dropped_records_total 用于记录输出插件丢弃的记录数量 Counter fluentbit_output_errors_total 用于监控 Fluent Bit 的输出错误数量 Counter fluentbit_output_proc_bytes_total 用于监控 Fluent Bit 的输出插件(output plugin)处理的总字节数 Counter fluentbit_output_proc_records_total 用于监控 Fluent Bit 的输出插件处理的记录数 Counter fluentbit_output_retried_records_total 用于衡量 Fluent Bit 在输出数据时重试的次数 Counter fluentbit_output_retries_total 用于衡量 Fluent Bit 在发送数据到输出插件时发生重试的次数 Counter fluentbit_uptime Fluent Bit 运行的时间,通常以秒为单位 Counter fluentbit_build_info 用于显示Fluent Bit的版本和构建信息 Gauge otel-collector组件 端口:8888;地址:/metrics;协议:http 表9 指标 指标名 说明 类型 otelcol_exporter_enqueue_failed_log_records 用于衡量OpenTelemetry Collector在将日志记录发送到下游系统时,由于某些原因无法成功发送的日志记录数量 Counter otelcol_exporter_enqueue_failed_metric_points 用于衡量在将指标数据发送到后端时,由于某些原因导致无法成功发送的指标数据点的数量 Counter otelcol_exporter_enqueue_failed_spans 用于衡量otelcol exporter在将span发送到后端时失败的次数 Counter otelcol_exporter_send_failed_log_records 用于衡量日志记录发送失败的数量 Counter otelcol_exporter_sent_log_records 用于衡量OpenTelemetry Collector(otelcol)发送的日志记录数量 Counter otelcol_process_cpu_seconds 用于度量进程CPU使用时间的指标,它表示进程在特定时间段内使用的CPU时间,单位为秒 Counter otelcol_process_memory_rss 是OpenTelemetry中用于监控进程内存使用情况的一个指标。其中,rss代表Resident Set Size,即进程当前占用的物理内存大小 Gauge otelcol_process_runtime_heap_alloc_bytes 用于监控进程运行时堆内存分配的指标。它表示进程在运行时分配的堆内存的总字节数。 Gauge otelcol_process_runtime_total_alloc_bytes 用于衡量进程在运行时分配的总字节数 Counter otelcol_process_runtime_total_sys_memory_bytes 用于衡量进程在运行时使用的系统内存总量,单位为字节。 Gauge otelcol_process_uptime 指OpenTelemetry收集器进程的运行时间,以秒为单位。 Counter otelcol_receiver_accepted_log_records 用于衡量OpenTelemetry收集器接收并成功处理的日志记录数量 Counter otelcol_receiver_refused_log_records 用于衡量接收器(receiver)拒绝接收的日志记录数量 Counter
  • 本地集群安装云原生日志采集插件 登录UCS控制台,选择容器舰队,单击集群名称进入集群,在左侧导航栏中选择“插件中心”,在右侧找到云原生日志采集插件,单击“安装”。 在安装插件页面,设置“规格配置”。 表3 插件规格配置 参数 参数说明 插件规格 该插件可配置“小规格”、“大规格”或“自定义”规格。 实例数 选择上方插件规格后,显示插件中的实例数。 选择“自定义”规格时,您可根据需求调整插件实例数。 容器 log-agent插件包含以下容器,您可根据需求自定义调整规格: fluent-bit:日志收集器,以DaemonSet形式安装在每个节点。 cop-logs:负责采集侧配置文件生成及更新的组件。 log-operator:负责解析及更新日志规则的组件。 otel-collector:负责集中式日志转发的组件,将fluent-bit收集的日志转发到LTS。 设置插件支持的“参数配置”。 Kubernetes事件上报AOM:采集Kubernetes事件并上报到 应用运维管理 AOM,可在AOM配置事件告警规则。 设置插件实例日志上报的“网络配置”。 公网接入:通过公网Internet接入,要求集群能够访问公网,具有弹性灵活、成本低、易接入的优势。公网接入要求集群能够访问公网,请确保集群已符合此条件,否则会接入失败。 云专线/VPN接入:通过云专线(DC)或 虚拟专用网络 (VPN)服务将云下网络与云上虚拟私有云(VPC)连通,并利用VPC终端节点通过内网与容器智能分析建立连接,具有高速、低时延、安全的优势。详情见本地集群使用云专线/VPN上报日志。 完成以上配置后,单击“安装”。
  • 组件说明 表4 log-agent组件 容器组件 说明 资源类型 fluent-bit 轻量级的日志收集器和转发器,部署在每个节点上采集日志。 DaemonSet cop-logs 负责生成采集文件的软链接,和fluent-bit运行在同一Pod。 DaemonSet log-operator 负责生成内部的配置文件。 Deployment otel-collector 负责收集来自不同应用程序和服务的日志数据,集中后上报至LTS。 Deployment
  • 自定义事件上报AOM log-agent插件会将所有Warning级别事件以及部分Normal级别事件上报到AOM。您也可以根据需求自行设置需要上报的事件,具体方法如下: 在集群上执行以下命令,编辑当前的事件采集配置。 kubectl edit logconfig -n kube-system default-event-aom 根据需要修改事件采集配置。 apiVersion: logging.openvessel.io/v1 kind: LogConfig metadata: annotations: helm.sh/resource-policy: keep name: default-event-aom namespace: kube-system spec: inputDetail: #采集端配置 type: event #采集端类型,请勿修改 event: normalEvents: #Normal级别事件采集配置 enable: true #是否开启Normal级别事件采集 includeNames: #需要采集的事件名,不指定则采集所有事件 - NotTriggerScaleUp includeNames: #不采集的事件名,不指定则采集所有事件 - NotTriggerScaleUp warningEvents: #Warning级别事件采集配置 enable: true #是否开启Warning级别事件采集 includeNames: #需要采集的事件名,不指定则采集所有事件 - NotTriggerScaleUp includeNames: #不采集的事件名,不指定则采集所有事件 - NotTriggerScaleUp outputDetail: type: AOM #输出端类型,请勿修改 AOM: events: - name: DeleteNodeWithNoServer #事件名,必选 nameCn: 废弃节点清理 #事件对应的中文名,不填则上报的事件直接显示英文 resourceType: Namespace #事件对应的资源类型 severity: Major #事件上报到AOM后的事件级别,默认Major。可选值:Critical:紧急;Major:重要;Minor:次要;Info:提示
共100000条