如何在Python lambda中安装TensorFlow服务客户端API?

如何在Python lambda中安装TensorFlow服务客户端API?,python,tensorflow,aws-lambda,data-science,tensorflow-serving,Python,Tensorflow,Aws Lambda,Data Science,Tensorflow Serving,我正在尝试构建一个Python Lambda,将图像发送到TensorFlow,用于推断。我至少有两个依赖项:CV2和tensorflow_serving.api。我已经运行了多个教程,展示了在lambda中运行tensorflow是可能的,但它们提供了要安装的软件包,并且没有解释如何将其安装到小于256MB的解压缩限制内 我尝试了以下打包方法,但仅此方法即可下载475MB的依赖项: $ python -m pip install tensorflow-serving-api --tar

我正在尝试构建一个Python Lambda,将图像发送到TensorFlow,用于推断。我至少有两个依赖项:CV2和tensorflow_serving.api。我已经运行了多个教程,展示了在lambda中运行tensorflow是可能的,但它们提供了要安装的软件包,并且没有解释如何将其安装到小于256MB的解压缩限制内

我尝试了以下打包方法,但仅此方法即可下载475MB的依赖项:

$ python -m pip install tensorflow-serving-api --target .
Collecting tensorflow-serving-api
  Downloading https://files.pythonhosted.org/packages/79/69/1e724c0d98f12b12f9ad583a3df7750e14ec5f06069aa4be8d75a2ab9bb8/tensorflow_serving_api-1.12.0-py2.py3-none-any.whl
...
$ du -hs .
475M    .

我看到其他人通过扭曲从所有依赖项中删除所有未使用的库或从零开始编译,与这条龙进行了斗争并赢得了()的胜利。但在数据科学和lambdas几乎成为主流的世界里,这种极端情况让我感到复杂,而且希望已经过时。很少有人使用TensorFlow服务于Python,以至于我不得不跳过这样的障碍才能让一个人作为Lambda工作,这是真的吗?或者有更简单的方法吗?

我们的目标是在客户端不使用tensorflow,因为它占用了大量空间,但实际上并不需要进行推理。不幸的是,
tensorflow服务api
需要整个
tensorflow
包,它本身太大,无法装入lambda

您可以做的是构建自己的客户机,而不是使用该包。这涉及使用protobuf通信的
grpcio工具
包,以及tensorflow和tensorflow服务中的各种
.proto
文件

具体来说,您需要打包这些文件-

tensorflow/serving/  
  tensorflow_serving/apis/model.proto
  tensorflow_serving/apis/predict.proto
  tensorflow_serving/apis/prediction_service.proto
tensorflow/tensorflow/  
  tensorflow/core/framework/resource_handle.proto
  tensorflow/core/framework/tensor_shape.proto
  tensorflow/core/framework/tensor.proto
  tensorflow/core/framework/types.proto

从那里可以生成python protobuf文件

这里有另一个可能的选择,但它似乎不适合我,因为在发送到TF服务之前,我需要我的/tmp空间用于调整图像大小。这里有另一个可能的选项,但它使用的是tensorflow 1.8,而不是最新的稳定版本tensorflow 1.12。也许1.8只是更小?这是一个和numpy狭路相逢的人: