模型服务是 AI 用例的关键组成部分。它涉及根据用户请求提供来自 AI 模型的推理。涉足企业级机器学习应用的人都知道,提供推理的通常不是一个模型,而是成百上千个模型串联运行。这是一个计算上非常昂贵的过程,因为您无法在每次要为请求提供服务时启动专用容器。这对于跨 Kubernetes 集群部署大量模型的开发人员来说是一个挑战,因为存在诸如允许的最大 Pod 数量和 IP 地址以及计算资源分配等限制。
IBM 通过其专有的 ModelMesh 模型服务管理层解决了这一挑战,用于 Watson 产品,例如 Watson Assistant、Watson Natural Language Understanding 和 Watson Discovery。由于这些模型已经在生产环境中运行了几年,ModelMesh 已经针对各种场景进行了彻底的测试。现在,IBM 正在将此管理层贡献给开源完整的控制器组件以及模型服务运行时。
ModelMesh 使开发人员能够以“极大规模”在 Kubernetes 之上部署 AI 模型。它具有缓存管理功能,还充当平衡推理请求的路由器。模型被智能地放置在 pod 中,并且可以适应临时中断。ModelMesh 部署可以轻松升级,无需任何外部编排机制。在将新请求路由到模型之前,它会自动确保模型已完全更新和加载。
IBM 用一些统计数据解释了 ModelMesh 的可扩展性,接着说:
一个部署在单个工作节点 8vCPU x 64G 集群上的 ModelMesh 实例能够打包 20K 简单字符串模型。除了密度测试之外,我们还通过发送数千个并发推理请求来对 ModelMesh 服务进行负载测试,以模拟高流量假日季节场景,所有加载的模型都以个位数毫秒的延迟响应。我们的实验表明,单个工作节点支持 20k 模型,每秒最多 1000 个查询,并以个位数毫秒的延迟响应推理任务。
IBM 已经将 ModelMesh 贡献给了自己、Google、Bloomberg、 NVIDIA和 Seldon 早在 2019 年。您可以在下面提到的各种 GitHub 存储库中查看 ModelMesh 实现贡献:
- 模型服务控制器
- 用于编排模型放置和路由运行时适配器的 ModelMesh 容器
- modelmesh-runtime-adapter – 在每个模型服务 pod 中运行的容器,并充当 ModelMesh 和第三方模型服务器容器之间的中介。它还包含负责从存储中检索模型的“puller”逻辑
- triton-inference-server – Nvidia 的 Triton 推理服务器
- seldon-mlserver – Python MLServer,它是 KFServing 的一部分
原创文章,作者:校长,如若转载,请注明出处:https://www.yundongfang.com/Yun75137.html