跳转至

弹性部署

该功能仅面向企业用户,认证入口: 控制台 -> 左侧菜单-账号安全 -> 实名认证。API文档:阅读API文档

已上线支持复用已停止容器功能,可显著缩短创建容器时间

弹性部署是专为企业AIGC等场景设计的批量调度和启动若干容器、以及管理容器生命周期的功能。

调度模式介绍

算力调度单元

在系统资源池中管理有N台不同配置的物理主机。主机在GPU型号及数量、CPU型号及数量、内存大小配置上有差异,系统将主机的CPU和内存按GPU数量(N)等比例划分为N个算力调度单元,不支持修改和拆分该调度单元。

例如主机A的配置为8卡3090、128核CPU、720GB内存,那么该主机每个算力调度单元为:3090 * 1;16 vCPU;90GB内存。在该主机上创建容器时,容器的算力配置只能为该调度单元的 1~8倍,不可调整CPU、内存与GPU之间的数量比例。

容器的调度与启动

容器根据您指定的调度条件进行创建,由于以上算力调度单元的不可拆分性和不同主机之间算力单元的差异性,指定的调度条件可以有:GPU的型号和数量、CPU数量范围、内存大小范围、价格范围等。当某主机满足该调度条件时,即在该主机上创建和启动容器。例如:

有机器A、B、C。空闲的算力分别为:8卡3090、128核CPU、720GB内存8卡3090、64核CPU、720GB内存8卡3090、128核CPU、360GB内存

设置调度条件为:GPU数量=8,CPU数量范围=[100, 200],内存大小范围=[224, 1024]。

那么系统最终会在A或者C主机上创建实例,如果在A主机上创建实例,则实例的配置规格为8卡3090、128核CPU、720GB内存、如果在C主机上创建实例,则实例的配置规格为8卡3090、128核CPU、360GB内存

ReplicaSet类型的调度

AutoDL的ReplicaSet指创建和维护一组在任何时候都处于运行状态,且容器数量达到指定副本数量的稳定集合。每个容器副本都根据您设置的容器调度条件进行调度与启动。

如果修改调度条件,系统将会销毁不满足条件的已存在运行中的容器,并启动符合条件的新容器。修改容器副本数量将立即创建新容器或销毁已存在运行中的容器,直到运行中的容器数量=您设置的副本数量。

Job类型的调度

AutoDL的Job指创建一个或多个容器,直到指定数量的容器执行结束并退出。和ReplicaSet不同的地方是,Job不会为了维持指定的容器副本数量,而在某个容器结束后启动新容器(启动新容器仅因为已经完成的容器数量未达到设置的目标容器数量)。而是容器结束后就将其记录为完成,直到完成的容器数量达到设置的目标值,此时整个调度结束,不再启动新容器。

Container类型的调度

AutoDL的Container指仅创建一个容器,直到该容器结束并退出,即结束调度。等价于目标容器数量=1的Job调度。

容器生命周期

容器的生命周期取决于您设置的cmd命令执行生命周期。cmd执行结束那么该容器将会退出关机,因此如果您的cmd中启动应用程序的命令做了后台运行处理,则在cmd的最后添加sleep infinity,防止父进程退出导致容器关机以及所有其他进程结束。即以下两种方式均可(以下具体命令只是示例):

# 方式一:
python app.py

# 方式二:
nohup python app.py & && sleep infinity

以上方式二应用程序后台运行,通过sleep infinity阻断cmd结束,这样会使得app.py应用程序的生命周期和容器的生命周期两者独立,需要您独立管理应用程序的生命周期(即假设app.py运行结束,实际上容器仍然在正常运行中,不能通过容器状态推知应用状态)。如果您需要自行管理应用程序的生命周期,则推荐使用这种方式,否则推荐方式一。
此外您可以调用停止弹性部署的接口或者停止某一具体容器的接口完成容器的停止。

计费

弹性部署的容器计费方式为按量计费,单价同算力市场相同(接近)配置的价格。例如算力市场典型配置的A5000价格(会员价)为1.18元/小时,那么弹性部署同样配置的容器单价同样为1.18元/小时。

弹性部署中的容器和容器实例的差异

差异1:数据的保留规则不同

在算力市场租用的容器实例,当实例关机后有一段数据保留期(参考文档),弹性部署的容器在关机后立即释放数据,不会保留