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 |
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的实现
进行设计和重构。
>>> m = ModulatedDeformConv(32, 32, 1) >>> input_tensor = torch.randn(2, 32, 5, 5) >>> output = m(input_tensor) >>> x = torch.randn(2, 32, 7, 7) >>> model = ModulatedDeformConv(32, 32, 3, 2, 1) >>> torch.npu.set_device(0) >>> x = x.npu() >>> model = model.npu() >>> o = model(x) >>> l = o.sum() >>> l.backward() >>> print(l)
torch_npu.contrib.BiLSTM
torch_npu.contrib.BiLSTM(input_size, hidden_size)
将NPU兼容的双向LSTM操作应用于输入序列。
>>> r = BiLSTM(512, 256) >>> input_tensor = torch.randn(26, 2560, 512) >>> output = r(input_tensor)
torch_npu.contrib.Swish()
应用基于NPU的Sigmoid线性单元(SiLU)函数,按元素方向。SiLU函数也称为swish函数。
>>> m = nnn.SiLU() >>> input_tensor = torch.randn(2, 32, 5, 5) >>> output = m(input_tensor)
torch_npu.contrib.NpuFairseqDropout(p, module_name=None)
在npu设备上使用FairseqDropout。
torch_npu.contrib.npu_giou(boxes1,boxes2,is_permuted=True)
仅trans=True(仅支持xywh,不支持xyxy), is_cross=False(仅支持boxes1.shape ==boxes2.shape,不支持((n,4), (m,4)))
>>> box1 = torch.randn(32, 4) >>> box1.requires_grad = True >>> box2 = torch.randn(32, 4) >>> iou1 = npu_giou(box1, box2) # (32, 1) >>> l = iou1.sum() >>> l.backward()
torch_npu.contrib.npu_ptiou(boxes1, boxes2, mode="ptiou", is_normalized=False, normalized_scale=100.)
该函数常用于bbox和anchor匹配时。到目前为止,这个函数还没有对应的后向运算符, 所以不能用在IOU_Loss中, 由于计算公式中分母加上了0.001以避免除以0,当输入框是归一化数据时,0.001的分量会太重。此时需要放大输入值,避免0.001影响过大。
>>> box1 = torch.randint(0, 256, size=(32, 4)) >>> box2 = torch.randint(0, 256, size=(16, 4)) >>> iou1 = npu_ptiou(box1, box2) # (32, 16)
torch_npu.contrib.npu_iou(boxes1, boxes2, mode="ptiou", is_normalized=False, normalized_scale=100.)
该函数常用于bbox和anchor匹配时。到目前为止,这个函数还没有对应的后向运算符, 所以不能用在IOU_Loss中, 由于计算公式中分母加上了0.001以避免除以0,当输入框是归一化数据时,0.001的分量会太重。此时需要放大输入值,避免0.001影响过大。
>>> box1 = torch.randint(0, 256, size=(32, 4)) >>> box2 = torch.randint(0, 256, size=(16, 4)) >>> iou1 = npu_iou(box1, box2) # (32, 16)
torch_npu.is_hccl_available(): -> bool
判断npu的专属通讯后端HCCL后端是否是可用的。
torch.distributed.ProcessGroupHCCL(store, rank, size, timeout); -> ProcessGroup
创建一个ProcessGroupHCCL对象并返回。
使用融合优化器约束条件:
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)
通过张量融合实现的随机梯度下降算法。
opt = torch_npu.optim.NpuFusedSGD(model.parameters(), lr=0.1, momentum=0.9, weight_decay=0.1)
torch_npu.optim.NpuFusedAdam(params, lr=1e-3, betas=(0.9, 0.999), eps=1e-8, weight_decay=0, amsgrad=False)
通过张量融合实现的Adam算法。
opt = torch_npu.optim.NpuFusedAdam(model.parameters(), lr=0.1, weight_decay=0.1)
torch_npu.optim.NpuFusedAdamW(params, lr=1e-3, betas=(0.9, 0.999), eps=1e-8, weight_decay=1e-2, amsgrad=False)
通过张量融合实现的AdamW算法。
opt = torch_npu.optim.NpuFusedAdamW(model.parameters(), lr=0.1, weight_decay=0.1)
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算法。
opt = torch_npu.optim.NpuFusedAdamP(model.parameters(), lr=0.1, weight_decay=0.1, wd_ratio=0.01)
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 算法。
opt = torch_npu.optim.NpuFusedBertAdam(model.parameters(), lr=0.1, weight_decay=0.01, max_grad_norm=1.0)
torch_npu.optim.NpuFusedAdadelta(params, lr=1.0, rho=0.9, eps=1e-6, weight_decay=0)
通过张量融合实现的 Adadelta 算法。
opt = torch_npu.optim.NpuFusedAdadelta(model.parameters(), lr=0.001, rho=0.95, weight_decay=0.01)
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 算法。
opt = torch_npu.optim.NpuFusedLamb(model.parameters(), lr=0.001, weight_decay=0.01)
torch_npu.optim.NpuFusedRMSprop(params, lr=1e-2, alpha=0.99, eps=1e-8, weight_decay=0, momentum=0, centered=False)
通过张量融合实现的 RMSprop 算法。
opt = torch_npu.optim.NpuFusedRMSprop(model.parameters(), lr=0.001, weight_decay=0.01, momentum=0.9)
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 算法。
opt = torch_npu.optim.NpuFusedRMSpropTF(model.parameters(), lr=0.001, weight_decay=0.01, momentum=0.9)
torch_npu.npu.get_npu_overflow_flag()
检测npu计算过程中是否有数值溢出。
>>>a = torch.Tensor([65535]).npu().half() >>>a = a + a >>>ret = torch_npu.npu.get_npu_overflow_flag()
torch_npu.npu.clear_npu_overflow_flag
对npu芯片溢出检测为进行清零。
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)
设置是否开启二进制。
jit_compile:jit_compile=True时是非二进制模式,jit_compile=False时是二进制模式。
>>>torch.npu.set_compile_mode(jit_compile=False)
torch_npu.npu.is_jit_compile_false()
torch_npu.npu.set_mm_bmm_format_nd(bool)
torch_npu.npu.get_mm_bmm_format_nd()
torch_npu.npu.config.allow_internal_format = bool
是否使用私有格式,设置为True时允许使用私有格式,设置为False时,不允许申请任何私有格式的tensor,避免了适配层出现私有格式流通。
torch_npu.npu.set_aoe (dump_path)
torch_npu.npu.profile(profiler_result_path, use_e2e_profiler, config)
torch_npu.npu.prof_init (profiler_result_path)
torch_npu.npu.prof_start (config)
torch_npu.npu.prof_stop()
torch_npu.npu.prof_finalize()
torch_npu.npu.iteration_start()
torch_npu.npu.iteration_end()
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)
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。
参数取值 |
相关参数 |
参数定义 |
采集项 |
---|---|---|---|
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.CPU:框架侧数据采集的开关。
torch_npu.profiler.ProfilerActivity.NPU:CANN软件栈及NPU数据采集的开关。
默认情况下两个开关同时开启。
开启torch_npu.profiler.ProfilerActivity.CPU时生效。
experimental_config:扩展参数,通过扩展配置性能分析工具常用的采集项。支持采集项和详细介绍请参见torch_npu.profiler._ExperimentalConfig
experimental_config = torch_npu.profiler._ExperimentalConfig( aic_metrics=torch_npu.profiler.AiCMetrics.PipeUtilization, profiler_level=torch_npu.profiler.ProfilerLevel.Level1, l2_cache=False ) with torch_npu.profiler.profile( activities=[ torch_npu.profiler.ProfilerActivity.CPU, torch_npu.profiler.ProfilerActivity.NPU ], schedule=torch_npu.profiler.schedule(wait=1, warmup=1, active=2, repeat=2, skip_first=10), on_trace_ready=torch_npu.profiler.tensorboard_trace_handler("./result"), record_shapes=True, profile_memory=True, with_stack=True, with_flops=False, with_modules=False, experimental_config=experimental_config) as prof: for step in range(steps): train_one_step(step, steps, train_loader, model, optimizer, criterion) prof.step()
torch_npu.profiler.ProfilerActivity
事件采集列表,枚举类。用于赋值给torch_npu.profiler.profile的activities参数。
torch_npu.profiler.supported_activities()
torch_npu.profiler.tensorboard_trace_handler(dir_name, worker_name = None, use_gzip = False)
将采集到的性能数据导出为TensorBoard工具支持的格式。用于构造torch_npu.profiler.profile的on_trace_ready参数。
with torch_npu.profiler.profile( schedule=torch_npu.profiler.schedule(wait=1, warmup=1, active=2, repeat=2, skip_first=10), on_trace_ready=torch_npu.profiler.tensorboard_trace_handler("./result"), with_stack=True) as prof: for step in range(steps): train_one_step(step, steps, train_loader, model, optimizer, criterion) prof.step()
torch_npu.profiler.schedule (wait, active, warmup = 0, repeat = 0, skip_first = 0)
设置不同step的行为。用于构造torch_npu.profiler.profile的schedule参数。
with torch_npu.profiler.profile( schedule=torch_npu.profiler.schedule(wait=1, warmup=1, active=2, repeat=2, skip_first=10), on_trace_ready=torch_npu.profiler.tensorboard_trace_handler("./result"), with_stack=True) as prof: for step in range(steps): train_one_step(step, steps, train_loader, model, optimizer, criterion) prof.step()
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参数。
experimental_config = torch_npu.profiler._ExperimentalConfig( aic_metrics=torch_npu.profiler.AiCMetrics.PipeUtilization, profiler_level=torch_npu.profiler.ProfilerLevel.Level1, l2_cache=False )
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参数。
torch_npu.aclnn.allow_hf32:bool
设置conv算子是否支持hf32,一个属性值,对aclnn的allow_hf32属性的设置和查询,默认值为true。
>>>res = torch.npu.aclnn.allow_hf32 res=True >>>torch.npu.aclnn.allow_hf32 = True >>>res = torch.npu.aclnn.allow_hf32 res=True >>>torch.npu.aclnn.allow_hf32 = False >>>res = torch.npu.aclnn.allow_hf32 res=False
torch_npu.aclnn.version(): -> None
查询当前aclnn的版本信息,当前版本还没有支持正确的aclnn的版本,兼容返回None同时做warn提示torch.npu.aclnn.version isn't implemented!