TensorFlow 架构

17 Mar 2025 | 4 分钟阅读

TensorFlow 运行时是一个跨平台库。 系统架构使这种组合具有灵活性。 我们对 TensorFlow 编程概念有基本的熟悉,例如计算图、操作和会话。

为了理解 TensorFlow 架构,首先需要理解一些术语。 这些术语是 TensorFlow Servable、Servable Streams、TensorFlow Models、Loaders、Sources、Manager 和 Core。 下面描述了这些术语及其在 TensorFlow 架构中的功能。

TensorFlow 架构适合阅读和修改核心 TensorFlow 代码。

1. TensorFlow Servable

这些是 TensorFlow serving 中的核心未完成单元。 Servables 是客户端用来执行计算的对象。

Servable 的大小是灵活的。 单个 servable 可以由任何内容组成,从查找表到接口模型元组中的唯一模型。 Servable 应该属于任何类型和接口,从而实现灵活性和未来的改进,例如

  • 流式结果
  • 异步操作模式。
  • 实验性 API

2. Servable 版本

TensorFlow 服务器可以在任何单个服务器实例的生命周期内处理一个或多个版本的 servables。 它为新的算法配置、权重和其他数据可以随时间加载打开了大门。 它们还可以启用同时加载一个以上的 servable 版本。 它们还允许并发加载一个以上的 servable 版本,支持逐步推出和实验。

3. Servable Streams

任何 servable 的版本序列,按版本号递增排序。

4. TensorFlow 模型

serving 代表一个或多个 servables 中的模型。 机器学习模型包括一个或多个算法并查找嵌入表。 Servable 也可以像模型的一部分一样提供服务; 例如,一个大型查找表可以作为许多实例提供服务。

5. TensorFlow Loaders

Loaders 管理 servable 的生命周期。 Loader API 启用与所涉及的特定学习算法、数据或产品用例无关的通用基础设施。

6. TensorFlow 架构中的 Sources

简单来说,sources 是查找并提供 servable 的模块。 每个引用一次提供零个或多个 servable streams。 对于每个 servable stream,一个 source 只为每个 servable 提供一个 loader 实例。

每个 source 还提供零个或多个 servable streams。 对于每个 servable stream,一个 source 只提供一个 loader 实例并使其可用以供加载。

7. TensorFlow Managers

TensorFlow 管理器处理 Servables 的整个生命周期,包括

  • 加载 Servables
  • 提供 Servables
  • 卸载 Servables

Manager 观察到 sources 并跟踪所有版本。 Manager 尝试满足原因,但它可以拒绝加载 Aspired 版本。

Manager 还可以推迟“卸载”。 例如,manager 可以等待卸载,直到较新版本完成加载,基于一个策略,以确保始终至少加载一个版本。

例如, GetServableHandle(),供客户端访问已加载的 servable 实例。

8. TensorFlow Core

这管理 servables 的以下方面

Architecture of TensorFlow
  • 生命周期
  • 指标
  • TensorFlow serving 核心满足 servables 并将 loaders 作为不透明对象。

9. Servable 的生命周期

Architecture of TensorFlow

TensorFlow 技术架构

  • Sources 为 Servable 版本创建 loader,然后 loader 作为 Aspired 版本发送到 Manager,Manager 将加载并将它们提供给客户端请求。
  • Loader 包含元数据,它需要加载 servable。
  • Source 使用回调来向 Manager 传达 Aspired 版本。
  • Manager 应用有效版本策略以确定要采取的下一个操作。
  • 如果 Manager 确定它给 Loader 加载新版本,客户端会向 Manager 询问 servable,并显式指定版本或请求当前版本。 Manager 返回 servable 的句柄。 动态 Manager 应用版本操作并决定加载它的较新版本。
  • 动态 Manager 命令 Loader 存在足够的内存。
  • 客户端请求该模型的最新版本的句柄,动态 Manager 返回 servable 的新版本的句柄。

10. TensorFlow Loaders

TensorFlow 就是这样的算法后端。 例如,我们将实现一个新的 loader 来加载、提供访问和卸载机器学习模型的新类型 servable 的实例。

11. TensorFlow 架构中的 Batcher

将 TensorFlow 请求批处理到单个应用程序中可以显着降低执行推理的成本,尤其是在存在硬件加速器和 GPU 的情况下。 TensorFlow serving 有一个声明批处理设备,该设备批准客户端将其特定类型的假设超出请求快速批处理到批次中。 并且请求算法系统可以更有效地处理。