问题分析
收藏回复举报
问题分析
发表于2025-01-13 10:32:34
0 查看

代码链接:https://github.com/mmunhappy/ICASSP2025-PDM

代码迁移

  • 启动脚本里加入torch_npu
python train_pdm_os.py --dataset regdb --gpu 0 --protos 10 --trial 1

vim train_pdm_os.py

from __future__ import print_function

import torch
import torch_npu
from torch_npu.contrib import transfer_to_npu
torch.npu.set_compile_mode(jit_compile=False)
import argparse
import time
import torch.nn as nn
import torch.optim as optim
import torch.backends.cudnn as cudnn
from torch.autograd import Variable
import torch.utils.data as data
import torchvision.transforms as transforms

from dcs_loss import DCSLoss
from data_loader import SYSUData, RegDBData, LLCMData, TestData
from data_manager import *
from eval_metrics import eval_sysu, eval_regdb, eval_llcm
from model_pdm_os import embed_net
from utils import *
from loss import OriTripletLoss, CPMLoss
from tensorboardX import SummaryWriter
from random_erasing import RandomErasing

报错1

true

  • 确认数据类型 true
  • 打印结果 x.clone().type:torch.float32 x.clone().shape:torch.Size([32, 3, 384, 192])
  • 导出plog日志 export ASCEND_WORK_PATH=/path export ASCEND_GLOBAL_LOG_LEVEL=1 export ASCEND_HOST_LOG_FILE_NUM=1000 true

    原因

  1. 当aclnnMatmul参数cubeMathType为0时,输入数据类型不支持FLOAT32
  2. torch.fft.fft2调用aclnnMatmu时,cubeMathType写死为0

    解决方案

  • torch.fft.fft2除GPU外只能使用fp32 true

    torch.fft.fft2使用cpu计算

    true

    cubeMathType固定为0原因

    true

    报错2

  • op type TransData is not found in this op store. true

    分析定位

    true true

  • dump组图 export DUMP_GE_GRAPH=2 export DUMP_GRAPH_LEVEL=2 export ASCEND_GLOBAL_LOG_LEVEL=0 export ASCEND_SLOG_PRINT_TO_STDOUT=1

true

解决方案

模型、数据转fp16

true

true

true

  • torch.fft.fft2使用fp32 true

    需求

  1. 插入cast true
  2. 数据类型转换
  • uint16转int32

    启动训练

    true

我要发帖子