ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

StaffML Vault 全解析:以 YAML 为唯一事实来源的 ML 面试题语料库内容系统

StaffML Vault 全解析:以 YAML 为唯一事实来源的 ML 面试题语料库内容系统 StaffML Vault 全解析以 YAML 为唯一事实来源的 ML 面试题语料库内容系统【免费下载链接】cs249r_bookMachine Learning Systems项目地址: https://gitcode.com/GitHub_Trending/cs/cs249r_book导读StaffML Vault 是 cs249r_book 仓库中承载 StaffML 机器学习系统面试题库的权威内容系统约 9,657 个问题的 per-question YAML 源文件、分类法taxonomy、发布产物release artifacts、LinkML 模式定义与三轮对抗性评审台账全部集中于此。本文将以 interviews/vault/README.md 为主体结合 ARCHITECTURE.md 设计文档与 vault-cli 源码实现完整讲解其目录结构、YAML 题面格式、vault命令行工作流、内容哈希与 Merkle 校验原理、26 项分层不变量以及从 YAML 到论文、从 YAML 到站点的双端发布流水线。读完本文你将掌握如何查看、构建、校验并参与这套题语料库的完整技术方案。一、Vault 是什么一条从 YAML 到论文与站点的内容流水线StaffML Vault 的定位不是一个 JSON 数据文件而是一个真实的内容系统content system。其核心主张记录在 ARCHITECTURE.md 第 1 节面向人的唯一事实来源—— 每题一个 YAML 文件可以用less调试、用git做 diff、在 PR 中评审构建产物—— 由 YAML 编译出的 SQLite 数据库vault.db可查询、可索引、有类型边缘分发层—— Cloudflare D1 Worker不再向站点打包 20 MB 的corpus.json单一发布闸门—— 一条命令从同一快照原子地产出站点数据、论文宏与 D1 迁移。整条流水线可以概括为下图源自 interviews/vault/README.mdvault/questions/*.yaml │ ▼ vault build ─────────────► vault.db │ │ vault check --strict │ │ ┌──────┴───────┐ ▼ ▼ ▼ (CI green or fail) paper D1 Worker macros.tex edge API via vault via vault export-paper deploy │ ▼ staffml site (reads via vault-api.ts)该设计的一个关键保证是任何下游产物都只是 YAML 源的函数并由release_hash对content_hash、taxonomy、chains、zones、policy、canon_version 叶子做 SHA-256 Merkle 运算见 ARCHITECTURE.md §3.5版本化。论文与站点在构造上即保持一致——它们读取的是同一个vault.db。二、目录解剖Vault 里到底放了什么interviews/vault/README.md 给出了完整的顶层结构interviews/vault/ ├── ARCHITECTURE.md ← v2.2 设计文档1600 行权威 ├── REVIEWS.md ← 三轮对抗性评审台账 ├── TESTING.md ← 测试计划实现见 vault-cli ├── README.md ← 本文件 ├── release-policy.yaml ← “发布什么”的单一过滤谓词 ├── corpus-equivalence-hash.txt ← CI 回归守卫release_hash 钉扎 ├── schema/ │ ├── question_schema.yaml ← LinkML —— 唯一 schema 事实来源 │ └── EVOLUTION.md ← schema 版本化的 SemVer 规则 ├── questions/ ← 事实来源 —— 9,657 个 YAML 文件 │ ├── LICENSE ← CC-BY-NC-4.0 │ ├── cloud/{l1..l6}/zone/*.yaml │ ├── edge/ mobile/ tinyml/ global/ ├── exemplars/ ← 仅供 vault generate 使用的精选人工池 ├── drafts/ ← LLM 生成、等待 vault promote ├── releases/ ← 可引用的发布产物 │ ├── 0.9.0/ │ │ ├── vault.db ← 编译出的 SQLite已提交、可引用 │ │ ├── release.json ← release_hash、计数、git_sha、时间戳 │ │ ├── d1-migration.sql ← 正向迁移 │ │ └── d1-rollback.sql ← 逆迁移内嵌完整前序行体 │ └── latest - 0.9.0 ← POSIX 原子改名符号链接 ├── id-registry.yaml ← 只追加日志CI 拒绝行删除 ├── taxonomy.yaml ← 主题图强制 DAG ├── chains.yaml ← 链定义可选 ├── zones.yaml ← 8 个 ikigai 区域 └── exemplar-gaps.yaml ← 本地/CI 生成的覆盖审计输出gitignored2.1 只追加的 ID 注册表与内容寻址 IDid-registry.yaml是整套 ID 稳定性的基石只追加、永不重写。每个 ID 形如track-level-zone-topic-6hex-seq其中6hex是标题 SHA-256 的前 6 位十六进制seq是四位去重后缀。由于学生端 localStorage 会引用题目 ID改 ID 会破坏书签ID 一旦分配永不更改、永不复用。vault check --strict会检查注册表列出的 ID 其文件是否存在、文件的id:字段是否与注册表一致这类结构性不变量从机制上拦截手工编辑导致的错乱。2.2 流水线中间产物_pipeline/整体 gitignoredLLM 驱动的工具链提案、缺口检测、草稿评分卡、审计轨迹把中间输出写入_pipeline/目录该目录作为一个整体被 gitignoreinterviews/vault/_pipeline/ ← gitignored ├── chains.proposed.json ← build_chains_with_gemini.py ├── chains.proposed.lenient.json ← build_chains_with_gemini.py --mode lenient ├── gaps.proposed.json ← 缺口检测 sidecar严格 ├── gaps.proposed.lenient.json ← 缺口检测 sidecar宽松 ├── draft-validation-scorecard.json ← validate_drafts.py 输出 └── runs/ ├── AUDIT_REPORT.md ← 最新 audit_chains_with_gemini.py 汇总 └── UTC-timestamp/ ← 每次运行的审计轨迹只有持久性语料产物chains.json、id-registry.yaml、questions/属于 git流水线运行可以随时从在线工具重放提交它们只会用字节稳定的 LLM 噪音污染历史。约定是新增流水线工具时默认输出必须走PIPELINE_DIR常量vault/_pipeline/且永远不要提交该目录下的任何内容。三、单题 YAML 格式分类即数据路径即寻址Vault 的 v1.0 设计做出过一个重要反转详见 ARCHITECTURE.md §3.3分类信息全部写在 YAML 体内文件系统路径只是浅层寻址方案。此前路径即分类的设计无法表达论文完整的 11 区域 × 6 层级分类体系只有 4/11 个区域有目录迁移脚本还会把无法表示的(level, zone)组合静默折叠进l1/recall/并丢掉 86 个题目。v1.0 之后移动文件到不同 track 是git mv YAML 编辑而跨 level/zone 重分类只需要编辑 YAML。仓库中真实存在的示例 cloud-0231.yaml 展示了实际的字段构成这是一个KV-Cache 上下文爆炸的 L4 优化题schema_version: 1.0 id: cloud-0231 track: cloud level: L4 zone: optimization topic: attention-scaling competency_area: architecture bloom_level: analyze phase: both title: The KV-Cache Context Explosion scenario: You are serving a Llama-3 8B model. At a batch size of 1 with a 1,000-token prompt, inference requires roughly 16GB of VRAM. ... question: Why is this physically impossible? details: realistic_solution: |- You hit the KV-Cache memory wall. ... common_mistake: |- **The Pitfall:** Forgetting that the KV-Cache grows linearly with sequence length. napkin_math: |- **Assumptions Constraints:** KV Cache per Token: ... $2 \times 32 \times 8 \times 128 \times 2 131,072 \text{ bytes}$ ... status: published provenance: imported requires_explanation: false expected_time_minutes: 10 validated: true validation_status: OK validation_date: 2026-04-01 validation_model: gemini-2.5-flash math_verified: true math_status: CORRECT math_date: 2026-04-03 math_model: gemini-3.1-pro-preview human_reviewed: status: not-reviewed by: null date: null notes: null3.1 字段级内容格式约束ARCHITECTURE.md §3.3 定义了每个字段的内容格式这是 H-6 评审项的修复title纯文本≤120 字符scenario/question纯文本校验器拒绝原始 HTML、script、javascript:/data:URLdetails.common_mistake/realistic_solution/napkin_math受限 Markdown强调、行内代码、围栏代码、列表、链接加 KaTeX$...$/$$...$$数学校验器跑 CommonMark 解析 允许清单检查details.resources[].urlscheme 必须是https:拒绝http:、javascript:、data:与相对 URLname必须是非空纯文本站点渲染端还会再做 DOMPurify 消毒除校验器拒绝之外的双重保险。3.2 来源provenance闭合枚举provenance只能是{human, llm-draft, llm-then-human-edited, imported}之一。generation_meta在provenance ! human时必填其中model必须存在于vault/schema/models.yaml注册表新模型需显式 PR 添加prompt_hash引用vault/generation-log/yyyy-mm-dd/hash.txt中 git 跟踪的完整提示词文件。generation_meta.human_reviewed_at必须在题目可被vault generate用作 exemplar 之前设置——这是防止 LLM 生成内容直接污染风格样例池的关键闸门。四、22 个子命令从安装到日常操作4.1 安装与初始化按 vault-cli/README.md从仓库根目录以可编辑模式安装Python ≥ 3.12CI 钉扎 3.12 以保证哈希稳定pip install -e interviews/vault-cli/ vault --help # 22 个子命令分阶段感知4.2 快速命令一览interviews/vault/README.md 给出的核心命令venv 激活并安装[dev]后从仓库根目录执行vault --help # 22 个子命令phase-aware vault build # 编译 YAML → vault.db vault check --strict # 快速 结构性不变量60s vault check --tier slow # 夜间层级含 LSH 场景去重 vault stats # 对最新 vault.db 出评分卡 vault doctor # 8 项诊断子检查 vault verify 0.9.0 # 学术可引用性往返校验 vault api --port 8002 # 本地 Worker 接口面 shim开发用完整 CLI 参考见 vault-cli/README.md--json机器可读输出的逐命令 schema 见 vault-cli/docs/JSON_OUTPUT.md退出码语义稳定见 vault-cli/docs/EXIT_CODES.md0 成功 / 1 校验失败 / 2 用法错误 / 3 文件系统错误 / 4 网络错误 / 5 用户中止。4.3 按功能分组的子命令创作类authoringvault new --track cloud --level l4 --zone diagnosis \ --topic kv-cache-management \ --title KV Cache Bandwidth Bottleneck on H100 # 打开 $EDITOR 编辑脚手架好的 YAML保存即校验失败会在文件顶部注入注释块并重新打开 vault edit id # 校验失败注入注释块最多重开 --retries3 次 vault move id --to track/level/zone # 脏树/链/适用性矩阵会拒绝 vault rm id [--hard] # 默认软删除deprecated--hard 需输入题名确认 vault restore id # 撤销软删除 vault renumber id # 从 rebase 后的去重序号冲突中恢复 vault mark-exemplar id # 提升进仅人工的 exemplar 池构建与校验类vault build # YAML → vault.db10s / 10K 文件并行报全部错误 vault check --strict # fast structural 两层级 vault check --tier slow # 夜间链接可达性、LLM 数学验证 vault stats [--format-prometheus|--exemplar-coverage] vault codegen --check # LinkML → TS/Pydantic/DDL 漂移守卫 vault doctor [--check name] # 8 项诊断子检查发布管线类vault snapshot 1.0.0 # 暂存到 releases/.pending-1.0.0/ vault migrations-emit 0.9.0 1.0.0 # 正向 逆迁移 SQL覆盖全部 4 张表 vault export-paper 1.0.0 # SQL → macros.tex corpus_stats.json vault tag 1.0.0 # git commit tag vault publish 1.0.0 [--resume|--sign] # 组合产品末尾 POSIX 原子改名 vault verify 1.0.0 [--git-ref v1.0.0] # 学术可引用性往返校验 vault diff 0.9.0 1.0.0 --classify # cosmetic|semantic|structural 分类 vault deploy 1.0.0 --env staging # D1 迁移 快照 POP 探测 vault rollback v --env production [--method snapshot|sql] vault ship 1.0.0 --env production [--resume] [--skip-legs paper] vault promote id | --all-drafts # drafts → published带 provenance 提升本地开发类vault build --local # 同时镜像 corpus.json 到 staffml/public/data/ vault api --db path.db --port 8002 # 从本地 vault.db 镜像 Worker 端点面 vault serve # 在 127.0.0.1 上对 vault.db 启动 Datasette从源码结构看vault-cli/src/vault_cli 下的compiler.py、validator.py、policy.py、release.py、ship.py、hashing.py等模块CLI 基于Typer构建、输出用Rich美化实现了暴露原语、组合产品的设计原则publish是组合产品而build、snapshot、migrations emit、export paper、tag都是可独立运行的原语。五、新增一道题vault new的完整生命周期按 interviews/vault/README.md 的 How to add a questionvault new --track cloud --level l4 --zone diagnosis \ --topic kv-cache-management \ --title KV Cache Bandwidth Bottleneck on H100 # 打开 $EDITOR 打开脚手架好的 YAML保存即校验失败会在文件顶部注入注释块并重开 vault check --strict # 确保通过不变量 git add interviews/vault/questions/... # 显式 add不要 git add -A git commit -m question: KV cache bandwidthvault new在创建时自动完成四件事详见 ARCHITECTURE.md §3.3 与 REVIEWS.md 的 David R3-H3/H4 条目分配内容寻址 IDtrack-level-zone-topic-6hex-seq向id-registry.yaml追加{id, created_at, created_by}一行authors:从git config user.email自动填充先执行一次git pull --rebase以降低后续冲突概率。ID 碰撞数学Chip Huyen 的边界修正在单个(track, level, zone, topic)桶约 100 个标题下任意两个 6-hex 碰撞概率约为100² / 2 / 16⁶ ≈ 1/3,3504 位后缀为每个(topic, 6-hex)桶提供 10,000 个槽位。一旦 rebase 后-0001已被别的 PR 抢走操作者运行vault renumber old-id递增 seq、git mv重命名文件保留历史、更新 YAML 内id:、追加新注册表条目旧 ID 仍保留不重用、更新其他题目中指向旧 ID 的链引用并输出执行的精确 git 操作摘要。六、发布工作流从 publish 到 ship 的原子化闭环6.1 组合发布命令vault publish 1.0.0 # build snapshot migrations vault verify 1.0.0 --git-ref v1.0.0 # 引用级往返校验 vault diff 0.9.0 1.0.0 --classify # 发布前审查变更 vault ship 1.0.0 --env staging # D1 → Next.js → paper-last # Staging 浸泡后 vault ship 1.0.0 --env production --canary-percent 10vault publish是组合产品等价于依次执行check --strict→build→snapshot v→migrations emit→export paper→tag→ 最后用 POSIXrename(2)原子切换releases/latest符号链接。产出先暂存到releases/.pending-v/成功才原子改名失败则删除 pending 目录--resume可安全重试。--sign用minisign对vault/signing-key.pub产生release.json.minisig真实签名。6.2vault ship的三段提交协议vault ship横跨三个回滚成本不同的系统其提交顺序是承重设计ARCHITECTURE.md §6.1.1D1有状态回滚靠 R2 快照分钟级总是可用Cloudflare Pages/Workersdeploy-idwrangler rollback秒级幂等Git 标签 / 论文推送推送后远端持久受保护分支禁止--force撤销。顺序load-bearingD1 最先Next.js 其次论文标签推送最后。理由最后一腿必须是回滚最难/不可能的腿——如果最后一腿失败回滚前面几腿代价很低如果第一腿就失败则后面还没落地。每腿状态记录在releases/version/.ship-journal.json论文腿提交后point_of_no_return翻转为true此后只允许前进式修复例如用v1.0.1前滚修复绝不 force-push 重写历史。失败语义矩阵D1 失败→恢复 R2 快照并中止D1 已部署但 Next.js 失败→wrangler rollback 恢复 D1 快照并中止D1Next.js 已部署但论文推送失败→呼叫操作员不自动回滚否则论文产物会处于中间态。七、内容哈希与 Merkle 校验可引用性的根基Vault 对学术引用的支撑来自对输入哈希、绝不哈希 SQLite 二进制的原则SQLite 跨版本不可字节重现。核心实现在 vault-cli/src/vault_cli/hashing.pycontent_hash每题对白名单语义字段的规范化 JSON 做 SHA-256。白名单CANON_VERSION 2包含id, title, track, level, zone, topic, competency_area, bloom_level, phase, chains, status, scenario, question, visual, details, tags, provenance以及generation_meta的{model, prompt_hash}子集last_modified、file_path、authors顺序、prompt_cost_usd等不影响语义的元数据被刻意排除。规范化字符串统一做 NFC 规范化、LF 换行、去尾随空白json.dumps(sort_keysTrue, ensure_asciiFalse, separators(,, :))递归排序键——同一题目无论 YAML 键插入顺序如何content_hash都一致有测试夹具断言此性质。release_hash整版对所有已发布题目的(id, content_hash)叶子追加__taxonomy__、__chains__、__zones__、__policy__release-policy.yaml 的 SHA-256、__canon_version__fcanon-v{CANON_VERSION}的 SHA-256五类元叶子后对整串做 SHA-256。__policy__绑定意味着内容相同但过滤谓词不同的两个版本会产生不同的release_hash__canon_version__钉扎则保证规范化算法变化如 Unicode 规范化形式、字段白名单会被哈希显式暴露。vault verify version从 YAML 源重建 Merkle 树并断言与提交的release.json相等--git-ref用git archive ref解出历史版本到临时目录避免 HEAD 污染。release_hash记录在release_metadata表与releases/v/release.json中是 Zenodo 等外部读者与 CI 回归守卫对比corpus-equivalence-hash.txt共同使用的权威指纹。八、26 项不变量分层防御的校验体系interviews/vault/README.md 将 26 项不变量按速度分层完整规范见 ARCHITECTURE.md §5Fastpre-commit1sschema 校验、ID 唯一性、路径全小写、路径组件枚举合法、文件名格式topic-kebab-6hex-4digit.yaml、URL scheme 白名单、scenario 无原始 HTML、YAML 加固256KB 上限、深度 10、禁别名、yaml.safe_load专用。StructuralCI30s 并行topic 必须存在于 taxonomy修掉了历史 87/79 失配 bug、链引用存在、链位置连续[1..N]无洞、provenance 元数据一致、注册表只追加CI diff 基分支拒绝重排/删除行、taxonomy 图是 DAG、适用性矩阵、release-policy 单一来源import-graph 检查只有 policy.py 能实现谓词。LSH 场景去重CI10sMinHashk5 shingles、128 hashes 16-band LSHJaccard 0.85 分桶 桶内 Jaro-Winkler 0.95 候选对比较命中需人工vault dup --ack id1 id2确认。Nightly深链 URL 可达性、napkin-math 量纲分析Pint、LLM 数学验证。Weeklysecret-leak 正则扫描API key、邮箱、私有 URL、云厂商 key 格式。CI 预算方面vault check --strict build equivalence-hash codegen-drift LSH dedup目标 ≤2 分钟标准 GitHub runner超时则换更大 runner 而不是削弱检查。九、三轮对抗性评审与质量护栏这套架构在落地前经历了三轮完整对抗性评审每轮四位评审人Chip Huyen——生产 ML 与开发者体验、Jeff Dean——大规模系统、Soumith Chintala——框架与 API 设计、以及一位产业界 ML 工程师 David逐条收敛的发现都在规范与代码中落实并附工程决策说明逐条台账见 interviews/vault/REVIEWS.md。评审驱动的关键设计包括vault ship有序提交协议、X-Vault-Release从硬拒绝降级为信息性 SLI正确性边界是 release-keyed 的 Cache API、Merkle 策略与 canon-version 绑定、schema 指纹比对失败时降级为只读缓存模式而不是 5xx 整体宕机、SW 缓存按 release_id 键控、vault renumber碰撞恢复、vault verify --git-ref历史版本校验等。质量护栏还包括CI 对每个 PR 跑vault check --strict且合并不受阻即为失败LinkML 是唯一 schema 事实来源vault publish代码生成 Pydantic 模型、SQL DDL 与 TypeScript 类型staffml/vault-types经 pnpmworkspace:*协议被站点与 Worker 消费CI 跑vault codegen --check防漂移。测试层面interviews/vault/TESTING.md 规划了从单元、集成、契约到数据迁移、导出奇偶、Worker 契约、端到端、冒烟、负载、回滚的九层测试矩阵。十、语料许可证与使用边界interviews/vault/questions/下的语料题目、taxonomy、chains、zones、发布产物采用CC-BY-NC-4.0——仅限非商业使用且须署名商业使用需书面许可详见 questions/LICENSE。vault-cliPython 工具链是独立产物不在该许可证覆盖范围内。完整贡献流程含 rebase 后通过vault renumber恢复碰撞见 interviews/CONTRIBUTING.md。结语从这篇 README 出发还能深入哪里interviews/vault/README.md是整个 StaffML 题语料库的入口地图。若要深入推荐按此顺序阅读ARCHITECTURE.md —— 1600 行权威设计文档覆盖 CLI 规范、校验体系、发布协议、D1/Worker 数据面、成本模型与数据面 SLIREVIEWS.md —— 三轮评审逐条台账与延迟项理由vault-cli/README.md —— 22 个子命令的实战手册与链构建流水线diagnose_chain_coverage.py→build_chains_with_gemini.py --mode strict|lenient→apply_proposed_chains.py→merge_chain_passes.pyvault-cli/src/vault_cli/hashing.py 与 policy.py —— 哈希规范与发布谓词的直接实现interviews/vault/questions 下的真实题目例如 cloud-0231.yaml—— 感受实际题面、napkin-math 与校验元数据的写法。对于想本地跑通的读者最小路径是pip install -e interviews/vault-cli/后依次执行vault build、vault check --strict、vault stats再用vault serve以 Datasette 浏览vault.db或在本地用vault api --port 8002模拟生产 Worker 接口面。【免费下载链接】cs249r_bookMachine Learning Systems项目地址: https://gitcode.com/GitHub_Trending/cs/cs249r_book创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表