HN 日本語サマリー

← 一覧へ戻る
プログラミング

純粋なC言語で書かれたMicroGPTがApple M5で10M tpsを達成

Microgpt in pure C hits 10M tps on Apple m5 (github.com)

112 pointsby dhorthy37 コメント

要約

依存関係のない純粋なC言語で書かれたMicroGPTは、文字レベルのTransformerモデルであり、フォワードパス、バックプロパゲーション、Adamオプティマイザ、サンプリング機能をすべて1つのCファイルに収めています。Apple M5 ProのNEON最適化により、毎秒10,168,430トークンという驚異的な処理速度を達成し、パラメータ数が少ないながらも優れた汎化能力を示しています。

全文翻訳

microGPT-C 純粋なC言語で書かれた、GPTのトレーニングと推論を行うための最も原子的な方法。libc以外に依存しない、1つのCファイルにフォワードパス、バックプロパゲーション、Adam、サンプリング機能を備えた文字レベルのTransformerです。 約32kの名前データで数秒でトレーニングを行い、新しい名前を生成します。 ビルドと実行 make run または、1行に1つのアイテムがある任意のコーパスで直接実行します。 ./microgpt data/names.txt macOS、Linux、Windows (MSYS2) でビルド可能。ARM64ではNEON、x86-64ではAVX2に対応しています。Makefileがホスト用のフラグを選択します。 step 5000 / 20000 | loss 2.6036 (avg 2.2940) step 10000 / 20000 | loss 1.9639 (avg 2.2564) step 15000 / 20000 | loss 2.7007 (avg 2.2151) step 20000 / 20000 | loss 2.3463 (avg 2.2201) inference sample 1: kayley sample 2: maria sample 3: arana sample 4: shayan sample 5: jayden sample 6: saria sample 7: kaylen sample 8: amari sample 9: alina sample 10: mailyn c fp32+NEON 10168430 tok/sec 注記 モデルは4192個のパラメータを持ち、記憶するのではなく汎化します。32033個の名前のうち20000個でトレーニングした結果、それらの名前に対して2.2054 nats/character、一度も見たことのない12033個の名前に対して2.2039 nats/characterというスコアを記録し、パラメータ数がほぼ5倍ある補間された3-gramモデルを上回りました。 トレーニングと推論では、別々のフォワードパスを使用します。gpt_forwardはバックプロパゲーションのためにアクティベーションを保存し、gpt_forward_inferは、そのロジットがfp32の丸め誤差内で一致する、特殊化されたシングル・トークン・パスです。docs/PERFORMANCE.mdには、そのパスがどのように機能し、何がそれを制限するかが記載されています。 machine backend tok/sec Apple M5 Pro NEON 10,168,430 AMD Ryzen 5 5600H AVX2 6,927,775