RunPod 与 Vast.ai 怎么选:可靠性、中断风险与运维成本
选型会上最常出现的一组对话是这样的:一个人说「Vast 上同样的卡便宜一截」,另一个人说「RunPod 稳,能上生产」。两句话听起来在吵架,其实根本不在同一个坐标系里——前者说的是某一行 offer 在某一刻的报价,后者说的是平台承担了多少运维责任。谁也没说错,谁也没法说服谁,因为缺的不是结论,是一组能对齐的维度。
这篇不评哪家好。两家的官方文档我都读过,本文只做一件事:把它们的机制差异拆成几根可以分别量的轴,然后告诉你在你的任务里哪根轴是决定性的。凡是会变的东西——单价、折扣幅度、可靠性评分的起始值、过期实例的删除窗口——一律只讲机制不抄数字,那些以控制台当时显示的为准。
一、供给结构:分层的云,还是一个主机市场
这是所有后续差异的源头,先把它说清楚。
RunPod 的 Pod 文档把机器分成两类云:Secure Cloud 跑在 T3/T4 等级的数据中心里,文档给的定位是高冗余、面向企业和生产负载;Community Cloud 是把个体算力提供者通过一套经过审核的点对点体系接给用户,价格上更有竞争力,可靠性一栏文档写的原词是「可变(Variable)」。这里有一条容易被忽略的时效信息:文档明确说 RunPod 已不再接收新的 Community Cloud 主机,现存资源仍然可用。也就是说这部分供给只减不增,平台的供给结构正在往数据中心那一侧收敛。
Vast.ai 的概念页给自己的定义是市场:把有 GPU 想出租的主机方和需要算力的租用方连起来,主机方的范围从「个人的一台游戏 PC」一直到「Tier-4 数据中心」,每个主机自己定价、自己决定可靠性预期和验证等级。平台侧提供的是测试、认证分档(未认证 / 已认证 / Secure Cloud 数据中心,后者的核验口径是数据中心评级或 ISO 27001)、可靠性评分和 DLPerf 这类可比分数。文档在回答「找不到想要的机型」时说得非常坦白:它只是市场,不管理也不提供硬件,没有货源时它也没什么能做的。
落到读者身上,差别不是「可靠性高低」,而是筛选工作量归谁:
- 在 RunPod 上,机器的差异被平台收进两个标签里,你选的是标签,选完之后同一标签内的机器你基本不需要逐台评估。
- 在 Vast.ai 上,差异被摊在搜索页每一行上让你自己定价。它给了你评估工具(认证档位、可靠性评分、最长租用时长、DLPerf、价格悬停明细),但评估动作是你的。两家的基础形态可以分别先看RunPod 的两种交付形态和Vast.ai 的市场机制,这里只谈两者之间的对比。
所以第一根轴是:你愿意为「不用逐台挑机器」付多少钱。这不是个修辞问题,它可以算——把你(或你的脚本)每次挑机、验机、换机花掉的时间折成人力成本,和价差比。
二、价格:一个是价目表,一个是实时行情
这一节只讲结构,不涉及任何金额。
RunPod 的定价文档给的是平台标价结构:按需是标准小时费率,另有预付承诺换折扣的 savings plan(承诺期限与折扣以控制台为准)。文档对这个计划的边界写得很细,值得记的是几条机制:它只覆盖 GPU 算力成本,存储按标准费率另算;停机的 Pod 上存储费用继续累积;计划不可退款、有固定到期日;停掉 Pod 后,同一 GPU 型号的下一次部署会自动套用这个计划。
Vast.ai 的定价文档反复强调的是没有静态报价:价格由主机方自己定,随实时供需波动,官方给的查价方式是控制台、CLI 的 vastai search offers、以及 API 的 search offers 端点。折扣路径也不一样——预留实例不是单独下单的类型,得先租按需再转换,而且预付额度锁定在那一个具体实例上。
这条结构差异在实际工作里的后果,比价差本身更有分量:
- 成本能不能写进预算或报价。 如果你要给客户报一个包含算力成本的价、或者要做季度预算,「当前市场价」不是一个可以引用的常量;平台标价则可以当作一个至少在你查看那一刻确定下来的输入。
- 能不能自动化捡便宜。 反过来,市场型供给对有脚本、能定期重跑筛选、能容忍换机的团队是纯收益——查价本身有 CLI 和 API。这件事在 RunPod 那边没有对应动作,因为没有需要你盯的行情。
- 长期承诺押的东西不同。 一边押在「同一 GPU 型号的后续部署」上,一边押在「这一台机器、这一个主机」上。后者的含义是:你为折扣付的钱和这台机器的健康状况绑在了一起。
还有一块是很多人对比时直接漏掉的:成本项的数量不一样。Vast.ai 的定价文档把总成本明确拆成三块——GPU 算力按秒计(只在运行时计,镜像还在下载的 Loading 阶段不计费)、存储按实例存在的时长连续计费(与是否运行无关,停机状态的费率往往比运行时更高,要停掉只能彻底销毁实例)、带宽按传输字节计费,上下行都算、费率随主机方不同,文档专门提醒在挑机器阶段就要看带宽费率。RunPod 的文档则明确写数据入口与出口流量不收费。
对数据密集型负载(反复拉大镜像、灌数据集、往外推产物),这是结构性差异而不是折扣差异——它不会随行情消失。
顺便说一个我核对时发现的不一致,因为它会影响你算账的精度:RunPod 的 Pod 概览页写的是「按分钟计费」,而定价页写的是「算力与存储按秒计费」,两处口径不同。官方文档没有给出统一说明,实际计费粒度以账单页为准。这类东西不值得猜,但值得在第一张账单出来时对一下。
三、中断风险:来源不同,处置责任都在你这边
「谁更容易断」这个问法没法回答,因为两边的中断根本不是同一类事件。
RunPod 侧,按需实例的资源是专属的,定价文档写得很直接:资源归你的 Pod,不会被其他用户挤掉。所以它的中断来源主要是两类,维护与故障文档讲得很清楚:
- 计划内维护:宿主机需要维护时会提前用邮件通知你,给你时间存盘、备份或者迁到别的 Pod;维护窗口内 Pod 不可用的那段时间不计费;等不了的话可以同时另开资源顶上。
- 非计划停机:硬件故障和突然崩溃没有预告,文档承认这种情况下可能只能在停机开始之后才通知你,处理路径是带着 pod ID 找支持了解影响范围和时间线。
再叠上 Community Cloud 那一档「可靠性:可变」,RunPod 侧的风险画像就完整了:正常路径上有预告和不计费补偿,异常路径上是事后通知加人工跟进。
Vast.ai 侧的中断来源是几件独立的事叠在一起,实例类型与实例管理两篇文档合起来能拼出全貌:
- 竞价被挤。可中断实例走出价优先:被人出价超过、或者有按需需求进来时可能被暂停;暂停期间数据保留但实例不可用,优先级回来后自动恢复。文档给的优先级规则是按需 / 预留永远最高,其次是高出价的可中断,最低是低出价的可中断。
- 主机掉线。实例状态里的 Offline 定义是「机器与 Vast 服务器失去连接」,常见原因是断网或断电,主机方会被自动通知,可能是维护也可能是意外。
- 租约到期。每台机器的 offer 上有最长租用时长,到期时主机方可能续租也可能直接停掉实例;文档带警告的一条是过期实例无法重启,并且在到期之后的一段时间(文档给的是小时级窗口)可能被删除,数据要在那之前取走。
- 重启拿不回卡。这一条是和托管型云最不一样的地方:停掉的实例点重启会进入
SCHEDULING状态等待 GPU 可用,如果卡住不动,文档说明大概率是这块 GPU 已经被别人租走了,高优先级任务会挡住你的重启,极端情况可能无限期等待,此时官方建议是把数据拷到新实例。
把两边放在一起,真正该问的问题不是「谁断得少」,而是断了之后谁把你接回去。答案是:两家文档里都没有出现「自动把你的负载迁到另一台机器」这种承诺。RunPod 给的是预告、不计费和支持通道;Vast.ai 给的是状态说明和「拷到新实例」的操作建议。差别在于你要写多少自动化——这一点在怎么挑 Vast.ai 的机器里按字段展开过。
也正因为如此,检查点在两家都是你的责任,不是可选项。RunPod 的数据安全章节直接给了操作口径:Pod 默认用临时容器存储,Pod 被中断、重启、停止或终止时只存在容器存储上的数据会丢失,重要数据要放网络卷或外部备份,长任务要按周期做检查点,并且照 3-2-1 原则留备份。Vast.ai 给可中断实例的配套要求同样是一组硬性动作:频繁存盘、重要产物写到云存储、代码里实现检查点、并且默认「会被打断」来设计。两份文档的措辞不同,要求你做的事是一样的。
四、运维责任边界:两家都有托管层,托管的对象不同
「Vast.ai 只能裸租机器、RunPod 才有托管服务」——这是个很常见的误解,两家文档都不支持这个说法。
RunPod 的产品总览列了四种形态:Pods(专属实例,完全控制)、Serverless(按实际计算时间付费、自动伸缩)、Public Endpoints(官方已部署好的模型 API,按生成量付费)、Instant Clusters(托管的多节点集群,节点间高速网络)。文档明确建议混用:Pod 做开发实验,Serverless 跑生产推理,Instant Clusters 做大规模训练。
Vast.ai 也有 Serverless,概念页把它定义为「实例之上的托管层」:你定义一个 endpoint(稳定的对外入口,持有伸缩策略),endpoint 下挂 worker group(定义每个 worker 跑什么:模板、硬件筛选条件、市场搜索参数、启动覆盖项),worker 由 Serverless Engine 根据测得的负载自动招募、激活和销毁,每个 worker 里还跑一个 PyWorker 把负载指标报回去用于伸缩。定价文档补了一条关键机制:Serverless 没有单独的定价层,你付的就是底层实例的算力、存储、带宽成本。
这两个托管层的差别,看 worker group 里那个「市场搜索参数」就明白了:Vast.ai 的自动伸缩,伸缩的动作是继续去市场里招募机器。托管层帮你省掉了调度和路由的代码,但它招到的每个 worker 依然来自那个异质的供给池。RunPod 的 Serverless 伸缩出来的 worker,则仍然在它自己那两类云的供给里。
所以第四根轴是出问题时你打给谁,以及对方能查到什么。两家的边界还体现在各自明写的不支持项上:
- RunPod 的 Pod 限制是三条硬约束:不支持 Docker Compose(文档的解释是 RunPod 已经在替你跑 Docker)、不支持 UDP(只有 TCP 和 HTTP)、不支持 Windows。
- Vast.ai 的实例本身就是 Docker 容器,所以不支持 Docker-in-Docker;虚拟机与裸金属在文档里是「计划中」的状态。
还有一条对企业用户基本是一票制的:Vast.ai 的文档自己写明主机方在技术上能够访问自己机器上的文件,建议敏感数据使用经认证的数据中心并自行加密,Cloud Sync 这类需要填云存储凭据的功能也被限定为只在带 Secure 标识的可信数据中心上使用。这不是平台的缺陷,是「供给来自第三方主机」的必然推论。如果你的数据连「理论上可被第三方运营者接触」都不能接受,这根轴上就没有折中空间。
五、存储与网络:能不能「换机重来」是同一个问题
前面反复提到换机,这一节把它落到具体机制上。换机成本的高低只取决于一件事:你的权重和数据有没有放在一层与具体机器无关的存储里。
RunPod 的答案是三层结构:container disk(停机即清空,文档定位是操作系统、缓存、临时文件)、volume disk(跟着 Pod 的生命周期,Pod 删了就没)、network volume(独立于 Pod 存在、可以在 Pod 之间搬)。计费上的几条机制值得单独记:container disk 在停机状态不计费(因为数据也没了),volume disk 停机状态仍然计费且费率与运行状态不同,network volume 按容量单独计费;宿主机不可用时不向你收费;余额归零时,挂了 network volume 的 Pod 是被停掉并保留数据,没挂的会被终止且数据不可恢复。文档还有一句自己的免责:RunPod 不是为长期云存储设计的,关键数据要备份到本地或专门的存储服务。
Vast.ai 这边,容器存储的大小在创建时就定死、之后不能改,磁盘滑块既是搜索筛选条件又是分配参数(文档建议宁可估宽一点,并提醒即使实例停止,主机方仍按分配量收费);实例被销毁时数据永久删除,文档在销毁前的提示就是先把重要数据拷走或同步到云。跨机搬运的官方手段是实例之间 Copy Data 和 Cloud Sync(同步到云存储提供方)。存储计费的口径前面说过:按实例存在的时长连续计,销毁才停。
把两边并排,判据就出来了:
- 如果你的工作流已经把权重和数据集放在一个与租用平台无关的地方(对象存储、你自己的机器),那换机成本主要是下载时间,两家的存储层设计对你都不构成约束——这时候要看的反而是第二节那条带宽计费差异。
- 如果你依赖平台内的持久层来避免反复灌数据,那要盯的是这一层能不能脱离具体实例活着,以及它的计费在你停机时是什么行为。两家都明写了「停机不等于不花钱」,这是 GPU 云账单里最常见的意外来源,跟平台选择没关系。
- 账户余额这条也别漏:两家都是余额见底就停实例,区别在停之后数据的命运——RunPod 看你有没有挂 network volume,Vast.ai 看你有没有留支付方式(没有支付方式的实例与数据会被排进删除计划)。长任务开跑前确认这一条,比读任何选型文章都实在。
六、按任务类型找判据
不排名次不等于含糊其辞,而是把决定权还给你手上那个变量。下面这张表不写「选谁」,只写这类任务的决定性维度是什么、以及该问自己什么问题。前五节已经把两家在每根轴上的机制讲完了,对应关系你自己套。
| 任务类型 | 决定性维度 | 你该问自己的问题 |
|---|---|---|
| 对外提供的推理服务 | 中断后的恢复路径、故障时的支持通道 | 断线是不是故障?有人在等响应吗?我有没有多机冗余和健康检查? |
| 跨天跨周的训练 | 租约长度上限、长期承诺押在什么上 | 合同最长时长够不够我这一轮?预付的钱是绑在机型上还是绑在某台机器上? |
| 超参搜索、批量离线推理 | 单位算力成本、能否自动换机 | 一次试验被打断我损失多少?我有没有脚本能自动重挑机器重跑? |
| 数据密集型(灌数据集、频繁推产物) | 带宽与存储的计费结构 | 传输费是单独计费项还是不计费?我这个月要搬多少字节? |
| 涉及客户数据、有合规要求 | 运营方可见性、机房资质 | 第三方主机方理论上能接触文件这件事,我的合规口径允许吗? |
| 调试与短时开发环境 | 起机速度与最低仪式感 | 我这次会话多久?值得为它做环境配置和存储规划吗? |
| 多节点分布式训练 | 节点间网络与集群编排是谁的活 | 拓扑和高速互联我自己搭,还是要平台给托管的集群? |
| 想要一个能直接调的模型接口 | 是否需要自己维护镜像与伸缩 | 我真的需要控制权吗,还是只需要一个端点? |
用法是从右往左:先把最右列的问题答出来,中间那列就自然确定了权重,然后回到前面几节看两家在这根轴上的机制分别是什么。顺序反过来——先挑平台再找理由——就是选型会吵架的根源。
再往上一层的问题是「到底该不该按小时租」。如果你的使用率高到某个程度,两家平台的差异会被自建的固定成本掩盖过去,这笔账在租 GPU 还是买 GPU里单独算过;而如果你的约束是数据不能出境,那这两家都进不了候选名单,该看的是国内 GPU 平台的横向格局。
七、这两家的差别在哪类任务上根本不重要
说一句可能让整篇文章显得没必要的实话:对相当大一部分任务,这两家怎么选都不影响结果。
判断标准很具体——如果你的任务同时满足下面几条,那么上面那五根轴的差异几乎都被摊平了:单次运行以小时计而不是以周计;数据不敏感;被打断的代价是重跑一次而不是违约;权重和数据集本来就放在平台之外;不对外提供有响应时间要求的服务。这种任务在两家上的体验差别,主要就剩下界面习惯和你查价花的时间。花半天做平台对比,不如花半天把检查点和权重同步脚本写好——后者在两家都有效,而且在你换到第三家时依然有效。
真正会让差别变大的,也就是那几种情况:对外有可用性要求(中断来源与恢复路径的差异开始变成故障时长);租期跨周跨月(租约上限、长期承诺的绑定对象、机器个体健康开始起作用);数据搬运量大(带宽是不是单独计费项直接改变总成本的形状);合规上不接受第三方运营者理论上可接触数据(这一条直接决定候选集)。如果你的任务不在这几类里,那么「哪家便宜」这个问题的答案就是字面意思上的那家,不需要更复杂的论证。
还有两件事想提醒,都是我核对文档时的体会。第一,我没有这两个平台的账号,本文所有事实都来自官方文档的口径,控制台的实际行为、菜单名称、以及计费的确切结算周期可能和文档有出入——RunPod 自己文档里「按分钟」和「按秒」两处不一致就是个现成的例子。第二,供给结构本身在动:RunPod 已经不再接新的 Community Cloud 主机,Vast.ai 的市场则每天都在换货。今天成立的对比结论,半年后可能只剩框架还成立。
所以最靠谱的做法不是读完文章下结论,而是各开一台最小配置的机器,把你最怕的那两三件事各验一遍:停机之后盘上的东西还在不在、账单上除了 GPU 还有哪几项、重启还能不能拿回同一块卡。这三个答案是你自己的数据,比任何横评都更能决定你该往哪边押。
算完账发现自建推理不划算?
先用托管端点把业务跑起来,量上来了再回头算自建的平衡点。