localaiforum
ログイン
ガイド › 基礎

LLMとは何か——その正体

LLMは関数である。テキストを入力すると、次トークンの確率分布が出力される。生成とはこの関数をループで回すこと——トークンをサンプルし、追加し、全体を再入力し、繰り返す——ストップトークンか長さ上限に達するまで。チャットアプリからコーディングエージェントまで、LLMの上に作られたプロダクトはすべて、このループを包むオーケストレーションにすぎない。

モデルファイルの中身は2つだけ。数十億個の浮動小数点重み(パラメータ)と、それらを組み合わせる固定の計算グラフ(transformerの内部を参照)。そこにデータベースもルールエンジンもスクラッチメモリもない。推論時の重みは凍結されており、会話中にモデルが「記憶」するすべては、プロンプトウィンドウに置かれたテキストにすぎない。

コアループ

生成エンジン全体の擬似コード。どのベンダーの製品もこれ以上深くない。

tokens = tokenize(prompt)
while not done and len(tokens) < max_context:
    probs = model(tokens)             # 1回のフォワードパス
    next  = sample(probs, temperature)
    tokens.append(next)
    stream_to_user(next)
    if next == stop_token:
        done = True

このループで日常動作を左右する2つのノブは、どちらも重みの外にある。temperature(サンプリングの大胆さ)と最大コンテキスト(会話の収容量)。どちらもエンジンが適用するランタイム設定(エンジンパラメータを参照)。

重みの実体

「7B」モデルは70億個の浮動小数点パラメータである。保存サイズを変えるのは精度だけで、賢さではない。

精度 パラメータあたりバイト数 7Bモデルのサイズ
FP16(ネイティブ) 2 約14 GB
8ビット量子化 約1 約7 GB
4ビット量子化 約0.55 約4 GB

同じ重みを粗い格納にするだけ——少々の品質を大量のメモリと交換している(量子化を参照)。パラメータ数自体は学習時に固定で、使っても変わらない。

スケールの梯子

パラメータ数は、いつ何が登場したかを示す粗削りだが正直な物差しである。

クラス パラメータ 時代 できたこと
GPT-2 125M–1.5B 2019 整合的な段落、脆い事実
GPT-3 175B 2020 few-shotプロンプティングが機能し始める
小さい秀才(Phi-3、Qwen 3B) 3–4B 2024 実用に耐える軽量アシスタント
オープン7B(Mistral、Llama 2) 7B 2023 コンシューマGPU1枚で堅牢なチャットとコード
オープン70B級 70B 2023+ フロンティア級に迫る推論。2×24 GBが必要
オープンフロンティア密(Llama 3.1) 405B 2024 フロンティア級のオープンウェイト、マルチGPU
MoEフロンティア 総100B–600B+、アクティブ10–40B 2024+ 現実的なサービングコストで最高級の出力

各段は前段の約10倍で、下位では絶対に出なかった挙動を解き放つ——「同じだが少し良い」ではない。スケールがスキルを追加し、パッケージングがそれを使えるようにした。

セッション間の記憶はない

モデルはステートレスである。状態は会話の中——あなたとモデルが生成したトークンの実行中ウィンドウ——に存在する。タブを閉じれば消え、新しいチャットを始めればあなたの存在を知らない。すべての「記憶」機能は、古いテキストを新しいプロンプトに再注入するラッパーにすぎない。

実用的な帰結:ウィンドウに残っているものが、モデルの現在の知識のすべて。長い会話は、ウィンドウが一杯になると冒頭を静かに切り捨てる——モデルは欠けたテキストに「気づかない」(トークンを参照)。

流暢は正しさではない

学習目標はもっともらしい継続であって、真実ではない。要点は以下。

  • モデルは自信に満ちた整った嘘を出力する。ハルシネーションは次トークン予測の性質であり、誰かが直し忘れたバグではない。
  • 流暢さは真実の貧弱なシグナル。誤った回答は正しい回答とまったく同じ読み心地になる。
  • キャリブレーションは当てにならない。「どのくらい確信している?」と聞くと、でっち上げの数値が返ってくる。
  • よくある事実は信頼できる——学習データに何百万回も登場したから。ロングテールの事実は、自信満々のフィクションへ滑らかに劣化する。
  • モデルは迎合的に傾く。正しい回答に反論すると折れることがある。正しさと自信は別の軸。
  • 検証可能な出力の強制(フィールドを埋めるJSON、多肢選択)は、モデルへの内省要求に勝る。

知識は学習時に凍結される

モデルの知識はすべて、学習時に焼き込まれた。カットオフ日は存在し、どれだけ会話しても重みは更新されない。新しい事実には、テキストをコンテキストに入れる(検索)か再学習が必要(学習を参照)。出典を示すこともできない——コーパスへの索引は持たず、重みに残るコーパスの反響だけがすべて。

能力は一様に届かない

スケールはスキルを滑らかに追加しない。

  • 約3B未満:自動補完・抽出・分類は良好。多段推論は大抵失敗。
  • 7–9B:信頼できる指示追従、まともなコード。算数と長いチェーンは不安定のまま。
  • 30B以上:計画、ニュアンス、高度なコード——遅く、やや突然にやってくる。
  • MoEは梯子を複雑にする。総パラメータではなくアクティブパラメータで判断すること。

つまり「大きいほど良い」は平均では正しく、詳細では誤解を招く。早く頭打ちになるタスクもあれば、遅くスイッチが入るタスクもある。雰囲気ではなく自分のタスクでベンチマークを(モデル選択を参照)。

プロダクトはループのラップ

LLMプロダクトを使うとき、概ねこう動く。

  1. テキストがトークン化される。
  2. システムプロンプト、ツール定義、検索文書、チャット履歴が1つのプロンプトに連結される。
  3. モデルが上のループを回し、トークンをストリーム出力する。
  4. ラッパーコードが出力をパースし、ツールを呼び、結果を戻し、再プロンプトする。
  5. UIがmarkdownを描画し、それを会話と呼ぶ。

ステップ1、2、4、5はモデルではない。モデルが固定ウィンドウを持つステートレスなテキスト入出力関数だと飲み込めば、このガイドの残りは帳簿づけである。ウィンドウの大きさ(トークン)、ループの速さ(プリフィルとデコード)、実行場所(ハードウェア概要)、操縦方法(プロンプト)。

関連: トークン · transformerの内部 · パラメータ · 学習