急切地加载整个模型以估计张量流的内存消耗

Eager load the entire model to estimate memory consumption of Tensorflow Serving

本文关键字:张量流 内存 加载 模型      更新时间:2023-10-16

tensorflow服务在执行预测时,模型dag中的节点初始化了节点。这使得很难估算保存整个模型所需的内存(RAM(。是否有一种标准方法可以将张量流使用以将/加载模型完全初始化/加载模型?

完全初始化/加载模型?

您可以使用模型热身将要加载到内存中的所有组件。[1]

[1] https://www.tensorflow.org/tfx/serving/saved_model_warmup

添加链接的内容,该链接由@pedapps提供。

简介:

TensorFlow运行时具有懒惰初始化的组件,这可能会导致第一个请求/S加载后发送到模型的高延迟。

此延迟可能比单个推理请求高几个数量级。

to 减少懒惰初始化对请求延迟的影响,可以通过在模型加载时间下触发子系统和组件的初始化,并通过提供沿着沿示例的推荐请求集使用 SavedModel

此过程称为"变暖" 型号。

用法:

SavedModel WarmupRegress, Classify, MultiInference and Predict

要在加载时间触发模型的热身,请在SavedModel目录的assets.extra子文件夹下附加热身数据文件。

模型热身的要求正确工作:

  • 热身文件名:'tf_serving_warmup_requests'

  • 文件位置:Assets.extra/

  • 文件格式:每个记录作为预测库。

  • 热身记录< = 1000。

  • 热身数据必须代表所使用的推理请求在服务。

示例代码段生成热身数据:

import tensorflow as tf
from tensorflow_serving.apis import classification_pb2
from tensorflow_serving.apis import inference_pb2
from tensorflow_serving.apis import model_pb2
from tensorflow_serving.apis import predict_pb2
from tensorflow_serving.apis import prediction_log_pb2
from tensorflow_serving.apis import regression_pb2
def main():
    with tf.python_io.TFRecordWriter("tf_serving_warmup_requests") as writer:
        # replace <request> with one of:
        # predict_pb2.PredictRequest(..)
        # classification_pb2.ClassificationRequest(..)
        # regression_pb2.RegressionRequest(..)
        # inference_pb2.MultiInferenceRequest(..)
        log = prediction_log_pb2.PredictionLog(
            predict_log=prediction_log_pb2.PredictLog(request=<request>))
        writer.write(log.SerializeToString())
if __name__ == "__main__":
    main()