首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于Tensorflow服务的OpenFaaS服务模型

基于Tensorflow服务的OpenFaaS服务模型
EN

Stack Overflow用户
提问于 2019-02-18 15:30:52
回答 1查看 387关注 0票数 1

我想使用OpenFaaS为Tensorfow模型服务。基本上,我希望以这样一种方式调用"serve“函数,即tensorflow serving将公开我的模型。

OpenFaaS在Kubernetes上正确运行,我可以通过curl或从UI调用函数。

我以孵化器-瓶为例,但我一直在接收502 Bad Gateway

OpenFaaS项目如下所示

代码语言:javascript
复制
serve/
  - Dockerfile
stack.yaml

内部Dockerfile如下所示

代码语言:javascript
复制
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文件如下所示

代码语言:javascript
复制
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将其推送到我的码头注册中心。

当我执行faas-cli deploy -f stack.yaml -e AWS_ACCESS_KEY_ID=...时,我得到了Accepted 202,它在我的函数中正确地出现了。现在,我想在我在我的tensorflow serving中指定的模型上调用ENV

我试着让它工作的方法是以这种方式使用curl

代码语言:javascript
复制
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.

如果我运行tensorflow serving而没有of-watchdog (基本上没有openfaas的内容),模型就会得到正确的服务。

EN

回答 1

Stack Overflow用户

发布于 2019-05-17 09:06:04

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

tensorflow-serving-openfaas:

打包TensorFlow与OpenFaaS一起使用,通过OpenFaaS进行部署和管理,自动缩放,从零扩展,以及库伯奈特的合理配置。

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

预调整期:

OpenFaaS

OpenFaaS CLI

Docker

指令:

克隆回购

代码语言:javascript
复制
$ mkdir -p ~/dev/

$ cd ~/dev/

$ git clone https://github.com/alexellis/tensorflow-serving-openfaas

克隆示例模型并将其复制到函数的构建上下文中

代码语言:javascript
复制
$ 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

编辑码头集线器用户名

您需要编辑stack.yml文件并将alexellis2替换为您的Docker帐户。

构建函数映像

代码语言:javascript
复制
$  faas-cli build

现在,您应该在本地库中有一个Docker映像,您可以将其部署到带faas-cli的集群中。

测试函数的局部

所有OpenFaaS映像都可以独立运行,无需安装OpenFaaS,让我们快速测试一下,但是用自己的名字替换alexellis2。

代码语言:javascript
复制
$ docker run -p 8081:8080 -ti alexellis2/ts-serve:latest

现在在另一个终端:

代码语言:javascript
复制
$ 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
    ]
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54750562

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档