NanoEuler
フレームワークを使用せず、純粋なC/CUDAで実装されたGPT-2レベルの教育用言語モデル
NanoEulerは、開発者Vincenzo(JustVugg)が2026年に公開したGPT-2レベルの言語モデルの実装であり、PyTorchやTensorFlowなどのフレームワークを使用せず、純粋なCとCUDAのみで逆伝播、トークナイザー、アテンションまでをすべて直接記述した、教育および研究用のLLMである。プロジェクト名は、残差ブロック(residual block)x = x + f(x)をオイラー前進法(forward-Euler method)で解釈したことに由来し、「深さ(depth)が積分時間」という数学的な直感を反映している。アーキテクチャは、RMSNorm(pre-norm、バイアスフリー)、回転位置埋め込み(Rotary Position Embedding、RoPE)、SwiGLUフィードフォワード、グループクエリ注意(Grouped-Query Attention、GQA)、および直接記述したFlashAttentionカーネルで構成され、約116Mパラメータのモデルを単一のコンシューマー向けGPUで学習できる。 ほとんどのLLM学習プロジェクトは、PyTorchのautogradに依存するため、逆伝播の過程で実際に何が起こっているのかがブラックボックスとなることが多い。NanoEulerは、このブラックボックスを完全に取り除き、Cレベルで勾配を手動で計算し、倍精度検証(〜1e-6レベル)まで行う。まるで自動車エンジンを自分で部品ごとに組み立てながら内燃機関の原理を体得するように、NanoEulerはTransformerのすべての演算をベアメタルレベルで理解できるようにする。Andrej Karpathyのllm.cから着想を得ているが、バイトレベルのBPEトークナイザー自体を実装し、マルチトークン予測ヘッド、およびAlpacaデータセットに基づくSFT(教師ありファインチューニング)まで含め、学習からファインチューニング、推論まで、すべてのパイプラインを1つのバイナリにまとめる点が特徴である。 バイオテクノロジー分野において、NanoEulerの価値は、ドメイン特化の小型言語モデルを最初から完全に制御できる点にある。例えば、タンパク質配列やSMILES化学式などのドメイン特有の語彙でBPEトークナイザーを再学習し、基本的なコーパス(Project Gutenberg、FineWeb-Edu)の代わりにPubMedアブストラクトやUniProt配列データで事前学習を行うことで、研究室専用の小型LMを構築できる。CUDAカーネルを直接修正できるため、カスタムアテンションパターン(例:配列内の局所的な相互作用に重みを付ける変形アテンション)を実験するのにも適している。フレームワークのオーバーヘッドなしにC/CUDAを直接制御するため、組み込み機器やエッジデバイスでの軽量推論最適化研究の出発点となる可能性がある。ただし、現在の生成品質は「流暢な英語」レベルであり、実用ではなく、教育および実験用であることを著者が明示している。
💻 必要なスペック
CPU専用ビルドが可能(小規模モデル~1Mパラメータ)。GPUモデル(116M)の場合は、NVIDIA 8GB以上を推奨
ソースコードのサイズは数MB。FineWeb-Eduコーパスの基本スライスは約1GB、Project Gutenbergは約数十MB
⚡ インストール
### 4-1. 簡単な始め方(CPU)
```bash
git clone https://github.com/JustVugg/nanoeuler.git
cd nanoeuler
make check # グラデーションの検証
make # 学習用バイナリのビルド
./nanoeuler train # 小規模モデル(約100万パラメータ)の学習
./nanoeuler chat # 対話型REPL
```
### 4-2. GPUビルドと学習
```bash
cd cuda
# MakefileでSMアーキテクチャを確認(デフォルトはsm_89 = Ada)
make
./nanoeuler_cuda t # 事前学習(5千ステップごとにチェックポイント)
./nanoeuler_cuda s # Alpaca SFT
./nanoeuler_cuda c # 対話型チャット
./nanoeuler_cuda i # プロンプトベースの生成
```
### 4-3. データ準備
```bash
# data/ディレクトリのスクリプトでコーパスをダウンロード
# Project Gutenberg(約95冊の古典)、FineWeb-Edu(DuckDB CLI)、Alpaca
cd data
bash download_gutenberg.sh # 例(実際のスクリプト名はリポジトリで確認)
```🧬 バイオ活用シナリオ
🔬 ドメイン特化型小型LMの構築
BPEトークナイザーの語彙をSMILES化学式やタンパク質1文字コードで再学習し、PubMed抄録100万件で事前学習することで、約116MパラメータのドメインLMを単一GPUで数時間以内に構築できる。Alpaca形式でドメインQ&Aデータを整理し、SFTを適用することで、化合物特性の問い合わせなど、特殊な目的のチャットボットのプロトタイプとして活用できる。
🧬 カスタムアテンションメカニズムの実験
CUDAカーネルが直接露出しているため、FlashAttentionロジックを修正して、系列内の局所ウィンドウアテンションや位置ごとの重みバイアスなど、生物学的仮説に基づいた変形アテンションを実験できる。例えば、タンパク質2次構造予測において、残基間の距離に比例したアテンション減衰を実装し、既存のTransformerと比較して予測精度の変化を測定する研究が可能である。
📚 LLMアーキテクチャの教育と再現研究
大学院のコースや研究室のセミナーで、Transformerの順伝播/逆伝播をCレベルで1行ずつ追跡しながら学習できる。make checkコマンドで、すべてのパラメータの数値勾配と解析的勾配を比較検証(約1e-6)するため、RMSNorm、RoPE、SwiGLU、GQA各モジュールの微分が正確にどのように計算されるかを実証的に確認できる。
📝 アップデートノート
まだアップデートノートはありません。
🧪 関連「生命のコード」
関連する「生命のコード」記事はまだありません。