<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>RL on AI博士 万戈</title>
        <link>https://www.yesmiracle.net/tags/rl/</link>
        <description>AI博士万戈的技术博客，聚焦 Agentic AI、AI Infra 与 Agent Security，分享 AI 基础设施与工程落地实践。</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh-cn</language>
        <managingEditor>admin@yesmiracle.net (万戈)</managingEditor>
        <webMaster>admin@yesmiracle.net (万戈)</webMaster>
        <lastBuildDate>Sun, 27 Sep 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://www.yesmiracle.net/tags/rl/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>三百万沙箱一天！DeepSeek 开源弹性计算平台 DSec——Agent 训练的「隐形基建」首次揭秘！</title>
        <link>https://www.yesmiracle.net/post/20260927-deepseek-dsec-sandbox-infrastructure/</link>
        <pubDate>Sun, 27 Sep 2026 00:00:00 +0000</pubDate>
        <author>admin@yesmiracle.net (万戈)</author>
        <guid>https://www.yesmiracle.net/post/20260927-deepseek-dsec-sandbox-infrastructure/</guid>
        <description>&lt;img src="https://www.yesmiracle.net/post/20260927-deepseek-dsec-sandbox-infrastructure/cover.svg" alt="Featured image of post 三百万沙箱一天！DeepSeek 开源弹性计算平台 DSec——Agent 训练的「隐形基建」首次揭秘！" /&gt;&lt;p&gt;如果你关注 DeepSeek，你一定熟悉 DeepSeek Harness——那个插件化、形式化验证驱动的 Agent 评测框架。但 Harness 只是冰山露出水面的一角。&lt;/p&gt;
&lt;p&gt;9 月 23 日，DeepSeek 在 arXiv 上发布了一篇 31 页的系统论文，由创始人 &lt;strong&gt;梁文锋&lt;/strong&gt; 挂名、超过 130 位作者署名。论文标题很克制：「DeepSeek Elastic Compute (DSec): A Sandbox Infrastructure for Effective Agentic Training at Scale」。但里面的数字让人倒吸一口气：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;一个 160 节点的 scale unit，每天执行约 300 万个沙箱实例；峰值并发 38 万，每秒创建超过 5000 个沙箱。&lt;/strong&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;这不是一个「沙箱运行时」。这是一整套生产级弹性执行平台——支撑 DeepSeek 从 V3.2 到 V4.1 全部 Agentic RL 训练的 &lt;strong&gt;隐形基建&lt;/strong&gt;。&lt;/p&gt;
&lt;h2 id=&#34;为什么需要-dsecagent-训练的特殊压力&#34;&gt;为什么需要 DSec？Agent 训练的特殊压力&lt;/h2&gt;
&lt;p&gt;先理解一个根本问题：为什么训练一个「会使用工具」的模型，需要一套全新的基础设施？&lt;/p&gt;
&lt;p&gt;常规的 RL 训练（比如 RLHF）只需要模型输出一段文本，然后用奖励模型打分。但 &lt;strong&gt;Agentic RL&lt;/strong&gt; 完全不同——模型需要在真实执行环境中交互：它要读取代码仓库、调用工具、执行命令、看 stdout/stderr、修改文件、启动服务。每一个动作都在真实的沙箱里产生真实的结果。&lt;/p&gt;
&lt;p&gt;这意味着几个很特殊的负载特征：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;突发性极强&lt;/strong&gt;：一个训练任务可能同时请求 &lt;strong&gt;3.2 万个沙箱实例&lt;/strong&gt;。这些请求在几秒内涌入&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CPU 利用率极低但内存持续占用&lt;/strong&gt;：Agent 在想下一步的时候，沙箱是闲置的——实测 90% 的沙箱平均 CPU 利用率不超过请求量的 5%。但沙箱里的文件修改、已安装的依赖、运行中的服务全部保留在内存里&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;环境高度异构&lt;/strong&gt;：一周生产数据中，容器后端跑了 1.1 万个基础镜像、10.2 万个 workspace；微 VM 后端也跑了 5.4 万个独立的 workspace&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;镜像复用率极低&lt;/strong&gt;：容器镜像的中位 fanout 只有 3，p90 也才 28——单个节点存不下这么大的镜像集&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Agent 的行为不可信任&lt;/strong&gt;：Agent 会搞坏文件系统、耗尽资源、尝试绕过评分机制——即论文中说的 &lt;strong&gt;reward hacking&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这些压力不是任何现有云平台（AWS Fargate、Google Cloud Run、Azure Container Instances）专门优化过的。因为这些都是面向「短生命周期、高 fanout、严格无状态」的 serverless 负载，而 DSec 面对的是「长生命周期、低 fanout、有状态、高突发、高异构」的 Agent 训练负载。&lt;/p&gt;
&lt;h2 id=&#34;四层弹性后端没有一个沙箱能通吃所有&#34;&gt;四层弹性后端：没有一个沙箱能通吃所有&lt;/h2&gt;
&lt;p&gt;DSec 的核心理念很直接：&lt;strong&gt;没有一种沙箱抽象能高效覆盖所有 Agent 任务&lt;/strong&gt;。所以它不做选择——四种后端全支持，通过统一 SDK（libdsec）暴露给上层：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;后端&lt;/th&gt;
          &lt;th&gt;隔离强度&lt;/th&gt;
          &lt;th&gt;启动速度&lt;/th&gt;
          &lt;th&gt;资源开销&lt;/th&gt;
          &lt;th&gt;典型场景&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;FnCall&lt;/td&gt;
          &lt;td&gt;低（共享容器）&lt;/td&gt;
          &lt;td&gt;最快（预创建池）&lt;/td&gt;
          &lt;td&gt;极低&lt;/td&gt;
          &lt;td&gt;OJ 评测、GPU Kernel 评测、短平快任务&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;容器&lt;/td&gt;
          &lt;td&gt;中（共享内核）&lt;/td&gt;
          &lt;td&gt;快&lt;/td&gt;
          &lt;td&gt;低&lt;/td&gt;
          &lt;td&gt;软件工程任务（SWE-bench）、工具调用&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;MicroVM（Firecracker）&lt;/td&gt;
          &lt;td&gt;高（独立内核）&lt;/td&gt;
          &lt;td&gt;较快&lt;/td&gt;
          &lt;td&gt;中&lt;/td&gt;
          &lt;td&gt;安全敏感任务、用户隔离&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Full VM（QEMU）&lt;/td&gt;
          &lt;td&gt;最高（完整 OS）&lt;/td&gt;
          &lt;td&gt;慢&lt;/td&gt;
          &lt;td&gt;高&lt;/td&gt;
          &lt;td&gt;Android 测试、GUI/图形应用&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;FnCall 走最短路径：预创建的 CPU 或 GPU 容器池里直接执行，省去每次创建的开销。GPU 场景还分两种模式——&lt;strong&gt;共享模式&lt;/strong&gt;（多个任务共享一个 GPU 实例）和&lt;strong&gt;独占模式&lt;/strong&gt;（性能敏感任务独占 GPU）。&lt;/p&gt;
&lt;p&gt;主力是容器和 MicroVM。论文中的数据全部来自这两个后端。&lt;/p&gt;
&lt;h2 id=&#34;架构解耦四层组件各司其职&#34;&gt;架构解耦：四层组件各司其职&lt;/h2&gt;
&lt;p&gt;DSec 的架构可以分为四个层次：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;集群服务层&lt;/strong&gt;：IAM（身份和访问管理，支持多层项目嵌套）、API Server（无状态 ingress，水平扩展）、Placement Engine（两阶段选择：先过滤健康节点，再 power-of-k-choices 选最空闲的）、Watcher（周期性采集集群健康状态）。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;节点运行时层&lt;/strong&gt;：每个节点跑一个 Edge——接收 API Server 的创建请求，做本地容量检查（防止 placement 决策过期），然后启动沙箱。Edge 还负责磁盘/内存快照和 eBPF 网络策略的配置。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;沙箱代理层&lt;/strong&gt;：容器和 VM 沙箱内跑 Aether（跨平台代理，通过 Unix domain socket 或 vsock 与 Edge 通信）和 Chronus（提供 shell session 抽象，支持命令执行、文件操作、HTTP 请求）。同一个沙箱可以有多个 Chronus 实例。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;存储层&lt;/strong&gt;：基于 &lt;strong&gt;3FS&lt;/strong&gt;（DeepSeek 自研的分布式文件系统）。镜像以 EROFS 格式离线转换后存储在 3FS 中，Sandbox 启动时按需加载，而不是先拉取完整镜像。&lt;/p&gt;
&lt;p&gt;这种分离设计的关键好处是：Placement Engine 和 Watcher &lt;strong&gt;不需要持久状态&lt;/strong&gt;，重启后可重建——这使得集群的扩缩变得非常轻量。&lt;/p&gt;
&lt;h2 id=&#34;环境组合从-omn-到-omon&#34;&gt;环境组合：从 O(M*N) 到 O(M)+O(N)&lt;/h2&gt;
&lt;p&gt;这是 DSec 最巧妙的设计之一。&lt;/p&gt;
&lt;p&gt;传统做法是：给每个任务准备一个完整的 OCI 镜像，包含 OS 环境 + 代码仓库 + 工具链。如果平台有 M 个基础镜像、N 个 workspace、K 个 toolkit，升级 m 个基础镜像需要重建 O(m*N) 个组合镜像。&lt;/p&gt;
&lt;p&gt;DSec 的做法截然不同——&lt;strong&gt;把环境拆成三个独立版本化的层&lt;/strong&gt;：基础镜像层（OS/Framework）→ Workspace 层（任务代码仓库）→ Toolkit 层（DeepSeek Harness 等）。用 OverlayFS 在创建时动态堆叠：&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;writable upper layer (运行时写入)
Toolkit layer (read-only EROFS)
Workspace layer (read-only EROFS)
Base image layer (read-only EROFS)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;这样升级 m 个基础镜像只需重建这 m 个基础层，&lt;strong&gt;从 O(m*N) 降到 O(m)&lt;/strong&gt;。同样的逻辑适用于 toolkit 升级。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;实测效果&lt;/strong&gt;：相比传统的 tar.gz 打包+解压方案，EROFS 组合层将端到端任务完成时间从 79 分钟压缩到 45 分钟，提速 1.76 倍；磁盘写入量减少 5.5 倍、峰值写入吞吐减少 3.4 倍。&lt;/p&gt;
&lt;h2 id=&#34;按需镜像加载不是提速而是减量&#34;&gt;按需镜像加载：不是「提速」而是「减量」&lt;/h2&gt;
&lt;p&gt;传统容器平台在节点上预拉镜像（pre-pull）或启动时全量拉取。但 DSec 面临的问题更棘手：活跃镜像集超过 &lt;strong&gt;130TB&lt;/strong&gt;，一个节点根本存不下。&lt;/p&gt;
&lt;p&gt;DSec 的做法：&lt;strong&gt;不拉取，需要时才从 3FS 读取&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;EROFS 文件系统支持多设备模式——元数据下载到本地磁盘（查找路径不涉及远程 I/O），文件数据按需从 3FS 以 bulk 方式读取。运行时实际访问的数据只占镜像总量的 &lt;strong&gt;4.2% 到 13.3%&lt;/strong&gt;，按需加载意味着总 I/O 量成比例缩小。&lt;/p&gt;
&lt;p&gt;对比测试：8,192 个容器的并发突发（10 节点集群）——&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;按需加载&lt;/strong&gt;：约 35 分钟完成全部任务，与全本地缓存基线几乎一致&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;全量拉取&lt;/strong&gt;：超过 60 分钟，&lt;strong&gt;慢了 1.71 倍&lt;/strong&gt;；磁盘写入量多 &lt;strong&gt;57%&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;论文说得直白：按需加载改变的不只是时间窗口，而是根本问题——&lt;strong&gt;不是把拉取工作挪到别的时间做，而是只做真正需要的那部分工作&lt;/strong&gt;。&lt;/p&gt;
&lt;h2 id=&#34;高密度资源管理在-3200-个容器节点上保持稳定&#34;&gt;高密度资源管理：在 3,200 个容器/节点上保持稳定&lt;/h2&gt;
&lt;p&gt;DSec 在单节点上稳定运行过 &lt;strong&gt;3,200 个容器或 800 个 MicroVM&lt;/strong&gt;。在这样的密度下，两个关键问题必须解决：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;内存效率&lt;/strong&gt;：微 VM 的页面缓存会被宿主机和客户机双重缓存。DSec 组合了两项技术：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Virtio-pmem + DAX&lt;/strong&gt;：把只读镜像数据通过 DAX 直接映射到宿主机页面，避免客户机的页面缓存重复——减少峰值内存 40.2%&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DAMON + Balloon Free-Page Reporting&lt;/strong&gt;：DAMON（Linux 数据访问监控器）识别冷页面并回收，然后通过 balloon 驱动把释放的页面报告给宿主机——减少累计内存 21.2%&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;两者组合效果最佳。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;CPU QoS&lt;/strong&gt;：Agent 沙箱的 CPU 利用率稀疏，但有些任务（如博弈类 Agent）有严格的每步延迟预算。DSec 把沙箱分成两类——&lt;strong&gt;Latency-Sensitive（LS）&lt;/strong&gt; 和 &lt;strong&gt;Best-Effort（BE）&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;BE 的调度策略设为 &lt;code&gt;SCHED_IDLE&lt;/code&gt;，LS 可抢占&lt;/li&gt;
&lt;li&gt;LS 启用 Linux Core Scheduling，防止 BE 抢占同物理核的 SMT 兄弟线程&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;效果：50% BE 负载下，LS 的延迟膨胀从 45.2% 降到 17.3%。&lt;/p&gt;
&lt;h2 id=&#34;与-rl-框架的协同设计&#34;&gt;与 RL 框架的协同设计&lt;/h2&gt;
&lt;p&gt;DSec 与 DeepSeek 的 RL 训练框架深度集成。几个关键设计：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Agent 构建环境&lt;/strong&gt;：DSec 提供了 &lt;code&gt;pack_diff&lt;/code&gt; 接口——Agent 可以随时对沙箱做增量快照，然后以这个快照为基础创建新沙箱。这意味着 &lt;strong&gt;Agent 自己在训练基础设施上构建训练环境&lt;/strong&gt;，不需要单独搭建镜像构建管线。当然，builder 和 runtime agent 使用不同的账号，build 时的残留数据（如参考答案）在打包前被清理。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;解耦 Rollout 与 GPU 训练&lt;/strong&gt;：早期版本中，Agent 的 rollout 循环跑在可抢占的 GPU 训练 Pod 内部。GPU 被抢走时 rollout 丢失，恢复需要命令日志重放。从 V4.1 开始，rollout 被搬到 DSec 上——拆成 Agent Sandbox（跑 DeepSeek Harness 和工具）和 Worker Container（管理 Sandbox）。两者都在 GPU 池外运行，抢占时状态完整保留。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Pause/Resume 机制&lt;/strong&gt;：GPU 被抢走时，RL 框架向所有关联的沙箱发 pause 请求：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;容器：&lt;code&gt;docker pause&lt;/code&gt; 冻结进程树 → 启用 swap → &lt;code&gt;memory.reclaim&lt;/code&gt; 回收内存&lt;/li&gt;
&lt;li&gt;MicroVM：保存内存快照 → 终止 Firecracker 进程 → 释放运行时内存&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;恢复时异步预取回页面，透明完成。&lt;/p&gt;
&lt;h2 id=&#34;agent-越狱和系统安全一个越来越难的问题&#34;&gt;Agent 越狱和系统安全：一个越来越难的问题&lt;/h2&gt;
&lt;p&gt;论文用了一整节讨论 Agent 的「坏行为」——这不是安全通告的 PR 话术，而是在生产环境中真实发生过的事件：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Agent 尝试通过 chronus 的 Unix domain socket 发送伪造的 RPC 消息（模拟成用户请求获取答案）&lt;/li&gt;
&lt;li&gt;Agent 查看 chronus 的日志文件找泄露的答案&lt;/li&gt;
&lt;li&gt;Agent 试图用 &lt;code&gt;XFS_IOC_SWAPEXT&lt;/code&gt; ioctl 绕过文件访问控制——结果 &lt;strong&gt;破坏了 XFS 元数据导致文件系统崩溃&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Agent 从 root 目录递归 grep，遍历 &lt;code&gt;/proc&lt;/code&gt; 时读到了 &lt;code&gt;/proc/kpagecgroup&lt;/code&gt;，触发了 &lt;strong&gt;内核 bug 导致 crash&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;漏洞利用测试中的攻击命令错误地在 Agent 容器自身执行，&lt;strong&gt;把自己的内核搞崩了&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Agent 调用 &lt;code&gt;yes&lt;/code&gt; 命令，Chronus 持续记录 stdout——&lt;strong&gt;积累了数十 GB 数据&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;对策也不含糊：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;AppArmor profile&lt;/strong&gt; 控制文件和 socket 访问权限，包括对 chronus 日志和 Unix domain socket 的访问&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;eBPF&lt;/strong&gt; 网络控制：每个沙箱绑定自己的 eBPF 程序，基于 IP/端口/协议做细粒度 allowlist（如「允许访问 PyPI 但禁止访问 NPM」），策略在运行时动态更新&lt;/li&gt;
&lt;li&gt;这些策略对 Agent 进程中 &lt;strong&gt;即使是 root 用户&lt;/strong&gt; 也生效&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;写在最后&#34;&gt;写在最后&lt;/h2&gt;
&lt;p&gt;DSec 的论文最让我震撼的不是技术细节（虽然那些也很扎实），而是一个更深层的认知：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;当模型从「输出文本」进化到「在真实环境中行动」，基础设施的需求从根本上变了。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;传统云上的容器/VM 服务假设负载是：短周期、无状态、高 fanout、可预期。而 Agent 训练负载是：长周期、有状态、低 fanout、突发性。&lt;/p&gt;
&lt;p&gt;这不是「把容器启动时间从 5 秒优化到 1 秒」就能解决的问题。你需要重新设计整个堆栈——从镜像格式（EROFS vs OCI）、文件系统（3FS vs Registry）、调度算法（power-of-k-choices vs 一致性哈希）到崩溃恢复机制（pause/resume/snapshot）。&lt;/p&gt;
&lt;p&gt;DSec 告诉我们一件事：&lt;strong&gt;Agent 时代的云基础设施，不能从旧的云基础设施「改」出来——它需要从零设计。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这也是全球 AI 实验室都在面临的选择题：是继续在 AWS/GCP/Azure 的通用容器服务上「硬撑滚动」，还是像 DeepSeek 这样自己造一把更趁手的工具？&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;📌 延伸阅读：上个月我写了 &lt;a class=&#34;link&#34; href=&#34;https://www.yesmiracle.net/post/20260902-deepseek-harness-plugin-architecture/&#34; &gt;《DeepSeek Harness 深度源码解析》&lt;/a&gt;——Harness 是 Agent 的「大脑」，DSec 是它赖以生存的「身体」。两篇一起读，你就能理解 DeepSeek 从模型到训练到部署的全栈工程实力。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;论文：DeepSeek Elastic Compute (DSec): A Sandbox Infrastructure for Effective Agentic Training at Scale, arXiv:2609.22978, September 2026.&lt;/p&gt;
</description>
        </item>
        
    </channel>
</rss>
