OpenArch – 现代LLM架构的PyTorch实现

Hacker News Top 工具

摘要

OpenArch 是一个 GitHub 仓库,提供现代 LLM 架构的手工 PyTorch 实现,以提高教学清晰度,并支持对结构选择进行并排比较。

暂无内容
查看原文
查看缓存全文

缓存时间: 2026/09/14 11:45

anuj0456/OpenArch 源代码:https://github.com/anuj0456/OpenArch

OpenArch

用Python从零开始实现现代开源大语言模型架构——逐个模型,独立编写。
本仓库包含手写的PyTorch实现,对应Sebastian Raschka的“LLM架构画廊”(https://sebastianraschka.com/llm-architecture-gallery/)中收录的模型架构。
每个模型的实现都基于我对原始论文、技术报告、参考config.json文件,以及Sebastian Raschka和Machine Learning Mastery优秀文章的理解,力求忠于原貌。
目标不是与transformers或其他生产级库竞争,而是注重清晰度与学习价值:每个架构对应一个可读性强的单文件,其中的结构选择(注意力类型、归一化、层组合、MoE路由、位置编码)都明确呈现,便于并列比较。

为何建立这个仓库?

现代LLM架构共享基本骨架,但在数十个细微而关键的选择上有所不同:

  • 注意力机制:MHA、GQA、MQA、MLA、滑动窗口注意力、线性/DeltaNet混合注意力
  • 归一化:预归一化、后归一化、QK-Norm、夹心归一化、RMSNorm
  • 位置编码:RoPE、NoPE、部分RoPE、YaRN
  • 解码器类型:密集型 vs 稀疏MoE(是否包含共享专家)、Mamba/注意力混合架构
  • 训练时技巧:多token预测、潜在专家、门控注意力

阅读官方模型代码可能困难,因为生产仓库需优化速度、分片和向后兼容性。而本仓库优化目标是可读性

已实现内容(截至目前)

标记为✅的实现可用于前向传播;标记为🚧的尚在开发中。

模态模型状态模型规模归一化位置编码注意力机制混合专家模型
文本GPT-2 XL1.5B-绝对位置编码多头注意力
Llama 27BRMS NormRoPE多头注意力
Llama 38BRMS NormRoPE分组查询注意力
OLMo 27BRMS Norm & QK-NormRoPE多头注意力
DeepSeek R1671BRMS Norm & QK-NormRoPE多头潜在注意力
Gemma 327BRMS Norm & QK-NormRoPE滑动窗口分组查询注意力
Mistral 324BRMS NormRoPE滑动窗口分组查询注意力
Llama 4 Maverick400BRMS NormRoPE分组查询注意力
Qwen 34BRMS Norm & QK-NormRoPE分组查询注意力
30B-A3BRMS Norm & QK-NormRoPE分组查询注意力
Kimi K21TRMS NormRoPE多头潜在注意力
GLM 4.5355BRMS Norm & QK-NormRoPE分组查询注意力与多token预测
GPT-OSS20BRMS NormRoPE滑动窗口分组查询注意力
Grok-2.5🚧270BRMS NormRoPE分组查询注意力
多模态PaliGemma3BRMS NormRoPE多头注意力
Qwen3🚧3BRMS NormRoPE多头注意力
图像Dall-e🚧---Transformer-

完整目标列表对应架构画廊中的72个架构。欢迎贡献其中任何一个的实现。

仓库布局

OpenArch/
├── text/
│   ├── gpt2/
│   │   ├── model.py
│   │   └── README.md
│   ├── llama3/
│   ├── qwen3/
|   ├── grok2.5/
│   └── deepseek_v3/
├── multimodal/
│   └── pali-gemma/
│   ├── model.py
│   └── README.md
├── README.md
└── requirements.txt

每个模型位于独立文件夹中,包含相应的model.py和简短的README.md,说明所用架构选择与参考文献。

贡献指南

我正在积极寻找贡献者。 如果你喜欢阅读模型论文、比较config.json文件,或只是想加深对现代LLM构建方式的理解,这里是一个友好的起点。
好的首次贡献包括:

  • 从画廊中选择一个未实现的模型,并为其添加model.py
  • 为现有模型添加README.md,记录其架构选择
  • 添加前向传播测试,加载官方权重并在几个token上验证输出一致性
  • 修复错误、改进文档字符串或重构共享组件

开始大规模工作前请先开issue,以避免重复劳动。
实现应优先考虑可读性而非性能——这首先是一个学习资源。详见CONTRIBUTING.md

致谢

本仓库得益于两位杰出教育者的工作:

  • Sebastian Raschka (https://sebastianraschka.com/) — 感谢其LLM架构画廊(https://sebastianraschka.com/llm-architecture-gallery/)、大型LLM架构对比系列文章(https://magazine.sebastianraschka.com/p/the-big-llm-architecture-comparison)以及《从零开始构建LLM》(https://github.com/rasbt/LLMs-from-scratch)书籍与代码库。画廊中的架构图、概览表和并列对比是本仓库每个模型的主要参考。
  • Jason Brownlee与Machine Learning Mastery团队 (https://machinelearningmastery.com/) — 感谢多年清晰易懂的教程,帮助无数从业者(包括我自己)从基础建立对深度学习和Transformer架构的理解。
    本仓库中的任何实现错误均由我个人负责。

许可证

本项目采用Apache License 2.0 — 详见LICENSE
各模型实现遵循原始模型的适用许可证;具体信息请查看各模型文件夹。

免责声明

这些实现基于公开可用的论文、技术报告、配置文件和教学材料编写,力求忠于原意。它们旨在作为学习资源,与原始模型作者无关联或背书。如需生产用途,请使用官方实现或transformers库。

相似文章

Ornith-1.0:用于智能代理编码的自我构建型大语言模型

Hacker News Top

Deep Reinforce发布了Ornith-1.0系列开源自我改进大语言模型,专为智能代理编码设计,参数规模从9B到397B,在SWE-Bench Verified和Terminal-Bench 2.1等基准测试中取得了最先进的性能,超越了Claude Opus 4.7及其他领先的开源模型。