Files
llm-atlas/src/pages/index.astro
T

635 lines
25 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
import BaseLayout from "@/layouts/BaseLayout.astro";
import ArchitectureExplorer from "@/components/ArchitectureExplorer.astro";
import DeepSeekLineage from "@/components/DeepSeekLineage.astro";
import { chapters, statusLabel } from "@/data/chapters";
const routes: Record<string, string> = {
roadmap: "/roadmap/",
"foundations/language-models": "/foundations/language-models/",
foundations: "/foundations/",
scaling: "/scaling/",
"pretraining/data": "/pretraining/data/",
moe: "/moe/",
"long-context": "/long-context/",
reasoning: "/reasoning/",
"training-systems": "/training-systems/",
"systems/numerics": "/systems/numerics/",
};
const paths = [
{
id: "beginner",
number: "01",
label: "零基础",
title: "从“下一个词”开始,不先背 Transformer 公式",
text: "先建立 Token、概率、向量和训练目标的直觉,再通过可操作的注意力实验进入架构。",
steps: ["01 语言模型从哪里来", "02 注意力与 Transformer", "03 表示、位置与残差", "04 Scaling Laws"],
time: "812 小时",
target: "能独立阅读主流 LLM 架构图",
},
{
id: "k3",
number: "02",
label: "K3 反向拆解",
title: "先看全貌,再沿组件回到每条技术祖先",
text: "适合已经用过大模型、想迅速读懂 K3 报告的人。每个组件都能跳回其历史专题。",
steps: ["K3 三维信息流", "KDA 与 MLA", "Stable LatentMoE", "1M Agentic RL 与系统"],
time: "610 小时",
target: "能逐节解释 K3 技术报告",
},
{
id: "deepseek",
number: "03",
label: "DeepSeek 主线",
title: "沿一家公司,看算法—系统协同如何一步步形成",
text: "从 DeepSeek LLM 的 dense 基线,到 MoE、MLA、FP8、GRPO、R1、稀疏注意力与百万上下文。",
steps: ["DeepSeekMoE", "V2 / MLA", "V3 / FP8 / DualPipe", "Math / GRPO / R1", "V3.2 / V4"],
time: "711 小时",
target: "理解 DeepSeek 论文间的因果关系",
},
{
id: "systems",
number: "04",
label: "系统工程",
title: "跟着一个 Token 穿过 GPU、网络、缓存与服务集群",
text: "适合工程背景读者,从计算与内存账本出发理解并行、低精度、通信和推理服务。",
steps: ["08 大规模训练", "09 数值与优化", "14 推理服务", "K3 §5 Infrastructure"],
time: "1016 小时",
target: "看懂大模型系统报告与性能数字",
},
];
---
<BaseLayout
title="LLM Atlas"
description="以 Kimi K3 技术报告为锚点,从第一性原理梳理大语言模型的技术发展、关键论文、DeepSeek 谱系与系统工程。"
section="home"
>
<section class="hero">
<div class="hero-inner">
<div class="hero-copy">
<p class="eyebrow"><span>OPEN COURSE / 2026</span> LARGE LANGUAGE MODELS</p>
<h1>
大模型技术全景
<em>从“预测下一个词”到 Kimi K3 的 2.8T 开放前沿</em>
</h1>
<p class="hero-deck">
这是一套按问题脉络组织的中文开放课程。我们从最小直觉出发,追踪每篇关键论文究竟解决了什么,
再把注意力、MoE、规模化训练、多模态、推理强化学习与 Agent 系统重新汇入 Kimi K3。
</p>
<div class="hero-actions">
<a class="button primary" href="/roadmap/">选择学习路径 <span aria-hidden="true">↓</span></a>
<a class="button" href="/foundations/language-models/">语言模型从哪里来</a>
<a class="button" href="/foundations/">注意力与 Transformer</a>
<a class="button" href="/k3/">直接解剖 K3</a>
<a class="button" href="/deepseek/">DeepSeek 专题</a>
<a class="button" href="/scaling/">Scaling Laws 专题</a>
<a class="button" href="/pretraining/data/">数据工程专题</a>
<a class="button" href="/moe/">MoE 专题</a>
<a class="button" href="/long-context/">长上下文专题</a>
<a class="button" href="/reasoning/">推理专题</a>
<a class="button" href="/training-systems/">训练系统专题</a>
<a class="button" href="/systems/numerics/">数值与优化专题</a>
</div>
</div>
<aside class="hero-aside" aria-label="项目统计">
<span>RESEARCH CUTOFF</span>
<strong>29 · 07 · 2026</strong>
<p>首版持续建设中,所有动态结论带日期</p>
<div class="hero-stats">
<div><b>16</b><span>核心专题</span></div>
<div><b>151</b><span>K3 报告来源</span></div>
<div><b>258</b><span>关键论文索引</span></div>
<div><b>47p</b><span>K3 技术报告</span></div>
</div>
</aside>
</div>
<div class="scope-strip">
<span>研究范围</span>
<p>表示学习 · Transformer · Scaling · 数据工程 · MoE · 长上下文 · 训练系统 · 数值优化 · 后训练 · 推理 · Agent · 多模态 · 服务与评测</p>
<a href="/progress/">查看实时进度 →</a>
</div>
</section>
<section class="section compact release-section" id="new-chapters">
<div class="release-grid">
<a class="release-card transformer-release" href="/foundations/">
<div>
<p class="eyebrow"><span>NEW / CHAPTER 02</span> ATTENTION · TRANSFORMER</p>
<h2>Attention 不只是“看哪里”,Transformer 也不只有一种 Block</h2>
<p>
用信息路径、匹配几何、可见性、多头、位置、局部计算、深度、架构目标、系统成本与当代映射十张账,
从 Bahdanau 软对齐和 2017 原始 encoderdecoder,一路走到 FlashAttention、DeepSeek MLA 与 Kimi K3。
</p>
</div>
<dl>
<div><dt>LINEAGE</dt><dd>2014 → 2026</dd></div>
<div><dt>PAPERS</dt><dd>40 个一手节点</dd></div>
<div><dt>LAB</dt><dd>QKV · Mask · 多头位置 · Block 成本</dd></div>
</dl>
<span class="release-arrow" aria-hidden="true">从软对齐进入现代 LLM 骨架 →</span>
</a>
<a class="release-card foundation-release" href="/foundations/language-models/">
<div>
<p class="eyebrow"><span>NEW / CHAPTER 01</span> LANGUAGE MODELING ORIGINS</p>
<h2>预测下一个 Token,为什么会走到今天的大模型?</h2>
<p>
用预测单位、概率信息、上下文、稀疏性、分布式表示、循环记忆、序列转导与系统成本八张账,
从 Shannon、N-gram、KneserNey、Bengio、RNN/LSTM 一路走到 Seq2Seq、Attention 与 K3 / DeepSeek。
</p>
</div>
<dl>
<div><dt>LINEAGE</dt><dd>1948 → 2026</dd></div>
<div><dt>PAPERS</dt><dd>33 个一手节点</dd></div>
<div><dt>LAB</dt><dd>概率 · 向量 · 记忆 · 对齐</dd></div>
</dl>
<span class="release-arrow" aria-hidden="true">从语言模型的起点开始 →</span>
</a>
<a class="release-card numerics-release" href="/systems/numerics/">
<div>
<p class="eyebrow"><span>NEW / CHAPTER 09</span> PRECISION · OPTIMIZATION · STABILITY</p>
<h2>少几个比特为什么省巨资,也可能让训练瞬间崩掉?</h2>
<p>
用表示、缩放、计算、累加、搬运、更新、参数化、观测、恢复与证据十张账,
从 mixed precision、BF16、FP8 和 MXFP4,一路走到 AdamW、Muon、Kimi K2/K3 与 DeepSeek-V3/V4。
</p>
</div>
<dl>
<div><dt>LINEAGE</dt><dd>2014 → 2026</dd></div>
<div><dt>PAPERS</dt><dd>36 个一手节点</dd></div>
<div><dt>LAB</dt><dd>格式 · 状态 · 更新 · 失稳</dd></div>
</dl>
<span class="release-arrow" aria-hidden="true">进入数值与优化专题 →</span>
</a>
<a class="release-card data-release" href="/pretraining/data/">
<div>
<p class="eyebrow"><span>NEW / CHAPTER 05</span> DATA & PRE-TRAINING</p>
<h2>同样一万亿 Token,可以是完全不同的训练经历</h2>
<p>
用来源、解析、质量、唯一性、污染、混合、变换、Tokenizer、Packing、课程与模型感知价值十二张账,
从 C4、Pile、DoReMi 和 DCLM 一路走到 DeepSeek 五代数据工程与 Kimi K2→K3 原生多模态。
</p>
</div>
<dl>
<div><dt>LINEAGE</dt><dd>2019 → 2026</dd></div>
<div><dt>PAPERS</dt><dd>31 个一手节点</dd></div>
<div><dt>LAB</dt><dd>流水线 · 去重 · 混合 · 改写</dd></div>
</dl>
<span class="release-arrow" aria-hidden="true">进入数据工程专题 →</span>
</a>
<a class="release-card scaling-release" href="/scaling/">
<div>
<p class="eyebrow"><span>NEW / CHAPTER 04</span> SCALING LAWS</p>
<h2>“大一点就会更强”,远远不够指导一次训练</h2>
<p>
用观测量、模型、数据、算术、配比、配方、外推、经济目标与能力阶段九张账,
从早期经验幂律、Kaplan、Chinchilla 与复现争议,一路走到 DeepSeek scaling study 和 Kimi K3。
</p>
</div>
<dl>
<div><dt>LINEAGE</dt><dd>2017 → 2026</dd></div>
<div><dt>PAPERS</dt><dd>29 个一手节点</dd></div>
<div><dt>LAB</dt><dd>曲面 · 部署 · 重复 · 涌现</dd></div>
</dl>
<span class="release-arrow" aria-hidden="true">进入 Scaling Laws 专题 →</span>
</a>
<a class="release-card training-release" href="/training-systems/">
<div>
<p class="eyebrow"><span>NEW / CHAPTER 08</span> LARGE-SCALE TRAINING SYSTEMS</p>
<h2>一万张 GPU,为什么仍可能有一半在等?</h2>
<p>
用模型状态、激活、计算划分、气泡、collective、专家、上下文、数值与可靠性九张账,
从 ZeRO、Megatron 一路走到 DeepSeek DualPipe、Kimi MoonEP 与百万 Token Agentic RL。
</p>
</div>
<dl>
<div><dt>LINEAGE</dt><dd>2012 → 2026</dd></div>
<div><dt>PAPERS</dt><dd>37 个一手节点</dd></div>
<div><dt>LAB</dt><dd>显存 · 网格 · 气泡 · 通信</dd></div>
</dl>
<span class="release-arrow" aria-hidden="true">进入训练系统专题 →</span>
</a>
<a class="release-card reasoning-release" href="/reasoning/">
<div>
<p class="eyebrow"><span>NEW / CHAPTER 11</span> REASONING & TEST-TIME SCALING</p>
<h2>“多想一会儿”,到底把计算花到了哪里?</h2>
<p>
把推理拆成结果、覆盖、选择、过程、预算、优化、分布与系统八张账,
从 CoT、verifier 与 GRPO 一路走到 DeepSeek-R1、Kimi k1.5 与 K3 MOPD。
</p>
</div>
<dl>
<div><dt>LINEAGE</dt><dd>2021 → 2026</dd></div>
<div><dt>PAPERS</dt><dd>30 篇一手来源</dd></div>
<div><dt>LAB</dt><dd>预算 · GRPO · 九教师</dd></div>
</dl>
<span class="release-arrow" aria-hidden="true">进入推理专题 →</span>
</a>
<a class="release-card moe-release" href="/moe/">
<div>
<p class="eyebrow"><span>NEW / CHAPTER 06</span> SPARSE EXPERTS</p>
<h2>2.8T 参数,不等于每个 Token 跑 2.8T</h2>
<p>
把 MoE 拆成容量、激活计算、路由、负载、通信与稳定性六张账,
从 Switch、DeepSeekMoE、Loss-Free、LatentMoE 一路走到 K3 Stable LatentMoE。
</p>
</div>
<dl>
<div><dt>LINEAGE</dt><dd>1991 → 2026</dd></div>
<div><dt>PAPERS</dt><dd>19 篇一手来源</dd></div>
<div><dt>LAB</dt><dd>8 架构 · 4 平衡策略</dd></div>
</dl>
<span class="release-arrow" aria-hidden="true">进入 MoE 专题 →</span>
</a>
<a class="release-card context-release" href="/long-context/">
<div>
<p class="eyebrow"><span>CHAPTER 07</span> LONG CONTEXT</p>
<h2>一百万 Token,不是一扇更大的窗</h2>
<p>
把长上下文拆成计算、缓存、位置、状态容量与系统五张账,
沿 26 篇一手论文走完 FlashAttention、MLA、Delta Rule、KDA、Kimi K3 与 DeepSeek-V4。
</p>
</div>
<dl>
<div><dt>LINEAGE</dt><dd>2019 → 2026</dd></div>
<div><dt>VISUALS</dt><dd>10+ 机制图</dd></div>
<div><dt>LAB</dt><dd>8 种策略 · 4 档长度</dd></div>
</dl>
<span class="release-arrow" aria-hidden="true">进入长上下文 →</span>
</a>
</div>
</section>
<section class="section" id="why">
<div class="section-heading">
<div>
<p class="eyebrow"><span>00</span> WHY THIS ATLAS</p>
<h2>不是论文清单,而是一条能走通的理解路径</h2>
</div>
<p class="section-lead">
大模型知识最难的地方不是资料少,而是资料之间的桥断了:初学解释省略公式,论文省略历史,
系统报告又默认你已经理解模型。LLM Atlas 专门补这些桥。
</p>
</div>
<div class="thesis">
<span class="micro-label">课程主张</span>
<p>
真正理解一项技术,需要同时回答:它解决什么瓶颈、核心机制如何工作、证据是否支持、
工程代价是什么,以及下一篇论文为什么自然会出现。
</p>
</div>
<div class="feature-grid">
<article class="feature-card">
<span class="card-number">01 / PROBLEM</span>
<h3>从问题开始</h3>
<p>先看到旧方法撞上的墙,再引入新名词。KDA、MLA、MoE 都不再是凭空掉下来的缩写。</p>
</article>
<article class="feature-card">
<span class="card-number">02 / LAYERS</span>
<h3>四层解释</h3>
<p>同一概念同时提供直觉、机制、论文和工程四层入口,允许读者在适合自己的深度停留。</p>
</article>
<article class="feature-card">
<span class="card-number">03 / VISUAL</span>
<h3>图必须能帮助推理</h3>
<p>优先重绘可缩放、可交互的架构图;每种颜色固定含义,简化之处明确标出。</p>
</article>
<article class="feature-card">
<span class="card-number">04 / EVIDENCE</span>
<h3>事实、解释、推断分开</h3>
<p>关键结论回到论文和官方实现。榜单写明 harness、工具预算与截止日期,未知就明确说未知。</p>
</article>
</div>
</section>
<section class="section" id="paths">
<div class="section-heading">
<div>
<p class="eyebrow"><span>01</span> LEARNING PATHS</p>
<h2>你不必从第一页顺序读到最后</h2>
</div>
<p class="section-lead">四条路径共享同一张知识图。点击路径切换,章节之间的先修关系始终可追踪。</p>
</div>
<div class="pathways" data-pathways>
<div class="path-tabs" role="tablist" aria-label="学习路径">
{paths.map((path, index) => (
<button
type="button"
role="tab"
aria-selected={index === 0 ? "true" : "false"}
data-path-button={path.id}
>
<span>{path.number}</span>{path.label}
</button>
))}
</div>
<div>
{paths.map((path, index) => (
<div class="path-panel" data-path-panel={path.id} data-active={index === 0 ? "" : undefined}>
<div class="path-copy">
<span class="micro-label">{path.label}</span>
<h3>{path.title}</h3>
<p>{path.text}</p>
<ol>
{path.steps.map((step) => <li>{step}</li>)}
</ol>
</div>
<aside class="path-meta">
<div><span>ESTIMATED TIME</span><b>{path.time}</b></div>
<div><span>LEARNING OUTCOME</span><b>{path.target}</b></div>
<div><span>READING MODE</span><b>直觉 → 机制 → 论文 → 工程</b></div>
</aside>
</div>
))}
</div>
</div>
</section>
<section class="section" id="chapters">
<div class="section-heading">
<div>
<p class="eyebrow"><span>02</span> CURRICULUM MAP</p>
<h2>16 个专题,拼成一张完整技术地图</h2>
</div>
<p class="section-lead">
进度条表示内容成熟度,不代表相关领域的重要性。首版先打通全站骨架,再逐章扩写到论文与工程层。
</p>
</div>
<div class="chapter-grid">
{chapters.map((chapter) => {
const href = routes[chapter.slug] ?? `/roadmap/#chapter-${chapter.number}`;
return (
<a class="chapter-card" href={href}>
<div class="chapter-top">
<span class="chapter-number">{chapter.number}</span>
<span class={`status ${chapter.status}`}>{statusLabel[chapter.status]}</span>
</div>
<h3>{chapter.title}</h3>
<p>{chapter.question}</p>
<div class="chapter-bottom">
<div class="progress-track" aria-label={`完成 ${chapter.progress}%`}>
<span style={`width:${chapter.progress}%`}></span>
</div>
<div class="chapter-meta">
<span>{chapter.papers} 篇核心论文</span>
<span>{chapter.progress}%</span>
</div>
</div>
</a>
);
})}
</div>
</section>
<section class="section" id="k3-map">
<div class="section-heading">
<div>
<p class="eyebrow"><span>03</span> KIMI K3 AS THE CONFLUENCE</p>
<h2>K3 把三种信息流和一套庞大系统放进同一模型</h2>
</div>
<p class="section-lead">
K3 报告最好的阅读钥匙,是把架构看成 token、depth、channel 三个方向的信息流;
视觉输入与训练/服务基础设施则包住这三条轴。
</p>
</div>
<ArchitectureExplorer />
<a class="button primary" href="/k3/">进入完整 K3 技术报告导读 →</a>
</section>
<section class="section" id="deepseek-spotlight">
<div class="section-heading">
<div>
<p class="eyebrow"><span>04</span> DEEPSEEK SPOTLIGHT</p>
<h2>DeepSeek:一条极适合学习“算法—系统协同”的论文主线</h2>
</div>
<p class="section-lead">
从细粒度 MoE、MLA 和 FP8,到 GRPO 与 R1DeepSeek 的每篇报告都在解决上一代留下的明确约束。
这里会给予它比普通模型谱系更细的篇幅。
</p>
</div>
<DeepSeekLineage />
<a class="button primary" href="/deepseek/">阅读 DeepSeek 专题 →</a>
</section>
<section class="section compact" id="method">
<div class="section-heading">
<div>
<p class="eyebrow"><span>05</span> OPEN RESEARCH</p>
<h2>课程本身也是一项开放研究工程</h2>
</div>
<p class="section-lead">
网站源码、路线、进度和研究规范全部公开。Grok 用来扩展检索线索,最终结论由一手论文和官方实现核验。
</p>
</div>
<div class="method-grid">
<article class="method-card">
<span class="card-number">P0</span>
<h3>一手论文</h3>
<p>arXiv、会议、期刊与作者正式技术报告,承载核心机制和实验数字。</p>
</article>
<article class="method-card">
<span class="card-number">P1</span>
<h3>官方实现</h3>
<p>仓库、模型卡、训练与评测代码,用于确认论文描述如何落到真实系统。</p>
</article>
<article class="method-card">
<span class="card-number">P2</span>
<h3>官方说明</h3>
<p>实验室博客、系统卡和产品文档;尚无论文的新模型会临时使用并标明状态。</p>
</article>
<article class="method-card">
<span class="card-number">P3+</span>
<h3>独立复现</h3>
<p>第三方结果用于检验外部有效性;二手文章只发现线索,不承载关键事实。</p>
</article>
</div>
</section>
<script>
document.querySelectorAll<HTMLElement>("[data-pathways]").forEach((root) => {
const buttons = [...root.querySelectorAll<HTMLButtonElement>("[data-path-button]")];
const panels = [...root.querySelectorAll<HTMLElement>("[data-path-panel]")];
const select = (id: string) => {
buttons.forEach((button) => button.setAttribute("aria-selected", String(button.dataset.pathButton === id)));
panels.forEach((panel) => panel.toggleAttribute("data-active", panel.dataset.pathPanel === id));
};
buttons.forEach((button) => button.addEventListener("click", () => select(button.dataset.pathButton ?? "beginner")));
});
</script>
<style>
.release-section {
padding-top: clamp(52px, 7vw, 92px);
padding-bottom: 0;
}
.release-grid {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 22px;
}
.release-card {
position: relative;
display: grid;
grid-template-rows: 1fr auto;
gap: 28px;
min-height: 560px;
padding: clamp(28px, 3.6vw, 50px);
padding-bottom: clamp(74px, 7vw, 92px);
border: 1px solid var(--line-strong);
color: inherit;
text-decoration: none;
background:
radial-gradient(circle at 78% 20%, rgba(76, 118, 112, 0.12), transparent 34%),
var(--paper-raised);
transition: transform 180ms ease, border-color 180ms ease;
}
.transformer-release,
.foundation-release,
.numerics-release,
.data-release,
.scaling-release,
.training-release,
.reasoning-release {
grid-column: 1 / -1;
min-height: 510px;
}
.numerics-release {
background:
radial-gradient(circle at 82% 18%, rgba(113, 82, 137, 0.2), transparent 30%),
repeating-linear-gradient(90deg, transparent 0 64px, rgba(113, 82, 137, 0.045) 64px 65px),
repeating-linear-gradient(0deg, transparent 0 64px, rgba(76, 118, 112, 0.04) 64px 65px),
var(--paper-raised);
}
.foundation-release {
background:
radial-gradient(circle at 82% 18%, rgba(159, 91, 52, 0.2), transparent 30%),
repeating-linear-gradient(90deg, transparent 0 72px, rgba(159, 91, 52, 0.045) 72px 73px),
repeating-linear-gradient(0deg, transparent 0 72px, rgba(48, 64, 82, 0.035) 72px 73px),
var(--paper-raised);
}
.transformer-release {
background:
radial-gradient(circle at 82% 18%, rgba(56, 91, 128, 0.21), transparent 30%),
radial-gradient(circle at 60% 74%, rgba(159, 91, 52, 0.12), transparent 26%),
repeating-linear-gradient(90deg, transparent 0 64px, rgba(56, 91, 128, 0.04) 64px 65px),
var(--paper-raised);
}
.data-release {
background:
radial-gradient(circle at 82% 18%, rgba(76, 118, 112, 0.2), transparent 30%),
repeating-linear-gradient(0deg, transparent 0 46px, rgba(76, 118, 112, 0.045) 46px 47px),
var(--paper-raised);
}
.scaling-release {
background:
radial-gradient(circle at 82% 18%, rgba(159, 91, 52, 0.18), transparent 30%),
repeating-linear-gradient(135deg, transparent 0 84px, rgba(159, 91, 52, 0.045) 84px 85px),
var(--paper-raised);
}
.training-release {
background:
radial-gradient(circle at 82% 18%, rgba(66, 111, 101, 0.19), transparent 30%),
repeating-linear-gradient(90deg, transparent 0 88px, rgba(94, 125, 117, 0.055) 88px 89px),
var(--paper-raised);
}
.reasoning-release {
background:
radial-gradient(circle at 82% 18%, rgba(56, 91, 128, 0.17), transparent 30%),
radial-gradient(circle at 63% 72%, rgba(150, 93, 58, 0.11), transparent 28%),
var(--paper-raised);
}
.release-card:hover {
transform: translateY(-3px);
border-color: var(--copper);
}
.release-card h2 {
max-width: 760px;
margin: 20px 0 18px;
font-size: clamp(2rem, 3.2vw, 3.5rem);
line-height: 1.05;
}
.release-card p:not(.eyebrow) {
max-width: 780px;
color: var(--ink-soft);
font-size: clamp(1rem, 1.4vw, 1.18rem);
line-height: 1.8;
}
.release-card dl {
margin: 0;
border-top: 1px solid var(--line);
}
.release-card dl div {
display: grid;
grid-template-columns: 100px 1fr;
padding: 17px 0;
border-bottom: 1px solid var(--line);
}
.release-card dt {
color: var(--ink-muted);
font: 0.62rem/1.4 var(--mono);
letter-spacing: 0.12em;
}
.release-card dd {
margin: 0;
font-family: var(--serif);
}
.release-arrow {
position: absolute;
right: clamp(28px, 4vw, 58px);
bottom: clamp(24px, 3vw, 42px);
color: var(--copper);
font: 0.7rem/1 var(--mono);
letter-spacing: 0.08em;
text-transform: uppercase;
}
@media (max-width: 760px) {
.release-grid {
grid-template-columns: 1fr;
}
.release-card {
min-height: 0;
padding-bottom: 76px;
}
.transformer-release,
.foundation-release,
.numerics-release,
.data-release,
.scaling-release,
.training-release,
.reasoning-release {
grid-column: auto;
}
.release-card dl {
margin: 0;
}
}
</style>
</BaseLayout>