2193 lines
70 KiB
Plaintext
2193 lines
70 KiB
Plaintext
---
|
||
import BaseLayout from "@/layouts/BaseLayout.astro";
|
||
import ScalingLawsLab from "@/components/ScalingLawsLab.astro";
|
||
|
||
const toc = [
|
||
["00", "map", "九张账与坐标"],
|
||
["01", "power-law", "为什么是幂律"],
|
||
["02", "roots", "早期经验"],
|
||
["03", "kaplan", "Kaplan 范式"],
|
||
["04", "chinchilla", "Chinchilla 修正"],
|
||
["05", "isoflop", "IsoFLOP 怎样做"],
|
||
["06", "replication", "复现与和解"],
|
||
["07", "data", "数据受限"],
|
||
["08", "overtraining", "过训练与部署"],
|
||
["09", "emergence", "涌现之争"],
|
||
["10", "new-axes", "MoE 与新坐标"],
|
||
["11", "deepseek", "DeepSeek 主线"],
|
||
["12", "kimi", "Kimi K2 → K3"],
|
||
["13", "lab", "四个互动实验"],
|
||
["14", "reading", "怎样读一张曲线"],
|
||
["15", "papers", "关键论文链"],
|
||
];
|
||
|
||
const ledgers = [
|
||
["L1 / OBSERVABLE", "观测量", "CE、NLL、PPL、BPB 或任务错误率?"],
|
||
["L2 / MODEL", "模型规模", "total、non-embedding 还是 active parameters?"],
|
||
["L3 / DATA", "数据规模", "seen、unique、repeated 还是 effective Token?"],
|
||
["L4 / COMPUTE", "理论算术", "训练 FLOPs 怎样定义,是否遗漏 attention / routing?"],
|
||
["L5 / ALLOCATION", "预算配比", "固定 C 时,N 与 D 各分多少?"],
|
||
["L6 / RECIPE", "训练配方", "batch、LR、warmup、schedule 是否随规模公平调优?"],
|
||
["L7 / EXTRAPOLATION", "外推证据", "目标点是否真正留出,误差与置信区间多大?"],
|
||
["L8 / ECONOMICS", "经济目标", "只算训练,还是加上未来全部推理?"],
|
||
["L9 / CAPABILITY", "能力阶段", "平滑 loss、离散 benchmark、RL 与 test-time compute 能否同图?"],
|
||
];
|
||
|
||
const history = [
|
||
["2017", "Hestness", "跨语言、视觉、语音等任务观察数据—误差幂律。"],
|
||
["2018", "Noise Scale", "critical batch 把并行速度与样本效率放进同一张账。"],
|
||
["2020", "Kaplan", "建立 L(N)、L(D)、L(C) 与偏大模型的 compute-optimal 结论。"],
|
||
["2020", "Cross-modal", "Henighan 把自回归幂律扩到图像、视频与数学。"],
|
||
["2022", "Chinchilla", "三种方法把最优分配改写为参数与数据近似同比例增长。"],
|
||
["2022", "Emergence", "若干 benchmark 在规模上呈现突然跃升。"],
|
||
["2022", "Broken Laws", "用平滑折断幂律表达 plateau、拐点和新斜率。"],
|
||
["2023", "Data-constrained", "把 unique Token 和重复 epoch 分开,研究数据墙。"],
|
||
["2023", "Mirage", "非线性与不连续指标可能制造“突然会了”。"],
|
||
["2024", "Reproduction", "重新检查 Chinchilla 拟合与 Kaplan–Chinchilla 分歧。"],
|
||
["2024", "Over-training", "把小模型长训和下游平均错误率纳入预测。"],
|
||
["2024–26", "New axes", "MoE、部署成本、RL、长上下文和多模态要求新的坐标。"],
|
||
];
|
||
|
||
const approaches = [
|
||
["01", "训练曲线最小值", "0.50", "0.50", "不同模型沿训练曲线找每个预算的最低 loss"],
|
||
["02", "IsoFLOP profiles", "0.49", "0.51", "固定 FLOPs,扫多组 N×D,再连接谷底"],
|
||
["03", "Parametric loss", "0.46", "0.54", "拟合 E + A/Nᵅ + B/Dᵝ 后解析求解"],
|
||
["K", "Kaplan 对照", "0.73", "0.27", "其 2020 配方更偏向增加模型规模"],
|
||
];
|
||
|
||
const deepseekSteps = [
|
||
{
|
||
year: "2024",
|
||
title: "DeepSeek LLM",
|
||
formula: "Mopt ∝ C⁰·⁵²⁴³ · Dopt ∝ C⁰·⁴⁷⁵⁷",
|
||
body: "先搜索 batch 与学习率,再用 non-embedding FLOPs/token M 替代参数代理;attention 计算进入坐标。",
|
||
},
|
||
{
|
||
year: "2024",
|
||
title: "DeepSeekMoE / V2",
|
||
formula: "TOTAL ≠ ACTIVE ≠ FLOPs",
|
||
body: "细粒度专家和 MLA 改写容量、每 Token 计算与服务 KV 成本,Dense 的单一 N 已不够。",
|
||
},
|
||
{
|
||
year: "2024",
|
||
title: "DeepSeek-V3",
|
||
formula: "671B total · 37B active · 14.8T Token",
|
||
body: "模型、数据、FP8、DualPipe 与通信内核共同决定实际可扩展性;GPU hours 不能由 6ND 单独推出。",
|
||
},
|
||
{
|
||
year: "2026",
|
||
title: "DeepSeek-V4",
|
||
formula: "1M context · hybrid attention · Muon",
|
||
body: "压缩/稀疏 attention、recurrent components、mHC 与优化器把“规模”扩展到上下文和深度稳定性。",
|
||
},
|
||
];
|
||
|
||
const kimiSteps = [
|
||
{
|
||
title: "Kimi K2",
|
||
tag: "TOKEN EFFICIENCY",
|
||
body: "15.5T curated Token、MuonClip、知识/数学改写与 sparsity scaling;重点从“更多 Token”转向“每个 Token 的学习价值”。",
|
||
},
|
||
{
|
||
title: "Kimi K3 Scaling Study",
|
||
tag: "FAMILY SEARCH",
|
||
body: "为 KDA、AttnRes、Stable LatentMoE 和新数据/训练配方重新搜索 batch、LR、TPP 与 model shape。",
|
||
},
|
||
{
|
||
title: "Cosine vs WSD",
|
||
tag: "FAIR TUNING",
|
||
body: "两种 schedule 的最优 peak LR 与 batch 不同;各自独立调参后,报告选择 cosine,不能用共享超参草率赛跑。",
|
||
},
|
||
{
|
||
title: "2.5× Overall",
|
||
tag: "AUTHOR-REPORTED",
|
||
body: "Figure 7 的 OOD validation loss–FLOPs family-level 差异;不是单组件、吞吐、参数效率或所有 benchmark 的 2.5×。",
|
||
},
|
||
];
|
||
|
||
const paperChain = [
|
||
["2017", "Deep Learning Scaling is Predictable, Empirically", "https://arxiv.org/abs/1712.00409", "跨任务数据幂律前史。"],
|
||
["2018", "An Empirical Model of Large-Batch Training", "https://arxiv.org/abs/1812.06162", "gradient noise scale 与 critical batch。"],
|
||
["2020", "Scaling Laws for Neural Language Models", "https://arxiv.org/abs/2001.08361", "Kaplan 的 N / D / C 经典坐标。"],
|
||
["2020", "Scaling Laws for Autoregressive Generative Modeling", "https://arxiv.org/abs/2010.14701", "跨模态自回归幂律。"],
|
||
["2020", "Language Models are Few-Shot Learners", "https://arxiv.org/abs/2005.14165", "GPT-3 的规模与 in-context learning 实证。"],
|
||
["2021", "Scaling Language Models: Methods, Analysis & Insights from Training Gopher", "https://arxiv.org/abs/2112.11446", "280B Dense 模型的任务分化。"],
|
||
["2022", "Training Compute-Optimal Large Language Models", "https://arxiv.org/abs/2203.15556", "Chinchilla 与 IsoFLOP。"],
|
||
["2022", "PaLM: Scaling Language Modeling with Pathways", "https://arxiv.org/abs/2204.02311", "540B 规模实践与任务变化。"],
|
||
["2022", "Emergent Abilities of Large Language Models", "https://arxiv.org/abs/2206.07682", "涌现能力的原始系统化。"],
|
||
["2022", "Broken Neural Scaling Laws", "https://arxiv.org/abs/2210.14891", "plateau、拐点与折断幂律。"],
|
||
["2023", "LLaMA: Open and Efficient Foundation Language Models", "https://arxiv.org/abs/2302.13971", "面向推理效率的小模型长训练。"],
|
||
["2023", "Are Emergent Abilities of Large Language Models a Mirage?", "https://arxiv.org/abs/2304.15004", "指标导致的伪阶跃。"],
|
||
["2023", "Scaling Data-Constrained Language Models", "https://arxiv.org/abs/2305.16264", "unique data 与重复 epoch。"],
|
||
["2023", "Pythia", "https://arxiv.org/abs/2304.01373", "训练中间 checkpoint 与可解释 scaling。"],
|
||
["2024", "DeepSeek LLM", "https://arxiv.org/abs/2401.02954", "超参数 law、M 与开放 scaling study。"],
|
||
["2024", "Beyond Chinchilla-Optimal", "https://arxiv.org/abs/2401.00448", "加入未来推理需求。"],
|
||
["2024", "Language Models Scale Reliably with Over-training", "https://arxiv.org/abs/2403.08540", "104 个模型与 aggregate downstream error。"],
|
||
["2024", "Chinchilla Scaling: A Replication Attempt", "https://arxiv.org/abs/2404.10102", "拟合参数与置信区间复查。"],
|
||
["2024", "More Compute Is What You Need", "https://arxiv.org/abs/2404.19484", "计算分配敏感性的争议假说。"],
|
||
["2024", "Resolving Discrepancies in Compute-Optimal Scaling", "https://arxiv.org/abs/2406.19146", "FLOPs、warmup 与调参解释分歧。"],
|
||
["2024", "Optimization Hyper-parameter Laws", "https://arxiv.org/abs/2409.04777", "动态学习率 schedule 的预测。"],
|
||
["2024", "Establishing Task Scaling Laws via Model Ladders", "https://arxiv.org/abs/2412.04403", "从 task loss 到 task performance。"],
|
||
["2024", "The Llama 3 Herd of Models", "https://arxiv.org/abs/2407.21783", "超 Chinchilla TPP 的开放实践。"],
|
||
["2024", "DeepSeek-V3 Technical Report", "https://arxiv.org/abs/2412.19437", "MoE、FP8 与系统协同。"],
|
||
["2025", "Kimi K2: Open Agentic Intelligence", "https://arxiv.org/abs/2507.20534", "token efficiency、MuonClip 与改写。"],
|
||
["2025", "Overtrained Language Models Are Harder to Fine-Tune", "https://arxiv.org/abs/2503.19206", "base loss 与后训练可塑性分离。"],
|
||
["2026", "Data-Constrained LM Pretraining", "https://arxiv.org/abs/2606.06888", "SoftQ 与模型—数据耦合。"],
|
||
["2026", "DeepSeek-V4", "https://arxiv.org/abs/2606.19348", "百万上下文的新缩放变量。"],
|
||
["2026", "Kimi K3: Open Frontier Intelligence", "https://arxiv.org/abs/2607.24653", "双轴扩展与 2.5× family claim。"],
|
||
];
|
||
---
|
||
|
||
<BaseLayout
|
||
title="LLM Scaling Laws:从 Kaplan、Chinchilla 到 DeepSeek 与 Kimi K3"
|
||
description="用九张账、29 个一手节点和四个交互实验讲清 LLM Scaling Laws:幂律、IsoFLOP、数据受限、过训练、部署最优、涌现争议,以及 DeepSeek 与 Kimi K3 的工程实践。"
|
||
section="scaling"
|
||
>
|
||
<header class="page-hero scaling-hero">
|
||
<div class="page-hero-inner">
|
||
<div>
|
||
<p class="eyebrow"><span>SCALING / 04</span> EMPIRICAL LAWS & ENGINEERING</p>
|
||
<h1>更大为什么有效,<br />又为什么不是越大越好?</h1>
|
||
<p class="lead">
|
||
Scaling law 不是一句“堆算力”。它要说明横轴是什么、纵轴是什么、固定了什么,
|
||
以及一条从小实验外推到昂贵训练的曲线,究竟有多大误差、在哪些条件下会失效。
|
||
</p>
|
||
</div>
|
||
<dl class="page-facts">
|
||
<div><dt>LEDGERS</dt><dd>9 张不能混的账</dd></div>
|
||
<div><dt>CORE SOURCES</dt><dd>29 个一手节点</dd></div>
|
||
<div><dt>LINEAGE</dt><dd>2017 → 2026</dd></div>
|
||
<div><dt>LAB</dt><dd>4 个独立实验</dd></div>
|
||
<div><dt>SPOTLIGHT</dt><dd>DeepSeek × Kimi</dd></div>
|
||
</dl>
|
||
</div>
|
||
</header>
|
||
|
||
<div class="report-shell">
|
||
<aside class="side-rail" aria-label="本页目录">
|
||
<p>CONTENTS</p>
|
||
<ol>
|
||
{toc.map(([number, id, label]) => (
|
||
<li><a href={`#${id}`}><span>{number}</span>{label}</a></li>
|
||
))}
|
||
</ol>
|
||
<div class="rail-note">
|
||
<b>研究截止</b>
|
||
2026-07-29。所有模拟均为 teaching model;作者报告与独立复现严格分开。
|
||
</div>
|
||
</aside>
|
||
|
||
<article class="article">
|
||
<section class="article-section" id="map">
|
||
<p class="eyebrow"><span>00</span> NINE LEDGERS</p>
|
||
<h2>第一步不是画曲线,而是给横轴、纵轴和“最优”补全单位</h2>
|
||
<p class="lede">
|
||
同样写着 “scaling”,可能是在研究训练 loss、唯一数据、激活参数、累计推理请求或 RL FLOPs。
|
||
坐标不同,最佳决策甚至会朝相反方向移动。下面九张账是本章的防混淆协议。
|
||
</p>
|
||
|
||
<div class="ledger-grid">
|
||
{ledgers.map(([code, title, body], index) => (
|
||
<article style={`--ledger-index:${index}`}>
|
||
<span>{code}</span><h3>{title}</h3><p>{body}</p>
|
||
</article>
|
||
))}
|
||
</div>
|
||
|
||
<div class="truth-banner">
|
||
<b>一句话定义</b>
|
||
<p>
|
||
Scaling law 是在一个明确的模型族、数据分布、训练 recipe 和指标下,
|
||
用较便宜的实验拟合规模规律,再对未训练的大 run 做带不确定性的预测。
|
||
</p>
|
||
</div>
|
||
</section>
|
||
|
||
<section class="article-section" id="power-law">
|
||
<p class="eyebrow"><span>01</span> POWER LAW INTUITION</p>
|
||
<h2>为什么 log-log 图上常出现一条直线?</h2>
|
||
<p>
|
||
许多实验观察到可约误差随资源 <code>x</code> 近似按 <code>x<sup>-α</sup></code> 下降。
|
||
取对数后,乘法变加法、指数变斜率,所以跨多个数量级的弯曲关系会变成近似直线。
|
||
</p>
|
||
|
||
<div class="power-stage">
|
||
<div class="formula-card">
|
||
<span>GENERIC FORM</span>
|
||
<b>L(x) = L∞ + A · x<sup>−α</sup></b>
|
||
<dl>
|
||
<div><dt>L∞</dt><dd>当前实验族的不可约下界</dd></div>
|
||
<div><dt>A</dt><dd>数据、架构、tokenizer 决定的垂直位移</dd></div>
|
||
<div><dt>α</dt><dd>资源翻倍时,loss 下降有多快</dd></div>
|
||
</dl>
|
||
</div>
|
||
<div class="log-plot" aria-label="幂律在普通坐标与双对数坐标中的示意">
|
||
<div>
|
||
<span>LINEAR VIEW</span>
|
||
<svg viewBox="0 0 280 150" role="img" aria-label="普通坐标下逐渐变平的幂律曲线">
|
||
<path class="axis" d="M28 12V124H264"></path>
|
||
<path class="curve" d="M34 24 C58 63 91 86 132 99 C180 114 224 119 258 121"></path>
|
||
<text x="180" y="143">RESOURCE x</text>
|
||
</svg>
|
||
</div>
|
||
<i>log</i>
|
||
<div>
|
||
<span>LOG–LOG VIEW</span>
|
||
<svg viewBox="0 0 280 150" role="img" aria-label="双对数坐标下近似直线的幂律曲线">
|
||
<path class="axis" d="M28 12V124H264"></path>
|
||
<path class="curve" d="M36 24L256 118"></path>
|
||
<text x="188" y="143">LOG x</text>
|
||
<text class="slope" x="138" y="58">slope = −α</text>
|
||
</svg>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="concept-pairs">
|
||
<article><span>翻倍不是翻倍能力</span><p>若 α 很小,每次翻倍只改善一点;跨越 10³–10⁶ 倍资源后,累积效果才显著。</p></article>
|
||
<article><span>直线不是永恒真理</span><p>数据分布、架构、优化器或指标改变后,前因子、指数、下界乃至函数形状都会改变。</p></article>
|
||
<article><span>拟合内不等于外推准</span><p>十个点能画出漂亮直线;真正的验证是把更大的目标 run 留到最后再揭晓。</p></article>
|
||
</div>
|
||
</section>
|
||
|
||
<section class="article-section" id="roots">
|
||
<p class="eyebrow"><span>02</span> 2017 → 2026</p>
|
||
<h2>从“数据多一点会更好”,到训练前先做模型家族搜索</h2>
|
||
<p>
|
||
Scaling laws 不是 GPT-3 后突然出现。2017 年的跨任务经验、2018 年的大 batch 统计,
|
||
先把可预测性与训练效率摆上桌;语言模型只是把实验推到更大的数量级。
|
||
</p>
|
||
|
||
<div class="history-river">
|
||
{history.map(([year, title, body], index) => (
|
||
<article>
|
||
<time>{year}</time>
|
||
<i><span>{String(index + 1).padStart(2, "0")}</span></i>
|
||
<div><h3>{title}</h3><p>{body}</p></div>
|
||
</article>
|
||
))}
|
||
</div>
|
||
|
||
<aside class="source-callout">
|
||
<b>前史的作用</b>
|
||
<p>
|
||
<a href="https://arxiv.org/abs/1712.00409">Hestness et al.</a> 说明不同任务的指数不同;
|
||
<a href="https://arxiv.org/abs/1812.06162">McCandlish et al.</a> 说明 batch 与优化动态也随规模变化。
|
||
所以后来的 `N–D–C` 从来不是一座与 recipe 无关的孤岛。
|
||
</p>
|
||
</aside>
|
||
</section>
|
||
|
||
<section class="article-section" id="kaplan">
|
||
<p class="eyebrow"><span>03</span> KAPLAN 2020</p>
|
||
<h2>经典坐标建立:参数、数据、计算各自都能形成平滑幂律</h2>
|
||
<p>
|
||
<a href="https://arxiv.org/abs/2001.08361">Scaling Laws for Neural Language Models</a>
|
||
在 WebText2 和一族 Transformer 上分别研究参数受限、数据受限与计算受限的情况。
|
||
论文把 “规模有效” 变成了可拟合、可规划的工程问题。
|
||
</p>
|
||
|
||
<div class="kaplan-board">
|
||
<article>
|
||
<span>PARAMETER-LIMITED</span>
|
||
<b>L(N) ∝ N<sup>−0.076</sup></b>
|
||
<p><code>N</code> 是 non-embedding parameters;需有足够数据并训练到接近收敛。</p>
|
||
</article>
|
||
<article>
|
||
<span>DATA-LIMITED</span>
|
||
<b>L(D) ∝ D<sup>−0.095</sup></b>
|
||
<p><code>D</code> 是 Token;常数依赖 WebText2、词表与 tokenizer。</p>
|
||
</article>
|
||
<article>
|
||
<span>COMPUTE-OPTIMAL</span>
|
||
<b>N<sub>opt</sub> ∝ C<sup>0.73</sup></b>
|
||
<p>该 recipe 下,大部分新增算力被分给更大的模型,数据增长较慢。</p>
|
||
</article>
|
||
</div>
|
||
|
||
<div class="boundary-box">
|
||
<div>
|
||
<span>当年的结论</span>
|
||
<b>更大的模型更 sample-efficient,compute-optimal 训练应偏向大模型并较早停止。</b>
|
||
</div>
|
||
<div>
|
||
<span>今天不能省略的条件</span>
|
||
<p>
|
||
固定 3,000-step warmup、last-layer FLOPs 计数与不同规模的优化器调参方式都会影响谷底。
|
||
2024 年复现实验证明,recipe 公平性可以改变看到的指数。
|
||
</p>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<section class="article-section" id="chinchilla">
|
||
<p class="eyebrow"><span>04</span> CHINCHILLA 2022</p>
|
||
<h2>同样训练 FLOPs,70B 认真读更多数据,可以胜过 280B 的欠训练模型</h2>
|
||
<p>
|
||
<a href="https://arxiv.org/abs/2203.15556">Training Compute-Optimal Large Language Models</a>
|
||
不只训练一个大模型,而是用三套方法寻找多个固定预算下的最优 <code>N × D</code> 配比。
|
||
三套结果共同指向:算力增长时,参数与 Token 应近似同比例增长。
|
||
</p>
|
||
|
||
<div class="loss-decomposition">
|
||
<div class="loss-label">
|
||
<span>PARAMETRIC LOSS</span>
|
||
<b>L(N,D)</b>
|
||
</div>
|
||
<div class="loss-piece entropy"><span>不可约</span><b>E</b><small>数据分布底噪</small></div>
|
||
<i>+</i>
|
||
<div class="loss-piece model"><span>模型项</span><b>A / N<sup>α</sup></b><small>容量不够</small></div>
|
||
<i>+</i>
|
||
<div class="loss-piece data"><span>数据项</span><b>B / D<sup>β</sup></b><small>训练不够</small></div>
|
||
</div>
|
||
|
||
<div class="approach-table">
|
||
<div class="head"><b>方法</b><b>实验/拟合方式</b><b>N exponent</b><b>D exponent</b></div>
|
||
{approaches.map(([index, title, n, d, body]) => (
|
||
<div>
|
||
<span>{index}</span>
|
||
<p><strong>{title}</strong><small>{body}</small></p>
|
||
<b>{n}</b>
|
||
<b>{d}</b>
|
||
</div>
|
||
))}
|
||
</div>
|
||
|
||
<div class="tpp-ruler">
|
||
<div class="ruler-label"><span>TOKENS / PARAMETER</span><b>一个经验尺,不是自然常数</b></div>
|
||
<div class="ruler-track">
|
||
<i style="--x:2%"><b>1</b><span>严重欠训</span></i>
|
||
<i class="key" style="--x:18%"><b>≈20</b><span>Chinchilla 表 3 附近</span></i>
|
||
<i style="--x:48%"><b>200</b><span>小模型长训练</span></i>
|
||
<i style="--x:78%"><b>2,000</b><span>部署导向过训练</span></i>
|
||
<i style="--x:98%"><b>10,000</b><span>论文探索边界</span></i>
|
||
</div>
|
||
<p>
|
||
表 3 的 1B→20.2B Token、10B→205.1B、67B→1.5T 形成约 20 TPP 的实用近似;
|
||
它不保证跨数据质量、tokenizer、MoE、优化器或部署目标保持不变。
|
||
</p>
|
||
</div>
|
||
</section>
|
||
|
||
<section class="article-section" id="isoflop">
|
||
<p class="eyebrow"><span>05</span> ISOFLOP METHOD</p>
|
||
<h2>谷底不是用公式猜出来的,而是用很多次小训练“围”出来的</h2>
|
||
<p>
|
||
固定一笔 compute budget,模型变大时能看的 Token 必须变少。最小模型可能容量不足,最大模型可能数据不足,
|
||
中间就形成一条 U 型 IsoFLOP 曲线。对多个预算重复,连接谷底才得到 compute-optimal frontier。
|
||
</p>
|
||
|
||
<div class="isoflop-diagram">
|
||
<div class="isoflop-chart" aria-label="多条 IsoFLOP 曲线及其谷底连线示意">
|
||
<svg viewBox="0 0 680 390" role="img">
|
||
<title>不同训练算力预算下的 IsoFLOP U 型曲线</title>
|
||
<path class="axis" d="M60 24V336H650"></path>
|
||
<g class="grid">
|
||
<path d="M60 76H650M60 140H650M60 204H650M60 268H650"></path>
|
||
</g>
|
||
<path class="budget b1" d="M82 91 C190 204 299 257 433 234 C519 219 585 170 632 110"></path>
|
||
<path class="budget b2" d="M82 65 C211 180 340 242 475 218 C551 203 607 163 638 121"></path>
|
||
<path class="budget b3" d="M82 44 C239 157 373 218 514 199 C578 190 619 159 642 132"></path>
|
||
<path class="frontier" d="M376 247 C420 234 472 218 520 198"></path>
|
||
<circle cx="376" cy="247" r="7"></circle>
|
||
<circle cx="472" cy="218" r="7"></circle>
|
||
<circle cx="520" cy="198" r="7"></circle>
|
||
<text x="255" y="376">MODEL SIZE N · LOG</text>
|
||
<text x="18" y="226" transform="rotate(-90 18 226)">VALIDATION LOSS</text>
|
||
<text class="annotation" x="512" y="175">OPTIMAL FRONTIER</text>
|
||
</svg>
|
||
</div>
|
||
<ol>
|
||
<li><span>01</span><div><b>选预算</b><p>至少多个跨数量级的训练 FLOPs。</p></div></li>
|
||
<li><span>02</span><div><b>扫配比</b><p>每个预算都要覆盖谷底两侧。</p></div></li>
|
||
<li><span>03</span><div><b>调 recipe</b><p>不同规模的 LR、batch、warmup 需公平。</p></div></li>
|
||
<li><span>04</span><div><b>找谷底</b><p>记录最优 N、D 与最终 loss。</p></div></li>
|
||
<li><span>05</span><div><b>真正外推</b><p>用未参与拟合的大 run 检查误差。</p></div></li>
|
||
</ol>
|
||
</div>
|
||
|
||
<aside class="warning-callout">
|
||
<b>常见“假 scaling study”</b>
|
||
<p>
|
||
只训练三个模型且全部位于谷底同一侧;每个规模沿用同一学习率;把训练中间 checkpoint 当独立数据点;
|
||
只报告拟合内 R²,不展示目标规模的预测误差。
|
||
</p>
|
||
</aside>
|
||
</section>
|
||
|
||
<section class="article-section" id="replication">
|
||
<p class="eyebrow"><span>06</span> REPLICATION & RECONCILIATION</p>
|
||
<h2>“Kaplan 错、Chinchilla 对”太简单:训练 recipe 本身就在改变曲线</h2>
|
||
<p>
|
||
2024 年两条复现路线把争议从口号拉回实验细节。
|
||
<a href="https://arxiv.org/abs/2404.10102">Chinchilla replication</a> 检查原论文 Approach 3 的拟合;
|
||
<a href="https://arxiv.org/abs/2406.19146">Resolving Discrepancies</a> 则从 Kaplan 风格训练重做实验。
|
||
</p>
|
||
|
||
<div class="replication-grid">
|
||
<article>
|
||
<span>REPLICATION ATTEMPT</span>
|
||
<h3>精确参数和置信区间有问题</h3>
|
||
<ul>
|
||
<li>正文、TeX 与重建数据的参数不完全一致;</li>
|
||
<li>原报告的 Approach 3 置信区间异常窄;</li>
|
||
<li>重新拟合后,近等比例扩展仍与 Approach 1/2 相容。</li>
|
||
</ul>
|
||
<b>不是“Chinchilla 被推翻”</b>
|
||
</article>
|
||
<article>
|
||
<span>KAPLAN → CHINCHILLA</span>
|
||
<h3>三项修正让指数明显移动</h3>
|
||
<ul>
|
||
<li>是否计入最后一层 / vocabulary FLOPs;</li>
|
||
<li>固定 warmup 对小模型是否过长;</li>
|
||
<li>是否做 scale-dependent optimizer tuning。</li>
|
||
</ul>
|
||
<b>recipe 是 scaling law 的一部分</b>
|
||
</article>
|
||
</div>
|
||
|
||
<div class="causal-chain">
|
||
<div><span>固定 3,000-step warmup</span><p>小模型大量训练仍在 warmup</p></div>
|
||
<i>→</i>
|
||
<div><span>小模型看起来不划算</span><p>谷底被推向更大模型</p></div>
|
||
<i>→</i>
|
||
<div><span>N exponent 变大</span><p>像是“规模定律”,实含 recipe 偏差</p></div>
|
||
</div>
|
||
|
||
<blockquote>
|
||
Scaling law 最值得学习的不是某个小数点,而是实验协议:定义、覆盖、调参、留出、误差条和失败条件。
|
||
</blockquote>
|
||
</section>
|
||
|
||
<section class="article-section" id="data">
|
||
<p class="eyebrow"><span>07</span> DATA-CONSTRAINED REGIME</p>
|
||
<h2>Seen Token 是系统付出的计算,Unique Token 才是第一次见到的信息</h2>
|
||
<p>
|
||
<a href="https://arxiv.org/abs/2305.16264">Scaling Data-Constrained Language Models</a>
|
||
用 <code>UD</code> 表示唯一数据,用 <code>RD</code> 表示重复次数:
|
||
<code>D = UD × (RD + 1)</code>。这个拆分让“训练了多少 Token”和“拥有多少新语料”不再混写。
|
||
</p>
|
||
|
||
<div class="data-tanks">
|
||
<article>
|
||
<span>UNIQUE DATA</span>
|
||
<div class="tank full"><i></i><b>UD</b></div>
|
||
<p>第一次出现的内容;筛选和去重决定底层分布。</p>
|
||
</article>
|
||
<i>× epochs</i>
|
||
<article>
|
||
<span>SEEN TOKENS</span>
|
||
<div class="tank striped"><i></i><b>D</b></div>
|
||
<p>训练系统真实处理的量;每次重复仍付完整算力。</p>
|
||
</article>
|
||
<i>≠</i>
|
||
<article>
|
||
<span>EFFECTIVE SIGNAL</span>
|
||
<div class="tank fading"><i></i><b>D<sub>eff</sub></b></div>
|
||
<p>不可直接测量的教学概念;重复、质量与正则化会改变它。</p>
|
||
</article>
|
||
</div>
|
||
|
||
<div class="evidence-split">
|
||
<div>
|
||
<span>论文实际报告</span>
|
||
<ul>
|
||
<li>400+ 个模型,10M–9B 参数;</li>
|
||
<li>最多 900B training Token;</li>
|
||
<li>其设置中,约 4 epoch 内与等量 unique data 的差距可能很小;</li>
|
||
<li>继续重复的边际收益最终趋近于零。</li>
|
||
</ul>
|
||
</div>
|
||
<div>
|
||
<span>不能改写成</span>
|
||
<ul>
|
||
<li>“任何语料重复四遍都无害”;</li>
|
||
<li>“第五遍开始完全没用”;</li>
|
||
<li>“改写一遍等于得到一个新 Token”;</li>
|
||
<li>“互联网数据将在某个固定年份耗尽”。</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
|
||
<p>
|
||
2026 年的 <a href="https://arxiv.org/abs/2606.06888">SoftQ</a> 进一步让模型与有限数据项发生耦合,
|
||
并研究强权重衰减与 masked-input regularization。它是数据受限前沿的新证据,不是已定型的新常数。
|
||
</p>
|
||
</section>
|
||
|
||
<section class="article-section" id="overtraining">
|
||
<p class="eyebrow"><span>08</span> OVER-TRAINING & DEPLOYMENT</p>
|
||
<h2>训练最省算力的模型,未必是一生服务最省算力的模型</h2>
|
||
<p>
|
||
Chinchilla 只优化训练。如果一个模型会被调用十亿次,更小模型即使预训练更久,
|
||
每次推理节省的计算也可能把额外训练成本赚回来。
|
||
</p>
|
||
|
||
<div class="economics-equation">
|
||
<span>TOTAL LIFETIME COST</span>
|
||
<div>
|
||
<b>C<sub>total</sub></b><i>=</i>
|
||
<strong>C<sub>train</sub></strong><i>+</i>
|
||
<strong>requests × C<sub>inference</sub></strong>
|
||
</div>
|
||
<p>目标函数一变,最优点就可以从“大模型、少训练”移动到“小模型、长训练”。</p>
|
||
</div>
|
||
|
||
<div class="train-serve-comparison">
|
||
<article>
|
||
<span>TRAIN-ONLY OPTIMUM</span>
|
||
<div class="model-shape large"><b>N</b><i></i></div>
|
||
<p>参数与数据在固定训练 FLOPs 下配平;不关心模型上线后调用多少次。</p>
|
||
</article>
|
||
<div class="demand-arrow">
|
||
<span>INFERENCE DEMAND ↑</span>
|
||
<i>→</i>
|
||
<small>最优模型趋向更小、训练 Token 趋向更多</small>
|
||
</div>
|
||
<article>
|
||
<span>LIFETIME OPTIMUM</span>
|
||
<div class="model-shape small"><b>N</b><i></i><i></i><i></i></div>
|
||
<p>用更多预训练摊薄每次调用;最终位置依赖流量、上下文、batch、硬件和寿命。</p>
|
||
</article>
|
||
</div>
|
||
|
||
<div class="paper-findings">
|
||
<article>
|
||
<span>BEYOND CHINCHILLA</span>
|
||
<h3>10–10,000 TPP</h3>
|
||
<p>
|
||
<a href="https://arxiv.org/abs/2401.00448">Sardana et al.</a> 训练 47 个 150M–6B 模型,
|
||
在研究范围内没有看到极高 TPP 的 loss 完全停止改善;这不证明无限长训。
|
||
</p>
|
||
</article>
|
||
<article>
|
||
<span>OVER-TRAINING LAWS</span>
|
||
<h3>104 models · 3 datasets</h3>
|
||
<p>
|
||
<a href="https://arxiv.org/abs/2403.08540">Gadre et al.</a> 发现多个 token multiplier 的
|
||
reducible-loss 曲线近似平行;aggregate downstream error 比单任务更可预测。
|
||
</p>
|
||
</article>
|
||
<article>
|
||
<span>NEW FAILURE MODE</span>
|
||
<h3>Base loss ≠ Adaptability</h3>
|
||
<p>
|
||
<a href="https://arxiv.org/abs/2503.19206">Catastrophic overtraining</a> 提醒:
|
||
更低预训练 loss 可能伴随后续 fine-tuning 更困难,两阶段目标必须分账。
|
||
</p>
|
||
</article>
|
||
</div>
|
||
</section>
|
||
|
||
<section class="article-section" id="emergence">
|
||
<p class="eyebrow"><span>09</span> EMERGENCE DEBATE</p>
|
||
<h2>“突然会了”可能是真机制,也可能只是评分尺把平滑曲线折成台阶</h2>
|
||
<p>
|
||
<a href="https://arxiv.org/abs/2206.07682">Emergent Abilities</a> 系统记录多项任务在规模上从近随机跃升。
|
||
<a href="https://arxiv.org/abs/2304.15004">Mirage</a> 随后证明,非线性或不连续指标本身就能制造这种外观。
|
||
</p>
|
||
|
||
<div class="metric-lenses">
|
||
<div class="latent-curve">
|
||
<span>同一底层 per-token 能力</span>
|
||
<svg viewBox="0 0 430 210" role="img" aria-label="随规模平滑增长的底层能力">
|
||
<path class="axis" d="M35 18V178H412"></path>
|
||
<path class="curve" d="M42 165 C118 158 164 141 215 106 C269 69 323 46 403 37"></path>
|
||
</svg>
|
||
</div>
|
||
<i>通过不同评分尺</i>
|
||
<div class="lens-results">
|
||
<article><span>TOKEN EDIT DISTANCE</span><svg viewBox="0 0 190 70"><path d="M8 61 C53 58 84 46 112 29 C140 13 166 9 183 7"></path></svg><b>连续</b></article>
|
||
<article><span>EXACT MATCH</span><svg viewBox="0 0 190 70"><path d="M8 66 C95 66 121 58 142 34 C158 16 172 9 183 7"></path></svg><b>很陡</b></article>
|
||
<article><span>PASS / FAIL</span><svg viewBox="0 0 190 70"><path d="M8 65 H126 V8 H183"></path></svg><b>阶跃</b></article>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="emergence-rules">
|
||
<article><b>先换连续指标</b><p>Token-level、Brier score、edit distance,检查底层进展是否仍有拐点。</p></article>
|
||
<article><b>再补采样与方差</b><p>稀疏规模点和高方差 benchmark 很容易把噪声看成阈值。</p></article>
|
||
<article><b>最后谈机制改变</b><p>若多个连续指标、种子和数据集都出现稳定转折,才追查数据或网络机制。</p></article>
|
||
</div>
|
||
|
||
<aside class="source-callout">
|
||
<b>Mirage 没有证明“所有涌现都不存在”</b>
|
||
<p>它证明指标选择足以制造一类假象;grokking、新数据阶段、工具能力或架构变化仍可能产生真实 regime shift。</p>
|
||
</aside>
|
||
</section>
|
||
|
||
<section class="article-section" id="new-axes">
|
||
<p class="eyebrow"><span>10</span> BEYOND DENSE N × D</p>
|
||
<h2>MoE 之后,一个“参数量”已经不能同时说明容量、计算与系统成本</h2>
|
||
<p>
|
||
Dense 模型里,参数量常能粗略代理每 Token 计算。MoE 把这条绑定拆开:模型可以拥有巨大总容量,
|
||
每个 Token 只激活一小部分;但未激活参数仍需存储,路由还会引入通信和负载不均。
|
||
</p>
|
||
|
||
<div class="moe-coordinate">
|
||
<div class="coord-axis capacity">
|
||
<span>CAPACITY</span><b>N<sub>total</sub></b><p>模型能装下多少专家与知识</p>
|
||
</div>
|
||
<div class="coord-core"><b>ONE TOKEN</b><span>route → active experts → combine</span></div>
|
||
<div class="coord-axis compute">
|
||
<span>COMPUTE</span><b>N<sub>active</sub></b><p>该 Token 实际进入多少参数</p>
|
||
</div>
|
||
<div class="coord-axis system">
|
||
<span>SYSTEM</span><b>bytes · imbalance</b><p>权重、dispatch、最慢 rank 与拓扑</p>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="axis-expansion">
|
||
<article><span>DENSE PRETRAIN</span><b>N · D · C · L</b><p>经典 scaling law 主轴。</p></article>
|
||
<i>→</i>
|
||
<article><span>SPARSE / CONTEXT</span><b>N<sub>total</sub> · N<sub>active</sub> · S</b><p>容量、激活计算与序列长度。</p></article>
|
||
<i>→</i>
|
||
<article><span>POST-TRAIN / SERVE</span><b>RL FLOPs · test-time · requests</b><p>数据生成、搜索和生命周期成本。</p></article>
|
||
</div>
|
||
|
||
<p>
|
||
因此 K3 报告所说的“双轴 scaling”——扩大预训练 foundation,同时扩大 RL、reasoning effort 与 agent 协作——
|
||
不能被压回一条 <code>L(N,D)</code>。它们优化不同目标、消费不同数据、产生不同状态。
|
||
</p>
|
||
</section>
|
||
|
||
<section class="article-section" id="deepseek">
|
||
<p class="eyebrow"><span>11</span> DEEPSEEK SPOTLIGHT</p>
|
||
<h2>DeepSeek 的亮点:不仅拟合模型和数据,还把超参数与真实算术放进搜索</h2>
|
||
<p>
|
||
<a href="https://arxiv.org/abs/2401.02954">DeepSeek LLM §3</a> 的重要性在于把 scaling study
|
||
变成训练大模型前的工程程序:先搜索 batch / LR,再决定模型—数据配比,并用更贴近算术的 <code>M</code> 替代参数数。
|
||
</p>
|
||
|
||
<div class="deepseek-formulas">
|
||
<article>
|
||
<span>HYPERPARAMETER LAWS</span>
|
||
<b>η<sub>opt</sub> = 0.3118 · C<sup>−0.1250</sup></b>
|
||
<b>B<sub>opt</sub> = 0.2920 · C<sup>0.3271</sup></b>
|
||
<p>系数只属于论文单位与实验族,不是通用配置。</p>
|
||
</article>
|
||
<article>
|
||
<span>MODEL SCALE PROXY</span>
|
||
<b>M = 72Ld² + 12LdS</b>
|
||
<b>C = M · D</b>
|
||
<p>把 attention 随 sequence length 的计算纳入 non-embedding FLOPs/token。</p>
|
||
</article>
|
||
<article>
|
||
<span>ISOFLOP RESULT</span>
|
||
<b>M<sub>opt</sub> = 0.1715 · C<sup>0.5243</sup></b>
|
||
<b>D<sub>opt</sub> = 5.8316 · C<sup>0.4757</sup></b>
|
||
<p>数据分布改变时,论文 §3.3 的 exponent 也会改变。</p>
|
||
</article>
|
||
</div>
|
||
|
||
<div class="model-lineage deepseek-lineage">
|
||
{deepseekSteps.map((step, index) => (
|
||
<article>
|
||
<time>{step.year}</time>
|
||
<span>{String(index + 1).padStart(2, "0")}</span>
|
||
<h3>{step.title}</h3>
|
||
<b>{step.formula}</b>
|
||
<p>{step.body}</p>
|
||
</article>
|
||
))}
|
||
</div>
|
||
|
||
<aside class="warning-callout">
|
||
<b>不要把 `2.788M H800 GPU hours` 反推成一条普适 scaling law</b>
|
||
<p>
|
||
V3 的实际成本同时取决于 FP8、DualPipe、MoE 通信、硬件与集群利用率。
|
||
理论 FLOPs 是算法账,GPU hours 是算法 × 系统 × 硬件 × 故障后的结果。
|
||
</p>
|
||
</aside>
|
||
</section>
|
||
|
||
<section class="article-section" id="kimi">
|
||
<p class="eyebrow"><span>12</span> KIMI K2 → K3</p>
|
||
<h2>从每个 Token 的价值,到整个模型家族的 2.5× scaling-efficiency claim</h2>
|
||
<p>
|
||
<a href="https://arxiv.org/abs/2507.20534">Kimi K2</a> 把高质量数据有限写进动机;
|
||
<a href="https://arxiv.org/abs/2607.24653">Kimi K3</a> 则对包含新架构、新数据与新训练配方的模型家族重新做 scaling study。
|
||
</p>
|
||
|
||
<div class="kimi-scaling-flow">
|
||
{kimiSteps.map((step, index) => (
|
||
<>
|
||
<article>
|
||
<span>{step.tag}</span>
|
||
<i>{String(index + 1).padStart(2, "0")}</i>
|
||
<h3>{step.title}</h3>
|
||
<p>{step.body}</p>
|
||
</article>
|
||
{index < kimiSteps.length - 1 && <b aria-hidden="true">→</b>}
|
||
</>
|
||
))}
|
||
</div>
|
||
|
||
<div class="claim-dissection">
|
||
<div class="claim-value"><span>K3 FIGURE 7</span><b>≈2.5×</b><p>overall scaling efficiency vs K2</p></div>
|
||
<div class="claim-meaning">
|
||
<article><span>它是</span><p>作者在 held-out OOD validation loss–FLOPs fitted curves 上报告的 family-level 横向差异。</p></article>
|
||
<article><span>它包含</span><p>KDA、AttnRes、Stable LatentMoE、数据与训练 recipe 的合计影响。</p></article>
|
||
<article><span>它不是</span><p>单个组件消融、吞吐 2.5×、参数少 2.5×、所有 benchmark 都提升 2.5×。</p></article>
|
||
<article><span>仍未知</span><p>足以独立重建全部曲线的原始 run 点、拟合代码、置信区间与完整数据配比。</p></article>
|
||
</div>
|
||
</div>
|
||
|
||
<blockquote>
|
||
K3 最值得带走的方法不是“cosine 永远优于 WSD”,而是不同 schedule 必须各自寻找近优 batch 与 peak LR,才能公平比较。
|
||
</blockquote>
|
||
</section>
|
||
|
||
<section class="article-section wide-section" id="lab">
|
||
<p class="eyebrow"><span>13</span> INTERACTIVE LAB</p>
|
||
<h2>亲手移动“最优点”,比背 20 TPP 更接近真实 scaling study</h2>
|
||
<p class="lede">
|
||
四个实验分别核算训练分配、生命周期成本、数据复用和指标变换。所有输出都是确定性教学模拟;
|
||
它们展示因果方向和边界,不预测任何真实模型的 loss、价格或能力。
|
||
</p>
|
||
<ScalingLawsLab />
|
||
</section>
|
||
|
||
<section class="article-section" id="reading">
|
||
<p class="eyebrow"><span>14</span> CURVE READING PROTOCOL</p>
|
||
<h2>看到一张漂亮 scaling 图,按这 12 个问题逐项盘问</h2>
|
||
|
||
<div class="reading-checklist">
|
||
<article><span>01</span><b>纵轴是什么?</b><p>CE、BPB、PPL、平均错误率或单任务 accuracy?</p></article>
|
||
<article><span>02</span><b>横轴是什么?</b><p>参数、Token、FLOPs、GPU hour、请求还是 test-time compute?</p></article>
|
||
<article><span>03</span><b>N 怎样数?</b><p>total、non-embedding、active,是否包含 embedding / ViT?</p></article>
|
||
<article><span>04</span><b>D 怎样数?</b><p>unique、seen、重复、合成,tokenizer 是否一致?</p></article>
|
||
<article><span>05</span><b>C 怎样数?</b><p>6ND、真实算子 FLOPs,还是硬件峰值与 GPU hours?</p></article>
|
||
<article><span>06</span><b>实验族可比吗?</b><p>架构、数据、优化器与训练稳定机制是否一起变化?</p></article>
|
||
<article><span>07</span><b>配比扫到谷底两侧了吗?</b><p>没有两侧就无法证明找到了最优点。</p></article>
|
||
<article><span>08</span><b>超参公平吗?</b><p>不同规模与 schedule 是否各自调 LR、batch、warmup?</p></article>
|
||
<article><span>09</span><b>目标点被留出了吗?</b><p>拟合内漂亮不代表跨 100× compute 外推准确。</p></article>
|
||
<article><span>10</span><b>误差条在哪里?</b><p>seed 方差、bootstrap CI、残差和版本是否公开?</p></article>
|
||
<article><span>11</span><b>最优针对什么?</b><p>训练 loss、部署总成本、下游平均还是 post-training 后能力?</p></article>
|
||
<article><span>12</span><b>作者没有公开什么?</b><p>原始点、拟合代码、数据配比与失败 run 都影响可信度。</p></article>
|
||
</div>
|
||
|
||
<div class="final-model">
|
||
<span>FINAL MENTAL MODEL</span>
|
||
<p>
|
||
<b>曲线</b>告诉你在当前条件下资源如何换 loss;
|
||
<b>谷底</b>告诉你当前目标怎样分配预算;
|
||
<b>误差条</b>告诉你能信多远;
|
||
<b>边界</b>告诉你换数据、架构、阶段或经济目标后必须重新实验。
|
||
</p>
|
||
</div>
|
||
</section>
|
||
|
||
<section class="article-section" id="papers">
|
||
<p class="eyebrow"><span>15</span> PRIMARY-SOURCE READING CHAIN</p>
|
||
<h2>29 个节点:先读主干,再沿争议与模型谱系深入</h2>
|
||
<p>
|
||
推荐顺序:Hestness → Kaplan → Chinchilla → data-constrained / inference-aware →
|
||
replication / reconciliation → DeepSeek LLM → K2 / K3。涌现与 broken laws 可作为平行争议线。
|
||
</p>
|
||
|
||
<div class="paper-chain">
|
||
{paperChain.map(([year, title, url, note], index) => (
|
||
<a href={url}>
|
||
<time>{year}</time>
|
||
<span>{String(index + 1).padStart(2, "0")}</span>
|
||
<b>{title}</b>
|
||
<p>{note}</p>
|
||
</a>
|
||
))}
|
||
</div>
|
||
|
||
<div class="chapter-next">
|
||
<span>NEXT / CHAPTER 05</span>
|
||
<h3>曲线告诉我们需要多少数据;下一章追问这些 Token 怎样采集、过滤、去重、混合和防污染。</h3>
|
||
<p>Scaling law 把数据写成 D,数据工程则解释为什么两个同样大的 D,可能有完全不同的学习价值。</p>
|
||
</div>
|
||
</section>
|
||
</article>
|
||
</div>
|
||
|
||
<style>
|
||
.scaling-hero {
|
||
background:
|
||
linear-gradient(120deg, rgba(28, 41, 59, 0.97), rgba(41, 57, 77, 0.94)),
|
||
radial-gradient(circle at 76% 30%, rgba(214, 172, 121, 0.38), transparent 28rem);
|
||
}
|
||
|
||
.scaling-hero::before {
|
||
position: absolute;
|
||
inset: 0;
|
||
background:
|
||
repeating-linear-gradient(90deg, transparent 0 89px, rgba(255, 255, 255, 0.035) 89px 90px),
|
||
repeating-linear-gradient(0deg, transparent 0 89px, rgba(255, 255, 255, 0.025) 89px 90px);
|
||
content: "";
|
||
}
|
||
|
||
.scaling-hero .page-hero-inner {
|
||
position: relative;
|
||
z-index: 1;
|
||
}
|
||
|
||
.scaling-hero h1,
|
||
.scaling-hero .lead,
|
||
.scaling-hero .page-facts dd {
|
||
color: #faf8f3;
|
||
}
|
||
|
||
.scaling-hero .eyebrow,
|
||
.scaling-hero .page-facts dt {
|
||
color: #d7b58b;
|
||
}
|
||
|
||
.scaling-hero .page-facts div {
|
||
border-color: rgba(255, 255, 255, 0.18);
|
||
}
|
||
|
||
.article code {
|
||
color: var(--copper);
|
||
font-size: 0.9em;
|
||
}
|
||
|
||
.ledger-grid {
|
||
display: grid;
|
||
grid-template-columns: repeat(3, 1fr);
|
||
margin-top: 34px;
|
||
border-top: 1px solid var(--line);
|
||
border-left: 1px solid var(--line);
|
||
}
|
||
|
||
.ledger-grid article {
|
||
min-height: 175px;
|
||
padding: 23px;
|
||
border-right: 1px solid var(--line);
|
||
border-bottom: 1px solid var(--line);
|
||
background: color-mix(in srgb, var(--paper-raised) 72%, var(--sage-pale));
|
||
}
|
||
|
||
.ledger-grid article:nth-child(3n + 2) {
|
||
background: color-mix(in srgb, var(--paper-raised) 80%, var(--copper-pale));
|
||
}
|
||
|
||
.ledger-grid article > span,
|
||
.formula-card > span,
|
||
.log-plot > div > span,
|
||
.kaplan-board article > span,
|
||
.loss-piece > span,
|
||
.ruler-label > span,
|
||
.replication-grid article > span,
|
||
.data-tanks article > span,
|
||
.evidence-split > div > span,
|
||
.economics-equation > span,
|
||
.train-serve-comparison article > span,
|
||
.paper-findings article > span,
|
||
.latent-curve > span,
|
||
.coord-axis > span,
|
||
.axis-expansion article > span,
|
||
.deepseek-formulas article > span,
|
||
.kimi-scaling-flow article > span,
|
||
.claim-value > span,
|
||
.claim-meaning article > span,
|
||
.final-model > span {
|
||
color: var(--copper);
|
||
font: 0.61rem/1.2 var(--mono);
|
||
letter-spacing: 0.1em;
|
||
}
|
||
|
||
.ledger-grid h3 {
|
||
margin: 12px 0 9px;
|
||
}
|
||
|
||
.ledger-grid p,
|
||
.concept-pairs p,
|
||
.kaplan-board p,
|
||
.loss-piece small,
|
||
.tpp-ruler p,
|
||
.isoflop-diagram ol p,
|
||
.replication-grid li,
|
||
.causal-chain p,
|
||
.data-tanks p,
|
||
.evidence-split li,
|
||
.economics-equation p,
|
||
.train-serve-comparison p,
|
||
.paper-findings p,
|
||
.emergence-rules p,
|
||
.coord-axis p,
|
||
.axis-expansion p,
|
||
.deepseek-formulas p,
|
||
.model-lineage p,
|
||
.kimi-scaling-flow p,
|
||
.claim-meaning p,
|
||
.reading-checklist p {
|
||
color: var(--muted);
|
||
font-size: 0.79rem;
|
||
line-height: 1.55;
|
||
}
|
||
|
||
.truth-banner {
|
||
display: grid;
|
||
grid-template-columns: 180px 1fr;
|
||
gap: 28px;
|
||
margin-top: 18px;
|
||
padding: 24px 26px;
|
||
border-left: 5px solid var(--sage);
|
||
background: var(--sage-pale);
|
||
}
|
||
|
||
.truth-banner b {
|
||
font-size: 0.9rem;
|
||
}
|
||
|
||
.power-stage {
|
||
display: grid;
|
||
grid-template-columns: 0.7fr 1.3fr;
|
||
gap: 18px;
|
||
margin-top: 32px;
|
||
}
|
||
|
||
.formula-card,
|
||
.log-plot {
|
||
padding: 25px;
|
||
border: 1px solid var(--line);
|
||
background: var(--paper-raised);
|
||
}
|
||
|
||
.formula-card > b {
|
||
display: block;
|
||
margin: 22px 0;
|
||
font: 650 clamp(1.25rem, 2.1vw, 2rem)/1.2 var(--mono);
|
||
}
|
||
|
||
.formula-card dl {
|
||
display: grid;
|
||
gap: 9px;
|
||
}
|
||
|
||
.formula-card dl div {
|
||
display: grid;
|
||
grid-template-columns: 45px 1fr;
|
||
gap: 12px;
|
||
padding-top: 9px;
|
||
border-top: 1px solid var(--line);
|
||
}
|
||
|
||
.formula-card dt {
|
||
color: var(--copper);
|
||
font: 0.72rem/1.5 var(--mono);
|
||
}
|
||
|
||
.formula-card dd {
|
||
color: var(--muted);
|
||
font-size: 0.74rem;
|
||
}
|
||
|
||
.log-plot {
|
||
display: grid;
|
||
grid-template-columns: 1fr auto 1fr;
|
||
gap: 15px;
|
||
align-items: center;
|
||
}
|
||
|
||
.log-plot > div {
|
||
min-width: 0;
|
||
}
|
||
|
||
.log-plot > i {
|
||
display: grid;
|
||
place-items: center;
|
||
width: 42px;
|
||
aspect-ratio: 1;
|
||
border-radius: 50%;
|
||
background: var(--ink);
|
||
color: var(--paper);
|
||
font: 0.7rem/1 var(--mono);
|
||
}
|
||
|
||
.log-plot svg {
|
||
margin-top: 15px;
|
||
}
|
||
|
||
.log-plot .axis,
|
||
.isoflop-chart .axis,
|
||
.metric-lenses .axis {
|
||
fill: none;
|
||
stroke: var(--line-strong);
|
||
stroke-width: 1.5;
|
||
}
|
||
|
||
.log-plot .curve,
|
||
.metric-lenses .curve {
|
||
fill: none;
|
||
stroke: var(--copper);
|
||
stroke-width: 4;
|
||
}
|
||
|
||
.log-plot text,
|
||
.isoflop-chart text {
|
||
fill: var(--muted);
|
||
font: 9px var(--mono);
|
||
}
|
||
|
||
.log-plot .slope {
|
||
fill: var(--sage);
|
||
font-weight: 700;
|
||
}
|
||
|
||
.concept-pairs {
|
||
display: grid;
|
||
grid-template-columns: repeat(3, 1fr);
|
||
gap: 10px;
|
||
margin-top: 10px;
|
||
}
|
||
|
||
.concept-pairs article {
|
||
padding: 18px;
|
||
border-top: 3px solid var(--sage);
|
||
background: var(--paper-deep);
|
||
}
|
||
|
||
.concept-pairs span {
|
||
display: block;
|
||
margin-bottom: 8px;
|
||
font-size: 0.78rem;
|
||
font-weight: 700;
|
||
}
|
||
|
||
.history-river {
|
||
margin-top: 34px;
|
||
border-top: 1px solid var(--line);
|
||
}
|
||
|
||
.history-river article {
|
||
display: grid;
|
||
grid-template-columns: 76px 38px 1fr;
|
||
gap: 20px;
|
||
min-height: 105px;
|
||
padding: 18px 8px;
|
||
border-bottom: 1px solid var(--line);
|
||
}
|
||
|
||
.history-river time {
|
||
padding-top: 5px;
|
||
color: var(--copper);
|
||
font: 0.69rem/1 var(--mono);
|
||
}
|
||
|
||
.history-river article > i {
|
||
position: relative;
|
||
display: flex;
|
||
justify-content: center;
|
||
}
|
||
|
||
.history-river article > i::after {
|
||
position: absolute;
|
||
top: 27px;
|
||
bottom: -19px;
|
||
width: 1px;
|
||
background: var(--line-strong);
|
||
content: "";
|
||
}
|
||
|
||
.history-river article:last-child > i::after {
|
||
display: none;
|
||
}
|
||
|
||
.history-river article > i span {
|
||
position: relative;
|
||
z-index: 1;
|
||
display: grid;
|
||
place-items: center;
|
||
width: 28px;
|
||
height: 28px;
|
||
border-radius: 50%;
|
||
background: var(--ink);
|
||
color: var(--paper);
|
||
font: 0.55rem/1 var(--mono);
|
||
}
|
||
|
||
.history-river h3 {
|
||
margin-bottom: 7px;
|
||
}
|
||
|
||
.history-river p {
|
||
color: var(--muted);
|
||
font-size: 0.82rem;
|
||
}
|
||
|
||
.source-callout,
|
||
.warning-callout {
|
||
margin-top: 22px;
|
||
padding: 22px 24px;
|
||
border: 1px solid var(--line);
|
||
background: var(--sage-pale);
|
||
}
|
||
|
||
.warning-callout {
|
||
background: var(--copper-pale);
|
||
}
|
||
|
||
.source-callout b,
|
||
.warning-callout b {
|
||
display: block;
|
||
margin-bottom: 8px;
|
||
}
|
||
|
||
.source-callout p,
|
||
.warning-callout p {
|
||
color: var(--muted);
|
||
font-size: 0.82rem;
|
||
}
|
||
|
||
.kaplan-board {
|
||
display: grid;
|
||
grid-template-columns: repeat(3, 1fr);
|
||
gap: 10px;
|
||
margin-top: 32px;
|
||
}
|
||
|
||
.kaplan-board article {
|
||
padding: 24px 20px;
|
||
border: 1px solid var(--line);
|
||
background: var(--paper-raised);
|
||
}
|
||
|
||
.kaplan-board article > b {
|
||
display: block;
|
||
margin: 17px 0 12px;
|
||
font: 650 clamp(1.15rem, 2vw, 1.7rem)/1.2 var(--mono);
|
||
}
|
||
|
||
.boundary-box {
|
||
display: grid;
|
||
grid-template-columns: 1fr 1fr;
|
||
gap: 1px;
|
||
margin-top: 12px;
|
||
background: var(--line);
|
||
border: 1px solid var(--line);
|
||
}
|
||
|
||
.boundary-box > div {
|
||
padding: 22px;
|
||
background: var(--paper-deep);
|
||
}
|
||
|
||
.boundary-box span {
|
||
display: block;
|
||
margin-bottom: 10px;
|
||
color: var(--copper);
|
||
font: 0.6rem/1 var(--mono);
|
||
}
|
||
|
||
.boundary-box p {
|
||
color: var(--muted);
|
||
font-size: 0.81rem;
|
||
}
|
||
|
||
.loss-decomposition {
|
||
display: grid;
|
||
grid-template-columns: 0.75fr 0.65fr auto 1fr auto 1fr;
|
||
gap: 10px;
|
||
align-items: stretch;
|
||
margin-top: 32px;
|
||
}
|
||
|
||
.loss-label,
|
||
.loss-piece {
|
||
display: grid;
|
||
align-content: center;
|
||
min-height: 128px;
|
||
padding: 18px;
|
||
border: 1px solid var(--line);
|
||
background: var(--paper-raised);
|
||
}
|
||
|
||
.loss-label span {
|
||
color: var(--muted);
|
||
font: 0.57rem/1 var(--mono);
|
||
}
|
||
|
||
.loss-label b,
|
||
.loss-piece b {
|
||
margin-top: 8px;
|
||
font: 650 1.2rem/1.2 var(--mono);
|
||
}
|
||
|
||
.loss-piece.entropy { background: var(--paper-deep); }
|
||
.loss-piece.model { background: var(--copper-pale); }
|
||
.loss-piece.data { background: var(--sage-pale); }
|
||
|
||
.loss-decomposition > i {
|
||
align-self: center;
|
||
color: var(--copper);
|
||
font: 1.2rem/1 var(--mono);
|
||
}
|
||
|
||
.loss-piece small {
|
||
margin-top: 8px;
|
||
}
|
||
|
||
.approach-table {
|
||
margin-top: 18px;
|
||
border-top: 1px solid var(--line-strong);
|
||
}
|
||
|
||
.approach-table .head,
|
||
.approach-table > div {
|
||
display: grid;
|
||
grid-template-columns: 52px 1fr 120px 120px;
|
||
gap: 16px;
|
||
align-items: center;
|
||
min-height: 76px;
|
||
padding: 12px 8px;
|
||
border-bottom: 1px solid var(--line);
|
||
}
|
||
|
||
.approach-table .head {
|
||
min-height: 45px;
|
||
color: var(--muted);
|
||
font: 0.58rem/1 var(--mono);
|
||
}
|
||
|
||
.approach-table > div > span {
|
||
color: var(--copper);
|
||
font: 0.65rem/1 var(--mono);
|
||
}
|
||
|
||
.approach-table p {
|
||
display: grid;
|
||
gap: 5px;
|
||
}
|
||
|
||
.approach-table small {
|
||
color: var(--muted);
|
||
font-size: 0.7rem;
|
||
}
|
||
|
||
.approach-table > div > b {
|
||
font-family: var(--mono);
|
||
text-align: center;
|
||
}
|
||
|
||
.tpp-ruler {
|
||
margin-top: 24px;
|
||
padding: 24px;
|
||
border: 1px solid var(--line);
|
||
background: var(--paper-raised);
|
||
}
|
||
|
||
.ruler-label {
|
||
display: flex;
|
||
justify-content: space-between;
|
||
gap: 20px;
|
||
}
|
||
|
||
.ruler-track {
|
||
position: relative;
|
||
height: 112px;
|
||
margin: 28px 8px 10px;
|
||
border-top: 5px solid var(--ink);
|
||
}
|
||
|
||
.ruler-track::before {
|
||
position: absolute;
|
||
top: -5px;
|
||
right: 0;
|
||
left: 0;
|
||
height: 5px;
|
||
background: linear-gradient(90deg, var(--copper), var(--sage), var(--violet));
|
||
content: "";
|
||
opacity: 0.6;
|
||
}
|
||
|
||
.ruler-track > i {
|
||
position: absolute;
|
||
top: -10px;
|
||
left: var(--x);
|
||
display: grid;
|
||
justify-items: center;
|
||
width: 110px;
|
||
transform: translateX(-50%);
|
||
text-align: center;
|
||
}
|
||
|
||
.ruler-track > i::before {
|
||
width: 2px;
|
||
height: 26px;
|
||
background: var(--ink);
|
||
content: "";
|
||
}
|
||
|
||
.ruler-track > i.key::before {
|
||
width: 5px;
|
||
background: var(--copper);
|
||
}
|
||
|
||
.ruler-track b {
|
||
margin-top: 7px;
|
||
font: 0.73rem/1 var(--mono);
|
||
}
|
||
|
||
.ruler-track span {
|
||
margin-top: 6px;
|
||
color: var(--muted);
|
||
font-size: 0.58rem;
|
||
line-height: 1.25;
|
||
}
|
||
|
||
.isoflop-diagram {
|
||
display: grid;
|
||
grid-template-columns: minmax(0, 1.25fr) minmax(250px, 0.75fr);
|
||
gap: 18px;
|
||
margin-top: 32px;
|
||
}
|
||
|
||
.isoflop-chart {
|
||
padding: 18px;
|
||
border: 1px solid var(--line);
|
||
background: var(--paper-raised);
|
||
}
|
||
|
||
.isoflop-chart .grid {
|
||
fill: none;
|
||
stroke: var(--line);
|
||
stroke-width: 1;
|
||
}
|
||
|
||
.isoflop-chart .budget {
|
||
fill: none;
|
||
stroke-width: 3;
|
||
}
|
||
|
||
.isoflop-chart .b1 { stroke: var(--copper); }
|
||
.isoflop-chart .b2 { stroke: var(--sage); }
|
||
.isoflop-chart .b3 { stroke: var(--violet); }
|
||
.isoflop-chart .frontier {
|
||
fill: none;
|
||
stroke: var(--ink);
|
||
stroke-dasharray: 4 5;
|
||
stroke-width: 2;
|
||
}
|
||
|
||
.isoflop-chart circle {
|
||
fill: var(--ink);
|
||
stroke: var(--paper);
|
||
stroke-width: 4;
|
||
}
|
||
|
||
.isoflop-chart .annotation {
|
||
fill: var(--ink);
|
||
font-weight: 700;
|
||
}
|
||
|
||
.isoflop-diagram ol {
|
||
display: grid;
|
||
align-content: start;
|
||
gap: 8px;
|
||
margin: 0;
|
||
padding: 0;
|
||
list-style: none;
|
||
}
|
||
|
||
.isoflop-diagram li {
|
||
display: grid;
|
||
grid-template-columns: 34px 1fr;
|
||
gap: 12px;
|
||
padding: 15px;
|
||
border: 1px solid var(--line);
|
||
background: var(--paper-deep);
|
||
}
|
||
|
||
.isoflop-diagram li > span {
|
||
color: var(--copper);
|
||
font: 0.58rem/1 var(--mono);
|
||
}
|
||
|
||
.isoflop-diagram li b {
|
||
display: block;
|
||
margin-bottom: 4px;
|
||
font-size: 0.8rem;
|
||
}
|
||
|
||
.replication-grid {
|
||
display: grid;
|
||
grid-template-columns: 1fr 1fr;
|
||
gap: 12px;
|
||
margin-top: 30px;
|
||
}
|
||
|
||
.replication-grid article {
|
||
padding: 25px;
|
||
border: 1px solid var(--line);
|
||
background: var(--paper-raised);
|
||
}
|
||
|
||
.replication-grid h3 {
|
||
margin: 14px 0;
|
||
}
|
||
|
||
.replication-grid ul,
|
||
.evidence-split ul {
|
||
margin: 0;
|
||
padding-left: 19px;
|
||
}
|
||
|
||
.replication-grid article > b {
|
||
display: block;
|
||
margin-top: 18px;
|
||
padding-top: 14px;
|
||
border-top: 1px solid var(--line);
|
||
color: var(--sage);
|
||
font-size: 0.78rem;
|
||
}
|
||
|
||
.causal-chain {
|
||
display: grid;
|
||
grid-template-columns: 1fr auto 1fr auto 1fr;
|
||
gap: 12px;
|
||
align-items: center;
|
||
margin-top: 12px;
|
||
}
|
||
|
||
.causal-chain > div {
|
||
min-height: 105px;
|
||
padding: 17px;
|
||
border-top: 4px solid var(--copper);
|
||
background: var(--copper-pale);
|
||
}
|
||
|
||
.causal-chain > div > span {
|
||
display: block;
|
||
margin-bottom: 8px;
|
||
font-weight: 700;
|
||
}
|
||
|
||
.causal-chain > i {
|
||
color: var(--copper);
|
||
font: 1.1rem/1 var(--mono);
|
||
}
|
||
|
||
.article blockquote {
|
||
margin: 22px 0 0;
|
||
padding: 22px 26px;
|
||
border-left: 5px solid var(--ink);
|
||
background: var(--paper-deep);
|
||
font-family: var(--serif);
|
||
font-size: 1.12rem;
|
||
}
|
||
|
||
.data-tanks {
|
||
display: grid;
|
||
grid-template-columns: 1fr auto 1fr auto 1fr;
|
||
gap: 18px;
|
||
align-items: center;
|
||
margin-top: 32px;
|
||
}
|
||
|
||
.data-tanks > i {
|
||
color: var(--copper);
|
||
font: 0.72rem/1 var(--mono);
|
||
}
|
||
|
||
.data-tanks article {
|
||
text-align: center;
|
||
}
|
||
|
||
.tank {
|
||
position: relative;
|
||
display: grid;
|
||
place-items: end center;
|
||
width: 130px;
|
||
height: 150px;
|
||
margin: 14px auto;
|
||
overflow: hidden;
|
||
border: 2px solid var(--ink);
|
||
border-top: 0;
|
||
}
|
||
|
||
.tank i {
|
||
position: absolute;
|
||
right: 5px;
|
||
bottom: 5px;
|
||
left: 5px;
|
||
height: 82%;
|
||
background: var(--sage);
|
||
}
|
||
|
||
.tank.striped i {
|
||
background: repeating-linear-gradient(0deg, var(--sage) 0 13px, var(--sage-pale) 13px 18px);
|
||
}
|
||
|
||
.tank.fading i {
|
||
background: linear-gradient(0deg, var(--sage), color-mix(in srgb, var(--sage) 18%, transparent));
|
||
}
|
||
|
||
.tank b {
|
||
position: relative;
|
||
z-index: 1;
|
||
margin-bottom: 17px;
|
||
color: var(--paper);
|
||
font: 700 1.1rem/1 var(--mono);
|
||
}
|
||
|
||
.evidence-split {
|
||
display: grid;
|
||
grid-template-columns: 1fr 1fr;
|
||
gap: 12px;
|
||
margin: 24px 0;
|
||
}
|
||
|
||
.evidence-split > div {
|
||
padding: 22px;
|
||
border: 1px solid var(--line);
|
||
background: var(--sage-pale);
|
||
}
|
||
|
||
.evidence-split > div:last-child {
|
||
background: var(--copper-pale);
|
||
}
|
||
|
||
.evidence-split ul {
|
||
margin-top: 13px;
|
||
}
|
||
|
||
.evidence-split li {
|
||
color: var(--muted);
|
||
font-size: 0.78rem;
|
||
}
|
||
|
||
.economics-equation {
|
||
margin-top: 30px;
|
||
padding: 27px;
|
||
border: 1px solid var(--line);
|
||
background: var(--ink);
|
||
color: var(--paper);
|
||
text-align: center;
|
||
}
|
||
|
||
.economics-equation > span {
|
||
color: #d7b58b;
|
||
}
|
||
|
||
.economics-equation > div {
|
||
display: flex;
|
||
flex-wrap: wrap;
|
||
justify-content: center;
|
||
gap: 15px;
|
||
align-items: baseline;
|
||
margin: 20px 0 12px;
|
||
font: 650 clamp(1.25rem, 2.6vw, 2.25rem)/1.2 var(--mono);
|
||
}
|
||
|
||
.economics-equation strong {
|
||
color: #d5e6df;
|
||
}
|
||
|
||
.economics-equation p {
|
||
color: rgba(250, 248, 243, 0.7);
|
||
}
|
||
|
||
.train-serve-comparison {
|
||
display: grid;
|
||
grid-template-columns: 1fr 0.7fr 1fr;
|
||
gap: 18px;
|
||
align-items: center;
|
||
margin-top: 16px;
|
||
}
|
||
|
||
.train-serve-comparison article {
|
||
padding: 22px;
|
||
border: 1px solid var(--line);
|
||
background: var(--paper-raised);
|
||
}
|
||
|
||
.model-shape {
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
gap: 5px;
|
||
height: 90px;
|
||
margin: 14px 0;
|
||
}
|
||
|
||
.model-shape b {
|
||
display: grid;
|
||
place-items: center;
|
||
border-radius: 50%;
|
||
background: var(--ink);
|
||
color: var(--paper);
|
||
font: 700 1rem/1 var(--mono);
|
||
}
|
||
|
||
.model-shape.large b {
|
||
width: 84px;
|
||
height: 84px;
|
||
}
|
||
|
||
.model-shape.small b {
|
||
width: 51px;
|
||
height: 51px;
|
||
}
|
||
|
||
.model-shape.small i {
|
||
width: 9px;
|
||
height: 51px;
|
||
background: var(--sage);
|
||
opacity: calc(1 - var(--i, 0) * 0.2);
|
||
}
|
||
|
||
.demand-arrow {
|
||
color: var(--copper);
|
||
text-align: center;
|
||
}
|
||
|
||
.demand-arrow span,
|
||
.demand-arrow small {
|
||
display: block;
|
||
font: 0.57rem/1.4 var(--mono);
|
||
}
|
||
|
||
.demand-arrow i {
|
||
display: block;
|
||
margin: 10px;
|
||
font: 2rem/1 var(--mono);
|
||
}
|
||
|
||
.paper-findings {
|
||
display: grid;
|
||
grid-template-columns: repeat(3, 1fr);
|
||
gap: 10px;
|
||
margin-top: 16px;
|
||
}
|
||
|
||
.paper-findings article {
|
||
padding: 20px;
|
||
border-top: 4px solid var(--sage);
|
||
background: var(--paper-deep);
|
||
}
|
||
|
||
.paper-findings h3 {
|
||
margin: 12px 0 10px;
|
||
}
|
||
|
||
.metric-lenses {
|
||
display: grid;
|
||
grid-template-columns: 1fr auto 1fr;
|
||
gap: 20px;
|
||
align-items: center;
|
||
margin-top: 30px;
|
||
}
|
||
|
||
.latent-curve,
|
||
.lens-results {
|
||
padding: 22px;
|
||
border: 1px solid var(--line);
|
||
background: var(--paper-raised);
|
||
}
|
||
|
||
.metric-lenses > i {
|
||
color: var(--copper);
|
||
font: 0.62rem/1.3 var(--mono);
|
||
text-align: center;
|
||
}
|
||
|
||
.lens-results {
|
||
display: grid;
|
||
gap: 9px;
|
||
}
|
||
|
||
.lens-results article {
|
||
display: grid;
|
||
grid-template-columns: 105px 1fr 42px;
|
||
gap: 9px;
|
||
align-items: center;
|
||
}
|
||
|
||
.lens-results span,
|
||
.lens-results b {
|
||
font: 0.52rem/1.2 var(--mono);
|
||
}
|
||
|
||
.lens-results svg {
|
||
width: 100%;
|
||
height: 54px;
|
||
}
|
||
|
||
.lens-results path {
|
||
fill: none;
|
||
stroke: var(--copper);
|
||
stroke-width: 3;
|
||
}
|
||
|
||
.emergence-rules {
|
||
display: grid;
|
||
grid-template-columns: repeat(3, 1fr);
|
||
gap: 10px;
|
||
margin-top: 12px;
|
||
}
|
||
|
||
.emergence-rules article {
|
||
padding: 18px;
|
||
border: 1px solid var(--line);
|
||
background: var(--paper-deep);
|
||
}
|
||
|
||
.emergence-rules b {
|
||
display: block;
|
||
margin-bottom: 7px;
|
||
}
|
||
|
||
.moe-coordinate {
|
||
display: grid;
|
||
grid-template-columns: 1fr 0.8fr 1fr;
|
||
grid-template-areas:
|
||
"capacity core compute"
|
||
". system .";
|
||
gap: 16px;
|
||
align-items: center;
|
||
margin-top: 32px;
|
||
}
|
||
|
||
.coord-axis,
|
||
.coord-core {
|
||
padding: 22px;
|
||
border: 1px solid var(--line);
|
||
background: var(--paper-raised);
|
||
text-align: center;
|
||
}
|
||
|
||
.coord-axis.capacity { grid-area: capacity; }
|
||
.coord-axis.compute { grid-area: compute; }
|
||
.coord-axis.system { grid-area: system; }
|
||
.coord-core { grid-area: core; background: var(--ink); color: var(--paper); }
|
||
|
||
.coord-axis > b,
|
||
.coord-core > b {
|
||
display: block;
|
||
margin: 12px 0 8px;
|
||
font: 650 1.25rem/1 var(--mono);
|
||
}
|
||
|
||
.coord-core > span {
|
||
color: rgba(250, 248, 243, 0.68);
|
||
font: 0.57rem/1.5 var(--mono);
|
||
}
|
||
|
||
.axis-expansion {
|
||
display: grid;
|
||
grid-template-columns: 1fr auto 1fr auto 1fr;
|
||
gap: 12px;
|
||
align-items: center;
|
||
margin: 18px 0 24px;
|
||
}
|
||
|
||
.axis-expansion article {
|
||
padding: 18px;
|
||
border-top: 4px solid var(--copper);
|
||
background: var(--copper-pale);
|
||
}
|
||
|
||
.axis-expansion article > b {
|
||
display: block;
|
||
margin: 10px 0 7px;
|
||
font: 650 0.85rem/1.3 var(--mono);
|
||
}
|
||
|
||
.axis-expansion > i {
|
||
color: var(--copper);
|
||
}
|
||
|
||
.deepseek-formulas {
|
||
display: grid;
|
||
grid-template-columns: repeat(3, 1fr);
|
||
gap: 10px;
|
||
margin-top: 30px;
|
||
}
|
||
|
||
.deepseek-formulas article {
|
||
padding: 20px;
|
||
border: 1px solid var(--line);
|
||
background: var(--paper-raised);
|
||
}
|
||
|
||
.deepseek-formulas article > b {
|
||
display: block;
|
||
margin-top: 13px;
|
||
font: 650 0.82rem/1.45 var(--mono);
|
||
}
|
||
|
||
.deepseek-formulas p {
|
||
margin-top: 12px;
|
||
}
|
||
|
||
.model-lineage {
|
||
display: grid;
|
||
grid-template-columns: repeat(4, 1fr);
|
||
gap: 1px;
|
||
margin-top: 16px;
|
||
border: 1px solid var(--line);
|
||
background: var(--line);
|
||
}
|
||
|
||
.model-lineage article {
|
||
min-width: 0;
|
||
padding: 20px;
|
||
background: var(--paper-deep);
|
||
}
|
||
|
||
.model-lineage time,
|
||
.model-lineage article > span {
|
||
color: var(--copper);
|
||
font: 0.58rem/1 var(--mono);
|
||
}
|
||
|
||
.model-lineage article > span {
|
||
float: right;
|
||
}
|
||
|
||
.model-lineage h3 {
|
||
margin: 18px 0 10px;
|
||
}
|
||
|
||
.model-lineage article > b {
|
||
display: block;
|
||
min-height: 38px;
|
||
color: var(--sage);
|
||
font: 650 0.64rem/1.5 var(--mono);
|
||
}
|
||
|
||
.kimi-scaling-flow {
|
||
display: grid;
|
||
grid-template-columns: 1fr auto 1fr auto 1fr auto 1fr;
|
||
gap: 11px;
|
||
align-items: center;
|
||
margin-top: 30px;
|
||
}
|
||
|
||
.kimi-scaling-flow article {
|
||
min-height: 230px;
|
||
padding: 20px;
|
||
border: 1px solid var(--line);
|
||
background: var(--paper-raised);
|
||
}
|
||
|
||
.kimi-scaling-flow article > i {
|
||
float: right;
|
||
color: var(--muted);
|
||
font: 0.58rem/1 var(--mono);
|
||
}
|
||
|
||
.kimi-scaling-flow h3 {
|
||
margin: 20px 0 12px;
|
||
}
|
||
|
||
.kimi-scaling-flow > b {
|
||
color: var(--copper);
|
||
}
|
||
|
||
.claim-dissection {
|
||
display: grid;
|
||
grid-template-columns: 0.7fr 1.3fr;
|
||
gap: 12px;
|
||
margin-top: 16px;
|
||
}
|
||
|
||
.claim-value {
|
||
display: grid;
|
||
align-content: center;
|
||
justify-items: center;
|
||
min-height: 280px;
|
||
padding: 24px;
|
||
background: var(--ink);
|
||
color: var(--paper);
|
||
text-align: center;
|
||
}
|
||
|
||
.claim-value > span { color: #d7b58b; }
|
||
.claim-value > b {
|
||
margin: 20px 0 10px;
|
||
font: 700 clamp(3.5rem, 8vw, 7rem)/0.9 var(--display);
|
||
}
|
||
|
||
.claim-value > p {
|
||
color: rgba(250, 248, 243, 0.68);
|
||
font: 0.65rem/1.5 var(--mono);
|
||
}
|
||
|
||
.claim-meaning {
|
||
display: grid;
|
||
grid-template-columns: 1fr 1fr;
|
||
gap: 10px;
|
||
}
|
||
|
||
.claim-meaning article {
|
||
padding: 19px;
|
||
border: 1px solid var(--line);
|
||
background: var(--paper-deep);
|
||
}
|
||
|
||
.claim-meaning p {
|
||
margin-top: 10px;
|
||
}
|
||
|
||
.wide-section {
|
||
width: min(1120px, calc(100vw - 80px));
|
||
margin-left: min(0px, calc((780px - min(1120px, calc(100vw - 80px))) / 2));
|
||
}
|
||
|
||
.reading-checklist {
|
||
display: grid;
|
||
grid-template-columns: repeat(3, 1fr);
|
||
gap: 1px;
|
||
margin-top: 30px;
|
||
border: 1px solid var(--line);
|
||
background: var(--line);
|
||
}
|
||
|
||
.reading-checklist article {
|
||
min-height: 155px;
|
||
padding: 19px;
|
||
background: var(--paper-raised);
|
||
}
|
||
|
||
.reading-checklist article > span {
|
||
display: block;
|
||
color: var(--copper);
|
||
font: 0.58rem/1 var(--mono);
|
||
}
|
||
|
||
.reading-checklist article > b {
|
||
display: block;
|
||
margin: 15px 0 8px;
|
||
}
|
||
|
||
.final-model {
|
||
margin-top: 18px;
|
||
padding: 25px;
|
||
border-left: 5px solid var(--sage);
|
||
background: var(--sage-pale);
|
||
}
|
||
|
||
.final-model p {
|
||
margin-top: 12px;
|
||
font-family: var(--serif);
|
||
font-size: 1.04rem;
|
||
}
|
||
|
||
.paper-chain {
|
||
margin-top: 30px;
|
||
border-top: 1px solid var(--line-strong);
|
||
}
|
||
|
||
.paper-chain a {
|
||
display: grid;
|
||
grid-template-columns: 60px 34px minmax(220px, 0.8fr) 1.2fr;
|
||
gap: 16px;
|
||
align-items: center;
|
||
min-height: 78px;
|
||
padding: 12px 8px;
|
||
border-bottom: 1px solid var(--line);
|
||
text-decoration: none;
|
||
}
|
||
|
||
.paper-chain a:hover {
|
||
background: var(--paper-raised);
|
||
}
|
||
|
||
.paper-chain time,
|
||
.paper-chain a > span {
|
||
color: var(--copper);
|
||
font: 0.6rem/1 var(--mono);
|
||
}
|
||
|
||
.paper-chain a > span {
|
||
color: var(--muted);
|
||
}
|
||
|
||
.paper-chain p {
|
||
color: var(--muted);
|
||
font-size: 0.76rem;
|
||
}
|
||
|
||
.chapter-next {
|
||
margin-top: 32px;
|
||
padding: 27px;
|
||
border: 1px solid var(--line);
|
||
background: var(--ink);
|
||
color: var(--paper);
|
||
}
|
||
|
||
.chapter-next > span {
|
||
color: #d7b58b;
|
||
font: 0.62rem/1 var(--mono);
|
||
letter-spacing: 0.1em;
|
||
}
|
||
|
||
.chapter-next h3 {
|
||
margin: 16px 0 10px;
|
||
color: var(--paper);
|
||
}
|
||
|
||
.chapter-next p {
|
||
color: rgba(250, 248, 243, 0.68);
|
||
font-size: 0.82rem;
|
||
}
|
||
|
||
@media (max-width: 1050px) {
|
||
.wide-section {
|
||
width: auto;
|
||
margin-left: 0;
|
||
}
|
||
|
||
.model-lineage,
|
||
.kimi-scaling-flow {
|
||
grid-template-columns: repeat(2, 1fr);
|
||
}
|
||
|
||
.kimi-scaling-flow > b {
|
||
display: none;
|
||
}
|
||
|
||
.deepseek-formulas {
|
||
grid-template-columns: 1fr;
|
||
}
|
||
}
|
||
|
||
@media (max-width: 760px) {
|
||
.ledger-grid,
|
||
.concept-pairs,
|
||
.kaplan-board,
|
||
.paper-findings,
|
||
.emergence-rules,
|
||
.reading-checklist {
|
||
grid-template-columns: 1fr;
|
||
}
|
||
|
||
.power-stage,
|
||
.boundary-box,
|
||
.isoflop-diagram,
|
||
.replication-grid,
|
||
.evidence-split,
|
||
.claim-dissection {
|
||
grid-template-columns: 1fr;
|
||
}
|
||
|
||
.truth-banner {
|
||
grid-template-columns: 1fr;
|
||
gap: 10px;
|
||
}
|
||
|
||
.log-plot {
|
||
grid-template-columns: 1fr;
|
||
}
|
||
|
||
.log-plot > i {
|
||
margin: auto;
|
||
}
|
||
|
||
.loss-decomposition {
|
||
grid-template-columns: 1fr;
|
||
}
|
||
|
||
.loss-decomposition > i {
|
||
text-align: center;
|
||
}
|
||
|
||
.approach-table .head {
|
||
display: none;
|
||
}
|
||
|
||
.approach-table > div {
|
||
grid-template-columns: 40px 1fr 56px 56px;
|
||
gap: 8px;
|
||
}
|
||
|
||
.ruler-track {
|
||
height: auto;
|
||
margin-top: 24px;
|
||
border-top: 0;
|
||
}
|
||
|
||
.ruler-track::before {
|
||
display: none;
|
||
}
|
||
|
||
.ruler-track > i {
|
||
position: static;
|
||
grid-template-columns: 45px 1fr;
|
||
justify-items: start;
|
||
width: auto;
|
||
margin-bottom: 9px;
|
||
transform: none;
|
||
text-align: left;
|
||
}
|
||
|
||
.ruler-track > i::before {
|
||
display: none;
|
||
}
|
||
|
||
.ruler-track b,
|
||
.ruler-track span {
|
||
margin-top: 0;
|
||
}
|
||
|
||
.causal-chain,
|
||
.data-tanks,
|
||
.train-serve-comparison,
|
||
.metric-lenses,
|
||
.axis-expansion {
|
||
grid-template-columns: 1fr;
|
||
}
|
||
|
||
.causal-chain > i,
|
||
.data-tanks > i,
|
||
.axis-expansion > i {
|
||
transform: rotate(90deg);
|
||
text-align: center;
|
||
}
|
||
|
||
.demand-arrow i {
|
||
transform: rotate(90deg);
|
||
}
|
||
|
||
.moe-coordinate {
|
||
grid-template-columns: 1fr;
|
||
grid-template-areas: "capacity" "core" "compute" "system";
|
||
}
|
||
|
||
.model-lineage,
|
||
.kimi-scaling-flow,
|
||
.claim-meaning {
|
||
grid-template-columns: 1fr;
|
||
}
|
||
|
||
.kimi-scaling-flow article {
|
||
min-height: 0;
|
||
}
|
||
|
||
.paper-chain a {
|
||
grid-template-columns: 54px 28px 1fr;
|
||
}
|
||
|
||
.paper-chain p {
|
||
grid-column: 3;
|
||
}
|
||
}
|
||
|
||
@media (max-width: 480px) {
|
||
.approach-table > div {
|
||
grid-template-columns: 30px 1fr;
|
||
}
|
||
|
||
.approach-table > div > b {
|
||
text-align: left;
|
||
}
|
||
|
||
.lens-results article {
|
||
grid-template-columns: 90px 1fr;
|
||
}
|
||
|
||
.lens-results b {
|
||
grid-column: 2;
|
||
}
|
||
}
|
||
</style>
|
||
</BaseLayout>
|