nanogpt
約300行で実装された学習用のGPTコードで、OpenWebTextデータセットを使用してGPT-2(124Mパラメータ)を再現します。Andrej Karpathyによる、シンプルでカスタマイズしやすい構成のため、Transformerアーキテクチャをゼロから理解するのに最適です。シェイクスピアデータセット(CPU)やOpenWebText(マルチGPU)を使ったトレーニングにも対応しています。
description の原文を見る
Educational GPT implementation in ~300 lines. Reproduces GPT-2 (124M) on OpenWebText. Clean, hackable code for learning transformers. By Andrej Karpathy. Perfect for understanding GPT architecture from scratch. Train on Shakespeare (CPU) or OpenWebText (multi-GPU).
SKILL.md 本文
nanoGPT - ミニマリスト GPT トレーニング
クイックスタート
nanoGPT は、学習と実験向けに設計された簡略版 GPT 実装です。
インストール:
pip install torch numpy transformers datasets tiktoken wandb tqdm
Shakespeare でトレーニング (CPU フレンドリー):
# データを準備
python data/shakespeare_char/prepare.py
# トレーニング (CPU で 5 分)
python train.py config/train_shakespeare_char.py
# テキスト生成
python sample.py --out_dir=out-shakespeare-char
出力例:
ROMEO:
What say'st thou? Shall I speak, and be a man?
JULIET:
I am afeard, and yet I'll speak; for thou art
One that hath been a man, and yet I know not
What thou art.
一般的なワークフロー
ワークフロー 1: 文字レベルの Shakespeare
完全なトレーニングパイプライン:
# ステップ 1: データを準備 (train.bin, val.bin を作成)
python data/shakespeare_char/prepare.py
# ステップ 2: 小さいモデルをトレーニング
python train.py config/train_shakespeare_char.py
# ステップ 3: テキスト生成
python sample.py --out_dir=out-shakespeare-char
設定 (config/train_shakespeare_char.py):
# モデル設定
n_layer = 6 # 6 個のトランスフォーマーレイヤー
n_head = 6 # 6 個のアテンションヘッド
n_embd = 384 # 384 次元の埋め込み
block_size = 256 # 256 文字のコンテキスト
# トレーニング設定
batch_size = 64
learning_rate = 1e-3
max_iters = 5000
eval_interval = 500
# ハードウェア
device = 'cpu' # または 'cuda'
compile = False # PyTorch 2.0 では True に設定
トレーニング時間: 約 5 分 (CPU)、約 1 分 (GPU)
ワークフロー 2: GPT-2 (124M) を再現
OpenWebText でのマルチ GPU トレーニング:
# ステップ 1: OpenWebText を準備 (約 1 時間かかります)
python data/openwebtext/prepare.py
# ステップ 2: DDP で GPT-2 124M をトレーニング (8 GPU)
torchrun --standalone --nproc_per_node=8 \
train.py config/train_gpt2.py
# ステップ 3: トレーニング済みモデルからサンプリング
python sample.py --out_dir=out
設定 (config/train_gpt2.py):
# GPT-2 (124M) アーキテクチャ
n_layer = 12
n_head = 12
n_embd = 768
block_size = 1024
dropout = 0.0
# トレーニング
batch_size = 12
gradient_accumulation_steps = 5 * 8 # 総バッチサイズ ~0.5M トークン
learning_rate = 6e-4
max_iters = 600000
lr_decay_iters = 600000
# システム
compile = True # PyTorch 2.0
トレーニング時間: 約 4 日 (8× A100)
ワークフロー 3: 事前学習済み GPT-2 をファインチューン
OpenAI チェックポイントから開始:
# train.py または設定ファイル内
init_from = 'gpt2' # オプション: gpt2, gpt2-medium, gpt2-large, gpt2-xl
# モデルが OpenAI の重みを自動的に読み込みます
python train.py config/finetune_shakespeare.py
設定例 (config/finetune_shakespeare.py):
# GPT-2 から開始
init_from = 'gpt2'
# データセット
dataset = 'shakespeare_char'
batch_size = 1
block_size = 1024
# ファインチューニング
learning_rate = 3e-5 # ファインチューニング用に低めの学習率
max_iters = 2000
warmup_iters = 100
# 正則化
weight_decay = 1e-1
ワークフロー 4: カスタムデータセット
独自のテキストでトレーニング:
# data/custom/prepare.py
import numpy as np
# データを読み込み
with open('my_data.txt', 'r') as f:
text = f.read()
# 文字マッピングを作成
chars = sorted(list(set(text)))
stoi = {ch: i for i, ch in enumerate(chars)}
itos = {i: ch for i, ch in enumerate(chars)}
# トークン化
data = np.array([stoi[ch] for ch in text], dtype=np.uint16)
# 訓練/検証に分割
n = len(data)
train_data = data[:int(n*0.9)]
val_data = data[int(n*0.9):]
# 保存
train_data.tofile('data/custom/train.bin')
val_data.tofile('data/custom/val.bin')
トレーニング:
python data/custom/prepare.py
python train.py --dataset=custom
使用時期と代替案
nanoGPT を使用する場合:
- GPT の仕組みを学習する
- トランスフォーマーバリアントを実験する
- 教育/学習目的
- 高速プロトタイピング
- コンピュートが限定的 (CPU で実行可能)
シンプルさの利点:
- 約 300 行:
model.py内の全モデル - 約 300 行:
train.py内のトレーニングループ - ハッカブル: 変更が簡単
- 抽象化なし: 純粋な PyTorch
代わりに別の選択肢を使用する場合:
- HuggingFace Transformers: 本番環境での使用、多数のモデル
- Megatron-LM: 大規模な分散トレーニング
- LitGPT: より多くのアーキテクチャ、本番対応
- PyTorch Lightning: 高レベルフレームワークが必要
よくある問題
問題: CUDA のメモリ不足
バッチサイズまたはコンテキスト長を削減:
batch_size = 1 # 12 から削減
block_size = 512 # 1024 から削減
gradient_accumulation_steps = 40 # 有効バッチを維持するために増加
問題: トレーニングが遅い
コンパイルを有効化 (PyTorch 2.0+):
compile = True # 2 倍の高速化
混合精度を使用:
dtype = 'bfloat16' # または 'float16'
問題: 生成の品質が低い
より長くトレーニング:
max_iters = 10000 # 5000 から増加
温度を低下:
# sample.py 内
temperature = 0.7 # 1.0 から低下
top_k = 200 # Top-K サンプリングを追加
問題: GPT-2 の重みが読み込めない
transformers をインストール:
pip install transformers
モデル名を確認:
init_from = 'gpt2' # 有効な値: gpt2, gpt2-medium, gpt2-large, gpt2-xl
高度なトピック
モデルアーキテクチャ: references/architecture.md を参照して、GPT ブロック構造、マルチヘッドアテンション、MLP レイヤーについてシンプルに解説しています。
トレーニングループ: references/training.md を参照して、学習率スケジュール、勾配蓄積、分散データパラレルセットアップについて説明しています。
データ準備: references/data.md を参照して、トークン化戦略 (文字レベル vs BPE) とバイナリフォーマットの詳細について説明しています。
ハードウェア要件
-
Shakespeare (文字レベル):
- CPU: 5 分
- GPU (T4): 1 分
- VRAM: <1GB
-
GPT-2 (124M):
- 1× A100: 約 1 週間
- 8× A100: 約 4 日
- VRAM: GPU あたり約 16GB
-
GPT-2 Medium (350M):
- 8× A100: 約 2 週間
- VRAM: GPU あたり約 40GB
パフォーマンス:
compile=Trueを使用: 2 倍の高速化dtype=bfloat16を使用: 50% のメモリ削減
リソース
- GitHub: https://github.com/karpathy/nanoGPT ⭐ 48,000+
- ビデオ: Andrej Karpathy による「Let's build GPT」
- 論文: 「Attention is All You Need」(Vaswani et al.)
- OpenWebText: https://huggingface.co/datasets/Skylion007/openwebtext
- 教育: トランスフォーマーをゼロから理解するのに最適
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- davila7
- ライセンス
- MIT
- 最終更新
- 不明
Source: https://github.com/davila7/claude-code-templates / ライセンス: MIT
関連スキル
agent-browser
AI エージェント向けのブラウザ自動化 CLI です。ウェブサイトとの対話が必要な場合に使用します。ページ遷移、フォーム入力、ボタンクリック、スクリーンショット取得、データ抽出、ウェブアプリのテスト、ブラウザ操作の自動化など、あらゆるブラウザタスクに対応できます。「ウェブサイトを開く」「フォームに記入する」「ボタンをクリックする」「スクリーンショットを取得する」「ページからデータを抽出する」「このウェブアプリをテストする」「サイトにログインする」「ブラウザ操作を自動化する」といった要求や、プログラマティックなウェブ操作が必要なタスクで起動します。
anyskill
AnySkill — あなたのプライベート・スキルクラウド。GitHubを基盤としたリポジトリからエージェントスキルを管理、同期、動的にロードできます。自然言語でクラウドスキルを検索し、オンデマンドでプロンプトを自動ロード、カスタムスキルのアップロードと共有、スキルバンドルの一括インストールが可能です。OpenClaw、Antigravity、Claude Code、Cursorに対応しています。
engram
AIエージェント向けの永続的なメモリシステムです。バグ修正、意思決定、発見、設定変更の後はmem_saveを使用してください。ユーザーが「覚えている」「記憶している」と言及した場合、または以前のセッションと重複する作業を開始する際はmem_searchを使用します。セッション終了前にmem_session_summaryを使用して、コンテキストを保持してください。
skyvern
AI駆動のブラウザ自動化により、任意のウェブサイトを自動化できます。フォーム入力、データ抽出、ファイルダウンロード、ログイン、複数ステップのワークフロー実行など、ユーザーがウェブサイトと連携する必要があるときに使用します。Skyvernは、LLMとコンピュータビジョンを活用して、未知のサイトも自動操作可能です。Python SDK、TypeScript SDK、REST API、MCPサーバー、またはCLIを通じて統合できます。
pinchbench
PinchBenchベンチマークを実行して、OpenClawエージェントの実世界タスクにおけるパフォーマンスを評価できます。モデルの機能テスト、モデル間の比較、ベンチマーク結果のリーダーボード提出、またはOpenClawのセットアップがカレンダー、メール、リサーチ、コーディング、複数ステップのワークフローにどの程度対応しているかを確認する際に使用します。
openui
OpenUIとOpenUI Langを使用してジェネレーティブUIアプリを構築できます。これらはLLM生成インターフェースのためのトークン効率的なオープン標準です。OpenUI、@openuidev、ジェネレーティブUI、LLMからのストリーミングUI、AI向けコンポーネントライブラリ、またはjson-render/A2UIの置き換えについて述べる際に使用します。スキャフォルディング、defineComponent、システムプロンプト、Renderer、およびOpenUI Lang出力のデバッグに対応しています。