feat: trace DeepSeek Chat completion depth

This commit is contained in:
wuyang
2026-07-30 00:24:27 +08:00
parent fb44d15bb8
commit 8bb488f275
23 changed files with 1507052 additions and 33 deletions
@@ -0,0 +1,851 @@
---
import rawLab from "@/data/deepseek-v2-lite-chat-completion-depth-compact.json";
const lab = rawLab as any;
const json = JSON.stringify(lab).replaceAll("<", "\\u003c");
const conditions = [
"s0_eos",
"s1_eos",
"s0_bos",
"s1_bos",
"s0_x",
"s1_x",
"s0_period",
"s1_period",
];
const conditionLabels: Record<string, string> = {
s0_eos: "S0 · EOS",
s1_eos: "S1 · EOS",
s0_bos: "S0 · BOS",
s1_bos: "S1 · BOS",
s0_x: "S0 · x",
s1_x: "S1 · x",
s0_period: "S0 · 句点",
s1_period: "S1 · 句点",
};
const firstHidden = lab.depth.hiddenSeries.all.system_eos;
const firstRouter = lab.depth.routerSeries.all.system_eos;
const shortStage = (stage: string) => (
stage === "embedding"
? "E"
: stage === "final_norm"
? "N"
: `L${Number(stage.slice(-2))}`
);
---
<figure class="completion-depth-lab" data-completion-depth-lab>
<header class="cd-head">
<div>
<p>ROUND 05 / COMPLETION × FULL DEPTH</p>
<h3>一句输出怎样穿过 27 层:完成、答对、表示、路由分四张账</h3>
</div>
<p>
同一官方 SFT Chat checkpoint、同 16 条完整 source、同八格输入。
先把统一预算升到 512,再沿 embedding → 27 decoder layers → final norm
追踪隐藏状态,并读取 26 个 MoE gate。每个数字都能回到原始 JSON 与独立复跑。
</p>
</header>
<div class="cd-ledger">
<article class="pass"><span>512 · NATURAL EOS</span><b>121 / 128</b><p>128-token 时只有 31 / 128</p></article>
<article><span>MATH · STRICT</span><b>23 / 32</b><p>4 tasks × 8 conditions</p></article>
<article><span>CODE · TESTS PASS</span><b>24 / 32</b><p>官方 HumanEval tests</p></article>
<article><span>HIDDEN TRACE</span><b>29 stages</b><p>embedding + 27 layers + norm</p></article>
<article><span>ROUTER TRACE</span><b>1,918,176</b><p>target top-6 decisions</p></article>
<article class="pass"><span>FRESH-PROCESS RERUN</span><b>5,184 hashes</b><p>hidden + route + weights exact</p></article>
</div>
<div class="cd-tabs" role="tablist" aria-label="选择完整生成与深度追踪视图">
<button type="button" role="tab" data-cd-tab="completion" aria-selected="true">
<span>01</span><b>完成度阶梯</b><small>128 → 512</small>
</button>
<button type="button" role="tab" data-cd-tab="tasks" aria-selected="false" tabindex="-1">
<span>02</span><b>答案真的对吗</b><small>Math + Code</small>
</button>
<button type="button" role="tab" data-cd-tab="hidden" aria-selected="false" tabindex="-1">
<span>03</span><b>表示怎样分叉</b><small>29 hidden stages</small>
</button>
<button type="button" role="tab" data-cd-tab="router" aria-selected="false" tabindex="-1">
<span>04</span><b>专家怎样换路</b><small>26 MoE gates</small>
</button>
</div>
<section class="cd-panel" data-cd-panel="completion">
<div class="cd-panel-lead">
<div><span>I / STOPPING LEDGER</span><h4>长度上限不是 EOS,更不是错误答案</h4></div>
<p>
两次运行都对全部 128 格使用统一预算;不是只给先前截断的 97 格“续杯”。
512 解决了大部分截断,但仍有 7 格没有自然结束。
</p>
</div>
<div class="budget-ladder" aria-label="128 与 512 token 完成度比较">
{lab.completion.budgetLadder.map((budget: any) => (
<article>
<header><span>MAX NEW TOKENS</span><b>{budget.maxNewTokens}</b></header>
<div class="budget-track">
<i style={`--complete:${budget.naturalEos / budget.outputs * 100}%`}></i>
</div>
<dl>
<div><dt>NATURAL EOS</dt><dd>{budget.naturalEos} / {budget.outputs}</dd></div>
<div><dt>BUDGET TRUNCATED</dt><dd>{budget.truncated} / {budget.outputs}</dd></div>
</dl>
</article>
))}
<div class="budget-arrow"><span>统一重跑</span><b>+90</b><small>新增自然 EOS</small></div>
</div>
<div class="condition-table">
<header><b>CONDITION</b><b>NATURAL EOS</b><b>MEAN TOKENS</b><b>MATH STRICT</b><b>CODE PASS</b></header>
{conditions.map((condition) => {
const row = lab.completion.summary.by_condition[condition];
return (
<div data-completion-condition={condition}>
<span>{conditionLabels[condition]}</span>
<b class={row.natural_eos === 16 ? "good" : ""}>{row.natural_eos} / 16</b>
<b>{row.mean_generated_tokens.toFixed(1)}</b>
<b>{row.math_strict_complete_exact} / {row.math_sources}</b>
<b>{row.code_tests_pass} / {row.code_sources}</b>
</div>
);
})}
</div>
<div class="incomplete-ledger">
<header><span>仍未解决的 7 格</span><p>6 个 English continuation + 1 个未闭合的 HumanEval code fence</p></header>
<div>
{lab.completion.incompleteRows.map((row: any) => (
<article>
<b>{row.sourceId}</b>
<span>{conditionLabels[row.condition]} · {row.generatedTokens} tokens</span>
<em>{row.domain === "code" ? "AST FAIL · NOT RUN" : "NO EOS"}</em>
</article>
))}
</div>
</div>
<div class="prefix-gate">
<article><span>BASELINE PROMPT HASH</span><b>128 / 128 EXACT</b><p>输入身份没有漂移</p></article>
<article><span>FIRST 128 GENERATED TOKENS</span><b>128 / 128 EXACT</b><p>512 运行完整复现短预算前缀</p></article>
<article><span>INDEPENDENT LONG RERUN</span><b>32 / 32 EXACT</b><p>完整 token IDs、文本与停止状态</p></article>
</div>
</section>
<section class="cd-panel" data-cd-panel="tasks" hidden>
<div class="cd-panel-lead">
<div><span>II / TASK LEDGER</span><h4>把“可解析”与“通过官方测试”分开</h4></div>
<p>
数学按 final marker 优先抽取,最后数字只作 fallback;代码先抽取与 AST parse,
再逐 candidate 进入无网络、只读、无 host mount 的新容器。
</p>
</div>
<div class="task-control">
<label>
<span>选择八格条件</span>
<select data-task-condition aria-label="选择任务评测条件">
{conditions.map((condition) => (
<option value={condition}>{conditionLabels[condition]}</option>
))}
</select>
</label>
<div>
<span>读格子</span>
<p><i class="pass"></i>通过 / exact <i class="fail"></i>执行但失败 <i class="warn"></i>fallback 或未执行</p>
</div>
</div>
<div class="task-columns">
<article>
<header><span>GSM8K · 4 SOURCES</span><b data-math-condition-total>—</b></header>
<div class="task-grid" data-math-task-grid></div>
<div class="task-summary">
<div><span>STRICT EXACT / ALL CELLS</span><b>{lab.completion.taskTotals.math.strictCorrect} / 32</b></div>
<p>20 boxed · 8 answer phrase · 4 last-number fallback</p>
</div>
</article>
<article>
<header><span>HUMANEVAL · 4 SOURCES</span><b data-code-condition-total>—</b></header>
<div class="task-grid" data-code-task-grid></div>
<div class="task-summary">
<div><span>OFFICIAL TESTS PASS / ALL CELLS</span><b>{lab.completion.taskTotals.code.testsPassed} / 32</b></div>
<p>24 pass · 5 assertion · 2 runtime · 1 not run</p>
</div>
</article>
</div>
<div class="sandbox-flow">
<article><span>01 / EXTRACT</span><b>final marker / code fence</b><p>gold 与 tests 从不进入 prompt</p></article>
<i>→</i>
<article><span>02 / STATIC</span><b>Decimal / Python AST</b><p>先确认结果能被判定</p></article>
<i>→</i>
<article class="active"><span>03 / FRESH CONTAINER</span><b>network none · read-only</b><p>65534 · cap drop ALL · no mounts</p></article>
<i>→</i>
<article><span>04 / OFFICIAL CHECK</span><b>5s · 256MiB · 0.5 CPU</b><p>pass 只是功能证据,不是安全证明</p></article>
</div>
</section>
<section class="cd-panel" data-cd-panel="hidden" hidden>
<div class="cd-panel-lead">
<div><span>III / REPRESENTATION DEPTH</span><h4>目标 token 相同,何时开始“不再是同一个状态”</h4></div>
<p>
embedding 是逐 token lookup,所以 10 条 edge 的 15,370 个目标行全部 exact;
进入 layer 00 后,前文开始通过 attention 混入,十条 edge 的 exact rows 都变成 0。
</p>
</div>
<div class="depth-controls">
<label><span>对比边</span><select data-hidden-edge aria-label="选择隐藏状态对比边">
{lab.contract.edgeOrder.map((edge: string) => (
<option value={edge}>{lab.contract.edgeLabels[edge]}</option>
))}
</select></label>
<label><span>聚合域</span><select data-hidden-domain aria-label="选择隐藏状态聚合域">
<option value="all">四域合计 · n=16</option>
<option value="english">English · n=4</option>
<option value="chinese">Chinese · n=4</option>
<option value="code">Code · n=4</option>
<option value="math">Math · n=4</option>
</select></label>
<label><span>纵轴</span><select data-hidden-metric aria-label="选择隐藏状态指标">
<option value="divergence">1 − cosine · %</option>
<option value="relative">relative L2 · %</option>
<option value="maxabs">max absolute delta</option>
</select></label>
</div>
<div class="depth-chart">
<header><span data-hidden-chart-title>System on − off · EOS</span><b data-hidden-chart-domain>四域合计</b></header>
<svg viewBox="0 0 840 270" role="img" aria-label="29 个隐藏状态阶段的差异曲线">
<g class="chart-grid">
<line x1="42" y1="34" x2="820" y2="34"></line>
<line x1="42" y1="126" x2="820" y2="126"></line>
<line x1="42" y1="218" x2="820" y2="218"></line>
</g>
<text x="4" y="38" data-hidden-ymax>—</text>
<text x="4" y="130" data-hidden-ymid>—</text>
<text x="18" y="222">0</text>
<polyline data-hidden-line points="" />
<circle data-hidden-focus cx="42" cy="218" r="5" />
<text x="42" y="249">E</text><text x="70" y="249">L0</text>
<text x="182" y="249">L4</text><text x="294" y="249">L8</text>
<text x="406" y="249">L12</text><text x="518" y="249">L16</text>
<text x="630" y="249">L20</text><text x="742" y="249">L24</text>
<text x="808" y="249">N</text>
</svg>
</div>
<div class="depth-strip" data-hidden-strip>
{firstHidden.map((row: any, index: number) => (
<button type="button" data-hidden-stage={index} title={row.stage}>
<span>{shortStage(row.stage)}</span><i></i>
</button>
))}
</div>
<div class="depth-reading">
<article><span>SELECTED STAGE</span><b data-hidden-stage-name>embedding</b><p data-hidden-stage-note>逐 token lookup;目标 IDs 相同</p></article>
<article><span>MEAN COSINE</span><b data-hidden-cosine>1.000000</b><p>token-weighted</p></article>
<article><span>MEAN RELATIVE L2</span><b data-hidden-relative>0.0000%</b><p>4/16 source mean</p></article>
<article><span>EXACT ROWS</span><b data-hidden-exact>1,537 / 1,537</b><p>byte-exact BF16 rows</p></article>
<article><span>MAX |Δ|</span><b data-hidden-maxabs>0</b><p>本阶段目标内容范围</p></article>
</div>
<div class="depth-boundary">
<b>为什么只看 interior content token</b>
<p>
tokenizer 有 56 个 token 横跨字符边界,已排除;留下的 1,537 个 token / condition
在八格中 ID 序列完全一致。否则“同位置”未必是“同 token”。
</p>
</div>
</section>
<section class="cd-panel" data-cd-panel="router" hidden>
<div class="cd-panel-lead">
<div><span>IV / ROUTER DEPTH</span><h4>表示轻微转动,也可能换掉 top-6 专家排序</h4></div>
<p>
ordered exact 要求六个专家与顺序都相同;set exact 只要求集合相同;
weighted TV 还读取门控权重。三者回答不同问题,不能只挑一列讲故事。
</p>
</div>
<div class="depth-controls">
<label><span>对比边</span><select data-router-edge aria-label="选择路由对比边">
{lab.contract.edgeOrder.map((edge: string) => (
<option value={edge}>{lab.contract.edgeLabels[edge]}</option>
))}
</select></label>
<label><span>聚合域</span><select data-router-domain aria-label="选择路由聚合域">
<option value="all">四域合计 · n=16</option>
<option value="english">English · n=4</option>
<option value="chinese">Chinese · n=4</option>
<option value="code">Code · n=4</option>
<option value="math">Math · n=4</option>
</select></label>
<label><span>纵轴</span><select data-router-metric aria-label="选择路由指标">
<option value="ordered">ordered top-6 divergence · %</option>
<option value="set">expert-set divergence · %</option>
<option value="weighted">token-weighted TV · %</option>
<option value="load">aggregate load TV · %</option>
</select></label>
</div>
<div class="depth-chart router-chart">
<header><span data-router-chart-title>System on − off · EOS</span><b data-router-chart-domain>四域合计</b></header>
<svg viewBox="0 0 840 270" role="img" aria-label="26 个 MoE gate 的路由差异曲线">
<g class="chart-grid">
<line x1="42" y1="34" x2="820" y2="34"></line>
<line x1="42" y1="126" x2="820" y2="126"></line>
<line x1="42" y1="218" x2="820" y2="218"></line>
</g>
<text x="4" y="38" data-router-ymax>—</text>
<text x="4" y="130" data-router-ymid>—</text>
<text x="18" y="222">0</text>
<polyline data-router-line points="" />
<circle data-router-focus cx="42" cy="218" r="5" />
<text x="42" y="249">L1</text><text x="162" y="249">L5</text>
<text x="312" y="249">L10</text><text x="462" y="249">L15</text>
<text x="612" y="249">L20</text><text x="762" y="249">L25</text>
</svg>
</div>
<div class="depth-strip router-strip" data-router-strip>
{firstRouter.map((row: any, index: number) => (
<button type="button" data-router-layer={index} title={row.layer}>
<span>L{index + 1}</span><i></i>
</button>
))}
</div>
<div class="depth-reading router-reading">
<article><span>SELECTED GATE</span><b data-router-layer-name>layer 01</b><p>64 routed experts · top-6</p></article>
<article><span>ORDERED EXACT</span><b data-router-ordered>—</b><p>六个专家及顺序完全相同</p></article>
<article><span>SET EXACT</span><b data-router-set>—</b><p>忽略六个专家的顺序</p></article>
<article><span>MEAN JACCARD</span><b data-router-jaccard>—</b><p>逐 token 专家集合</p></article>
<article><span>WEIGHTED TV</span><b data-router-tv>—</b><p>top-6 门控质量变化</p></article>
</div>
<div class="repro-proof">
<article class="pass"><span>HIDDEN TENSOR HASHES</span><b>1,856 / 1,856</b><p>target + full input · fresh process</p></article>
<article class="pass"><span>ORDERED ROUTE HASHES</span><b>1,664 / 1,664</b><p>26 gates × 8 cells × 2 scopes × 4</p></article>
<article class="pass"><span>ROUTE-WEIGHT HASHES</span><b>1,664 / 1,664</b><p>BF16 gate weights exact</p></article>
<article><span>CLAIM BOUNDARY</span><b>association ≠ mediation</b><p>路由分叉不能自动解释输出或能力</p></article>
</div>
<div class="artifact-links">
<a href="https://huggingface.co/deepseek-ai/DeepSeek-V2-Lite-Chat" rel="noreferrer">官方 Chat checkpoint ↗</a>
<a href="https://git.k1412.top/wuyang/llm-atlas/src/branch/main/src/data/deepseek-v2-lite-chat-completion-512.json" rel="noreferrer">512 正式 generation JSON ↗</a>
<a href="https://git.k1412.top/wuyang/llm-atlas/src/branch/main/src/data/deepseek-v2-lite-chat-full-depth.json" rel="noreferrer">36MB 全深度原始 JSON ↗</a>
<a href="https://git.k1412.top/wuyang/llm-atlas/src/branch/main/research/DEEPSEEK_V2_LITE_CHAT_COMPLETION_DEPTH_AUDIT.md" rel="noreferrer">完整审计与非结论 ↗</a>
</div>
</section>
<figcaption>
<span>X / OFFICIAL BF16 CHAT · COMPLETION-AWARE FULL-DEPTH TRACE</span>
revision <code>{lab.model.revision}</code>;512 formal
<code>{lab.artifacts.completion.sha256.slice(0, 16)}…</code>;
full-depth formal <code>{lab.artifacts.depth.sha256.slice(0, 16)}…</code>。
四域各 4 条是机制显微镜,不是 benchmark。
</figcaption>
<script is:inline type="application/json" data-cd-data set:html={json}></script>
</figure>
<script>
const cdRoots = document.querySelectorAll<HTMLElement>(
"[data-completion-depth-lab]",
);
const cdDomainLabels: Record<string, string> = {
all: "四域合计",
english: "English · n=4",
chinese: "Chinese · n=4",
code: "Code · n=4",
math: "Math · n=4",
};
cdRoots.forEach((root) => {
const payload = root.querySelector<HTMLScriptElement>("[data-cd-data]");
if (!payload) return;
const data = JSON.parse(payload.textContent ?? "{}");
const one = <T extends Element>(selector: string) => (
root.querySelector<T>(selector)
);
const all = <T extends Element>(selector: string) => (
[...root.querySelectorAll<T>(selector)]
);
const set = (selector: string, value: string) => {
const node = one<HTMLElement>(selector);
if (node) node.textContent = value;
};
const percent = (value: number, digits = 1) => (
`${(value * 100).toFixed(digits)}%`
);
const tabs = all<HTMLButtonElement>("[data-cd-tab]");
const panels = all<HTMLElement>("[data-cd-panel]");
const selectTab = (tab: HTMLButtonElement) => {
tabs.forEach((candidate) => {
const active = candidate === tab;
candidate.setAttribute("aria-selected", String(active));
candidate.tabIndex = active ? 0 : -1;
});
panels.forEach((panel) => {
panel.hidden = panel.dataset.cdPanel !== tab.dataset.cdTab;
});
};
tabs.forEach((tab, index) => {
tab.addEventListener("click", () => selectTab(tab));
tab.addEventListener("keydown", (event) => {
if (!["ArrowLeft", "ArrowRight", "Home", "End"].includes(event.key)) {
return;
}
event.preventDefault();
let next = index;
if (event.key === "ArrowRight") next = (index + 1) % tabs.length;
if (event.key === "ArrowLeft") {
next = (index - 1 + tabs.length) % tabs.length;
}
if (event.key === "Home") next = 0;
if (event.key === "End") next = tabs.length - 1;
tabs[next].focus();
selectTab(tabs[next]);
});
});
const taskCondition = one<HTMLSelectElement>("[data-task-condition]");
const taskRows = data.completion.taskRows;
const taskClass = (row: any) => {
if (row.domain === "math") {
if (row.taskEvaluation.strict_complete_numeric_exact) return "pass";
if (
row.taskEvaluation.fixed_budget_numeric_exact
|| row.taskEvaluation.extraction_method === "last_number_fallback"
) return "warn";
return "fail";
}
const status = row.taskEvaluation.execution?.status;
if (status === "passed") return "pass";
if (status === "not_run") return "warn";
return "fail";
};
const taskLabel = (row: any) => {
if (row.domain === "math") {
const evaluation = row.taskEvaluation;
if (evaluation.strict_complete_numeric_exact) {
return `${evaluation.predicted_final} · EXACT`;
}
if (evaluation.predicted_final != null) {
return `${evaluation.predicted_final} · WRONG/FALLBACK`;
}
return "UNRESOLVED";
}
return (row.taskEvaluation.execution?.status ?? "not_run")
.replaceAll("_", " ")
.toUpperCase();
};
const renderTaskGrid = (
domain: "math" | "code",
selector: string,
totalSelector: string,
) => {
const condition = taskCondition?.value ?? "s0_eos";
const rows = taskRows.filter(
(row: any) => (
row.domain === domain && row.condition === condition
),
);
const container = one<HTMLElement>(selector);
if (!container) return;
container.replaceChildren(...rows.map((row: any) => {
const article = document.createElement("article");
article.className = taskClass(row);
const source = document.createElement("b");
source.textContent = row.sourceId;
const result = document.createElement("span");
result.textContent = taskLabel(row);
const completion = document.createElement("em");
completion.textContent = row.hitEos
? `${row.generatedTokens} TOKENS · EOS`
: `${row.generatedTokens} TOKENS · TRUNCATED`;
article.append(source, result, completion);
return article;
}));
const passing = rows.filter((row: any) => taskClass(row) === "pass").length;
set(totalSelector, `${passing} / ${rows.length} PASS`);
};
const renderTasks = () => {
renderTaskGrid(
"math",
"[data-math-task-grid]",
"[data-math-condition-total]",
);
renderTaskGrid(
"code",
"[data-code-task-grid]",
"[data-code-condition-total]",
);
};
taskCondition?.addEventListener("change", renderTasks);
type ChartConfig = {
kind: "hidden" | "router";
edge: HTMLSelectElement | null;
domain: HTMLSelectElement | null;
metric: HTMLSelectElement | null;
line: SVGPolylineElement | null;
focus: SVGCircleElement | null;
strip: HTMLElement | null;
selected: number;
};
const hiddenChart: ChartConfig = {
kind: "hidden",
edge: one("[data-hidden-edge]"),
domain: one("[data-hidden-domain]"),
metric: one("[data-hidden-metric]"),
line: one("[data-hidden-line]"),
focus: one("[data-hidden-focus]"),
strip: one("[data-hidden-strip]"),
selected: 0,
};
const routerChart: ChartConfig = {
kind: "router",
edge: one("[data-router-edge]"),
domain: one("[data-router-domain]"),
metric: one("[data-router-metric]"),
line: one("[data-router-line]"),
focus: one("[data-router-focus]"),
strip: one("[data-router-strip]"),
selected: 0,
};
const chartValues = (chart: ChartConfig, rows: any[]) => {
const metric = chart.metric?.value;
if (chart.kind === "hidden") {
if (metric === "relative") {
return rows.map((row) => row.meanRelativeL2 * 100);
}
if (metric === "maxabs") {
return rows.map((row) => row.maxAbsDelta);
}
return rows.map((row) => (1 - row.meanCosine) * 100);
}
if (metric === "set") {
return rows.map((row) => (1 - row.setExactRate) * 100);
}
if (metric === "weighted") {
return rows.map((row) => row.meanTokenWeightedTv * 100);
}
if (metric === "load") {
return rows.map((row) => row.meanAggregateLoadTv * 100);
}
return rows.map((row) => (1 - row.orderedExactRate) * 100);
};
const chartRows = (chart: ChartConfig) => {
const edge = chart.edge?.value ?? "system_eos";
const domain = chart.domain?.value ?? "all";
return chart.kind === "hidden"
? data.depth.hiddenSeries[domain][edge]
: data.depth.routerSeries[domain][edge];
};
const renderChart = (chart: ChartConfig) => {
const rows = chartRows(chart);
const values = chartValues(chart, rows);
const maxValue = Math.max(...values, 0.000001) * 1.12;
const x = (index: number) => (
42 + index * 778 / Math.max(1, rows.length - 1)
);
const y = (value: number) => 218 - value / maxValue * 184;
chart.line?.setAttribute(
"points",
values.map((value: number, index: number) => (
`${x(index).toFixed(2)},${y(value).toFixed(2)}`
)).join(" "),
);
const selected = Math.min(chart.selected, rows.length - 1);
chart.focus?.setAttribute("cx", x(selected).toFixed(2));
chart.focus?.setAttribute("cy", y(values[selected]).toFixed(2));
const prefix = chart.kind === "hidden" ? "hidden" : "router";
set(
`[data-${prefix}-ymax]`,
maxValue >= 10 ? maxValue.toFixed(0) : maxValue.toFixed(2),
);
set(
`[data-${prefix}-ymid]`,
maxValue >= 10
? (maxValue / 2).toFixed(0)
: (maxValue / 2).toFixed(2),
);
set(
`[data-${prefix}-chart-title]`,
data.contract.edgeLabels[chart.edge?.value ?? "system_eos"],
);
set(
`[data-${prefix}-chart-domain]`,
cdDomainLabels[chart.domain?.value ?? "all"],
);
const buttons = [
...(chart.strip?.querySelectorAll<HTMLButtonElement>("button") ?? []),
];
buttons.forEach((button, index) => {
const level = Math.max(0.04, values[index] / maxValue);
button.style.setProperty("--level", String(level));
button.classList.toggle("selected", index === selected);
const bar = button.querySelector<HTMLElement>("i");
if (bar) bar.style.height = `${Math.max(4, level * 100)}%`;
});
const row = rows[selected];
if (chart.kind === "hidden") {
set("[data-hidden-stage-name]", row.stage);
set("[data-hidden-stage-note]", row.stage === "embedding"
? "逐 token lookup;目标 IDs 相同"
: "上下文已通过 attention / residual 混入");
set("[data-hidden-cosine]", row.meanCosine.toFixed(6));
set("[data-hidden-relative]", percent(row.meanRelativeL2, 2));
set(
"[data-hidden-exact]",
`${row.exactRows.toLocaleString()} / ${row.tokens.toLocaleString()}`,
);
set("[data-hidden-maxabs]", row.maxAbsDelta.toFixed(5));
} else {
set("[data-router-layer-name]", row.layer.replace("_", " "));
set(
"[data-router-ordered]",
`${row.orderedExact.toLocaleString()} / ${row.tokens.toLocaleString()} · ${percent(row.orderedExactRate)}`,
);
set(
"[data-router-set]",
`${row.setExact.toLocaleString()} / ${row.tokens.toLocaleString()} · ${percent(row.setExactRate)}`,
);
set("[data-router-jaccard]", row.meanSetJaccard.toFixed(5));
set("[data-router-tv]", percent(row.meanTokenWeightedTv, 2));
}
};
for (const chart of [hiddenChart, routerChart]) {
chart.edge?.addEventListener("change", () => renderChart(chart));
chart.domain?.addEventListener("change", () => renderChart(chart));
chart.metric?.addEventListener("change", () => renderChart(chart));
const attribute = chart.kind === "hidden"
? "data-hidden-stage"
: "data-router-layer";
chart.strip?.querySelectorAll<HTMLButtonElement>("button").forEach(
(button) => {
button.addEventListener("click", () => {
chart.selected = Number(button.getAttribute(attribute));
renderChart(chart);
});
},
);
}
renderTasks();
renderChart(hiddenChart);
renderChart(routerChart);
});
</script>
<style>
.completion-depth-lab {
margin: 2.2rem 0 0;
overflow: hidden;
border: 1px solid rgba(30, 38, 43, .16);
background: #f7f4ec;
box-shadow: 0 28px 70px rgba(22, 35, 43, .1);
}
.cd-head {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 2.4rem;
align-items: end;
padding: 2rem;
color: #f8f4e9;
background:
radial-gradient(circle at 76% 24%, rgba(178, 102, 64, .28), transparent 26%),
radial-gradient(circle at 18% 80%, rgba(67, 145, 132, .2), transparent 28%),
linear-gradient(135deg, #172c35, #253f47);
}
.cd-head p { margin: 0; color: rgba(255,255,255,.72); font-size: .77rem; line-height: 1.7; }
.cd-head > div > p { color: #84c6bb; font: 750 .61rem/1.2 var(--font-mono); letter-spacing: .1em; }
.cd-head h3 { max-width: 650px; margin: .75rem 0 0; color: white; font: 760 clamp(1.55rem,3vw,2.45rem)/1.14 var(--font-display); }
.cd-ledger { display: grid; grid-template-columns: repeat(6, 1fr); border-bottom: 1px solid rgba(30,38,43,.14); }
.cd-ledger article { min-width: 0; padding: 1rem; border-right: 1px solid rgba(30,38,43,.12); background: #ece8dd; }
.cd-ledger article:last-child { border-right: 0; }
.cd-ledger article.pass { background: rgba(54,128,108,.12); }
.cd-ledger span,
.task-summary span,
.depth-reading span,
.repro-proof span { display: block; color: #60706e; font: 720 .51rem/1.25 var(--font-mono); letter-spacing: .07em; }
.cd-ledger b { display: block; margin-top: .45rem; color: #182b33; font: 760 .78rem/1.25 var(--font-mono); }
.cd-ledger p { margin: .35rem 0 0; color: #68716f; font-size: .58rem; line-height: 1.4; }
.cd-tabs { display: grid; grid-template-columns: repeat(4, 1fr); border-bottom: 1px solid rgba(30,38,43,.14); }
.cd-tabs button { display: grid; grid-template-columns: auto 1fr; grid-template-rows: auto auto; column-gap: .75rem; min-width: 0; padding: .9rem 1rem; border: 0; border-right: 1px solid rgba(30,38,43,.14); color: #25363c; text-align: left; background: #fbf8f1; cursor: pointer; }
.cd-tabs button:last-child { border-right: 0; }
.cd-tabs button[aria-selected="true"] { color: white; background: #ad5935; }
.cd-tabs span { grid-row: 1 / 3; opacity: .72; font: 720 .55rem/1.2 var(--font-mono); }
.cd-tabs b { min-width: 0; font: 720 .76rem/1.25 var(--font-display); }
.cd-tabs small { opacity: .68; font: .54rem/1.3 var(--font-mono); }
.cd-panel { padding: 1.55rem; }
.cd-panel[hidden] { display: none; }
.cd-panel-lead { display: grid; grid-template-columns: 1fr 1fr; gap: 2rem; align-items: end; margin-bottom: 1.25rem; }
.cd-panel-lead span { color: #a75231; font: 750 .56rem/1.2 var(--font-mono); letter-spacing: .09em; }
.cd-panel-lead h4 { margin: .35rem 0 0; color: #1c3037; font: 750 1.25rem/1.2 var(--font-display); }
.cd-panel-lead p { margin: 0; color: #65716f; font-size: .7rem; line-height: 1.65; }
.budget-ladder { position: relative; display: grid; grid-template-columns: 1fr 1fr; gap: 1px; background: rgba(30,38,43,.15); border: 1px solid rgba(30,38,43,.15); }
.budget-ladder > article { padding: 1.1rem; background: #eeeae0; }
.budget-ladder header { display: flex; justify-content: space-between; align-items: end; }
.budget-ladder header span { color: #697572; font: 700 .52rem/1 var(--font-mono); }
.budget-ladder header b { color: #ad5935; font: 780 1.55rem/1 var(--font-display); }
.budget-track { height: 1rem; margin-top: 1rem; background: rgba(175,83,49,.22); }
.budget-track i { display: block; width: var(--complete); height: 100%; background: #347d6f; }
.budget-ladder dl { display: grid; grid-template-columns: 1fr 1fr; gap: 1px; margin: .8rem 0 0; background: rgba(30,38,43,.1); }
.budget-ladder dl div { padding: .65rem; background: #faf7ef; }
.budget-ladder dt { color: #737c79; font: .48rem/1 var(--font-mono); }
.budget-ladder dd { margin: .35rem 0 0; color: #283c42; font: 740 .7rem/1 var(--font-mono); }
.budget-arrow { position: absolute; top: 50%; left: 50%; z-index: 2; display: grid; place-items: center; width: 5.2rem; height: 5.2rem; transform: translate(-50%,-50%); color: white; border: .35rem solid #f7f4ec; border-radius: 50%; background: #ab5b39; text-align: center; }
.budget-arrow span,
.budget-arrow small { font: .44rem/1.2 var(--font-mono); }
.budget-arrow b { font: 780 1.1rem/1.1 var(--font-display); }
.condition-table { margin-top: 1rem; border: 1px solid rgba(30,38,43,.14); }
.condition-table > header,
.condition-table > div { display: grid; grid-template-columns: 1.25fr repeat(4, 1fr); gap: .7rem; align-items: center; padding: .65rem .8rem; border-bottom: 1px solid rgba(30,38,43,.1); }
.condition-table > header { color: #dfe9e6; background: #27434a; font: 680 .48rem/1.2 var(--font-mono); }
.condition-table > div:last-child { border-bottom: 0; }
.condition-table > div:nth-child(odd) { background: #efebe1; }
.condition-table span { color: #293d42; font: 690 .64rem/1.2 var(--font-mono); }
.condition-table b { color: #596663; font: 680 .6rem/1.2 var(--font-mono); }
.condition-table b.good { color: #277563; }
.incomplete-ledger { margin-top: 1rem; border: 1px solid rgba(164,81,46,.2); background: rgba(178,91,50,.08); }
.incomplete-ledger > header { display: flex; justify-content: space-between; gap: 1rem; padding: .75rem .9rem; color: #653d30; border-bottom: 1px solid rgba(164,81,46,.14); }
.incomplete-ledger > header span { font: 730 .58rem/1.2 var(--font-mono); }
.incomplete-ledger > header p { margin: 0; font-size: .61rem; }
.incomplete-ledger > div { display: grid; grid-template-columns: repeat(4, 1fr); }
.incomplete-ledger article { min-width: 0; padding: .7rem; border-right: 1px solid rgba(164,81,46,.12); border-bottom: 1px solid rgba(164,81,46,.12); }
.incomplete-ledger article b,
.incomplete-ledger article span,
.incomplete-ledger article em { display: block; overflow-wrap: anywhere; }
.incomplete-ledger article b { color: #3b4a4c; font: 670 .56rem/1.3 var(--font-mono); }
.incomplete-ledger article span { margin-top: .35rem; color: #6e706b; font-size: .54rem; }
.incomplete-ledger article em { margin-top: .45rem; color: #a34f30; font: 720 .48rem/1 var(--font-mono); }
.prefix-gate,
.repro-proof { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1px; margin-top: 1rem; background: rgba(30,38,43,.13); border: 1px solid rgba(30,38,43,.13); }
.prefix-gate article,
.repro-proof article { padding: .85rem; background: rgba(54,128,108,.1); }
.prefix-gate span { color: #52716b; font: 710 .5rem/1.2 var(--font-mono); }
.prefix-gate b,
.repro-proof b { display: block; margin-top: .4rem; color: #245d53; font: 760 .72rem/1.2 var(--font-mono); }
.prefix-gate p,
.repro-proof p { margin: .4rem 0 0; color: #68736f; font-size: .58rem; line-height: 1.45; }
.task-control,
.depth-controls { display: grid; grid-template-columns: minmax(14rem,.8fr) 1.2fr; gap: 1px; border: 1px solid rgba(30,38,43,.14); background: rgba(30,38,43,.14); }
.task-control > *,
.depth-controls label { min-width: 0; padding: .75rem; background: #eeeae0; }
.task-control span,
.depth-controls span { display: block; margin-bottom: .4rem; color: #65716f; font: 720 .52rem/1.2 var(--font-mono); }
.task-control select,
.depth-controls select { width: 100%; min-width: 0; padding: .57rem; color: #24383e; border: 1px solid rgba(30,38,43,.2); background: #fffdf8; font: 670 .62rem/1.3 var(--font-mono); }
.task-control p { margin: .55rem 0 0; color: #66716e; font-size: .6rem; }
.task-control p i { display: inline-block; width: .55rem; height: .55rem; margin: 0 .25rem 0 .6rem; }
.task-control p i:first-child { margin-left: 0; }
.task-control .pass { background: #3b8778; }
.task-control .fail { background: #aa5435; }
.task-control .warn { background: #b68b42; }
.task-columns { display: grid; grid-template-columns: 1fr 1fr; gap: 1px; margin-top: 1rem; background: rgba(30,38,43,.15); border: 1px solid rgba(30,38,43,.15); }
.task-columns > article { min-width: 0; padding: 1rem; background: #f1ede3; }
.task-columns > article > header { display: flex; justify-content: space-between; gap: 1rem; color: #304349; font: 720 .58rem/1.2 var(--font-mono); }
.task-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 1px; margin-top: .75rem; background: rgba(30,38,43,.12); }
.task-grid article { min-width: 0; padding: .75rem; background: #faf7ef; box-shadow: inset .25rem 0 #aa5435; }
.task-grid article.pass { box-shadow: inset .25rem 0 #3b8778; }
.task-grid article.warn { box-shadow: inset .25rem 0 #b68b42; }
.task-grid b,
.task-grid span,
.task-grid em { display: block; overflow-wrap: anywhere; }
.task-grid b { color: #34474c; font: 660 .53rem/1.3 var(--font-mono); }
.task-grid span { margin-top: .45rem; color: #263e43; font: 740 .58rem/1.2 var(--font-mono); }
.task-grid em { margin-top: .32rem; color: #737b77; font: .45rem/1.2 var(--font-mono); }
.task-summary { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; align-items: end; margin-top: .8rem; padding-top: .8rem; border-top: 1px solid rgba(30,38,43,.1); }
.task-summary b { display: block; margin-top: .35rem; color: #2f7266; font: 760 .82rem/1 var(--font-mono); }
.task-summary p { margin: 0; color: #6c7571; font-size: .57rem; line-height: 1.5; }
.sandbox-flow { display: grid; grid-template-columns: 1fr auto 1fr auto 1fr auto 1fr; gap: .55rem; align-items: center; margin-top: 1rem; }
.sandbox-flow article { min-height: 8.5rem; padding: .8rem; border: 1px solid rgba(30,38,43,.14); background: #eeeae0; }
.sandbox-flow article.active { color: white; background: #285249; }
.sandbox-flow > i { color: #a75534; }
.sandbox-flow span { color: #a65434; font: 720 .48rem/1.2 var(--font-mono); }
.sandbox-flow article.active span { color: #85c8bc; }
.sandbox-flow b { display: block; margin-top: .55rem; font: 730 .62rem/1.35 var(--font-mono); }
.sandbox-flow p { margin: .65rem 0 0; color: #69736f; font-size: .57rem; line-height: 1.5; }
.sandbox-flow article.active p { color: rgba(255,255,255,.75); }
.depth-controls { grid-template-columns: 1.25fr .85fr 1fr; }
.depth-chart { margin-top: 1rem; border: 1px solid rgba(30,38,43,.14); background: #fdfaf3; }
.depth-chart header { display: flex; justify-content: space-between; gap: 1rem; padding: .7rem .9rem; color: #dfe9e6; background: #27434a; font: 690 .55rem/1.2 var(--font-mono); }
.depth-chart svg { display: block; width: 100%; height: auto; }
.depth-chart svg text { fill: #78817d; font: 18px var(--font-mono); }
.depth-chart .chart-grid line { stroke: rgba(39,67,74,.14); stroke-width: 1; }
.depth-chart polyline { fill: none; stroke: #ac5736; stroke-width: 4; stroke-linecap: round; stroke-linejoin: round; }
.depth-chart circle { fill: #2f8071; stroke: #fff; stroke-width: 3; }
.router-chart polyline { stroke: #347b6e; }
.router-chart circle { fill: #ad5935; }
.depth-strip { display: grid; grid-template-columns: repeat(29, 1fr); gap: 2px; margin-top: .5rem; }
.depth-strip button { position: relative; display: flex; align-items: end; justify-content: center; min-width: 0; height: 3.7rem; padding: 0; overflow: hidden; color: #586562; border: 1px solid rgba(30,38,43,.1); background: #e4e0d6; cursor: pointer; }
.depth-strip button i { position: absolute; inset: auto 0 0; height: 4%; background: rgba(175,83,49,.7); }
.depth-strip button span { position: relative; z-index: 1; padding-bottom: .25rem; font: 680 .43rem/1 var(--font-mono); }
.depth-strip button.selected { color: white; border-color: #263f46; background: #263f46; }
.depth-strip button.selected i { background: #b66d48; }
.router-strip { grid-template-columns: repeat(26, 1fr); }
.router-strip button i { background: rgba(47,126,109,.72); }
.depth-reading { display: grid; grid-template-columns: repeat(5, 1fr); gap: 1px; margin-top: .8rem; background: rgba(30,38,43,.13); border: 1px solid rgba(30,38,43,.13); }
.depth-reading article { min-width: 0; padding: .8rem; background: #eeeae0; }
.depth-reading b { display: block; margin-top: .4rem; color: #243b41; font: 750 .68rem/1.25 var(--font-mono); overflow-wrap: anywhere; }
.depth-reading p { margin: .35rem 0 0; color: #6e7773; font-size: .54rem; line-height: 1.4; }
.depth-boundary { display: grid; grid-template-columns: 13rem 1fr; gap: 1rem; margin-top: 1rem; padding: .9rem; color: white; background: #44322e; }
.depth-boundary b { color: #e3a77c; font: 720 .58rem/1.3 var(--font-mono); }
.depth-boundary p { margin: 0; color: rgba(255,255,255,.74); font-size: .64rem; line-height: 1.55; }
.repro-proof { grid-template-columns: repeat(4, 1fr); }
.repro-proof article { background: #eeeae0; }
.repro-proof article.pass { background: rgba(54,128,108,.11); }
.artifact-links { display: flex; flex-wrap: wrap; gap: .5rem; margin-top: 1rem; }
.artifact-links a { padding: .55rem .7rem; color: #2d625b; border: 1px solid rgba(45,98,91,.25); background: rgba(45,98,91,.06); font: 680 .57rem/1.2 var(--font-mono); }
.completion-depth-lab figcaption { padding: .9rem 1.55rem; color: #75807c; border-top: 1px solid rgba(30,38,43,.13); background: #e8e4d9; font-size: .59rem; line-height: 1.5; }
.completion-depth-lab figcaption span { color: #a65031; font-weight: 750; }
.completion-depth-lab figcaption code { font-size: .55rem; overflow-wrap: anywhere; }
@media (max-width: 1040px) {
.cd-ledger { grid-template-columns: repeat(3,1fr); }
.cd-ledger article:nth-child(-n+3) { border-bottom: 1px solid rgba(30,38,43,.12); }
.incomplete-ledger > div { grid-template-columns: repeat(2,1fr); }
.depth-strip { overflow-x: auto; grid-template-columns: repeat(29, 2rem); }
.router-strip { grid-template-columns: repeat(26, 2rem); }
}
@media (max-width: 820px) {
.cd-head,
.cd-panel-lead,
.task-columns { grid-template-columns: 1fr; }
.cd-tabs { grid-template-columns: repeat(2,1fr); }
.budget-ladder { grid-template-columns: 1fr; }
.budget-arrow { display: none; }
.prefix-gate,
.repro-proof { grid-template-columns: 1fr; }
.depth-reading { grid-template-columns: repeat(2,1fr); }
.sandbox-flow { grid-template-columns: 1fr; }
.sandbox-flow > i { transform: rotate(90deg); text-align: center; }
}
@media (max-width: 620px) {
.cd-head,
.cd-panel { padding: 1rem; }
.cd-ledger { grid-template-columns: 1fr; }
.cd-ledger article { border-right: 0; border-bottom: 1px solid rgba(30,38,43,.12); }
.cd-tabs { display: flex; overflow-x: auto; }
.cd-tabs button { flex: 1 0 10.5rem; }
.condition-table { overflow-x: auto; }
.condition-table > header,
.condition-table > div { min-width: 38rem; }
.incomplete-ledger > header { display: block; }
.incomplete-ledger > header p { margin-top: .35rem; }
.incomplete-ledger > div,
.task-control,
.depth-controls,
.task-grid,
.depth-reading { grid-template-columns: 1fr; }
.task-summary,
.depth-boundary { grid-template-columns: 1fr; }
.depth-chart { overflow-x: auto; }
.depth-chart svg { min-width: 43rem; }
}
</style>
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
File diff suppressed because it is too large Load Diff
+23 -8
View File
@@ -4,6 +4,7 @@ import DeepSeekLineage from "@/components/DeepSeekLineage.astro";
import DeepSeekLab from "@/components/DeepSeekLab.astro";
import DeepSeekArtifactLab from "@/components/DeepSeekArtifactLab.astro";
import DeepSeekBehaviorLab from "@/components/DeepSeekBehaviorLab.astro";
import DeepSeekCompletionDepthLab from "@/components/DeepSeekCompletionDepthLab.astro";
import { deepseekBranches, deepseekLedgers, deepseekPaperChain, deepseekWaves } from "@/data/deepseek";
const toc = [
@@ -31,21 +32,22 @@ const toc = [
["21", "lab", "四联交互实验"],
["22", "artifact", "真实权重执行"],
["23", "behavior", "Chat:最终生成行为"],
["24", "branches", "别漏掉旁支"],
["25", "audit", "事实、推导与教学模型"],
["24", "completion-depth", "Chat:完成度与全深度"],
["25", "branches", "别漏掉旁支"],
["26", "audit", "事实、推导与教学模型"],
["↳", "papers", "六十节点阅读链"],
];
---
<BaseLayout
title="DeepSeek 技术谱系与真实权重深读:从 Dense、MoE、MLA 到 R1 与 V4"
description="用二十四张问题账、十次技术转向、十八个交互实验、真实 V2-Lite Base / Chat 权重、公开语料路由区间、官方模板、消息历史、等长 filler、特殊词元家族、完整角色块与最终生成行为控制、吸收式缓存 trace 和六十个一手节点,完整理解 DeepSeek 的 MoE、MLA、FP8、DualPipe、GRPO、R1、V3.2 与 V4。"
description="用二十四张问题账、十次技术转向、十九个交互实验、真实 V2-Lite Base / Chat 权重、512-token 完成度评测、29 阶段隐藏状态与 26 层 MoE 路由追踪、吸收式缓存 trace 和六十个一手节点,完整理解 DeepSeek 的 MoE、MLA、FP8、DualPipe、GRPO、R1、V3.2 与 V4。"
section="deepseek"
>
<header class="page-hero deepseek-hero">
<div class="page-hero-inner">
<div>
<p class="eyebrow"><span>SPOTLIGHT / DEEPSEEK · ROUND 04</span> ROUTING × CHAT OUTPUT × REAL WEIGHTS</p>
<p class="eyebrow"><span>SPOTLIGHT / DEEPSEEK · ROUND 05</span> COMPLETION × FULL DEPTH × REAL WEIGHTS</p>
<h1>不要背模型名<br />要看懂每次为什么转向</h1>
<p class="lead">
这不是七篇报告的摘要,而是一套可追问、可计算、可反驳的技术谱系:
@@ -57,9 +59,9 @@ const toc = [
<div><dt>SPAN</dt><dd>2024.01 → 2026.06</dd></div>
<div><dt>LEDGERS</dt><dd>24 张问题账</dd></div>
<div><dt>LINEAGE</dt><dd>10 次技术转向</dd></div>
<div><dt>LABS</dt><dd>18 个可操作实验</dd></div>
<div><dt>LABS</dt><dd>19 个可操作实验</dd></div>
<div><dt>EVIDENCE</dt><dd>60 个一手 / 官方节点</dd></div>
<div><dt>STATUS</dt><dd>三轮 · 真实权重执行</dd></div>
<div><dt>STATUS</dt><dd>五轮 · 全 27 层执行</dd></div>
</dl>
</div>
</header>
@@ -795,8 +797,21 @@ const toc = [
<DeepSeekBehaviorLab />
</section>
<section class="article-section" id="completion-depth">
<p class="eyebrow"><span>24</span> COMPLETION IS NOT CORRECTNESS</p>
<h2>把 128-token 的截断账补齐,再沿完整 27 层看差异怎样传播</h2>
<p class="lede">
上一轮证明固定 Chat checkpoint 的 greedy 输出会分叉,却有 97 / 128 格在 128-token
上限处停止。这一轮对全部 128 格统一重跑 512-token 预算,用官方 GSM8K gold 与
HumanEval tests 分开记录完成、可评测和正确;同时在相同输入上执行 prompt-only
全深度 forward,追踪 29 个隐藏状态阶段、26 个 MoE gate 与 1,918,176 次 top-6
目标路由决定。隐藏状态、路由与任务结果仍是三类证据,不互相冒充因果解释。
</p>
<DeepSeekCompletionDepthLab />
</section>
<section class="article-section" id="branches">
<p class="eyebrow"><span>24</span> THE MAIN LINE IS NOT THE WHOLE TREE</p>
<p class="eyebrow"><span>25</span> THE MAIN LINE IS NOT THE WHOLE TREE</p>
<h2>如果只读 V2 → V3 → R1 → V4,会漏掉五条反过来影响主线的旁支</h2>
<div class="branch-grid">
{deepseekBranches.map(([name, line, text, url]) => (
@@ -816,7 +831,7 @@ const toc = [
</section>
<section class="article-section" id="audit">
<p class="eyebrow"><span>25</span> EVIDENCE AUDIT</p>
<p class="eyebrow"><span>26</span> EVIDENCE AUDIT</p>
<h2>同一张页面里有三种知识,它们的语气必须不同</h2>
<div class="audit-grid">
<article class="reported">
+5 -5
View File
@@ -145,18 +145,18 @@ const paths = [
</a>
<a class="release-card deepseek-release" href="/deepseek/">
<div>
<p class="eyebrow"><span>NEW / DEEPSEEK ROUND 04</span> LINEAGE · REAL WEIGHTS · ROUTES · GENERATION</p>
<p class="eyebrow"><span>NEW / DEEPSEEK ROUND 05</span> COMPLETION · TASK TESTS · FULL DEPTH</p>
<h2>从 Dense 到百万上下文:每次创新都在偿还上一代最贵的一张账</h2>
<p>
用二十四张问题账和十次技术转向走完 Dense→V4,再把 Base 路由证据接到官方
V2-Lite-Chat 的 31.4 GB 完整 BF16 权重:16 个公开来源、8 种边界条件生成
128 个输出,并把 31 个自然 EOS 与 97 个长度截断分开解释。
用二十四张问题账和十次技术转向走完 Dense→V4,再把官方 V2-Lite-Chat 的
128 个输出统一延长到 512-token:121 个自然 EOS、Math / Code 真实 evaluator;
同时沿 29 个隐藏阶段与 26 个 MoE gate 追踪 1,918,176 次目标路由决定。
</p>
</div>
<dl>
<div><dt>LINEAGE</dt><dd>1991 → 2026 · 10 次转向</dd></div>
<div><dt>NODES</dt><dd>60 个一手 / 官方节点</dd></div>
<div><dt>LAB</dt><dd>4 公式 · 13 Base 工件 · 1 Chat 行为</dd></div>
<div><dt>LAB</dt><dd>19 · Base / Chat / full depth</dd></div>
</dl>
<span class="release-arrow" aria-hidden="true">进入 DeepSeek 完整技术谱系 →</span>
</a>
+8 -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: 98, next: "completion-aware 生成评测、完整 27 层与固定 batch content,再推进 SM90 FlashMLA、FP8/pipeline 与 R1-like RL" },
{ label: "DeepSeek 专题", value: 99, next: "扩大 completion/task 样本、sampling robustness 与干预式 mediation,再推进 SM90 FlashMLA、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 训练曲线与安全案例" },
@@ -97,12 +97,12 @@ const workstreams = [
<article><span>✓</span><h3>K3 报告已结构化拆解</h3><p>47 页报告目录、151 条参考来源和架构/后训练/系统主线已经提取。</p></article>
<article><span>✓</span><h3>17 专题知识图</h3><p>从语言模型基础到评测安全,包含先修依赖和三条贯穿案例。</p></article>
<article><span>✓</span><h3>编辑式网站系统</h3><p>响应式导航、章节模板、侧栏、进度、论文链和证据提示组件。</p></article>
<article><span>✓</span><h3>八十五个原创交互视图</h3><p>K3 三轴图、八联报告实验与四联开放工件实验,DeepSeek 四联公式实验、十三联 Base 工件实验与一联完整 Chat 行为实验,以及语言模型前史、Transformer、表示深度、长上下文、MoE、推理、Agent、多模态、训练系统、推理服务、Scaling、数据工程、数值、Alignment 与评测安全专题。</p></article>
<article><span>✓</span><h3>八十六个原创交互视图</h3><p>K3 三轴图、八联报告实验与四联开放工件实验,DeepSeek 四联公式实验、十三联 Base 工件实验、Chat 行为与 completion/full-depth 两轮实验,以及语言模型前史、Transformer、表示深度、长上下文、MoE、推理、Agent、多模态、训练系统、推理服务、Scaling、数据工程、数值、Alignment 与评测安全专题。</p></article>
<article><span>✓</span><h3>十七篇首版长文</h3><p>K3、语言模型前史、Transformer、表示/位置/残差、DeepSeek、Scaling、数据工程、长上下文、MoE、后训练、推理、Agent、原生多模态、训练系统、推理服务、数值优化与评测安全专题。</p></article>
<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>在 Base 路由与缓存实证上,新增官方 V2-Lite-Chat 的 31.4 GB 完整 BF16 生成:16 个公开来源 × 8 条件得到 128 个输出,31 个自然 EOS、97 个长度截断;独立复跑的 32 / 32 token 序列 exact。逐来源双输出、十边分歧、GPU/CPU offload 与证据边界共同组成第十八个实验,不把生成差异越界写成能力。</p></article>
<article><span>✓</span><h3>DeepSeek 五轮真实权重里程碑</h3><p>统一 512-token 预算让自然 EOS 从 31 / 128 增至 121 / 128;GSM8K strict exact 23 / 32、HumanEval 官方 tests pass 24 / 32,并保留四任务/域的样本边界。相同 Chat checkpoint 再执行 29-stage hidden 与 26-gate route trace;1,856 个 hidden hashes、1,664 个 route hashes 和 1,664 个 weight hashes 在新进程子集复跑中全部 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>completion-aware 行为评测 → 完整 27 层与固定 batch content → SM90 FlashMLA / FP8 / pipeline traces → R1-like RL 小模型复现</p><em>运行证据 + 独立复现</em></div>
<div><span>P0</span><strong>DeepSeek 五轮后续</strong><p>扩大任务与语言 source → sampling robustness → 干预式 mediation → SM90 FlashMLA / 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>
@@ -229,6 +229,10 @@ const workstreams = [
<div><time>2026-07-29</time><b>Chat、生成行为与能力永久分层</b><p>完整官方 Chat 权重可以支撑真实生成;成对输出分歧只证明干预传播,没有 evaluator 与足够 completion 就不升级成能力判断。</p></div>
<div><time>2026-07-29</time><b>completion 是生成实验的首要审计字段</b><p>31 / 128 自然 EOS 与 97 / 128 长度截断同时显示;截断答案不冒充完整回答。</p></div>
<div><time>2026-07-29</time><b>offload 拓扑进入复现合同</b><p>31.4 GB BF16 权重按 GPU 25 层、CPU 2 层 + norm / lm_head 执行;设备切分不被写成模型结构。</p></div>
<div><time>2026-07-29</time><b>更长预算统一重跑全部八格</b><p>不选择性续写 97 个截断格;128→512 的 prompt hash 与前 128 generated tokens 必须全 exact。</p></div>
<div><time>2026-07-29</time><b>停止、终点、可评测与正确分四张账</b><p>自然 EOS 不等于答对;fallback 不冒充 strict completion;HumanEval tests pass 不冒充代码安全。</p></div>
<div><time>2026-07-29</time><b>全深度比较只保留 exact interior tokens</b><p>1,537 个 content tokens / condition 在八格中 ID exact;56 个跨字符边界 token 排除,不拿不同 token 比隐藏状态。</p></div>
<div><time>2026-07-29</time><b>表示与路由分叉不是中介因果</b><p>29-stage hidden 与 26-gate route 曲线描述传播;没有干预式 mediation 前不解释输出或能力因果。</p></div>
</div>
</section>