云服务器内容精选

  • 梯度监控 梯度监控工具提供了将模型梯度数据导出的能力。使用梯度监控工具,可以实现对训练过程模型每一层梯度信息进行监控,目前支持两种能力: 将模型权重的梯度数据导出。这种功能可以将模型权重的梯度值以统计量的形式采集出来,用以分析问题,例如检测确定性问题,使用训练状态监控工具监控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
  • 精度问题概述 随着ChatGPT的推出,大模型迅速成为AI界热点。大模型训练需要强大的算力支撑,涉及数据、模型、框架、算子、硬件等诸多环节。由于规模巨大,训练过程复杂,经常出现loss不收敛的情况(模型精度问题),主要表现为loss曲线起飞或者毛刺等,且模型的下游任务评测效果变差。影响大模型loss收敛的原因是多方面的:首先,数据问题可能导致不收敛,比如数据预处理不完善;其次,模型的训练超参数也同样会导致类似的情况;再者,模型本身的算法设计过程也可能会引入不收敛情况;最后,则是由计算过程导致的模型收敛问题。 模型精度(以模型评测结果衡量的各种指标,广义的Model Accuracy),是多种因素共同作用的结果,出现问题的主要表现是训练过程的Loss不收敛或者收敛出问题或者loss收敛却评测集上表现不佳。而计算的数值精度问题,(Computational Precision,Floating-Point Arithmetic Precision等),则是由于浮点数计算过程的有限字长效应及计算序所带来的近似误差,包括各种计算的数学表达,都会带来结果的近似性。二者是完全不同的两个问题, 不能混为一谈。计算数值的近似性一定概率上会影响模型的收敛性,但是影响大模型收敛的原因是复杂且多样的,大模型本身也对计算差异有一定韧性,所以,不能简认地为计算过程的差异一定会导致模型收敛出现问题。算子的数值精度是计算过程的基础,通常认为算子精度问题是大模型精度问题的来源之一,从实际经验看,算子数值精度不足(除去计算错误等BUG问题)所导致的模型收敛问题在整个模型收敛比例里面较低,但其影响会较大,所以,该问题需要引起重视。 而且,由于实现过程差异,不同硬件对于同样的计算过程,数值计算结果通常会有差异,比如GPU和CPU之间,GPU各版本之间,数值计算结果都有一定差异,在特定的容限范围内,不会影响模型的最终收敛。所以,计算的数值差异是很常规的现象,并非错误。 为了更好地了解这种计算差异,并且能够正确区分正常计算差异和引起模型精度问题的异常差异,本指南提供了算子问题定位工具集详细的使用场景和使用步骤,方便用户自行或在支持下排查可能的数值计算精度问题。 当用户将大语言模型或者其他类型深度神经网络的训练从GPU迁移到昇腾AI处理器时,可能出现以下不同现象的模型精度问题。一般包括: Loss曲线与CPU/GPU差异不符合预期。 验证准确度与CPU/GPU差异不符合预期。 在迁移到NPU环境下训练发现以上问题时,说明精度可能存在偏差,需要进一步做精度调优。下文将分别阐述精度诊断的整体思路和如何借助精度工具进行精度问题的定位。 父主题: 精度调试