feat: add paired DeepSeek routing length control

This commit is contained in:
wuyang
2026-07-29 16:17:18 +08:00
parent 059458f8e3
commit 9ca08501a8
15 changed files with 318874 additions and 69 deletions
+295 -43
View File
@@ -5,6 +5,11 @@ import rawAbsorb from "@/data/deepseek-v2-lite-absorb.json";
import rawAbsorbRepro from "@/data/deepseek-v2-lite-absorb-repro.json";
import rawCorpus from "@/data/deepseek-v2-lite-routing-corpus.json";
import rawCorpusRepro from "@/data/deepseek-v2-lite-routing-corpus-repro.json";
import rawMatched16 from "@/data/deepseek-v2-lite-routing-matched16.json";
import rawMatched16Repro from "@/data/deepseek-v2-lite-routing-matched16-repro.json";
import rawMatched24 from "@/data/deepseek-v2-lite-routing-matched24.json";
import rawMatched24Repro from "@/data/deepseek-v2-lite-routing-matched24-repro.json";
import rawLengthSensitivity from "@/data/deepseek-v2-lite-routing-length-sensitivity.json";
const trace = rawTrace as any;
const repro = rawRepro as any;
@@ -12,8 +17,15 @@ const absorb = rawAbsorb as any;
const absorbRepro = rawAbsorbRepro as any;
const corpus = rawCorpus as any;
const corpusRepro = rawCorpusRepro as any;
const matched16 = rawMatched16 as any;
const matched16Repro = rawMatched16Repro as any;
const matched24 = rawMatched24 as any;
const matched24Repro = rawMatched24Repro as any;
const lengthSensitivity = rawLengthSensitivity as any;
const absorbExact = JSON.stringify(absorb) === JSON.stringify(absorbRepro);
const corpusExact = JSON.stringify(corpus) === JSON.stringify(corpusRepro);
const matched16Exact = JSON.stringify(matched16) === JSON.stringify(matched16Repro);
const matched24Exact = JSON.stringify(matched24) === JSON.stringify(matched24Repro);
const bytes = (value: number) => value >= 1024
? `${(value / 1024).toFixed(2)} KiB`
: `${value.toLocaleString()} B`;
@@ -49,17 +61,25 @@ const compact = {
},
};
const compactJson = JSON.stringify(compact).replaceAll("<", "\\u003c");
const corpusCompact = {
domains: corpus.corpus_contract.domains,
labels: corpus.corpus_contract.domain_labels,
counts: corpus.corpus_contract.counts,
inference: corpus.inference_contract,
statistics: corpus.statistical_contract,
layers: corpus.layers.slice(1).map((layer: any) => ({
const compactCorpus = (input: any) => ({
domains: input.corpus_contract.domains,
labels: input.corpus_contract.domain_labels,
counts: input.corpus_contract.counts,
inference: input.inference_contract,
statistics: input.statistical_contract,
layers: input.layers.slice(1).map((layer: any) => ({
layer: layer.layer,
routes: layer.routes,
modes: layer.statistics,
})),
});
const corpusCompact = {
cohorts: {
natural: compactCorpus(corpus),
matched16: compactCorpus(matched16),
matched24: compactCorpus(matched24),
},
lengthSensitivity,
};
const corpusCompactJson = JSON.stringify(corpusCompact).replaceAll("<", "\\u003c");
const shardFraction = trace.provenance.shard_1_bytes / trace.provenance.checkpoint_tensor_bytes;
@@ -73,7 +93,7 @@ const shardFraction = trace.provenance.shard_1_bytes / trace.provenance.checkpoi
</div>
<p>
固定官方 revision、tokenizer、模型代码和 BF16 第一分片;RTX 5090 连续执行 layer 0–6,
从 3,240 次 token 显微轨迹扩到 304,560 次公开语料路由,并让 layer-1 权重继续走入官方吸收式 cache。
从 3,240 次 token 显微轨迹扩到 488,880 次公开语料路由,并让 layer-1 权重继续走入官方吸收式 cache。
所有结论都带证据身份与停止线。
</p>
</header>
@@ -390,22 +410,35 @@ const shardFraction = trace.provenance.shard_1_bytes / trace.provenance.checkpoi
<section class="artifact-panel" data-artifact-panel="corpus" hidden>
<div class="panel-lead">
<div><span>X + S / FIXED PUBLIC CORPUS</span><h4>从四条示例,走到 128 条可重建样本与区间</h4></div>
<div><span>X + S / FIXED PUBLIC CORPUS</span><h4>从自然长度,再走到同 prompt 的 16 / 24-token 对照</h4></div>
<p>
WikiText-2、TNEWS、HumanEval、GSM8K 各取 32 条;固定哈希选样、最多 96 tokens。
每个区间都重采样 prompt,而不是把同一 prompt 里的 token 假装成独立样本。
三个 cohort 都来自 WikiText-2、TNEWS、HumanEval、GSM8K;等长两档使用完全相同的
128 条源 prompt 和嵌套前缀。每个区间都重采样 prompt,不把相关 token 假装成独立样本。
</p>
</div>
<div class="corpus-ledger">
<article><span>PROMPTS</span><b>{corpus.inference_contract.total_prompts}</b><p>4 domains × 32</p></article>
<article><span>VALID TOKENS</span><b>{corpus.inference_contract.valid_tokens.toLocaleString()}</b><p>答案未使用,代码未执行</p></article>
<article><span>REAL ROUTES</span><b>{(corpus.inference_contract.routes_per_moe_layer * 6).toLocaleString()}</b><p>50,760 / layer × 6 MoE layers</p></article>
<article><span>COHORTS</span><b>3</b><p>natural ≤96 · matched 16 / 24</p></article>
<article><span>PROMPT RUNS</span><b>384</b><p>每档 4 domains × 32</p></article>
<article><span>VALID TOKENS</span><b>13,580</b><p>答案未使用,代码未执行</p></article>
<article><span>REAL ROUTES</span><b>488,880</b><p>三档 × 前六个 MoE 层</p></article>
<article><span>BOOTSTRAP</span><b>{corpus.statistical_contract.replicates.toLocaleString()}</b><p>prompt-level / domain-stratified</p></article>
<article class="exact"><span>INDEPENDENT RERUN</span><b>{corpusExact ? "BYTE-EXACT" : "MISMATCH"}</b><p>SHA-256 4678a1d1…a09e4</p></article>
<article class="exact">
<span>INDEPENDENT RERUN</span>
<b>{corpusExact && matched16Exact && matched24Exact ? "3 / 3 EXACT" : "MISMATCH"}</b>
<p>自然长度与两个等长 cohort</p>
</article>
</div>
<div class="corpus-controls">
<div>
<span>COHORT</span>
<div class="corpus-cohort-switch" role="group" aria-label="选择公开语料长度 cohort">
<button type="button" data-corpus-cohort="natural" aria-pressed="true">自然 ≤96</button>
<button type="button" data-corpus-cohort="matched16" aria-pressed="false">同样本 16</button>
<button type="button" data-corpus-cohort="matched24" aria-pressed="false">同样本 24</button>
</div>
</div>
<div>
<span>MOE LAYER</span>
<div class="layer-switch corpus-layer-switch" role="group" aria-label="选择公开语料路由层">
@@ -422,7 +455,7 @@ const shardFraction = trace.provenance.shard_1_bytes / trace.provenance.checkpoi
</div>
</div>
<p data-corpus-mode-note>
先把每条 prompt 的 64 维路由分布归一,再平均;短中文标题与长代码 prompt 各有一票。
自然长度 cohort:每条 prompt 先归一再等权;它保留来源长度差异,适合描述实际选中样本。
</p>
</div>
@@ -456,7 +489,38 @@ const shardFraction = trace.provenance.shard_1_bytes / trace.provenance.checkpoi
<div class="corpus-findings">
<article><span>CURRENT HIGHEST CV</span><b data-corpus-highest-cv></b><p data-corpus-highest-cv-ci></p></article>
<article><span>CURRENT LARGEST JSD</span><b data-corpus-largest-jsd></b><p data-corpus-largest-jsd-ci></p></article>
<article><span>WHAT CHANGED</span><b>区间替代单点印象</b><p>看到“不同”之后,继续问 prompt 换一批时波动多大。</p></article>
<article><span>CURRENT COHORT</span><b data-corpus-cohort-title>自然长度 ≤96</b><p data-corpus-cohort-boundary>四域 token 总量不同;不能把差异全归因于内容。</p></article>
</div>
<div class="length-sensitivity">
<div class="length-sensitivity-head">
<div>
<span>PAIRED LENGTH SENSITIVITY / SAME SOURCE PROMPTS</span>
<h5>同一条 prompt:16 → 24 tokens,CV 怎样变化?</h5>
</div>
<p>
short / long 每次 bootstrap 使用同一组 prompt indices;下方 Δ = CV24 − CV16。
负值表示读入后续 8 tokens 后,64-expert 分布更平。
</p>
</div>
<div class="length-delta-grid" data-length-delta-grid></div>
<div class="length-pair-summary">
<article>
<span>中文新闻 ↔ 代码 / JSD</span>
<b data-length-jsd></b>
<p data-length-jsd-ci></p>
</article>
<article>
<span>LARGEST |CV Δ|</span>
<b data-length-largest></b>
<p data-length-largest-ci></p>
</article>
<article>
<span>READING</span>
<b>长度影响存在,但没有抹掉域差异</b>
<p>六层中文↔代码 JSD 都下降,24-token 下仍保持非零经验距离。</p>
</article>
</div>
</div>
<div class="evidence-links">
@@ -469,7 +533,8 @@ const shardFraction = trace.provenance.shard_1_bytes / trace.provenance.checkpoi
<div class="artifact-boundary">
<b>DESCRIPTIVE, NOT SEMANTICS</b>
<p>
这是固定 128 条公开 prompt 上的前六个 MoE 层,不是训练分布或线上流量。
这是三个固定公开 cohort 上的前六个 MoE 层,不是训练分布或线上流量;matched cohort
只代表各域至少 24 tokens 的子群。
bootstrap 区间描述本探针换 prompt 的稳定性,不是零差异假设检验;没有多重比较校正,
也不能把 E29、E48 等参数索引命名成“中文专家”或“代码专家”。
</p>
@@ -566,7 +631,8 @@ const shardFraction = trace.provenance.shard_1_bytes / trace.provenance.checkpoi
<code>experiments/deepseek/v2_lite_trace.py</code> ·
<code>experiments/deepseek/v2_lite_absorb_probe.py</code> ·
<code>experiments/deepseek/v2_lite_routing_corpus.py</code> ·
<code>research/DEEPSEEK_ROUTING_CORPUS_AUDIT.md</code>
<code>experiments/deepseek/compare_routing_length_control.py</code> ·
<code>research/DEEPSEEK_ROUTING_LENGTH_CONTROL_AUDIT.md</code>
</figcaption>
<script is:inline type="application/json" data-dsv2-trace set:html={compactJson}></script>
@@ -779,13 +845,34 @@ const shardFraction = trace.provenance.shard_1_bytes / trace.provenance.checkpoi
code: "Python 代码",
math: "小学数学",
};
const corpusLayer = (layer: number) => corpusData.layers.find((item: any) => item.layer === layer);
const cohortMeta: Record<string, { title: string; boundary: string }> = {
natural: {
title: "自然长度 ≤96",
boundary: "四域 token 总量不同;不能把差异全归因于内容。",
},
matched16: {
title: "同样本 · 16 tokens",
boundary: "只读取至少 24-token 固定 cohort 的前 16 tokens。",
},
matched24: {
title: "同样本 · 24 tokens",
boundary: "与 16-token 档源 prompt 完全相同,只增加后续 8 tokens。",
},
};
let corpusCohort = "natural";
let corpusLayerNumber = 1;
let corpusMode = "prompt_balanced";
const formatCi = (ci: number[], digits = 3) => `[${ci[0].toFixed(digits)}, ${ci[1].toFixed(digits)}]`;
const signed = (value: number, digits = 3) => `${value >= 0 ? "+" : ""}${value.toFixed(digits)}`;
const formatSignedCi = (ci: number[], digits = 3) =>
`[${signed(ci[0], digits)}, ${signed(ci[1], digits)}]`;
const renderCorpus = () => {
const layer = corpusLayer(corpusLayerNumber);
const cohort = corpusData.cohorts[corpusCohort];
const layer = cohort.layers.find((item: any) => item.layer === corpusLayerNumber);
const mode = layer.modes[corpusMode];
all<HTMLButtonElement>("[data-corpus-cohort]").forEach((button) => {
button.setAttribute("aria-pressed", String(button.dataset.corpusCohort === corpusCohort));
});
all<HTMLButtonElement>("[data-corpus-layer]").forEach((button) => {
button.classList.toggle("active", Number(button.dataset.corpusLayer) === corpusLayerNumber);
});
@@ -794,18 +881,24 @@ const shardFraction = trace.provenance.shard_1_bytes / trace.provenance.checkpoi
});
set(
"[data-corpus-mode-note]",
corpusMode === "prompt_balanced"
? "先把每条 prompt 的 64 维路由分布归一,再平均;短中文标题与长代码 prompt 各有一票。"
: "直接汇总全部 token 的路由计数;长 prompt 权重更高,适合回答“本批 token 实际流向哪里”。",
corpusCohort === "natural"
? corpusMode === "prompt_balanced"
? "自然长度 cohort:每条 prompt 先归一再等权;它保留来源长度差异,适合描述实际选中样本。"
: "自然长度 cohort:直接汇总 token 路由;长 prompt 权重更高,适合回答本批 token 实际流向哪里。"
: corpusMode === "prompt_balanced"
? "等长 cohort:每条 prompt 等权;16 / 24 两档使用同一批源样本,可以做 paired delta。"
: "等长 cohort 中每条 prompt 的 token 数相同,因此 token 加权与 prompt 等权理论上重合。",
);
set(
"[data-corpus-heat-title]",
`layer ${corpusLayerNumber} · ${corpusMode === "prompt_balanced" ? "每条 prompt 等权" : "按 token 加权"}`,
`${cohortMeta[corpusCohort].title} · layer ${corpusLayerNumber} · ${corpusMode === "prompt_balanced" ? "prompt 等权" : "token 加权"}`,
);
set("[data-corpus-cohort-title]", cohortMeta[corpusCohort].title);
set("[data-corpus-cohort-boundary]", cohortMeta[corpusCohort].boundary);
const rows = one<HTMLElement>("[data-corpus-domain-rows]");
if (rows) {
rows.replaceChildren(...corpusData.domains.map((domain: string) => {
rows.replaceChildren(...cohort.domains.map((domain: string) => {
const result = mode.domains[domain];
const metrics = result.metrics;
const top = result.top_experts[0];
@@ -816,7 +909,7 @@ const shardFraction = trace.provenance.shard_1_bytes / trace.provenance.checkpoi
const identityLabel = document.createElement("b");
const identityMeta = document.createElement("small");
identityLabel.textContent = corpusLabels[domain];
identityMeta.textContent = `32 prompts · ${corpusData.counts[domain].valid_tokens.toLocaleString()} tokens`;
identityMeta.textContent = `32 prompts · ${cohort.counts[domain].valid_tokens.toLocaleString()} tokens`;
identity.append(identityLabel, identityMeta);
const cv = document.createElement("span");
@@ -846,7 +939,7 @@ const shardFraction = trace.provenance.shard_1_bytes / trace.provenance.checkpoi
const heatmap = one<HTMLElement>("[data-corpus-heatmap]");
if (heatmap) {
heatmap.replaceChildren(...corpusData.domains.map((domain: string) => {
heatmap.replaceChildren(...cohort.domains.map((domain: string) => {
const result = mode.domains[domain];
const max = Math.max(...result.distribution);
const row = document.createElement("div");
@@ -874,16 +967,16 @@ const shardFraction = trace.provenance.shard_1_bytes / trace.provenance.checkpoi
const corner = document.createElement("b");
corner.textContent = "DOMAIN";
cells.push(corner);
corpusData.domains.forEach((domain: string) => {
cohort.domains.forEach((domain: string) => {
const header = document.createElement("b");
header.textContent = corpusLabels[domain];
cells.push(header);
});
corpusData.domains.forEach((left: string) => {
cohort.domains.forEach((left: string) => {
const header = document.createElement("b");
header.textContent = corpusLabels[left];
cells.push(header);
corpusData.domains.forEach((right: string) => {
cohort.domains.forEach((right: string) => {
const cell = document.createElement("span");
if (left === right) {
cell.className = "diagonal";
@@ -902,7 +995,7 @@ const shardFraction = trace.provenance.shard_1_bytes / trace.provenance.checkpoi
jsd.replaceChildren(...cells);
}
const highest = corpusData.domains
const highest = cohort.domains
.map((domain: string) => ({ domain, value: mode.domains[domain].metrics.cv }))
.sort((left: any, right: any) => right.value.point - left.value.point)[0];
const largest = [...mode.pairs]
@@ -925,7 +1018,63 @@ const shardFraction = trace.provenance.shard_1_bytes / trace.provenance.checkpoi
"[data-corpus-largest-jsd-ci]",
`95% CI ${formatCi(largest.js_divergence.ci95)} · nats`,
);
const comparisonLayer = corpusData.lengthSensitivity.layers
.find((item: any) => item.layer === corpusLayerNumber);
const comparison = comparisonLayer.modes[corpusMode];
const deltaGrid = one<HTMLElement>("[data-length-delta-grid]");
if (deltaGrid) {
deltaGrid.replaceChildren(...cohort.domains.map((domain: string) => {
const result = comparison.domains[domain];
const cv = result.metrics.cv;
const card = document.createElement("article");
const label = document.createElement("span");
const values = document.createElement("b");
const delta = document.createElement("strong");
const detail = document.createElement("p");
label.textContent = corpusLabels[domain];
values.textContent = `${cv.short.toFixed(3)} → ${cv.long.toFixed(3)}`;
delta.textContent = `Δ ${signed(cv.delta_long_minus_short)}`;
delta.className = cv.delta_long_minus_short <= 0 ? "down" : "up";
detail.textContent = `paired 95% ${formatSignedCi(cv.delta_ci95)} · TV ${result.total_variation.point.toFixed(3)}`;
card.append(label, values, delta, detail);
return card;
}));
}
const chineseCode = comparison.pairs.find((pair: any) =>
pair.left === "chinese" && pair.right === "code"
).js_divergence;
set(
"[data-length-jsd]",
`${chineseCode.short.toFixed(3)} → ${chineseCode.long.toFixed(3)} · Δ ${signed(chineseCode.delta_long_minus_short)}`,
);
set(
"[data-length-jsd-ci]",
`paired 95% ${formatSignedCi(chineseCode.delta_ci95)} · L${corpusLayerNumber}`,
);
const largestDelta = cohort.domains
.map((domain: string) => ({
domain,
value: comparison.domains[domain].metrics.cv,
}))
.sort((left: any, right: any) =>
Math.abs(right.value.delta_long_minus_short) - Math.abs(left.value.delta_long_minus_short)
)[0];
set(
"[data-length-largest]",
`${corpusLabels[largestDelta.domain]} · Δ ${signed(largestDelta.value.delta_long_minus_short)}`,
);
set(
"[data-length-largest-ci]",
`paired 95% ${formatSignedCi(largestDelta.value.delta_ci95)} · CV24 − CV16`,
);
};
all<HTMLButtonElement>("[data-corpus-cohort]").forEach((button) => {
button.addEventListener("click", () => {
corpusCohort = button.dataset.corpusCohort ?? "natural";
renderCorpus();
});
});
all<HTMLButtonElement>("[data-corpus-layer]").forEach((button) => {
button.addEventListener("click", () => {
corpusLayerNumber = Number(button.dataset.corpusLayer);
@@ -987,7 +1136,8 @@ const shardFraction = trace.provenance.shard_1_bytes / trace.provenance.checkpoi
.corpus-controls > div > span,
.corpus-heat-head span,
.corpus-comparison span,
.corpus-findings span {
.corpus-findings span,
.length-sensitivity span {
margin: 0;
color: var(--blue);
font: 700 .69rem/1.3 var(--font-mono);
@@ -1339,7 +1489,7 @@ const shardFraction = trace.provenance.shard_1_bytes / trace.provenance.checkpoi
.load-lessons b { display: block; margin-top: .35rem; font-size: .77rem; }
.corpus-ledger {
display: grid;
grid-template-columns: repeat(5, 1fr);
grid-template-columns: repeat(6, 1fr);
border: 1px solid rgba(32,32,39,.14);
}
.corpus-ledger article {
@@ -1361,7 +1511,7 @@ const shardFraction = trace.provenance.shard_1_bytes / trace.provenance.checkpoi
}
.corpus-controls {
display: grid;
grid-template-columns: auto 1.1fr minmax(15rem, 1.3fr);
grid-template-columns: 1.2fr auto 1fr;
gap: 1rem;
align-items: end;
margin-top: .8rem;
@@ -1371,8 +1521,10 @@ const shardFraction = trace.provenance.shard_1_bytes / trace.provenance.checkpoi
}
.corpus-controls > div { display: grid; gap: .45rem; }
.corpus-controls .layer-switch { margin: 0; }
.corpus-mode-switch { display: flex; }
.corpus-mode-switch button {
.corpus-mode-switch,
.corpus-cohort-switch { display: flex; }
.corpus-mode-switch button,
.corpus-cohort-switch button {
padding: .58rem .75rem;
border: 1px solid rgba(32,32,39,.22);
background: #fffdf8;
@@ -1380,14 +1532,19 @@ const shardFraction = trace.provenance.shard_1_bytes / trace.provenance.checkpoi
font: 650 .67rem/1 var(--font-mono);
cursor: pointer;
}
.corpus-mode-switch button + button { border-left: 0; }
.corpus-mode-switch button[aria-pressed="true"] {
.corpus-mode-switch button + button,
.corpus-cohort-switch button + button { border-left: 0; }
.corpus-mode-switch button[aria-pressed="true"],
.corpus-cohort-switch button[aria-pressed="true"] {
border-color: var(--blue);
background: var(--blue);
color: white;
}
.corpus-controls > p {
grid-column: 1 / -1;
margin: 0;
padding-top: .75rem;
border-top: 1px solid rgba(32,32,39,.12);
color: rgba(32,32,39,.62);
font-size: .69rem;
line-height: 1.5;
@@ -1543,6 +1700,93 @@ const shardFraction = trace.provenance.shard_1_bytes / trace.provenance.checkpoi
font-size: .65rem;
line-height: 1.45;
}
.length-sensitivity {
margin-top: .8rem;
padding: 1rem;
border: 1px solid rgba(32,32,39,.15);
background:
linear-gradient(120deg, rgba(57,120,110,.11), transparent 42%),
#e8e2d7;
}
.length-sensitivity-head {
display: grid;
grid-template-columns: 1fr 1.25fr;
gap: 1.2rem;
align-items: end;
}
.length-sensitivity h5 {
margin: .4rem 0 0;
font: 720 1.08rem/1.15 var(--font-display);
}
.length-sensitivity-head > p {
margin: 0;
color: rgba(32,32,39,.62);
font-size: .69rem;
line-height: 1.55;
}
.length-delta-grid {
display: grid;
grid-template-columns: repeat(4, 1fr);
margin-top: .8rem;
border: 1px solid rgba(32,32,39,.13);
background: #fffdf8;
}
.length-delta-grid > :global(article) {
padding: .8rem;
border-right: 1px solid rgba(32,32,39,.11);
}
.length-delta-grid > :global(article:last-child) { border-right: 0; }
.length-delta-grid > :global(article > span) {
display: block;
color: var(--blue);
font: 700 .62rem/1.2 var(--font-mono);
}
.length-delta-grid > :global(article > b) {
display: block;
margin-top: .45rem;
font: 730 .88rem/1.1 var(--font-mono);
}
.length-delta-grid > :global(article > strong) {
display: inline-block;
margin-top: .35rem;
padding: .22rem .35rem;
font: 750 .7rem/1 var(--font-mono);
}
.length-delta-grid > :global(article > strong.down) {
background: rgba(57,120,110,.12);
color: var(--teal);
}
.length-delta-grid > :global(article > strong.up) {
background: rgba(186,118,44,.12);
color: var(--amber);
}
.length-delta-grid > :global(article > p) {
margin: .4rem 0 0;
color: rgba(32,32,39,.54);
font: .59rem/1.4 var(--font-mono);
}
.length-pair-summary {
display: grid;
grid-template-columns: repeat(3, 1fr);
margin-top: .65rem;
border: 1px solid rgba(32,32,39,.13);
}
.length-pair-summary article {
padding: .8rem;
border-right: 1px solid rgba(32,32,39,.11);
}
.length-pair-summary article:last-child { border-right: 0; }
.length-pair-summary b {
display: block;
margin-top: .4rem;
font-size: .77rem;
}
.length-pair-summary p {
margin: .3rem 0 0;
color: rgba(32,32,39,.55);
font-size: .63rem;
line-height: 1.45;
}
.observed-cache {
display: grid;
grid-template-columns: 1fr auto 1.25fr;
@@ -1777,7 +2021,8 @@ const shardFraction = trace.provenance.shard_1_bytes / trace.provenance.checkpoi
.kernel-contract,
.corpus-controls,
.corpus-heat-head,
.corpus-comparison { grid-template-columns: 1fr; }
.corpus-comparison,
.length-sensitivity-head { grid-template-columns: 1fr; }
.artifact-status { grid-template-columns: 1fr 1fr; }
.artifact-tabs { grid-template-columns: 1fr 1fr; }
.route-controls { grid-template-columns: 1fr 1fr; }
@@ -1789,6 +2034,7 @@ const shardFraction = trace.provenance.shard_1_bytes / trace.provenance.checkpoi
.checksum-grid,
.absorb-metrics { grid-template-columns: 1fr 1fr; }
.corpus-ledger { grid-template-columns: repeat(3, 1fr); }
.length-delta-grid { grid-template-columns: 1fr 1fr; }
.corpus-heat-head p { text-align: left; }
.layer-evidence { grid-template-columns: repeat(9, 1fr); }
.repro-gate { grid-template-columns: 1fr 1fr; }
@@ -1817,7 +2063,9 @@ const shardFraction = trace.provenance.shard_1_bytes / trace.provenance.checkpoi
.checksum-grid,
.cache-ledger,
.corpus-ledger,
.corpus-findings { grid-template-columns: 1fr; }
.corpus-findings,
.length-delta-grid,
.length-pair-summary { grid-template-columns: 1fr; }
.route-metrics article,
.cache-ratio article,
.load-lessons article,
@@ -1826,8 +2074,12 @@ const shardFraction = trace.provenance.shard_1_bytes / trace.provenance.checkpoi
.checksum-grid article { border-right: 0; border-bottom: 1px solid rgba(32,32,39,.12); }
.corpus-ledger article,
.corpus-findings article { border-right: 0; border-bottom: 1px solid rgba(32,32,39,.12); }
.corpus-mode-switch { display: grid; grid-template-columns: 1fr; }
.corpus-mode-switch button + button { border-left: 1px solid rgba(32,32,39,.22); border-top: 0; }
.corpus-mode-switch,
.corpus-cohort-switch { display: grid; grid-template-columns: 1fr; }
.corpus-mode-switch button + button,
.corpus-cohort-switch button + button { border-left: 1px solid rgba(32,32,39,.22); border-top: 0; }
.length-delta-grid > :global(article),
.length-pair-summary article { border-right: 0; border-bottom: 1px solid rgba(32,32,39,.11); }
.artifact-boundary { grid-template-columns: 1fr; }
.load-dials { grid-template-columns: 1fr; }
.observed-cache,
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+3 -3
View File
@@ -770,13 +770,13 @@ const toc = [
<p class="lede">
前面的四联实验负责建立公式与角色合同;下面的六联工件实验固定官方 revision、tokenizer、
模型代码和 checkpoint 第一分片,在 RTX 5090 上连续执行 layer 0–6。它把真实观测、shape 推导、
吸收式 latent cache、128 条公开语料的路由区间、实现差距和未覆盖范围放在同一张证据图里。
吸收式 latent cache、自然长度与同 prompt 等长对照、实现差距和未覆盖范围放在同一张证据图里。
</p>
<div class="artifact-callout">
<article><span>X / FORWARD</span><b>7 / 27 layers</b><p>1 个 dense 层 + 6 个 MoE 层;layer 7 因跨分片停止。</p></article>
<article><span>X / ROUTES</span><b>304,560</b><p>128 条公开 prompt、8,460 token、6 个 MoE 层的真实 top-6 选择。</p></article>
<article><span>X / ROUTES</span><b>488,880</b><p>自然 ≤96 与同样本 16 / 24-token 三档、六个 MoE 层的真实 top-6 选择。</p></article>
<article><span>X / ABSORB CACHE</span><b>266,240 → 29,952 B</b><p>同一真实 layer-1 权重的 naive / absorb active buffers。</p></article>
<article><span>X / RERUN</span><b>BYTE-EXACT</b><p>固定选样、逐 prompt loads 与 2,000 次 bootstrap 摘要完整复跑。</p></article>
<article><span>X / RERUN</span><b>3 / 3 EXACT</b><p>三档 trace byte-exact;16→24 delta 使用同 prompt paired bootstrap。</p></article>
</div>
<DeepSeekArtifactLab />
</section>
+7 -4
View File
@@ -15,7 +15,7 @@ const workstreams = [
{ label: "表示、位置与残差高速公路", value: 81, next: "加入真实 hidden-state / norm traces、长上下文位置外推复现与更多深层稳定性消融" },
{ label: "Scaling Laws", value: 74, next: "加入真实拟合复现、置信区间与更多模型族对照" },
{ label: "数据工程与预训练配方", value: 73, next: "逐图精读 FineWeb / DCLM,加入真实去重与 mixture traces" },
{ label: "DeepSeek 专题", value: 91, next: "SM90 FlashMLA kernel、完整 27 层、长度匹配对照、FP8/pipeline 与 R1-like RL 复现" },
{ label: "DeepSeek 专题", value: 92, next: "SM90 FlashMLA kernel、完整 27 层、tokenization 扰动、FP8/pipeline 与 R1-like RL 复现" },
{ label: "指令微调与人类偏好", value: 75, next: "加入真实偏好分歧样本、RM 长度偏置与 PPO/DPO 小模型复现" },
{ label: "推理与测试时扩展", value: 76, next: "真实模型采样曲线、PRM 案例与逐篇图表精读" },
{ label: "工具使用与长程 Agent", value: 74, next: "补真实环境 traces、cross-harness 对照、Agent RL 训练曲线与安全案例" },
@@ -50,7 +50,7 @@ const workstreams = [
<div><dt>OVERALL</dt><dd>专题平均 {average}%</dd></div>
<div><dt>READABLE</dt><dd>{published} 个首版可读专题</dd></div>
<div><dt>ACTIVE</dt><dd>{researching} 个研究/写作中</dd></div>
<div><dt>UPDATED</dt><dd>2026-07-29 15:25 CST</dd></div>
<div><dt>UPDATED</dt><dd>2026-07-29 16:03 CST</dd></div>
<div><dt>MODE</dt><dd>持续迭代,不锁死版本</dd></div>
</dl>
</div>
@@ -102,7 +102,7 @@ const workstreams = [
<article><span>✓</span><h3>语言模型前史深度专题</h3><p>八张独立问题账、33 个正式节点、20 段长文与概率—向量—记忆—对齐四联实验。</p></article>
<article><span>✓</span><h3>Transformer 深度专题</h3><p>十张独立问题账、40 个正式节点、21 段正文与 QKV—Mask—多头位置—Block 成本四联实验。</p></article>
<article><span>✓</span><h3>表示、位置与残差高速公路深度专题</h3><p>二十张问题账、66 个一手节点、DeepSeek/Kimi 双谱系,以及 Token—位置—Norm—Residual/FFN 四联实验。</p></article>
<article><span>✓</span><h3>DeepSeek 三轮真实权重里程碑</h3><p>在二十四张问题账、十次转向与四联公式实验上,新增 V2-Lite 7/27 层连续 forward、官方 V3 absorb 的 576 元素真实缓存,以及四域 128 条固定公开 prompt、304,560 次真实路由、2,000 次 prompt bootstrap 与 byte-exact 独立重跑的六联实验。</p></article>
<article><span>✓</span><h3>DeepSeek 三轮真实权重里程碑</h3><p>在二十四张问题账、十次转向与四联公式实验上,新增 V2-Lite 7/27 层连续 forward、官方 V3 absorb 的 576 元素真实缓存,以及自然长度 / 同源 16 / 同源 24 三个 cohort、488,880 次真实路由、2,000 次成对 prompt bootstrap 与 3/3 byte-exact 独立重跑的六联实验。</p></article>
<article><span>✓</span><h3>Kimi K3 技术报告二轮深读</h3><p>三十二张问题账、Figure 1–16 / Table 1–5 审计、100 节点阅读链,以及 Delta—Decay—AttnRes—LatentMoE—SiTU—QB—MOPD—Cache 八联实验。</p></article>
<article><span>✓</span><h3>Kimi K3 三轮开放工件里程碑</h3><p>固定官方 revisions,审计 96 个 shards、497,220 个 tensor entries 与真实 KDA / MLA / MoE / MoonViT shapes;四联实验分开显示层型、tensor anatomy、参数范围和复现边界。</p></article>
<article><span>✓</span><h3>FlashKDA RTX 5090 执行闸门</h3><p>隔离 CUDA 13.0 / glibc 2.39 编译 sm_120a wheel;6/6 官方参考逐元素相等,并完成 fixed / varlen、三种 state mode 的 1,800 个 CUDA Event samples。</p></article>
@@ -134,7 +134,7 @@ const workstreams = [
<div class="queue-table">
<div class="head"><b>优先级</b><b>专题</b><b>本轮交付</b><b>完成闸门</b></div>
<div><span>P0</span><strong>K3 三轮</strong><p>开放权重 traces → FlashKDA / AttnRes / MoE 真实行为 → Figure 1–16 数值重绘与独立复现</p><em>运行证据 + 逐图复现</em></div>
<div><span>P0</span><strong>DeepSeek 三轮</strong><p>SM90 FlashMLA kernel / 完整 27 层 / 长度匹配对照 → FP8 / pipeline traces → R1-like RL 小模型复现</p><em>运行证据 + 独立复现</em></div>
<div><span>P0</span><strong>DeepSeek 三轮</strong><p>SM90 FlashMLA kernel / 完整 27 层 / tokenizer 与 prompt-template 扰动 → FP8 / pipeline traces → R1-like RL 小模型复现</p><em>运行证据 + 独立复现</em></div>
<div><span>P0</span><strong>Transformer 二轮</strong><p>多头电路逐图 → Pre/Post-LN 真实 traces → Flash/KV 配置与 kernel 对照</p><em>逐图笔记 + 实测边界</em></div>
<div><span>P0</span><strong>表示、位置与残差二轮</strong><p>真实 hidden-state / norm traces → 长上下文位置外推 → mHC / AttnRes 深层稳定性消融</p><em>可复现实验 + 逐图笔记</em></div>
<div><span>P0</span><strong>语言模型前史二轮</strong><p>Kneser–Ney / LSTM / Bahdanau 逐图 → 真实小语料复现 → tokenizer 公平性</p><em>可复现实验 + 逐图笔记</em></div>
@@ -215,6 +215,9 @@ const workstreams = [
<div><time>2026-07-29</time><b>A_log 形状冲突保持未决</b><p>checkpoint 的 [128] 与 config / remote code / FlashKDA API 期待的 [96] 并列展示;不宣布权重损坏,也不把 channel-wise 假设写成真实 forward。</p></div>
<div><time>2026-07-29</time><b>FlashKDA 编译与执行永久分两道闸门</b><p>容器产出 sm_120a wheel 只证明可编译;RTX 5090 的 6/6 official-reference exact suite 通过后,才把证据升级为本机执行 X。</p></div>
<div><time>2026-07-29</time><b>作者表与 RTX 5090 表永久分账</b><p>H20 / GB200 保持 O;本站只报告独立环境、协议、300 samples/mode 和延迟分布,未跑本机 FLA 就不写本机 speedup。</p></div>
<div><time>2026-07-29</time><b>32-token 对照改为同源 16→24</b><p>TNEWS 只有 105/10,000 条达到 32 tokens,强行统一会落入约 1% 极端长尾;24-token eligibility 仍保留 1,609 条中文候选。</p></div>
<div><time>2026-07-29</time><b>长度敏感性必须成对重采样</b><p>16-token 输入严格是 24-token 输入前缀,2,000 次 bootstrap 共用 prompt indices;结果只描述固定 cohort 的长度敏感性。</p></div>
<div><time>2026-07-29</time><b>三类 cohort 永久分身份</b><p>自然长度回答本批样本如何路由;matched-16 / 24 回答同一 prompt 多看 8 tokens 后如何变化,不把二者混成内容因果。</p></div>
</div>
</section>