昇腾社区首页
中文
注册

整网数据采集比对

找到logits精度存在明显差异的Token后,通过dump标杆模型、ATB模型的整网精度数据,再使用compare工具进行精度比对,定位问题。

以模型A为例,将dump第3个token的整网精度数据。

  1. 采集标杆模型整网数据。
    代码示例:
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    import torch
    from msit_llm import DumpConfig, register_hook
    from transformers import AutoTokenizer, AutoModelForCausalLM
    
    # 在推理模型完成初始化之前,启动确定性计算
    from msit_llm import seed_all
    seed_all(seed=2345)
    
    # 配置dump参数,其中:
    # token_range=list([3]) 表示采集第3个Token的整网数据
    # dump_path="/data/golden_dump_all_path",为dump数据保存路径,请根据实际情况替换
    
    dump_config = DumpConfig(token_range=list([3]), dump_path="/data/golden_dump_all_path")
    
    # 推理模型初始化 
    model_weight_path="/data/model_path"  # model_weight_path为模型A权重路径,请根据实际情况替换
    tokenizer = AutoTokenizer.from_pretrained(model_weight_path)
    model = AutoModelForCausalLM.from_pretrained(model_weight_path).cuda()
    register_hook(model, dump_config)  # model是要dump中间tensor的模型实例,在模型初始化后添加代码
    
    with torch.no_grad():
        # 推理流程代码
    
  2. 采集ATB模型整网数据。

    代码示例如下,其中ATB_DUMP_ALL_PATH为dump数据保存路径。

    msit llm dump --exec  "bash run.sh"  -er 3,3 -o {ATB_DUMP_ALL_PATH} -seed 2345
  3. 使用compare工具比对整网精度数据。

    示例如下,其中GOLDEN_DUMP_ALL_PATH为dump标杆模型整网数据的保存路径,COMPARE_PATH是比对结果保存路径。

    msit llm compare -gp {GOLDEN_DUMP_ALL_PATH}/msit_dump_{TIMESTAMP}/torch_tensors/cuda{device_id}_{PID}/ -mp {ATB_DUMP_ALL_PATH}/msit_dump_{TIMESTAMP}/tensors/{device_id}_{PID} -o {COMPARE_PATH}
  4. 比对完成后,会生成比对结果文件msit_cmp_report_{TIMESTAMP},保存在比对结果保存路径下。

    打开模型A的精度比对结果,找到首个不满足精度要求的Tensor,如图1所示。

    图1 首个不满足精度要求的Tensor

    查看my_data_path列可以确认问题引入的算子名称为LinearOperation,如图2所示。

    图2 查看问题引入的算子名称
  5. 确认算子名称后,使用msit llm opcheck工具对算子的精度进行预检,判断加速库算子精度是否达标。