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実装

何であるか – セバスチャン・ラシュカの『LLMアーキテクチャギャラリー』から、1つの大規模言語モデル(LLM)アーキテクチャを1つずつ実装した手書きのPyTorch model.py ファイルのコレクション。コードは意図的に最小限に抑えられており、1モデルあたり1つの読みやすいファイル、シャーディングもなし、速度最適化のテクニックもなし。前方伝播に必要なコアレイヤーだけを含む。

なぜ存在するか – 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など)と、いくつかのマルチモーダルまたは画像モデルがリストアップされている。各エントリには以下の情報が表示される:

  • モデルサイズ(例:7 B、400 B)
  • 正規化(RMS Norm、QK‑Normなど)
  • 位置エンコーディング(RoPE、絶対的など)
  • アテンションのバリエーション(マルチヘッド、グループ化クエリ、スライディングウィンドウ、ラテン、ゲート付き)
  • Mixture-of-Experts(MoE)を使用するか

✅ は前方伝播が実行可能であることを意味し、🚧 は実装が進行中のことを意味する。

リポジトリの構造

OpenArch/
├─ text/      ← 1つのテキストモデルごとにフォルダ(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 を実行する(またはインポート)してモデルクラスをインスタンス化し、トークンIDのテンソルを入力する。コードには、公式の重みをオプションで読み込み、いくつかのトークン出力を検証する簡単な前方伝播テストが含まれている。

貢献について – 次のような貢献を歓迎します:

  • ギャラリーにないアーキテクチャを追加する。
  • 既存モデルのREADMEを書く。
  • 公式の重みと比較するテストを追加する。
  • ドキュメント文字列を改善する、または共有ユーティリティをリファクタリングする。 貢献は速度よりも明確さを優先すべき。目的は教育であり、本番環境向けではない。

ライセンス – リポジトリ全体はApache 2.0。個々のモデルファイルは、元のモデルのライセンスに従う。

結論 – OpenArchは、現代のLLMアーキテクチャの学習に特化した本物のオープンソースコードベースであり、膨大なライブラリのオーバーヘッドなしに、今日の大規模言語モデルの構成要素を読んだり理解したりしたい人にとって有用である。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト