anuj0456/OpenArch

PyTorch implementations of modern open-source LLM architectures (Llama, Qwen, DeepSeek, Gemma, GPT-OSS, Kimi, and more) — written from scratch for readability and learning, based on Sebastian Raschka's LLM Architecture Gallery.

OpenArch – 现代 LLM 架构的可读 PyTorch 实现

是什么 – Sebastian Raschka 的《LLM 架构图鉴》中所列的数十种大语言模型(LLM)架构的手写 PyTorch model.py 文件集合。代码刻意保持极简:每个模型一个可读文件,无分片,无性能优化技巧,仅包含前向传播所需的最核心层。

为何存在 – Hugging Face transformers 等生产级库代码密集且高度优化,难以看清模型为何如此构建。OpenArch 的目标是成为学习资源,让注意力类型、归一化方式、位置编码、MoE 路由等架构选择清晰明确,便于横向对比。

已实现内容 – README 列出了数十种纯文本模型(GPT‑2 XL、Llama 2/3/4、OLMo 2、DeepSeek R1、Gemma 3、Mistral 3、Qwen 3 变体、Kimi K2、GLM 4.5、GPT‑OSS、Grok‑2.5 等)以及少数多模态或图像模型。每个条目显示:

  • 模型大小(如 7B、400B)
  • 归一化方式(RMS Norm、QK‑Norm 等)
  • 位置编码(RoPE、绝对编码等)
  • 注意力变体(多头、分组查询、滑动窗口、潜在、门控)
  • 是否使用混合专家(MoE)

✅ 表示文件可运行前向传播;🚧 表示实现仍在进行中。

仓库结构

OpenArch/
├─ text/      ← 每个文本模型一个文件夹(gpt2/, llama3/, …)
│   ├─ model.py
│   └─ README.md
├─ multimodal/ (例如 pali-gemma/)
├─ requirements.txt
└─ README.md (此文件)

每个模型文件夹包含一个简短的 README,记录特定的架构选择和参考来源。

如何使用

  1. 克隆仓库并从 requirements.txt 安装依赖(PyTorch 及若干工具)。
  2. 进入某个模型文件夹,例如 cd text/llama3。
  3. 运行提供的 model.py(或导入它)以实例化模型类,并输入一个 token ID 张量。代码包含一个简单的前向传播测试,可选择性加载官方权重并验证几个 token 输出。

贡献 – 项目欢迎以下贡献者:

  • 添加图鉴中缺失的架构
  • 为现有模型编写 README
  • 添加与官方权重对比的测试
  • 改进文档字符串或重构共享工具 贡献应优先考虑清晰性而非速度;目标是教育,而非生产。

许可证 – 仓库整体采用 Apache 2.0;各模型文件遵循原始模型的许可证。

总结 – OpenArch 是一个真正开源、面向学习的现代 LLM 架构代码库,适合任何希望在不使用完整库的开销下,阅读并理解当今大语言模型构建模块的人。

相关

  • 项目
  • 项目
  • 项目
  • 项目