AIの本体と言える大規模言語モデル(LLM)のトレーニングはほとんどの場合PyTorchやPythonを使用して行われていますが、そうしたトレーニングを純粋なC言語のみで実装したツール「llm.c」が登場しました。まだ最適化が行われておらず従来の手法に速度面では敗北していますが、GPT-2のトレーニングを行う実装を約1000行のクリーンなコードで行えています。

GitHub - karpathy/llm.c: LLM training in simple, raw C/CUDA

https://github.com/karpathy/llm.c

作者のアンドレイ・カルパシー氏はOpenAIの創設グループの一員で、テスラのAIディレクターだった事もある人物です。

llm.cを使用することで、245MBの容量を持つPyTorchや107MBの容量を持つcPythonを使用せずに大規模言語モデルをトレーニングすることが可能です。実際にカルパシー氏が現在の大規模言語モデルの祖先と言える「GPT-2」をCPUでトレーニングするコードを実装したところ、依存関係を減らしつつ約1000行という少ないコード量で実装できたとのこと。





実際のコードはGitHubで公開されています。最初に必要な量のメモリをまとめて取得し、トレーニング中はメモリの使用量が変動しないとのこと。このコードではPythonのライブラリを使用しないため、すべての個別のレイヤーの順方向パスと逆方向パスが手動で実装されています。





レイヤーの接続においては全てのポインタとテンソルオフセットが正しく配置されていることを確認しつつコードを書く必要があり、非常に面倒でマゾヒスティックな作業だったそうです。





記事作成時点ではCPUでのトレーニングコードしか公開されていませんが、カルパシー氏はCUDAを使用したトレーニングのためのコードも作成中とのこと。CUDAへの移植や効率化を施すと、重い依存関係なしでPyTorchと同等レベルの速度でトレーニングできるはずだとカルパシー氏は期待を述べました。





今後、精度をfp32からfp16へと下げたり、llama 2・mistral・gemmaのような現代的なアーキテクチャをサポートしたりする予定とのこと。また、もう少し安定した状態になったらこうしたコードを詳細にゼロから構築するムービーを公開するつもりだとカルパシー氏は述べています。