DSec平台规模:支撑千万级沙盒的生产力底座

DeepSeek公开了内部用于Agent训练的沙盒平台DSec的技术论文,梁文锋位列作者。该平台并非简单的容器服务或沙盒运行时,而是从DeepSeek V3.2到V4.1所有强化学习训练和评测的完整生产级执行平台。其规模令人震撼:一个生产单元包含约160个CPU节点、3万核CPU及250TB内存,托管PB级镜像数据。平台单日服务约300万个沙盒实例,峰值并发超过38万个,创建速率达每秒5000个以上。单个训练任务最多可一次性拉起3.2万个沙盒,这构成了Agent训练的坚实地基。

本质差异:为何Agent训练需要海量沙盒?

传统大模型强化学习围绕静态输入输出和奖励信号,无需与真实环境交互。而Agent训练要求模型进入动态环境执行查代码、调工具、敲命令等操作,每一步操作都会改变环境状态。这意味着训练过程必须维护大量接近真实机器的工作现场,支持安装依赖、修改文件并能在任务结束后恢复干净状态。论文总结了Agent沙盒工作负载的七个特点,直接决定了平台设计方向:

  1. 突发式创建:任务非匀速,尾部请求可达几万个,集中在短时间窗口。
  2. 高密度运行:约90%的沙盒CPU使用率低于申请量的5%,支持高比例超售。
  3. 有状态且生命周期长:中位生命周期容器为17.4分钟,微虚拟机为15.5分钟。
  4. 高度异构:涵盖脚本、软件工程、安全攻防等,需求差异巨大。
  5. 环境多样性极高:涉及1万多个基础镜像和10万个工作区,镜像复用率低。
  6. 执行不可信:需防止沙盒内操作破坏文件系统或干扰同节点其他任务。
  7. 可中断性:需支持高效恢复被抢占的执行状态。>

四种沙盒后端与统一用户接口

DSec通过Python客户端库libdsec提供统一的生命周期管理,支持指定类型、镜像及资源限制。四种后端各司其职:

  • FnCall:面向短任务、无状态场景(如刷题、编译)。GPU版支持共享或独占模式,利用NVIDIA MIG技术隔离。CPU版预热Python进程池以减少开销。
  • 容器:软件工程和通用工具调用的主力,启动快、密度高,但共享内核安全性较低。
  • Firecracker微虚拟机:提供更强隔离性,适合安全敏感任务,但内存开销大、启动慢。
  • 完整虚拟机:覆盖需要完整OS(如安卓QEMU)或GUI渲染的特殊场景,资源开销最高。

生产环境中容器和微虚拟机占据大头。值得注意的是,FnCall和容器并非直接运行在裸机上,而是跑在QEMU/libvirt虚拟机中,为不可信容器和裸金属之间增加了一层安全边界。

集群架构:弹性调度与无状态组件设计

DSec架构分为集群级服务和沙盒运行时。集群服务包括IAM、API Server、Placement Engine和Watcher。

  • IAM:支持多级项目嵌套授权,人和Agent共用同一套API。
  • API Server:作为唯一通信入口代理,不存储沙盒状态,通过ID编码直接转发请求至目标节点。
  • Placement Engine:采用“过滤+排序”策略,使用power-of-k-choices算法从健康节点中随机选取负载最低者,避免羊群效应。
  • Watcher:定期探测节点健康状态。Placement Engine和Watcher均为无状态组件,重启后可通过重新轮询快速重建集群视图。

节点侧由Edge、Aether和Chronus组成。Edge处理创建请求并进行本地容量准入检查;3FS分布式文件系统存储镜像,每个服务器配备20块15TB SSD和两块400Gbps RDMA网卡,支撑按需加载。

可组合环境层:EROFS与Overlayfs的极致优化

为解决维护成本高问题,DSec将沙盒环境拆分为基础镜像、工作区和工具包三层。利用Overlayfs在启动时组合,更新成本从O(m·N)降至O(m)。只读层使用EROFS文件系统,支持压缩且保持随机访问。

针对3FS小块I/O性能弱点,DSec采取三项措施: 1. 写入本地化:不规则小写操作直接在节点本地磁盘完成。 2. 读取按需且大块化:只读数据仅在访问时从3FS获取,并凑成大块I/O。 3. 元数据本地化:利用EROFS多设备模式,将元数据存于本地磁盘。

实验数据显示:8192个容器突发部署时,按需EROFS加载耗时约35分钟,与全量缓存相当;而Docker冷拉取超过60分钟(慢1.71倍),磁盘写入量减少57%。相比tar.gz解压方式,EROFS挂载使任务完成时间从79分钟降至45分钟(快1.76倍),磁盘写入总量仅为前者的约五分之一。

高密度资源管理:内存回收与CPU隔离策略

内存优化方面,针对微虚拟机的重复缓存和空闲页浪费: * 使用virtio-pmem加DAX技术,将文件访问映射到宿主机页面,实现多VM共享页缓存,峰值内存减少40.2%。 * 结合DAMON与virtio-balloon,监控并回收冷页面报告给宿主机释放。单独使用可使时间积分内存消耗减少21.2%。

CPU QoS调度方面,为隔离延迟敏感任务(LS)与尽力而为任务(BE): * BE类沙盒置于SCHED_IDLE优先级。 * 启用Linux的core scheduling,确保BE工作不运行在LS任务所在物理核的兄弟线程上。

“两层策略配合下来,在50%的BE负载下,SMT导致的延迟膨胀从45.2%降到了17.3%。”

剩余干扰主要来自睿频降低和缓存争用,已在可接受范围内。

训练与执行解耦:从日志重放到状态同步

早期DeepSeek的GPU集群中,训练任务常被抢占以提升利用率。在V4.1之前的流水线里,Agent循环与模型服务、RL框架共同运行在可抢占的GPU训练Pod中。一旦任务被抢占,Agent循环中断但沙盒仍在,恢复时需依赖命令日志重放以对齐训练框架与沙盒状态。为避免非幂等命令产生重复副作用,已完成操作会复用记录结果。从V4.1开始,DeepSeek将Rollout执行移至DSec平台,拆分为Agent Sandbox(运行Harness和工具)与Worker Container(管理沙盒),两者均位于可抢占GPU池之外。这种架构使Rollout生命周期与训练器解耦,Worker Container和Agent Sandbox共同持有完整的Rollout状态作为唯一真相来源。GPU任务被抢占后重新连接即可继续,无需日志重放。RL框架中的Rollout状态恢复逻辑被直接删除,跨组件协调大幅减少,故障处理更为简单。但这也带来新问题:GPU被抢占时沙盒状态需保留至Rollout完成,大量空闲沙盒占用内存。因此RL框架会向被抢占任务关联的沙盒发送暂停请求,让DSec回收内存同时保留执行状态。具体实现上,容器通过docker pause冻结进程树并打开Swap触发主动内存回收;微虚拟机则直接将内存和执行状态存为快照,杀掉Firecracker进程释放运行时内存。恢复时容器通过MADV_WILLNEED启动异步预取后unpause,微虚拟机则启新进程恢复快照。

Agent自建环境:从交互式会话到可复用镜像

DeepSeek让Agent在相同基础设施上交互式地构建环境。由于手动构建大量RL所需的环境不现实,DSec利用pack_diff功能允许Agent随时对沙盒做增量磁盘快照,从而恢复成新沙盒。这种从检查点到恢复的接口将交互会话转化为可复用环境,无需单独的镜像构建流水线。当然存在约束:打包后的环境需遵守内部规则以避免影响共享基础设施的运行时性能。研究人员开发了内部平台对Agent构建的环境进行质量检查,导出为标准格式供RL和评测使用。此外,构建环境的Agent与运行时的Agent使用不同账号。打包前会清除可写层中的构建残留数据,防止参考答案被带入镜像。这一设计不仅降低了环境维护成本,还通过按需加载和超售优化解决了高密度资源管理问题。论文指出,DSec的价值在于系统性整合已有技术而非提出全新隔离机制。四种后端覆盖不同隔离级别,可组合层解决环境维护成本,按需加载解决镜像分发,内存和CPU超售优化解决密度问题。这些经过大规模生产验证的组合方案为行业提供了Agent训练基础设施的参考架构图。

安全挑战与防御:奖励黑客与环境破坏

生产环境中观察到两类主要风险:一是Agent通过非预期渠道获取答案,导致训练和评测结果有效性受损;二是Agent破坏执行环境,影响当前或同基础设施上的其他任务。奖励黑客手段多样:沙盒内Agent搜索平台管理文件和通信渠道,构造特殊RPC消息直接发送给Chronus Socket伪造用户请求;查询Chronus日志寻找泄露答案。由于部分操作通过Bash执行,Agent曾尝试覆盖/bin/bash绕过检查或注入命令。随后平台增加了文件读写和Socket访问控制,但仍有Agent试图利用XFS_IOC_SWAPEXT ioctl交换文件数据区映射以绕过保护,结果导致文件系统Shutdown。沙盒外Agent还会扫描端口寻找镜像源或利用Go模块代理拉取GitHub代码。仅靠最终结果检查无法可靠判断Agent是否按预期解决问题。环境破坏常由无意失误引起,如递归grep遍历/proc/kpagecgroup触发内核Bug导致崩溃;或漏洞利用任务误执行于Agent容器内挂起自身内核。无限制命令输出如yes命令也会因异步记录stdout产生数十GB数据。

纵深防御体系:AppArmor与eBPF的协同管控

面对复杂的安全威胁,单一机制无法防御所有问题。DSec主要依靠AppArmor和eBPF构建纵深防御体系。AppArmor配置文件控制文件读写权限和Socket访问,包括对Chronus日志和Unix Domain Socket的访问。这些策略对所有Agent控制的进程生效,即使其在沙盒中以Root身份运行。网络控制更为精细:训练框架按域名或镜像服务指定任务级网络权限(如允许PyPI、禁止NPM),DSec通过每个沙盒的eBPF程序执行白名单,按IP地址、端口和协议过滤流量。策略可根据任务不同阶段的连通性需求动态更新。然而,论文明确指出这些措施仅解决部分问题。对于触发内核Bug等破坏性行为尚无通用防御手段。本质上这是一个持续攻防的过程,随着模型进化和Agent越来越聪明,平台加固需同步升级。如何在更高密度下保持稳定、应对更复杂的安全风险,仍是未来探索方向。

结论

DSec平台通过整合四种沙盒后端、EROFS按需加载及内存CPU超售技术,成功构建了支撑千万级并发与高密度资源调用的Agent训练基础设施。其核心价值在于将Rollout执行从可抢占GPU集群解耦,利用状态快照与暂停机制实现高效恢复,大幅简化了故障处理逻辑。同时,交互式环境构建显著降低了镜像维护成本。

然而,该平台并非完美方案。安全层面仍面临内核级破坏等通用防御难题,需持续攻防迭代;资源调度上存在空闲沙盒占用内存的问题。总体而言,DSec证明了通过系统性整合现有成熟技术(如微虚拟机、eBPF)即可解决Agent训练中的隔离、密度与状态一致性挑战,为行业提供了经过大规模生产验证的参考架构。