OpenFAAS使用TensorFlow服务



我想使用openfaas使用TensorFow模型。基本上,我想以tensorflow serving揭露我的模型的方式调用"服务"功能。

OpenFAAS在Kubernetes上正确运行,我能够通过curlUI调用功能。

我使用了孵化器 - 框架作为例如,但我一直都在接收502 Bad Gateway

OpenFAAS项目看起来像以下

serve/
  - Dockerfile
stack.yaml

内部Dockerfile是以下

FROM tensorflow/serving
RUN mkdir -p /home/app
RUN apt-get update 
    && apt-get install curl -yy
RUN echo "Pulling watchdog binary from Github." 
    && curl -sSLf https://github.com/openfaas-incubator/of-watchdog/releases/download/0.4.6/of-watchdog > /usr/bin/fwatchdog 
    && chmod +x /usr/bin/fwatchdog
WORKDIR /root/
# remove unecessery logs from S3
ENV TF_CPP_MIN_LOG_LEVEL=3
ENV AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID}
ENV AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY}
ENV AWS_REGION=${AWS_REGION}
ENV S3_ENDPOINT=${S3_ENDPOINT} 
ENV fprocess="tensorflow_model_server --rest_api_port=8501 
    --model_name=${MODEL_NAME} 
    --model_base_path=${MODEL_BASE_PATH}"
# Set to true to see request in function logs
ENV write_debug="true"
ENV cgi_headers="true"
ENV mode="http"
ENV upstream_url="http://127.0.0.1:8501"
# gRPC tensorflow serving
# EXPOSE 8500
# REST tensorflow serving
# EXPOSE 8501
RUN touch /tmp/.lock
HEALTHCHECK --interval=5s CMD [ -e /tmp/.lock ] || exit 1
CMD [ "fwatchdog" ]

stack.yaml文件看起来如下

provider:
  name: faas
  gateway: https://gateway-url:8080
functions:
  serve:
    lang: dockerfile
    handler: ./serve
    image: repo/serve-model:latest
    imagePullPolicy: always

我使用faas-cli build -f stack.yaml构建图像,然后用faas-cli push -f stack.yaml将其推到Docker注册表。

当我执行faas-cli deploy -f stack.yaml -e AWS_ACCESS_KEY_ID=...时,我会得到Accepted 202,并且在我的功能中正确显示。现在,我想在我在ENV中指定的型号上调用tensorflow serving

我尝试使其工作的方式是以这种方式使用curl

curl -d '{"inputs": ["1.0", "2.0", "5.0"]}' -X POST https://gateway-url:8080/function/deploy-model/v1/models/mnist:predict

,但我总是获得502 Bad Gateway

是否有人有openfaas和tensorflow服务的经验?预先感谢

p.s。

如果我在没有of-watchdog的情况下运行tensorflow serving(基本上没有OpenFAAS的东西),则该模型是正确提供的。

详细说明@viveksyngh提到的链接。

TensorFlow-Serving-openfaas:

包装TensorFlow与OpenFAA进行包装的示例将通过OpenFAA进行部署和管理,并具有自动缩放,从零尺度和kubernetes的理智配置。

此示例来自:https://www.tensorflow.org/serving

pre-reqs:

openfaas

openfaas cli

docker

指令:

克隆回购

$ mkdir -p ~/dev/
$ cd ~/dev/
$ git clone https://github.com/alexellis/tensorflow-serving-openfaas

克隆示例模型,然后将其复制到函数的构建上下文

$ cd ~/dev/tensorflow-serving-openfaas
$ git clone https://github.com/tensorflow/serving
$ cp -r serving/tensorflow_serving/servables/tensorflow/testdata/saved_model_half_plus_two_cpu ./ts-serve/saved_model_half_plus_two_cpu

编辑Docker Hub用户名

您需要编辑stack.yml文件,然后用Docker Hub帐户替换Alexellis2。

构建功能图像

$  faas-cli build

现在,您应该在本地库中有一个Docker映像,您可以将其部署到FAAS-CLI UP

测试本地功能

所有OpenFAAS映像都可以独立运行,而无需安装OpenFaas,让我们快速测试,但用您自己的名字替换Alexellis2。

$ docker run -p 8081:8080 -ti alexellis2/ts-serve:latest

现在在另一个终端中:

$ curl -d '{"instances": [1.0, 2.0, 5.0]}' 
   -X POST http://127.0.0.1:8081/v1/models/half_plus_two:predict
{
    "predictions": [2.5, 3.0, 4.5
    ]
}
From here you can run faas-cli up and then invoke your function from the OpenFaaS UI, CLI or REST API.
$ export OPENFAAS_URL=http://127.0.0.1:8080
$ curl -d '{"instances": [1.0, 2.0, 5.0]}' $OPENFAAS_URL/function/ts-serve/v1/models/half_plus_two:predict
{
    "predictions": [2.5, 3.0, 4.5
    ]
}

相关内容

  • 没有找到相关文章

最新更新