TurboGPT: CUDA C++ での高速な小型Transformerの訓練

TurboGPTは、CUDA C++ を使用して小型のバイトレベル GPT モデルを訓練するための特別な実装です。このプロジェクトは極めて高い訓練効率を示しており、約 13 秒で 22KiB の Transformer を訓練できます。

技術的実装とパフォーマンス

TurboGPTは主に C++ (40.6%) と CUDA (38.5%) で書かれており、検証テストには Python を使用しています。NVIDIA GPUに特化しており、Windowsビルドには CUDA 13.4 と Visual Studio 2022 C++ ツールが必要です。Linux/NixOSビルドには Nix が必要です。

主な技術的特徴は以下の通りです:

  • バイトレベルの訓練: モデルはサブワードトークンではなくバイトを扱います。
  • 回転位置埋め込み (RoPE): 最近のコードベースの更新により、学習された位置情報が部分的 RoPE に置き換えられ、位置符号化が改善されました。
  • PyTorch互換性: システムは torch.load と互換性のあるフォーマットでチェックポイントを生成し、モデル、オプティマイザ、スケジューラ、トレーナーの状態を含みます。
  • 可視性: 訓練ログは TensorBoard と互換性があり、バッチごとにレポートが生成され、最大 800万件まで制限されています。

パフォーマンス面では、15億トークンの訓練後、hn1g データセットで 2.5295 BPB (バイトあたりビット) の結果を報告しています。

ビルドと実行ワークフロー

TurboGPTは特定の計算能力 (CudaArch) を持つGPUを必要とします。ユーザーは以下の方法でプロジェクトをビルドできます:

  • Linux/NixOS: nix-build -o build/nix-result を使用。
  • Windows: .uild.ps1 -CudaArch <arch> を使用し、<arch> にはGPUの計算能力に対応する値を指定します。

訓練を実行するには、データファイルとログディレクトリを指定します: .uild\turbogpt.exe --data hn1g.txt --log-to runs/ctx4

以前の状態から訓練を再開するには、--load CHECKPOINT.pt フラグを使用できます。

コミュニティの議論と批判

このプロジェクトは技術的な高速性を示していますが、Hacker Newsでのコミュニティのフィードバックは、こうした「小型」実装の実用性についての議論を引き起こしています。

ある参加者が、これらのプロジェクトの増加について疑問を呈しました:

これまでも百個以上見てきましたが、それぞれのプロジェクトはアンドレイ・カーパティが人々にGPTの構成要素を教えるために作ったものよりも劣っており、学習価値も低いと思います

他の技術的観察では、モデルをディスクサイズ(例:22KiB)で分類する傾向に対する批判があり、また、このような小さな規模では、反復的勾配降下よりも従来の最適化問題(例:KKT条件)がより適している可能性があるとの提案がありました。

Sources

関連

  • プロジェクト
  • Dispatch
  • Dispatch
  • プロジェクト
  • Dispatch