下载
中文
注册

亲和API替换

torch_npu.npu_confusion_transpose

npu_confusion_transpose可以代替Transpose + view的操作。
  • torch原生代码示例
    1
    2
    3
    4
    import torch  
    data = torch.rand(64, 3, 64, 128).cuda() 
    batch, channel, height, width = data.shape 
    result = dat.view(batch, height*channel*width).transpose(1, 0)
    
  • torch_npu代码示例
    1
    2
    3
    4
    5
    6
    import torch 
    import torch_npu 
    from torch_npu.contrib import transfer_to_npu  
    data = torch.rand(64, 3, 64, 128).cuda() 
    batch, channel, height, width = data.shape 
    result = torch_npu.npu_confusion_transpose(data, (0, 2, 1, 3), (height, batch, channel*width), transpose_first=True)
    

optimizer.clip_grad_norm_fused_

在替换为NPU亲和梯度裁剪API之前,请确保代码中已使用NPU亲和优化器。

  • torch原生代码示例
    1
    2
    3
    import torch 
    optimizer = torch.optim.AdamW(model.parameters(), lr = lr) 
    torch.nn.utils.clip_grad_norm_(parameters=model.parameters(), max_norm=10, norm_type=2)
    
  • torch_npu代码示例
    1
    2
    3
    4
    5
    import torch 
    import torch_npu 
    from torch_npu.contrib import transfer_to_npu  
    optimizer = torch_npu.optim.NpuFusedAdamW(model.parameters(), lr = lr) 
    optimizer.clip_grad_norm_fused_(max_norm=10, norm_type=2)