
nanochat
Andrej Karpathy · その他 · チャットボット
nanochatはAndrej KarpathyによるオープンソースのフルスタックLLMトレーニングフレームワークで、ChatGPTスタイルの言語モデルをゼロから構築する。トークン化と事前学習から、ファインチューニング、評価、推論まで、パイプライン全体を約8,000行の単一コードベースに収めている。GPUノードを1台借りてスクリプトを走らせれば、数時間後には訓練したばかりのモデルとWebインターフェースかコマンドラインで会話できる。

nanochat について
nanochatとは
nanochatは、大規模言語モデルを訓練するための最もシンプルな実験環境だ。単一のGPUノード向けに作られ、コードは最小限で改造しやすく、LLMの主要な段階をすべて辿る。トークン化、事前学習、中間訓練、教師ありファインチューニング、任意の強化学習、評価、推論である。Karpathyはこれを「100ドルで買える最高のChatGPT」と呼ぶ。
狙いはフロンティアモデルと競うことではない。数時間訓練したnanochatのモデルは小さくて物珍しい存在で、基本的な会話を交わし、物語を語り、簡単な質問に答える。代わりに得られるのは、実際に理解して変更できる、完全で読みやすい訓練パイプラインだ。だからこそKarpathyのLLM101nコースの集大成プロジェクトになりつつある。
正直な限界もある。これは学習と研究のためのツールであり、本番用のモデルではない。Karpathy自身、自分の文章でファインチューニングすることは勧めていない。これほど小さなモデルは表面的なスタイルを模倣するだけで、一流のLLMが持つ深い推論はつかめない。それを求めるなら、Llama 3のようなより大きなオープンモデルをファインチューニングするか、より大きなシステムで検索を使うほうがよい。
はじめかた
- 単一の8XH100ノードを備えたクラウドGPUサーバーを立ち上げる(市場価格は1時間あたり約24ドル)。
- GitHubからリポジトリをクローンし、まだなければプロジェクト管理ツール
uvをインストールする。 - スクリプト
runs/speedrun.shを実行する。データ準備、訓練、ファインチューニングを端から端まで処理する。 - 数時間待つ。スクリプトはGPT-2級のモデルを訓練し、そのスコアを報告する。
- WebサーバーかCLIを起動し、訓練したばかりのモデルと会話する。
AIツール情報
nanochatの料金、対応プラットフォーム、性能を簡単に確認できます。
こんな人におすすめ
このツールが最も力を発揮するユーザー、タスク、シーン。
ユーザー
- 機械学習の学生:nanochatはLLM訓練の各段階を一箇所で見る最速の方法だ。基本的なPythonとLinuxターミナルへの慣れが必要になる。
- 研究者や趣味の人:コードが短く半日で読めるため、訓練アイデアを試す安価な土台として機能する。
- 独自モデルを探る小規模チーム:クラスタを借りる代わりに、数百ドルで実験を立ち上げられる。
タスク
- GPT-2級の言語モデルを訓練する:nanochatのspeedrunはGPT-2の再現として機能し、モデルを生データから動くチャットボットへ数時間で導く。
- LLMのパイプラインを学ぶ:トークン化、事前学習、ファインチューニング、RL、推論がすべて同じリポジトリにある。
- 訓練の調整を比較する:プロジェクトはGPT-2までの実時間のリーダーボードを維持しており、自分の変更を参照実行と比べられる。
シーン
- 初めてのエンドツーエンドの訓練ジョブを走らせる:分散クラスタは不要で、GPUノード1台で済む。
- 授業やワークショップを開く:受講者は単一のスクリプトで構築の全過程を追える。
- 週末の実験:小さなモデルを訓練し、結果を眺め、変更が何をもたらすかを見る。
主な機能
1本のスクリプトでパイプライン全体
nanochatのspeedrunは、まっさらなサーバー上で全過程をつなぐ。データを準備し、トークナイザーを訓練し、transformerを事前学習し、中間訓練とファインチューニングを走らせ、会話できるモデルを生み出す。1つのコマンドが、分断されたツールの寄せ集めを置き換える。すべてを単一リポジトリに保ち、各プロジェクトに散らさない理由はまさにそこにある。
深さのダイヤル
nanochatは、--depthという1つの設定(transformerの層数)を変えるだけで、計算最適なモデル群を丸ごと訓練できるようにできている。幅、アテンションヘッド、学習率スケジュール、訓練の期間など、それ以外はすべて自動で計算される。GPT-2級が欲しいなら、深さを26に設定する。GPT-2の能力はおおよそそこに落ち着く。
Rustのトークナイザーとクリーンなデータ準備
トークナイザーは速度のためRustでゼロから書かれており、データパイプラインはFineWeb-Eduデータセットの一部をストリーミング用の軽量なParquetファイルに詰め直す。華のない配管作業だ。だが多くのチュートリアルが飛ばす部分であり、ここでは完全に揃っている。
Web UI付きの推論エンジン
訓練は、実際に使えるものへと終わる。nanochatはKVキャッシュを備えた効率的な推論エンジンを同梱し、CLIとChatGPT風のWebインターフェースも用意する。ツール呼び出し用の軽量なPythonサンドボックスもあり、モデルはコードを実行しようとする。この最後の点はいい味付けだ。
任意のRL段階
教師ありファインチューニングに加えて、GSM8K数学データセットでGRPOアルゴリズムを使った任意の強化学習段階を実行できる。中心的な要件ではなく追加段階だが、採点可能なタスクで小さなモデルをどこまで押し上げられるかを示す。研究が推論や数学に触れるなら、これは実に役立つ。
Markdownの成績表
訓練後、nanochatは実行を要約する1つのMarkdown成績表を生成する。スコアカードのように読め、モデルの規模、訓練時間、MMLU、ARC-Easy、GSM8Kといったベンチマークでの結果を網羅する。これで比較が楽になる。手元に残しておこう。
MITライセンスで改造しやすい
プロジェクト全体はMITライセンスで公開され、約8,000行、大半はPythonで少しRustが混ざる。コードは読み、フォークし、改変するためのものだ。Karpathyが大半を手で書き、構造は低層に近いままなので、いじり始めたときに足をすくう隠れた仕掛けはほとんどない。
メリットとデメリット
メリット
- トークナイザーからチャットUIまで、LLMのパイプライン全体を小さな1つのリポジトリに収める。
- GPT-2級のモデルを約100ドルのGPUレンタルで訓練でき、2019年のコストをはるかに下回る。
- GPUノード1台で済むため、分散訓練の複雑さを避けられる。
- MITライセンスと読みやすいコードにより、フォークして自分の実験に合わせやすい。
- 同じタスクを他者がどこまで速く進めたかを示す、稼働中のspeedrunリーダーボードを維持する。
デメリット
- 本番用のモデルではない。学習用の小さなモデルが出てくるだけで、GPT-4やClaudeのライバルではないため、磨かれた回答は期待できない。
- 本物のGPUハードウェアかクラウドアカウントは依然として必要で、ノートPCやスマホで訓練を走らせる方法はない。
- 個人的な文体に合わせてファインチューニングしてもうまくいかない。土台のモデルが小さすぎて、表面的なパターン以上を吸収できないからだ。
- セットアップにはLinux、Python、コマンドラインへの一定の慣れが前提となり、非技術系のユーザーは締め出される。
よくある質問
nanochatは、小さなChatGPT風の言語モデルをゼロから訓練し動かすために使う。LLMの仕組みを端から端まで学び、訓練アイデアを安く試し、1本のスクリプトから動くチャットボットを作るために使われる。
関連コンテンツ
nanochatに関連するツール、スキル、記事を探す。
nanochatの代替ツール

Odyssey 3
Odyssey · その他Odyssey-3はOdysseyの基盤ワールドモデルだ。物理をリアルタイムにシミュレーションし、プロンプトからインタラクティブな環境を生成して、ロボットや車、ゲームに適応する。
JarvisCore
Prescott Data · コーディング · 生産性向上 · その他JarvisCore は、AI エージェントが対等なピアとしてメッシュを組み、共有台帳からタスクを引き受け、ゼロトラストのブローカー経由で外部サービスを呼ぶオープンソースの Python ランタイムである。
Clef
Cloudflare · ビジネス · その他Clef は Workers AI で動く Cloudflare のオープンソース意思決定モデルだ。生成テキストではなく、型付きの設問に確率を返す。エージェントは素早く分類し、振り分け、行動できる。
