将HPC和机器学习工作负载与Altair®PBS Professional®和Kubernetes集成
由于展大的需求范围意味着工作负荷编排不是一个尺寸适合所有,我们已经整合了我们的行业领先的Altair®PBS Professional.®工作负载管理器和作业调度器,以及流行的Kubernetes (K8s)容器协调器,为高性能计算(HPC)用户提供两方面的优势——训练机器学习(ML)模型和提交模拟作业。bob官网 bob体育下载
PBS Professional与Kubernetes的集成涉及PBS Professional对Kubernetes容器pod的调度和供应。这种集成使得站点可以在同一个HPC集群上同时运行HPC工作负载和容器工作负载,而无需将其划分为两个独立的部分。它还允许站点利用PBS Professional中复杂的调度算法,并使用带有一组全局策略的单个调度程序集中管理集群。Kubernetes自带一个默认调度器,但由于该调度器不适合我们的需求,所以我们使用一个自定义调度器,它与服务器对话,获取未安排的pod,然后与PBS Professional对话来安排它们。这个自定义调度器没有经过验证是否可以与默认的Kubernetes调度器一起运行。理论上,用户可以指示Kubernetes在pod定义中使用哪个调度器。这种集成是使用PBS Professional钩子实现的。
注意:当前集成假定一个名称空间;请求自定义名称空间将导致失败或未知的结果。
钩子是PBS Professional在某些事件中执行的Python代码块;例如,当一个作业排队时。每个钩子都可以接受(允许)或拒绝(阻止)触发它的动作。钩子可以调用PBS Professional外部的函数。
关于PBS专业
我们的企业级PBS专业调度程序在HPC的世界中是众所周知的,具有近二十年的可扩展性和调度策略。PBS Professional旨在提高生产率,优化利用和效率,并简化HPC集群,云和超级计算机的管理。它包括一系列特征和功能,包括自动作业调度,管理,监视和报告,以及展览会,FCF等复杂的调度策略,以对作业和节点进行排序,回填和严格的顺序。
关于Kubernetes
Kubernetes是一个用于自动化部署、扩展和管理容器化应用程序的开源系统。bob电竞官方它的设计目的是消除编排物理、虚拟计算、网络和存储基础设施的负担,自2015年推出以来,它在ML模型的部署和训练方面获得了良好的牵引力。
部署Kubernetes和PBS专业人员
Kubernetes为用户提供api来编写他们自己的调度器,但使用我们开发的PBS Professional连接器和定制调度器可以避免所需的时间和精力,并在GitHub.com (https://github.com/PBSPro/kubernetes-pbspro-connector)。自定义调度程序将与默认PBS调度程序一起运行。PBS Professional的调度政策已有多年的行业使用情况,Kubernetes可以利用这些复杂的计划策略使用根据客户要求配置的计划策略来运行作业。
用户可以使用qsub提交作业,也可以使用kubectl CLI向集群提交Kubernetes pod。
配置和设置
在开始部署集成之前,您需要在群集上安装PBS Professional。kubernetes需要在PBS服务器主机上安装。最后,Kubectl命令安装在PBS服务器主机上的/ bin目录中。
集成的部署涉及到从GitHub克隆kubernetes-pbspro-connector存储库,安装PBS Professional钩子,更新apiHost属性,编译自定义调度器。
- 将Kubernetes PBS Professional Connector存储库克隆到主机。
- 将目录更改为kubernetes-pbspro-connector文件夹。
- 更新pbs_kubernetes。CF中包含kubelet配置目录的绝对路径。config的值是kubelet将监视pod清单运行的目录的绝对路径。在启动调度程序之前,需要创建该目录。
- 安装PBS Professional Hook和Config文件。
- 将目录更改为调度程序文件夹。
- 通过添加apihost的值,apiproxy服务器的位置来更新Kubernetes.go。以下示例使用Apiproxy Server端口8001。
- 构建自定义调度程序。
启动apiserver代理和自定义调度程序
作为PBS服务器主机上的根用户,启动apiserver代理。我们建议在一个不同的终端窗口中启动apiserver代理,因为它会将信息记录到屏幕上。
作为根用户,启动定制调度器(kubernetes-pbspro-connector/scheduler/scheduler)。我们建议在一个不同的终端窗口中启动调度程序,因为它将把信息记录到屏幕上。
您将在记录计划迭代的开始和结束的屏幕上看到定期消息。此外,它将记录计划的工作。
用户体验和验证
Kubernetes用户将使用相同的方法创建容器和pod。下面是一个简单的示例,用于为容器分配CPU和内存请求以及CPU和内存限制。一个容器被保证有和它请求的一样多的内存,但是不允许使用超过它的限制的内存。
创建一个命名空间
用户将创建命名空间。
指定CPU和内存请求
要为容器指定CPU和内存请求,请包括资源:容器资源清单中的请求字段。要指定CPU和内存限制,请包括资源:限制。
创建并应用Pod
用户将将资源清单应用于命名空间,并且将部署容器吊舱。
验证容器吊舱正在运行
容器pod将被部署到节点上,并使用相同的资源请求向PBS Professional注册。redis pod应该处于运行状态:
PBS Professional作业状态将显示一个正在运行的作业,该作业的名称与pod的名称匹配。
终止集装箱吊舱
用户将以他们习惯执行的相同方式终止容器pod。
HPC和ML工作负载的好处
同时运行HPC和机器学习工作负载的站点将受益于Kubernetes和PBS Professional的协同运行。Kubernetes不仅可以利用PBS Professional的可伸缩性,而且PBS Professional还可以利用Kubernetes内部的容器编排,帮助提升Kubernetes的调度功能。它有助于在最佳主机上有效地调度豆荚,从而导致环境的整合和收敛,在这些环境中,集群不是作为独立的筒仓运行,而是资源可以重用——极大地提高了效率。