zoukankan      html  css  js  c++  java
  • 我不会用 Triton 系列:Model Warmup 的使用

    Model Warmup 的设置

    这一篇非常简单,就是记录 Model Warmup 是如何使用的。本来是为了解决第一次推理太慢的问题,后来发现其实不适用 Model Warmup。不过都已经手写了 protobuf 了,官方的例子还藏在测试的 .sh 文件中,为了方便后续使用,就写一篇来做记录好了。

    模型配置

    其实就是看着 protobuf 的定义文件 将模型配置写出来。(手写 protobuf 唉~

    model_warmup  [
      {
        name: "random_input"
        batch_size: 1
        inputs: {
          key: "INPUT0"
          value: {
            data_type: TYPE_FP32
            dims: [224, 224, 3]
            random_data: true
          }
        }
      }
    ]
    

    一点说明

    一开始写这个 Model Warmup 的时候,是为了处理特定场景的。

    人脸识别模型中,启动的时候,需要使用其他模型去提取人脸库的特征,需要处理人脸库中的所有图片,导致第一次客户端请求很耗时。为此希望可以在启动的时候去提取,因此引入了 Model Warmup。

    但是。

    Triton 无法从 Python Backend 中获取模型依赖的信息,因而无法按照合理的顺序启动模型实例,然后进行推理。在这种情况下就不适用这个方案了。况且,人脸一般是海量的,最好是存放到一个数据库当中,而不是每次启动的时候去提取。

    此外,我是试了一下 ensemble 进行 warmup,然后就会发现竟然不给使用 warmup...

    E1111 02:19:14.474657 5983 model_repository_manager.cc:1890] Poll failed for model directory 'resnet50_ensemble': model_warmup can not be specified for ensemble 'resnet50_ensemble'
    

    适用场景

    那 Model Warmup 适合什么样的场景呢?适合 lazy initialization 的框架,这些框架在第一次推理的时候,会比较慢;在第一次推理的时候初始化,然后再进行推理;之后的推理就不会慢了。美团技术团队有一篇文章 就提到了这个问题:“模型切换毛刺问题”。

  • 相关阅读:
    sql 中 in 与 exist 的区别
    with as (cte common table expression) 公共表表达式
    配置连接数据库的方式
    Dispose 与 close 方法 的区别
    抽象类
    default
    什么叫无符号整型
    hdu 5187 zhx's contest [ 找规律 + 快速幂 + 快速乘法 || Java ]
    poj 2480 Longge's problem [ 欧拉函数 ]
    lightoj 1293
  • 原文地址:https://www.cnblogs.com/zzk0/p/15538894.html
Copyright © 2011-2022 走看看