设计

WorldFoundry 的分层、契约、数据流与设计取舍。

本页内容

WorldFoundry 遵循一条最重要的设计规则:把模型执行与 benchmark 评测分开,再用显式 artifact 和证据连接两侧。这样可以让差异很大的系统共享一条研究工作流,而不会把模型加载代码塞进 metric,也不会把 benchmark 假设写进模型 pipeline。

架构总览

01

使用界面

面向人与 agent 的操作入口

  • TUI
  • CLI
  • Studio
  • Python API
  • MCP
02

控制平面

可运行项、依赖与调度

  • 模型目录
  • Benchmark 目录
  • Readiness
  • Run plan
03

执行层

模型推理与 benchmark 打分真正发生的位置

  • Pipeline
  • Operator
  • 模型 runner
  • Benchmark runner
04

契约与证据

跨子系统流动并在 run 结束后保留的内容

  • Request
  • Result
  • Artifact manifest
  • Scorecard
每一层只拥有一类变化。可序列化契约阻止模型专属代码、benchmark 专属代码和用户界面相互渗透。

四层拥有不同职责,也以不同速度变化。

使用界面层是人和 agent 操作系统的方式。TUI 用于引导式发现,CLI 用于自动化,Studio 用于可视化创建和 review job,Python 与 MCP 用于程序化编排。它们可以收集不同输入,但不应该私藏模型实现或打分逻辑。

控制平面回答系统中有什么、什么能运行、需要什么、应该怎样调度。模型与 benchmark catalog、alias、资产声明、runtime profile、readiness 字段和 run plan 都位于这一层。它负责描述与路由,不执行 GPU kernel,也不计算 benchmark 分数。

执行层一侧是模型 pipeline 和 operator,另一侧是 benchmark runner 与 metric。模型代码负责 checkpoint 加载和生成,benchmark 代码负责 protocol 专属打分与结果归一化。两侧都不应该越过 artifact 边界接管另一侧的职责。

契约与证据层是进程结束后仍然保留的内容。Request、result、artifact 引用、manifest、report 与 scorecard 都可以序列化。它们让一次 run 在 Python 进程退出后仍然可理解,也允许生成与打分使用不同环境、运行在不同机器,或在不同时间完成。

端到端数据流

  1. 发现

    选择模型与 benchmark

    Catalog manifest 给出稳定 ID、能力、就绪状态、所需资产与 blocker。

  2. 准备

    准备 runtime 与资产

    解析 conda profile、checkpoint、dataset、metric 权重与凭据。

  3. 运行

    通过统一契约生成

    TUI、CLI、脚本与 Studio 最终调度到 pipeline 和 operator。

  4. 检查

    审阅归一化 artifact

    视频、几何、动作、trace 与 metadata 都保持可见、可复用。

  5. 评测

    产出可审查证据

    Metric 与官方 runner 写出报告、blocker 和归一化 scorecard。

Artifact 是两侧的交接面:模型 runtime 不承载 benchmark 逻辑,benchmark runner 也不直接加载模型 checkpoint。

一次 run 从声明式身份开始。模型 manifest 与 benchmark manifest 记录来源、预期能力、依赖、runtime binding 和已知 blocker。随后,用户输入、任务 metadata 或 dataset sample 被归一化成 GenerationRequest

WorldModelRunner 解析目标模型,再调度到正确的 pipeline/operator 或外部 runtime。Runner 返回 GenerationResult,其中包含状态、耗时、错误、metadata 和持久输出。这些输出可以是视频、图像、frame、几何、点云、动作、trajectory、trace 或结构化数据。

评测消费的是 result,而不是 checkpoint。可复用 metric 或 benchmark 专属 runner 读取生成 artifact,写出逐样本 metric row,再按选定 protocol 聚合。Reporting 最后把 run 身份、provenance、覆盖率、blocker 与分数汇总到 run_manifest.jsonreport.mdscorecard.json 等文件中。

文件边界是刻意设计的。昂贵的生成 job 可以只运行一次,先经过视觉检查,再在不重新加载模型的情况下交给新 metric。Benchmark 也可以运行在独立环境中,而不需要把自己的依赖塞进所有模型 runtime。

例子:Matrix-Game 2 输出跨过边界

仓库中的 Matrix-Game 2 universal 示例使用初始图像 worldfoundry/data/test_cases/matrix-game-2/universal/0000.png 和动作条件配置。Operator 会把这些输入转换成模型原生调用,pipeline 负责 checkpoint 与推理,输出端再写出视频和 metadata。概念上的流向如下:

初始图像 + action 序列 + seed/fps
  -> Matrix-Game 2 operator
  -> Matrix-Game 2 pipeline / checkpoint
  -> generated_video + metadata
  -> GenerationResult 中的 ArtifactRef
  -> 视觉 review,或读取 generated_video 的兼容 metric

评测端只需知道 artifact 的 kind、URI 与 sample identity,不需要知道 Matrix-Game 2 怎样加载权重。反过来,pipeline 也不需要 import 某个 benchmark 的 evaluator。若视频生成成功但 benchmark 所需 prompt set 不完整,GenerationResult 仍然可以有效,而 scorecard 的 leaderboard eligibility 必须保持为 false。

连接系统的核心契约

Manifest 描述意图与要求

模型和 benchmark manifest 回答条目是什么、来自哪里、有哪些 alias 和能力、需要哪些资产、由哪个 runtime 处理。它们是可 review 的声明,不是声明路径能在所有机器上运行的证明。

Request 与 result 归一化执行边界

GenerationRequest 携带 sample 身份、输入媒体、文本或任务条件与参数。GenerationResult 记录该 sample 实际发生了什么,并指向输出。本地 checkpoint、托管 API 和 simulator-facing policy 因此可以保留原生实现,同时向评测与报告提供稳定结果形态。

Artifact 让结果持久化

Artifact manifest 与 request/result ledger 记录哪些文件或 URI 属于本次 run。Artifact 可以脱离生成进程存在,之后仍然能够被 review、转换为官方 layout、重新打分、比较或审计。

Scorecard 与结果声明范围

Metric summary 回答怎样打分,scorecard 则进一步加入覆盖率、provenance、blocker、validation 状态和 eligibility。这样,framework 成功、导入官方形态文件和完整复现官方 benchmark 不会被当成同一种成就。

Pipeline 与 operator 拆分

Pipeline 负责模型构建、checkpoint 加载、设备放置与原生 inference call。Operator 把归一化 WorldFoundry 输入适配到 pipeline,再把原生输出转换为持久 artifact。

这个拆分避免 Studio、CLI、脚本和评测 job 重复实现输入整形、输出命名和结果归一化。它也保留模型的原生行为:camera-conditioned 世界模型、diffusion 视频模型和 robot policy 不应该为了满足 abstraction 而假装拥有完全相同的参数。

Catalog 与 runtime 拆分

即使完整 runtime 尚未接入,catalog 条目仍然可以保存稳定 ID、上游来源、许可证、checkpoint 引用、任务家族和已知要求。但 metadata 不能被误读为执行证据。

因此,WorldFoundry 分别跟踪 catalog 状态、runner binding、本地资产 readiness、bounded validation、official runtime evidence 与 leaderboard eligibility。CLI 会从这些字段推导下一步,而不是把它们压成一个含糊的 “supported” 值。

资产放在 git 外

模型权重、dataset、metric checkpoint、凭据、生成媒体和 simulator 资产通常体积很大,或受到许可证、隐私和机器配置约束。仓库只保留代码、manifest、小型 fixture 和文档。Bootstrap 脚本会定义明确的本地根目录,使不同 run 复用外部资产,而不需要把资产复制进每一个上游项目。

这个设计也让缺失状态可见。Run 应该报告具体缺少的 checkpoint、dataset、metric 权重、凭据或 simulator,而不是静默切换到另一种实现。

各层在仓库中的位置

模型身份与要求位于 worldfoundry/data/models/catalog/。模型执行分布在 worldfoundry/pipelines/worldfoundry/operators/worldfoundry/synthesis/。Benchmark metadata、资产、任务与 runtime profile 位于 worldfoundry/data/benchmarks/,公开评测契约、runner、metric、report 与 scorecard 则位于 worldfoundry/evaluation/

浏览器 workspace 与 visualizer 位于 worldfoundry/studio/。发现、规划、执行、验证与报告命令位于 worldfoundry/cli/。受支持的运维辅助路径集中在 scripts/setup/scripts/inference/scripts/workspace/

如果需要源码级 call chain 与扩展边界,请继续阅读维护者架构文档

修改系统时遵循的原则

证据先于声明。 Manifest 记录意图,runtime 与 scorecard 证据支撑 readiness。

Artifact 是一等对象。 进程退出后,结果仍然可检查、可复用。

显式 blocker 优于静默 fallback。 缺资产、凭据、覆盖率或官方 parity 时必须保持可见。

一个核心支持多种界面。 TUI、CLI、Studio、Python、脚本和 MCP 复用相同 catalog 与执行路径。

保留模型差异。 WorldFoundry 归一化子系统边界和证据,而不是所有原生参数或表征。

Official validation 不等于官方复现。 导入官方形态结果证明的是归一化链路,不是完整 benchmark parity。