使用Kubernetes
以下是一些与在Kubernetes上运行Metaflow相关的有用提示和技巧。有关为Metaflow设置和操作Kubernetes的更多信息,请查看我们的工程资源。
我应该设置@timeout的值是多少?
Metaflow 设置了 5 天的默认超时时间,以防您的任务在 Kubernetes 上运行时无休止地卡住。有关如何使用 @timeout 的更多详细信息,请阅读 此处。
我可以请求多少 @resources?
以下是不同资源类型的当前默认值:
cpu: 1memory: 4096 (4GB)disk: 10240 (10GB)
在设置 @resources 时,请记住您的 Kubernetes 集群的配置。如果 Kubernetes 无法提供所请求的资源,您的 pod 将处于无法调度的状态。此外,作为一个好的措施,不要请求超出您的工作流实际需要的资源。另一方面,绝不要过早地优化资源。
您可以通过使用 namespace 参数将您的 Kubernetes pod 放置在特定的命名空间中。默认情况下,所有 pod 在与启动流所使用的 Python 解释器版本相对应的原生 python docker image 上执行,并可以使用 image 参数进行覆盖。
您也可以在命令行中指定资源需求:
$ python BigSum.py run --with kubernetes:cpu=4,memory=10000,namespace=foo,image=ubuntu:latest
如何为Kubernetes配置GPU?
Metaflow 计算任务可以在任何 Kubernetes 集群上运行。首先,请查看 Kubernetes 关于调度 GPU 的文档。该指南解释了如何安装 Kubernetes 设备插件,以便您的集群暴露一个可调度的自定义资源,例如 amd.com/gpu 或 nvidia.com/gpu,当用户指定像 @kubernetes(gpu=1) 的装饰器时,Metaflow 的 Kubernetes 资源集成功能已经配置为调用它。
有关更多信息,请查看特定于云的文档:
亚马逊网络服务 EKS 亚马逊已经准备好了EKS优化的加速版亚马逊Linux AMI。请阅读链接指南以安装硬件依赖项并选择您希望在GPU节点组上运行的AMI。您需要对作为您Metaflow AWS部署的一部分部署的Kubernetes集群进行建议的修改。
谷歌云平台 GKE 阅读 GCP 关于 GKE 上的 GPU 的指南。 您需要对 作为您 Metaflow GCP 部署的一部分部署的 Kubernetes 集群 进行建议的修改。
Microsoft Azure AKS 阅读关于AKS上的GPU的Azure指南。 您需要对作为您的Metaflow Azure部署一部分部署的Kubernetes集群进行建议的修改。
如果您需要帮助设置集群,请联系 Metaflow Slack channel。
一个 @kubernetes 任务一直卡在 PENDING 状态。我该怎么办?
您在Metaflow代码/命令中请求的资源是否足够?特别是在使用自定义GPU镜像时,您可能需要增加请求的内存以将容器镜像拉取到您的计算环境中。
访问Kubernetes日志
作为一个便利功能,您还可以查看任何过去步骤的日志,如下所示:
$ python bigsum.py logs 15/end
磁盘空间
您可以通过使用 disk 属性请求更高的磁盘空间来进行 pods 的操作 @kubernetes。