资源碎片化的成因与回填的机遇
要理解回填的价值,首先需要分析资源碎片是如何产生的。在典型的算力集群中,任务的资源需求呈现明显的不均匀分布。大模型训练任务通常需要八卡、十六卡甚至六十四卡的同构资源,且要求所有卡位于同一节点或同一高速互联域内。当这样的大任务被调度到集群中后,它会占用一整块连续的算力资源。随着大任务的运行和结束,这块资源被释放回资源池,但释放的时刻是随机的,且释放出来的资源块大小恰好等于大任务所占用的规模。
问题在于,后续到达的任务并不总是恰好需要这么大块的资源。当一个需要四卡的任务到达时,它可能发现集群中有多个八卡的空闲块,但这些八卡块要么被其他大任务的部分预留所占据,要么分布在不同的节点上无法组合成一个连续的四卡块。于是,这个四卡任务只能等待,而八卡块中的部分卡却在空转。这就是资源碎片化的典型表现——资源的总量充足,但可用资源的形态与任务需求的形态不匹配。
任务回填正是针对这一问题的优化策略。它的核心思想是:当一个大任务在等待其所需的全部资源时,如果当前集群中存在一些空闲资源,而这些资源虽然不足以启动大任务,但足以启动一个小任务,那么调度器可以将这些小任务先行调度到空闲资源上运行,等大任务的资源凑齐后再暂停或迁移小任务,将资源让给大任务。通过这种方式,原本会被浪费的空闲资源被有效地利用起来,集群的整体利用率得到提升。
回填调度的核心机制
息壤平台的回填调度机制建立在传统的先来先服务调度基础之上,但增加了对资源碎片感知和任务优先级动态调整的能力。调度器维护着一个全局的资源状态视图,实时记录每张加速卡的分配状态、所属节点、互联拓扑和预留信息。当一个新任务提交时,调度器首先尝试为其分配完整的资源——如果资源充足,任务直接启动,不涉及回填逻辑。如果资源不足,任务进入等待队列,此时调度器开始评估当前集群中的空闲资源是否可以用于回填。
回填评估的核心是判断空闲资源是否“可被抢占”。可被抢占的含义是:如果将一个小任务调度到这些空闲资源上运行,当大任务的资源凑齐时,小任务是否能够在规定时间内完成或被优雅地暂停。息壤平台的调度器为每个等待的大任务维护了一个资源凑齐的预计时间——这个时间基于当前运行任务的剩余时间和资源释放的历史规律进行估算。如果一个短小任务的预计运行时间小于大任务的预计等待时间,那么这个小任务就是安全的回填候选,因为它可以在大任务需要资源之前自然结束,不会造成资源争抢。
如果短小任务的预计运行时间大于大任务的预计等待时间,调度器会进一步评估是否可以采用暂停-恢复策略。对于支持检查点保存的任务,调度器可以在大任务资源凑齐时暂停小任务,保存其运行状态,待大任务释放资源后再恢复小任务的运行。暂停-恢复策略虽然增加了小任务的总运行时间,但相比让小任务在队列中空等,仍然提高了资源的利用效率。息壤平台在任务提交时允许用户声明是否接受暂停-恢复,用户可以根据自己的业务需求和对中断的容忍度来选择。
空闲资源的分类与匹配策略
并非所有的空闲资源都适合用于回填。息壤平台将空闲资源分为三类,并针对每一类设计了不同的匹配策略。
第一类是节点内空闲资源。当一个节点上运行着某个大任务的部分卡时,该节点上剩余的卡可能因为无法与其他节点组合成完整的资源块而被闲置。这类资源的特征是与其他卡位于同一节点内,互联带宽高、通信延迟低,非常适合运行对通信性能敏感的小任务。调度器会优先将需要多卡通信的小任务回填到节点内空闲资源上。
第二类是跨节点碎片资源。当多个节点上各自有空闲卡,但这些卡分布在不同的节点上,且节点间的网络带宽不足以支持高效通信时,这些碎片资源通常只适合运行单卡任务或通信需求极低的任务。调度器会将数据预处理、模型评估和超参数搜索等独立性强、通信需求低的任务回填到这类资源上。
第三类是时间碎片资源。当一个大任务即将在短时间内结束时,它所占据的资源虽然尚未释放,但已经可以预见到释放的时间点。调度器可以将一些短小任务提前调度到这些即将释放的资源上——前提是小任务能够在资源正式释放前完成。时间碎片资源的利用依赖于准确的剩余时间预估,息壤平台通过分析历史任务的运行时长分布和当前任务的进度信息来估算剩余时间,并在预估误差较大时采用保守策略,避免小任务被强制中断。
回填任务的优先级与抢占策略
回填任务的存在不能影响主任务的调度公平性。息壤平台通过优先级分层来保障这一点。在调度器的视角中,主任务——即那些按照正常排队顺序等待资源的任务——拥有最高的优先级,回填任务则被赋予较低的优先级。当主任务与回填任务发生资源争抢时,回填任务必须让出资源。
资源让出的过程需要精细的控制。息壤平台为回填任务设置了抢占保护期——在回填任务启动后的最初一段时间内,即使主任务需要资源,回填任务也不会被抢占,以避免因频繁抢占导致回填任务永远无法完成。保护期的长度根据回填任务的预计运行时间动态调整,通常设置为预计运行时间的百分之十到百分之二十。保护期过后,回填任务进入可抢占状态,一旦主任务需要资源,回填任务会收到中断通知并开始保存状态。
对于不支持暂停-恢复的回填任务,抢占意味着任务失败和进度损失。息壤平台在调度时会尽量避免这种情况——只有当主任务的等待时间已经超过阈值,且没有其他资源可用时,才会触发对回填任务的抢占。被抢占的回填任务会自动重新加入等待队列,并在下次调度时获得优先级补偿,以提高其被再次调度的机会。
回填效果的度量与调优
回填调度并非在所有场景下都能带来收益。如果回填任务过于频繁地被抢占,导致大部分回填任务都无法正常完成,那么回填不仅没有提高利用率,反而增加了调度开销和任务失败率。息壤平台通过一系列度量指标来评估回填效果,并根据反馈持续调优。
核心度量指标包括回填任务完成率、回填资源利用率和主任务等待时间变化。回填任务完成率反映了回填任务中有多大比例能够正常结束而不被抢占——如果完成率过低,说明回填策略过于激进,需要缩小回填任务的规模或延长保护期。回填资源利用率衡量的是原本会被闲置的资源中有多大比例被回填任务有效利用——如果利用率偏低,说明回填的匹配效率不高,需要优化空闲资源的分类和匹配策略。主任务等待时间变化则用于评估回填是否对主任务造成了负面影响——如果主任务的等待时间因回填而显著增加,说明回填的优先级控制需要收紧。
息壤平台的调度器会根据这些度量指标自动调整回填参数。例如,当回填任务完成率低于某个阈值时,调度器会自动缩短回填任务的允许运行时间上限,只回填那些能够在短时间内完成的任务;当主任务等待时间增加时,调度器会自动缩短回填任务的保护期,加快资源回收的速度。这种自适应调优机制使得回填策略能够随着集群负载的变化而动态调整,始终保持在一个高效的运行区间。
用户视角的回填透明度
回填调度对用户来说应该是透明的,但用户也需要了解自己的任务是否运行在回填资源上,以及可能面临的风险。息壤平台在任务详情页面中清晰标注了任务的资源类型——是正常分配的资源还是回填资源。对于运行在回填资源上的任务,系统会显示预计的资源保留时间,以及任务被抢占的概率评估。用户可以根据这些信息判断是否需要加强检查点的保存频率。
对于不希望自己的任务被用作回填的用户,平台提供了退出选项。用户可以在提交任务时声明“不接受回填调度”,这样的任务只会被调度到常规资源上,不会进入回填队列。相应地,这类任务的排队时间可能会更长,但运行稳定性更高。用户也可以选择“仅接受低风险回填”,即只接受被抢占概率低于一定阈值的回填调度。息壤平台通过这种差异化的服务等级,满足了不同用户对成本与稳定性的偏好。
结语
算力互联调度平台的任务回填与空闲资源利用,是在不增加硬件投入的前提下提升集群整体效率的关键手段。息壤平台通过对资源碎片的精细感知、对空闲资源的分类匹配、对回填任务的优先级控制以及对回填效果的持续度量,构建了一套兼顾效率与公平的回填调度体系。这套体系在实际运营中显著提升了集群的资源利用率,将原本会被浪费的碎片化空闲资源转化为有效的算力输出,为数以千计的短周期任务提供了更快的响应速度。随着算力互联调度规模的持续扩大和任务类型的日益丰富,回填策略也将持续进化——更智能的资源碎片预测、更精准的剩余时间估算、更灵活的任务暂停恢复机制,都将是息壤平台在资源利用优化道路上持续探索的方向。