OpenArch:从零手写现代 LLM 架构

OpenArch – PyTorch implementations of modern LLM architectures

OpenArch 是一个专注于可读性的 PyTorch 项目,从零开始手写实现了 Llama、Qwen、DeepSeek、Gemma 等主流开源大模型的架构。与追求性能的生产库不同,该项目旨在通过单文件实现,清晰展示注意力机制、归一化方式和位置编码等关键设计差异。基于 Sebastian Raschka 的 LLM Architecture Gallery,它帮助开发者绕过复杂的工程优化,直接理解现代大模型的核心骨架。无论是 MHA、GQA 还是 MoE 路由,每个模型的结构选择都一目了然,是深入理解 LLM 内部机制的绝佳学习资源。

阅读官方模型代码往往很困难,因为生产型仓库优先考虑速度、分片和向后兼容性,而这个仓库则优先优化可读性。
  1. anuj0456

    我一直在研究现代大语言模型(LLM)架构,并开始在 PyTorch 中从零实现它们,以便更好地理解每个模型背后的设计决策。

    OpenArch 是这些实现的集合,包括 Llama、Qwen、DeepSeek、Gemma、Kimi、GPT-OSS 等。

    目标是保持代码可读,并作为从论文到实际实现的参考。

    希望能收到从事模型架构和训练工作的同行们的反馈。

  2. k__

    昨天我才恍然大悟,原来那些开放权重的模型需要定制代码才能运行。

    不知为何,我一直以为推理引擎是通用的 LLM 运行时,可以执行任何权重。

    所以,为了理清思路:

    有人训练了一个模型。

    他们发布了权重和模型架构的参考实现。

    然后,服务提供商必须通过运行参考实现、开源实现,或者构建自己的实现来托管该模型。

    这是否意味着,提供商之间的差异不仅在于量化和配置,还在于推理引擎的实现?

  3. theGeatZhopa

    嘿 anuj,

    这对理解非常有帮助。我目前在理解上有些困难——对我来说,PyTorch 就像是 RL 中使用的 gym/训练环境。在那里,我可以选择 ppo、dnq 和其他代理(agents)来在预定义的 gym/世界中执行一些预定义的动作。

    你展示的仓库——我很难将其纳入我对 RL 的理解框架中。这里的 gym 是什么?代理是什么?它能用 PyTorch 来训练这些模型吗?

    抱歉问这种新手问题。论文让我的新手大脑感到不知所措。

  4. dwrodri

    这让我想起了 lucidrains,他或许是互联网上最 prolific 的 PyTorch 用户和论文实现者之一。他的实现对我提升从零实现论文的能力至关重要。看来他还在活跃,并且正在做非常棒的事情。https://github.com/lucidrains

  5. tweedler290

    这真的很酷!

    关于 MoE 有个问题:在 kimmi-K2/model.py 中,router 使用的是 torch.topk(..., k=self.num_experts),而其他所有 MoE 都使用 k=self.top_k。而且构造函数中的 top_k=8 似乎从未被存储过……这是故意设计的密集路由(dense routing),还是应该改为 self.top_k?

同日更多故事

2026-09-14