菜单

多后端架构

相关源文件

本文档解释了 Keras 3 的多后端架构,该架构使得代码无需修改即可在 TensorFlow、JAX、PyTorch、NumPy 和 OpenVINO 后端上运行。有关特定后端配置说明,请参阅后端配置

介绍

Keras 3 采用多后端架构,抽象了流行深度学习框架之间的差异。这种设计允许开发者一次编写模型,然后无需更改代码即可在任何支持的后端上运行。该架构包括:

  1. 统一的高级API
  2. 后端特定实现
  3. 动态后端调度器
  4. 跨后端兼容层

来源: README.md1-13 README.md73-92

架构概述

Keras 3 架构围绕一个与后端无关的 API 层设计,该层将操作调度到相应的后端实现。

来源: README.md3-13 README.md73-96

后端配置

后端选择发生在导入时,Keras 导入后不能更改。后端通过以下方式确定:

  1. KERAS_BACKEND 环境变量
  2. 位于 ~/.keras/keras.json 的配置文件

后端配置影响所有操作的执行方式,但不会改变面向用户的 API。

来源: README.md73-92

操作调度系统

操作调度系统是多后端架构的核心组件。它确保使用所选后端实现来执行操作。

Keras 中的操作有两种模式:

  1. 符号模式(模型构建期间):操作创建具有适当形状和 dtype 信息的 KerasTensor 对象
  2. 即时模式(执行期间):操作被调度到当前后端实现

Operation 类作为所有操作的基类,并处理调度逻辑。

来源: keras/__init__.py1-52 README.md73-92

实现结构

多后端代码的组织方式明确区分了与后端无关的接口和后端特定的实现

关键组件

  • keras/api/:自动生成的、面向公众的 API
  • keras/src/backend/common/:与后端无关的接口和工具
  • keras/src/backend/{tensorflow,jax,torch,numpy,openvino}/:后端特定实现

来源: keras/__init__.py1-56 api_gen.py1-202

API生成

公共 API 使用 api_gen.py 脚本自动生成。

API 生成过程:

  1. 在源代码中查找 @keras_export 装饰器
  2. keras/api/ 中生成公共 API
  3. keras/api/_tf_keras/ 中创建 TensorFlow 兼容层
  4. 更新 keras/__init__.py 以暴露公共 API

该系统确保了实现细节与公共 API 之间的清晰分离。

来源: api_gen.py1-202 keras/api/__init__.py1-61 keras/api/_tf_keras/keras/__init__.py1-59

TensorFlow兼容层

为了确保与 tf.keras 的向后兼容性,Keras 3 包含了 TensorFlow 兼容层。

兼容层:

  • 提供与 tf.keras 的 API 兼容性
  • 在 API 生成过程中生成
  • 保持与标准 API 相同的接口,但具有 TensorFlow 特定的行为

这使得 Keras 3 可以作为 tf.keras 代码的直接替代品。

来源: api_gen.py36-135 keras/api/_tf_keras/keras/__init__.py1-59

后端特定功能和限制

虽然 Keras 3 旨在实现后端之间的完全兼容性,但仍有一些后端特定的考虑因素:

后端显著特点局限性
TensorFlow完整功能支持,tf.data 集成-
JAX多数模型表现最佳,SPMD 分布有状态操作需谨慎
PyTorch支持 PyTorch DataLoader,无缝集成 PyTorch不支持 TPU
NumPy仅限 CPU 的参考实现不支持 GPU,性能有限
OpenVINO优化推理仅限推理(不支持训练)

来源: README.md8-13 README.md93-97

跨后端数据和模型

Keras 3 支持在不同后端之间使用数据和模型。

此架构实现了:

  • 在不同后端上使用相同的模型
  • 使用任何支持格式的数据进行训练
  • 在不同后端之间保存和加载模型

来源: README.md98-111

多后端架构的优势

多后端架构提供了多项优势:

  1. 框架灵活性:在不同后端上运行相同的代码
  2. 性能优化:为特定工作负载选择最快的后端
  3. 面向未来:避免框架锁定
  4. 资源适应性:在不同硬件配置下使用相同的代码

这些优势使 Keras 3 适用于从研究到生产的广泛用例。

来源: README.md112-123