水平弹性的基础逻辑:加机器减机器
水平弹性是推理服务最直观的伸缩方式。流量上来时,启动更多的推理实例分摊请求;流量下去时,回收多余的实例节约资源。息壤平台的水平弹性基于容器化部署,每个推理实例运行在一个或多个容器里,调度器根据监控指标自动调整实例数量。
触发水平伸缩的核心指标通常是请求延迟和队列深度。当请求的平均延迟超过阈值,或者等待处理的请求队列超过一定长度,调度器判定当前实例数不足以承载流量,触发扩容。反之,当延迟持续低位且队列为空,调度器判定实例过剩,触发缩容。
水平弹性的优势是架构简单、易于理解、适用范围广。几乎所有推理框架都支持多实例部署,扩容缩容不涉及实例内部的配置变更。但水平弹性也有天然的局限:扩容速度受限于实例启动时间。一个推理容器从调度到就绪,可能需要几十秒甚至几分钟,这段时间内涌入的流量只能靠队列缓冲或直接丢弃。
另一个局限是资源碎片。水平弹性每次增减都是一个完整的实例,如果流量增长幅度不大,增加一个实例会造成资源浪费,不增加又扛不住流量。这就是垂直弹性要解决的问题。
垂直弹性的实现路径:给实例加减配置
垂直弹性不改变实例数量,而是调整单个实例的资源配置——主要是GPU算力和显存。息壤平台的垂直弹性依赖GPU切分能力和动态资源调整机制。
GPU切分是垂直弹性的基础。一张物理GPU可以被切分成多个虚拟GPU实例,每个虚拟实例拥有独立的显存和算力配额。当推理服务的负载上升时,调度器可以为现有实例增加显存配额或算力配额,让单个实例处理更多请求。负载下降时,缩减配额,释放资源给其他任务使用。
垂直弹性的优势是速度快。调整GPU切分配额通常可以在秒级完成,不需要重启实例或重新加载模型。对于流量突发但幅度不大的场景,垂直弹性比水平弹性更敏捷、更经济。
但垂直弹性也有边界。单张物理GPU的显存和算力是有限的,垂直扩容不可能超过物理上限。当流量增长幅度较大时,垂直弹性必须与水平弹性配合——先垂直扩容扛住瞬时冲击,再水平扩容增加实例数量,最后垂直缩容回到合理配置。
协同决策的触发条件:什么时候用哪条腿
水平弹性和垂直弹性不是轮流上岗的关系,而是在同一个决策框架下根据当前状态选择最优动作。息壤平台的协同调度器维护一组决策规则,在每次检测到负载变化时,综合评估当前实例数、实例资源配置、物理资源余量、流量增长趋势,决定下一步动作。
当流量小幅上升且当前实例的资源配置有上调空间时,优先触发垂直扩容。垂直扩容在秒级完成,可以迅速吸收流量增长,不会让用户感受到延迟变化。当流量持续上升或垂直扩容已达物理上限时,触发水平扩容。水平扩容需要时间,但因为垂直扩容已经扛住了当前的流量峰值,水平扩容期间的请求不会受到影响。
当流量下降时,优先触发水平缩容。回收多余的实例可以立即释放资源给其他任务使用。水平缩容完成后,如果剩余实例的资源配置仍然偏高,再触发垂直缩容,把资源配置调回合理水平。
这种先垂直后水平、先水平后垂直的协同策略,核心目标是让延迟曲线始终保持稳定,不因为伸缩动作本身而产生抖动。
冷启动与预热:水平扩容的隐形代价
水平弹性最大的敌人是冷启动。一个新的推理实例从调度到就绪,需要经历容器启动、模型加载、权重初始化、框架预热几个阶段。对于大模型来说,模型加载和权重初始化可能耗时几分钟,这段时间内新实例无法处理任何请求。
息壤平台通过几种方式来缓解冷启动问题。其一是模型预热缓存:在实例启动前,把模型权重预先加载到共享内存或高速存储中,实例启动时直接从缓存加载,避免从对象存储下载。其二是实例预热池:保持少量空闲实例处于已加载模型但未接收流量的状态,流量突发时直接切入,不需要等待冷启动。其三是预测性扩容:基于历史流量规律,提前预测流量上升的时间点,在流量到来之前完成扩容,而不是等流量到了再扩。
预热池的成本是闲置资源。保持多少个预热实例是一个工程权衡——太少扛不住突发,太多浪费资源。息壤的调度器根据历史流量波动幅度和业务容忍的延迟,动态调整预热池的大小,不是固定配置。
成本与延迟的权衡:弹性不是免费的
弹性伸缩的核心矛盾是成本和延迟的对立。为了低延迟,你需要时刻保持充足的冗余资源,随时准备吸收流量突发。为了低成本,你应该尽可能精确地匹配供需,不让资源闲置。息壤平台的协同弹性在这个矛盾中寻找平衡点。
水平弹性偏向成本优化。它按需启停实例,流量低时回收资源,不产生闲置成本。但水平弹性的扩容延迟较长,在流量突发时可能造成短暂的延迟升高。
垂直弹性偏向延迟优化。它可以在秒级调整资源配置,快速响应流量变化,让延迟保持稳定。但垂直弹性依赖GPU切分能力,切分后的资源无法被其他任务复用,即使当前推理任务不用,其他任务也用不了,存在一定的资源锁定成本。
协同弹性的理想状态是:用垂直弹性吸收流量的小幅波动和突发尖刺,用水平弹性处理流量的长期趋势和大幅变化。垂直弹性保延迟,水平弹性保成本,两者配合,让延迟曲线和成本曲线都处在可接受的范围之内。
运维可观测性:弹性动作的可见性
协同弹性最大的运维挑战是黑盒——流量延迟升高了,你不知道是因为负载真的高了,还是弹性动作本身导致的抖动。息壤平台提供多层次的弹性可观测能力,让每一次伸缩动作都有迹可循。
实例级别可以看到:每个实例的资源配置变化历史、每次垂直扩容缩容的时间点和幅度、每次水平扩容缩容的时间点和原因。集群级别可以看到:当前实例总数、平均资源配置、预热池大小、冷启动次数和耗时。业务级别可以看到:请求延迟的分位数变化曲线、弹性动作前后的延迟对比、弹性动作对用户体验的实际影响。
这些数据不仅用于事后排障,也用于弹性策略的持续优化。如果发现某次水平扩容后的延迟反而升高了,说明冷启动阶段的请求被分配到了尚未就绪的新实例上,需要调整预热策略或负载均衡算法。如果发现垂直扩容的频率过高,说明流量波动幅度超出了垂直弹性的能力范围,需要提高水平弹性的响应速度或增加预热池的容量。
结语
息壤平台的推理服务水平弹性与垂直弹性协同,本质是在流量潮汐的每个阶段,用最合适的工具应对最紧迫的问题。水平弹性解决规模问题,垂直弹性解决速度问题,两者协同让推理服务在流量波动中保持延迟稳定、成本可控。开发工程师在使用推理服务时,不需要手动决定什么时候加实例、什么时候调配置,平台根据监控指标和决策规则自动完成这一切。在模型越来越大、推理成本越来越高、用户对延迟越来越敏感的背景下,这种协同弹性能力不是锦上添花的优化,而是让大规模推理服务在经济上和技术上都可持续运行的基础设施级支撑。