# Reddit 网友用纯 C++17 手搓了一个 83 万参数的 Transformer，不用 PyTorch 也不用 BLAS，单核 CPU 训练 76 分钟

> 原标题：I built a transformer in C++17 from scratch — no PyTorch, no BLAS, no dependencies. Trains on CPU. 0.83M params, full analytical backprop, 76 min to val loss 1.64.

- 来源：r/LocalLLaMA
- 发布时间：2026-05-02T18:11:34.000Z
- AX AI 日报：https://ai-daily.ax0x.ai/items/12986
- 原文：https://www.reddit.com/r/LocalLLaMA/comments/1t1x9jv/i_built_a_transformer_in_c17_from_scratch_no/

## 摘要

一个叫 Suspicious_Gap1121 的 Reddit 用户放出了 Quadtrix.cpp，一个用 C++17 从零写的 GPT 风格模型，总共 83 万参数。模型结构是 4 层、4 个注意力头、宽度 200 维，一次能看 128 个字符的上下文。他在单核 CPU 上拿 3140 万个字符训练了 76.2 分钟，验证损失降到 1.6371 n...

## 推荐理由

我会先打个折：这就是个个人练手项目，0.83M 参数离实用还远，别拿它跟正经模型比性能。但它的看点不在规模，而在把整个训练管线——LayerNorm、attention、Q/K/V、dropout、AdamW——全部手写反传，不用自动微分，不用 BLAS 加速，单核 CPU 跑通。正文没披露生成效果，也没给权重文件，所以只能当教学级实现来看。对 AI 从业者来说，这东西像一份可运行的底层教案，把平时被框架藏起来的细节全摊开了。

## 锐评

这条帖子展示了一个极简的 Transformer 实现，作者用 C++17 从零写了所有反向传播，包括层归一化、注意力机制和 AdamW 优化器，没碰 PyTorch 或 BLAS。模型很小，83 万参数，4 层 4 头，宽度 200 维，一次只能看 128 个字符，在单核 CPU 上拿 3140 万个字符训练了 76 分钟，验证损失 1.64 nats。

这个损失值本身不算惊艳，但考虑到纯 CPU 训练和极小的模型体量，能跑通完整流程已经说明作者对底层数学推导很熟。我会先打个折：正文没披露训练数据是什么、验证集怎么划分、也没给生成样例，所以没法判断模型实际输出质量。另外 128 字符的上下文窗口太短，基本只能做字符级语言建模实验，离实用还远。

对想理解 Transformer 内部细节的人来说，这份代码比看论文直观，因为所有梯度都是手写的，没有自动微分黑箱。但别指望拿它跑业务，它更像一个教学工具。还缺的是推理速度、内存占用和不同超参下的对比实验，这些作者都没提。
