SmolGPT: 小さなLLMをゼロから訓練するための最小限のPyTorch実装
(github.com/Om-Alve)- 教育目的で設計されたPyTorchベースのシンプルなLLM訓練プロジェクトで、効率的な訓練と最新のサンプリング手法を適用
Features
- 最小コードベース: PyTorchで実装されており、複雑な抽象化がない
- 最新アーキテクチャ: GPTモデルで、Flash Attention、RMSNorm、SwiGLU、効率的なサンプリング手法を含む
- 訓練機能:
- 混合精度 (bfloat16/float16)
- 勾配累積
- ウォームアップによる学習率減衰
- 重み減衰および勾配クリッピング
- データセット対応: TinyStoriesデータセット処理を内蔵
- カスタムトークナイザー: SentencePieceトークナイザー訓練を統合
インストール
- Python 3.8+
- PyTorch 2.0+ および CUDA
- 最新のGPUを推奨
クイックスタート 🚀
オプション 1: フル訓練サイクル
- データセットの準備
- 訓練開始
- テキスト生成
オプション 2: 事前訓練済みモデルを使用
- アセットをダウンロード
- 推論を実行
事前訓練済みモデルの詳細
- TinyStoriesデータセットで訓練済み
- 語彙数4096トークン、8ヘッド、8層トランスフォーマー、埋め込み次元512
- 約4億トークンで18.5時間訓練
- 検証損失: 1.0491
訓練環境の仕様
- GPU: NVIDIA L4 Tensor Core
- vCPUs: 16
- RAM: 64 GB
- VRAM: 24 GB
参考: この実装は教育目的で、現代のLLM訓練プラクティスを参考に作られている。本番環境ではモデルサイズとデータセットを拡張することが推奨される。
1件のコメント
Hacker Newsのコメント
あるユーザーは、GPTの実装をCで進める中で、メモリ管理とデータ管理の重要性を学んだと述べている。そのプロジェクトは約1500行のコードで構成されており、GitHubリンクも共有している
別のユーザーは、
numpyを使って自力で実装するのが次のステップだと説明している。強力な抽象化を使って始め、その後徐々に抽象化を取り除くことで、システムを完全に理解できると強調しているGoogle Colabノートブックを使い、A100 GPUで約2時間かかるプロジェクトが共有されている。無料アカウントでも動作する可能性があると言及している
GitHubには、Andrej KarpathyのnanoGPTのような複数のプロジェクトがあり、MoEが実装された別のプロジェクトもあると説明している
あるユーザーは、特定のモデルを特定のデータセットで学習させ、その結果をテストできるかどうかを質問している。オープンソースのプロジェクトを探しており、GPUが使えるかどうかを示し、CPUで代替できるDockerコンテナを望んでいると述べている
別のユーザーは、自作のマルチチャネルトークナイザーを使って実装した話を共有している。主人公の名前が頻繁に繰り返されるため、バグがあるのではないかと疑っていると述べている
Om Alveは、投稿がバイラルになり、その努力に価値があったことへの感謝を伝えている
この技術が数百行のコードで実装できる点が興味深いと言及している。最先端モデルのコード行数を推測してみてはと提案している
SmolLMとは関係がないと述べつつ、HuggingFaceのブログリンクを共有している
学習用データセットの例やユースケースについて共有してもらえるかと質問している