GPU迁移到昇腾的大模型,或是基于昇腾开发的大模型在训练过程中经常会出现精度溢出、loss曲线跑飞、不收敛等精度异常情况,而训练loss指标等不能精准指导精度异常定界,无法区分是训练软件栈中哪个部分的问题。msprobe(MindStudio Probe)精度调试工具针对这些问题可以帮我们快速定界定位。
msprobe(MindStudio Probe)精度调试工具通过分别对标杆环境(如GPU)和昇腾环境下的训练精度数据进行采集和比对,从而找出差异点。
msprobe工具为mstt工具链的精度工具,更多介绍请参见《MindStudio Training Tools》。
本节主要介绍msprobe的精度数据采集、精度预检、精度比对功能,供用户快速上手使用。
精度数据采集即msprobe的dump功能,可以采集模型训练过程中API或Module层级的前反向输入输出数据,支持采集的数据包括Module的层次关系、Module或API的输入输出的真实数据和统计值信息、Module或API的调用栈等等。详细操作请参见精度数据采集。
msprobe预检功能会给采集到的每一个API单独创建用例检验其精度,并根据不同的比对算法(如绝对阈值法,标杆比对法等)等指标综合判定API在NPU上的精度是否达标,能迅速找出有精度差异的API。详细操作请参见精度预检。
msprobe比对功能依赖dump工具采集的数据,计算模型整网NPU侧和标杆设备(如CPU、GPU等,以下标杆设备以GPU为例)的误差指标(如余弦相似度、相对误差小于千分之一的比例、最大值误差等),标记可疑的精度异常API或Module,快速定位精度问题根因。详细操作请参见精度比对。