milanm/AutoGrad-Engine
A complete GPT language model (training and inference) in ~600 lines of pure C#, zero dependencies
解决的问题
MicroGPT.cs 是一款教育工具,旨在让基于 Transformer 的 GPT 模型内部工作原理变得易于理解。它展示了一个完全可运行的纯 C# 实现,无需任何外部库,因此你可以清楚地看到分词、嵌入、注意力机制、MLP、反向传播和生成过程是如何结合在一起的。你得到的不是黑盒框架,而是一个透明且带有注释的代码库,揭开了 ChatGPT 背后的算法奥秘。
工作原理
该项目是 Andrej Karpathy 的 microgpt.py 的忠实移植版。它由四个核心文件组成:
Value.cs— 一个自动微分引擎,封装标量并自动跟踪梯度。Tokenizer.cs— 字符级编码和解码(BOS/EOS token)。NeuralOps.cs— 无状态构建块:Linear、Softmax、RMSNorm。Program.cs— GPT 模型、训练循环和生成逻辑。
训练使用了一个包含 32,033 条人名的小型数据集。该模型是一个标准的 Transformer,具有可配置的超参数(例如嵌入大小、层数、注意力头数)。在训练过程中,使用 Adam 优化器最小化交叉熵损失。训练完成后,通过自回归方式生成新名称:从 BOS 开始,根据 Softmax 概率采样下一个字符,将其反馈回模型,重复此过程直到遇到 EOS 或达到最大长度。
README 还包含一份详细的开发者指南,通过类比和图表逐步讲解从分词到反向传播的每一个步骤。
适用人群
它面向那些想要真正理解 GPT 的开发者和机器学习爱好者。代码包含大量注释,并为初学者提供了先决条件指南,此外还与生产级模型(如 GPT-4)进行了对比以说明差异。只要你会写 for 循环,就能跟上进度。它特意没有设计成生产代码——它一次处理一个数字而不是并行张量,但所有概念性组件都已具备。
主要亮点
- 纯 C# 且零依赖:无需 PyTorch、TensorFlow 或 NuGet 包。
- 4 个文件共约 600 行代码,带有详尽注释。
- 包含一个完整的自动微分引擎,可自动跟踪梯度,并通过数值梯度检查(类似于 PyTorch 的
gradcheck)进行验证。 - 现代设计选择(使用 RMSNorm 代替 LayerNorm,无偏置,平方 ReLU,预归一化),比 GPT-2 更接近 LLaMA。
- CLI 参数允许你调整模型大小、训练步数、学习率等。
- 与 GPT-4 的清晰对比表,展示了规模差异(参数量、上下文、训练数据)。
相关
- 项目
- 项目
- 项目
- 项目