概要
nanochat は、約 $100 で構築できるChatGPT風LLMの フルスタック実装。 依存性が少なく、1台の8XH100ノード上で 学習から推論、Web UI提供まで 一括実行。 低コスト・短時間 で自分専用のLLMを体験可能。 拡張性・可搬性 が高く、教育用途や研究にも最適。 簡潔でハックしやすいコードベース が特徴。
nanochatとは
- 低コストLLM構築 を目指したChatGPT風AIチャットボット実装
- 依存性が少なく、全工程を 1台の8XH100ノード で完結
- スクリプト(speedrun.sh)一発 で、 トークナイズ・事前学習・微調整・評価・推論・Web UI提供 まで自動化
- Eureka Labs によるLLM101nコースの 最終課題 として開発
クイックスタート
- 8XH100ノード(例:Lambda)を用意し、 speedrun.sh で全自動パイプライン実行
- 実行例:
bash speedrun.sh- スクリーンセッション利用:
screen -L -Logfile speedrun.log -S speedrun bash speedrun.sh
- 4時間程度 で学習・推論まで完了
- 完了後、 Web UI で自作LLMと対話可能
- 仮想環境有効化:
source .venv/bin/activate - サーバ起動:
python -m scripts.chat_web - 指定URL(例:http://209.20.xxx.xxx:8000/)にアクセス
- 仮想環境有効化:
モデルの規模と性能
- $100ティア: 約4e19FLOPs、幼稚園児レベルの対話能力
- $300ティア(d26モデル): 12時間学習、GPT-2 COREスコアを僅かに上回る性能
- $1000ティア: 約41.6時間学習、現状は未サポート
- 学習データやバッチサイズ の調整で大規模モデルにも対応可能
- 例:
--depth=26、--device_batch_size=16など
- 例:
- VRAM不足時 はバッチサイズを適宜減少
実行環境と柔軟性
- Ampere 8XA100ノード でも動作(速度は低下)
- 単一GPU でも動作可能(8倍時間がかかる)
- PyTorchベース で、xpu/mps等にも対応(要調整)
- 80GB未満のGPU では
--device_batch_sizeを減らすことで対応
レポート・評価指標
- 実行後、 report.md に評価指標・メトリクスが自動生成
- 例:
- Characters, Lines, Files, Tokens, Dependencies
- 各種ベンチマーク(ARC, GSM8K, HumanEval, MMLU, ChatCOREなど)
質問・ドキュメント活用
- コード全体を1ファイルにパッケージ化 し、他LLMに質問可能
- 例:
files-to-prompt . -e py -e md ... > packaged.txt
- 例:
- DeepWiki でリポジトリを直接検索・質問可能
- URLの
github.comをdeepwiki.comに変更
- URLの
テスト・コントリビュート
- テストコード も一部用意(例: tokenizerテスト)
- 実行例:
python -m pytest tests/test_rustbpe.py -v -s
- 実行例:
- 貢献歓迎: < $1000予算でのエンドツーエンドLLM強化が目標
- シンプルで可読性重視のコードベース
- 巨大な設定ファイルや複雑な分岐は排除
謝辞・ライセンス
- nanoGPT や modded-nanoGPT から着想・実装を一部拝借
- HuggingFace, Lambda, Alec Radford 等への感謝
- MITライセンス で公開
- 論文引用例あり