手工迁移需要用户对AI模型有迁移基础,了解GPU与NPU的代码的异同点以及各种迁移手段。手工迁移过程中各个模型的迁移方法均有不同,下文只给出手工迁移的核心要点,具体模型的迁移方法请参见样例参考。
import torch import torch_npu
device = torch.device('cuda:{}'.format(args.gpu))
device = torch.device('npu:{}'.format(args.gpu))
torch.cuda.set_device(args.gpu)
torch_npu.npu.set_device(args.gpu)
torch.cuda.is_available()
torch_npu.npu.is_available()
model.cuda(args.gpu)
model.npu(args.gpu)
images = images.cuda(args.gpu, non_blocking=True) target = target.cuda(args.gpu, non_blocking=True)
images = images.npu(args.gpu, non_blocking=True) target = target.npu(args.gpu, non_blocking=True)
dist.init_process_group(backend='nccl',init_method = "tcp//:127.0.0.1:**", ...... ,rank = args.rank) # **为端口号,根据实际选择一个闲置端口填写
dist.init_process_group(backend='hccl',init_method = "tcp//:127.0.0.1:**", ...... ,rank = args.rank) # **为端口号,根据实际选择一个闲置端口填写