A-GPT(A-GPTプロジェクトの学習済みモデル)
A-GPTプロジェクトは、LLM の仕組みを、最小のモデル(モデル1。重み1,361個)から GPT-2 medium 級(モデル9。約3億3,500万個)まで、自分の手で順番に作って確かめる、学習用のプロジェクトです。 Transformer の計算・BPE のトークナイザー・学習の仕組みは、ライブラリに頼らず手書きしています(学習は Mac の GPU で MLX を使用)。
- プログラム・学習の記録: https://github.com/yoshio-aono/llm-origin
- 動かして見られる画面: https://llm-origin.vercel.app
このリポジトリには、大きな重み(モデル6以降)だけを置いています。モデル1〜5の重みは GitHub にあります。
モデル
| モデル | ファイル | 重み | 形(d・層・ヘッド) | 語彙 | 一度に読む長さ | 1文字あたりの損失※ | 常識クイズ |
|---|---|---|---|---|---|---|---|
| モデル6 | model6/weights.npz |
16,798,336 | 384・6層・6ヘッド | 16,000 | 128 | 2.997 | 61/189 |
| モデル6(チャット) | model6chat/weights.npz |
16,799,491 | 384・6層・6ヘッド | 16,003 | 256 | − | − |
| モデル7 | model7/weights.npz |
41,619,712 | 512・8層・8ヘッド | 32,000 | 512 | 2.939 | 82/189 |
| モデル7(チャット) | model7chat/weights.npz |
41,619,712 | 512・8層・8ヘッド | 32,000 | 512 | − | − |
| モデル8 | model8/weights.npz |
109,627,136 | 768・12層・12ヘッド | 32,000 | 1,024 | 2.821 | 91/189 |
| モデル8(チャット) | model8chat/weights.npz |
109,627,136 | 768・12層・12ヘッド | 32,000 | 1,024 | − | − |
| モデル9 | model9/weights.npz |
335,013,120 | 1,024・24層・16ヘッド | 32,000 | 1,024 | 2.733 | 112/189 |
| モデル9(チャット) | model9chat/weights.npz |
335,013,120 | 1,024・24層・16ヘッド | 32,000 | 1,024 | − | − |
※ 青空文庫の同じ検証データ(学習に使っていない52作品)で測った、1文字あたりの損失(ナット。小さいほど良い)。 常識クイズは、189問・4択(当てずっぽうなら25%。2026-09-28 に30問から増やした)。モデル8は、青空文庫・Wikipedia・Web(fineweb-2)の約22億トークンを、Mac の GPU で約26時間学習しました。モデル9は、Web の文章を大きく増やした約67億トークンを、Mac の GPU で約9日半学習しました(Web の検証データで1文字あたり1.853)。「(チャット)」は、会話の例で指示チューニングをしたチャット版です。
どれも小さな学習用のモデルです。文章は日本語らしく書けますが、内容の正しさは保証されません(事実と違うことをよく書きます)。 実用ではなく、LLM の仕組みを学ぶための教材として使ってください。
ファイルの形式と使い方
- 重みは NumPy の
.npz(float16)です。独自の作りのモデル(Transformers などのライブラリの形式ではありません)なので、 GitHub のプログラム(models/、train.py、model.py)で読み込んで使います。 - 作り: Pre-LN の Transformer、位置エンコーディングは sin/cos、Embedding を √d 倍、Embedding と出力層の重みを共有、
LayerNorm の重みあり、活性化関数は ReLU。トークナイザーは手書きの BPE(
models/<モデル>/bpe.json)。
学習データと出典
| データ | 使ったモデル | 出典・ライセンス |
|---|---|---|
| 青空文庫(著作権の切れた新字新仮名の作品) | モデル6〜 | 青空文庫。著作権の切れた作品のみ |
| 日本語 Wikipedia | モデル6〜 | ウィキペディア日本語版の執筆者(wikimedia/wikipedia 20231101.ja)。CC BY-SA 4.0 |
| Web の文章(fineweb-2 の日本語部分) | モデル8〜 | HuggingFaceFW/fineweb-2。ODC-BY(Common Crawl の利用規約にも従う) |
| 会話の例(チャット版の指示チューニング) | チャット版 | kunishou/databricks-dolly-15k-ja(databricks-dolly-15k の日本語訳)。CC BY-SA 3.0 |
ライセンス
重みは CC BY-SA 4.0 で公開します。学習データ(Wikipedia など)の条件に合わせた、慎重な選び方です。 使うときは、このリポジトリと、上の学習データの出典を表示してください。改変したものを公開するときは、同じ条件(CC BY-SA 4.0)にしてください。