我删除了所有这些复杂性,将 LLM 训练简化到最基本的要素,直接用非常低级的语言(C)与计算机对话,没有其他库依赖项。这下面唯一的抽象就是汇编代码本身。与上面相比,我认为人们会惊讶地发现,训练像 GPT-2 这样的 LLM 实际上只需要在一个文件中用 C 编写大约 1000 行代码。我通过直接在 C 中实现 GPT-2 的神经网络训练算法来实现这种压缩。这很困难,因为您必须详细了解训练算法,能够推导出所有层的前向和后向传递,并非常仔细地实现所有数组索引计算,因为您没有 PyTorch 张量抽象可用。因此,这是一个非常脆弱的安排,但一旦您这样做了,并通过与 PyTorch 进行检查来验证正确性,您就会得到一些非常简单、小巧且在我看来非常漂亮的东西。