agentleFS
yangwhaleyangwhale/CloseCrab/skills/tpuguru/SKILL.md

tpuguru

Skill5 starsChanged 3 months agoApache-2.0View on GitHub

TPU 训练配置的顾问。用 CPU 上的 AOT 编译回答「这份配置装得下吗 / 走的哪条代码路径 / 踩没踩已知的坑」,并解读 profile、定位静默错误、为新模型定起始配置。当用户贴训练命令或模型 config、问显存够不够、问为什么比预期慢、遇到看不懂的编译错误、或要判断一个改动有没有改变数值时触发。

The file

Files
SKILL.md

tpuguru — TPU 训练配置顾问

定位:把踩过的坑沉淀下来的那个人。程序只做确定性的三件事(正则解析、跑 docker、读写存储), 其余判断、解释、拆解、映射、兜底都在这里。

改知识改这里,不改代码、不发版。


症状 → 去哪查

先按症状定位,别通读。

用户说什么 / 看到什么读这个
贴了一条训练命令playbooks/parse.md
贴了一份模型 configplaybooks/new-model.md
OOM / 装不下playbooks/oom.md + knowledge/06-memory.md
比预期慢playbooks/slow.md
快得离谱 / 数字好得不真实⚠️ knowledge/02-silent-failures.md 优先
「换了 kernel 之后…」knowledge/11-tokamax-vs-native.md
「要不要开 XX 分片 / QAG」knowledge/04-sharding.md
「量化怎么配 / scale 用哪种」knowledge/05-quantization.md
profile 数字对不上 / 占比离谱knowledge/08-profiling.md
「这个改动会不会改变数值」knowledge/09-verification.md
编译器报了没见过的错playbooks/unknown.md
要报一个吞吐数字knowledge/10-baselines.md(对一下有没有作废)

最高优先级的一条:只要用户说「快了很多」「提升 XX%」, 先怀疑漏算,再庆祝 —— 这两天最贵的教训就在这。


一条工作法

不要看配置,要看行为。 配置说「我开了 X」,行为说「实际走了 Y」—— 这两天所有的坑都出在这个缝里。给结论之前,先想「我怎么知道它真的这么做了」。

三条硬约束

  1. 确定性优先。 能用 scripts/extract.py 抽出来的字段,不要自己读日志猜。
  2. 输出走契约。 每个场景的 JSON schema 在 prompts/,前端直接渲染, 不要返回自由文本(除非是 ask 这种纯对话场景)。
  3. 每个数字标出处 + 标置信度。 「实测 64 芯片 v7」比「据说更快」有用一百倍。 没有出处的数字不要写进结论;🔴 级的数字要主动提醒「你的环境要重测」。

工具

脚本干什么
scripts/submit.sh <config.json>下发一次 AOT(docker,CPU),返回 run_id
scripts/collect.sh <run_id>采集 stdout / HLO / LLO 到工作目录
scripts/extract.py <run_id>从产物抽结构化字段:显存、编译时间、代码路径、集合通信清单
scripts/lint.py <config.json>跑 rules/ 里的静态规则,不需要编译

典型链路:lint.py →(无 fatal 才)submit.sh → collect.sh → extract.py → 按 prompts/ 组织输出。


领域知识

引用任何数字之前先看 knowledge/00-scope.md —— 分清🟢机制 / 🟡规律 / 🔴数字, 说话时把级别带上。索引见 knowledge/README.md。

判断时最常用的五条,其余按症状表去查:

  1. v7 是 2 device/chip —— tpu7x-128 = 64 芯片,最常见的规模误判
  2. AOT 对显存逐位准确(两次独立验证)→ 显存问题一律先问 AOT,不占卡
  3. 算子报的算力超过硬件峰值就是假的 —— 那个数来自手写的成本估算,不看实际激活行数
  4. 默认 native、不开专家维分片 —— 同时避开漏算与通信藏不住两个坑
  5. 主权重永远 fp32;不做跨卡量化收集就必须用动态 scale

复利:每踩一个新坑就沉淀一条

新坑 → playbooks/unknown.md → 候选规则(prompts/propose_rule.json)
     → 人工确认 → 规则库 → 下次自动拦住

判断值不值得沉淀:看它是不是静默的。 报错的坑看一眼就知道,静默的坑要花几天 —— 那种才值得写进来。

维护规矩见 knowledge/99-maintenance.md。

兜底原则

遇到 knowledge/ 里没有的情况:

  1. 读原始日志,不要猜
  2. 给结论时明确标注置信度,区分「实测过的」和「推断的」
  3. 产出一条候选 lint 规则(prompts/propose_rule.json 的格式), 人工确认后进规则库 —— 这样每踩一个新坑,下次就自动拦住

反面清单

  • ❌ 不预测吞吐。AOT 没有实测时间,任何 TFLOP/s 都是猜的
  • ❌ 不替代真机数值验证。数值等价性要看 logits 上的 KL
  • ❌ 不静默改写用户的配置。任何自动补全都要标出来让用户确认
  • ❌ 不用短程 loss 判断分片改动对不对 —— 前十步模型在学词频先验,测不出来

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.