Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -225,6 +225,7 @@ Authoritative total / active parameter counts for every model in the dashboard.
| Kimi-K2.6 | 1T | 32B | `moonshotai/Kimi-K2.6` | HF model card |
| Kimi-K2.7-Code | 1T | 32B | `moonshotai/Kimi-K2.7-Code` | HF model card |
| Qwen3.5-397B-A17B | 397B | 17B | `Qwen/Qwen3.5-397B-A17B` | HF model card |
| Qwen3.8-Flash-Next | 176B | 6B | `Qwen/Qwen3.8-Flash-Next-FP8` | HF model card |
| GLM-5 | 744B | 40B | `zai-org/GLM-5` | HF model card |
| GLM-5.1 | 744B | 40B | `zai-org/GLM-5.1-FP8` | HF model card (same base as GLM-5) |
| MiniMax-M2.5 | 230B | 10B | `MiniMaxAI/MiniMax-M2.5` | HF model card |
Expand All @@ -234,6 +235,7 @@ Authoritative total / active parameter counts for every model in the dashboard.

**Common mislabel traps** (have all bitten this repo at least once — do not repeat):

- **Qwen3.8-Flash-Next is 176B, not 125B.** The model card leads with "125B with 6B activated", but that is the main model only; the 51B n-gram embedding table brings the total to 176B. The separate 4B MTP head sits outside both figures. It is a Qwen4-architecture preview (GatedDeltaNet + Qwen Sparse Attention, 512 experts, 10 routed + 1 shared), not a Qwen3.5 point release, so it gets its own DB bucket.
- **GLM-5 ≠ 355B.** 355B is GLM-4.5. GLM-5 jumped to 744B / 40B active (256-expert MoE with DSA).
- **MiniMax-M2.5/M2.7 ≠ 456B.** 456B is the older MiniMax-Text-01 / M1 (32 large experts). The M2 series is a different architecture: 230B / 10B active, 256 small experts.
- **DeepSeek-R1 is 671B, not 685B.** HF metadata shows 685B because the bundled MTP head adds ~14B; the core MoE is 671B / 37B active.
Expand Down
2 changes: 1 addition & 1 deletion packages/app/src/lib/api-route-catalog.ts
Original file line number Diff line number Diff line change
Expand Up @@ -687,7 +687,7 @@ export const apiContractSourceDigests = [
// Reviewed again for the release-date corrections: values inside
// MODEL_RELEASE_DATES only. No published model name, alias, or parameter enum
// is touched, and no endpoint exposes a release date, so the docs stand.
sourceSha256: 'f8f46a341bf57384c0080c2ed75d867801142675ded08225281cf7c102236628',
sourceSha256: '9faf1ed1ed1712ee04741b6aa2291d42b2c202c2dadbb1a2681b5391da555e6c',
reviewArea: {
en: 'Published benchmark and TCO model names, aliases, and parameter enums.',
zh: '已发布基准与 TCO 模型名称、别名和参数枚举。',
Expand Down
1 change: 1 addition & 0 deletions packages/app/src/lib/compare-slug.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -272,6 +272,7 @@ describe('compareModelSeoName', () => {
'glm-5-2': 'GLM-5.2',
'minimax-m3': 'MiniMax M3',
'minimax-m27': 'MiniMax M2.7',
'qwen-3-8-flash-next': 'Qwen3.8-Flash-Next',
'qwen-3-5': 'Qwen3.5',
'gptoss-120b': 'gpt-oss-120b',
'llama-3-3-70b': 'Llama 3.3 70B',
Expand Down
9 changes: 9 additions & 0 deletions packages/app/src/lib/compare-slug.ts
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,15 @@ export const COMPARE_MODEL_SLUGS: CompareModelSlug[] = [
// Primary version the slug canonicalizes to (M2.7).
seoName: 'MiniMax M2.7',
},
{
slug: 'qwen-3-8-flash-next',
displayName: 'Qwen3.8-Flash-Next',
dbKeys: ['qwen3.8next'],
// 176B total: a 125B main model plus a 51B n-gram embedding table, with 6B
// active per forward pass (MoE). The 4B MTP head sits outside that total.
label: 'Qwen 3.8 Flash Next 176B-A6B',
seoName: 'Qwen3.8-Flash-Next',
},
{
slug: 'qwen-3-5',
displayName: 'Qwen-3.5-397B-A17B',
Expand Down
1 change: 1 addition & 0 deletions packages/app/src/lib/compare-ssr.ts
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ export const KNOWN_MODELS = new Set([
'DeepSeek-R1-0528',
'gpt-oss-120b',
'Qwen-3.5-397B-A17B',
'Qwen3.8-Flash-Next',
'Kimi-K2.5',
'Kimi-K3',
'MiniMax-M2.5',
Expand Down
13 changes: 13 additions & 0 deletions packages/app/src/lib/data-mappings.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ export enum Model {
DeepSeek_R1 = 'DeepSeek-R1-0528',
GptOss = 'gpt-oss-120b',
Qwen3_5 = 'Qwen-3.5-397B-A17B',
Qwen3_8_Flash_Next = 'Qwen3.8-Flash-Next',
Kimi_K2_5 = 'Kimi-K2.5',
Kimi_K3 = 'Kimi-K3',
MiniMax_M2_5 = 'MiniMax-M2.5',
Expand Down Expand Up @@ -167,6 +168,18 @@ const MODEL_CONFIG: Record<Model, ModelConfig> = {
// the selector presents both releases over the existing GLM-5.2 data bucket.
[Model.GLM_5_2]: { label: 'GLM5.2/GLM5.3 744B', prefix: 'glm5.2', category: 'default' },
[Model.Qwen3_5]: { label: 'Qwen3.5 397B', prefix: 'qwen3.5', category: 'default' },
// 176B total: a 125B main model plus a 51B n-gram embedding table, 6B active
// per forward pass, and a separate 4B MTP head the parameter count excludes.
// Experimental rather than default while the only data is the day-zero H200
// FP8 agentic arm: `default` would seat it in the /overview matrix, which is
// built from DEFAULT_MODELS and would render an empty fixed-sequence row for
// it. It stays fully selectable everywhere else, since MODEL_OPTIONS excludes
// only `hidden`. Promote to `default` once the sweep covers more chips.
[Model.Qwen3_8_Flash_Next]: {
label: 'Qwen3.8 Flash Next 176B',
prefix: 'qwen3.8next',
category: 'experimental',
},
[Model.GptOss]: { label: 'gpt-oss 120B', prefix: 'gptoss', category: 'deprecated' },
[Model.MiniMax_M2_5]: {
// M2.5 and M2.7 share an architecture — same GLM5/5.1 pattern as Kimi.
Expand Down
2 changes: 1 addition & 1 deletion packages/app/src/lib/rankings.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ describe('rankings registry', () => {
it('has one page per (kind, model) pair', () => {
const entries = getAllRankingPageEntries();
expect(entries.length).toBe(RANKING_KINDS.length * INFERENCE_MODEL_SLUGS.length);
expect(entries.length).toBe(22);
expect(entries.length).toBe(24);
});

it('has unique, well-formed slugs', () => {
Expand Down
2 changes: 1 addition & 1 deletion packages/app/src/lib/run-pages.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ describe('run pages registry', () => {
it('has one candidate per (model, chip) pair', () => {
const entries = getAllRunPageEntries();
expect(entries.length).toBe(INFERENCE_MODEL_SLUGS.length * getAllChipPages().length);
expect(entries.length).toBe(99);
expect(entries.length).toBe(108);
});

it('has unique, well-formed slugs', () => {
Expand Down
10 changes: 10 additions & 0 deletions packages/constants/src/models.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,9 @@ export const DB_MODEL_TO_DISPLAY: Record<string, string> = {
gptoss120b: 'gpt-oss-120b',
llama70b: 'Llama-3.3-70B-Instruct-FP8',
'qwen3.5': 'Qwen-3.5-397B-A17B',
// Qwen4-architecture preview, not a Qwen3.5 point release (GatedDeltaNet plus
// Qwen Sparse Attention, 512 experts), so it gets its own display bucket.
'qwen3.8next': 'Qwen3.8-Flash-Next',
'kimik2.5': 'Kimi-K2.5',
'kimik2.6': 'Kimi-K2.5',
'kimik2.7-code': 'Kimi-K2.5',
Expand Down Expand Up @@ -140,6 +143,13 @@ export const MODEL_RELEASE_DATES: Record<string, string> = {
// Qwen/Qwen3.5-397B-A17B on 2026-02-16 — the same day InferenceX first swept
// it. sweep: 2026-02-16 — day zero.
'Qwen-3.5-397B-A17B': '2026-02-16',
// Qwen announced the open-sourcing of Qwen3.8-Flash-Next and its FP8 sibling
// for 23:00 Beijing time on 2026-08-26, which is also the day the SGLang
// bring-up image tag was published. Some coverage puts the Hugging Face repo
// live on 08-24; the announced date is the one used here, and either way it
// precedes the first sweep on 08-27. The model card itself states no date.
// sweep: 2026-08-27 — day zero.
'Qwen3.8-Flash-Next': '2026-08-26',
// Bucket covers M2.5 and M2.7, so the date is M2.5's: announced 2026-02-12
// with weights on Hugging Face, architecturally unchanged from M2 (230B/10B).
// Was 2025-10-25, which is M2's launch, not M2.5's — `model-architectures.ts`
Expand Down
8 changes: 8 additions & 0 deletions packages/db/src/etl/normalizers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,14 @@ export const MODEL_TO_KEY: Record<string, string> = {
// Qwen3.5
'Qwen/Qwen3.5-397B-A17B': 'qwen3.5',
'Qwen/Qwen3.5-397B-A17B-FP8': 'qwen3.5',
// Qwen3.8-Flash-Next (Qwen4 architecture preview — distinct bucket from 3.5).
// Hopper has no NVFP4 path, so H200 serves the FP8 checkpoint while Blackwell
// serves NVFP4. Both paths are taken from executed sweeps rather than inferred:
// FP8 from run 33038487711 (H200, PR #2753), NVFP4 from run 33039186365
// (B300, PR #2752). Both report `infmax_model_prefix: qwen3.8next`, so no
// PREFIX_ALIASES entry is needed.
'Qwen/Qwen3.8-Flash-Next-FP8': 'qwen3.8next',
'RadixArk/Qwen3.8-Flash-Next-NVFP4': 'qwen3.8next',
// Kimi-K2.5 / K2.6 / K2.7-Code (same architecture, distinct DB buckets)
'moonshotai/Kimi-K2.5': 'kimik2.5',
'moonshotai/Kimi-K2.6': 'kimik2.6',
Expand Down