
2026/04/05 23:21
**ナノコード:200ドルで購入できる最高のClaudeコード ― TPUs上で動くピュアJAX実装**
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
nanocode は、Constitutional AI を使用して Google TPU 上でエンドツーエンドで Claude‑style コード生成モデルをトレーニングする軽量な JAX ベースのライブラリです。
d24 モデル(1.3 B パラメータ)は、TPU v6e‑8 で約 9 時間で ~US$200 でトレーニングできます;より小さな d20 モデル(477 M パラメータ)は、約 1.5 時間で ~US$34 です。
トレーニングデータは FineWeb_EDU と The Stack‑V2 の 1:5 混合に、約 120 K の単一ターン指示サンプルと約 2 000 の長文コンテキストロールアウト(Read, Edit, Grep, Bash ツール呼び出しを連鎖)を追加したものです。
トークナイザーの学習では、<|user_start/> や <|assistant_end/> といった特殊トークンが追加され、約 2 B の文字で構築されています。
性能: CORE は d24 で 0.227(GPT‑2 XL の 0.257 を上回る)、bits‑per‑byte fwe = 0.759, sv2 = 0.445。
ポストトレーニング評価では、好み精度が 0.45 から 0.88 に上昇し、bits‑per‑byte は安定(≈0.247→0.248)しています。
整合性パイプラインは Constitutional AI を採用しており、合成データ生成 + 批判ループ → 選択/拒否ペア → 監督付きファインチューニング → Direct Preference Optimisation (DPO) により SOUL ボイス(カジュアルでフレンドリー、すべて小文字、指示主導)を強制します。
nanocode の最小構成は 5.5 k 行のコードベースとモジュラー設計により、ツール、SOUL、および合成データパイプラインを簡単にカスタマイズできます。そのエージェント型 CLI(
scripts.nanocode)は TPUs 上でスプラッシュ注意機能付きで実行され、許可後にファイル操作やシェルコマンドのリアルタイム実行が可能です。
将来のイテレーションではツールセットを拡張し、合成データパイプラインを洗練させるか、より大きな TPU へスケールアップすることで、対話型でプロダクション品質のコード生成に低オーバーヘッドを維持できる可能性があります。
本文
Nanocode – 最小限のエージェント型コーディングパートナー
概要
- 目的 – Claude風モデルを使って、エンドツーエンドでエージェント型コーディングを行う
- フレームワーク – JAX(TPU最適化)、Karpathy の nanochat にインスパイア
- 主要構成要素
- SOUL.md – モデルのキャラクターと価値観
- エージェントインターフェース – ツール呼び出し(
,Read
,Edit
,Grep
)Bash - 合成データ生成 – Constitutional AI(SFT + DPO)
はじめに
# Google TRC 経由で無料TPUアクセス (+ $300 クラウドクレジット) export NANOCODE_BASE_DIR="$HOME/.cache/nanocode" export MODEL_TAG=d24 # 他サイズの場合は変更 # トークナイザーとモデル用データを事前学習 python -m data.pretrain -d fineweb-edu -n 300 python -m data.pretrain -d the-stack-v2-dedup -n 60 # トークナイザートレーニング python -m scripts.tok_train --max-chars=2000000000 python -m scripts.tok_eval
学習パイプライン
1. ベースモデル
python -u -m scripts.base_train \ --batch-size=32 \ --minibatch-size=1 \ --config=configs.d24 \ --eval-every=500 \ --sample-every=500
- 結果 – 13億パラメータ、TPU v6e‑8で約9時間(≈$200)。
2. エージェント型 SFT
# ロールアウトをダウンロード export HF_TOKEN=YOUR_HF_TOKEN ROLLOUTS_DIR="$NANOCODE_BASE_DIR/rollouts" hf download smohammadi/nanocode-tulu-selfoss-evol \ --repo-type dataset --local-dir "$ROLLOUTS_DIR/nanocode-tulu-selfoss-evol" hf download smohammadi/nanocode-long-context \ --repo-type dataset --local-dir "$ROLLOUTS_DIR/nanocode-long-context" # 学習 python -u -m scripts.agentic_sft \ --batch-size=32 \ --minibatch-size=1 \ --eval-every=500 \ --sample-every=500
- 出力 – 小文字でツール呼び出しに対応した応答。
3. ダイレクト・プレファレンス最適化(DPO)
# プレファレンスデータをダウンロード hf download smohammadi/nanocode-tulu-selfoss-evol-preference \ --repo-type dataset --local-dir "$ROLLOUTS_DIR/nanocode-tulu-selfoss-evol-preference" hf download smohammadi/nanocode-long-context-preference \ --repo-type dataset --local-dir "$ROLLOUTS_DIR/nanocode-long-context-preference" # 学習 python -u -m scripts.dpo \ --batch-size=32 \ --minibatch-size=1 \ --eval-every=100 \ --sample‑every=100
- 結果 – 精度が 0.45 → 0.88 に向上、bpb の減少はほぼ無視できる。
エージェントを実行
python -m scripts.nanocode --max-tokens=4096 --attn-impl=splash
-
CLI 経由で対話。ツール呼び出しがある場合は承認を求められる。
-
例:
<|bos|><|user_start|> Can you fix the bug in hello.py?<|user_end|>エージェントの応答には
ツール呼び出しが含まれる。Edit
評価とレポート
# ログをローカルへコピー gcloud compute tpus tpu-vm scp \ --zone=europe-west4-a \ --recurse \ nanocode:/users/salmanmohammadi/nanocode/reports/d24 . # Markdown レポートを HTML に変換 brew install pandoc # 未インストールの場合 pandoc d24/report.md -o d24/report.html --standalone open d24/report.html
Nanocode の拡張
- SOUL をカスタマイズ – 新しい性格特性を定義
- ツールを再定義 – ドメイン固有のアクションを追加
- 合成データ生成 – 提供されたパイプライン(
,dev/process_datasets.py
)を利用dev/scenarios_to_rollouts.py - ファインチューニングと再学習 – 上記手順に従い、新しいデータで実施
クイックリファレンス
| ステップ | コマンド | 目的 |
|---|---|---|
| トークナイザー | | ボキャブラリー構築(≈20億文字) |
| ベーストレーニング | | 13億パラメータモデル |
| エージェント型 SFT | | ツール使用を教える |
| DPO | | SOUL に合わせて整合性を取る |
自分だけのエージェント型コーディングパートナーを作り上げてください!