PythonもPyTorchも不要 — C言語1ファイルだけでGPTをゼロから動かすオープンソースプロジェクトが注目を集めている。

microgpt-c は、外部ライブラリを一切持たずにGPTの学習と推論を完結させる実装で、Ryzen 5 5600H CPU上で2.6Mトークン/秒という高い推論速度を記録している。

この記事でわかること:

  • microgpt-cの概要と他の実装との違い
  • 高速推論を支える最適化手法
  • コンパイルして実際に動かす手順
  • V2で加わった変更点

GPTを「外部依存ゼロ」で実装するとはどういうことか

https://github.com/vixhal-baraiya/microgpt-c

LLMの学習と推論には通常、PyTorchやCUDA、NumPyなど多数のライブラリが必要になる。環境構築だけで数十分かかることも珍しくない。

microgpt-cはこの複雑さを根本から排除した実装で、依存するのは標準Cライブラリの数学関数(libm)のみ。ソースコードは microgpt.c 一枚(約27KB)に収まっており、GPUがなくても仮想環境がなくても、コンパイラさえあれば動く。

作者のvixhal-barailaは「The most atomic way to train and inference a GPT in pure, dependency-free C」と説明しており、GPTの内部構造を余分なレイヤーなしに理解できる点も特徴となっている。

2.6Mトークン/秒を支える最適化の仕組み

高速推論を実現しているのは、固定幅ドット積カーネル・AVX2 SIMD・高速exp近似の組み合わせだ。

固定幅ドット積カーネル(dot16 / dot4 / dot64)

線形層の演算を次元数に応じた専用関数に分割している。埋め込み次元16にはdot16、アテンションヘッド次元4にはdot4、MLP次元64にはdot64をそれぞれ使用する。ループのオーバーヘッドをなくし、コンパイラのベクトル化が効きやすい形に整えることで、汎用ループより高いスループットを得ている。

AVX2 SIMDによる並列演算

コンパイル時に -march=native-O3 を指定することで、CPUのAVX2命令セット(256ビット幅のSIMD演算)を活用する。FMA(積和演算)を組み合わせることで、1クロックあたりの浮動小数点演算量を大幅に増やしている。

Schraudolphの高速exp近似

SoftmaxやGELU活性化で必要になる指数関数(expf)の計算に、浮動小数点のビット表現を使ったSchraudolph近似を採用している。コード中に「~1 ULP error, 3-4x faster than libm expf」と明記されており、精度を若干犠牲にする代わりに通常のexpfより3〜4倍高速に動作する。

これらを組み合わせた結果、Ryzen 5 5600H(AVX2対応の一般的なCPU)で2.6Mトークン/秒を達成している。

キャラクターレベルのトークナイザーで学習まで完結

microgpt-cが実装しているのは推論だけではない。同じファイルにトレーニングループも含まれており、用意したテキストデータからそのまま学習できる。

トークナイザーはキャラクターレベルで動作する。テキストに登場する文字を語彙として使い、文字IDの列としてシーケンスを扱う。付属の names.txt(人名のリスト)を使ったサンプルでは、数千ステップの学習後に人名らしい文字列を生成できるようになる。

乱数生成にはxorshiftアルゴリズムを自前実装しており、重みの初期化にはBox-Muller変換によるガウス分布サンプリングを使っている。外部のランダムライブラリも不要だ。

コンパイルと実行は3コマンドで完了する

git clone https://github.com/vixhal-baraiya/microgpt-c.git
cd microgpt-c
gcc -O3 -march=native -ffast-math -o microgpt microgpt.c -lm
./microgpt

実行すると学習ループが始まり、ステップごとにlossが表示される。20,000ステップ後に推論フェーズへ移行し、生成されたサンプルと推論速度がターミナルに出力される。

step     1 / 20000 | loss 3.3178
step  5000 / 20000 | loss 2.6062
...
--- inference ---
sample  1: kayley
sample  2: maria
  c fp32+AVX2               2,631,689 tok/sec

WindowsではWin32 APIを使った高精度タイマーが自動で切り替わるため、gcc が使える環境であればクロスプラットフォームで動作する。

V2で固定幅カーネルとSchraudolph近似が追加された

2026年5月3日に公開されたV2では、上記の固定幅ドット積カーネルとSchraudolph近似が主な追加点となっている。V1は汎用ループで演算を行っていたが、V2でプロファイルに基づいたホットパス最適化を実施した形だ。

GitHubのスター数は公開から約3ヶ月で487件、フォーク数は77件に達しており、実装の学習目的だけでなく、組み込み系や制約の強い環境でのLLM推論を試みる用途でも参照されている。

機械学習の仕組みをC言語で追える実装

microgpt-cはパフォーマンスだけを追ったプロジェクトではない。コード全体が1ファイルに収まっており、乱数生成からトークナイズ、アテンション計算、バックプロパゲーションまでを一直線に読み追える構成になっている。

LLMの学習ループをCで実装したい開発者や、PyTorchの抽象化の下で何が起きているかを知りたい人にとって、読む価値のある一次資料だ。MITライセンスで公開されており、自由に改変・再配布できる。