如何在GKE中部署在GPU上运行的动态可扩展AI服务?

问题描述 投票:0回答:1

我正在尝试为我的应用程序部署后端服务API(在python和flask环境中运行tensorflow模型,当然还有GPU),这需要可扩展,以便我可以同时说出1000个请求。

模型需要每个请求运行15秒,这相对较慢,并且我需要为每个请求满足firebaseapp的超时限制。问题是我想在google-kubernetes-engine中部署这个东西,但我不知道如何部署我的图像,以便每个pod(运行图像)只在一个gpu节点中运行(反之亦然)并且每个请求都定向到一个可用的pod,这意味着没有两个请求被定向到同一个pod。

我知道有一种叫做Daemonset https://cloud.google.com/kubernetes-engine/docs/concepts/daemonset但是我不确定这是否符合我的需要。另一个问题是,是否可以按请求(或通过pod可用性)扩展pod / gpu-nodes?例如,如果当前只有一个节点运行一个pod,则可以提供第一个传入请求,如果第二个请求进入,则需要生成第二个pod / gpu-node来提供请求。什么是交通指挥机制?是Ingress服务吗?如何检测流量引导机制中的pod可用性?总而言之,这里有三个问题:1。如何将每个请求定向到每个不同的pod? 2.如何在一个GPU节点中只运行一个pod? 3.如何缩放(Daemonset的一个单位可能?)并快速缩放以便每个请求可以在30秒内提供?

google-kubernetes-engine
1个回答
0
投票
  1. 您可以使用Container-native load balancing来定位pod并均匀分配流量。
  2. 请查看pod anti-affinity,其中的想法是如果该节点X已经运行了一个或多个符合规则的pod,则该pod不应在节点X中运行。
  3. 对于自动缩放,我会使用HPA(水平pod自动缩放器),因此pod将根据正在监视的度量标准进行缩放。
© www.soinside.com 2019 - 2024. All rights reserved.