torch_npu自定义接口

API来源

API名称

类型

说明

contrib

torch_npu.contrib.npu_fused_attention_with_layernorm

class

  

torch_npu.contrib.npu_fused_attention

class

  

torch_npu.contrib.Prefetcher

class

  

torch_npu.contrib.DCNv2

class

  

torch_npu.contrib.BiLSTM

class

  

torch_npu.contrib.Swish

class

  

torch_npu.contrib.NpuFairseqDropout

class

  
        
  

torch_npu.contrib.npu_giou

function

  
  

torch_npu.contrib.npu_ptiou

function

  
  

torch_npu.contrib.npu_iou

function

  

DDP

torch.distributed.is_hccl_available

function

功能与调用方式与torch_npu.distributed.is_available相同。

torch.distributed.ProcessGroupHCCL

class

  

torch.distributed.distributed_c10d.distributed.Group

class

  

torch_npu.distributed.is_available

function

功能与调用方式与torch.distributed.is_hccl_available相同。

optim

torch_npu.optim.NpuFusedOptimizerBase

class

  

torch_npu.optim.NpuFusedSGD

class

  

torch_npu.optim.NpuFusedAdadelta

class

  

torch_npu.optim.NpuFusedLamb

class

  

torch_npu.optim.NpuFusedAdam

class

  

torch_npu.optim.NpuFusedAdamW

class

  

torch_npu.optim.NpuFusedAdamP

class

  

torch_npu.optim.NpuFusedBertAdam

class

  

torch_npu.optim.NpuFusedRMSprop

class

  

torch_npu.optim.NpuFusedRMSpropTF

class

  

AMP

torch_npu.npu.get_npu_overflow_flag

function

  

torch_npu.npu.clear_npu_overflow_flag

function

  

Device

torch_npu.npu.npu_device

-

非接口,可作为参数等价替换'npu'字符串。

torch_npu.npu.native_device

-

非接口,可作为参数等价替换'xla'字符串。

dump

torch_npu.npu.set_dump

function

  

torch_npu.npu.init_dump

function

  

torch_npu.npu.finalize_dump

function

  

算子

torch_npu.npu.set_compile_mode

function

  

torch_npu.npu.is_jit_compile_false

function

  

torch_npu.npu.set_mm_bmm_format_nd

function

  

torch_npu.npu.get_mm_bmm_format_nd

function

  

torch_npu.npu.config.allow_internal_format

class

  

torch_npu.npu.matmul

class

功能和调用方式与torch.backends.cuda.matmul.allow_tf32相同。

torch_npu.npu.conv

class

功能和调用方式与torch.backends.cudnn.allow_tf32相同。

profiling

torch_npu.npu.set_option

function

详细使用参见设置算子编译选项

torch_npu.npu.profiler

class

计划废弃,推荐使用torch_npu.profiler相关接口。

torch_npu.npu.set_aoe

function

torch_npu.npu.profile

function

torch_npu.npu.prof_init

function

torch_npu.npu.prof_start

function

torch_npu.npu.prof_stop

function

torch_npu.npu.prof_finalize

function

torch_npu.npu.iteration_start

function

torch_npu.npu.iteration_end

function

torch_npu.npu.profileConfig

function

torch_npu.profiler.profile

class

  

torch_npu.profiler.ProfilerActivity

class

枚举类。

torch_npu.profiler.supported_activities

function

  

torch_npu.profiler.tensorboard_trace_handler

function

  

torch_npu.profiler.schedule

class

  

torch_npu.profiler.ProfilerAction

class

枚举类。

torch_npu.profiler._ExperimentalConfig

class

  

torch_npu.profiler.supported_profiler_level

function

  

torch_npu.profiler.supported_ai_core_metrics

function

  

torch_npu.profiler.ProfilerLevel

class

枚举类。

torch_npu.profiler.AiCMetrics

class

枚举类。

random

torch_npu.npu._in_bad_fork

function

  

fx

torch_npu.fx.symbolic_trace

function

功能和调用方式与torch.fx.symbolic_trace相同。

torch_npu.fx.NpuTracer

class

功能和调用方式与torch.fx.Tracer相同。

aclnn

torch_npu.npu.aclnn.version

function

  

torch.npu.aclnn.allow_hf32

function

  

contrib接口说明

torch_npu.contrib.npu_fused_attention_with_layernorm(hidden_states, attention_mask, query_kernel, key_kernel, value_kernel, query_bias, key_bias, value_bias, gamma, beta, scale=1, keep_prob=0)

bert自注意力与前层规范的融合实现。

torch_npu.contrib.npu_fused_attention(hidden_states, attention_mask, query_kernel, key_kernel, value_kernel, query_bias, key_bias, value_bias, scale=1, keep_prob=0)

bert自我注意的融合实现。

torch_npu.contrib.Prefetcher(loader, stream=None)

npu设备上使用的预取程序。

torch_npu.contrib.DCNv2(in_channels, out_channels, kernel_size, stride=1, padding=0, dilation=1, groups=1, deformable_groups=1, bias=True, pack=True)

应用基于NPU的调制可变形2D卷积操作。ModulationDeformConv的实现主要是基于mmcv的实现

进行设计和重构。

torch_npu.contrib.BiLSTM

torch_npu.contrib.BiLSTM(input_size, hidden_size)

将NPU兼容的双向LSTM操作应用于输入序列。

torch_npu.contrib.Swish()

应用基于NPU的Sigmoid线性单元(SiLU)函数,按元素方向。SiLU函数也称为swish函数。

torch_npu.contrib.NpuFairseqDropout(p, module_name=None)

在npu设备上使用FairseqDropout。

torch_npu.contrib.npu_giou(boxes1,boxes2,is_permuted=True)
torch_npu.contrib.npu_ptiou(boxes1, boxes2, mode="ptiou", is_normalized=False, normalized_scale=100.)
torch_npu.contrib.npu_iou(boxes1, boxes2, mode="ptiou", is_normalized=False, normalized_scale=100.)

DDP接口说明

torch_npu.is_hccl_available(): -> bool

判断npu的专属通讯后端HCCL后端是否是可用的。

torch.distributed.ProcessGroupHCCL(store, rank, size, timeout); -> ProcessGroup

创建一个ProcessGroupHCCL对象并返回。

optim接口说明

使用融合优化器约束条件:

  1. 使用融合优化器,在创建融合张量时会申请融合后张量大小的内存(如融合的参数或融合的梯度、优化器状态等),device内存不足时不建议使用。
  2. 融合张量内存与原张量共享内存,若更改其一的内存地址,将破坏共享内存机制,可能引起精度异常等问题,使用时须用户自行保证共享内存不被破坏。
torch_npu.optim.NpuFusedOptimizerBase(params)

通过张量融合实现优化器的基础类,实现梯度清零、梯度更新等优化器基本功能,用户可进行继承实现自定义融合优化器。

torch_npu.optim.NpuFusedSGD(params, lr=required, momentum=MOMENTUM_MIN, dampening=DAMPENING_DEFAULT, weight_decay=WEIGHT_DECAY_MIN, nesterov=False)

通过张量融合实现的随机梯度下降算法。

torch_npu.optim.NpuFusedAdam(params, lr=1e-3, betas=(0.9, 0.999), eps=1e-8, weight_decay=0, amsgrad=False)

通过张量融合实现的Adam算法。

torch_npu.optim.NpuFusedAdamW(params, lr=1e-3, betas=(0.9, 0.999), eps=1e-8, weight_decay=1e-2, amsgrad=False)

通过张量融合实现的AdamW算法。

torch_npu.optim.NpuFusedAdamP(params, lr=1e-3, betas=(0.9, 0.999), eps=1e-8, weight_decay=0, delta=0.1, wd_ratio=0.1, nesterov=False)

通过张量融合实现的AdamP算法。

torch_npu.optim.NpuFusedBertAdam(params, lr=required, warmup=-1, t_total=-1, schedule='warmup_linear', b1=0.9, b2=0.99, e=1e-6, weight_decay=0.01, max_grad_norm=-1)

通过张量融合实现的 BertAdam 算法。

torch_npu.optim.NpuFusedAdadelta(params, lr=1.0, rho=0.9, eps=1e-6, weight_decay=0)

通过张量融合实现的 Adadelta 算法。

torch_npu.optim.NpuFusedLamb(params, lr=1e-3, betas=(0.9, 0.999), eps=1e-6, weight_decay=0, adam=False, use_global_grad_norm=False)

通过张量融合实现的 FusedLamb 算法。

torch_npu.optim.NpuFusedRMSprop(params, lr=1e-2, alpha=0.99, eps=1e-8, weight_decay=0, momentum=0, centered=False)

通过张量融合实现的 RMSprop 算法。

torch_npu.optim.NpuFusedRMSpropTF(params, lr=1e-2, alpha=0.9, eps=1e-10, weight_decay=0, momentum=0., centered=False, decoupled_decay=False, lr_in_momentum=True)

通过张量融合实现的 RMSpropTF 算法。

amp接口说明

torch_npu.npu.get_npu_overflow_flag()

检测npu计算过程中是否有数值溢出。

torch_npu.npu.clear_npu_overflow_flag

对npu芯片溢出检测为进行清零。

dump接口说明

torch_npu.npu.init_dump()

初始化dump配置

torch_npu.npu.set_dump(path_to_json)

传入配置文件来配置dump参数

torch_npu.npu.finalize_dump()

结束dump

算子接口说明

torch_npu.npu.set_compile_mode(jit_compile = bool)

设置是否开启二进制。

torch_npu.npu.is_jit_compile_false()
确认算子计算是否采用的二进制,如果是二进制计算,返回True,否则返回False。
  • 参数解释:

    无参数。

  • 返回值:

    bool型。

  • 约束条件:

  • 示例:
    >>>torch.npu.set_compile_mode(jit_compile=False)
torch_npu.npu.set_mm_bmm_format_nd(bool)
设置线性module里面的mm和bmm算子是否用ND格式。
  • 参数解释:

    无参数。

  • 返回值:

    无。

  • 约束条件:

  • 示例:
    >>>torch_npu.npu.set_mm_bmm_format_nd(True)
torch_npu.npu.get_mm_bmm_format_nd()
确认线性module里面的mm和bmm算子是否有使能ND格式,如果使能了ND,返回True,否则,返回False。
  • 参数解释:

    无参数。

  • 返回值:

    bool型。

  • 约束条件:

  • 示例:
    >>>torch_npu.npu.set_mm_bmm_format_nd()
       True
torch_npu.npu.config.allow_internal_format = bool

是否使用私有格式,设置为True时允许使用私有格式,设置为False时,不允许申请任何私有格式的tensor,避免了适配层出现私有格式流通。

profiling接口说明

torch_npu.npu.set_aoe (dump_path)
AOE调优使能。
  • 参数解释:

    dump_path:dump算子图保存路径

  • 返回值:

  • 约束条件:

  • 示例:

torch_npu.npu.profile(profiler_result_path, use_e2e_profiler, config)
通过profiling获取性能数据文件
  • 参数解释:

    profiler_result_path:profiling结果保存路径,默认为当前路径

    use_e2e_profiler:是否开启E2E profiling功能,默认为False,代表仅开启CANN profiling功能,采集CANN层面的数据。

    config:torch.npu. profileConfig类型,指定Profiling配置数据

  • 返回值:

  • 约束条件:

  • 示例:

torch_npu.npu.prof_init (profiler_result_path)
初始化Profiling。
  • 参数解释:

    profiler_result_path:保存性能数据的文件的路径。

  • 返回值:

  • 约束条件:

  • 示例:

torch_npu.npu.prof_start (config)
下发Profiling请求,使能对应数据的采集。
  • 参数解释:

    config:torch.npu. profileConfig类型,指定Profiling配置数据

  • 返回值:

  • 约束条件:

  • 示例:

torch_npu.npu.prof_stop()
停止Profiling数据采集,与torch_npu.npu.prof_start配对使用
  • 参数解释:

    无参数。

  • 返回值:

  • 约束条件:

  • 示例:

torch_npu.npu.prof_finalize()
结束Profiling,与torch_npu.npu.prof_init配对使用
  • 参数解释:

    无参数。

  • 返回值:

  • 约束条件:

  • 示例:

torch_npu.npu.iteration_start()
为了从prof图上区分step信息,进入每个step时打上开始标记。
  • 参数解释:

    无参数。

  • 返回值:

  • 约束条件:

  • 示例:

torch_npu.npu.iteration_end()
为了从prof图上区分step信息,每个step结束时打上结束标记
  • 参数解释:

    无参数。

  • 返回值:

  • 约束条件:

  • 示例:

torch_npu.npu.profileConfig(ACL_PROF_ACL_API=True, \
                        ACL_PROF_TASK_TIME=True, ACL_PROF_AICORE_METRICS=True, \
                        ACL_PROF_AICPU=True, ACL_PROF_L2CACHE=False, \
                        ACL_PROF_HCCL_TRACE=True, ACL_PROF_TRAINING_TRACE=False, \
                        TORCH_CALL_STACK=False, \
                        aiCoreMetricsType=1)
指定Profiling配置数据。
  • 参数解释:

    ACL_PROF_ACL_API:采集AscendCL接口的性能数据,默认为True。

    ACL_PROF_TASK_TIME:采集AI CORE算子的执行时间,默认为True。

    ACL_PROF_AICORE_METRICS:采集AI CORE性能指标数据,默认为True,当值为True时,aicore_metrics入参处配置的性能指标采集项才有效。

    ACL_PROF_AICPU:采集AI CPU任务的开始、结束轨迹数据,默认为True。

    ACL_PROF_L2CACHE:采集L2 Cache数据,该数据会导致prof结果膨胀,默认False。

    ACL_PROF_HCCL_TRACE:采集HCCL数据,默认为True。

    ACL_PROF_TRAINING_TRACE:表示迭代轨迹数据,记录模型正向和反向等步骤,默认False。

    TORCH_CALL_STACK:表示PyTorch框架层的算子调用栈信息,默认False。

    表1 aiCoreMetricsType取值和定义说明表

    参数取值

    相关参数

    参数定义

    采集项

    0

    ACL_AICORE_ARITHMETIC_UTILIZATION

    各种计算类指标占比统计。

    mac_fp16_ratio、mac_int8_ratio、vec_fp32_ratio、vec_fp16_ratio、vec_int32_ratio、vec_misc_ratio。

    1

    ACL_AICORE_PIPE_UTILIZATION

    计算单元和搬运单元耗时占比。

    vec_ratio、mac_ratio、scalar_ratio、mte1_ratio、mte2_ratio、mte3_ratio、icache_miss_rate。

    2

    ACL_AICORE_MEMORY_BANDWIDTH

    外部内存读写类指令占比。

    ub_read_bw、ub_write_bw、l1_read_bw、l1_write_bw、l2_read_bw、l2_write_bw、main_mem_read_bw、main_mem_write_bw。

    3

    ACL_AICORE_L0B_AND_WIDTH

    内部内存读写类指令占比。

    scalar_ld_ratio、scalar_st_ratio、l0a_read_bw、l0a_write_bw、l0b_read_bw、l0b_write_bw、l0c_read_bw、l0c_write_bw。

    4

    ACL_AICORE_RESOURCE_CONFLICT_RATIO

    流水线队列类指令占比。

    vec_bankgroup_cflt_ratio、vec_bank_cflt_ratio、vec_resc_cflt_ratio、mte1_iq_full_ratio、mte2_iq_full_ratio、mte3_iq_full_ratio、cube_iq_full_ratio、vec_iq_full_ratio、iq_full_ratio。

    5

    ACL_AICORE_MEMORY_UB

    内部内存读写指令占比。

    ub_read_bw_vector、ub_write_bw_vector、ub_read_bw_scalar、ub_write_bw_scalar。

    0x FF

    ACL_AICORE_NONE

    不采集。

    无。

  • 返回值:

  • 约束条件:

  • 示例:

torch_npu.profiler.profile(activities=None, schedule=None, on_trace_ready=None, record_shapes=False, profile_memory=False, with_stack=False, with_flops=False, with_modules=False, experimental_config=None, use_cuda=None)

提供对训练过程数据的profiling功能。

torch_npu.profiler.ProfilerActivity

事件采集列表,枚举类。用于赋值给torch_npu.profiler.profile的activities参数。

torch_npu.profiler.supported_activities()
事件采集列表,枚举类。用于赋值给torch_npu.profiler.profile的activities参数。
  • 参数解释:

    无参数。

  • 返回值:

  • 约束条件:

  • 示例:

torch_npu.profiler.tensorboard_trace_handler(dir_name, worker_name = None, use_gzip = False)

将采集到的性能数据导出为TensorBoard工具支持的格式。用于构造torch_npu.profiler.profile的on_trace_ready参数。

torch_npu.profiler.schedule (wait, active, warmup = 0, repeat = 0, skip_first = 0)

设置不同step的行为。用于构造torch_npu.profiler.profile的schedule参数。

torch_npu.profiler.ProfilerAction

Profiler状态,Enum类型。

torch_npu.profiler._ExperimentalConfig(profiler_level = Constant.LEVEL0, aic_metrics = Constant.AicMetricsNone, l2_cache = False, record_op_args = False)

Profiling扩展参数。用于构造torch_npu.profiler.profile的experimental_config参数。

torch_npu.profiler.supported_profiler_level()

返回支持的AI Core的性能指标采集项,返回值等同torch_npu.profiler.ProfilerLevel枚举类的取值范围。

torch_npu.profiler.supported_ai_core_metrics()

返回支持的采集等级,返回值等同torch_npu.profiler.AiCMetrics枚举类的取值范围。

torch_npu.profiler.ProfilerLevel

采集等级,用于作为 _ExperimentalConfig类的profiler_level参数。

torch_npu.profiler.AiCMetrics

AI Core的性能指标采集项,用于作为 _ExperimentalConfig类的aic_metrics参数。

random接口说明

torch_npu.npu._in_bad_fork()

用在 torch.manual_seed 的全局变量

aclnn接口说明

torch_npu.aclnn.allow_hf32:bool

设置conv算子是否支持hf32,一个属性值,对aclnn的allow_hf32属性的设置和查询,默认值为true。

torch_npu.aclnn.version(): -> None

查询当前aclnn的版本信息,当前版本还没有支持正确的aclnn的版本,兼容返回None同时做warn提示torch.npu.aclnn.version isn't implemented!