Skip to main content

acshame

  1. ---
    title: DSec 深潜:从 create() 到沙盒跑起来
    subtitle: 四条路径 · 事实核查 · 实现细节
    source: arXiv 2609.22978v1 精读
    theme: auto
    template: sheet
    ---
    
    这一页把论文第 3、5、6、7 节串成四条路径:控制、数据、内存、抢占。每条路径都标了出处,并把论文事实与解读推断分开。
    
    ## 事实核查:转述 vs 论文
    
    逐条对照 arXiv:2609.22978,多数说法准确,个别需要修正。
    
    | 说法 | 判定 | 论文口径 |
    | --- | --- | --- |
    | 生产规模:约 160 节点、30K 核、250 TB、380K 并发、5K 每秒、3M 每天 | ok | §2.4;指每个规模单元,多个单元共享同一套 3FS |
    | CPU 超卖超过 50 倍 | warn | 论文未给该数字;只给九成沙盒 ≤5% 与单节点密度 |
    | 容器直接跑在宿主机 | warn | 容器与 FnCall 跑在 QEMU/libvirt 虚拟机内,多一层隔离 |
    | 四种后端;FnCall 复用预建容器 | ok | §2.2;FnCall 不走 aether 与 chronus |
    | EROFS 元数据本地、数据在 3FS、写留本地 | ok | §5.3;另有层折叠与 file-backed mount |
    | OverlayBD 与 ublk 存储已开源 | ok | §7;Rust 版在 AgentENV 仓库 |
    | Rollout 解耦与 pause/resume | ok | §6.2、§6.3 |
    | 评测未验证模型能力提升 | ok | §8 只评四个基础设施机制 |
    
    ## 一次 create 请求的全景
    
    信任侧与不可信侧只有一条通道:apiserver。
    
    ```flow LR
    (libdsec) -> IAM: 鉴权与配额
    IAM -> Placement: 批准后选节点
    Placement -> Watcher: 拉取健康与负载快照
    Placement -> apiserver: 返回目标节点
    apiserver -> edge: 转发,沙盒 ID 含 owner edge
    edge -> (容器 / 微虚拟机 / Full VM): 启动运行时
    edge -> aether -> chronus: 会话与命令通道
    


    - apiserver 不保存沙盒状态,任意实例可直接路由。
    - placement 先按能力过滤,再在随机样本里选最闲节点。
    - edge 做本地容量终审,拒绝时由上层改选。
    - FnCall 走旁路,不经过 aether 与 chronus。

    ## Path A 控制路径

    
    participants: libdsec, IAM, Placement, Watcher, apiserver, edge, aether, chronus
    == 创建 ==
    libdsec -> IAM: create 请求
    IAM --> libdsec: 鉴权与配额通过
    libdsec -> apiserver: 创建沙盒
    apiserver -> Placement: 请求选节点
    Placement -> Watcher: 集群快照
    Placement --> apiserver: 目标 edge
    apiserver -> edge: 转发创建请求
    edge -> edge: 本地容量终审
    edge -> aether: 启动代理
    aether -> chronus: 建立 shell 会话
    edge --> libdsec: sandbox ready
    == 运行 ==
    libdsec -> apiserver: run_shell
    apiserver -> edge: 按 ID 直接路由
    edge -> aether: Unix socket 或 vsock
    aether -> chronus: 定位或新建会话
    chronus --> aether: stdout 与退出码
    


    aether 是每沙盒代理;chronus 是每会话 shell 抽象,可并发多个。

    ## Path B 数据路径

    3FS 擅长大的顺序 I/O,弱于小的随机 I/O。读写分工由此决定。

    
    group 容器路径: 容器运行时, OverlayFS 组合, 本地元数据
    (容器运行时) -> OverlayFS 组合: lower 为 EROFS 只读层
    OverlayFS 组合 -> 本地元数据: 启动前预取
    OverlayFS 组合 -> [(3FS 数据)]: 按需批量读
    group 微虚拟机路径: 微虚拟机运行时, ublk 块设备, 本地二级缓存
    (微虚拟机运行时) -> ublk 块设备: OverlayBD 可写 ext4
    ublk 块设备 -> [(3FS 数据)]: 256 KiB 块按需读
    ublk 块设备 -> 本地二级缓存: 页缓存淘汰后兜底
    


    | 原则 | 做法 |
    | --- | --- |
    | 写留本地 | 可写层放节点本地盘,避开 3FS 的小写惩罚 |
    | 读按需且批量 | 只读数据按需读,内核预读合并成大请求 |
    | 元数据留本地 | EROFS 多设备模式分离元数据与数据 |

    - 相邻层合计不超过约 3 GB 时离线折叠成一对镜像,保留 whiteout 语义。
    - 容器侧用 file-backed mount,去掉 loop 设备映射层。
    - 微虚拟机侧:EROFS 只读层加 OverlayBD 可写盘,经 ublk 暴露给 guest。

    ## Path C 内存路径

    微虚拟机有两类内存浪费:宿页缓存重复、guest 空闲页不归还。

    
    (guest 读只读层) -> virtio-pmem 与 DAX: 直接映射宿主页
    virtio-pmem 与 DAX -> 宿主页缓存: 多个微虚拟机共享一份
    (guest 冷页) -> DAMON: 采样识别冷页
    DAMON -> buddy 分配器: 走内核回收路径
    buddy 分配器 -> balloon 空闲页报告: 报告中释放页
    balloon 空闲页报告 -> 宿主: MADV_DONTNEED 释放内存
    


    | 机制 | 效果 | 代价与边界 |
    | --- | --- | --- |
    | virtio-pmem + DAX | 峰值宿主内存下降 40.2% | 冷访问同步缺页;guest 元数据约为容量 1/64 |
    | DAMON + balloon 空闲页报告 | 时间累计内存下降 21.2% | 单独使用峰值内存基本不变 |
    | 两者组合 | 总体内存消耗最低 | 峰值 CPU 从 26.5% 升到 41.4% |

    生产配置:只读 EROFS 层用 DAX,较大的可写盘用 DAMON 与空闲页报告。

    ## Path D 抢占路径

    
    participants: RL 框架, DSec edge, 容器, 微虚拟机
    == 抢占:暂停该任务全部沙盒 ==
    RL 框架 -> DSec edge: pause 请求
    DSec edge -> 容器: docker pause + 回收内存
    DSec edge -> 微虚拟机: 保存快照并终止 Firecracker 进程
    note DSec edge: 内存被回收,执行状态保留
    == 恢复:下一次请求即透明恢复 ==
    RL 框架 -> DSec edge: 新请求
    DSec edge -> 容器: MADV_WILLNEED 预取 + unpause
    DSec edge -> 微虚拟机: 新进程恢复快照
    DSec edge --> RL 框架: 从断点继续,无需重放命令日志
    


    - 状态真源是 worker container 与 agent sandbox,两者都在可抢占 GPU 池外。
    - 旧方案要在恢复时重放命令日志,避免非幂等命令的重复副作用。

    ## 实现细节速览

    
    * 放置策略: power-of-k + 本地在途视图 + edge 终审;用户隔离限制爆炸半径
    * dockerd 改动: 动态插入 EROFS 下层,约 30 行 Go;相邻层可折叠
    * 微虚拟机存储: Rust 版 OverlayBD 与 ublk 库,支持 3FS、OSS、registry
    * 3FS 硬件: 每台存储服务器 20 × 15 TB SSD 与 2 × 400 Gbps RDMA
    * GPU FnCall: MIG 分区 + CPU 编译转发 + 预热进程池
    * 内核: 宿主 Linux 7.0、guest Linux 6.1,全部使用现有机制
    


    ## 下一站:你来选

    
    下一站先拆哪条路径?
    * 数据路径 | EROFS、3FS、OverlayBD 的完整读写分工
    - 控制路径 | 从 create 到 ready 的每个 RPC 与进程
    - 内存路径 | DAX、FPR、QoS 的调参与边界
    - 抢占路径 | pause/resume 的状态一致性
    

    `
  2. title: DSec 弹性计算:一页读懂
    subtitle: 面向大规模 Agent 训练的沙盒基础设施
    source: DeepSeek DSec 技术报告 · 知乎解读
    TEMPLATE: SHEET
    DSec 支撑 DeepSeek-V3.2 到 V4.1 的全部 Agent 沙盒负载。单分片约 160 台服务器、3 万 CPU 核心、250 TB 内存。每天服务约 300 万个沙盒,峰值并发超过 38 万,每秒创建超过 5000 个。核心思路有四条:环境分层组合、数据按需加载、资源极限超卖、轨迹执行与 GPU 训练解耦。
    负载画像:四条特征决定设计
    DSec 的每个设计,都能从负载特征反推。
    负载特征
    关键数据
    设计对策
    创建请求脉冲式爆发
    每秒超过 5000 个沙盒
    预建容器、EROFS 层快速组合
    CPU 长期空闲、内存必须常驻
    九成沙盒平均 CPU 不超过申请量 5%
    超卖超过 50 倍、内存共享与回收
    环境种类多、基础镜像复用低
    一周用 11266 个基础镜像、102171 个工作区
    环境拆成三层、独立版本、按需组合
    任务执行久、训练可能被抢占
    多轮交互、状态不能丢
    执行逻辑移出可抢占 GPU 池
    统一接入:四种执行后端
    四种后端由同一个 Python SDK(libdsec)接入,按任务类型选择。
    后端
    隔离强度
    启动与密度
    典型任务
    FnCall
    最弱
    复用预建容器,启动最快
    在线评测等短任务
    Container
    较弱
    启动快、部署密度高
    软件工程、工具调用
    MicroVM
    强
    独立隔离边界
    安全类任务
    Full VM
    最强
    完整系统、开销大
    图形界面、渲染、Android
    环境分层:拆掉重建放大
    基础镜像、工作区、工具包更新节奏不同,版本各自管理。
    group 三个独立版本轴: 基础镜像, 工作区, 工具包
    基础镜像 -> EROFS 镜像
    工作区 -> EROFS 镜像
    工具包 -> EROFS 镜像
    EROFS 镜像 -> OverlayFS 组合: 运行时按需挂载
    OverlayFS 组合 -> (沙盒)
    
    
     • 单体镜像改一个工具包,全部内嵌镜像都要重建。
     • 分层后只重建变化的 EROFS 层,其余复用。
     • EROFS 支持元数据与数据分离,还支持跨镜像去重。
     • 工具包例如 DeepSeek Harness。
    
    
    按需加载:不拉全量镜像
    生产分析显示,运行中真正访问的数据只占镜像总量的 4.2% 到 13.3%。
    [(3FS 存全量数据)] -> 只拉元数据: 创建时
    只拉元数据 -> (沙盒快速启动)
    (沙盒快速启动) -> 访问时按需读取: I/O 随用量缩减
    
    
    实验
    结果
    8192 容器并发创建
    从超过 60 分钟降到约 35 分钟,加速 1.71 倍
    同上写盘量
    减少约 57%
    工作区从解压 tar.gz 改为挂载 EROFS
    从 79 分钟降到 45 分钟
    同上写盘量
    降到约 1/5.5
    高密度:超卖、共享、回收
    沙盒大部分时间在等模型出下一步动作,CPU 大量闲置。
    机制
    原理
    效果
    virtio-pmem + DAX
    同宿主机 MicroVM 共享一份宿主页缓存
    峰值宿主内存下降 40.2%
    DAMON + balloon 空闲页报告
    闲置内存交还宿主机
    累计内存消耗下降 21.2%
    CPU 调度 + 核心调度
    时延敏感任务优先,减少超线程干扰
    同机负载 50% 时,时延增幅从 45.2% 降到 17.3%
    两种内存机制叠加时,总内存消耗最低。
    ROLLOUT 解耦:训练被抢占也不丢进度
    
    
    
    
    
     • Agent 沙盒跑 Agent 框架与工具包。
     • 工作容器管理沙盒与交互流程。
     • 两者共同保存执行进度与环境状态。
    
    
    用 AGENT 造 AGENT 环境
    (环境构建 Agent) -> (沙盒): 在 DSec 内构建环境
    (沙盒) -> pack_diff 增量快照: 保存沙盒状态
    pack_diff 增量快照 -> (可复用环境)
    pack_diff 增量快照 -> (轨迹分叉)
    (轨迹分叉) -> (分支 1) & (分支 2)
    
    
     • 造环境的平台与跑 Agent 的平台合一,构建环境与运行环境一致。
     • 每轮交互都能转成可复用的沙盒环境。
     • 第 k 步快照可分叉多条轨迹,分支共享只读层,只记录各自变更。
     • MicroVM 快照保存内存与进程状态;容器目前主要是磁盘级快照。
    
    
    安全边界:假设 AGENT 是对手
    环境里存在拿奖励的捷径,模型就可能利用它。攻防会长期持续,安全机制只能不断迭代。
    
    
    观察到的行为
    防御
    边界
    读取残留答案
    细粒度访问控制
    缓解
    伪造 RPC 请求、覆盖 /bin/bash
    AppArmor 约束文件与套接字
    管理员身份也生效
    尝试 XFS_IOC_SWAPEXT 绕过控制
    访问控制与监控
    内核缺陷缺乏通用防御
    访问外部网络
    eBPF 白名单
    限制地址、端口、协议
  3. 木马人

    @cnyzgkc
    ·
    10月6日
    分享我常用的7个skill,从选题到排版,全部分享给大家~

    你只需照着装就能拼出一条自己的写作流水线,建议收藏~

    1|选题:dbskill(
    @dontbesilent
    )

    动笔前先拿它过一遍,问它「这个选题谁会看、凭什么点开」。答不上来的选题,直接放回选题库。

    http://github.com/dontbesilent2025/dbskill

    2|写稿:khazix-skills(
    @Khazix0918
    )

    我不让它代写,主要学它的长文推进:开头怎么抓人,每隔几段怎么把人拉回来。

    http://github.com/KKKKhazix/khazix-skills

    3|自查:dbs-ai-check(
    @dontbesilent
    )

    dbskill 里自带的。写完先让它出一份 AI 痕迹报告,默认只标问题不改原文,哪句要改自己定。

    http://github.com/dontbesilent2025/dbskill

    4|润色:Humanizer-zh(
    @op7418
    )

    报告里确认要改的句子,再交给它处理。整篇丢进去,它容易把正常的过渡也一起删掉。

    http://github.com/op7418/Humanizer-zh

    5|配图:baoyu-skills(
    @dotey
    )

    封面、信息图、文中插图都靠它,一个仓库装完基本够用。

    http://github.com/jimliu/baoyu-skills

    6|排版:gzh-design(
    @jiamu_future
    、
    @li_mo60607
    )

    Markdown 直接转成能粘进公众号后台的 HTML,章节编号、代码块都排好了。

    http://github.com/isjiamu/gzh-design-skill

    7|二次分发:guizang-ppt-skill(
    @op7418
    )

    把文章的核心观点做成一份网页 PPT,杂志风和瑞士风二选一,拿去做分享很省事。

    http://github.com/op7418/guizang-ppt-skill GitHub - dontbesilent2025/dbskill: dontbesilent 的商业诊断 Skills
  4. # Dream-RSI 一页纸总结与 Insight

    (arXiv 2609.14858 · Google + UMD · 2026-09)

    ---

    ## 一句话

    把走过的探索历史变成可查账的“录像带世界”,让“怎么探索”这件事本身在梦里自我改进——agent 冻结,只进化指挥官。

    ---

    ## 1. 问题:元层改进是个死结

    RSI 发现循环中,探索策略(开哪些分支、并行几个、何时停)决定算力效率,但它难改进:评估一个策略要等它跑完长程 rollout 才有信号 [Meta Bottleneck](https://www.alphaxiv.org/abs/2609.14858?page=2)。三条旧路全堵死:**固定策略**不学习;**在线优化**(如 [EvoX](https://www.alphaxiv.org/abs/2602.23413))每个坏策略都要烧一整段实跑;**历史当上下文**把可执行的结构压扁成散文。

    ## 2. 机制:三层结构 + 一次倒带

    
    元层:策略代码(唯一进化物,每轮 M 版改写)
    对象层:coding agent + evaluator(全程冻结)
    循环:在线探索 → 树入池 → dreaming(argmax) → 重部署
    


    - **重放**:候选策略在已录树上盲走(只见已揭示前缀),查表计分 $V=\max_v s_v-\beta_1 N+\beta_2 N/k$(质量−成本+并行)[Replay Objective](https://www.alphaxiv.org/abs/2609.14858?page=6)
    - **三大性质**:① 零执行成本(单次在线运行支撑数千次评估)[Zero Execution Cost](https://www.alphaxiv.org/abs/2609.14858?page=4);② 公平盲考(信息结构与在线一致);③ 只能重排已付费的尝试——树外的世界查无此账。

    ## 3. 结果(8 任务 / 3 域)

    | 域 | 数字 |
    | --- | --- |
    | Lasso | 317 vs 550 次调用且更快;vs SimpleTES(51,200 代)省约两个数量级 [Lasso Results](https://www.alphaxiv.org/abs/2609.14858?page=7) |
    | 数学优化 | Sum-Diff 最优、Circle Packing 并列最强;约 50× 预算节省 [Math Results](https://www.alphaxiv.org/abs/2609.14858?page=9) |
    | [KernelBench](https://www.alphaxiv.org/abs/2502.10517) | 同性能省 2.43×/1.79×;同预算 +2.09×/1.44× [Kernel Results](https://www.alphaxiv.org/abs/2609.14858?page=10) |

    **最有信息量的两个副产品**:历史当提示词**反而更差**(语义指导过度约束、杀死多样性)[Guidance Hurts](https://www.alphaxiv.org/abs/2609.14858?page=11);策略自发涌现算力调度(顺利时收缩、平台期加注)[Adaptive Compute](https://www.alphaxiv.org/abs/2609.14858?page=11)

    ## 4. 批判边界

    - **Proxy gap 是总软肋**:单调保证只在重放分上;“考场成绩 → 远方表现”无理论桥,纯靠实验兜底
    - **成本账不全**:M、K₂、dreaming 耗时未报;跨 backbone 对比口径混杂(SimpleTES 用 gpt-oss-120b)
    - **不扩展**:考卷只增不减 → 重放量 O(M·t)、存储线性膨胀,池子修剪只字未提
    - 元目标(β₁、β₂)手工冻结——“元层之上还有元层”被回避

    ## 5. Insight(本对话沉淀的五条)

    1. **改进的是指挥官,不是肌肉**——模型/harness/技能那条自我进化主线之外,存在一个更便宜的杠杆:算力分配的智能化
    2. **历史是考场,不是答案册**——当提示词(信念)有害,当模拟器(事实)有益;区别在“能否被打分”
    3. **免费反事实有严格边界**:只覆盖已实现尝试的**重排**(顺序/批量/剪枝/停点);新大陆的反事实必须真金白银去踩——所以循环必须在线-离线交替,无法纯离线自嗨
    4. **循环的双重身份**:既是改进机制,也是对账机制——proxy 每说谎一次,实绩就把谎言记账进下一张考卷;但这是工程保险丝(停滞触发 + 可回滚),不是收敛定理
    5. **"World"是弱义世界模型**——拒绝预言、只肯对账的录像带;机制扎实,词汇借光

    ## 6. 一言以蔽之

    $$\pi_{t+1}=\arg\max_m \frac{1}{t}\sum_i\Big[\max_{v\in\mathcal{T}_i^m}s_v-\beta_1 N+\beta_2\tfrac{N}{k}\Big]$$

    
    flowchart LR
      A[在线探索 π_t] --> B[(树入池)]
      B --> C[Dreaming: 重放 M 个候选]
      C --> D[argmax V]
      D -->|部署| A
    


    餐巾纸上的那句话:先在梦里重走一千条旧路,再挑最好的一条去踩新的地。 Dream-RSI: Recursive Self-Improvement through Evolving Worlds