mirror of
https://github.com/karpathy/nanochat.git
synced 2025-12-06 04:12:13 +00:00
Add Kiro steering documents for project context
- product.md: Project overview and value proposition - tech.md: Technology stack and development standards - structure.md: Directory patterns and naming conventions 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
e1e836763e
commit
86a6cf6668
25
.kiro/steering/product.md
Normal file
25
.kiro/steering/product.md
Normal file
|
|
@ -0,0 +1,25 @@
|
||||||
|
# Product Overview
|
||||||
|
|
||||||
|
nanochat は、単一の 8xH100 GPU ノードで約 $100 ~ $1000 の予算内で動作する、フルスタックの ChatGPT クローンです。Andrej Karpathy 氏による LLM101n コースのキャップストーンプロジェクトとして設計されています。
|
||||||
|
|
||||||
|
## Core Capabilities
|
||||||
|
|
||||||
|
1. **End-to-End LLM パイプライン**: トークナイザ学習 → 事前学習 → 中間学習 → SFT → RL → 推論 → Web UI まで一貫して実行
|
||||||
|
2. **ミニマル・ハッカブル**: 依存関係を最小限に抑え、単一のコードベースで全プロセスを実現
|
||||||
|
3. **スケーラブル**: $100 (4時間) から $1000 (41時間) まで、予算に応じたモデルサイズ選択
|
||||||
|
4. **評価レポート**: 自動生成される report.md で CORE, ARC, GSM8K, HumanEval, MMLU 等のベンチマーク結果を確認可能
|
||||||
|
|
||||||
|
## Target Use Cases
|
||||||
|
|
||||||
|
- LLM の仕組みを学習したい研究者・学生
|
||||||
|
- 自分だけの ChatGPT クローンを一から構築したいエンジニア
|
||||||
|
- マイクロモデルの限界と可能性を探求する実験
|
||||||
|
|
||||||
|
## Value Proposition
|
||||||
|
|
||||||
|
- **完全な所有権**: 全プロセスを自分でコントロール・カスタマイズ可能
|
||||||
|
- **教育的価値**: 複雑なフレームワークなしで LLM の全体像を理解
|
||||||
|
- **実践的**: 実際に動作する ChatGPT 風 Web UI で対話可能
|
||||||
|
|
||||||
|
---
|
||||||
|
_Focus on patterns and purpose, not exhaustive feature lists_
|
||||||
80
.kiro/steering/structure.md
Normal file
80
.kiro/steering/structure.md
Normal file
|
|
@ -0,0 +1,80 @@
|
||||||
|
# Project Structure
|
||||||
|
|
||||||
|
## Organization Philosophy
|
||||||
|
|
||||||
|
フラットで見通しの良い構造。機能別ディレクトリではなく、役割別にシンプルに分割。「フレームワーク」ではなく「ベースライン実装」として設計。
|
||||||
|
|
||||||
|
## Directory Patterns
|
||||||
|
|
||||||
|
### nanochat/ (コアライブラリ)
|
||||||
|
**Location**: `/nanochat/`
|
||||||
|
**Purpose**: 学習・推論のコアロジック
|
||||||
|
**Examples**:
|
||||||
|
- `gpt.py` - GPT モデル定義 (Transformer アーキテクチャ)
|
||||||
|
- `tokenizer.py` - トークナイザ抽象化
|
||||||
|
- `dataloader.py` - データローディング
|
||||||
|
- `engine.py` - 学習エンジン
|
||||||
|
- `muon.py`, `adamw.py` - オプティマイザ
|
||||||
|
|
||||||
|
### scripts/ (実行スクリプト)
|
||||||
|
**Location**: `/scripts/`
|
||||||
|
**Purpose**: 学習・評価・推論の実行エントリーポイント
|
||||||
|
**Naming**: `{stage}_{action}.py` パターン
|
||||||
|
- `tok_train.py`, `tok_eval.py` - トークナイザ
|
||||||
|
- `base_train.py`, `base_eval.py`, `base_loss.py` - 事前学習
|
||||||
|
- `mid_train.py` - 中間学習
|
||||||
|
- `chat_sft.py`, `chat_rl.py`, `chat_eval.py` - ファインチューニング
|
||||||
|
- `chat_web.py`, `chat_cli.py` - 推論インターフェース
|
||||||
|
|
||||||
|
### tasks/ (評価タスク)
|
||||||
|
**Location**: `/tasks/`
|
||||||
|
**Purpose**: ベンチマーク評価の実装
|
||||||
|
**Examples**: `arc.py`, `gsm8k.py`, `humaneval.py`, `mmlu.py`
|
||||||
|
|
||||||
|
### rustbpe/ (Rust トークナイザ)
|
||||||
|
**Location**: `/rustbpe/`
|
||||||
|
**Purpose**: 高速 BPE トークナイザ (Rust + PyO3)
|
||||||
|
**Structure**: Cargo プロジェクト形式
|
||||||
|
|
||||||
|
### dev/ (開発用)
|
||||||
|
**Location**: `/dev/`
|
||||||
|
**Purpose**: 開発用スクリプト、リソース
|
||||||
|
|
||||||
|
### tests/ (テスト)
|
||||||
|
**Location**: `/tests/`
|
||||||
|
**Purpose**: pytest テスト
|
||||||
|
|
||||||
|
## Naming Conventions
|
||||||
|
|
||||||
|
- **Files**: snake_case (`chat_web.py`, `base_train.py`)
|
||||||
|
- **Classes**: PascalCase (`GPTConfig`, `CausalSelfAttention`)
|
||||||
|
- **Functions**: snake_case (`apply_rotary_emb`, `norm`)
|
||||||
|
- **Constants**: UPPER_SNAKE_CASE (`SPECIAL_TOKENS`, `SPLIT_PATTERN`)
|
||||||
|
|
||||||
|
## Import Organization
|
||||||
|
|
||||||
|
```python
|
||||||
|
# 標準ライブラリ
|
||||||
|
import os
|
||||||
|
import math
|
||||||
|
|
||||||
|
# サードパーティ
|
||||||
|
import torch
|
||||||
|
import torch.nn as nn
|
||||||
|
|
||||||
|
# プロジェクト内
|
||||||
|
from nanochat.common import get_dist_info, print0
|
||||||
|
from nanochat.gpt import GPT, GPTConfig
|
||||||
|
```
|
||||||
|
|
||||||
|
**Path Aliases**: なし (明示的な相対/絶対パスを使用)
|
||||||
|
|
||||||
|
## Code Organization Principles
|
||||||
|
|
||||||
|
1. **1ファイル1責務**: 各ファイルは単一の明確な目的を持つ
|
||||||
|
2. **設定より規約**: 設定ファイルの山ではなく、コード内で直接設定
|
||||||
|
3. **最小限の抽象化**: 必要以上の抽象化レイヤーを作らない
|
||||||
|
4. **成果物の管理**: 中間ファイルは `~/.cache/nanochat/` に配置
|
||||||
|
|
||||||
|
---
|
||||||
|
_Document patterns, not file trees. New files following patterns shouldn't require updates_
|
||||||
62
.kiro/steering/tech.md
Normal file
62
.kiro/steering/tech.md
Normal file
|
|
@ -0,0 +1,62 @@
|
||||||
|
# Technology Stack
|
||||||
|
|
||||||
|
## Architecture
|
||||||
|
|
||||||
|
単一ノード分散学習を前提とした PyTorch ベースの LLM 実装。シンプルさと可読性を重視し、巨大な設定オブジェクトやモデルファクトリは使用しない。
|
||||||
|
|
||||||
|
## Core Technologies
|
||||||
|
|
||||||
|
- **Language**: Python 3.10+, Rust (トークナイザ)
|
||||||
|
- **Framework**: PyTorch 2.8+ (torchrun による分散学習)
|
||||||
|
- **Web**: FastAPI + Uvicorn (推論 API)
|
||||||
|
- **Build**: uv (パッケージ管理), maturin (Rust-Python バインディング)
|
||||||
|
|
||||||
|
## Key Libraries
|
||||||
|
|
||||||
|
- **datasets**: HuggingFace データセット
|
||||||
|
- **tiktoken / tokenizers**: トークナイザ推論
|
||||||
|
- **rustbpe (内製)**: 高速 BPE トークナイザ学習 (Rust + PyO3)
|
||||||
|
- **wandb**: 実験ログ (オプション)
|
||||||
|
|
||||||
|
## Development Standards
|
||||||
|
|
||||||
|
### Type Safety
|
||||||
|
- 型ヒント推奨、厳密な型チェックは課さない
|
||||||
|
- シンプルさを優先
|
||||||
|
|
||||||
|
### Code Quality
|
||||||
|
- 依存関係最小限 (dependency-lite)
|
||||||
|
- if-then-else の山を避ける
|
||||||
|
- 巨大な設定オブジェクトを作らない
|
||||||
|
|
||||||
|
### Testing
|
||||||
|
- pytest (基本的なテスト、特にトークナイザ)
|
||||||
|
- `python -m pytest tests/test_rustbpe.py -v -s`
|
||||||
|
|
||||||
|
## Development Environment
|
||||||
|
|
||||||
|
### Required Tools
|
||||||
|
- Python 3.10+
|
||||||
|
- Rust (rustbpe ビルド用)
|
||||||
|
- uv (パッケージマネージャ)
|
||||||
|
- CUDA 対応 GPU (本番環境)
|
||||||
|
|
||||||
|
### Common Commands
|
||||||
|
```bash
|
||||||
|
# Setup: uv sync --extra gpu && source .venv/bin/activate
|
||||||
|
# Full run: bash speedrun.sh
|
||||||
|
# Web UI: python -m scripts.chat_web
|
||||||
|
# Test: python -m pytest tests/ -v -s
|
||||||
|
```
|
||||||
|
|
||||||
|
## Key Technical Decisions
|
||||||
|
|
||||||
|
1. **RoPE (Rotary Position Embedding)**: 絶対位置埋め込みの代わりに回転位置埋め込みを使用
|
||||||
|
2. **QK Norm**: Attention の安定化のため Query/Key に正規化を適用
|
||||||
|
3. **ReLU² Activation**: MLP で ReLU² を使用
|
||||||
|
4. **Multi-Query Attention (MQA)**: 推論効率のための KV ヘッド共有
|
||||||
|
5. **Untied Embeddings**: トークン埋め込みと lm_head は重みを共有しない
|
||||||
|
6. **No Bias**: 線形層にバイアスなし
|
||||||
|
|
||||||
|
---
|
||||||
|
_Document standards and patterns, not every dependency_
|
||||||
Loading…
Reference in New Issue
Block a user