project
nanochat - Karpathyによるオープンソース、低コスト、自作のChatGPTフルスタックプロジェクト
nanochatは、AI専門家のAndrej Karpathy氏が公開したオープンソースプロジェクトです。非常に低コストかつ高効率で小型言語モデルを学習させ、ChatGPTと同様の会話機能を実現します。費用は約100ドル(H100 GPUを8基使用した場合)です。
ナノチャットとは何ですか?
nanochatは、AI専門家のAndrej Karpathy氏が公開したオープンソースプロジェクトです。ChatGPTと同様の会話機能を実現するために、非常に低コストかつ高効率で小型の言語モデルをトレーニングします。わずか100ドル(8基のH100 GPUを使用した4時間のトレーニング)で、基本的な会話、物語や詩の作成、簡単な質問への回答ができる小型モデルをトレーニングできます。予算を1000ドル(約41.6時間のトレーニング)に増やすと、モデルのパフォーマンスが大幅に向上し、簡単な数学やプログラミングの問題を解いたり、多肢選択式のテストに参加したりできるようになります。本プロジェクトは、データ準備、事前学習、中間学習、教師ありファインチューニング(SFT)、強化学習(RL)、推論展開に至るまでの全プロセスを網羅しています。約8,000行のコードでエンドツーエンドの学習が実装されており、学習や実践に適した簡潔で読みやすいコードとなっています。
ナノチャットの主な機能
-
単語分割ツールのトレーニングこのプログラムはRust言語を使用してトークナイザーを学習させます。トークナイザーは、テキストを記号コードのシーケンスに変換する役割を担います。
-
事前トレーニングFineWebデータセットを用いてTransformerアーキテクチャによる大規模言語モデルの事前学習を行い、CORE指標を用いてモデルのパフォーマンスを評価する。
-
中期研修モデルを対話シナリオに適合させるため、SmolTalkのユーザーアシスタント対話データセット、多肢選択データセット、およびツール使用データセットを用いて中間トレーニングを実施した。
-
監視型微調整(SFT)モデルの特定のタスクにおける性能を向上させるため、World Knowledge Multiple Choice Dataset(ARC-E/C、MMLU)、Mathematics Dataset(GSM8K)、およびCode Dataset(HumanEval)に対して、教師ありファインチューニングを実施した。
-
強化学習の微調整(RL)モデルのパフォーマンスをさらに最適化するために、「GRPO」アルゴリズムを用いた強化学習により、GSM8Kデータセット上でモデルを微調整した。
-
推論展開これにより、効率的なモデル推論が可能になり、キーバリューキャッシュ、簡素化された事前入力/デコード処理、およびツールの使用(軽量サンドボックス環境内のPythonインタープリタ)をサポートし、CLIまたはChatGPTのようなWebUIを介してモデルと対話できるようになります。
-
転写産物の生成トレーニングと推論プロセス全体を要約し、結果を「ゲーム化」された形式で表示する、Markdown形式の単一のレポートカードを生成します。
ナノチャットの技術原理
-
ミニマリストなコードアーキテクチャプロジェクト全体のコード行数はわずか約8,000行で、単一のコードベースで実装されており、依存関係が非常に少なく、構造が明確で、理解しやすく、変更も容易です。
-
Rust言語トークナイザーこのコードはRust言語を使用して単語分割器を訓練します。単語分割器は、テキストを記号コードのシーケンスに変換することで、単語分割の効率とパフォーマンスを向上させる役割を担います。
-
トランスフォーマーアーキテクチャTransformerアーキテクチャに基づいて大規模な言語モデルを構築し、事前学習を通じて言語パターンと知識を学習します。
-
データ駆動型トレーニングFineWebなどのデータセットで事前学習を行うことで、モデルは大量のテキストデータを通して言語表現や知識を学習することができる。
-
中期的な訓練適応SmolTalkなどの対話データセットを用いて中期的なトレーニングを実施し、モデルを対話シナリオや特定のタスクに適応させる。
-
強化学習の最適化「GRPO」アルゴリズムは、特定のデータセット上で強化学習を微調整し、モデルのパフォーマンスをさらに最適化するために使用されます。
-
高効率推論エンジン推論効率を向上させるため、KVキャッシングを備え、事前入力とデコード処理をサポートする推論エンジンを実装する。
-
WebUI操作ChatGPTのようなウェブインターフェースを提供し、ユーザーはWebUIを通じて学習済みモデルと対話することができる。
ナノチャットプロジェクトのアドレス
- GitHubリポジトリ:https://github.com/karpathy/nanochat
ナノチャットの応用シナリオ
-
個人とチームサイバーセキュリティに関する高い意識を持つ個人またはチームに適しており、社内ネットワーク内で暗号化された通信チャネルを迅速に確立することを可能にします。
-
開発者とテクノロジー愛好家これは、P2Pネットワーク、暗号化技術、コマンドラインアプリケーション開発の学習と研究のための実践的なプラットフォームとして機能します。
-
臨時作業部会例えば、緊急対応チームは中央サーバーなしで迅速に通信ネットワークを構築できる。
-
教育と研究Nanochatは、研究者や学習者向けに、低コストで理解しやすく、改善しやすいLLM開発プラットフォームを提供します。