言語モデルが予測するもの
確率的継続エンジン
言語モデルはトークンのシーケンスを受け取り、次のトークンにどのような確率分布が割り当てられるかを計算します。the cat sat on the を入力すると、語彙全体にわたる確率を出力します:mat、floor、couch に高い確率;xylophone、Tuesday に低い確率。
その分布からサンプリングし、トークンを追加してフィードバックする:そのループでテキストを1トークンずつ生成します。Autoregressive generation(自己回帰生成)と呼ばれ、各ステップが自身の以前の出力に回帰するためです。
言語モデルを定義する3つの数字
語彙サイズ (V)。 モデルが生成できる異なるトークンの数。ANDREA-12Mは4,353トークンを使用;ANDREA-120Mは8,449を使用。
コンテキストウィンドウ (T)。 1回のフォワードパスに収まるトークンの数。ANDREAモデルはT = 1,024を使用。
パラメータ数 (P)。 内部に学習された重みがどれだけ存在するか。12M、120M、& 480MはPでファミリーを命名。
3つのファミリー
| バリエーション | d_model | ヘッド | レイヤー | コンテキスト | パラメータ |
|---|---|---|---|---|---|
| ANDREA-12M | 384 | 12 | 6 | 1024 | 12.8M |
| ANDREA-120M | 768 | 12 | 12 | 1024 | ~120M |
| ANDREA-480M | 1536 | 24 | 16 | 1024 | ~480M |
3つのノブでスケール:d_model(すべての内部ベクトルの幅)、n_layer(積み重ねられたトランスフォーマーブロックの深さ)、n_head(並列アテンションプロジェクション)。語彙とコンテキストはファミリー全体で固定。
ファミリーテーブルの読み方
小さいモデルが重要な理由
制約としての解放
数百億のパラメータを持つ大規模言語モデルは、数千のGPU、独自データセット、企業予算を必要とします。訓練できる人はほとんどいません。修理できる人もほとんどいません。
1つのGPU上の小型言語モデルはそれを逆転させます。4090(または3060)を持っている誰でも、オープンデータからANDREAを再現できます。訓練レシピはモデルカードを兼ねます。オープンコード、オープンウェイト、オープンデータ;72時間の計算で完全な出所が得られます。
容量 vs 品質
小型モデルは訓練コーパスを記憶できません。12.8MパラメータのANDREA-12Mは、事実的内容を保存する容量が不足しており、ターン構造、語彙分布、応答形状を学習します。10倍の容量を持つANDREA-120Mは、事実の想起、多段落の一貫性、ドメインの広さ(生物学および信号処理サンプルの外部評価で9.5/10)を学習します。
要点: 容量は上限を設定します。カリキュラムは、その上限に到達するかどうかを決定します。アクティビティ14-23はカリキュラムを扱います。 [TITLE decoder_only/]
3つのTransformerのバリエーション
Encoder、Decoder、両方
オリジナルのTransformer(Vaswani et al., 2017)は、翻訳のためにエンコーダーとデコーダーを備え、それらを結合して提供されました。この論文から3つのアーキテクチャの系統が派生しています:
Encoder-only(BERT系統)。双方向アテンション、カジュアルマスクなし。分類に最適化されており、生成には不向きです。トークンはトレーニング中に過去と未来の両方を見ます。
Encoder-decoder (T5, BART)。エンコーダーが入力を読み取り、デコーダーがエンコーダーへのクロスアテンションで出力生成。翻訳、要約に使用。
Decoder-only (GPT, ANDREA)。因果マスク:各トークンは過去のみ参照。次のトークン予測で訓練。生成が容易;訓練と推論が同一のフォワードパスを共有。
なぜDecoder-Onlyが1つのGPUで勝つか
3つの理由:
1. 単一の目的。 次のトークン予測は任意のテキストで機能。ペアのソース/ターゲット不要。
2. トレーニングと推論の対称性。 同一のフォワードパスで、特別な生成ロジックなし。
3. メモリの単純さ。 クロスアテンションなし;レイヤーの1つのスタック;アクティベーションの1つの流れ。
ANDREA は microGPT から decoder-only の選択を継承し、microGPT は nanoGPT から、nanoGPT は GPT-2 から継承しています。系統は標準のまま;トークナイゼーション、トレーニングインフラ、& カリキュラムで変化が生じます。
ANDREA が Decoder-Only を使用する理由
24 GB に収まるもの
パラメータあたりのバイト数
RTX 4090 は 24 GB の VRAM を搭載しています。ANDREA-12M の訓練には 1.4 GB が使用されました。ANDREA-120M は大幅に多く使用しました。この差は単純な会計計算に起因します:訓練中、すべてのパラメータがメモリ上で複数回現れます。
各パラメータに対して、訓練中は以下を保持します:
- 重み自体 (1× 重み)
- Adam 一次モーメント (m): 重みと同じ形状 (1× 重み)
- Adam 二次モーメント (v): 重みと同じ形状 (1× 重み)
- 勾配: 重みと同じ形状 (1× 重み)
- 活性化 & 一時変数: ~2-4× 重み (バッチ & コンテキストにより変動)
合計: 重み数の ~6-8×、精度によりバイト数が決定。
精度がすべてを倍増させる
| 精度 | パラメータあたりのバイト | 120M重みの合計 | 備考 |
|---|---|---|---|
| FP32 | 4 | 480 MB | ベースライン; 最も安全、遅い |
| FP16 | 2 | 240 MB | cuBLAS、メモリの半分 |
| FP8 E4M3 | 1 | 120 MB | テンソルコア、NaNリスク |
トレーニング時の完全なフットプリントに対して6-8倍を掛けてください。ANDREA-120MはFP16で快適にトレーニング可能(重み + オプティマイザ + 勾配で約2 GB);FP8 E4M3はRTX 4090テンソルコアでトレーニング時間を半分にします。
Activity 13 (grow_a_language_model_precision) は FP 精度のトレードオフを詳細に解説します。
ANDREA-120M のオプティマイザ状態のサイズ計算
25のアクティビティ
2つの半分
このコースは明確に2つに分かれています。最初の半分はmicroGPTが分野に教えた内容を扱います:1つのGPUで動作するトランスフォーマー。2番目の半分はANDREAの実際の貢献を扱います:学習するカリキュラム。
半分1:1つのGPU上のトランスフォーマー(アクティビティ2-13)
| # | アクティビティ | ビート |
|---|---|---|
| 2 | Harris形態素トークナイザー | 分布的分離、256+N+1語彙 |
| 3 | トークナイザー-ダイエットアライメント | 飽和点、なぜ12Mが63.6%無駄になったか |
| 4 | 埋め込み & 位置 | 学習されたトークン + 位置ルックアップ |
| 5 | スケールドドット積アテンション | Q·Kᵀ/√d、因果マスク、softmax |
| 6 | マルチヘッドアテンション | ヘッド分割、並列射影 |
| 7 | Transformerブロック | MLP、残差接続、レイヤー正規化 |
| 8 | クロスエントロピー & ペルプレキシティ | 対数尤度、SMMA損失 |
| 9 | カスタムCUDAでのバックプロパゲーション | microgpt_cuda.cuを横断する連鎖律 |
| 10 | AdamW | 分離型重み減衰; なぜバニラAdamが死んだか |
| 11 | LR warmup + cosine decay | 2000ステップのランプ; なぜ即時ピークが120Mを破壊するか |
| 12 | 勾配クリッピング | グローバルL2ノルム; 3 CUDAカーネル |
| 13 | FP32 / FP16 / FP8 E4M3 | 精度のトレードオフ; テンソルコア |
後半: 学習するカリキュラム (アクティビティ14-24)
| # | アクティビティ | ビート |
|---|---|---|
| 14 | 多腕バンディット | UCB1、探索 vs 活用 |
| 15 | フェーズベースのダイス制御 | 7/14/21/28/42 フェーズ、1d3/1d4 ダイス |
| 16 | 報酬帰属 & EMA | ソースごとの損失 EMA、1000× スケーリング |
| 17 | ソースフロア & エポックペナルティ | 1/(1+epochs) で記憶化を防止 |
| 18 | カバレッジボーナス | ドキュメントレベルの追跡、1.3× 新鮮度 |
| 19 | カリキュラムウォームアップ | 最初の 20K ステップで 7 つのチャット/散文ソース |
| 20 | 形状によるフィルタリング、文字数ではない | has_system_prompt_shape() |
| 21 | コヒーレンスゲート付き早期停止 | bigram/trigram/word/char auto-halt |
| 22 | チェックポイント、再開、シグナル | format, SIGTERM/SIGUSR1, loss.json continuity |
| 23 | サンプル監査 & 外部評価 | 実行の読み取り, 9.5/10 領域 |
| 24 | microGPT から ANDREA-120M へ | v1 崩壊, v2 修正, v2.5 パッチ, v3 洗練 |
さらにコンパニオンとして:geometry_of_andrea 各層を幾何学として扱う(埋め込み空間、注意機構を射影として、損失表面、バンディットを離散単純体上の歩行として)。
提案順序
アクティビティ2-13で動作するトランスフォーマーを構築します。トランスフォーマーのトレーニング経験がある場合はパート2にスキップしてください;好奇心が湧いたら戻ってきてください。
可能な限り各アクティビティは独立しています。Math beatsリファレンスは名前で以前のアクティビティを参照します(see activity 5: scaled dot-product attention)。コードリファレンスは~/git/uncloseai-cli/内のmicrogpt/microgpt_cuda.cu & microgpt/training_proxy.pyを指します。