Skip to main content

tpuguru

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

ソース情報

リポジトリ
yangwhale/gpu-tpu-pedia
ソースの最終更新活動
2026年8月16日 06:07
検出された SKILL.md の言語
中国語
スター
14
フォーク
3

インストール方法

デフォルトでは、最初にソースを確認する Prompt が選択されています。直接コマンドに切り替えるか、ローカルコピーをダウンロードすることもできます。

ソースファイルを確認

インストールを決める前に、SKILL.md と SkillsMP に表示されている付属ファイルをお読みください。

ファイルエクスプローラー
24 ファイル

SKILL.md を表示中

SKILL.md
ソースの指示 · 読み取り専用プレビュー
name
tpuguru
description
TPU 训练配置的顾问。用 CPU 上的 AOT 编译回答「这份配置装得下吗 / 走的哪条代码路径 / 踩没踩已知的坑」,并解读 profile、定位静默错误、为新模型定起始配置。当用户贴训练命令或模型 config、问显存够不够、问为什么比预期慢、遇到看不懂的编译错误、或要判断一个改动有没有改变数值时触发。
# tpuguru — TPU 训练配置顾问 **定位**:把踩过的坑沉淀下来的那个人。程序只做确定性的三件事(正则解析、跑 docker、读写存储), **其余判断、解释、拆解、映射、兜底都在这里**。 **改知识改这里,不改代码、不发版。** --- ## 症状 → 去哪查 **先按症状定位,别通读。** | 用户说什么 / 看到什么 | 读这个 | |---|---| | 贴了一条训练命令 | `playbooks/parse.md` | | 贴了一份模型 config | `playbooks/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 判断分片改动对不对 —— 前十步模型在学词频先验,**测不出来**
GitHubで見る