なぜ4GBで20Bモデルが動く?知らないと損するその仕組みを初心者向けに解説してみた

先日、「きしだのHatenaブログ」さんの「GPUメモリ4GBしかなくても、GPT-oss 20B(MoEモデル)をある程度の速度で動かせる」という内容の記事を読んでいました。初心者の私はGPUメモリが4GBでなんでGPT-oss 20Bが動くの?とさっぱりわからなかったし、Attention?FFN?MoE?と、聞き慣れない用語が並んで頭の中は「⁉️」でパニックでした🤔

わからなくてもしゃーないけど、せっかく時間があるんだしということで自分なりに調べてみました。自分の中で整理した内容をまとめておきます。誰かの参考になれば嬉しいです。内容の理解が間違っていたら優しく指摘してください🙇

GPUメモリ4GBでGPT-oss 20Bを動く仕組みを調べてみた

そもそもTransformerとは?

そこからかよって話もありますが…🥲

Transformerは、現代のAI(ChatGPTなど)の基盤となっているニューラルネットワークの設計方法です。

  • 長い文章の理解が得意
  • 並列処理でより高速
  • 文脈を正確に把握

といった特徴があります。今ではほぼ全ての大規模言語モデル(LLM)がTransformerベースになっています。 今回話題にしているGPT-oss 20BTransformerアーキテクチャで作られています

AttentionとFFNって何?

Transformerの内部構造は、大きく2つの処理部分で構成されています。

Attention(アテンション)

  • 役割 … 単語(トークン)同士の関係性を計算する部分
  • 特徴 … 比較的小さなパラメータを高度な並列計算で処理するため、GPUが得意な領域

FFN(Feed-Forward Network)

  • 役割 … Attentionの出力を変換する全結合層
  • 特徴 … 巨大なパラメータを使うが、計算自体は単純な行列計算

重要なポイントは2つの機能から構成されている点であり、FFNは、Transformerの中で最もメモリを消費する部分である点です。

MoE(Mixture of Experts)とは?

通常のTransformerでは「1つのFFN」ですべての処理を行いますが、MoEモデルでは複数の専門家(Expert)に分かれたFFNを持ち、その中から最も適切な一部(通常2つ程度、これをtop-k選択と呼ぶようです)だけを選んで使います。

MoEの仕組み

  1. Gate(ゲート)が入力内容を判断
  2. 最適なExpert(通常2個程度)を選択
  3. 選ばれたExpertのFFNだけが処理を実行
  4. 全パラメータを同時には使わない → メモリ効率の最適化が可能

MoEの仕組み

どうやってGPU 4GBで動かすのか?

ここが記事の最重要ポイントになってきます。FFNの重み(Expert)をCPUメモリに配置する工夫により実現されています。

処理の分担

  • Attention … GPU上で計算(並列処理が得意な部分)
  • FFNの重み … CPU上に常駐(VRAMを大幅節約)
  • FFNの計算 … 必要なExpertのみCPU→GPUに転送して実行

今回のVRAMが少ない環境での動作の仕組み

メリットとデメリット

  • メリット すべてGPUでは不可能な環境でも動作可能
  • デメリット 転送帯域による転送速度がボトルネック

ただ、CPUのみより高速で動作するという変化は大きな価値です。

実際の速度はどれくらい?

値参照記事での実測値(※環境により大きく異なる可能性はあると思います)

構成 速度 特徴
CPUのみ 約10 tok/sec 最低速度だが確実に動作
Attention=GPU + FFN=CPU 約14 tok/sec バランス型、VRAM節約
全てGPU常駐 約65 tok/sec 最高速度だが大容量VRAM必須

まとめ

今回わかったポイント

  • MoE … 「巨大なFFN(Expert)を多数持つが、一部だけ使用」する効率的な仕組み
  • メモリ戦略 … AttentionGPU、FFNの重みはCPUに配置してVRAM節約
  • 実用性 … VRAM 4GBでも動作可能、ただしデータ転送速度がボトルネック

実際の設定方法

ここからは、具体的にGPT-oss 20BをCPUオフロードで動かす方法を2つの難易度別に紹介します。

方法1:Ollama

対象 … すぐに試したい方

手順

  1. Ollama公式サイトからダウンロード&インストール
  2. ターミナルで以下を実行
$ ollama pull gpt-oss:20b
$ ollama run gpt-oss:20b
  • メリット … GPU自動検出、初心者に最適
  • デメリット … 細かいCPU/GPUオフロード設定は不可(Ollama内部で自動決定)

ollama psコマンドを実行すると、現在モデルがCPUとGPUにどのように分散されているかを確認できます。

注意点

  • GPUが検出されれば自動で利用されますが、どの程度GPU/CPUを使い分けるかはOllama内部で決定
  • llama.cppのような細かいレイヤーでの制御は不可
  • GPU利用状況はollama psコマンドで確認可能

方法2:LM Studio

対象 … GUIを設定したい方

手順 1. LM Studio公式サイトからダウンロード 2. アプリ起動後、検索窓で「gpt-oss-20b」を検索 3. モデルをダウンロード(約13GB) 4. チャット画面でモデルを選択して開始

設定のコツ

  • 設定画面で「GPU オフロード」のスライダーを調整
  • VRAMが4GBの場合は、スライダーを中央より左に設定
  • Context Lengthでメモリ使用量を調整可能
  • モデル一覧から【⚙️】ボタンをクリックして、【Edit Model Default Parameter】内の【Force Model Expert Weights onto CPU】をONにする(※)

※このオプションを有効にすると、MoEのExpert部分(モデルパラメータの大部分を占めるFFN)が強制的にCPU側のシステムRAMに配置されます。これにより、Attention計算やKVキャッシュなど、より速度が求められる処理のために、限られた高速なVRAMを確保することができます。表示されていない場合にはLM Studioのバージョンアップをしてください。

  • メリット … 視覚的な設定、GPU/CPUバランスを調整可能
  • デメリット … 少し設定項目が多い

どちらを選ぶべき?

条件 推奨方法
とにかく簡単に試したい Ollama
設定を調整したい LM Studio
コマンドラインが苦手 LM Studio
複数モデルを比較したい LM Studio

おわりに

今回調べてみて、GPUメモリ4GBでもGPT-oss 20Bが動く理由とその仕組みが理解できました。また、ダウンロードするときに、MoEモデルとは🤔ということには今後ならなくて済みそうです。更に、AttentionFFNの処理を分けることで、限られたリソースでも性能を引き出せそうです。

きしだのHatenaブログさんの記事をきっかけに、GPUメモリの制約を乗り越える方法があることを知り、非常に勉強になりました。ありがとうございました🙇

これからもAI技術の進化に注目していきたいと思います。


参考文献