Logo
热心市民王先生

SkyPilot Sandboxes:在自有 Kubernetes 上大规模运行不可信 LLM 代码的执行层

skypilot sandboxes kubernetes BYOC 代码执行沙箱

深入分析 SkyPilot Sandboxes——一种 BYOC(自带云)代码执行方案,可在用户自有的 Kubernetes 集群上创建轻量隔离的 Pod 来安全运行 LLM 生成代码,成本低至托管服务的 1/10,延迟更低,且代码与数据不离开用户环境。

概述

SkyPilot Sandboxes 是 SkyPilot 团队推出的**自带云(Bring Your Own Cloud, BYOC)**代码沙箱方案。它允许用户在已有的 Kubernetes 集群上按需创建轻量级、隔离的 Pod,用于执行不可信的 LLM 生成代码(如来自 agent、编码助手或强化学习奖励评分的输出)。与托管沙箱服务(如 Modal)相比,SkyPilot Sandboxes 宣称可降低成本 4–10 倍,同时提供更快的首次命令延迟(p50 ~1.0s vs Modal ~1.2s)、更低的尾部延迟(p99 ~1.5s vs ~2.0s),且代码与数据永不离开用户的基础设施。

本文发布于 2026 年 6 月,包含完整的架构说明、RL 后训练示例、性能基准与详细成本对比,并提供了可复现的基准脚本和开源示例代码。

背景与问题

LLM 生成代码已成为 agent、编码助手和强化学习训练流水线的核心环节。但模型输出的代码本质上不可信——可能包含无限循环、内存耗尽、文件写入、进程衍生、外连请求等危险行为。因此需要隔离且可丢弃的执行环境。当前主流做法是使用托管沙箱服务,但存在三大痛点:

  1. 成本高昂:用户不仅需要支付底层计算资源,还要负担服务商按沙箱加价的费用。
  2. 隐私风险:代码、提示词、模型输出、测试用例等敏感数据被发送至第三方基础设施。
  3. 跨区域延迟:托管服务通常仅部署在少数地域(如美国),非该区域用户每次调用需承受网络往返延迟。

另一方面,许多团队已经运营着自己的 Kubernetes 集群,却未充分利用它们来运行这些临时性的代码执行任务。SkyPilot Sandboxes 正是为了弥合这一鸿沟而设计。

核心内容解析

架构与工作原理

SkyPilot Sandboxes 是一个运行在用户自有 Kubernetes 集群上的代码执行层。每个沙箱对应一个独立的 Pod,具有专用镜像、CPU 和内存。核心机制包括:

  • BYOC 模式:用户注册自己的 Kubernetes 集群(可跨多个云和地域),SkyPilot 负责资源调度。
  • 温池(Warm Pool):预先创建并保持空闲的 Pod 集合。创建沙箱时直接从温池取用运行中的 Pod,免去 Kubernetes 调度和镜像拉取的时间,使启动延迟降低 50% 以上。
  • 每个沙箱独立 Pod:资源隔离,代码异常不会影响其他沙箱;沙箱使用后即销毁(terminate())。
  • 私有凭据注入:通过 SkyPilot Secrets Manager 注入密钥(如私有包索引、数据库凭据),不写入镜像。
  • 同步与异步 API:提供 create()exec()terminate() 及其 .aio 异步变体,支持大规模扇出(fan-out)。例如通过一次调用创建 64 个沙箱,并发执行命令。

强化学习后训练示例(GRPO)

文章详细展示了一个代码生成模型的 RL 后训练流水线,其中 Sandbox Reward Server 替代了传统的字符串匹配奖励函数——直接在沙箱中运行生成的候选代码,执行隐藏测试,返回奖励信号(1.0 全部通过,0.0 否则)。

系统架构涉及五个服务,通过 HTTP 通信,构成一个 SkyPilot job group:

  1. Data Server:提供 MBPP 风格的编程问题与隐藏测试。
  2. Rollout Server(SGLang):使用当前策略生成候选函数。
  3. Sandbox Reward Server:对每个候选函数创建沙箱,执行测试,返回奖励。
  4. Replay Buffer:存储评分后的 rollout。
  5. PPO Trainer(GRPO):使用奖励更新策略,循环继续进行。

关键设计原则:坏 rollout 绝不能导致奖励函数向外抛出异常。训练早期大多数候选会失败,但循环必须持续。代码中将超时或任何异常都映射为 reward=0.0,从根源上保证了鲁棒性。

温池在服务器启动时创建,关闭时释放,示例中使用 8 个副本。

性能基准测试

文章提供了与 Modal(托管沙箱服务)的对比基准(内部测试,2026 年 6 月),关键指标为创建 + 首次命令耗时(create 后立即 exec),测试 200 次循环:

平台p50p99
SkyPilot (BYOC + 温池)~1.0s~1.5s
Modal (美国地域)~1.2s~2.0s

总结:SkyPilot 尾部延迟更优,因为 Modal 的 create() 返回较快但并未就绪,就绪工作转移到首次 exec(),导致方差较大;SkyPilot 则将就绪前置到 create() 中。

此外,跨区域延迟测试显示:当客户端位于亚太地区,Modal 的 exec 延迟跳升 3.9 倍(~0.37s vs ~0.096s),而 BYOC 沙箱运行在用户本地地域,不受此影响。

单集群可承受 ~50,000 个健康沙箱(原文称基于 220 个节点),支持多集群扩展。

成本分析

文章使用两种场景对比 SkyPilot BYOC 与按需定价的 Modal:

场景沙箱规格托管月成本(每小时)BYOC 月成本(每小时)节省倍数
通用节点2 vCPU, 4 GB$19,030/hr$4,650/hr~4.1x
突发实例2 vCPU, 2 GB$16,610/hr$1,680/hr~9.9x
  • 通用节点使用 GKE n4-standard-2(2 vCPU, 8 GB,每节点 $0.093/hr),每节点运行一个沙箱(留有系统开销)。
  • 突发实例使用 AWS t4g.medium(2 vCPU, 4 GB,$0.0336/hr),针对间歇性负载优化,但需注意 CPU 积分耗尽风险,持续满负荷场景应选择通用节点。

可复现性

文章提供了独立基准脚本(Gist 链接),可通过一行命令运行对比两种平台,包含 warmup 和清理逻辑。

关键概念与机制

概念说明
沙箱(Sandbox)一个轻量级、隔离的 Kubernetes Pod,用于运行不可信代码,执行后销毁。
温池(Warm Pool)预置并保持空闲的 Pod 集合,用于加速沙箱创建。可通过 create_pool() 创建,aclose() 释放。
BYOC(Bring Your Own Cloud)用户使用自己已有的 Kubernetes 集群资源,而非托管服务商的机器。
Secrets ManagerSkyPilot 内置的凭据管理机制,运行时注入到沙箱,避免将凭据嵌入镜像。
GRPOPPO 的一种变体,本文示例中用于更新代码生成策略。
p50 / p99延迟百分位指标,p50 为 50% 分位数(中位数),p99 为 99% 分位数(尾部延迟)。

优势、局限与适用场景

优势

  • 成本可控:仅需支付裸金属机器成本,无厂商加价。对于突发负载,使用抢占式/突发实例可进一步降低成本。
  • 数据隐私:代码与数据始终留在用户云环境内,适合处理敏感数据(如企业私有代码)。
  • 低延迟:首次命令 p50 ~1.0s,且无跨区域延迟税。
  • 大规模并发:单集群支持 50,000+ 沙箱,通过多集群可进一步扩展。
  • 灵活的 API:与 Modal API 风格一致,可零成本迁移现有代码;异步 API 适合大规模扇出。
  • 资源隔离:每个沙箱独立 Pod,异常不会影响其他沙箱。
  • 私有凭据注入:无需在镜像中硬编码密钥。

局限与风险

  • 运维负担:用户需自行管理 Kubernetes 集群,包括扩缩容、节点维护、安全性配置等。
  • 突发实例 CPU 积分耗尽:若沙箱负载持续全核心运行(如长时间计算任务),突发型实例的 CPU 积分会快速耗尽,导致性能下降。
  • 温池管理:需要合理设置温池副本数以平衡启动速度与闲置成本。过小则无法满足峰值,过大则浪费资源。
  • 早期访问限制:文章提及 Sandboxes 仍处于有限早期访问(limited early access),可能尚未对所有用户开放。
  • 网络与安全模型:虽然沙箱间 Pod 隔离,但用户需自行配置 Kubernetes 网络策略和租户隔离措施。
  • 对比局限性:基准测试为内部测试,需用户自行在自有环境中验证;Modal 的跨区域延迟问题可通过选择靠近用户的地域缓解(但可能额外收费)。

适用场景

  • LLM Agent 执行:为 agent 提供临时、隔离的代码执行环境。
  • 编码助手:运行模型生成的代码并验证结果。
  • 强化学习奖励评分:在 RL 训练循环中大规模执行候选代码,如 GRPO 流水线。
  • 并行评估:快速评价大量模型输出,如竞赛代码评估或单元测试执行。
  • 需要隐私保护的企业场景:不允许代码或数据离开自有基础设施的组织。

关键要点总结

  1. SkyPilot Sandboxes 通过 BYOC 模式,在用户自有的 Kubernetes 集群上提供沙箱执行能力,解决了托管服务的高成本、隐私和跨区域延迟问题。
  2. 单集群可支持 50,000+ 同步沙箱,首次命令延迟 p50 ~1.0s,优于 Modal 的 ~1.2s,尾部延迟表现更优(p99 ~1.5s vs ~2.0s)。
  3. 成本可降低 4–10 倍,取决于节点类型(通用 vs 突发实例)。
  4. 温池技术是性能关键,可将启动延迟降低 50% 以上。
  5. 完整的 RL 后训练示例展示了如何在 GRPO 流程中集成沙箱奖励服务器,代码开源可复现。
  6. 主要局限包括用户需自行管理 K8s 集群、突发实例 CPU 积分的潜在限制以及当前处于早期访问阶段。

参考资料