概要
- nanocode は、自作のClaude Codeエージェントをエンドツーエンドで訓練できるJAX製ライブラリ
- Constitutional AI を活用し、AnthropicのClaudeモデルに近い訓練アプローチを採用
- The Stack-V2 等の追加データを使い、コード生成性能を強化
- TPU最適化 設計だが、NVIDIA GPUでも動作可能
- エージェント的コーディング行動 を実現するためのテンプレートやツールコール設計が特徴
nanocode: Claude Codeエージェント訓練ライブラリ概要
- nanocode は、 JAX で書かれたClaude Code風エージェント訓練用のライブラリ
- nanochat (Andrej Karpathy作)を基盤に設計思想やインフラを継承
- nanochat利用経験者には 馴染みやすい設計
- Constitutional AI を活用したシンプルな訓練手法を採用
- SOUL.md の自作、エージェントインターフェース定義、合成データ生成、preference optimizationによるアラインメント
- TPU最適化 設計
- Google TRCプログラム 等で1ヶ月無料TPU利用可能
- TPU v6e-8でd24(1.3Bパラメータ)モデルを約9時間/$200で再現可能
- NVIDIA GPUでも動作するが、TPU向けに最適化
データセットとトークナイザー設計
- The Stack-V2 等の追加コードデータを1:5の比率で混合
- FineWeb-EDU と組み合わせてトークナイザー訓練・事前学習
- コードデータを増やすことで コードトークン化効率と生成性能が向上
- トークナイザー訓練例:
- データセットのダウンロードと事前学習
python -m data.pretrain -d fineweb-edu -n 300python -m data.pretrain -d the-stack-v2-dedup -n 60
- トークナイザー訓練
python -m scripts.tok_train --max-chars=2000000000python -m scripts.tok_eval
- データセットのダウンロードと事前学習
- nanochatとの比較
- コード領域でのトークン効率が大幅向上
- 一般テキスト効率は低下するが、 コーディング特化モデル に最適化
モデル訓練と評価
- パラメータ:データ比率8:1 で訓練(nanochatのスケーリング法則に準拠)
- 訓練コマンド例:
python -u -m scripts.base_train --batch-size=32 --minibatch-size=1 --config=configs.d24 --eval-every=500 --sample-every=500
- 評価指標:
- CORE metric、 bits-per-byte (bpb) でnanochatやGPT-2と比較
- コードデータ優先設計のため、COREスコアはGPT-2よりやや低め
- スケーリング例:
- d12(135Mパラメータ): $3/9分
- d20(477Mパラメータ): $30/1.4時間
- d24(1.3Bパラメータ): $200/9.3時間
エージェント的行動のためのテンプレート設計
- チャットテンプレート
- 会話ターンを特殊トークンで明示
- 例:
<|user_start|>質問<|user_end|> <|assistant_start|>回答<|assistant_end|>
- 例:
- 会話ターンを特殊トークンで明示
- ツールコールテンプレート
- エージェントが外部ツールを呼び出す際の構造を定義
- 例:
<|tool_call_start|>Bash<|tool_arg|>command<|tool_val|>grep -rn "TODO" src/<|tool_call_end|>
- 例:
- Read/Edit/Grep/Bash 等の専用ツール呼び出しトークンを用意
- エージェントが外部ツールを呼び出す際の構造を定義
- CLIインターフェース
- モデルが出力したトークンをパースし、ツールコール部分を実行
- 結果をモデルへの“会話ターン”としてフィードバック
nanocodeとnanochatの主な違い・特徴
- nanochat とほぼ同様のコマンド・インフラ
- コード生成・エージェント的行動 に最適化したデータ/テンプレート設計
- 4096トークン の長い文脈長対応(nanochatは2048)
- SOUL.md や専用ツール設計でエージェント性を強化
まとめ
- nanocode は、 エージェント的コーディングAI の訓練を手軽に再現可能なJAXライブラリ
- TPU/GPU両対応 だが、TPUで最大効率
- コード領域特化 のトークナイザー・データ設計
- テンプレート・ツールコール でエージェント性を表現
- nanochatユーザー にも使いやすい設計とドキュメント