June 27, 2026
最近两年一直在学习 AI 底层相关的东西,希望对整体的实现机制有所了解,到目前为止共完成了3个项目,都是用C++从零开始实现:
1、TinyTorch
项目链接:https://github.com/keith2018/TinyTorch
类似于简化版本的 libTorch,从零实现的训练框架:
- 实现了 Tensor、function、module、optimizer、dataLoader 等基础模块,与 pytorch 一样通过动态图实现自动微分,可以完整跑通 mnist 训练
- 支持 CPU 和 CUDA(不过 CPU 版本没啥优化)
- 支持混合精度 FP16, FP32 and BF16
- 支持分布式训练 DDP(基于 NCCL), 支持单机多卡、多机多卡
2、TinyFA
项目链接: https://github.com/keith2018/TinyFA
从零实现的 flash attention 算子库,目前只针对 Ampere 系列 (A100/A10) 做过优化,且只支持 forward。性能上用 A100 测试大概达到官方的 95% 左右:
- Device: NVIDIA A100-SXM4-40GB
- Configuration: batch=2, numHeads=32, headDim=128, SeqLen=4096
| Dtype | Causal | TinyFA (ms) | TinyFA (TFLOPS) | flash_attn (ms) | flash_attn (TFLOPS) | Relative |
|---|---|---|---|---|---|---|
| fp16 | False | 2.832 | 194.09 | 2.654 | 207.14 | 0.94x |
| fp16 | True | 1.636 | 168.01 | 1.557 | 176.54 | 0.95x |
| bf16 | False | 2.743 | 200.40 | 2.623 | 209.58 | 0.96x |
| bf16 | True | 1.624 | 169.28 | 1.537 | 178.82 | 0.95x |
3、TinyGPT
项目链接:https://github.com/keith2018/TinyGPT
从零开始实现的 LLM 推理框架,依赖了前面的 TinyTorch 和 TinyFA:
- 手写了个 BPE tokenizer,实测比 tiktoken 更快
- 支持模型:Llama 3.2、Qwen 2.5、Qwen 3 等
- 支持 Paged Attention、Continuous Batching
- 支持多卡推理(TP 模式)
性能上用 A10 跑 Qwen3 0.6B (bf16)单 prompt 可以到 230 token/s (输入5,输出 1024),同样的配置情况下 vllm 250+ ,不过 server 模式整体吞吐率落后 vllm 很多,还没有太多优化
小结
这3个项目都是用于个人学习,“纸上得来终觉浅”,自己实现一遍更有助于理解,当然作为Demo类工程,很多细节并没有过多关注,性能上也是有很大优化空间的。
现在有了 Claude 加持后,学习效率确实高了很多了,写代码的效率就更高了,甚至更多的是让 AI 写,自己再 review 一下,想想从 ChatGPT 出来才3年时间,程序员的工作方式就彻底改变了,并且看起来再也回不去了。
下一步的计划,个人准备开始学习算法理论相关的东西,可能主要是自监督、持续学习这些方向,早期的小模型这些方向貌似比较难做,大模型出来后似乎有点不一样了?另外也准备学习下神经科学、脑科学方面的东西,“路漫漫其修远兮”,就当个小爱好吧~