云原生的弹性 AI 训练系列之三:借助弹性伸缩的 Jupyter Notebook,大幅提高 GPU 利用率 (2)

其中指定了 gateway,这是另外一个 CR JupyterGateway。为了能够让 Jupyter 支持远程的 Kernel,需要这样一个网关进行请求的转发。我们同样需要创建这样一个 CR:

apiVersion: kubeflow.tkestack.io/v1alpha1 kind: JupyterGateway metadata: name: jupytergateway-elastic spec: cullIdleTimeout: 3600 image: ccr.ccs.tencentyun.com/kubeflow-oteam/enterprise-gateway:2.5.0

JupyterGateway CR 中的配置 cullIdleTimeout 指定了经过多久的空闲时间后,其管理的 Kernel Pod 会被系统回收释放。在例子中是 1 个小时。创建完这两个资源后,就可以体验到弹性伸缩的 Jupyter Notebook 了。如果在一个小时内一直没有使用的话,Kernel 会被回收。

$ kubectl apply -f ./examples/elastic/kubeflow.tkestack.io_v1alpha1_jupyternotebook.yaml $ kubectl apply -f ./examples/elastic/kubeflow.tkestack.io_v1alpha1_jupytergateway.yaml $ kubectl port-forward deploy/jupyternotebook-elastic 8888:8888 $ kubectl get pods NAME READY STATUS RESTARTS AGE jovyan-219cfd49-89ad-428c-8e0d-3e61e15d79a7 1/1 Running 0 170m jupytergateway-elastic-868d8f465c-8mg44 1/1 Running 0 3h jupyternotebook-elastic-787d94bb4b-xdwnc 1/1 Running 0 3h10m

云原生的弹性 AI 训练系列之三:借助弹性伸缩的 Jupyter Notebook,大幅提高 GPU 利用率

除此之外,由于 Notebook 和 Kernel 解耦的设计,使得用户可以方便地修改 Kernel 的镜像与资源配额、向已经在运行的 Notebook 中添加新的 Kernel 等。

设计与实现

在介绍完使用方式后,我们简单介绍其设计与实现。

云原生的弹性 AI 训练系列之三:借助弹性伸缩的 Jupyter Notebook,大幅提高 GPU 利用率

当用户在浏览器中选择执行代码时,首先请求会发送给在 Kubernetes 上运行的 Notebook Server。由于目前集群上没有正在运行的 Kernel,代码执行任务无法分配下去,所以 Notebook Server 会向 Gateway 发送一个创建 Kernel 的请求。Gateway 负责管理远端的 Kernel 的生命周期,它会在 Kubernetes 集群中创建对应的 JupyterKernel CR。随后会与集群中已经创建好的 Kernel 通过 ZeroMQ 进行交互,然后将代码执行的请求发送给 Kernel 进行执行,随后将结果发送给 Notebook Server 再将其返回给前端进行渲染和展示。

而 Gateway 会根据在 JupyterGateway CR 中定义的有关资源回收的参数,定时检查目前管理的 Kernel 中有没有满足要求,需要被回收的实例。当 Kernel 空闲时间达到了定义的阈值时,Gateway 会删除对应的 JupyterKernel CR,将其回收,释放 GPU。

总结

目前深度学习在开发与落地生产的过程中仍然存在着诸多的挑战。elastic-jupyter-operator 瞄准了在开发过程中的 GPU 利用率与开发效率的问题,提出了一种可行的方案,将占用 GPU 的 Kernel 组件单独部署,在长期空闲的情况下自动回收,释放占用的 GPU,通过这样的方式提高资源的利用率的同时,也给予了算法工程师用户更多的灵活度。

从算法工程师的角度来说,elastic-jupyter-operator 支持自定义的 Kernel,可以自行选择在 Kernel 的容器镜像中安装 Python 包或者系统依赖,不需要担心与团队内部的 Notebook 统一镜像的版本一致性问题,提高研发效率。

而从运维与资源管理的角度来说,elastic-jupyter-operator 遵循了云原生的设计理念,以 5 个 CRD 的方式对外提供服务,对于已经落地 Kuerbenetes 的团队来说具有较低的运维成本。

License

This article is licensed under CC BY-NC-SA 3.0.

Please contact me for commercial use.

【腾讯云原生】云说新品、云研新术、云游新活、云赏资讯,扫码关注同名公众号,及时获取更多干货!!

云原生的弹性 AI 训练系列之三:借助弹性伸缩的 Jupyter Notebook,大幅提高 GPU 利用率

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zgjsjz.html