pytorch_npu多卡运行时遇到问题
收藏回复举报
pytorch_npu多卡运行时遇到问题
t('forum.solved') 已解决
发表于2024-10-08 17:36:44
0 查看

启动方式:python -u -m torch.distributed.launch --nproc_per_node 2 tool/train.py --config data/config/pascal/pascal_asgnet_split0_resnet50.yaml

代码: 

import os  

import random 

import time 

import cv2 

import numpy as np 

import logging 

import argparse 

import torch_npu 

#自动映射cuda API到npu的代码 

from torch_npu.contrib import transfer_to_npu 

#os.environ["CUDA_DEVICE_ORDER"] = "PCI_BUS_ID" 

#os.environ["CUDA_VISIBLE_DEVICES"] = '0'  #只让设备0可见 

from torch.utils.data import DataLoader, DistributedSampler 

import torch 

import torch.nn as nn 

import torch.nn.functional as F 

import torch.nn.parallel 

import torch.utils.data 

import torch.multiprocessing as mp 

import torch.distributed as dist 

 

import sys 

sys.path.append('/home/ma-user/work/ASGNet-main') 

from model import * 

from util import dataset 

from util import transform, config 

from util.util import AverageMeter, poly_learning_rate, intersectionAndUnionGPU 

 

cv2.ocl.setUseOpenCL(False) 

cv2.setNumThreads(0) 

 

def get_parser(): 

    parser = argparse.ArgumentParser(description='PyTorch Semantic Segmentation') 

    parser.add_argument('--config', type=str, default='config/ade20k/ade20k_pspnet50.yaml', help='config file') 

    parser.add_argument("--local_rank", type=int, required=True, help='local rank for DistributedDataParallel') 

    #parser.add_argument("--local-rank", "--local_rank", type=int) 

    parser.add_argument('opts', help='see config/ade20k/ade20k_pspnet50.yaml for all options', default=None, nargs=argparse.REMAINDER) 

    args = parser.parse_args() 

    assert args.config is not None 

    cfg = config.load_cfg_from_cfg_file(args.config) 

    if args.opts is not None: 

        cfg = config.merge_cfg_from_list(cfg, args.opts) 

    cfg.LOCAL_RANK = args.local_rank 

    return cfg 

 

 

def main(): 

    args = get_parser() 

    if 'RANK' in os.environ and 'WORLD_SIZE' in os.environ: 

        rank = int(os.environ["RANK"]) 

        world_size = int(os.environ['WORLD_SIZE']) 

        print(f"RANK and WORLD_SIZE in environ: {rank}/{world_size}") 

    else: 

        rank = -1 

        world_size = -1 

   # args.LOCAL_RANK=int(os.environ["LOCAL_RANK"])  

    torch_npu.npu.set_device(args.LOCAL_RANK)  #换个方法设置device  like npu:0 

    torch.distributed.init_process_group(backend='hccl', world_size=world_size, rank=rank) 

     

     

    model = eval(args.arch).Model(args) 

    model=model.npu() 

 

 

if __name__ == '__main__': 

    main() 

报错:RuntimeError: 0INTERNAL ASSERT FAILED at "/usr1/workspace/FPTA_Daily_v1.11.0_py37/CODE/torch_npu/csrc/core/npu/NPUStream.cpp":145, please report a bug to PyTorch. Could not compute stream ID for 0xffff74b56048 on device -1 (something has gone horribly wrong!) 

terminate called after throwing an instance of 'c10::Error' 

  what():  0INTERNAL ASSERT FAILED at "/usr1/workspace/FPTA_Daily_v1.11.0_py37/CODE/torch_npu/csrc/core/npu/NPUStream.cpp":145, please report a bug to PyTorch. Could not compute stream ID for 0xffff74b56048 on device -1 (something has gone horribly wrong!)

本帖最后由 匿名用户2024/10/08 17:37:55 编辑

我要发帖子