多模型服务 - 可扩展性问题
type
status
date
slug
summary
tags
category
icon
password
网址
随着机器学习方法在各组织中被更广泛地采用,部署大量模型已成为一种趋势。例如,新闻分类服务可能需要为每个新闻类别训练定制模型。组织希望训练大量模型的另一个重要原因是为了保护数据隐私,因为将每个用户的数据隔离并单独训练模型更为安全。虽然通过为每个用例构建模型可以获得更好的推理准确性和数据隐私保护,但在Kubernetes集群上部署数千到数十万个模型更具挑战性。此外,服务神经网络模型的使用场景也在增加。为了实现合理的延迟,这些模型最好在GPU上运行。然而,由于GPU是昂贵的资源,服务大量基于GPU的模型成本很高。
KServe的原始设计是每个InferenceService部署一个模型。但是,在处理大量模型时,其"一个模型,一个服务器"的范式给Kubernetes集群带来了挑战。要扩展模型数量,我们必须扩展InferenceService的数量,这很快就会触及集群的限制。
多模型服务旨在解决KServe将遇到的三种限制:
- 计算资源限制
- 最大Pod数限制
- 最大IP地址限制
计算资源限制
每个InferenceService都有资源开销,这是因为注入到每个pod中的sidecar容器。通常每个InferenceService副本会增加约0.5 CPU和0.5G内存资源。例如,如果我们部署10个模型,每个模型有2个副本,那么资源开销就是10 2 0.5 = 10 CPU和10 2 0.5 = 10 GB内存。每个模型的资源开销是1 CPU和1 GB内存。使用当前方法部署大量模型会快速耗尽集群的计算资源。通过多模型服务,这些模型可以加载在一个InferenceService中,则每个模型的平均开销仅为0.1 CPU和0.1GB内存。对于基于GPU的模型,随着模型数量的增长,所需的GPU数量呈线性增长,这并不经济。如果多个模型可以加载在一个支持GPU的模型服务器(如TritonServer)中,我们在集群中需要的GPU就会少得多。
最大Pod数限制
Kubelet对每个节点的最大Pod数有限制,默认限制设置为110。根据Kubernetes最佳实践,一个节点不应运行超过100个Pod。有了这个限制,假设每个InferenceService平均有4个Pod(两个transformer副本和两个predictor副本),一个典型的50节点集群最多只能运行1000个模型。
最大IP地址限制
Kubernetes集群还有每个集群的IP地址限制。InferenceService中的每个Pod都需要一个独立的IP。例如,假设每个InferenceService平均有4个Pod(两个transformer副本和两个predictor副本),一个有4096个IP地址的集群最多只能部署1024个模型。
使用ModelMesh进行多模型服务的优势
使用ModelMesh的多模型服务解决了上述三个限制。它降低了每个模型的平均资源开销,使模型部署更具成本效益。而且集群中可部署的模型数量将不再受到最大Pod数限制和最大IP地址限制的约束。
在这里了解更多关于ModelMesh的信息。
上一篇
如何写一个自定义推理服务
下一篇
多模型服务- ModelMesh 概览
Loading...