• 文本进行向量化的时候目前是使用的 bert 这个模型是通过 remote 方式提供服务的,服务的地址记录在 redis 中(key 为模型名称和版本拼接作为前缀的字符串,value 就是模型提供服务的 host:ip 地址)且本地还需要下载相应模型,原因如下:
  • Reomote 方式原因
    • 基于 gpu 推理,如果不用 model serving 就要本地 gpu,比 model serving 贵,而且并发效果不好;model serving 对高并发场景又优化,而且一台 gpu 机器可以加载几十个模型共用,并发大时 model serving 更稳定(原理和服务端模型有关,属于后端架构)
    • redis 数据库中的数据是 model serving 注册的(通过 model serving 注册后,就会在 redis 中存储一组 key-value 值),代表这个 gpu 服务可用(最简单的微服务注册发现机制)。model serving 服务活的话就每 10s 注册一次,10s 后之前注册的 value 失效
  • 本地也需要加载模型的原因
    • 因为有一部分预处理是本地做的,预处理需要模型目录中的部分文件

参考

  • Serving a TensorFlow Model

https://github.com/tensorflow/serving/blob/master/tensorflow_serving/g3doc/serving_basic.md