純C製の「MicroGPT」がApple M5で毎秒1000万トークンを達成
Microgpt in pure C hits 10M tps on Apple m5
GitHubで公開された「microgpt-c」は、依存関係ゼロの純C言語でGPTの学習と推論を実装したキャラクターレベルのTransformer。約32,000件の名前データを数秒で学習し、新しい名前を生成する。Apple M5 ProのNEONバックエンドで毎秒10,168,430トークン、AMD Ryzen 5 5600HのAVX2で毎秒6,927,775トークンを記録。モデルは4,192パラメータで、未学習データに対しても汎化性能を示す。
このモデルは4,192パラメータを持ち、記憶するのではなく汎化する。
HNでの議論
50- MycroftJones
5ヶ月前に投稿されたmicrogptのC移植版をチェックしてみてください。Python版と比べて2500倍の高速化を達成しています。https://github.com/moebiusV/cugpt
- Retr0id
> 純粋で依存関係のないCでGPTをトレーニングし推論する最も原子的な方法。
ここでの「原子的」という言葉はどういう意味ですか?
- ilaksh
これは明らかにLLMではありません。ランダムな名前を生成するためのものに過ぎません。しかし、真に小さな言語モデルが互いに接続された場合の可能性を考えるのは興味深いです。
- hasteg
これはかなりクールですね。私も似たようなもの(約1000万パラメータの本当に小さな言語モデル)を実装したことがありますが、それはLLMの背後にあるMLを自分自身に教えるためでした。もちろんCで実装したわけではなく、PyTorchを使っただけですが、Cのファイルを見て、Pythonで当たり前のように使っていたものを彼がどう実装しているかを見るのは興味深いです。
とにかく、私はこれを自分のAMD Ryzen 9 9800x3dでテストしてみました。karpathyのShakespeareデータセット(https://raw.githubusercontent.com/karpathy/char-rnn/master/d....)を使って、毎秒7647173トークンを達成しました。これで遊んでみて、CUDAカーネルを構築して5090で何ができるか見てみようと思います。Claudeはナプキン計算で、約20億トークン/秒が得られるだろうと推定しています。
- pkilgore
正直なところ、これが印象的かどうかはわかりません。学習演習としてmicrogptをzigに移植し、その後、何が起こるか見るためにスカラーエンジンをNEON/metalに移しました。メタルが遅かったこと以外は(おそらく何か間違ったことをしたのでしょうが、小さなモデルではGPUへのメモリ転送の固定コストが割に合わないためかもしれません)。
とにかく、これも馬鹿みたいに速く、特にPython版と比較するとそうでした。しかし、それが実際の本番アーキテクチャには無関係であることは確かだと思っていました。