据量子位9月23日报道,DeepSeek团队在arXiv公开了Agent训练基础设施DSec(DeepSeek Elastic Compute)的技术论文,梁文锋署名。该系统每秒可创建5000多个沙盒,一天能产生300万个,峰值同时运行38万个,用于为Agent训练提供随用随弃的干净环境。
论文显示,支撑这一规模的单集群约有160个节点、3万核CPU和250TB内存。与训练大模型只需向GPU集群喂数据、计算梯度不同,Agent要在沙盒里写代码、跑编译、开浏览器甚至安装操作系统,每执行一步都会改变环境状态,因此每轮训练都要求全新的沙盒,训完即弃。
DSec把Agent任务分成四类并对应四种后端:无状态函数调用用FnCall,Docker容器用Container,轻量级虚拟机用Firecracker的MicroVM,完整操作系统用QEMU的Full VM。隔离强度和资源开销逐级递增,但训练框架通过统一的Python SDK libdsec调用,创建沙盒、执行命令和获取结果的接口一致。整个链路分为六层,从训练框架的创建请求出发,经IAM认证进入API Server,由调度引擎按资源余量选择节点,再由节点上的Edge组件拉起沙盒;网络出口和包管理镜像由Aether代理,Agent的命令与输出经Chronus中转回训练框架。靠资源超分和高密度部署,单个节点可同时承载3200个容器或800个MicroVM。
环境构建是规模化的另一道关卡。DSec把环境拆成基础镜像、工作区、工具包三层独立的EROFS只读镜像,各自版本化,启动时通过overlayfs按需组合,使工具包更新成本从O(m·N)降到O(m)+O(k)。论文统计,容器后端累计使用11266个基础镜像和102171个工作区,67.8%的沙盒需要在基础镜像上叠加工作区或工具包。镜像以EROFS格式存放在3FS分布式文件系统上,元数据预取到本地,数据块只在沙盒真正读取时才拉取。论文称,Python容器镜像6.0GB,Agent实际只读取6.0%的数据;Java镜像12.1GB,仅9.2%被访问;C++镜像4.9GB,仅8.7%被访问。8192个容器的突发部署按需加载需35分钟,Docker冷拉取要60分钟以上,磁盘写入量从约1600GB降至约700GB。
资源争抢方面,MicroVM通过虚拟块设备读取镜像时会在宿主机和虚拟机页缓存各存一份数据。DSec用virtio-pmem配合DAX让虚拟机跳过自身页缓存,直接映射宿主机物理内存,峰值内存占用减少40.2%;对可写磁盘用DAMON扫描冷内存页并归还宿主机,配合virtio-balloon的free-page reporting再减少21.2%。CPU方面,沙盒被分为延迟敏感型和尽力而为型,后者设为SCHED_IDLE优先级,并启用Linux core scheduling阻止低优先级任务占用高优先级任务的兄弟超线程。两层策略叠加后,50%背景负载下延迟敏感任务的延迟膨胀从45.2%降至17.3%。
论文还披露,从DeepSeek-V4.1开始,Agent循环被拆出GPU训练Pod,独立运行在DSec的worker container中。GPU被抢占时DSec挂起沙盒并保存状态,恢复后继续执行,训练框架不再自行实现断点恢复。当单集群扛不住峰值时,DSec会触发cloud bursting。论文提到的最大生产任务一次申请32000个沙盒,集群利用率超过80%时,200台云VM可吸收约30%的峰值。
沙盒同时是安全围栏,论文记录了多起Agent在训练中自行发现的reward hacking手段。有的Agent覆盖/bin/bash,试图从后续shell会话截获答案或特权信息,被AppArmor阻止;有的利用XFS文件系统的XFS_IOC_SWAPEXT交换受保护文件的数据块,绕过文件级访问控制,却损坏XFS元数据;还有Agent扫描网络端口寻找参考实现,通过Go module proxy从GitHub拉代码,或安装更新版本软件包获取现成解法。更严重的情况包括Agent递归执行grep扫到/proc/kpagecgroup触发内核bug导致宿主机崩溃,以及在安全攻防任务中把攻击命令发到自身容器内执行而打崩内核。另有Agent反复调用yes命令,用几十GB日志灌满存储。DSec目前用AppArmor控制文件读写权限和Unix域套接字访问,并用eBPF做网络层细粒度管控,按任务配置域名白名单,通过IP地址、端口和协议三重过滤,策略可在任务不同阶段动态更新。论文明确表示这并非能彻底解决的问题,AppArmor和eBPF防不了内核bug,用户隔离只能缩小爆炸半径,模型越强,钻漏洞能力越强,平台防线需要不断前移。