chore(pricing): update RTX PRO 6000 hyperscaler and neocloud $/GPU/hr / 更新 RTX PRO 6000 hyperscaler 与 neocloud 每 GPU 小时单价 - #651
Merged
Conversation
Refresh the RTX PRO 6000 Blackwell Server Edition rental rates in HW_REGISTRY from the SemiAnalysis AI Cloud TCO model: - hyperscaler (costh): $0.43 -> $0.677 /GPU/hr - neocloud (costn): $0.676 -> $0.746 /GPU/hr These feed every cost-per-million-token metric (y_costh / y_costn) in the inference chart, throughput calculator, per-dollar compare pages, and the tco-feed API. The 3-year rental tier (costr) is unchanged. 中文:更新 RTX PRO 6000 Blackwell Server Edition 在 HW_REGISTRY 中的租用 单价(数据来自 SemiAnalysis AI Cloud TCO 模型):hyperscaler(costh)由 $0.43 调整为 $0.677 /GPU/hr,neocloud(costn)由 $0.676 调整为 $0.746 /GPU/hr。这两个值会影响推理图表、吞吐量计算器、每美元性能对比页面以及 tco-feed API 中所有的每百万 token 成本指标。3 年租赁层级(costr)保持不变。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
This comment has been minimized.
This comment has been minimized.
PR #650 made a non-disaggregated multi-node deployment its own serving series, so the GB300 fixture's single-node (45 tok/s/user) and multi-node aggregate (60 tok/s/user) points no longer blend into one curve and DeepSeek-V4-Pro's GB300 cell has no read at @50. That PR updated overview-data.test.ts but not overview.cy.ts, which still expected the old interpolated ≈$1.19 estimate — six Overview specs have been failing on master since it merged (they fail on any PR that touches packages/app, including this one). Point the estimate, evidence-date, cost-delta, mobile, and Chinese-sibling assertions at cells that still carry a read (B200 ≈$0.89, GB200 +71%) and assert the new GB300 outcome explicitly: a missing cell titled "no exact @50 result" with no evidence date and no delta badge. Coverage of the ≈-estimate rendering, including the zh sr-only text, is preserved. The GB200 badge saturates the alpha ramp at 0.40, which the browser re-serializes as 0.4, so that assertion reads the computed background color instead of the inline style attribute. 中文:PR #650 将非分离式多节点部署独立为单独的服务序列,因此 GB300 夹具中 的单节点点位(45 tok/s/用户)与多节点聚合点位(60 tok/s/用户)不再合并为 一条曲线,DeepSeek-V4-Pro 的 GB300 单元格在 @50 档位下没有结果。该 PR 更新 了 overview-data.test.ts,但未同步 overview.cy.ts,后者仍期望旧的插值估算值 ≈$1.19——自其合并以来,master 上已有 6 个 Overview 用例持续失败(任何改动 packages/app 的 PR 都会触发,包括本 PR)。 现将估算值、证据日期、成本差异、移动端与中文页面的断言改为指向仍有结果的 单元格(B200 ≈$0.89、GB200 +71%),并显式断言 GB300 的新表现:标题为 「no exact @50 result」的缺失单元格,且没有证据日期与差异标签。≈ 估算值的 渲染覆盖(含中文 sr-only 文案)保持不变。GB200 的色阶徽章 alpha 值达到上限 0.40,浏览器会将其重新序列化为 0.4,因此该断言改为读取计算后的背景色而非 内联 style 属性。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
aistackdev
added a commit
to vngcloud/InferenceX-app
that referenced
this pull request
Aug 14, 2026
…er (#19) * feat(gpu): support RTX PRO 6000 Blackwell benchmark data (SemiAnalysisAI#618) * fix(overview): clarify platform result coverage / 修正总览页的平台结果覆盖 (SemiAnalysisAI#621) * fix(overview): clarify cross-platform result coverage Add engine scope selection and select each platform independently using speculative FP4 → speculative FP8 → standard FP4 → standard FP8. Represent the page as one ordered platform matrix, normalize only disaggregated throughput across all deployed prefill and decode GPUs, and mark true between-run estimates with ≈ while preserving localized evidence links. 中文:增加引擎范围筛选,并按照推测解码 FP4 → 推测解码 FP8 → 标准解码 FP4 → 标准解码 FP8 的顺序独立选择各平台结果。将页面数据收敛为统一的平台矩阵,仅对分离式推理按全部预填充与解码 GPU 归一化吞吐量;运行点之间的估算值以 ≈ 标记,并保留本地化证据链接。 * feat(overview): show cost per Mtok with color-graded B200 deltas, default to community engines * refactor(overview): continuous cost-delta shade ramp with neutral band * fix(overview): label B200 as cost baseline and stop badge/date overlap * feat(overview): reference-column layout, compressed copy, mobile two-tier cards * fix(overview): stop cost text overlapping delta badge in narrow desktop columns * fix(overview): refine responsive comparison layout / 优化总览页响应式对比布局 (SemiAnalysisAI#622) * fix(overview): restore full engine scope labels * fix(overview): move evidence date into metadata row so the matrix fits without clipping * fix(overview): compress cell spacing so the full matrix fits at 1280px * fix(overview): loosen row spacing and de-emphasize cell metadata * fix(overview): improve configuration metadata readability Increase configuration metadata from 10px to 11px while preserving its subdued visual hierarchy. Add an E2E regression assertion for the rendered font size. 中文:将配置元数据字号从 10px 提升到 11px,同时保持弱化的信息层级;新增 E2E 回归断言验证实际渲染字号。 * fix(overview): simplify phone comparison layout Render platforms as compact aligned rows below 640px while preserving the two-plus-three tablet grouping and the desktop matrix. Add responsive geometry coverage for 320px, 390px, and 768px viewports. 中文:在 640px 以下将平台结果渲染为紧凑对齐行,同时保留平板端的两加三分组和桌面矩阵;新增 320px、390px 与 768px 的响应式几何回归测试。 * fix(overview): unify phone and tablet comparison rows Use the same five-row platform layout below the desktop breakpoint and keep cost deltas beside their values with typographic baseline alignment. Add responsive regression coverage across phone and tablet widths. 中文:统一总览页手机和平板的五行平台布局,并将成本差值紧邻数值、按文字基线对齐。补充覆盖手机和平板宽度的响应式回归测试。 * chore(specs): set real RTX PRO 6000 all-in power and cost tiers (SemiAnalysisAI#627) Replace the 9.99 placeholders in HW_REGISTRY with the official values from the SemiAnalysis AI Cloud TCO model: - All-in power: 0.975 kW/GPU - Owning - Hyperscaler (costh): $0.43/GPU/hr - Owning - Neocloud Giant (costn): $0.676/GPU/hr - 3 Year Rental (costr): $0.52/GPU/hr $/token and per-MW metrics for this SKU are now meaningful. 中文:将 HW_REGISTRY 中 RTX PRO 6000 的 9.99 占位值替换为 SemiAnalysis AI Cloud TCO 模型的正式数值:整机功耗 0.975 kW/GPU;自有 - Hyperscaler $0.43/GPU/hr;自有 - Neocloud Giant $0.676/GPU/hr;3 年租赁 $0.52/GPU/hr。 该 SKU 的 $/token 与每 MW 指标自此有效。 Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * chore: bump deps (SemiAnalysisAI#626) * chore: bump workspace dependencies and security pins 中文:更新工作区依赖与安全版本约束 * chore: clarify security pins and test names 中文:澄清安全版本约束与测试名称 * chore: use cross-env for unit tests * chore: clarify reload test setup * test: assert chunk listener installation * test: isolate local storage setup * test: harden chunk recovery assertions * ci: remove workflow cache warnings / CI:消除工作流缓存警告 (SemiAnalysisAI#628) * ci: remove workflow cache warnings * ci: serialize pnpm cache writes * ci: prevent Cypress cache races * Migrate workspace tooling from pnpm to Bun / 将工作区工具链从 pnpm 迁移到 Bun (SemiAnalysisAI#630) * chore: migrate workspace tooling to bun 中文:将工作区工具链迁移至 Bun,并同步更新 CI、脚本、依赖锁文件和开发文档。 * fix: bound Bun JSON decompression memory 中文:限制 Bun JSON 解压缩的内存占用,并对大型指标产物使用流式解析。 * feat(calculator): show unofficial-run overlays in the TCO calculator / 在 TCO 计算器中显示非官方运行叠加数据 (SemiAnalysisAI#631) * feat(calculator): show unofficial-run overlays in the TCO calculator A run loaded via `?unofficialrun=<id>` now contributes an extra bar per (hardware × run) to the calculator's bar chart, in the run's palette color and labeled `B300 (✕ my-branch)`, so the throughput / cost / tok-s-MW delta a branch produces at a target interactivity is readable without leaving the tab. Overlay results are interpolated separately from official ones — folding them into the official Pareto frontier would silently move the official numbers and hide the before/after delta. Both paths share one row → GPUDataPoint mapper (`buildGpuGroups`) so an overlay bar and its official twin can't drift apart. Only the bar chart and its legend consume overlay data. The table view, CSV export, and fleet planner stay official-only: an exported sheet or an MW projection that blends in numbers from an unmerged branch is worse than one that omits them. 中文:在 TCO 计算器中支持非官方运行(unofficial run)叠加显示。 通过 `?unofficialrun=<id>` 加载运行后,柱状图会为每个(硬件 × 运行)组合额外 绘制一根柱子,使用该运行的调色板颜色,并标注为 `B300 (✕ my-branch)`,从而无需 离开该标签页即可读出分支在目标交互性下带来的吞吐量 / 成本 / tok/s/MW 差异。 要点: - 叠加数据独立插值,不并入官方 Pareto 前沿——否则官方数值会被悄然改变, 且看不出改动前后的差异;两条路径共用同一个 row → GPUDataPoint 映射函数 (`buildGpuGroups`),确保叠加柱与其官方对应柱不会因映射漂移而不一致。 - 仅图表与图例消费叠加数据;表格视图、CSV 导出和 Fleet Planner 保持仅官方数据, 避免导出的表格或兆瓦(MW)规划中混入未合并分支的数值。 - 图例合并了仅存在于该运行中的硬件,切换硬件会同步到共享的 `activeOverlayHwTypes`,一次点击即可同时隐藏该 GPU 的官方柱与叠加柱。 * fix(calculator): make one legend the sole owner of overlay visibility Addresses both Bugbot findings, which share a root cause: overlay bars were gated on the provider's shared `activeOverlayHwTypes` while official bars were gated on the local `visibleHwKeys`. Two backing sets behind one legend can only drift, and every way they drift renders a legend entry that contradicts the bar beside it: - the reset effect reseeds `visibleHwKeys` when the available hardware changes but (rightly) does not reseed a set two other tabs share, so a GPU hidden before a model/sequence switch came back "active" in the legend with its overlay bar still hidden; - the inference or evaluation tab re-enabling a GPU resurrected its calculator overlay bar while this tab's legend still marked it inactive. `visibleHwKeys` is now the single source of truth for both series, and the mirror into the shared set is gone. Per-tab hardware visibility is already how the calculator treats official data, so the overlay series just follows the same rule. Adds a regression e2e case that fails on the previous commit: hide a GPU, switch sequence and back, expect every bar to return. 中文:让单一图例成为叠加可见性的唯一来源。 修复 Bugbot 报告的两个问题,二者根因相同:叠加柱由 Provider 共享的 `activeOverlayHwTypes` 控制,而官方柱由本地的 `visibleHwKeys` 控制。同一个图例 背后存在两套状态集合,必然会不同步,且每种不同步都会导致图例条目的状态与旁边的 柱子自相矛盾: - 可用硬件变化时,重置逻辑会重新填充 `visibleHwKeys`,但(合理地)不会重置由 另外两个标签页共享的集合。因此在切换模型/序列前隐藏的 GPU,切换后在图例中 重新显示为激活状态,其叠加柱却仍被此前的筛选隐藏; - 在推理或评估标签页重新启用某个 GPU,会让计算器中对应的叠加柱重新出现,而本 标签页的图例仍将其标记为未激活。 现在 `visibleHwKeys` 是两个系列的唯一真实来源,已移除向共享集合的同步写入。 按标签页隔离硬件可见性本就是计算器处理官方数据的方式,叠加系列沿用同一规则。 新增一个回归 e2e 用例(在上一个提交上会失败):隐藏某个 GPU,切换序列后再切回, 断言所有柱子都恢复显示。 * fix(calculator): escape untrusted tooltip text, disclose clamped values Two findings from the second Bugbot pass. Escaping: the bar tooltip is built as an HTML string and injected with .html(). Overlay branch names and run URLs come from the GitHub API for whatever run id the user pasted into `?unofficialrun=`, and git permits `<` and `>` in a ref name, so a crafted branch could inject markup on hover. Adds `escapeHtml` in lib/utils and applies it to every value in that tooltip that this codebase did not author. Clamping: `interpolateForGPU` clamps the target into each series' own range and always returns a value, so a bar can show its nearest edge point as if it were measured at the current target. That was already possible across GPUs with different ranges; widening the slider to cover overlay operating points makes it reachable for every official bar at once, which turns a side-by-side overlay delta into a real-vs-clamped comparison. Rather than narrow the slider (which only moves the clamping onto the overlay bars, and breaks the case where a model exists only in the run), the result now carries a `clamped` flag and the tooltip says so. 中文:转义 tooltip 中的不可信文本,并标注被钳制(clamped)的数值。 修复 Bugbot 第二轮审查提出的两个问题。 转义:柱状图 tooltip 以 HTML 字符串构建并通过 .html() 注入。叠加运行的分支名和 运行 URL 来自 GitHub API(对应用户在 `?unofficialrun=` 中粘贴的任意运行 ID), 而 git 允许分支名包含 `<` 和 `>`,因此精心构造的分支名可在悬停时注入标记。现在 在 lib/utils 中新增 `escapeHtml`,并将其应用于该 tooltip 中所有非本代码库生成 的值。 钳制:`interpolateForGPU` 会把目标值钳制到各序列自身的范围内并始终返回结果, 因此柱子可能展示其最近的边缘数据点,却看起来像是在当前目标下实测所得。这在不同 量程的 GPU 之间本就可能发生;而将滑块范围扩展到覆盖叠加数据的工作点后,所有官方 柱子可能同时进入该状态,使并排的叠加对比变成"实测值 vs 钳制值"的比较。相比收窄 滑块范围(那只会把钳制转移到叠加柱上,并且会破坏"模型仅存在于该运行中"的场景), 现在结果携带 `clamped` 标志,并在 tooltip 中明确提示。 * fix(calculator): keep GPU filters across overlay arrival, exempt run legend rows Two findings from the third Bugbot pass. Filter wipe: the legend reset effect keyed on the merged official+overlay hardware list. An unofficial run is fetched separately and usually resolves after the benchmarks, so when it landed and added overlay-only hardware the effect reseeded and wiped GPU filters the user had already set. The reset now keys on the official list only — reseeding on a user-driven model/sequence/ precision change is intentional, reseeding on async overlay arrival is not — and overlay hardware appearing or leaving is applied additively, with a guard so dismissing a run can't leave an empty chart. Legend guard: unofficial-run legend entries are labels, not series — always active, with nothing to remove. They were inflating ChartLegend's active count, which is what stops the hide control emptying the chart, so a user could remove the last real GPU; and the hide control on a run entry called removeGpu with an `overlay-run-*` key and did nothing. Adds an opt-out (`isRemovable`, default true, so no other tab changes) and sets it on those entries. 中文:叠加数据到达时保留 GPU 筛选,并将运行图例条目排除在移除逻辑之外。 修复 Bugbot 第三轮审查提出的两个问题。 筛选被清空:图例重置逻辑此前基于"官方 + 叠加"合并后的硬件列表。非官方运行是 单独拉取的,通常在基准数据之后才返回,因此当它带来仅存在于叠加数据中的硬件时, 重置逻辑会重新填充并清空用户已设置的 GPU 筛选。现在重置仅基于官方列表——用户 主动切换模型/序列/精度时重置是符合预期的,而因叠加数据异步到达而重置则不是; 叠加硬件的出现与消失改为增量应用,并加入保护逻辑,确保移除运行后图表不会变空。 图例保护:非官方运行的图例条目是标签而非数据系列——始终处于激活状态,也没有可 移除的内容。它们此前会虚增 ChartLegend 的激活计数(该计数用于防止隐藏控件把图表 清空),导致用户可以移除最后一个真实 GPU;而点击运行条目上的隐藏控件会以 `overlay-run-*` 键调用 removeGpu,实际不产生任何效果。现在新增 `isRemovable` 选项(默认 true,因此其他标签页行为不变),并在这些条目上设为 false。 * fix(calculator): clear stale hardware when a selection has no official data Fourth Bugbot pass. The legend reset effect bailed out whenever the official hardware list was empty, treating "no official data for this selection" as "still loading". But an empty official list is a real state — it is exactly the "this model/sequence exists only in the unofficial run" case this feature is for. The previous selection's official keys stayed in `visibleHwKeys` and `prevAvailableKeyRef` went un-updated, so the solo/show-all arithmetic in `toggleGpuVisibility` counted hardware that isn't on the chart and a hide click removed a GPU instead of soloing it. The guard now tests the merged list (nothing to seed from at all) while the change detection still keys on the official list, so late overlay arrival still does not wipe filters. `toggleGpuVisibility` additionally counts visible keys against the legend rather than the raw set size, so no stale entry can skew it again. 中文:当某个选择没有官方数据时,清除残留的硬件选中状态。 Bugbot 第四轮审查。图例重置逻辑此前在官方硬件列表为空时直接返回,把"该选择没有 官方数据"当成了"仍在加载"。但官方列表为空是一个真实状态——正是本功能所针对的 "该模型/序列仅存在于非官方运行中"的场景。上一次选择的官方键会残留在 `visibleHwKeys` 中,`prevAvailableKeyRef` 也不会更新,导致 `toggleGpuVisibility` 中的 solo / 显示全部逻辑把图表上并不存在的硬件计算在内,点击隐藏时变成移除某个 GPU 而非将其单独显示。 现在守卫条件改为检查合并后的列表(即完全没有可用于初始化的数据),而变更检测仍 基于官方列表,因此叠加数据延迟到达时依然不会清空筛选。此外, `toggleGpuVisibility` 改为对照图例统计可见键,而不是使用集合本身的大小,避免任何 残留条目再次干扰该逻辑。 * docs(calculator): record the overlay behavior added during review The overlay section was written against the first design and never caught up with the fixes that followed: legend seeding (reset keyed on the official list, overlay applied additively, and why the early-out guards the merged list), `isRemovable` on run legend entries, the `clamped` tooltip disclosure, and tooltip escaping. 中文:补充审查过程中新增的叠加显示行为文档。 叠加显示章节此前基于最初的设计撰写,未同步后续修复内容:图例初始化(重置基于 官方列表、叠加数据增量应用,以及提前返回为何要检查合并后的列表)、运行图例条目 上的 `isRemovable`、tooltip 中的 `clamped` 提示,以及 tooltip 转义。 * fix(calculator): don't blank the chart on an overlay-only selection Fifth Bugbot pass. The additive overlay effect's "never strand an empty chart" fallback reached for the official hardware list — which is empty precisely on an overlay-only selection, so it produced an empty set and filtered out overlay bars that still had data. The official-list reset could not recover it either, because that list stays empty across the change and so never reseeds. The fallback now reaches for everything that still has data, official and overlay. The reset key is also no longer the official hardware list alone. It is now the user's actual selection (model, sequence, precisions, run date) plus that list, so an overlay-only model or sequence change reseeds like any other selection change, while a late run arrival — which changes none of those — still does not wipe the user's filters. 中文:在仅有叠加数据的选择下不要清空图表。 Bugbot 第五轮审查。增量叠加逻辑中"避免图表为空"的兜底方案此前取用官方硬件列表, 而在仅有叠加数据的选择下该列表恰好为空,于是得到空集合,把仍有数据的叠加柱全部 过滤掉。基于官方列表的重置逻辑也无法恢复:该列表在此变化过程中始终为空,因此 永远不会触发重新填充。现在兜底方案会取用所有仍有数据的硬件,涵盖官方与叠加两类。 重置逻辑的判定键也不再仅依赖官方硬件列表,而是改为用户的实际选择(模型、序列、 精度、运行日期)加上该列表。这样一来,仅有叠加数据的模型或序列切换会像其他选择 变更一样触发重置,而运行数据延迟到达(不改变上述任何一项)时仍不会清空用户筛选。 * feat(blog): port Vera Rubin NVL72 vs GB200 NVL72 inference article from Substack / 移植 Vera Rubin NVL72 对比 GB200 NVL72 推理文章 (SemiAnalysisAI#629) * feat(blog): port Vera Rubin NVL72 vs GB200 NVL72 inference TCO & architecture article from Substack Republish the 2026-07-23 SemiAnalysis newsletter article on the InferenceX blog with 26 locally hosted images, a Simplified Chinese translation, and FAQ structured data. The subscriber-only tail (MI355X comparison, Rubin software analysis) is behind the paywall and is replaced by a pointer to the subscriber edition. 中文:将 2026-07-23 发布于 SemiAnalysis 通讯的《Vera Rubin NVL72 对比 GB200 NVL72?推理 TCO 与架构分析》一文移植到 InferenceX 博客,包含 26 张 本地托管图片、简体中文翻译及 FAQ 结构化数据。付费墙之后的内容(MI355X 对比、Rubin 软件分析)未包含,文末以订阅版链接代替。 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * test(glossary): cite the Vera Rubin NVL72 article from relevant glossary entries The glossary completeness test requires every blog post to be referenced by at least one glossary entry. Add the new post to the entries it is genuinely relevant to: total-cost-of-ownership, tokens-per-megawatt, and nvlink. 中文:术语表完整性测试要求每篇博客文章至少被一个术语条目引用。将新文章 添加到与其真正相关的条目中:total-cost-of-ownership(总拥有成本)、 tokens-per-megawatt(每兆瓦 token 数)和 nvlink。 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> --------- Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * fix(inference): default DeepSeek V4 agentic charts to vLLM (SemiAnalysisAI#632) Prefer vLLM when an official DeepSeek-V4-Pro Agentic Traces chart first resolves a cross-engine conflict, while preserving explicit sticky selections and unofficial preview behavior.\n\n中文:DeepSeek-V4-Pro Agentic Traces 官方图表首次处理跨引擎冲突时默认选择 vLLM,同时保留用户已选择的引擎及非官方预览行为。 * feat(models): add Kimi-K3 as its own model bucket / 新增 Kimi-K3 独立模型分桶 (SemiAnalysisAI#633) * feat(models): add Kimi-K3 as its own model bucket Kimi K3 (moonshotai/Kimi-K3) is a new 2.8T total / 104B active architecture built on Kimi Delta Attention (KDA) + gated MLA — not a K2 point release — so it gets its own DB bucket, dropdown option, and compare slug instead of joining the K2.5/K2.6/K2.7-Code grouping. Source: InferenceX run 30298924344 (kimik3, fp4, vLLM, MI355X, agentic traces). - DB_MODEL_TO_DISPLAY: `kimik3` -> `Kimi-K3`; MODEL_TO_KEY: `moonshotai/Kimi-K3`. The `kimik3` prefix matches the DB key, so precision-suffixed forms (`kimik3-fp4`) fold in without an alias. - Model enum + MODEL_CONFIG entry ("Kimi K3 2.8T", default category). - Compare slug `kimi-k3` (dbKeys `['kimik3']`), added to KNOWN_MODELS. The bare `kimi` alias stays on the K2 series, matching how `minimax` stayed on M2 when M3 landed. - Architecture diagram entry from the HF config.json + model card, plus a new `alternatingAttentionExpandable` flag: K3's hybrid is KDA + gated MLA, so its alternating blocks must not open DeepSeek V4's CSA/HCA local-vs-compressed drill-down (or its union-softmax caption). V4 keeps that drill-down, which its existing `attentionExpandable: false` does not govern. 中文:新增 Kimi-K3 独立模型。Kimi K3(moonshotai/Kimi-K3)是基于 Kimi Delta Attention(KDA)与 gated MLA 的全新架构(2.8T 总参数 / 104B 激活参数),并非 K2 的 小版本更新,因此单独建立 DB bucket、下拉选项和 compare slug,而不并入 K2.5/K2.6/K2.7-Code 分组;数据来源为 InferenceX run 30298924344(MI355X 上的 kimik3 fp4 vLLM agentic traces 基准测试)。`kimik3` 前缀与 DB key 一致,带精度后缀 的写法(`kimik3-fp4`)无需额外 alias 即可归并。compare 页新增 `kimi-k3` slug,裸 `kimi` alias 仍指向 K2 系列,与 M3 上线时 `minimax` 保持指向 M2 的处理一致。架构 图新增 `alternatingAttentionExpandable` 标志:K3 的混合注意力由 KDA 与 gated MLA 组成,其交替层模块不应展开 DeepSeek V4 的 CSA/HCA 下钻视图及对应说明文字,而 V4 仍保留该下钻(其已有的 `attentionExpandable: false` 并不控制这一路径)。 * fix(models): correct Kimi-K3 layer/expert accounting and fixture-gated tests Addresses the three Cursor Bugbot findings on the K3 architecture entry and the two e2e regressions the first commit introduced. - Dense layer was double-counted: the diagram stacks the dense-FFN prefix above both alternating blocks, so 69 KDA + 24 MLA + 1 dense rendered 94 badges for a 93-layer model. Layer 1 is a KDA layer *and* the dense layer, so it is carved out of the KDA count (68 + 24 + 1), the same partition DeepSeek V4 uses for its hash-routed prefix. A new suite-wide invariant test asserts stacked blocks never exceed numLayers for any model. - Expert grid assumed a single shared expert: `drawExpertGrid` subtracted 1 unconditionally, so K3 read "897 routed + 1 shared" against a model card that says 896 + 2. Added `sharedExperts` (defaults to 1) and moved the router label into an exported `expertRouterSummary` so it is unit-testable. Output is unchanged for every existing model. - Alternation caption hardcoded "alternating every layer", which is only true of a 1:1 interleave. Added `alternatingNote`; K3 reads "gated MLA every 4th layer" and gpt-oss / V4 keep the default. Test fixes: - overview.cy.ts asserted 5 matrix rows. K3 is a default-category model, and the overview renders one row per DEFAULT_MODELS entry, so there are 6 — with K3 collapsing to a coverage note (no fixture rows) exactly like GLM5.2. - The K3 architecture e2e picked the model from the dropdown, which only lists models that have availability rows; the shared fixtures have none for kimik3. It now injects one availability row and visits `?g_model=Kimi-K3` directly. 中文:修正 Kimi-K3 的层数与专家数统计,并修复测试。(1)dense 层被重复计数:架构图 会在两个交替层模块之上再堆叠 dense 前缀模块,69 KDA + 24 MLA + 1 dense 会为 93 层 的模型渲染出 94 层徽章;第 1 层既是 KDA 层也是 dense 层,因此从 KDA 计数中扣除 (68 + 24 + 1),与 DeepSeek V4 处理 hash-routed 前缀的方式一致,并新增覆盖全部模型 的不变量测试。(2)专家网格默认只有 1 个共享专家:`drawExpertGrid` 固定减 1,导致 K3 显示为「897 routed + 1 shared」,与模型卡的 896 + 2 不符;新增 `sharedExperts` 字段 (默认为 1),并将路由标签抽取为可单元测试的 `expertRouterSummary`,其余模型输出保持 不变。(3)交替层说明文字固定为「alternating every layer」,仅适用于 1:1 交替;新增 `alternatingNote`,K3 显示「gated MLA every 4th layer」,gpt-oss 与 V4 维持默认。 测试修复:overview.cy.ts 原本断言 5 行矩阵,K3 属于 default 类别、overview 按 DEFAULT_MODELS 每个模型渲染一行,因此应为 6 行(K3 无 fixture 数据,与 GLM5.2 一样 折叠为覆盖率提示);K3 架构图 e2e 原本从下拉框选择模型,而下拉框只列出有 availability 数据的模型,共享 fixture 中没有 kimik3,现改为注入一条 availability 记录并直接访问 `?g_model=Kimi-K3`。 * test(agentic): update cross-engine resolution expectation to the vLLM default Pre-existing failure on master, not introduced by this branch: PR SemiAnalysisAI#632 made official DeepSeek-V4-Pro Agentic Traces charts prefer vLLM when they first resolve a cross-engine conflict with no sticky selection, but did not update `gpu-compare-agentic-detail.cy.ts`, which still asserted the previous alphabetically-first winner (SGLang). Verified against a local E2E_FIXTURES build: the toast renders and reads "Kept vLLM and removed SGLang configs", with the selector on "B200 (vLLM)". The original error read "element never found" only because the toast auto-dismisses while the stale text assertion retries for 6s. 中文:修正跨引擎冲突解析的测试预期。该失败在 master 上已存在,并非本分支引入:PR SemiAnalysisAI#632 让官方 DeepSeek-V4-Pro Agentic Traces 图表在首次解析跨引擎冲突且无用户已选引擎时默认 选择 vLLM,但未同步更新 `gpu-compare-agentic-detail.cy.ts`,该用例仍断言此前按字母序 选出的 SGLang。已在本地 E2E_FIXTURES 构建中确认:提示条实际显示「Kept vLLM and removed SGLang configs」,选择器显示「B200 (vLLM)」;原报错之所以是「找不到元素」,是因为过期的 文本断言重试 6 秒期间提示条已自动消失。 * fix(architecture): use the model's shared-expert count in the specs bar too Follow-up to 48a014e, which routed the expert-grid subtitle through `sharedExpertCount` but left two other call sites assuming a single shared expert. The Experts figure in the specs bar rendered Kimi K3 as `16+1/898` instead of `16+2/898`, contradicting the router line right below it. Both remaining sites now read the count from the model: the specs bar and the hash-routed prefix router (DeepSeek V4, count 1 — output unchanged). The K3 e2e asserts the specs-bar figure alongside the router string. 中文:specs bar 同样改用模型自身的共享专家数。48a014e 已将专家网格副标题接入 `sharedExpertCount`,但仍有两处沿用「只有 1 个共享专家」的假设:specs bar 的 Experts 一栏把 Kimi K3 显示为 `16+1/898`(应为 `16+2/898`),与正下方的路由说明自相矛盾。现将 specs bar 与 hash-routed 前缀路由(DeepSeek V4,数量为 1,输出不变)两处都改为读取模型 自身的数量,并在 K3 的 e2e 中同时断言 specs bar 数值与路由字符串。 * fix(architecture): label K3's dense prefix and FFN activation from the model Two more Bugbot findings on the Kimi K3 diagram, both real: - The dense-FFN prefix block took its attention label from the model-wide `attentionType`, rendering "Hybrid Attention" for a block that is a KDA layer (config.json lists layer 1 under `kda_layers`), sitting next to correctly labelled KDA and gated-MLA blocks. Added `denseLayerAttentionLabel`, which falls back to the attention type for every uniform-attention model. - The expert-grid and FFN drill-downs hardcoded SwiGLU/SiLU, contradicting K3's own "SiTU-GLU Activation" feature badge (`hidden_act: "situ"`). Added `ffnVariant` / `ffnGateActivation`, defaulting to SwiGLU/SiLU so every other model's captions are unchanged, asserted across the registry in a unit test. The K3 e2e now covers the dense block's KDA label and the SiTU-GLU drill-down, and no longer breaks on retry: it expands the alternating block only when still collapsed, so a retry reports the assertion that actually failed instead of a missing expand handle. 中文:K3 的 dense 前缀模块与 FFN 激活函数改为按模型标注。Bugbot 又发现两个真实问题: (1)dense FFN 前缀模块沿用模型级 `attentionType`,为一个实为 KDA 层的模块渲染出 「Hybrid Attention」(config.json 将第 1 层列在 `kda_layers` 中),与旁边正确标注的 KDA、gated MLA 模块自相矛盾;新增 `denseLayerAttentionLabel`,对注意力机制统一的模型 仍回退到 attention type。(2)专家网格与 FFN 下钻视图固定写死 SwiGLU/SiLU,与 K3 自身的 「SiTU-GLU Activation」特性徽章冲突(`hidden_act: "situ"`);新增 `ffnVariant` / `ffnGateActivation`,默认值为 SwiGLU/SiLU,其余模型文案保持不变,并在单元测试中对全部 模型做了断言。K3 的 e2e 现已覆盖 dense 模块的 KDA 标签与 SiTU-GLU 下钻,并修复了重试 问题:仅在交替层模块仍处于折叠状态时才展开,使重试报告真正失败的断言而非缺失的展开控件。 * feat(inference): show pipeline parallelism (PP) in chart labels and tooltips (SemiAnalysisAI#634) Artifacts from PP deployments (e.g. run 30314948116, Kimi-K3 TP8 PP2 on B200 DGXC) emit prefill_pp/decode_pp, but the frontend ignored them: the chart point label read "1xTP8+0xTP0" and tooltips showed no PP anywhere. - parallelism-label: configSegmentLabel takes an optional pp and appends a "PP{n}" suffix only when pp > 1 (pp 0/1 renders nothing, keeping all existing labels byte-identical). Multinode-disagg labels drop a role whose pool doesn't exist (0 workers AND tp 0), so prefill-only agentic runs read "TP8PP2" instead of "1xTP8+0xTP0". - data flow: pp has no configs-table column — the ingest mapper already auto-captures prefill_pp/decode_pp into the metrics JSONB for both DB rows and live-transformed ?unofficialrun= overlay rows, so rowToAggDataEntry surfaces pp/prefill_pp/decode_pp from metrics and the new keys (plus dcp/pcp sizes) are documented in METRIC_KEYS. - total GPUs: createChartDataPoint folds pp into the aggregated-row GPU count (tp x pp); getPointLabel and the tooltip TP line switch to the raw decode_tp so a TP8 PP2 run doesn't mislabel as TP16. - tooltips: per-role "PP: n" in the prefill/decode lines and a "Pipeline Parallelism" line for aggregated rows, hidden when pp <= 1; the parallelism block is now locale-aware (zh) like the cache block. 中文:前端图表标签与提示框现在支持流水线并行(PP)。pp > 1 时配置标签追加 "PP{n}" 后缀(如 TP8PP2);pp 为 0/1 时不显示。多节点 disagg 标签在某一 角色池不存在(worker 数为 0 且 TP 为 0)时仅渲染有效一侧,避免出现 "1xTP8+0xTP0"。pp 从 metrics JSONB 读取(官方 DB 行与 ?unofficialrun= 覆盖行走同一路径),聚合行的总 GPU 数按 tp × pp 折算,提示框新增 PP 行, 并为并行配置块补充中文本地化。 Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * . (SemiAnalysisAI#637) * Fix DeepSeek V4 agentic calculator support / 修复 DeepSeek V4 智能体计算器支持 (SemiAnalysisAI#636) * Hide branded watermarks on unofficial domains / 在非官方域名隐藏品牌水印 (SemiAnalysisAI#635) * fix: hide branded watermarks on unofficial domains 中文:在非官方域名隐藏品牌水印,同时保留非官方运行警告水印。 * fix: prevent unofficial table watermark flash 中文:避免非官方域名的数据表格在 hydration 前短暂显示品牌水印。 * Show selected percentile in agentic x-axis titles for Interactivity / E2E Latency / 智能体场景 Interactivity 与 E2E Latency x 轴标题显示所选百分位 (SemiAnalysisAI#639) * fix(inference): show selected percentile in agentic Interactivity / E2E Latency x-axis labels On agentic scenarios the chart plots percentile fields (p75_intvty / p90_intvty, p75_e2el / p90_e2el), but the x-axis labels for the regular Interactivity and E2E Latency modes still rendered the raw config labels ("Interactivity (tok/s/user)", "End-to-end Latency (s)") because the agentic relabel only REPLACED an existing leading statistic word and the base config labels carry none. Extract the rewrite into applyAgenticPercentileToXLabel, which prefixes the selected percentile when absent and still replaces an existing prefix (TTFT override labels) without doubling. Fixed-seq labels are untouched (isAgentic guard), and the unofficial-run overlay path shares the same chartDefinition label so it is covered by the same fix. 中文:智能体(agentic)场景下图表绘制的是百分位字段(p75_intvty / p90_intvty、p75_e2el / p90_e2el),但常规 Interactivity 与 E2E Latency 模式的 x 轴标题仍显示原始配置标签,未带百分位前缀。本次将改写逻辑提取为 applyAgenticPercentileToXLabel:标签无统计词前缀时补上所选百分位,已有 前缀(如 TTFT 覆盖标签)时替换而不重复。固定序列场景标签保持不变; 非官方运行叠加路径复用同一 chartDefinition 标签,因此同样生效。 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * test(e2e): make agentic axis-label assertions independent of the default x-axis mode The agentic percentile axis-label assertions relied on Interactivity being the agentic default x-axis mode. A parallel change makes OSL / E2EL the agentic default, which would break these assertions on merge regardless of landing order. Click the Interactivity / E2E mode buttons explicitly before asserting labels, stub /api/v1/derived-agentic-metrics before the agentic visits (so a derived default mode never sits on its loading skeleton), and add the osl_per_e2el fields to the derived-metrics fixture. Fixed-seq default assertions are unchanged. 中文:智能体百分位轴标签断言此前依赖 Interactivity 作为智能体默认 x 轴模式;另一并行改动将默认模式改为 OSL / E2EL,无论合并顺序都会 使这些断言失效。现改为在断言前显式点击 Interactivity / E2E 模式按钮, 在访问智能体页面前 stub /api/v1/derived-agentic-metrics(避免派生 默认模式停留在加载骨架屏),并在派生指标 fixture 中补充 osl_per_e2el 字段。固定序列默认断言保持不变。 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> --------- Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * feat(landing): feature Kimi K3 on launch banner, modal, and first-look preset (SemiAnalysisAI#640) Retire the MiniMax M3 day-0 surfaces and point the landing banner and modal at /inference?preset=kimi-k3-launch, following the "Featuring a Day-0 Model" workflow in docs/adding-entities.md. New dismissal storage keys (inferencex-kimi-k3-{banner,modal}-dismissed) so users who dismissed the MiniMax M3 nudges still see the Kimi K3 ones; the minimax-m3-launch preset stays routable but hidden so existing links keep resolving. 中文:按照 docs/adding-entities.md 的 Day-0 模型推广流程,将首页横幅、弹窗 和"首发概览"预设切换为 Kimi K3。更换新的 dismissal 存储键,使此前关闭过 MiniMax M3 横幅/弹窗的用户仍能看到 Kimi K3 通知;旧的 minimax-m3-launch 预设保留为隐藏状态,保证既有链接继续可用。 Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * CollectiveX explorer backed by a lazy-ingest Neon database (SemiAnalysisAI#497) * . (SemiAnalysisAI#641) * feat(inference): explain offload halo in chart legends (SemiAnalysisAI#642) * fix(staging): preserve staged benchmark runs (SemiAnalysisAI#643) Keep normal staging ingests cumulative and expose an explicit manual reset that restores the Neon branch from production. Re-staging remains idempotent for the selected workflow run. 中文:修复预发布流程,使常规写入累积保留已发布的基准测试运行;仅在显式手动重置时从生产环境恢复 Neon 分支。重复发布同一工作流运行仍保持幂等更新。 * docs: remove temporary language override (SemiAnalysisAI#646) Restore the repository-wide bilingual contribution and website parity requirements. 中文:删除临时语言覆盖规则,恢复仓库范围内的双语贡献与网站同步要求。 * feat(overview): add scenario-aware comparisons / 添加场景感知对比 (SemiAnalysisAI#645) * feat(overview): add scenario-aware comparisons * fix(overview): address review feedback * fix(overview): restore Chinese feature parity Restore the Chinese landing CTAs, scenario-aware overview copy, and specific missing-result reasons after removing the temporary English-only override. 中文:恢复中文落地页入口、场景感知总览文案与具体缺失结果原因,确保删除临时仅英文覆盖规则后中英文功能保持一致。 * fix(overview): restore standard-decode fallback Prefer speculative FP4/FP8 per platform, then fall back to labelled standard FP4/FP8 results. Select AgentX only when a model has no single-turn 8K/1K rows.\n\n中文:各平台优先选择推测解码 FP4/FP8;缺失时回退到明确标注的标准解码 FP4/FP8。仅当模型没有单轮 8K/1K 数据时选择 AgentX。 * fix(db): honor explicit Dynamo disagg state (SemiAnalysisAI#648) Preserve explicit non-disaggregated Dynamo deployments while retaining legacy inference for missing fields and decode-worker topology. 中文:尊重 Dynamo 产物中明确的非分离式部署标记,同时对缺失字段和存在解码工作进程池的旧产物保留兼容推断。 * Remove Normalized E2E / Session Time / Prefill TPS x-axis modes / 移除 Normalized E2E、会话时长与 Prefill TPS X 轴模式 (SemiAnalysisAI#644) * feat(agentic): remove Normalized E2E / Session Time / Prefill TPS x-axis modes Retire the three experimental agentic x-axis modes and everything that existed solely to serve them, leaving Interactivity / E2E Latency / TTFT. - chart: drop the three mode buttons, DERIVED_X_MODE_SPECS and the derived-metric fetch/remap plumbing in ChartDisplay; the remaining modes apply to both scenario kinds, so the agentic-only button filter (and its `mounted` SSR guard) goes too - API/hook/db: delete /api/v1/derived-agentic-metrics, the useDerivedAgenticMetrics hook, and queries/derived-agentic-metrics.ts - aggregate_stats v6: drop normalizedSessionTimeS, p90PrefillTpsPerUser and normalizedE2e400; mergeProfileStatsUpgrade no longer carries them forward, and the backfill's profile-only fast path now covers every v3+ bundle instead of only v3 - drop the NORMALIZED_E2E_OUTPUT_TOKENS constant and the overlay suppression helper that existed only for Normalized E2E 中文:移除三个实验性智能体 X 轴模式(Normalized E2E、会话时长、 Prefill TPS / user)及其专属实现,仅保留交互性 / 端到端延迟 / TTFT。 同时删除对应的 API 路由、React Query hook 与数据库查询模块; aggregate_stats 升级至 v6,去掉三个已废弃字段,backfill 的 profile-only 快速路径扩展至所有 v3 及以上版本。 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * test(e2e): make the Interactivity percentile assertion self-contained The "switches back to Interactivity" test asserted a P75 axis label, but nothing in it selected p75 — it inherited the selector state from the Normalized E2E test that ran before it. Removing that test left the selector on p90 and the assertion failed. Assert P90 there (the default) and cover the p75 case in its own test that selects the percentile itself. 中文:「switches back to Interactivity」用例断言 P75 轴标签,但其自身 并未切换分位数,而是依赖此前 Normalized E2E 用例遗留的选择器状态。 该用例被移除后选择器停留在 p90,断言随之失败。现改为断言默认的 P90, 并将 p75 场景拆分为独立用例,由其自行切换分位数。 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> --------- Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * chore(db): purge run 30405836523 (Kimi-K3 B300 AgentX non-DSpark) (SemiAnalysisAI#649) Add GitHub workflow run 30405836523 to PURGED_RUNS so ingest skips it and db:apply-overrides deletes its rows. The run is the ingest source run for PR #2397 (kimik3-fp4-b300-vllm-agentic, 12 agentic points), an arm that runs without speculative decoding; Kimi-K3 agentic coding is published DSpark-only. 中文:将 GitHub workflow run 30405836523 加入 PURGED_RUNS,使 ingest 跳过 该 run,并由 db:apply-overrides 删除其数据库记录。该 run 是 PR #2397 的 ingest 源 run(kimik3-fp4-b300-vllm-agentic,12 个 agentic 数据点), 属于不启用投机解码的分支;Kimi-K3 智能体编码仅发布 DSpark 结果。 Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com> * fix(inference): separate multinode aggregate deployments (SemiAnalysisAI#650) Treat non-disaggregated multinode serving as its own deployment mode and normalize its single aggregate TP/PP/EP topology across ingestion, charts, tooltips, and agentic detail navigation. 中文:将非分离式多节点推理作为独立部署模式,并在数据摄取、图表、提示信息和 Agentic 详情导航中统一使用单一聚合 TP/PP/EP 拓扑。 * fix(overview): clarify speculative decode labels (SemiAnalysisAI#647) 中文:fix(overview):明确标注推测解码方法 * feat(quotes): add SambaNova supporter quote to carousel (SemiAnalysisAI#652) Adds a supporter quote from Rodrigo Liang (Co-Founder & CEO, SambaNova) to the /quotes supporters page and the homepage quote carousel, with the SambaNova logo (official wordmark, 160px WebP) and a LinkedIn link. The entry is placed at the end of the carousel block in QUOTES so the "carousel orgs are listed first" ordering invariant still holds, and 'SambaNova' is appended to CAROUSEL_ORGS. Includes the required Simplified Chinese translation (textZh) for the /zh pages. 中文:新增 SambaNova 联合创始人兼 CEO Rodrigo Liang 的支持者引言,同时展示在 /quotes 支持者页面和首页引言轮播中,并配有 SambaNova 官方标识(160px WebP) 与 LinkedIn 链接。 - 该条目放在 QUOTES 数组中轮播区块的末尾,以保持"轮播机构排在前面"的排序约定, 并将 'SambaNova' 追加到 CAROUSEL_ORGS。 - 按仓库双语要求补充了 textZh 简体中文译文,供 /zh 页面使用。 * chore(pricing): update RTX PRO 6000 hyperscaler and neocloud $/GPU/hr / 更新 RTX PRO 6000 hyperscaler 与 neocloud 每 GPU 小时单价 (SemiAnalysisAI#651) * chore(pricing): update RTX PRO 6000 hyperscaler and neocloud $/GPU/hr Refresh the RTX PRO 6000 Blackwell Server Edition rental rates in HW_REGISTRY from the SemiAnalysis AI Cloud TCO model: - hyperscaler (costh): $0.43 -> $0.677 /GPU/hr - neocloud (costn): $0.676 -> $0.746 /GPU/hr These feed every cost-per-million-token metric (y_costh / y_costn) in the inference chart, throughput calculator, per-dollar compare pages, and the tco-feed API. The 3-year rental tier (costr) is unchanged. 中文:更新 RTX PRO 6000 Blackwell Server Edition 在 HW_REGISTRY 中的租用 单价(数据来自 SemiAnalysis AI Cloud TCO 模型):hyperscaler(costh)由 $0.43 调整为 $0.677 /GPU/hr,neocloud(costn)由 $0.676 调整为 $0.746 /GPU/hr。这两个值会影响推理图表、吞吐量计算器、每美元性能对比页面以及 tco-feed API 中所有的每百万 token 成本指标。3 年租赁层级(costr)保持不变。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * test(overview): follow separated multi-node aggregate deployments PR SemiAnalysisAI#650 made a non-disaggregated multi-node deployment its own serving series, so the GB300 fixture's single-node (45 tok/s/user) and multi-node aggregate (60 tok/s/user) points no longer blend into one curve and DeepSeek-V4-Pro's GB300 cell has no read at @50. That PR updated overview-data.test.ts but not overview.cy.ts, which still expected the old interpolated ≈$1.19 estimate — six Overview specs have been failing on master since it merged (they fail on any PR that touches packages/app, including this one). Point the estimate, evidence-date, cost-delta, mobile, and Chinese-sibling assertions at cells that still carry a read (B200 ≈$0.89, GB200 +71%) and assert the new GB300 outcome explicitly: a missing cell titled "no exact @50 result" with no evidence date and no delta badge. Coverage of the ≈-estimate rendering, including the zh sr-only text, is preserved. The GB200 badge saturates the alpha ramp at 0.40, which the browser re-serializes as 0.4, so that assertion reads the computed background color instead of the inline style attribute. 中文:PR SemiAnalysisAI#650 将非分离式多节点部署独立为单独的服务序列,因此 GB300 夹具中 的单节点点位(45 tok/s/用户)与多节点聚合点位(60 tok/s/用户)不再合并为 一条曲线,DeepSeek-V4-Pro 的 GB300 单元格在 @50 档位下没有结果。该 PR 更新 了 overview-data.test.ts,但未同步 overview.cy.ts,后者仍期望旧的插值估算值 ≈$1.19——自其合并以来,master 上已有 6 个 Overview 用例持续失败(任何改动 packages/app 的 PR 都会触发,包括本 PR)。 现将估算值、证据日期、成本差异、移动端与中文页面的断言改为指向仍有结果的 单元格(B200 ≈$0.89、GB200 +71%),并显式断言 GB300 的新表现:标题为 「no exact @50 result」的缺失单元格,且没有证据日期与差异标签。≈ 估算值的 渲染覆盖(含中文 sr-only 文案)保持不变。GB200 的色阶徽章 alpha 值达到上限 0.40,浏览器会将其重新序列化为 0.4,因此该断言改为读取计算后的背景色而非 内联 style 属性。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com> * fix(overview): hyperscaler cost per 1M total tokens + cell-state and header cleanup / 总览成本口径改为超大规模云每百万总 token,并清理单元格状态与页头 (SemiAnalysisAI#653) * fix(overview): price cost per 1M total tokens at hyperscaler rate - cost = HW_REGISTRY.costh × 1e6 ÷ (total tok/s per deployed GPU × 3600); was costr over output tokens - tier reads valued in tput_per_gpu (input + output) per deployed GPU; disagg keeps prefill+decode in the denominator; AgentX keeps the P90 interactivity tier axis - cell states: — = no result; % vs B200; cost + neutral gray ∞ badge when the B200 baseline is missing - cost value is now the evidence link into the filtered dashboard; visible dates and the DB-snapshot line removed, hover/focus/SR labels keep the run date - header: metric line "Hyperscaler cost / 1M total tokens · ↓ lower is better" shares the title row on desktop, stacks on mobile/tablet - drop datasetThroughDate/latestOverviewDate dead code; computeTierReads kernel made metric-neutral (external tco-feed contract unchanged); cost shows 3 decimals - fixture rows carry per-config tput_per_gpu ratios so a regression to output-token pricing fails tests 中文:总览页成本口径从「零售 $/GPU/小时 ÷ 输出 tok/s」切换为「超大规模云 costh ÷ 每张已部署 GPU 的总 tok/s」;单元格三态改为 —(无结果)/ 相对 B200 百分比 / 成本 + 中性灰 ∞(缺少 B200 基线);成本数字本身成为进入对应筛选仪表板的证据链接,页面不再显示日期与数据库快照(hover/焦点/读屏标签保留复现信息);标题行信息层级重构并更新 methodology;删除 datasetThroughDate 等死代码;fixture 增加与输出不成比例的 tput_per_gpu,防止只改文案不改计算。 * fix(overview): align cost context and detail drilldowns 中文:优化成本指标的视觉层级,并让查看详情链接默认打开超大规模云每百万总 token 成本指标。 * fix(overview): remove approximate cost markers 中文:移除总览成本数值中的近似符号,同时保留插值来源说明和可访问性信息。 * fix(overview): align evidence links with cost semantics 中文:修正成本证据链接的指标与无障碍名称,并让可见日期测试忽略 Next.js 序列化脚本内容。 * feat(overview): curated scenario rows, 150/200 service levels, trimmed methodology, heat-map cells / 场景行按模型配置、新增 150/200 服务档位、精简方法说明、单元格热力图 (SemiAnalysisAI#654) * feat(overview): trim methodology, add 150/200 tiers, split AgentX rows Five changes to the Overview matrix: - Methodology block keeps only the cell-state legend and the configuration note. The cost-formula, comparability, and interpolation paragraphs are removed. - The configuration note now reads "If a chip does not have FP4 spec decoding available, the next best available configuration is used." instead of listing the priority chain. - Service level gains 150 and 200 tok/s/user (30 / 50 / 75 / 100 / 150 / 200). Both new tiers are real server-rendered URLs like the existing ones. - A model benchmarked on both scenarios now gets one matrix row per scenario instead of a single row for whichever scenario won, so DeepSeek V4 Pro shows its single-turn 8K→1K row and an AgentX row. Each row is priced only from its own scenario's runs, and its detail and evidence links carry that scenario's workload. The AgentX scenario label is now "Long Context Multi-Turn Realistic Agentic Scenario (AgentX)". - Cells no longer badge speculative decode, which is the expected case. Only a standard-decode read is called out, as STP. Rows carry data-scenario so a model with two rows is addressable per row. The e2e fixture gains two DeepSeek agentic-trace rows, deliberately at throughputs that differ from its single-turn sweep so a regression feeding single-turn data into the AgentX row would fail rather than coincide. 中文:总览页矩阵的五项改动: - 方法说明区仅保留单元格状态图例与配置说明,删除成本公式、可比性与插值 三段文字。 - 配置说明改为「If a chip does not have FP4 spec decoding available, the next best available configuration is used.」,不再罗列优先级链。 - 服务档位(Service level)新增 150 与 200 tok/s/用户(30 / 50 / 75 / 100 / 150 / 200),两个新档位与既有档位一样是服务端渲染的真实 URL。 - 同时在两种场景下测试过的模型,现在按场景各占一行,而不再只保留优先级 更高的那一个场景,因此 DeepSeek V4 Pro 会同时显示单轮 8K→1K 行与 AgentX 行。每一行只使用本场景的运行数据计算成本,其详情与证据链接也指向 该场景的工作负载。AgentX 场景标签改为「长上下文多轮真实智能体场景 (AgentX)」。 - 单元格不再标注推测解码(默认即为推测解码),仅在使用标准解码时标注 STP。 行元素新增 data-scenario 属性,便于逐行定位同一模型的两行。e2e 夹具新增 两条 DeepSeek 智能体轨迹(agentic traces)数据行,其吞吐量刻意与单轮数据 不同,从而在单轮数据被误用于 AgentX 行时能够触发测试失败。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * feat(overview): curate scenario rows, shorten 8K/1K label, tint whole cells - Scenario rows are now curated per model rather than derived from whichever scenarios happen to have rows: DeepSeek V4 Pro, MiniMax M3 and Qwen 3.5 get both a single-turn and an AgentX row; Kimi K3 and GLM-5.2 are AgentX only; Kimi K2.5/2.6/2.7-Code is single-turn only. A model absent from the map keeps the old data-derived single row, so a new model renders one row until it is curated. - The single-turn scenario label is just "8K/1K" (was "Single-turn · 8K→1K"). - The comparison shade moves from the percentage badge to the whole cell, so the matrix reads as a heat map: the red/green alpha ramp is unchanged, and the two neutral states (±5% parity, and no B200 baseline) get a flat slate wash. Cells with no priced read stay untinted. The badge keeps its text color but no longer paints its own background, which would double the wash. 中文: - 场景行改为按模型显式配置,不再依据「哪些场景恰好有数据」推导:DeepSeek V4 Pro、MiniMax M3 与 Qwen 3.5 同时显示单轮行与 AgentX 行;Kimi K3 与 GLM-5.2 仅显示 AgentX;Kimi K2.5/2.6/2.7-Code 仅显示单轮。未在配置表中 列出的模型沿用原先由数据推导的单行逻辑,因此新模型在完成配置前只渲染 一行。 - 单轮场景标签简化为「8K/1K」(原为「单轮 · 8K→1K」)。 - 对比色阶由百分比徽章移至整个单元格,使矩阵整体呈现热力图效果:红/绿的 alpha 渐变保持不变,两种中性状态(±5% 持平、缺少 B200 基线)采用统一的 石板灰底色;没有计价结果的单元格不着色。徽章保留文字颜色,但不再绘制 自身背景,以免同色叠加。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * feat(overview): retitle, cite the TCO model, inline details, full rack labels - The h1 is now "Inference Cost Blended Cost per Million Tokens". - The metric line drops its unit: "Hyperscaler cost · ↓ Lower is better". The unit stays in the line's aria-label for screen readers. - Under that line, right-aligned on desktop, the matrix cites the model its $/GPU/hr comes from: "Source: SemiAnalysis Market August 2025 AI Cloud TCO Model", linking to semianalysis.com/ai-cloud-tco-model. - The Details column is gone; each row's "View details" link now sits in its Model · Scenario cell, and the freed width goes to the six data columns. - Rack parts use their registry labels — GB200 NVL72 and GB300 NVL72, not GB200 and GB300 — so a rack SKU is never read as a board. Page metadata titles are unchanged; only the on-page h1 moves. 中文: - 页面主标题改为「推理混合每百万 token 成本」。 - 指标行去掉单位,显示为「超大规模云(hyperscaler)成本 · ↓ 越低越好」; 单位保留在该行的 aria-label 中,供屏幕阅读器使用。 - 指标行下方(桌面端右对齐)新增数据来源标注:「来源:SemiAnalysis Market August 2025 AI Cloud TCO Model」,链接至 semianalysis.com/ai-cloud-tco-model, 即矩阵中 $/GPU/hr 的取值来源。 - 删除独立的 Details 列,「查看详情」链接移入各行的「模型 · 场景」单元格, 腾出的宽度分配给六个数据列。 - 整机柜产品使用注册表中的完整名称——GB200 NVL72 与 GB300 NVL72,而非 GB200 与 GB300——避免把整机柜误读为单卡。 页面 metadata 标题保持不变,仅调整页面内的 h1。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * feat(overview): fold provenance into the metric line, stick the matrix header - The standing blurb ("Every active model across MI355X, B200, B300, GB200 and GB300 at a glance.") is removed. - The metric line now carries provenance: "Hyperscaler cost · ↓ Lower is better · Source: InferenceX & SemiAnalysis Market August 2025 AI Cloud TCO Model", where only the model name is the link, followed by the shared external-link glyph. The former standalone source line is gone. - The desktop matrix header row is sticky, pinned at top-14 so it clears the site header (h-14, sticky top-0, z-50) and never slides under it. The header cells are opaque, and neither the card nor the table wrapper clips on xl any more — an overflow container would have captured the sticky header instead of letting it pin to the page. 中文: - 删除固定说明文字「一眼对比各活跃模型在 MI355X、B200、B300、GB200 与 GB300 上的表现。」 - 指标行合并数据来源,显示为「超大规模云(hyperscaler)成本 · ↓ 越低越好 · 来源:InferenceX 与 SemiAnalysis Market August 2025 AI Cloud TCO Model」, 其中仅模型名称为超链接,并附带项目通用的外链图标;原先独立的来源行已移除。 - 桌面端矩阵表头改为吸顶,偏移量为 top-14,正好避开站点头部(h-14、sticky top-0、z-50),不会被其遮挡。表头单元格使用不透明背景;同时在 xl 断点下 取消卡片与表格容器的裁剪,否则滚动容器会「捕获」吸顶元素,使其无法相对 页面吸顶。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * feat(overview): retitle to "Inference Cost per Million Tokens" Drops the redundant "Blended Cost" from the on-page h1. Metadata titles are unchanged. 中文:页面主标题改为「推理每百万 token 成本」,去掉重复的「混合」表述; metadata 标题保持不变。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * fix(overview): keep the B200 column unwashed, name detail links by scenario Two findings from Cursor Bugbot on the heat-map change: - costDeltaCellStyle read B200's null costVsB200Pct as the ∞ / no-baseline state, so every priced B200 cell took the slate wash and covered the reference column's bg-muted/30. On the baseline a null delta means "nothing to compare against itself" — return no tint there. - With two scenario rows per model, both "View details" links carried the same accessible name while pointing at different workloads (i_seq=8k/1k vs i_seq=agentic-traces). detailAria now takes the scenario label too, so the links read "View details: DeepSeek V4 Pro 1.6T · 8K/1K" and "… · Long Context Multi-Turn Realistic Agentic Scenario (AgentX)". Both are covered by new assertions in overview.cy.ts. 中文:修复 Cursor Bugbot 在热力图改动中发现的两个问题: - costDeltaCellStyle 把 B200 的 costVsB200Pct 为 null 误判为 ∞(缺少基线) 状态,导致所有已计价的 B200 单元格都被涂上石板灰底色,覆盖了参考列原有的 bg-muted/30 样式。对基线列而言,null 表示「无需与自身比较」,因此不应着色。 - 单个模型有两行场景时,两个「查看详情」链接的无障碍名称完全相同,但指向 不同的工作负载(i_seq=8k/1k 与 i_seq=agentic-traces)。detailAria 现在 额外接收场景标签,链接读作「查看详情:DeepSeek V4 Pro 1.6T · 8K/1K」与 「…· 长上下文多轮真实智能体场景(AgentX)」。 两项修复均已在 overview.cy.ts 中补充断言覆盖。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * style(overview): stack the metric line under the title at every width The header was two columns from xl up — title left, metric right. It is now two rows everywhere: "Inference Cost per Million Tokens", then "Hyperscaler cost · ↓ Lower is better · Source: InferenceX & SemiAnalysis Market August 2025 AI Cloud TCO Model" beneath it. 中文:页头此前在 xl 及以上断点为左右两栏(左侧标题、右侧指标)。现改为在所有 宽度下均为上下两行:第一行「推理每百万 token 成本」,第二行「超大规模云 (hyperscaler)成本 · ↓ 越低越好 · 来源:InferenceX 与 SemiAnalysis Market August 2025 AI Cloud TCO Model」。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com> * chore(overview): label the tier control SLO and enlarge the column headers / 档位控件标签改为 SLO 并放大列表头字号 (SemiAnalysisAI#657) * chore(overview): label the tier control SLO Renames the service-tier selector from "Service level" to "SLO" — the term the rest of the industry uses for the interactivity target these tiers set. The nav's aria-label follows the visible text. Tier values, links and behavior are unchanged. The Chinese page uses "SLO" as well: it is the standard acronym in Chinese serving-infrastructure writing, and a translated phrase ("服务等级目标") would be three times as wide in a control that already has to fit six tiers on a 320px phone. 中文:将服务档位选择器的标签由「Service level」改为「SLO」——这是业界对这些 档位所设定的交互性目标的通用称呼;导航的 aria-label 与可见文本保持一致。档位 数值、链接与行为均未改变。 中文页面同样使用「SLO」:该缩写在中文服务基础设施相关文档中已是标准写法,而 完整译名「服务等级目标」宽度约为其三倍,该控件在 320px 手机上还需容纳六个 档位,无法承受。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * style(overview): raise the matrix column headers to 14px The platform header row (Model · Scenario, B200 · Reference, MI355X, B300, GB200 NVL72, GB300 NVL72) was 12px — the same size as the per-cell configuration metadata it labels. At 14px it reads as a header again. The matrix still fits without clipping at 1280 and 1440. 中文:矩阵列表头(Model · Scenario、B200 · Reference、MI355X、B300、 GB200 NVL72、GB300 NVL72)此前为 12px,与其所标注的单元格配置信息同号;现 调整为 14px,恢复表头的层级感。矩阵在 1280 与 1440 宽度下仍不会裁剪。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com> * Explain clipped inference chart lines / 说明推理图表的截断曲线 (SemiAnalysisAI#655) * feat: explain clipped inference chart lines Add dashed Pareto continuations and boundary arrows for cost and TTFT limits. Show bilingual clipped-point details for official and unofficial-run series. Cover official, overlay, and dismissal behavior with unit and Cypress tests. 中文:为成本与 TTFT 显示上限增加 Pareto 曲线虚线延伸和边界箭头,并为正式数据与 unofficial run 提供双语截断说明及测试。 * fix: keep overflow arrows compact Preserve the existing chart domain and cap clipped Pareto continuations at 96 pixels. Move clipped-point counts from the corner popover onto each series arrow. Count all hidden points covered by the displayed cost or TTFT limit. 中文:保留现有图表坐标范围,将截断的 Pareto 延伸线限制为 96 像素,并把隐藏点数量和成本或 TTFT 上限直接标注在各曲线箭头旁。 * fix: interpolate and layer overflow continuations 中文:使用样条插值绘制图表越界延长线,将虚线置于主曲线后方,并保持缩放、标签位置与主题描边正确。 * fix: constrain overflow splines in ttft 中文:限制 TTFT 图表越界样条的可见长度,避免预测线横跨整张图表,并保持标签位于图表边界内。 * fix: clarify overflow cost label unit 中文:将越界成本标签单位从 /M 明确为 /Mtok,并同步中英文界面及回归测试。 * fix: correct overflow counts and labels 中文:按箭头方向统计越界点,并确保底部箭头的标签保持在箭头下方。 --------- Co-authored-by: adibarra <93070681+adibarra@users.noreply.github.com> * fix: keep overflow labels within bounds (SemiAnalysisAI#658) 中文:当箭头接近图表底部时,将越界标签移到箭头上方,避免标签被图表裁剪边界截断。 * Update TCO to July / 将 TCO 更新至 7 月 (SemiAnalysisAI#659) * fix(inference): correct CSV latency metadata and overlay rows (SemiAnalysisAI#660) * chore(pricing): state July 2026 TCO rates to two decimals (SemiAnalysisAI#661) SemiAnalysisAI#659 imported the July model's raw outputs, so nine GPUs carried 16-digit rates (b200 costh 1.7349236084834354). HW_REGISTRY holds published $/GPU/hr, not model residue: every costh/costn is now rounded to two decimals, matching the costr tier and every rate the registry carried before. Two rendered values …
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Refreshes the RTX PRO 6000 Blackwell Server Edition rental rates in
HW_REGISTRY(packages/constants/src/gpu-keys.ts) from the SemiAnalysis AI Cloud TCO model:costhcostncostrHW_REGISTRYis the single source of truth for cost tiers, so this propagates automatically to every surface that reads it: the inference chart'sy_costh/y_costnmetrics, the throughput calculator's Hyperscaler / Neocloud pricing tiers, the per-dollar compare pages (/compare-per-dollar/*, which display the owning-hyperscaler $/GPU/hr directly), and thetco-feedAPI. No other files hardcode these numbers.Note for reviewers: with this change the RTX PRO 6000's 3-year rental rate ($0.52) now sits below both its hyperscaler and neocloud rates, an ordering inversion relative to every other GPU in the registry (where
costh ≤ costr). That's out of scope for this PR — flagging in casecostrshould be refreshed from the same TCO model revision.Also: unblocks the Overview E2E suite (pre-existing master failure)
Six
overview.cy.tsspecs have been failing on master since #650 merged, so they fail on any PR touchingpackages/app— including this one. Not caused by the pricing change; fixed here so this PR can go green.#650 made a non-disaggregated multi-node deployment its own serving series. The GB300 fixture rows for DeepSeek-V4-Pro are one single-node point (45 tok/s/user) and one multi-node aggregate point (60 tok/s/user), so they no longer blend into a single curve and the cell has no read at @50. #650 updated
overview-data.test.tsfor exactly this (dsGb300.candidate.read.value→null,missingReason→no_exact_at_tier) but not the Cypress spec, which still expected the old interpolated≈$1.19estimate.The spec now asserts the current behavior:
≈$0.89, including the zhsr-onlytext — so ≈-estimate rendering stays covered;+71%, read from the computed background color because the browser re-serializes the saturated0.40alpha as0.4;no exact @50 result, with no evidence date and no delta badge.No product code changed for this — only test expectations.
Testing
bun run typecheck— passbun run test:unit— pass (436 tests)bun run lint/bun run fmt— passoverview.cy.tsagainst a localE2E_FIXTURES=1production build — 14/14 passing in Chrome (Firefox isn't installed locally; CI covers it)The pricing change is a data-only constant edit; no UI, i18n, or overlay code paths touched, so no new
/zhpage is required.中文说明
依据 SemiAnalysis AI Cloud TCO 模型,更新
HW_REGISTRY(packages/constants/src/gpu-keys.ts)中 RTX PRO 6000 Blackwell Server Edition 的租用单价:costhcostncostrHW_REGISTRY是各成本层级的唯一数据来源,因此该修改会自动同步到所有读取它的界面:推理图表的y_costh/y_costn指标、吞吐量计算器的 Hyperscaler / Neocloud 定价层级、每美元性能对比页面(/compare-per-dollar/*,会直接展示 owning-hyperscaler 的 $/GPU/hr),以及tco-feedAPI。仓库中没有其他位置硬编码这两个数值。给评审的提示:此次改动后,RTX PRO 6000 的 3 年租赁价($0.52)低于其 hyperscaler 与 neocloud 价格,与注册表中其他 GPU 的排序惯例(
costh ≤ costr)相反。这不在本 PR 范围内,仅作提示——如需按同一版 TCO 模型一并更新costr,请告知。附带修复:解除 Overview E2E 阻塞(master 上已存在的失败)
自 #650 合并以来,
overview.cy.ts中有 6 个用例在 master 上持续失败,因此任何改动packages/app的 PR 都会失败,本 PR 也不例外。该失败与定价改动无关,在此一并修复以使本 PR 通过 CI。#650 将非分离式多节点部署独立为单独的服务序列。DeepSeek-V4-Pro 的 GB300 夹具数据包含一个单节点点位(45 tok/s/用户)和一个多节点聚合点位(60 tok/s/用户),二者不再合并为同一条曲线,因此该单元格在 @50 档位下没有结果。#650 已相应更新
overview-data.test.ts(dsGb300.candidate.read.value→null,missingReason→no_exact_at_tier),但未同步 Cypress 用例,后者仍期望旧的插值估算值≈$1.19。现将用例改为断言当前行为:
≈$0.89(含中文sr-only文案),从而保留 ≈ 估算值的渲染覆盖;+71%,并读取计算后的背景色,因为浏览器会将达到上限的 alpha 值0.40重新序列化为0.4;no exact @50 result的缺失单元格,且没有证据日期与差异标签。此项仅修改测试预期,未改动任何产品代码。
测试:
bun run typecheck、bun run test:unit(436 项全部通过)、bun run lint、bun run fmt均通过;在本地E2E_FIXTURES=1生产构建下运行overview.cy.ts,Chrome 环境 14/14 通过(本地未安装 Firefox,由 CI 覆盖)。定价改动为纯数据常量修改,未涉及 UI、i18n 或 overlay 代码路径,因此无需新增/zh页面。🤖 Generated with Claude Code
Note
Low Risk
Registry constant refresh plus test-only overview assertions; no auth or runtime logic changes, though RTX 3-year
costrnow sits below hyperscaler/neocloud (noted in PR description).Overview
Updates RTX PRO 6000 hyperscaler and neocloud $/GPU/hr in
HW_REGISTRY(costh0.43→0.677,costn0.676→0.746;costrunchanged at 0.52), so every consumer ofHW_REGISTRYpicks up the new SemiAnalysis TCO rates automatically.Realigns Overview Cypress specs with current matrix behavior for DeepSeek-V4-Pro: estimated cost and evidence on B200 (≈$0.89) instead of GB300; GB300 cells assert missing @50 (
∞, no blended estimate) because single- vs multi-node series do not interpolate to the tier; GB200 cost-delta expectations move to +71% with a computed-style background-color assertion; mobile and/zhflows mirror the same semantics.Reviewed by Cursor Bugbot for commit 0421d75. Bugbot is set up for automated code reviews on this repo. Configure here.