Dyna 生产部署与数据飞轮架构#

Dyna 的规模化部署方法不是单独的机器人模型,而是一套把 Dyna-2 世界动作模型、客户 SOP、全天候 episode 记录、自动语义标注、硬件退化监测与训练数据筛选 连成闭环的生产系统。它的核心不是“收集更多数据”,而是让每次部署都产生可查询、可回放、可归因、可重用的经验,再用这些经验同时改进模型、工具和整个机器人舰队。

主要来源:Dyna Robotics, Not Just a Model, But a Product, 2026-08。 模型侧补充:Dyna Robotics, Dyna-2: A 1-Million-Hour Scaling Law for World-Action Models, 2026-08。 原文是公司自述的生产系统与业务结果,没有公开完整代码、数据集、标注模型或 ROI 计算方式。本文将 原文明确披露的事实依据流程重建的工程架构 分开标注,不把重建图当成官方源码架构。 相关模型:DreamZero / Fast-WAM


1. 一张图看懂生产系统#

这套系统有三个同时运行的闭环:

  1. 任务闭环:模型根据视觉、本体感知和语言指令输出 action chunk,执行客户的 SOP
  2. 评估闭环:每个 episode 被切成 SOP 步骤,标上成败、质量、失败模式和耗时
  3. 学习闭环:用标签查询最有信息量的生产切片,组成下一轮训练数据,再把新 checkpoint 送回舰队
graph TB subgraph Site["客户现场"] SOP["客户 SOP<br/>步骤 + 成品质量标准"] ROBOT["机器人 + Dyna-2<br/>视觉 / 语言 / 本体感知 → 动作"] RUNTIME["生产 runtime<br/>应用事件 + 安全 + 恢复"] SOP --> ROBOT --> RUNTIME end subgraph Record["可回放记录层"] STREAM["时间对齐的多模态流<br/>相机 / robot state / command<br/>事件 / 硬件 telemetry"] FORMAL["正式 episode<br/>模型 rollout 显式起止"] RING["定长内存窗口<br/>告警触发后保留前因后果"] DISK["本地持久化<br/>异步上传 + 远端校验"] STREAM --> FORMAL --> DISK STREAM --> RING --> DISK end subgraph Observe["语义可观测层"] LABEL["自动标注<br/>SOP 步骤 / 时间区间<br/>结果 / 失败模式 / 置信度"] REVIEW["人工复核<br/>新任务 / 罕见样本 / 低置信度<br/>回归可疑点 + 质量抽样"] QUERY["查询与对比<br/>时间 × 舰队 × 任务"] LABEL --> REVIEW --> QUERY LABEL --> QUERY end subgraph Improve["改进层"] TRIAGE["归因分流<br/>模型 / 硬件 / 现场 / 软件"] CURATE["数据筛选<br/>选对的几小时,而非盲目堆量"] TRAIN["预训练 / 后训练<br/>标注系统同步迭代"] CKPT["新 checkpoint<br/>回到同一套舰队评估"] TRIAGE --> CURATE --> TRAIN --> CKPT end RUNTIME --> STREAM DISK --> LABEL QUERY --> TRIAGE CKPT --> ROBOT style Site fill:#e8f4fd,stroke:#2196F3 style Record fill:#fff3e0,stroke:#FF9800 style Observe fill:#f3e5f5,stroke:#9C27B0 style Improve fill:#e8f5e9,stroke:#4CAF50

最重要的系统边界:生产日志只能证明程序运行了,不能证明餐巾叠好了。Dyna 把客户对“好”的定义变成 episode 级和 SOP-step 级标签,这才是数据飞轮的起点。


2. 从 demo 到产品:真正的缺口在哪里#

实验室 demo 证明的是“能否偶尔完成任务”,生产系统要证明的则是“能否在每天数千次重复中持续达到客户标准,并且经济上划算”。

flowchart LR DEMO["Demo<br/>单次成功、可拍视频"] --> CAP["能力门槛<br/>模型能做任务"] CAP --> EDGE["长尾问题<br/>低频失败 / 恢复 / 材料变化"] EDGE --> OPS["运营问题<br/>网络 / 上传 / 集成 / 维护"] OPS --> DRIFT["持续性问题<br/>磨损 / 校准漂移 / 环境漂移"] DRIFT --> ECON["经济门槛<br/>吞吐 × 质量 × uptime<br/>超过 ROI bar"] ECON --> PRODUCT["产品<br/>可复制、可运维、可扩展"] style DEMO fill:#e3f2fd,stroke:#2196F3 style PRODUCT fill:#e8f5e9,stroke:#4CAF50 style ECON fill:#fff9c4,stroke:#FFC107

Dyna 对此的组织原则是 同时做 research 和 product


3. 数字背后的生产约束#

3.1 餐巾任务的吞吐与质量#

Din Tai Fung 的目标不是“叠完”,而是每台机器人在 18 小时 shift 内产出 1,500 条 table-ready 餐巾。这把速度和质量压到同一个约束中:

指标 Dyna-1(2025-06) Dyna-2(2026-08) 变化
毛吞吐 35 条/小时 95 条/小时 2.71×
达到生产质量标准 75% 93% +18 个百分点
不合格率 25% 7% 相对降低 72%
原文报告的 table-ready 日产出 约 480 1,590 3.31×
1,500/天目标 未达到 超过 6% 跨过生产门槛

有效产出的基本算式是:

$$ N_{ready} = r_{hour} \times H_{shift} \times p_{quality} $$

用公开的四舍五入数字计算,Dyna-2 为 $95 \times 18 \times 0.93 = 1590.3$,与原文的 1,590 一致。Dyna-1 为 $35 \times 18 \times 0.75 = 472.5$,与原文“约 480”的差异来自入参的四舍五入。

graph LR subgraph D1["Dyna-1"] R1["35 条/小时"] --> Q1["75% 达标"] --> O1["约 480 条/天"] end subgraph D2["Dyna-2"] R2["95 条/小时"] --> Q2["93% 达标"] --> O2["1,590 条/天"] end TARGET["生产门槛<br/>1,500 条/天"] O1 -.->|"低于目标"| TARGET O2 -->|"超过目标"| TARGET style D1 fill:#ffebee,stroke:#E57373 style D2 fill:#e8f5e9,stroke:#4CAF50 style TARGET fill:#fff9c4,stroke:#FFC107

3.2 规模化声称#

原文还给出了三个业务层数字,它们都应视为 Dyna 截至 2026-08 的自报口径

原文没有公开 ROI 的分子、分母、人工替代口径、设备成本或维护成本,因此不能从公开材料独立复算“3 天”或“跨过 ROI”。


4. Dyna-2 为什么能解锁生产任务#

部署文章强调的两项模型能力是 world understandingsteerability。它们不是 demo 上的附加分,而是完成客户整个 SOP 的必要条件。

4.1 模型侧最小架构#

Dyna-2 的补充研究页将它定义为 World-Action Model (WAM):基于 video-diffusion backbone 的 Mixture of Transformers,视频和动作分别 token 化,拥有各自的 DiT 层,在早期层交互。

graph TB subgraph Cond["条件"] CTX["历史视频帧"] TXT["语言指令"] PROP["本体感知"] end subgraph Video["视频 DiT 栈"] VT["视频 token<br/>因果 self-attention"] VD["预测未来视频<br/>只在 joint loss 中需要"] end subgraph Action["较浅的动作 DiT 栈"] AT["带噪 action chunk<br/>双向 self-attention"] AO["动作 velocity field<br/>反应式控制输出"] end TXT -->|"cross-attention"| VT CTX --> VT PROP --> AT VT <-->|"仅早期层交互<br/>保留时序推理,降低延迟"| AT VT --> VD AT --> AO TXT -.->|"不直接连动作 token<br/>经视频表征间接调节"| AT style Video fill:#e3f2fd,stroke:#2196F3 style Action fill:#e8f5e9,stroke:#4CAF50 style Cond fill:#fff3e0,stroke:#FF9800

训练使用 flow matching,世界视频与动作是两个边缘 velocity field,共享表征但分别拟合:

$$ z_t = t z + (1-t)\epsilon_z, \qquad a_t = t a + (1-t)\epsilon_a $$

$$ \mathcal{L}_{co}(\theta)= \mathbb{E}\left\|u^{vid}_\theta(z_t;t,c)-(z-\epsilon_z)\right\|^2 +\lambda\mathbb{E}\left\|u^{act}_\theta(a_t;t,c)-(a-\epsilon_a)\right\|^2 $$

由于动作速度场不以带噪未来视频 $z_t$ 为输入,视频 loss 主要通过共享表征改善动作预测;生产推理时策略仍然是 reactive,不需要先生成未来视频再执行动作。

4.2 steerability 如何替代“每个现场一个模型”#

餐巾叠好后还需要整齐地放进箱子。Dyna-1 可以叠,但会把餐巾放在随机位置,工作人员仍要二次整理。Dyna-2 接收指令,将餐巾循环放入 10 个指定 stack。

flowchart TB NEED["业务需求<br/>不同现场有 5 或 10 个 stack"] NEED --> FORK{"如何适配?"} FORK --> HARD["硬编码坐标<br/>箱子变化就失效"] FORK --> PERSITE["每个 bin 训一个模型<br/>模型与运维数量线性增长"] FORK --> STEER["通用可操纵模型<br/>指令提供目标 stack"] STEER --> SEE["视觉理解当前 bin 布局"] SEE --> ACT["精确放到指定位置"] ACT --> SCALE["新配置 = 新指令<br/>而不是新模型"] style HARD fill:#ffebee,stroke:#E57373 style PERSITE fill:#fff3e0,stroke:#FF9800 style STEER fill:#e8f5e9,stroke:#4CAF50 style SCALE fill:#e3f2fd,stroke:#2196F3

这个例子揭示了一个很实用的研究优先级来源:精确语言跟随之所以进入 roadmap,不是因为 benchmark 要求它,而是生产现场暴露了“能叠餐巾”和“完成整个工作”之间的缺口。


5. Deployment is the eval#

实验室的数十次 trial 能发现一个完全不会做任务的模型,但它不会发现:

因此评估从“某次测试”变成“每个站点、每台机器人、每个 episode 永不停止的测量”。

sequenceDiagram participant M as 模型 checkpoint participant R as 机器人 runtime participant E as Episode 记录 participant L as 自动标注 participant Q as 舰队查询 participant H as 人工复核 participant T as 训练管线 M->>R: 部署新 checkpoint loop 每台机器人、每个 shift R->>E: 同步记录视频、状态、指令、事件 E->>L: 上传可回放 episode L->>Q: SOP 步骤 + 成败 + 失败模式 alt 罕见 / 模糊 / 低置信度 / 疑似回归 Q->>H: 请求复核 H-->>L: 修正标签与 ontology end end Q->>T: 选出对应步骤、失败模式和环境的数据 T->>M: 训练并产出下一 checkpoint

5.1 端到端与细粒度观测必须同时存在#

观测层级 要回答的问题 典型信号
端到端 任务是否成功?成品是否达到客户质量标准? episode grade、外观质量、日吞吐、uptime
SOP 步骤 哪一步最慢?哪一步开始出现失败? step start/end、duration、outcome、failure mode
控制与硬件 是策略回归、软件问题还是机械磨损? joint current、tracking error、command/state 差异、校准指标

6. 生产数据如何在真实世界存活下来#

Dyna 舰队持续产生相机流、robot state、control command、应用事件和硬件 telemetry,并保留足够的时间信息来重建各流的对齐。原文报告当时整个舰队已每天产生 超过 1 TB 原始数据

只记录正式 model rollout 不够:服务可能在两个 episode 之间崩溃,机器人也可能在没有 episode 活跃时进入异常状态。因此系统同时保留两条记录通道。

flowchart TB LIVE["实时多模态流<br/>持续进入"] subgraph Explicit["通道 A:正式 episode"] START["model run 开始"] --> REC["显式录制"] --> END["model run 结束"] end subgraph Triggered["通道 B:常驻触发 episode"] RING["定长环形窗口<br/>新数据覆盖最旧数据<br/>内存成本不随运行时间增长"] ALERT["系统或操作员检测到<br/>告警 / 诊断条件"] FREEZE["固化告警前窗口<br/>+ 短暂继续记录后果"] RING --> ALERT --> FREEZE end DURABLE["本地磁盘上的<br/>可回放 episode"] UPLOAD["网络允许时异步上传"] VERIFY["上游副本验证成功"] DELETE["才删除本地副本"] LIVE --> START LIVE --> RING END --> DURABLE FREEZE --> DURABLE DURABLE --> UPLOAD --> VERIFY --> DELETE style Explicit fill:#e3f2fd,stroke:#2196F3 style Triggered fill:#fff3e0,stroke:#FF9800 style DURABLE fill:#f3e5f5,stroke:#9C27B0 style VERIFY fill:#e8f5e9,stroke:#4CAF50

6.1 episode 生命周期与不变式#

stateDiagram-v2 [*] --> InMemory: 流进入定长窗口 InMemory --> Expired: 未触发,被新数据覆盖 InMemory --> LocalDurable: 告警触发 [*] --> LocalDurable: 正式 episode 结束 LocalDurable --> Uploading: 后台上传 Uploading --> LocalDurable: 断网 / 失败后重试 Uploading --> RemoteUnverified: 上传完成 RemoteUnverified --> LocalDurable: 校验失败 RemoteUnverified --> RemoteVerified: 上游校验成功 RemoteVerified --> LocalDeleted: 释放本地空间 LocalDeleted --> [*] Expired --> [*]

从原文可确定的不变式有:

最后一点提供的是“不丢数据”的基础,但它不自动等于 exactly-once:若要避免断网重试产生重复上传,上游仍需要 episode ID、内容 hash 或幂等写入。原文没有披露这一层的具体实现。


7. 从 episode 到语义可观测性#

原始 episode 只是证据,不是答案。相机和结构化信号本身不会说“机器人正在进行 SOP 第 4 步”或“这次是 missed grab”。Dyna 的自动标注系统将每个 episode 转成可查询的时间区间:

graph LR EP["时间对齐 episode<br/>多视角 + 状态 + 事件"] SEG["自动分段<br/>SOP step_i<br/>start / end"] GRADE["语义标注<br/>成功 / 失败<br/>质量 grade<br/>失败模式 + 置信度"] STAIRS["阶梯可视化<br/>宽度 = step duration<br/>下方 = outcome / failure mode"] INDEX["可查询索引<br/>日期 / 站点 / 机器人<br/>checkpoint / 硬件状态 / SOP"] EVIDENCE["聚合结论一键回到<br/>原始视频与结构化数据"] EP --> SEG --> GRADE --> STAIRS --> INDEX --> EVIDENCE style EP fill:#e3f2fd,stroke:#2196F3 style GRADE fill:#f3e5f5,stroke:#9C27B0 style INDEX fill:#e8f5e9,stroke:#4CAF50

7.1 为什么是人机混合标注#

全量人工观看会把人力浪费在大量例行成功上;完全自动化则会让标注漂移直接污染评估和训练数据。Dyna 的分工是:

flowchart TB ALL["全部 episode"] --> AUTO["自动标注全量覆盖"] AUTO --> ROUTE{"是否值得人工关注?"} ROUTE -->|"常规 + 高置信度"| ACCEPT["直接进入指标与查询"] ROUTE -->|"新任务 / 新 ontology"| HUMAN["人工复核"] ROUTE -->|"罕见或模糊结果"| HUMAN ROUTE -->|"低置信度"| HUMAN ROUTE -->|"疑似模型回归"| HUMAN ROUTE -->|"随机质量抽样"| HUMAN HUMAN --> CORRECT["修正标签<br/>估计标注系统质量"] CORRECT --> UPDATE["改进标注器与 ontology"] UPDATE --> AUTO style AUTO fill:#e3f2fd,stroke:#2196F3 style HUMAN fill:#fff3e0,stroke:#FF9800 style UPDATE fill:#e8f5e9,stroke:#4CAF50

7.2 三个查询轴#

graph TB DATA["已标注生产 episode"] TIME["时间轴<br/>同一台机器人如何漂移?<br/>两周前 vs 现在"] FLEET["舰队轴<br/>站点 / 机器人 / 硬件<br/>checkpoint 之间如何不同?"] TASK["任务轴<br/>一次尝试中哪一步慢?<br/>哪种失败最多?"] DECIDE["共同指向一个决策<br/>哪些生产数据应进入下一模型?"] DATA --> TIME --> DECIDE DATA --> FLEET --> DECIDE DATA --> TASK --> DECIDE style DATA fill:#e3f2fd,stroke:#2196F3 style DECIDE fill:#e8f5e9,stroke:#4CAF50

8. 案例:从吞吐下降定位到磨损的 gripper#

某个 Din Tai Fung 站点的吞吐在数周内下降,但系统日志没有异常,现场也没有主动报告问题。自动标签将问题缩小到 SOP Step 1:从餐巾堆拉出单条餐巾

指标 两周前 现在 变化
每条餐巾总耗时 38 s 46 s +8 s
Step 1 耗时 6.4 s 10.8 s +4.4 s,占总增量 55%
每周标记失败总数 357 725 2.03×
missed grab 108 380 3.52×
flowchart LR DROP["站点吞吐下降<br/>日志无显式错误"] STEP["按 SOP 步骤分解<br/>Step 1 耗时 6.4s → 10.8s"] MODE["按失败模式聚合<br/>missed grab 108 → 380"] REPLAY["查询所有匹配片段<br/>视频并排回放"] AMBIG{"视频中的表现<br/>坏策略 还是 坏硬件?"} TELE["结合 joint current、tracking error<br/>校准与退化检查"] ROOT["根因:gripper 磨损"] FIX["维护 / 更换部件<br/>而不是盲目重训模型"] DROP --> STEP --> MODE --> REPLAY --> AMBIG --> TELE --> ROOT --> FIX style DROP fill:#ffebee,stroke:#E57373 style AMBIG fill:#fff9c4,stroke:#FFC107 style ROOT fill:#e3f2fd,stroke:#2196F3 style FIX fill:#e8f5e9,stroke:#4CAF50

这个案例展示了两层可观测性的分工:


9. 预测性维护:在模型性能被拖累前修复硬件#

机械部件的退化是缓慢且连续的,但生产中的默认维护往往是反应式的:直到部件在 shift 中失效才被发现。Dyna 的方法将连续生产 telemetry、视频物理结果、定期校准和 degradation check 对齐到每台机器人自己的 baseline。

stateDiagram-v2 [*] --> Baseline: 建立每台机器人自己的正常带 Baseline --> NormalVariation: 日常波动仍在统计范围内 NormalVariation --> Baseline: 无持续趋势 Baseline --> AcuteEvent: 退化指标日环比显著跳变 AcuteEvent --> Flagged: 当天告警 Flagged --> MaintenanceWindow: 指标持续上升,但模型性能尚未受限 MaintenanceWindow --> Serviced: 主动安排维修 / 更换 MaintenanceWindow --> HardwareLimited: 若不干预 HardwareLimited --> Downtime: 任务质量或 uptime 下降 Serviced --> Baseline: 重新校准

原文的 Figure 7 只公开了这个形状和相对时序,没有公开退化指数的数值、公式、检测器或告警阈值。可确定的设计原则是:


10. 部署飞轮#

生产数据的价值不是它的字节数,而是它是否能回答“下一个模型应该看什么”。一个有效查询可以精确选出:特定 SOP 步骤、特定失败模式、特定现场或硬件状态、特定 checkpoint 下的有信息量片段。

graph LR DEPLOY["部署 checkpoint"] --> WORK["客户现场长时间工作"] WORK --> LABEL["每个 episode 自动标注"] LABEL --> GAP["发现能力缺口、长尾失败<br/>环境漂移与硬件退化"] GAP --> QUERY["按 step / outcome / mode / site<br/>hardware / checkpoint 查询"] QUERY --> CURATE["筛选高信息量数据<br/>对的几小时 > 错的更多小时"] CURATE --> TRAIN["改进预训练 / 后训练<br/>或改进工具与诊断"] TRAIN --> DEPLOY GAP --> REUSE["沉淀为可重用资产<br/>查询 / 硬件检查 / 集成 / 能力"] REUSE --> NEXT["下一个站点<br/>更快达到 ROI bar"] NEXT --> WORK style DEPLOY fill:#e3f2fd,stroke:#2196F3 style CURATE fill:#fff9c4,stroke:#FFC107 style REUSE fill:#f3e5f5,stroke:#9C27B0 style NEXT fill:#e8f5e9,stroke:#4CAF50

飞轮的可扩展性来自 一个站点的学习能被其他站点复用

flowchart TB S1["站点 A 发现新 failure mode"] --> Q["将 failure mode 固化成舰队查询"] Q --> F["在所有站点搜索同类问题"] F --> D["生产数据切片改进 checkpoint"] D --> ALL["所有部署共享质量与吞吐改善"] S2["站点 B 的硬件退化"] --> HC["将检查固化为同类部件的健康规则"] HC --> ALL S3["站点 C 的新环境条件"] --> PRE["反向影响后训练,进一步影响预训练数据分布"] PRE --> ALL ALL --> NEW["新站点带着更完整的模型、工具、告警和数据配方启动"] NEW --> S1 style ALL fill:#e8f5e9,stroke:#4CAF50 style NEW fill:#e3f2fd,stroke:#2196F3

11. 工程分层与关键契约#

原文没有公开具体技术栈,但从数据流可以重建出一个不依赖特定产品的参考分层。下表中“契约”是系统要维持的语义,不是 Dyna 公开的 API 名称。

分层 责任 关键契约
Robot runtime 控制、应用状态机、安全、恢复 控制路径不被数据上传阻塞
Time-aligned recorder 对齐多模态流,生成正式与触发 episode 每个数据点可映射到同一时间轴
Local durability 断网缓存、重试、容量管理 远端校验前不删原件
Episode store 持久存储与原始流回放 聚合结论必须能追溯原始证据
Semantic labeler SOP 分段、grade、failure mode、confidence 版本化 ontology 和标注器,能重放重算
Review queue 罕见、模糊、低置信度、回归、抽样 人工时间投向最高信息增益处
Fleet query 按时间、站点、机器人、checkpoint、硬件、SOP 查询 相同指标在站点间具有可比语义
Curation & training 生产切片选择、训练、checkpoint 评估 新模型回到同一生产评估闭环
Hardware health baseline、趋势、校准、退化告警 模型回归与机械退化必须可分离

12. 这套架构真正解决了什么#

12.1 优点#

12.2 公开材料无法回答的问题#

因此,这篇文章的最高价值是展示了 生产学习系统应该闭合哪些回路,而不是提供一个可照抄的完整实现。


13. 一句话总结#

Dyna 的关键不是用一个更大的模型替代整个机器人产品,而是把“模型在客户现场做了什么”变成一个永远可回答的问题,再用可回放的 episode、可查询的 SOP 语义、可分离的模型/硬件归因和可复用的训练切片,让每一个新站点都变成整个舰队的学习信号。


14. 参考资料#

  1. Dyna Robotics. Not Just a Model, But a Product. 2026-08.
  2. Dyna Robotics. Dyna-2: A 1-Million-Hour Scaling Law for World-Action Models. 2026-08.
  3. Ye et al. World Action Models are Zero-shot Policies. 2026.
  4. Lipman et al. Flow Matching for Generative Modeling. 2022.