LLMのアーキテクチャ:Transformerを解説 simplement
「トランスフォーマー」「注意機構」「パラメータ」といった言葉は至る所で使われていますが、それらが何を指すのかは説明されないままです。このガイドではLLMの内部をひもとき、数式を一つも使わずに、簡単なたとえでそのアーキテクチャを説明します。読み終える頃には、LLMのアーキテクチャを内部から理解できるようになります。特に、こうした設計上の選択が、モデルに必要なVRAM容量と、お使いのマシンでの応答速度をなぜ決めるのかが分かります。
#LLMのアーキテクチャを理解する理由は?
LLMの内部動作について何も知らなくても、ローカルでLLMを動かすことは可能です — 1つのollama run suffit.しかし、自分のマシンに最適なモデルを選ぶようになると、仕様書のすべての用語が障害になります。「32層」、「70億パラメータ」、「MoE 8x7B」、「32ヘッドの注意機構」。これらの数値が、モデルがグラフィックカードに収まるかどうか、それともプロセッサで苦戦するかどうかを決定します。
うれしいことに、現在のすべてのLLMで主流となっているアーキテクチャ「トランスフォーマー」は、数学を使わずに説明できる、わずかなアイデアに基づいています。これらを理解すれば、「意味もわからずコマンドをコピーする」段階から、「このモデルに必要なVRAMが40 GBではなく9 GBなのはなぜかを理解している」段階へ進めます。
#トランスフォーマーを一枚の図で見る
お使いのマシンで、プライベートかつ無料のChatGPTを1時間で構築 — LM Studio、Ollama、Open WebUI、ご自身のドキュメント、クラウド不要。
- 永久に利用できるオンラインスペース
- PDF + ファイル
- 生涯アップデート
現代のLLMはTransformerです。テキストを入力として受け取り、次の単語を繰り返し予測する仕組みです。この名前は、このアーキテクチャを導入した論文「Attention Is All You Need」(Google、2017年)に由来します。目にするモデルはすべて、Llama、Qwen、Mistral、Gemma、DeepSeek、Phiを含め、このアーキテクチャの派生形です。
組み立てラインを想像してください。入口には、小さな断片に分割された文が入ります。ラインの各工程(「層」)は、文脈を考慮しながら、テキストへの理解を深めます。出口では、モデルが次に続く可能性の最も高い断片を提案します。新しい断片を生成するたびに、この処理を繰り返します。仕組みはこれだけです。あとは、各工程が何をするかという細部の話です。
- 入力
- トークンに分割されたあなたのテキスト(単語の小さな断片)。
- レイヤーのスタック
- 各レイヤーはテキストの表現を精緻化します。モデルには数十のレイヤーがあります。
- アテンション
- 各レイヤーの中心メカニズム:各単語が他の単語に「注目」するようにします。
- 出力
- 各候補トークンに対する確率。モデルはその中から1つを選択し、テキストに追加して、繰り返します。
#あなたの言葉からトークンへ
LLMが扱うのは、文字でも単語全体でもなく、トークンです。トークンとは、よく出現するテキストの断片のことです。短い単語全体(「chat」)の場合もあれば、単語の一部(「anti」「constitution」)、スペースや句読点の場合もあります。フランス語では、おおよそ2語あたり3トークンと考えてください。
次に、各トークンは「エンベディング」と呼ばれる数値のリストに変換されます。これは、テキストを機械が扱える言語に翻訳することです。具体的には、意味の近い単語が空間内でも近くに位置するような座標で表します。「王」と「女王」は隣り合い、「王」と「ブロッコリー」は離れた位置にあります。
#Transformer の中核となるアテンション機構
アテンションは、すべてを変えたアイデアです。「ネズミはチーズを食べた。なぜなら彼女はおなかがすいていたからだ」という文を考えてみてください。「彼女」は誰を指しているでしょうか。当然、ネズミです。それを理解するには、「彼女」を、数語前にある「ネズミ」と結びつける必要があります。これこそがアテンションの働きです。各単語について、文中のどの単語が関係しているか、そしてそれぞれをどの程度考慮するかを決めます。
たとえ話:会議中に誰を指すのか曖昧な代名詞を耳にすると、脳はそれまでに話された内容を振り返り、誰の話なのかを探します。アテンションも、すべての単語に対して同時並行で同じことを行います。それぞれの単語が「自分の意味を理解してもらうには何が必要か?」という「質問を投げかけ」、他の単語から関連度に応じて重み付けされた「回答を受け取る」のです。
「アテンションヘッド」(attention heads)という言葉をよく見かけます。1つのヘッドは、語句の関係に注目する1つの視点です。複数のヘッド(32ヘッド、64ヘッドなど)があれば、モデルはさまざまな種類のつながりを同時に追えます。あるヘッドは文法、別のヘッドは文章の主題、さらに別のヘッドは時間に関する参照に注目する、といった具合です。
#積み重ねられた層
単一のアテンション層には単純な関係しか含まれません。その真の威力は層の積み重ねにあります。ある層の出力が次の層の入力となるのです。小型モデルには約20層、大型モデルには数十層あります。各層は2つのブロックで構成されています。アテンション(単語同士を結びつけるもの)とフィードフォワードネットワーク(読み取った内容を考えるミニ脳のように、各単語を個別に処理するもの)です。
類推:複数のレベルで読解を行う。最初の層は単語と文法を検出する。中間層は文の意味を構築し、最後の層は意図やトーン、次に来るべき内容を捉える。層が増えるほど、モデルはより深く論理的思考を行うことができるが、生成される各トークンに対して計算量も増える。
- アテンションブロック
- 単語を相互に結びつける(コンテキスト)
- フィードフォワードブロック
- 各単語に対して深い変換処理を行います(モデルの「知識」に当たる部分です)。
- 層の数
- 「深さ」のことです。層が多いほど、モデルの能力は高くなりますが、処理は遅くなります。
- 幅(隠れ次元)
- 数値のリストの長さです。長いほど、モデルの「幅」が広くなり、モデルも重くなります。
#パラメータとは何ですか?
「7B」や「70B」という表記のBは「十億」(英語のbillion)を意味し、パラメータ数を表します。パラメータとは、モデル内部の調整可能な数値で、学習中に調整される無数のつまみの一つです。これらのつまみには、文法、事実、文体、推論など、モデルが「知っている」すべてが符号化されています。
たとえとして、何十億ものスライダーを備えた巨大なミキシングコンソールを想像してください。学習とは、何十億ものテキスト例に対してモデルが次の正しい単語を予測できるように、各スライダーを調整することです。固定されたこれらの設定が「重み」(weights)であり、ollama pullを実行するとダウンロードされるものです。
モデルのパラメータ数が多いほど、より多くの情報を記憶し、細かなニュアンスを表現できます。しかし、その分メモリ使用量が増え、処理も遅くなります。生成される各トークンが、すべてのパラメータを通過するためです。これが、「7B」という数字とマシンのハードウェア要件との直接的なつながりです。
#Dense と MoE:モデルを構成する 2 つの方式
これまで説明してきたのは「デンス」型トランスフォーマーです。すべてのトークンが全パラメータを通過します。シンプルですがコストが高く、デンス型 70B は生成される各単語ごとに 700 億のパラメータを使用します。
MoE(Mixture of Experts)アーキテクチャはこのルールを覆します。各層に単一の大きなフィードフォワードブロックを置くのではなく、複数のブロック(「エキスパート」)を配置し、各トークンに対しては、小さな振り分け機構(「ルーター」)が選んだ数個だけを有効にします。たとえるなら、何でも答える総合診療医ではなく、専門医が集まる診療所で、自分の症状に合った2人の医師にだけ診てもらうようなものです。
- Dense
- すべてのパラメータが各トークンに対して動作します。例:Llama 3 8B, Qwen 14B, Gemma 27B。
- MoE
- 総パラメータは多いですが、トークンあたりのアクティブなパラメータは少ないです。例:Mixtral 8x7B、DeepSeek V3、Llama 4 Scout。
- MoE記法
- 「30B-A3B」= 総パラメータ数は300億ですが、トークンごとにアクティブになるのは30億(A = active)のみです。
これはローカルでの実行に大きな意味を持ちます。MoEは、アクティブなパラメータが少ないため速度面では小型モデルのように動作しながら、総パラメータ数が多いため大型モデルの幅広い知識を維持できます。問題はVRAMです。一度に有効にするのが一部だけでも、すべてのエキスパートをメモリに読み込む必要があります。
#なぜこれらすべてが VRAM と速度を左右するのか
ここからは実用上の核心に入ります。ローカルで重要なリソースは、メモリ(モデルを収めるため)と計算能力(素早く応答するため)の2つです。アーキテクチャは、その両方を左右します。
#メモリ:重みが収まる容量が必要
高速に動作させるには、モデル全体が GPU の VRAM(または Apple Silicon 搭載 Mac のユニファイドメモリ)に収まる必要があります。収まらない場合は、一部の処理を CPU が担当し、モデルの一部がシステム RAM に置かれるため、速度が大幅に低下します。モデルのサイズはパラメータ数と量子化によって決まります。
- 3BモデルをQ4で量子化
- 約2GBのVRAM
- 7B Q4
- ≈ 5 GB
- 14BをQ4で量子化
- ≈ 9 GB
- 32B Q4
- 約19GB
- 70BのQ4量子化
- 約 40 GB
プロンプトが長くなるほど増えるコンテキスト用のメモリ(KVキャッシュ)も加えてください。長いコンテキストでは、さらに数GBが必要になることがあります。GPUのメモリ容量の限界に近い場合は、この分も忘れずに考慮してください。
#速度:トークンごとに有効になるパラメータ数
生成速度(トークン/秒)は、主に各トークンで実際に有効化されるパラメータに依存します。そのため、8Bデンスモデルと30B-A3B MoEモデルは、速度が同程度になる可能性があります。どちらもトークンごとに約30億から80億パラメータのみを有効化するためです。MoEは、すべてのエキスパートを収容するために、はるかに多くのVRAMを必要とするだけです。
- RTX 3060 12 GB
- Q4なら14Bまで快適に動かせます。入門用に最適なカードです。
- RTX 4070 / 4080 (12–16 GB)
- 14B は余裕を持って動作し、32B は Q4 なら 4080 にぎりぎり収まります。
- RTX 4090 24 GB
- 32BはQ4で快適に動作しますが、70BはGPUだけでは動かせません。
- Mac M4 Pro 24–48GB統合メモリ
- ユニファイドメモリがVRAMとして機能するため、48GB構成ならQ4量子化で70Bモデルまで実行できます。
#モデルカードを一行ずつ読む
これで、技術仕様を読み解くためのポイントが分かりました。Hugging FaceやOllamaのライブラリで見かけるような、典型的な例を見てみましょう。
- アーキテクチャ: デコーダーのみ
- 生成型LLMの標準的な構成です。モデルはテキストの続きを予測するだけで、独立した「エンコーダー」部分はありません。
- パラメータ:14B
- パラメータ数は140億です。メモリ容量の目安:Q4では約9 GBで、少なくとも12 GBのグラフィックスカードが必要です。
- type: dense
- すべてのパラメータはトークンごとに有効です。もしMoEであれば、30B-A3Bのような記載が見られます。
- layers: 40
- 40層が積み重なっています。これは深さであり、層が多いほど論理的思考は精密になりますが、速度は遅くなります。
- attention_heads: 40
- レイヤーあたり40個のアテンションヘッド——単語を並列で関連付ける方法の数と同じです。
- context_length: 32768
- コンテキストは32kトークン、つまり約24,000語です。注意:このコンテキストを埋めると、追加のVRAMを消費します。
- quantization: Q4_K_M
- 精度をパラメータあたり約4ビットに低減。ローカル利用では、品質とサイズの最良のバランスです。
- size_on_disk: 9 GB
- ダウンロードするデータと、最大速度で動かすためにメモリに収める必要があるデータ。
この7行だけで、唯一重要な問いである「自分のマシンで快適に動くか?」に、もう答えられます。ここでは、14BのQ4モデル=重み約9GB+コンテキスト用のメモリ → RTX 3060 12GB以上のカードで高速に動作します。
#さらに詳しく
これで LLM の仕組みを理解できました。この基礎からさらに学ぶためのガイドが3つあります。1つ目は MoE の表記とその具体的な影響を詳しく解説し、2つ目はディスク上のサイズを決める量子化の選択を説明します。3つ目は、ここで触れたコンテキストウィンドウを改めて取り上げます。
ご意見、誤りのご指摘、補足はありますか?ぜひお知らせください。皆さんにとってより良いガイドにするために役立ちます。