INTELLECT-1: Training a 10B Model Across 3 Continents

Prime Intellect · Sami Jaghouar et al. · 2024-12-02 · arXiv:2412.01152
关键词: decentralized training · DiLoCo · OpenDiLoCo · ElasticDeviceMesh · int8 all-reduce · FSDP2 · fault tolerance

速读卡片 (TL;DR)

一句话: 用 DiLoCo + int8 ring-all-reduce + 弹性 process group, 把 10B Llama-3-类模型横跨 5 国 3 大洲、最多 14 个动态进出的节点训练 1T tokens, 通信带宽相比标准 data parallel 砍掉 400×, 全球 MFU 仍达 36%。

400×
通信带宽缩减 (vs 标准 DP)
36–41%
MFU (跨洲 / 美国内)
38 min : 2–10 min
本地计算 : all-reduce 比例

立场: 这是一份系统工程报告, 不是新算法。亮点不在 DiLoCo 本身, 而是在 "公共互联网 + 不可靠节点 + 单机 8×H100" 这种从未被严肃认真处理的环境下, 把训练真正跑出来的工程实现 (PRIME framework + ElasticDeviceMesh)。


1 · 动机: 为什么去中心化, 以及为什么这事不平凡

1.1 历史脉络: 从单卡到 InfiniBand 的一路爬坡

过去十年大模型训练的所有"加速史"本质都是把通信塞进越来越快的内网:

这条爬坡曲线带来一个隐含假设: "训练 = 高带宽内网", 强到没人会去问"如果带宽掉一千倍呢?"

2024 年开源社区开始反问这个假设, 因为:

INTELLECT-1 是把这条算法路线真正在野外跑出来的第一个 10B 规模实验: 5 国 3 洲, 30 家算力贡献方, 14 个并发节点, 1T tokens。

1.2 别的方案为什么"够呛"

方案跨洲带宽够不够动态节点致命问题
标准 Data Parallel (PyTorch DDP)远远不够 — 每步都要 all-reduce 整个 gradient (10B 模型 = 20 GB / step in fp16)不支持500 Mb/s 链路上, 一次 all-reduce 要数十分钟; 计算时间 1 分钟。通信比 ≈ 50:1
FSDP (Fully Sharded DP)更糟 — 每个 layer 都要 all-gather 参数, 比 DDP 通信还频繁不支持诞生就是为了挤压 NVLink 带宽; 公网上是反向优化。
Pipeline Parallelism (GPipe / 1F1B)不行 — 每个 microbatch 在 stage 间传 activation极难P2P 带宽延迟敏感; 跨洲 100ms 延迟会让 pipeline bubble 爆炸。
Tensor Parallelism (Megatron)完全不行不支持每个 matmul 都要 all-reduce 中间结果, 必须 NVLink 级别。
Federated Learning (FedAvg) — 通信非常稀疏支持设计给 non-IID + 隐私场景; 收敛速度慢 2–5×, 不适合从零预训练
Async SGD (Hogwild! / Hivemind)支持梯度 staleness 在 10B 规模上会显著伤收敛; 实际只有 MoE / embedding 这类容易并行化的层用得起。
DiLoCo (本文) — 每 H=100–500 步同步一次支持 (本文新增)需要内/外两层 optimizer + 大量 CPU 内存放伪梯度
核心 trade-off: 算法层减少同步频率 (DiLoCo 的 H 步) + 系统层每次同步还要尽可能便宜 (int8 量化 + bandwidth-aware 拓扑) + 工程层容忍随时掉线节点 (heartbeat + 弹性 process group)。本论文 = 这三层同时解决。

1.3 为什么"naive sync 跨洲不可能" — 算一笔账

来一个具体的数字推演, 体会一下问题的尺度:

对比内网 (3.2 Tb/s):

三个数量级的带宽差异直接让 DDP 在公网"不可行", 不是慢, 是根本跑不动。

DiLoCo 的关键算法贡献: 把同步频率从"每 step"降到"每 H=100 step", 通信量从 40 GB/step 降到 40 GB / 100 step = 0.4 GB/step。再叠加 int8 量化 4× = 0.1 GB/step, 这就是论文宣称的 400× 通信带宽缩减

中心化 vs 去中心化训练拓扑 中心化 (Megatron / FSDP) 单一数据中心, IB 3.2 Tb/s Data Center 每 step all-reduce, <100 ms 去中心化 (INTELLECT-1) 8 个数据中心, 公网 0.5–4 Gb/s USA-W USA-E EU Asia EU-2 USA-2 每 H=100 step 同步一次, 2–10 min
左: 中心化训练所有节点在同一个 DC, IB 网内每 step 都同步, 通信 < 100 ms 量级。右: INTELLECT-1 的拓扑, 节点散布在 8 个独立 DC, 用 Tailscale VPN 连成一个 ring, 每条链路 0.5–4 Gb/s, 是内网带宽的 1/1000。要让训练 viable 必须降低同步频率 + 压缩通信量 + 容错动态变化。

2 · 背景速查

2.1 关键术语

术语含义
DiLoCoDistributed Low-Communication training (Douillard 2024)。Local SGD 的现代版: 每个 worker 跑 H 个 inner step (AdamW), 然后用 outer optimizer (Nesterov) 同步一次。
OpenDiLoCo本团队 2024 年的开源复现 (Jaghouar et al.), 在 1B 规模上验证 DiLoCo 跨洲可行。INTELLECT-1 是它的 10× 放大版本。
PRIME本论文的训练框架名, 含 ElasticDeviceMesh + int8 all-reduce + fault tolerance。
ElasticDeviceMeshPyTorch DeviceMesh 的弹性变体: 节点数动态可变, 同时管理 intra-node FSDP 组和 inter-node DiLoCo 组。
Pseudo-gradientDiLoCo 里跨节点同步的不是普通梯度, 而是 H 步内 inner optimizer 累积出来的参数变化量 Δθ = θ⁽ᵗ⁻¹⁾ − θᵢ⁽ᵗ⁾。
Inner / Outer optimizerInner = 每个 worker 本地的 AdamW (跑 H 步); Outer = 跨 worker 同步用的 Nesterov SGD (每 H 步跑 1 步)。
FSDP / FSDP2Fully Sharded Data Parallel, PyTorch 的内存高效分片方案。FSDP2 是新一代 (DTensor based)。本文用 FSDP2 处理节点内
Ring All-Reduce所有节点排成环, 每节点只与左右邻居通信, 总通信量 2(N−1)/N × |G|, 是公网上对带宽利用最友好的 collective。
Heartbeat / deathrattle本文的容错机制: 每个节点每 2s 向 master KV store 发心跳, 6s 无心跳即视为故障; 优雅退出时主动发"死亡声明"加速移除。
HivemindRyabinin 团队 (Together AI) 的去中心化训练库, 早期 baseline。
Tailscale基于 WireGuard 的 mesh VPN, 本文用它给所有节点建立私网 (Gloo collective 库要求节点处于同一私网)。
MFUModel FLOPS Utilization = 实际 throughput / 理论 peak FLOPS。论文报 36–41%。

2.2 DiLoCo 算法回顾

DiLoCo 把训练分成两层:

for outer step t = 1...T:
  for worker i = 1...k (并行):
    θᵢ ← θ⁽ᵗ⁻¹⁾
    for inner step h = 1...H:
      θᵢ ← AdamW(θᵢ, ∇L(xᵢ, θᵢ))
  Δ⁽ᵗ⁾ ← (1/k) Σᵢ (θ⁽ᵗ⁻¹⁾ − θᵢ)   # pseudo-gradient
  θ⁽ᵗ⁾ ← Nesterov(θ⁽ᵗ⁻¹⁾, Δ⁽ᵗ⁾)

关键洞察: Inner SGD 走得越远, outer 同步越像一个"路径平均"而不是"梯度平均", 这一现象在 Local SGD (Stich 2019) 里有理论保证。代价: 在 batch 总量相同时, DiLoCo 比 DDP 的 sample efficiency 低一点点 (论文不展开, OpenDiLoCo 报 < 5%); 收益: 通信频率降到 1/H。


3 · DiLoCo 的内外两层优化器拆解

3.1 数据流 — 一个具体 outer step 的轨迹

DiLoCo: 一个 outer step 的数据流 θ⁽ᵗ⁻¹⁾ (CPU + GPU) Worker 0 (USA) θ₀ ← θ⁽ᵗ⁻¹⁾ 100× AdamW step on shard D₀ → θ₀⁽ᵗ⁾ Worker 1 (EU) θ₁ ← θ⁽ᵗ⁻¹⁾ 100× AdamW step on shard D₁ → θ₁⁽ᵗ⁾ Worker 2 (Asia) θ₂ ← θ⁽ᵗ⁻¹⁾ 100× AdamW step on shard D₂ → θ₂⁽ᵗ⁾ ┃ 这一段大约 38 分钟, GPU 100% 在算 inner step ┃ 每 worker 计算 Δᵢ = θ⁽ᵗ⁻¹⁾ − θᵢ⁽ᵗ⁾   (在 CPU 上, 不占 GPU 显存) int8 ring all-reduce (跨洲, 2–10 min) Δ⁽ᵗ⁾ = (1/k) Σ Δᵢ → Nesterov(θ⁽ᵗ⁻¹⁾, Δ⁽ᵗ⁾) → θ⁽ᵗ⁾
一个 outer step 包含三阶段: ① 分发 θ⁽ᵗ⁻¹⁾ 给所有 worker (实际 CPU 上一直保留, 不需要传); ② 各 worker 跑 100 步本地 AdamW, 互不通信 — 这是 38 分钟的"自由飞行"; ③ 计算 pseudo-gradient Δᵢ 并 int8 量化 all-reduce, 在 outer optimizer 上做一步 Nesterov。注意: pseudo-gradient 的计算和外层优化都在 CPU 上完成, GPU 显存不增加。

3.2 Worked example: 跟踪一个具体的参数张量

设第 5 层的 attention output projection W ∈ ℝ⁴⁰⁹⁶ˣ⁴⁰⁹⁶, fp32 大小 = 64 MB。

  1. t=0 起点: 所有节点的 W 完全相同 (来自上一次 outer step 的同步, 或初始化)。
  2. Inner step 1 (worker 0, USA): 一个 batch 在 GPU 上跑 forward+backward, AdamW 更新 W → W' (差异 ~1e-5 量级)。
  3. Inner step 2..100 (worker 0): 继续, 每步差异累积。100 步后 W 与 t=0 的版本差异 ~1e-3 量级。其他 worker 在用不同的数据 shard做同样的事, 所以 100 步后 3 个 worker 的 W 已经显著分叉。
  4. Inner 完成 → CPU offload: Worker 0 计算 Δ₀ = W₀⁽⁰⁾ − W₀⁽¹⁰⁰⁾ ∈ ℝ⁴⁰⁹⁶ˣ⁴⁰⁹⁶, 这就是 pseudo-gradient。值的分布: 大致零均值, std ~1e-3。
  5. Int8 量化: 计算 µ ≈ 0, σ ≈ 1.2e-3。range = [−7.2e-3, 7.2e-3], 256 个 bucket, 每个 bucket 宽 ~5.6e-5。Δ₀ 量化成 uint8, 大小变成 16 MB (4× 缩减)。
  6. Ring all-reduce: 3 个 worker 的 Δ 在环上传一圈, 累加成 Δ̄ = (Δ₀ + Δ₁ + Δ₂) / 3 (累加在 fp32 中做, 仅传输 int8)。
  7. CPU 上 outer step: Nesterov 优化器把 Δ̄ 应用到 θ⁽ᵗ⁻¹⁾。本文用的超参: outer LR = 0.7, momentum = 0.9。
  8. θ⁽ᵗ⁾ 同步回 GPU: 所有 worker 复制更新后的 W 进入下一个 outer step。

3.3 反向论证: 为什么 outer LR = 0.7 这么大?

普通 SGD/Adam 的 LR 一般 1e-4 数量级, 这里 outer LR = 0.7 看起来像疯了。直觉:

把 outer LR 设成 1e-4 是错的: 那相当于把 100 步本地训练的成果稀释 10000 倍, 模型几乎不动。


4 · Int8 Ring-All-Reduce: 把通信量再砍 4×

4.1 量化策略 (uniform with clipping)

  1. 对每个 tensor 分别算 µ 和 σ。
  2. 裁剪范围 = [µ − 6σ, µ + 6σ] (覆盖 ~99.9999% 数据点, 假设近高斯)。
  3. 把这个范围均匀分成 256 个 bucket (uint8 的码空间)。
  4. codebook 值 = 每个 bucket 内数据的平均值 (而不是 bucket 中点)。

这是 Hivemind (Ryabinin 2020) 的方案。"取平均而非中点"这个细节让量化误差最小化 — 它本质是把每个 bucket 的离散化误差降到该 bucket 的方差。

4.2 关键工程细节: 量化只用于传输, 累加保 fp32

论文反复强调:

(Q(a) + Q(b)) ≠ Q(a + b)

这是个简单但容易踩的坑: 如果你在量化空间里直接加, 误差会随节点数线性放大。正确做法: 接收方收到 int8 → 立即解量化回 fp32 → 在 fp32 上累加 → 发送前再量化。

Int8 Ring All-Reduce (3 节点, 流水线化) Node A fp32 acc Node B fp32 acc Node C fp32 acc int8 chunk (4× 小) payload 16 MB / 64 MB fp32 int8 int8 每节点流水线 (overlap, C++ 多线程): recv int8 → dequant fp32 → fp32 += local Δ → quant int8 → send PyTorch 实现慢 60×, 自写 C++ 才能跟上 4 Gb/s 网卡
Int8 only on the wire。每条边传输 int8 chunk (4× payload 缩减), 但每个节点内部始终在 fp32 上累加, 避免量化误差累积。流水线化 (quant / dequant / 网络发送 三段重叠) 是把 PyTorch 朴素实现从 60× 慢加速到 wire-speed 的关键。

4.3 数字示例

10B 模型, fp32 pseudo-gradient = 40 GB。

4.4 为什么对 pseudo-gradient 量化"更安全"

权重量化 (LLM.int8 等) 在大规模训练中已知会因 outlier 累积问题伤模型质量 (Dettmers 2022, Kumar 2024)。论文的论点:

我们量化的不是权重而是权重的差分 Δθ。差分是"两个时间点权重的相对变化", outlier 在差分上比在绝对值上小得多, 量化噪声不会随训练进程系统性累积 — 每个 outer step 都是从同步点开始的"新差分"。

这个论点经验上 OK, 但论文承认没有形式化证明。1T tokens 的实验是事实证据。


5 · ElasticDeviceMesh: 双层并行的拓扑

关键工程问题: 一个节点内部 (8×H100) 想用 FSDP2 切分 10B 模型 (单卡放不下); 节点之间又要用 DiLoCo。这两套并行体系如何共存?

5.1 双重 rank 设计

每个 GPU 进程有两个身份:

ElasticDeviceMesh: Intra-node FSDP × Inter-node DiLoCo Node 0 (USA) local_rank=0 shard 0 local_rank=1 shard 1 local_rank=2 shard 2 local_rank=3 shard 3 Node 1 (EU) local_rank=0 shard 0 local_rank=1 shard 1 local_rank=2 shard 2 local_rank=3 shard 3 Node 2 (Asia) local_rank=0 shard 0 local_rank=1 shard 1 local_rank=2 shard 2 local_rank=3 shard 3 FSDP NVLink DiLoCo: 只有同 shard的 rank 在跨节点通信 (4 个独立 ring)
双层 mesh: 节点内部 FSDP 把模型切成 4 个 shard, 用 NVLink 高速通信 (蓝色); 节点之间, 只有持有同一个 shard 的 rank 才互相通信, 形成 4 个独立的跨洲 ring (红色虚线)。这样既保住 FSDP 的显存优势, 又让 DiLoCo 的跨节点通信不需要 reshard 整个模型。

5.2 工程结果


6 · 容错系统: heartbeat / deathrattle / TSP 拓扑

6.1 Three failure modes 及对应机制

事件检测方式处理
新节点想加入主动注册到 master KV storeP2P 下载 checkpoint (blocking, 30–60 min) → 加入下一个 outer step
节点优雅退出"Deathrattle" 信号到 master KV立即从 process group 移除, 不等 timeout
节点崩溃2s 心跳, 6s 无响应即视为故障剔除 → all-reduce 重试时排除该节点
All-reduce 中节点掉collective op 超时retry, exclude failed peer; 极端情况下从 checkpoint 恢复
PRIME Fault-Tolerance State Machine Master KV Store node registry + heartbeats N1 USA N2 EU N3 Asia N4✗ crashed N5+ joining heartbeat 2s no heartbeat >6s → evict register, request CP P2P checkpoint (30-60 min)
容错系统全图。每个 active node 每 2 秒向 master KV store 发心跳 (绿色虚线), 6 秒无响应即视为崩溃 (右下 N4)。新节点 (N5) 加入需先到 KV 注册, 然后从任意 active peer P2P 下载 checkpoint, 30–60 分钟后在下一个 outer step 加入 ring。优雅退出会主动发 "deathrattle" 立即触发移除 (省去等心跳超时)。

6.2 Bandwidth-aware ring topology (Hamiltonian TSP variant)

Ring all-reduce 性能由环上最弱链路决定 (因为是 sequential)。论文用一个后台进程持续测量 pairwise 带宽, 每次 outer step 前重新计算最优环序:

maxC ∈ Hamiltonian cycles   min(u,v) ∈ C   w(u, v)

这是 max-min Hamiltonian cycle, NP-hard 但节点数 ≤ 14, 暴力枚举 14! ≈ 87B 太多, 但配合剪枝 (DP on subsets) 几秒内能解。

6.3 Worked example: blocking vs non-blocking checkpoint

论文同时实现了 non-blocking (新节点训练继续, 后台拉 checkpoint) 和 blocking (训练暂停, 同步拉) 两种新节点 onboard 策略。

策略cluster utilization稳定性实际选择
Non-blocking高 (训练不停)新加入者初始几步出现 loss spike弃用
Blocking低 (整个集群停 30–60 min)完美同步采用

论点: 因为 onboard 频率低 (几天一次), blocking 总损失不到 1% 训练时间, 换来稳定性更划算。这是系统设计中"理论最优 ≠ 工程最优"的典型例子


7 · 带宽数学: 为什么标准 DP 在公网必死

7.1 关键比例

R = T_comm / T_compute

当 R < 0.1, GPU 大部分时间在算 (compute-bound, MFU 高); R > 1 GPU 大部分时间等网 (network-bound, MFU 暴跌)。

7.2 三种配置的预算

配置同步频率每次同步通信量带宽T_commT_compute (100 step)R
DDP, 内网每 step40 GB3.2 Tb/s0.1s × 100 = 10s~38 min0.004
DDP, 公网每 step40 GB1 Gb/s320s × 100 = 9 hr~38 min14
DiLoCo + fp32, 公网每 100 step40 GB1 Gb/s320s = 5.3 min~38 min0.14
DiLoCo + int8, 公网每 100 step10 GB1 Gb/s80s ≈ 实测 100s~38 min0.04

结论: DiLoCo 的 100 步同步频率把 R 从 14 降到 0.14 (100×); int8 量化再降一档到 0.04 (4×)。两者共同把 GPU 从"99% 在等网"扭成"95% 在算"。

"400× 通信缩减"这个广告语其实是 100 (DiLoCo H=100) × 4 (int8) = 400 的乘法。但只看通信量是 400× — 由于 DiLoCo 收敛比 DDP 慢一点点, "等价 token 数下" 真实节省略小。论文没量化这个 gap, OpenDiLoCo 报 < 5%。

8 · 实战数据

8.1 三种地理拓扑的 MFU (Table 2 复刻)

拓扑MFUInner step timeMedian all-reduceCompute util
Baseline (无通信)43.3%38 min100%
USA-only41.4%38 min103 s95.7%
USA + EU (跨大西洋)37.1%38 min382 s85.6%
Global (USA + EU + Asia)36.0%38 min469 s83.0%

读法: Inner step time 不变是因为它在节点内, 与跨洲网络无关。差距全在 all-reduce: 美国内 ~100s, 全球 ~470s, 4–5× 差距。MFU 从 43.3 → 36.0 损失只有 ~7 个百分点, 几乎全部由通信占比解释。

8.2 网络抖动 — 长尾比中位更头疼

Figure 4 显示 USA-only 的 all-reduce 时间相对集中 (80–180s), 但 Global 时长尾极重 (median 469s 但极端 1400s+)。这意味着训练总时间被最坏情况拖累, 不是被平均拖累。这就是为什么动态 TSP 拓扑优化 (§6.2) 重要 — 砍掉最弱链路。

8.3 节点动态 (Figure 5)

8.4 最终模型质量 (Table 3 摘要)

10B INTELLECT-1 训 1T tokens, 与同期开源 baseline:

ModelSizeTokensMMLUHellaSwagARC-CGSM8K
INTELLECT-110B1T37.572.352.18.1
MPT-7B7B1T26.877.446.78.3
LLaMA-7B7B1T35.178.250.49.7
LLaMA2-7B7B2T45.378.654.113.5

读法: INTELLECT-1 的 MMLU 略高于 LLaMA-7B (1T tokens 同等量级), 但落后于 LLaMA2-7B (2T tokens)。HellaSwag/ARC 略低 — 与基础 baseline 接近, 这是论文的核心声明: "去中心化训练得到的模型与同等规模 + 同等 token 数的中心化训练 comparable"。这不是 SOTA 论文, 是可行性 demonstration


9 · 与同类工作对比

工作定位关键差异
Megatron-LM (NVIDIA)中心化, TP+PP+DP, 最大化 IB 带宽无法跑公网; 设计前提就是 1+ Tb/s 内网。INTELLECT-1 在它做不到的环境下补位。
FSDP / FSDP2 (PyTorch)中心化, 显存高效每 layer all-gather, 公网爆炸。INTELLECT-1 把 FSDP 限定在单节点内使用。
DeepSpeed ZeRO中心化, 显存优化同 FSDP, 跨节点通信密集。
Hivemind (Together AI / Ryabinin)去中心化, async SGD + decentralized averaging更早的工作, 原生支持公网, 但没在 10B 规模做严肃预训练; INTELLECT-1 复用了它的 int8 量化策略。
DiLoCo (Google DeepMind)算法层 — 内外两层 optimizer论文层面证明可行 (1B 规模), 但没有开源生产级实现 + 没解决 fault tolerance。
OpenDiLoCo (Prime Intellect, 2024)本团队上一篇, DiLoCo 开源复现本论文是它的 10× 放大 + 容错系统。
RLHF / RLOO 中心化栈 (NeMo-RL, OpenRLHF)不同问题域 — 后训练而非预训练RL post-training 对通信容忍更高 (rollout 占大头), 但还没有公开尝试公网 RL post-training 的工作。INTELLECT-1 之后这是自然延伸。
Federated Learning (FedAvg)同样减少同步, 但用于客户端 MLFL 假设 non-IID + 隐私; INTELLECT-1 是 IID + 公开训练。算法本质 (LocalSGD) 是同一家族。
INTELLECT-1 (本文)10B 规模、公网、动态节点的系统集成不是新算法, 是把 DiLoCo + Hivemind 量化 + FSDP + 自研容错栈缝合到 production。
关注点提示: Megatron / FSDP / DeepSpeed 是内网生态, INTELLECT-1 是公网生态。这两个生态的工程设计目标几乎是镜像反着的: 内网追求"通信密度极致", 公网追求"通信稀疏极致"。把内网工具直接搬到公网会全军覆没, 反之亦然。

10 · 局限 / 个人 take / 待验证问题

论文承认或我看到的局限

我的疑问 (落地后想验证)

  1. H=100 是个超参, 不同规模 / 不同数据 mix 下最优 H 怎么选? 论文说"up to 500" 但实际用 100, 没消融。
  2. Pseudo-gradient 量化的 [µ−6σ, µ+6σ] 裁剪假设近高斯, 但 transformer 在 outlier 显著的 layer (LayerNorm, embedding) 是否需要 per-tensor 不同 σ multiplier?
  3. Outer optimizer 用 Nesterov, 不用 Adam — 直觉是 outer step 数太少 Adam 的 second moment 估计不准。但有人试过 Adam outer 吗?
  4. FSDP2 单节点放 10B 没问题, 但放 70B+ 单节点就爆了, 那时需要节点内 TP, TP 又不能跨节点。在去中心化场景 70B+ 训练的拓扑是怎样的?
  5. Async DiLoCo (worker 不等彼此, lag 一个 outer step) 能更好处理慢节点, 论文未试。
  6. P2P checkpoint 30–60 min 是因为模型 ~20 GB / 1 Gb/s. 这个时间随模型规模线性增长, 100B 模型就要 5+ hr P2P, blocking 几乎不可接受。
  7. 对节点贡献者的激励 (Bitcoin 比喻) 这个论文只在 §4 讨论里提了一句, 但实操是 30 家自愿者 — 真正的"激励驱动 decentralized AI"还没起来。

记忆点

立场 这是工程系统论文, 不是新算法; 把 DiLoCo + int8 + FSDP + 容错缝合到 production
公式 通信缩减 = H (DiLoCo) × 4 (int8) = 400×
数字 38 min 算 : 2-10 min 通信; MFU 36-41%
关键 trick Pseudo-gradient 量化比 weight 量化安全, 因为差分上 outlier 小
工程哲学 Blocking checkpoint > non-blocking, 因为稳定性 > 利用率; outer LR=0.7 因为 pseudo-grad 本身就是大位移
陷阱 Tailscale 跨洲会自己变瓶颈; Q(a)+Q(b)≠Q(a+b), 累加必须 fp32
陷阱 Ring all-reduce 取决于最弱链路, 必须 bandwidth-aware TSP 重排
语境 内网生态 (Megatron/FSDP) 与公网生态 (DiLoCo/Hivemind) 设计目标镜像相反

精读笔记 v1 · 2026-05-07 · 配套论文 PDF 在 /data/szhang967/papers/paper-notes/INTELLECT1_2412.01152.pdf