このプロジェクトについて

nanoGPTは、中規模のGPT(Generative Pre-trained Transformer)モデルのトレーニングおよびファインチューニング向けの軽量で高性能なリポジトリです。minGPTを書き直したもので、コードの簡潔さと読みやすさを保ちながら実用的なパフォーマンスを重視して再設計されています。 主な機能: - **トレーニング**:コアの`train.py`スクリプト(約300行)は完全なトレーニングループを実装しており、PyTorch DDPを使用して単一の8x A100 40GBノードでOpenWebText上でのGPT-2 (124M)を約4日で再現します。 - **ファインチューニング**:OpenAIのGPT-2チェックポイント(gpt2, gpt2-medium, gpt2-large, gpt2-xl)から初期化し、シェークスピアテキストなどのカスタムデータセットでファインチューニング可能です。 - **サンプリング/推論**:`sample.py`スクリプトにより、設定可能なプロンプト、サンプル数、トークン制限を使って学習済みまたはプリトレーニング済みモデルからテキストを生成できます。 - **効率性**:PyTorch 2.0の`torch.compile()`をデフォルトで使用し、大幅な速度向上を実現(例:A100でのイテレーション時間を約250msから約135msに短縮)。 - **マルチGPU/マルチノード**:`torchrun`による分散トレーニングに対応し、マルチノード構成もサポート。 - **柔軟な設定**:ハイパーパラメータは`config/`ディレクトリ内の設定ファイルまたはコマンドライン引数で調整可能。 - **CPU/MPS対応**:実験用のCPU対応に加え、Apple Silicon上のMetal Performance Shaders(MPS)で2〜3倍の加速を実現。 典型的なワークフローとしては、単一GPUでシェークスピアデータのキャラクターレベルGPTを数分で学習させたり、大規模ハードウェアでOpenWebText上のGPT-2ベンチマークを再現したりすることが挙げられます。 依存関係:PyTorch、NumPy、Hugging Face transformers、datasets、tiktoken、wandb、tqdm。 注:2025年11月現在、nanoGPTはnanochatに置き換えられ非推奨となっていますが、参考として保持されています。