egg.c — EGGROLLのC実装(整数のみのCPU学習)

AI/ML

概要

EGGROLL(Evolution Guided General Optimization via Low-rank Learning)を純粋なC言語で実装したミニマルなプロジェクトです。大きなMLフレームワークや浮動小数点演算に依存せず、整数演算だけで言語モデルの学習をCPU上で行うことを示す実験実装を提供します。特にApple Silicon/MシリーズのCPU向け最適化が意識されており、低リソース環境やGPU非搭載マシンでの実行を想定しています。コードベースは依存関係を持たず単純で、学習ロジックの理解や軽量なプロトタイピングに向いています。

GitHub

リポジトリの統計情報

  • スター数: 87
  • フォーク数: 3
  • ウォッチャー数: 87
  • コミット数: 14
  • ファイル数: 4
  • メインの言語: C

主な特徴

  • 純粋なC実装:外部依存無しでビルド・実行可能
  • 整数のみの学習:浮動小数点を使わない設計で量子化や固定小数点の技術を活用
  • CPU最適化:特にApple Silicon/Mシリーズ向けのパフォーマンス配慮
  • 軽量で教育向け:アルゴリズムの挙動を追いやすい単一ソース構成

技術的なポイント

本プロジェクトでは「整数のみ(integer-only)」で学習ループを回す点が最大の技術的特徴です。通常のニューラルネットワーク訓練は浮動小数点(FP32/FP16)を前提にするため、誤差蓄積や学習ダイナミクスの管理に浮動小数点特有の利点があります。EGGROLLは低ランク近似や進化的な最適化の考え方を組み合わせることで、モデル更新をよりコンパクトに扱うことができ、これを整数演算に落とし込むことでGPUや大規模ライブラリに依存しない実行が可能になります。

実装上は、行列演算やベクトル演算を固定小数点(スケーリングを伴う整数演算)に置き換え、量子化誤差を抑えるためのスケール管理やクリッピング、適応的な学習率の工夫が重要です。さらにメモリ帯域やキャッシュ効率を高めるためにデータレイアウトやループ順序の最適化が行われていると推測されます。Apple Silicon向けの最適化は、ARMアーキテクチャのSIMD命令(NEON)やキャッシュ特性を考慮した実装上の調整が含まれる可能性が高く、これによりCPUだけでも実用的な速度での訓練・推論が狙われています。

またEGGROLL自体が低ランク学習/進化的探索を組み合わせる手法であるため、モデルサイズやパラメータ更新のコストを抑えつつ、計算資源の少ない環境での学習を現実的にします。本リポジトリはフルの学習ループ(full_trained_egg.c)や生成デモ(wikigen)を含み、理論から実装までの橋渡しをする実験的な教材として有用です。

プロジェクトの構成

主要なファイルとディレクトリ:

  • README.md: file
  • imgs: dir
  • full_trained_egg.c: file
  • wikigen: dir

(full_trained_egg.c): 訓練ループやモデル表現、更新ロジックを含む主要ソースと推定されます。 (wikigen): 学習済みモデルを用いたテキスト生成やサンプルデータが含まれるデモ向けのコンテンツと思われます。 imgs は図解や学習過程の可視化用画像を格納するディレクトリです。

まとめ

整数演算で言語モデルを学習する試みとして実用的で興味深い実装。教育やプロトタイピングに最適。

リポジトリ情報:

READMEの抜粋:

EGGROLL in C

A minimalist, dependency-free implementation of the EGGROLL (Evolution Guided General Optimization via Low-rank Learning) algorithm in pure C.

This project demonstrates integer-only training of a language model directly on the CPU (optimized for Apple Silicon/M-series chips), completely bypassing the need for GPUs, floating-point arithmetic, or heavy ML frameworks like PyTorch or JAX.

Key Features

  • Pure C: Zero external dependencies (uses standard libraries +…