接口列表
用户可以基于深度学习框架TensorFlow 1.15进行训练或在线推理脚本的开发,TF Adapter提供了适配TensorFlow 1.15框架的用户接口。

接口路径:${install_path}/python/site-packages/npu_bridge。
功能类别  | 
接口名称  | 
接口简介  | 
|---|---|---|
session配置  | 
TF Adapter提供了系列session配置用于进行功能调试、性能提升、精度提升等,开发者在昇腾AI处理器上进行模型训练或在线推理时,可以使用这些session配置。  | 
|
npu.npu_config  | 
开发者在昇腾AI处理器上通过Estimator模式进行模型训练或在线推理时,可通过NPURunConfig类的构造函数,指定Estimator的运行配置。  | 
|
用于配置Profiling功能。  | 
||
用于配置系统内存使用方式。  | 
||
用于配置dump功能。  | 
||
调试功能扩展参数,后续版本可能会存在变动,不支持应用于商用产品中。  | 
||
npu.npu_estimator  | 
NPUEstimator类的构造函数,NPUEstimator类继承了TensorFlow的Estimator类,可以调用基类的原生接口,用来训练、评估、推理TensorFlow模型。  | 
|
NPUEstimatorSpec类的构造函数,NPUEstimatorSpec类继承了TensorFlow的EstimatorSpec类,可以调用基类的原生接口,定义具体的模型对象。  | 
||
npu_strategy  | 
NPUStrategy类的构造函数。NPUStrategy继承了tf.distribute.Strategy类,可以调用基类的原生接口,用于在NPU环境中实现分布式训练。  | 
|
npu_hook  | 
NPUCheckpointSaverHook类的构造函数,用于保存checkpoint文件。NPUCheckpointSaverHook类继承了CheckpointSaverHook类,可以调用基类的原生接口,用于记录训练过程中的模型信息。  | 
|
NPUOutputTensorHook类的构造函数,NPUOutputTensorHook作用于NPUEstimator的train、evaluate、predict流程中的Hook,用于每N步或者结束时调用用户自定义的output_fn,打印输出tensors。NPUOutputTensorHook类继承了LoggingTensorHook类,可以调用基类的原生接口。  | 
||
TellMeStepOrLossHook类的构造函数,TellMeStepOrLossHook用于告知底层软件“当前执行的步数和总的步数”或者“当前执行的loss和最终的目标loss”。  | 
||
npu_optimizer  | 
NPUDistributedOptimizer类的构造函数,用于包装用户提供的单机训练优化器,构造NPU分布式训练优化器。  | 
|
NPUOptimizer类的构造函数,该优化器将NPUDistributedOptimizer和NPULossScaleOptimizer优化器合并。主要提供如下功能: 
  | 
||
KerasDistributeOptimizer类的构造函数,用于包装用户使用tf.Keras构造的脚本中的单机训练优化器,构造NPU分布式训练优化器。  | 
||
对传入的optimizer中的求梯度的函数添加npu的allreduce操作之后,将包含原生优化器求梯度和npu allreduce两个操作合并为一个函数,替换原生优化器的求梯度的函数,最终返回输入的优化器。该接口仅在分布式场景下使用。  | 
||
梯度计算完成后,对梯度进行allreduce和梯度更新。  | 
||
npu_callbacks  | 
Keras场景下对变量进行广播,使得在分布式场景下每个device上的变量初始值保持一致。  | 
|
npu_bridge.estimator.npu.npu_loss_scale_optimizer  | 
NPULossScaleOptimizer类的构造函数,浮点计算的溢出模式为“饱和模式”的场景下,用于在混合精度训练中使能Loss Scaling。Loss Scaling解决了由于float16表示范围较小导致的下溢出问题。  | 
|
npu.npu_loss_scale_manager  | 
FixedLossScaleManager类的构造函数,浮点计算的溢出模式为“饱和模式”的场景下,可通过此接口定义训练场景下的静态LossScale参数。  | 
|
ExponentialUpdateLossScaleManager类的构造函数,浮点计算的溢出模式为“饱和模式”的场景下,用于定义训练场景下的动态LossScale参数,并通过定义loss_scale变量动态获取和更新LossScale值。  | 
||
npu_ops  | 
和tf.nn.dropout功能相同。将输入Tensor按照1/keep_prob缩放,并且输入Tensor保留的概率为keep_prob,否则输出0,并且最终输出Tensor的shape和输入Tensor的shape保持一致。  | 
|
该算子基于权重的范数和梯度的范数在不同层级上使用不同的学习率,对梯度缩放。通常用于提升大batch size场景下的训练精度,用于大规模集群训练,减少训练时间。  | 
||
一般执行训练不需要调用该接口,如果用户统计训练时间时不想包括GE初始化时间,可以使用该接口。使用集合通信接口时,需要先调用该接口进行集合通信初始化。  | 
||
关闭所有Device,和initialize_system配合使用。  | 
||
以算子形式加载ONNX模型,将指定路径中onnx模型通过TensorFlow的框架执行在昇腾AI处理器。  | 
||
npu_rnn  | 
创建由RNNCell指定的高性能神经网络。  | 
|
npu_dynamic_rnn  | 
TensorFlow侧使用该接口,支持RNN类网络训练、推理。  | 
|
TensorFlow侧使用该接口,支持RNN类网络训练、推理。  | 
||
npu_scope  | 
混合计算场景下,配置在Host侧编译的算子。  | 
|
指定哪些算子保持原有精度,如果原始网络模型中的算子精度在昇腾AI处理器上不支持,则系统内部自动采用算子支持的高精度来计算。  | 
||
用于标识哪些算子使用权重预取缓存池内存,并指定使用的缓存池的id以及大小。  | 
||
在线推理场景下指定需要进行子图动态分档的算子scope。  | 
||
util  | 
设置sess.run模式下小循环次数,即每次sess.run()在Device侧执行训练迭代的次数,可以减少Host与Device间的交互次数,缩短训练时长。  | 
|
该接口和load_iteration_per_loop_var接口配合使用,用来实现sess.run模式下设置小循环次数,即每次sess.run()在Device侧执行训练迭代的次数。该接口的主要作用是修改图,并通过load_iteration_per_loop_var接口来设置小循环次数。  | 
||
该接口和create_iteration_per_loop_var接口配合使用,用来实现sess.run模式下设置小循环次数,即每次sess.run()在Device侧执行训练迭代的次数。  | 
||
图级别的配置项接口,用于按计算图设置编译和运行选项。通过该接口调用之后,fetch节点会被打上设置的属性。  | 
||
指定哪些算子保持原有精度。  | 
||
在线推理场景下,使用子图分档功能,用于指定当前算子的输入shape以及所有分档档位的shape信息。  | 
||
keras_to_npu  | 
将通过Keras构建的模型转换为NPUEstimator对象。  | 
|
npu_plugin  | 
设置针对浮点计算的进程级溢出模式。  | 
|
profiler  | 
Profiler类的构造函数,用于局部打开Profiling功能,例如仅采集TensorFlow网络中局部子图的性能数据,或采集指定step的性能数据。  |