昇腾故障案例详情页

如何批量处理生成的npy文件名异常情况

更新时间: 2023/04/18

暂无评分

问题信息

问题来源产品大类产品子类关键字
官方模型训练TensorFlow精度比对

问题现象描述

生成的npy文件名与预期不符,造成转换dump数据文件异常。

原因分析

TensorFlow模型生成dump数据时,因tfdbg自身原因或运行环境原因,会出现tfdbg截断算子名,导致生成的npy文件名与预期不符,造成转换dump数据文件异常。

解决措施

重新生成npy文件,使得npy文件名符合精度比对要求。具体操作步骤如下所示。

  • 本文中脚本名称、路径等均为举例,请根据实际替换。
  • 批量处理后,如果遇到某算子的dump文件存在,但是比对结果为NaN,需要检查该算子的dump文件名中的{op_name}是否与TensorFlow算子名称一致,如果不一致需要手动修改dump文件名中的算子字段与TensorFlow算子名称一致。其中如果出现"/"请修改为"_"。
  1. 执行TensorFlow工程。

    进入调试命令行交互模式后,输入run命令。

  2. 执行lt > tensor_name命令将所有tensor的名称暂存到文件里。
  3. 创建可执行脚本,如pt_cmd.sh,获取tensor_name文件中tensor_name对应的tensor_index。

    脚本内容如下:

    #!/bin/bash
    timestamp=$[$(date +%s%N)/1000]
    index=1
    while read -r line
    do
      tensor_index=`echo $line | awk '{print $4}'`
      echo "pt "$tensor_index" -n 0 -w "$((index++))"."$timestamp".npy" >> $2
    done < $1

    执行以下命令赋予pt_cmd.sh可执行权限并执行脚本。

    chmod +x pt_cmd.sh

    bash pt_cmd.sh tensor_name tensor_name.txt

  4. 回到tfdbg命令行,输入run命令后,将上一步生成的tensor_name.txt文件内容粘贴执行,生成npy文件。
  5. 将生成的npy文件,移动到新的文件夹,如npy_dir。
  6. 创建可执行脚本,如index_to_tensorname.sh,并执行脚本批量修改npy文件名。

    脚本内容如下:

    #!/bin/bash
    timestamp=$[$(date +%s%N)/1000]
    while read -r line
    do
      tensor_index=`echo $line | awk '{print $2}'`
      real_file=`echo $line | awk '{print $6}'`
      changed1_tensor_index=${tensor_index//\//_}
      changed2_tensor_index=${changed1_tensor_index//:/.}
      echo $2/$real_file $2/$changed2_tensor_index"."$timestamp".npy"
      if [ -r $2/$real_file ]
      then
        mv $2/$real_file $2/$changed2_tensor_index"."$timestamp".npy"
      fi
    done < $1

    执行以下命令赋予index_to_tensorname.sh可执行权限并执行脚本。

    chmod +x index_to_tensorname.sh

    bash index_to_tensorname.sh tensor_name.txt npy_dir

本页内容

该页面对您有帮助吗?
我要评分