TensorFlow Serving 简介
TensorFlow Serving 是一种专为生产环境打造的灵活且高性能的机器学习模型服务系统,它主要用于部署机器学习模型。
源代码
http://www.gitpp.com/zhuzhudan/serving-cn
TensorFlow Serving 涵盖了机器学习的推理环节,负责在模型训练后接管并管理其整个生命周期,为客户端提供高效、带引用计数的版本化模型访问服务。TensorFlow Serving 与 TensorFlow 模型实现了无缝集成,同时它也具备扩展性,能够支持其他类型的模型和数据。
功能概述
TensorFlow Serving 的设计目标是简化将已训练模型部署到生产环境的过程,并提供灵活的模型管理和版本控制功能。以下是该系统的主要组件和功能:
核心组件:
tensorflow_serving/core:包含 TensorFlow Serving 的核心逻辑和组件,例如 LoaderHarness,它负责管理模型的加载和卸载生命周期。
tensorflow_serving/model_servers:提供模型服务器的实现,如 tensorflow_model_server。
服务配置:
tensorflow_serving/config:包含用于配置模型服务器行为的服务配置文件和相关工具。
模型管理:
tensorflow_serving/servables:提供模型管理的接口和实现,支持 TensorFlow、Embeddings、Vocabularies 等多种类型的模型。
API 和协议:
tensorflow_serving/apis:定义了 TensorFlow Serving 的 API,包括 gRPC 和 REST 接口。
性能优化:
tensorflow_serving/batching:支持批量处理请求,以提升服务的吞吐量和性能。
文档和示例:
tensorflow_serving/g3doc:提供详细的文档、教程和示例,帮助用户了解如何使用和配置 TensorFlow Serving。
测试和工具:
tensorflow_serving/test_util 和 tensorflow_serving/tools:提供测试工具和辅助脚本,用于验证和调试服务。
第三方依赖:
third_party:包含 TensorFlow Serving 所需的第三方库和工具。
支持的模型格式
TensorFlow Serving 主要支持以下 TensorFlow 模型格式:
SavedModel 格式
概述:SavedModel 是 TensorFlow 的标准序列化格式,包含模型的计算图、变量以及跨设备运行的元数据。它是 TensorFlow Serving 推荐的模型存储格式,因其提供了灵活且平台无关的方式来保存和恢复 TensorFlow 模型。
使用方法:在 TensorFlow 中,可通过 tf.saved_model.save() 函数将训练好的模型保存为 SavedModel 格式。
优势:支持 TensorFlow 的多种功能,包括计算图、变量、签名等;可跨不同版本的 TensorFlow 使用;适用于多种部署环境,如 TensorFlow Serving、TensorFlow Lite 等。
TensorFlow 1.x 的冻结图(Frozen Graph)
概述:在 TensorFlow 1.x 中,冻结图是将计算图和变量合并在一起的模型格式。它将图结构和参数存储在一个文件中,且变量被转换为常量,使模型更轻便、易于部署。
使用方法:在 TensorFlow 1.x 中,可通过 tf.graph_util.convert_variables_to_constants() 函数将变量转换为常量,并将计算图保存为冻结图。
注意事项:TensorFlow Serving 仍支持 TensorFlow 1.x 的冻结图,但建议新开发使用 SavedModel 格式;可能需要额外步骤将冻结图转换为 TensorFlow Serving 可用的格式。
检查点(Checkpoint)文件
概述:Checkpoint 文件包含模型的变量信息,但不包含计算图结构。通常用于保存训练过程中的模型参数,以便在训练中断后恢复。
使用方法:在 TensorFlow 中,可使用 tf.train.Checkpoint 和 tf.train.CheckpointManager 来保存和管理检查点文件。
转换为 SavedModel 格式:虽然检查点文件本身不可直接部署,但可将其中的变量加载到计算图中,然后保存为 SavedModel 格式。
其他模型格式的转换
ONNX 格式:虽然 TensorFlow Serving 主要针对 TensorFlow 模型设计,但可使用 ONNX 工具将 TensorFlow 模型转换为 ONNX 格式,然后部署到其他支持 ONNX 的服务中。例如,使用 tf2onnx 工具进行转换。
转换后部署:转换为 ONNX 格式后,可使用支持 ONNX 的服务(如 ONNX Runtime)进行部署,但 TensorFlow Serving 不直接支持 ONNX 格式,需额外转换步骤。
总结
TensorFlow Serving 最推荐使用 SavedModel 格式,因其提供了最全面、灵活的部署选项。对于 TensorFlow 1.x 的遗留模型,可使用冻结图,但可能需额外步骤进行部署。检查点文件主要用于训练过程中保存模型参数,需转换为 SavedModel 格式后方可部署。对于其他格式(如 ONNX),需使用额外工具进行转换,并需考虑部署环境的支持情况。
TensorFlow Serving 简介
TensorFlow Serving 是一种专为生产环境打造的灵活且高性能的机器学习模型服务系统,它主要用于部署机器学习模型。
源代码
http://www.gitpp.com/zhuzhudan/serving-cn