首页 > 解决方案 > 使用 Kubernetes 运行深度学习模型

问题描述

我正处于使用 Kubernetes 部署深度学习模型的阶段。我的问题如下:

1:kubernetes是否支持并行处理?对数据进行预处理后,需要运行具有不同超参数集的深度学习模型。是否可以在不同的 pod 上并行运行它,它的 python 代码是什么。?

  1. 如果某个特定的 pod 在运行时出现故障或中断,它是否会使另一个 pod(原始 pod 的副本)自动运行?

  2. 另外,如果一个特定的 pod 达到一定百分比的 GPU(阈值),它是否会让另一个 pod 自动运行?

我需要你的帮助。我在这方面找到了很多教程。此外,寻找 python 代码来执行所有这些操作。

谢谢

标签: deploymentkubernetes

解决方案


这似乎没有对这个问题进行任何先前的研究,而且您不是新成员 - 所以对于未来,请尝试就您遇到的问题提出具体问题,因为这表明您在提出问题之前已经付出了努力。我将尝试从 Kubernetes 的角度来回答,因为我还没有机会在 Kubernetes 上使用深度学习。

  1. Kubernetes 确实支持并行处理。集群是一组“独立”节点,每个节点都有自己的内存和 CPU,但它们通过网络连接,可以一起用于解决共同任务。您可以让多个 pod/jobs 运行您需要的内容。在此处了解更多关于 ML的信息,并在此处了解Kubernetes 上的深度学习示例。

  2. Pod作为 Kubernetes 中的基本构建块,也是集群上正在运行的进程的表示。他们是我们可以称之为牛的东西。我们认为它们是可以随意替换或丢弃的短暂实体。常见的做法是不创建 Pod 本身,而是例如 Deployments,这将确保您始终运行指定数量的 Pod(当一个 Pod 死亡时,会在其位置上创建另一个以保持指定数量)。您可以在此处找到有关控制器的更多信息:

他们可以负责复制和推出,并在集群范围内提供自我修复功能。

  1. 不确定 GPU,因为我没有使用太多,但 Kubernetes 肯定可以基于 CPU 和内存进行扩展,您也可以设置资源和限制来控制它。我相信 Cluster Autoscaler 可以基于 GPU 进行扩展,因为 GPU 有一个特定的指标:

集群中不同 GPU 的最小和最大数量,格式为 ::. 集群自动扩缩器不会将集群扩容到超出这些数字。可以多次通过。目前此标志仅适用于 GKE。


推荐阅读