---
title: 接口列表
description: "用户可以基于深度学习框架TensorFlow 1.15进行训练或在线推理脚本的开发，TF Adapter提供了适配TensorFlow 1.15框架的用户接口。"
url: https://www.hiascend.com/document/detail/zh/TensorFlowCommercial/latest/migration/tfmigr1/tfmigr1_tfadapi_0001.html
sourcePath: /source/zh/TensorFlowCommercial/900/migration/tfmigr1/tfmigr1_tfadapi_0001.html
indexId: 8a486ab451af86d1e0ba57d5149dc4749edcb0669d0671b9f0bb758621f8a4b879
---
# 接口列表

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

图1 TF Adapter接口

接口路径：${TFPLUGIN_INSTALL_PATH}/python/site-packages/npu_bridge。


**表1 TF Adapter接口列表**

| 接口名称 | 接口简介 |
| --- | --- |
| session配置参数说明 | TF Adapter提供了系列session配置用于进行功能调试、性能提升、精度提升等，开发者在AI处理器上进行模型训练或在线推理时，可以使用这些session配置。 |
| NPURunConfig构造函数 | 开发者在AI处理器上通过Estimator模式进行模型训练或在线推理时，可通过NPURunConfig类的构造函数，指定Estimator的运行配置。 |
| ProfilingConfig构造函数 | 用于配置Profiling功能。 |
| MemoryConfig构造函数 | 用于配置系统内存使用方式。 |
| DumpConfig构造函数 | 用于配置dump功能。 |
| ExperimentalConfig构造函数 | 调试功能扩展参数，后续版本可能会存在变动，不支持应用于商用产品中。 |
| NPUEstimator构造函数 | NPUEstimator类的构造函数，NPUEstimator类继承了TensorFlow的Estimator类，可以调用基类的原生接口，用来训练、评估、推理TensorFlow模型。 |
| NPUEstimatorSpec构造函数 | NPUEstimatorSpec类的构造函数，NPUEstimatorSpec类继承了TensorFlow的EstimatorSpec类，可以调用基类的原生接口，定义具体的模型对象。 |
| NPUStrategy构造函数 | NPUStrategy类的构造函数。NPUStrategy继承了tf.distribute.Strategy类，可以调用基类的原生接口，用于在NPU环境中实现分布式训练。 |
| NPUCheckpointSaverHook构造函数 | NPUCheckpointSaverHook类的构造函数，用于保存Checkpoint文件。NPUCheckpointSaverHook类继承了CheckpointSaverHook类，可以调用基类的原生接口，用于记录训练过程中的模型信息。 |
| NPUOutputTensorHook构造函数 | NPUOutputTensorHook类的构造函数，NPUOutputTensorHook作用于NPUEstimator的train、evaluate、predict流程中的Hook，用于每N步或者结束时调用用户自定义的output\_fn，打印输出tensors。NPUOutputTensorHook类继承了LoggingTensorHook类，可以调用基类的原生接口。 |
| TellMeStepOrLossHook构造函数 | TellMeStepOrLossHook类的构造函数，TellMeStepOrLossHook用于告知底层软件“当前执行的步数和总的步数”或者“当前执行的loss和最终的目标loss”。 |
| NPUDistributedOptimizer构造函数 | NPUDistributedOptimizer类的构造函数，用于包装用户提供的单机训练优化器，构造NPU分布式训练优化器。 |
| NPUOptimizer构造函数 | NPUOptimizer类的构造函数，该优化器将NPUDistributedOptimizer和NPULossScaleOptimizer优化器合并。主要提供如下功能： Loss Scaling：支持在混合精度训练中使能Loss Scaling，从而解决由于float16表示范围较小导致的下溢出问题。 分布式训练：包装用户提供的单机训练优化器，构造NPU分布式训练优化器，支持单机单卡、单机多卡、多机多卡等组网形式下，各个Device之间计算梯度后执行梯度聚合操作。 通信拖尾优化：通过计算依赖关系的改变，将不依赖于最后一个AR（梯度聚合分片）的计算操作调度到和最后一个AR并行进行，以达到优化通信拖尾时间的目的。 |
| KerasDistributeOptimizer构造函数 | KerasDistributeOptimizer类的构造函数，用于包装用户使用tf.Keras构造的脚本中的单机训练优化器，构造NPU分布式训练优化器。 |
| npu\_distributed\_optimizer\_wrapper | 对传入的optimizer中的求梯度的函数添加NPU的allreduce操作之后，将包含原生优化器求梯度和NPU的allreduce两个操作合并为一个函数，替换原生优化器的求梯度的函数，最终返回输入的优化器。该接口仅在分布式场景下使用。 |
| npu\_allreduce | 梯度计算完成后，对梯度进行allreduce和梯度更新。 |
| NPUBroadcastGlobalVariablesCallback构造函数 | Keras场景下对变量进行广播，使得在分布式场景下每个device上的变量初始值保持一致。 |
| NPULossScaleOptimizer构造函数 | NPULossScaleOptimizer类的构造函数，浮点计算的溢出模式为“饱和模式”的场景下，用于在混合精度训练中使能Loss Scaling。Loss Scaling解决了由于float16表示范围较小导致的下溢出问题。 |
| FixedLossScaleManager构造函数 | FixedLossScaleManager类的构造函数，浮点计算的溢出模式为“饱和模式”的场景下，可通过此接口定义训练场景下的静态LossScale参数。 |
| ExponentialUpdateLossScaleManager构造函数 | ExponentialUpdateLossScaleManager类的构造函数，浮点计算的溢出模式为“饱和模式”的场景下，用于定义训练场景下的动态LossScale参数，并通过定义loss\_scale变量动态获取和更新LossScale值。 |
| dropout | 和tf.nn.dropout功能相同。以概率keep\_prob（保留概率）将输入Tensor中的元素置零，未被丢弃的元素值按“1/keep\_prob”缩放，最终输出Tensor的shape与输入Tensor保持一致。 |
| LARSV2 | 该算子基于权重的范数和梯度的范数在不同层级上使用不同的学习率，对梯度缩放。通常用于提升大batch size场景下的训练精度，用于大规模集群训练，减少训练时间。 |
| initialize\_system | 一般执行训练不需要调用该接口，如果用户统计训练时间时不想包括GE初始化时间，可以使用该接口。使用集合通信接口时，需要先调用该接口进行集合通信初始化。 |
| shutdown\_system | 关闭所有Device，和initialize\_system配合使用。 |
| npu\_onnx\_graph\_op | 以算子形式加载ONNX模型，将指定路径中onnx模型通过TensorFlow的框架执行在AI处理器。 |
| npu\_dynamic\_rnn | 创建由RNNCell指定的高性能神经网络。 |
| DynamicRNN构造函数 | TensorFlow侧使用该接口，支持RNN类网络训练、推理。 |
| DynamicGRUV2构造函数 | TensorFlow侧使用该接口，支持RNN类网络训练、推理。 |
| without\_npu\_compile\_scope | 混合计算场景下，配置在Host侧编译的算子。 |
| keep\_dtype\_scope | 指定哪些算子保持原有精度，如果原始网络模型中的算子精度在AI处理器上不支持，则系统内部自动采用算子支持的高精度来计算。 |
| npu\_weight\_prefetch\_scope | 用于标识哪些算子使用权重预取缓存池内存，并指定使用的缓存池的id以及大小。 |
| subgraph\_multi\_dims\_scope | 在线推理场景下指定需要进行子图动态分档的算子scope。 |
| set\_iteration\_per\_loop | 设置sess.run模式下小循环次数，即每次sess.run()在Device侧执行训练迭代的次数，可以减少Host与Device间的交互次数，缩短训练时长。 |
| create\_iteration\_per\_loop\_var | 该接口和load\_iteration\_per\_loop\_var接口配合使用，用来实现sess.run模式下设置小循环次数，即每次sess.run()在Device侧执行训练迭代的次数。该接口的主要作用是修改图，并通过load\_iteration\_per\_loop\_var接口来设置小循环次数。 |
| load\_iteration\_per\_loop\_var | 该接口和create\_iteration\_per\_loop\_var接口配合使用，用来实现sess.run模式下设置小循环次数，即每次sess.run()在Device侧执行训练迭代的次数。 |
| set\_graph\_exec\_config | 图级别的配置项接口，用于按计算图设置编译和运行选项。通过该接口调用之后，fetch节点会被打上设置的属性。 |
| keep\_tensors\_dtypes | 指定哪些算子保持原有精度。 |
| set\_op\_input\_tensor\_multi\_dims | 在线推理场景下，使用子图分档功能，用于指定当前算子的输入shape以及所有分档档位的shape信息。 |
| model\_to\_npu\_estimator | 将通过Keras构建的模型转换为NPUEstimator对象。 |
| set\_device\_sat\_mode | 设置针对浮点计算的进程级溢出模式。 |
| ScopedGraphManager | 可通过该接口一次性卸载变量初始化图，并释放其中常量节点占用的内存。 |
| Profiler构造函数 | Profiler类的构造函数，用于局部打开Profiling功能，例如仅采集TensorFlow网络中局部子图的性能数据，或采集指定step的性能数据。 |
| allreduce | 集合通信算子AllReduce的操作接口，将group内所有节点的输入数据进行归约操作后，再把结果发送到所有节点的输出buf，其中归约操作类型由reduction参数指定。 |
| allgather | 集合通信算子AllGather的操作接口，将通信域内所有节点的输入按照rank id重新排序，然后拼接起来，再将结果发送到所有节点的输出。 |
| broadcast | 集合通信算子Broadcast的操作接口，将通信域内root节点的数据广播到其他rank。 |
| reduce\_scatter | 集合通信算子ReduceScatter的操作接口。将所有rank的输入相加（或其他归约操作）后，再把结果按照rank编号均匀分散到各个rank的输出buffer，每个进程拿到其他进程1/rank\_size份的数据进行归约操作。 |
| reduce | 集合通信算子Reduce的操作接口，将所有rank的数据相加（或其他归约操作）后，再把结果发送到root节点的指定位置上。 |
| send | 提供group内点对点通信数据的send功能。 |
| receive | 提供group内点对点通信数据的receive功能。 |
| alltoallv | 集合通信AlltoAllV操作接口。向通信域内所有rank发送数据（数据量可以定制），并从所有rank接收数据。 |
| alltoallvc | 集合通信alltoallvc操作接口。向通信域内所有rank发送数据（数据量可以定制），并从所有rank接收数据。 alltoallvc通过输入参数send\_count\_matrix传入所有rank的收发参数，与alltoallv相比，性能更优。 |
