背景
- 梳理tensorflow serving的项目主要模块及其功能
- 梳理tensorflow serving的请求调用链路和生命周期
主要模块及其功能
- apis/
- 包含服务API定义和接口规范
- 定义了模型服务的gRPC和REST API
- 负责处理预测请求和响应的数据结构
- core/
- 项目的核心实现模块
- 包含模型加载、模型版本管理
- 处理模型生命周期
- 负责请求调度和资源管理
- model_servers/
- TensorFlow模型服务器的主要实现
- 包含服务器启动、配置和运行时管理
- 处理模型部署和服务
- servables/
- 不同类型模型服务的具体实现
- 支持TensorFlow、SavedModel等多种模型格式
- 处理模型加载和推理
- batching/
- 实现请求批处理机制
- 优化推理性能
- 管理批处理队列和调度
- config/
- 服务配置管理
- 模型配置文件解析
- 服务器参数设置
- sources/
- 模型数据源管理
- 处理模型文件的加载和更新
- 支持不同来源的模型文件
- util/
- 通用工具函数和辅助类
- 包含监控、日志等功能
- 提供各种通用功能支持
其他重要目录:
- example/: 包含示例代码和使用案例
- tools/: 包含构建和开发工具
- third_party/: 第三方依赖库
架构特点:
- 模块化设计:各个组件职责明确,耦合度低
- 可扩展性强:支持多种模型格式和服务方式
- 高性能:通过批处理和资源管理优化推理性能
- 生产级别:支持模型版本管理、监控和日志
服务接口
- 预测服务接口(prediction_service.proto)主要RPC接口:
- Predict:通用预测接口
- Classify:分类任务接口
- Regress:回归任务接口
- 模型管理服务(model_service.proto)主要RPC接口:
- GetModelStatus:获取模型状态
- HandleReloadConfigRequest:处理模型重载请求
- 核心数据结构定义:
A. 模型相关(model.proto)
- ModelSpec:模型规范
- SignatureDef:模型签名定义
- MetaGraphDef:计算图元数据
B. 输入输出(input.proto)
- Input:通用输入格式
- ExampleList:样例列表
- ExampleListWithContext:带上下文的样例列表
C. 预测相关:
predict.proto:
- PredictRequest:预测请求
- PredictResponse:预测响应
classification.proto:
- ClassificationRequest:分类请求
- ClassificationResult:分类结果
regression.proto:
- RegressionRequest:回归请求
- RegressionResult:回归结果
D. 模型元数据(get_model_metadata.proto)
- GetModelMetadataRequest:获取模型元数据请求
- GetModelMetadataResponse:模型元数据响应
E. 状态监控(get_model_status.proto)
- ModelStatus:模型状态信息
- ServiceStatus:服务状态信息
F. 日志相关(logging.proto, prediction_log.proto)
- PredictionLog:预测日志
- SessionLog:会话日志
- LogMetadata:日志元数据
典型调用流程示例:
预测请求:
Client -> PredictionService.Predict Request: - model_spec: {name: "model_name", version: 1} - inputs: {key: tensor_data} Response: - outputs: {key: prediction_result}
模型状态查询:
Client -> ModelService.GetModelStatus Request: - model_spec: {name: "model_name", version: 1} Response: - model_version_status: [ {version: 1, state: AVAILABLE} ]
分类请求:
Client -> PredictionService.Classify Request: - model_spec: {name: "classifier"} - input: {examples: [...]} Response: - result: {classifications: [...]}
TensorFlow Serving请求调用链路
客户端请求
│
▼
┌───────────────────────────────┐
│ [接入层] │
│ ├──► REST API请求 ──► HTTPServer(http_server.cc) │
│ │ │ │
│ │ ▼ │
│ │ HTTPRestAPIHandler │
│ │ │ │
│ │ ▼ │
│ └──► gRPC请求 ──► PredictionServiceImpl │
└───────────────────────────────┘
│
▼
┌───────────────────────────────┐
│ [核心处理层] │
│ ServerCore(server_core.cc) │
│ ├──► 1. 请求验证和预处理 │
│ │ │
│ ├──► 2. 模型管理器(AspiredVersionsManager) │
│ │ │ │
│ │ ├──► 模型版本控制 │
│ │ └──► 模型生命周期管理 │
│ │ │
│ ├──► 3. 模型加载器(Loader) │
│ │ │ │
│ │ └──► 加载指定版本模型 │
│ │ │
│ ├──► 4. 批处理系统(Batching) │
│ │ │ │
│ │ └──► 请求批处理优化 │
│ │ │
│ └──► 5. 模型推理执行 │
│ │ │
│ └──► TensorFlow计算图执行 │
└───────────────────────────────┘
│
▼
┌───────────────────────────────┐
│ [响应层] │
│ 处理推理结果 │
└───────────────────────────────┘
│
▼
返回客户端响应
本文由博客一文多发平台 OpenWrite 发布!
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。