Introducing preemptible compute: the same compute, half the price
TL;DR · AI 摘要
Together AI推出预占式计算,以一半价格提供相同GPU资源,适用于中断容忍型任务。
核心要点
- 预占式节点按50%按需价格计费且支持亚小时计费
- 节点回收前提供5分钟宽限期用于保存检查点
- 适用于短期实验和批处理等可重试工作负载
结构提纲
按章节快速跳转。
思维导图
用一张图看清主题之间的关系。
查看大纲文本(无障碍 / 无 JS 友好)
- 预占式计算
- 核心特性
- 价格优势
- 50%按需价格
- 计费模式
- 亚小时计费
- 回收机制
- 5分钟宽限期
- SIGTERM触发
- 适用场景
- 短期实验
- 模型微调
- 批处理任务
- 批量推理
金句 / Highlights
值得收藏与分享的关键句。
预占式节点使用相同NVIDIA加速计算资源,但价格仅为按需实例的50%
节点回收时提供最大5分钟的宽限期用于保存检查点数据
亚小时计费模式下,运行12分钟的节点仅按12分钟计费
3.5TB的GLM5.3 Flash模型检查点需22秒至4分钟写入并行文件系统
引入预占式计算:相同算力,价格减半
今天,我们宣布推出Together GPU集群的预占式计算公测版,该功能现已在所有区域的Kubernetes集群中上线。预占式节点为团队提供了一种更经济的运行中断容忍型工作负载的方式——短期实验、推理突发、批处理任务——这些工作负载可以使用团队已有的GPU基础设施,按小时计费价格仅为按需计费率的50%。从今天起,您可以将预占式算力添加到新集群或现有集群中。
预占式计算的工作原理
预占式计算为Together GPU集群增加了第二种计算类型。标准节点同步分配且永不被抢占。预占式节点使用相同的NVIDIA加速计算资源,从未使用的容量中获取资源,并在其他地方需要该容量时可能被回收。
预占式节点的计费价格为按需计费率的固定50%。该价格保持不变,不会随竞价市场波动。
当节点被回收时,集群会执行最长5分钟的排水流程:
- T+0 — 节点被隔离,触发TogetherPreempted Kubernetes事件,您的Pod接收到SIGTERM信号。
- T+0至T+5:00 — 您的工作负载有最多5分钟(terminationGracePeriodSeconds)的时间进行检查点保存并退出。
- T+5:00 — 节点被移除。
节点移除后,集群会保留预占式目标容量,并在容量可用时自动补充至该目标。您无需请求替换容量。
计费按分钟计算,使用情况每1至2分钟计量一次。运行12分钟的节点将按约12分钟计费。
预占式节点不是独立的集群类型。它们加入您的现有集群,并标记为together.ai/compute-class=preemptible,因此可中断工作节点可在折扣容量上运行,而协调器、登录Pod和服务副本则保留在标准节点上。
预占式计算的适用场景
5分钟的回收流程使恢复行为成为关键决定因素。能够恢复、重试或重新排队的工作负载可以使用预占式容量,而关键组件应保留在标准节点上。
短期实验。当工作负载能够从检查点恢复或在工作节点消失后重试时,消融实验、配置扫描、快速微调、评估、蒸馏和批量推理都是适用场景。Ray Train和PyTorch Lightning等框架无需人工干预即可从最新检查点恢复。作为参考,GLM5.3 Flash(321B参数模型)的完整权重模型检查点约为3.5TB,即使在性能下降的情况下,写入并行文件系统的时间仍需22秒至4分钟,这为5分钟排水窗口内预留了缓冲空间。
临时突发。当批量或内部推理需求激增时,添加更便宜的预占式节点来吸收突发流量,而非保留按峰值规模配置的标准节点容量或冒险出现标准计算资源不足的情况。被中断的请求将重新排队;面向用户的副本保留在标准节点上。
共同点:可分块处理、可检查点保存或可重试的工作负载。没有检查点的多日运行和严格SLO服务(无回退方案)不适用。
Together公司有强烈的内部使用文化,我们公司内部的多项研究、开发/测试及非关键生产工作负载均基于我们的预占式计算GPU集群,这使我们能够跨产品团队利用闲置资源。
启用前注意事项
- 将可抢占节点视为临时节点。预览阶段没有最小节点生命周期,因此请频繁保存检查点,并随时准备应对容量可能突然消失的情况。
- 将关键组件部署在标准节点上。协调器、登录容器和面向用户的副本属于保证容量——使用 compute-class 标签强制实施该策略。
- 使用排空窗口。将 terminationGracePeriodSeconds 设置为最多 300 秒,在 Pod 接收到 SIGTERM 时保存检查点,并在节点移除前主动退出。
- 集群需要至少一个标准节点,且节点无法在运行时就地转换计算类型。
使用方法
在工作负载准备好被抢占后,设置包含两个部分:设置可抢占目标并调度符合条件的工作负载到已标记的节点上。
您可以通过 Together Cloud 控制台、CLI 或 API 在创建集群时或对正在运行的集群进行设置。API 会同时报告请求的目标(desired_preemptible_gpus)、当前实际运行的容量(allocated_preemptible_gpus)以及请求的目标值。由于可抢占节点使用的是未使用的容量,当资源紧张时,已分配的容量可能低于目标值。
新建集群
选择标准节点数量,然后添加可抢占目标。
tg beta clusters create \
--name my-cluster --region us-central-2 --gpu-type RTX_6000_PCI \
--cluster-type KUBERNETES --num-gpus 8 --billing-type ON_DEMAND \
--num-preemptible-gpus 8 \
--project-id现有集群
在需要额外工作节点容量时扩大可抢占目标,在工作完成后降低目标值。整个过程集群将持续运行。
tg beta clusters update
--num-preemptible-gpus 16图:向现有集群添加/删除可抢占节点 图:可抢占节点遵循“gpu-preemptible-xxx”的命名规范
在可抢占节点上调度工作负载
显式指定可抢占节点:
nodeSelector:
together.ai/compute-class: preemptible抢占通知会以 SIGTERM 发送给 Pod,并作为 Kubernetes 事件(reason=TogetherPreempted)显示在控制台的事件时间线中,同时通过 Together API 的 node_lifecycle_events 接口传递——处理模式详见文档。
Kubernetes 集群现已开放预览可抢占计算功能。Slurm 支持、更多区域以及计算类型就地转换功能将在后续推出。
→ 创建集群 → 阅读文档