Salesforce、5年間で150億ドルを投資し、サンフランシスコをグローバルAIイノベーションセンターに
nanochat プロジェクト詳細
プロジェクト概要
nanochat は、著名なAI研究者 Andrej Karpathy によって開発されたフルスタック大規模言語モデル(LLM)実装プロジェクトです。その核心となる理念は、最小限のコードと最低限のコストで、ChatGPTのようなチャットボットをゼロから構築する方法を完全に示すことです。
プロジェクトスローガン: "The best ChatGPT that $100 can buy." (100ドルで買える最高のChatGPT)
主要な特徴
1. ミニマリストな設計思想
- 単一で、明確で、最小限で、変更可能なコードベース
- 低依存性設計
- 約8,300行のコード、44ファイル
- 合計約83,497トークン(約334KB)
2. エンドツーエンドの完全なプロセス
nanochat は、LLMを構築するすべての段階をカバーしています。
- Tokenization (トークン化)
- Pretraining (事前学習)
- Finetuning (ファインチューニング)
- Evaluation (評価)
- Inference (推論)
- Web Serving (Webサービス)
3. 低コストなトレーニング
- 基本バージョン($100レベル):8×H100ノードで約4時間で完了
- 中級バージョン($300レベル):約12時間で、GPT-2をわずかに上回る性能
- 上級バージョン($1000レベル):約41.6時間
4. 教育的側面
- Eureka Labs の LLM101n コースの卒業プロジェクトとして設計
- コードは非常に読みやすく、学習と理解が容易
- LLMトレーニングの全プロセスを深く理解したい開発者向け
クイックスタート
高速トレーニングスクリプトの実行
8×H100 GPUノードで実行:
bash speedrun.sh
またはscreenセッションで実行(推奨):
screen -L -Logfile speedrun.log -S speedrun bash speedrun.sh
約4時間待つと、利用可能なLLMモデルが手に入ります。
Webインターフェースの起動
トレーニング完了後、仮想環境をアクティブ化し、サービスを起動します。
source .venv/bin/activate
python -m scripts.chat_web
その後、表示されたURL(例:http://209.20.xxx.xxx:8000/)にアクセスすると、ChatGPTを使うように、自身のLLMと会話できます。
トレーニング結果の例
トレーニング完了後、モデルの評価指標を含む report.md ファイルが生成されます。
Metric | BASE | MID | SFT | RL
---------------|--------|--------|--------|-------
CORE | 0.2219 | - | - | -
ARC-Challenge | - | 0.2875 | 0.2807 | -
ARC-Easy | - | 0.3561 | 0.3876 | -
GSM8K | - | 0.0250 | 0.0455 | 0.0758
HumanEval | - | 0.0671 | 0.0854 | -
MMLU | - | 0.3111 | 0.3151 | -
ChatCORE | - | 0.0730 | 0.0884 | -
Total wall clock time: 3h51m
注: $100でトレーニングされたモデルの性能は限定的(約4e19 FLOPs)で、「幼稚園レベル」の言語能力に相当しますが、完全なトレーニングプロセスを示すには十分です。
より大きなモデルへの拡張
より大きなモデル(GPT-2レベルのd26モデルなど)をトレーニングするには、speedrun.sh にわずかな変更を加えるだけです。
# 1. より多くのデータシャードをダウンロード
python -m nanochat.dataset -n 450 &
# 2. モデルの深さを増やし、メモリに合わせてバッチサイズを減らす
torchrun --standalone --nproc_per_node=8 -m scripts.base_train -- --depth=26 --device_batch_size=16
# 3. 中間トレーニング時も同じ設定を維持
torchrun --standalone --nproc_per_node=8 -m scripts.mid_train -- --device_batch_size=16
実行環境要件
推奨構成
- 8×H100 80GB GPUノード(約$24/時間)
- プロバイダー推奨:Lambda GPU Cloud
互換性
- 8×A100 GPU: 実行可能ですが、速度は遅くなります
- シングルGPU: 実行可能ですが、トレーニング時間は8倍になります
- 小容量VRAM GPU(80GB未満):
--device_batch_sizeパラメータの調整が必要(32から16、8、4、2、または1に) - その他のプラットフォーム: PyTorchベースであり、理論的にはxpu、mpsなどをサポートしますが、追加の設定が必要です。
技術スタック
- 深層学習フレームワーク: PyTorch
- 分散トレーニング: torchrun
- パッケージ管理: uv
- データセット: HuggingFace Fineweb, Smoltalk
- トークナイザー: カスタムRust実装 (rustbpe)
AIとの対話によるコード探索
コードベースが簡潔(約330KB)なため、プロジェクト全体をパッケージ化してLLMに分析させることができます。
files-to-prompt . -e py -e md -e rs -e html -e toml -e sh --ignore "*target*" --cxml > packaged.txt
または DeepWiki を使用して、オンラインで直接コードベースを探索できます。
テスト
プロジェクトには単体テストが含まれており、特にトークナイザーが対象です。
python -m pytest tests/test_rustbpe.py -v -s
プロジェクトの位置付けと目標
nanochatは以下ではありません。
- フル機能のLLMフレームワーク
- 高度に設定可能なモデルファクトリー
- 本番レベルのソリューション
nanochatは以下です。
- 教育目的の参照実装
- 変更可能でフォーク可能な強力なベースライン
- 予算$1000未満のマイクロモデル研究向け
- LLM開発の認知的複雑さを軽減
プロジェクトの歴史と謝辞
インスピレーション源:
- nanoGPT - Karpathyの初期の事前学習プロジェクト
- modded-nanoGPT - ゲーム化されたnanoGPTのバリアント
謝辞:
- HuggingFace - finewebおよびsmoltalkデータセットを提供
- Lambda - 開発に必要な計算能力を提供
- Alec Radford - LLMチーフアドバイザー
オープンソースライセンス
MIT License
引用形式
@misc{nanochat,
author = {Andrej Karpathy},
title = {nanochat: The best ChatGPT that $100 can buy},
year = {2025},
publisher = {GitHub},
url = {https://github.com/karpathy/nanochat}
}
プロジェクトの現状
プロジェクトは現在も活発に開発されており、マイクロモデルの最先端技術を継続的に改善し、より多くの人々が手頃なコストでLLMトレーニングの全プロセスを完全に体験できるようにすることを目指しています。
GitHubアドレス: https://github.com/karpathy/nanochat