AirLLMとは?RTX3060で70Bを動かす仕組みと限界

目次

手元のRTX 3060で70Bクラスの大規模言語モデルを動かしたい。そう考えて調べると、「4GBのVRAMで70Bが動く」とうたうAirLLMというライブラリに行き着きます。この記事では、AirLLMがRTX 3060で動くのか、動かすと何が起きるのかを、公式リポジトリと複数の検証記事をもとに整理しました。先に答えを書くと、動きます。ただし1トークンの生成に数秒から数十秒かかる見込みで、チャットではなくバッチ処理向けです。

AirLLMはRTX 3060で動く。ただしチャット用途には向かない

結論を4点にまとめます。

  • 動くか:動きます。AirLLMはGPU上に常に1レイヤーだけを置くため、必要なVRAMはモデル全体ではなく1レイヤー分で決まります。12GBのRTX 3060なら余裕があります
  • ボトルネック:VRAMではなくストレージです。トークンを1つ生成するたびに全レイヤーをディスクから読み直すので、ディスクの読み込み速度がそのまま生成速度になります
  • 速度:70Bクラスなら1トークンあたり数秒から数十秒が見込まれます(見積もりは後述)。対話には使えません
  • 向く用途:夜間の一括処理、フル精度の出力を基準値として取りたい検証、手元で70Bの挙動を確認したい場面

「日常のチャットで使いたい」なら、量子化したモデルをllama.cppやOllamaで動かすほうが現実的です。3060での通常推論の速度は、この後の表で比べます。

AirLLMとは?1レイヤーずつGPUに載せる仕組み

AirLLMは、大規模モデルを少ないVRAMで推論するためのPythonライブラリです。公式リポジトリはApache-2.0ライセンスで公開されています。

通常の推論はモデル全体をVRAMに載せます。AirLLMは違います。Transformerのレイヤーは順番に実行されるので、必要なレイヤーをディスクからGPUに読み込み、計算が終わったら捨てて次を読み込みます。初回の実行時には、元のモデルをレイヤーごとに分割して保存する処理が入ります。

対応モデルはLlama、Qwen、DeepSeek、Mistral/Mixtral、Gemma、Phiなど幅広く、公式リポジトリにはLlama 3.1 405BやDeepSeek-V3(671B)への対応も書かれています。オプションでcompression='4bit'または'8bit'を指定すると、重みのブロック単位量子化が有効になり、最大3倍の高速化をうたっています。ただし、この「3倍」はAirLLM内での比較です。通常のVRAM搭載推論に追いつくわけではありません。

RTX 3060(12GB)で必要な環境:VRAM・ディスク・メモリ

RTX 3060はVRAM 12GB(GDDR6)、メモリ帯域360GB/sのGPUです。なお3060には8GB版も存在しますが、AirLLMの要件は次の表のとおりなので、どちらでもVRAMは問題になりません。

項目目安出典・補足
VRAM4GB以上検証記事では、16bitで約1.46GiB使用
システムメモリ16GB以上推奨増やすとページキャッシュが効く可能性がある
ストレージ70Bで約130GB初回のレイヤー分割で保存される分。元モデルの取得分は別に必要になる可能性がある
ストレージの種類NVMe SSDSATAでは遅くなる
OSLinuxとApple Silicon Mac、CPU推論Windowsの対応記載は今回確認できませんでした。公式リポジトリで確認してください

3060のVRAMは、AirLLMにとっては使い切れないほど大きい、というのが実情です。用意するべきなのはディスクの空きとNVMe SSDです。

インストールと最小コード

インストールはpipで完了します。圧縮機能を使うならbitsandbytesも入れます。

pip install airllm
pip install -U bitsandbytes  # compression を使う場合

公式リポジトリの例を簡略化したコードです。

from airllm import AutoModel

model = AutoModel.from_pretrained("Qwen/Qwen3-32B")  # 圧縮するなら compression='4bit' を追加
input_tokens = model.tokenizer("こんにちは", return_tensors="pt")
output = model.generate(input_tokens["input_ids"].cuda())

引数や対応モデルはバージョンで変わるため、実行前に公式リポジトリのREADMEを確認してください。初回はモデルのダウンロードとレイヤー分割で、ディスクと時間を大きく使います。

実際どれくらい遅い?ディスク速度から見積もる

検証記事では、生成時間の目安を「モデルのディスク上のサイズ ÷ ディスクの読み込み速度」で説明しています。GPUは各レイヤーの到着を待つ時間が長く、計算能力を持て余します。

この式で見積もると、次のようになります。NVMe SSDの読み込み速度は5〜10GB/sが目安として挙げられているので、その値を使いました。

構成1トークンの目安100トークン生成
70B・AirLLM(16bit、130GB)約13〜26秒約22〜43分
Qwen3 14B・Q4・通常推論(3060)約0.03秒(31.2トークン/秒)約3秒
Qwen3 8B・Q4・通常推論(3060)約0.02秒(55.2トークン/秒)約2秒

70BのAirLLMの数字は、上の式と5〜10GB/sから私が計算した見積もりで、3060での実測ではありません。3060の通常推論の数字は、Hardware Cornerのベンチマーク(コンテキスト4k)です。実際の速度は、SSDの世代、空き容量、OSのキャッシュで大きく変わります。

差は400倍前後です。ストレージ速度が支配的であることは、検証記事の実測からも読み取れます。別の検証では、Colab上のTesla T4で959秒かかった推論が、ローカルNVMe環境のRTX 3090Tiでは78秒でした(いずれも16bit。生成条件は元記事を参照)。GPUの性能差以上に、ストレージ環境の差が効いています。

速くする方法は3つあります。

  1. compression='4bit'で読み込むデータ量を減らす(最大3倍とされる)
  2. NVMe SSDを使う
  3. システムメモリを増やし、ページキャッシュに乗せる

それでも、対話に必要な速度には届きません。

向いている用途と向かない用途

AirLLMが役に立つのは、速度を求めない場面に限られます。

向いている用途

  • 夜間実行の一括評価や分類など、結果を待たなくてよい処理
  • 量子化前のフル精度の出力を、比較の基準値として取りたい検証
  • 外部APIに送れないデータを、手元で大きなモデルに通したい場合
  • 「手元のマシンで70Bが動くか」の動作確認

向かない用途

  • 日常のチャット、コーディング支援などの対話利用
  • 頻繁に繰り返し実行する処理
  • ディスクの空きが少ない環境

3060で日常的に使うなら、量子化モデルとの使い分けになります。

比較項目AirLLM量子化 + llama.cpp / Ollama
必要VRAM1レイヤー分(4GB以上で動作)モデルが載る分が必要
3060(12GB)で動く最大規模70Bクラス以上も動作Q4の8B〜14Bが実用範囲。70BクラスはQ4でも35GB以上になり、12GBには収まらない
速度数秒〜数十秒/トークン3060で14Bが約31トークン/秒
出力の精度圧縮なしなら元のモデルの精度量子化で劣化する可能性がある
主な用途バッチ処理・検証対話・日常利用

精度面の注意:コード生成でエラーが増えたという報告

12GBのVRAM環境でAirLLMを検証した記事では、コード生成でエラーが増えた、前の手順の指示を忘れるといった問題が報告されています。1人の検証者の報告なので一般化はできません。ただ、「高性能なモデルを使いたい理由はコード品質の向上なのに、エラーが増えるのは矛盾する」という指摘は的を射ています。圧縮を使う場合や、コード生成に使う場合は、出力を自分の環境で確かめてから使ってください。

よくある質問(FAQ)

Q. RTX 3060の8GB版でもAirLLMは動きますか?
A. 必要VRAMは4GB以上とされているので、VRAMの面では動く見込みです。ただし、私は実機で確認していません。

Q. Windowsで動きますか?
A. 公式リポジトリの対応OSとして確認できたのはLinux、Apple Silicon Mac、CPU推論です。Windowsについての記載は今回の調査で確認できませんでした。実行前に公式リポジトリのIssueやREADMEを確認してください。

Q. AirLLMをチャットボットに使えますか?
A. 実用的ではありません。ある検証記事は、対話に必要な速度に遠く及ばないと結論づけています。チャットには量子化モデルをおすすめします。

Q. 4bit圧縮を使うと、通常の推論と同じ速さになりますか?
A. なりません。圧縮による高速化は最大3倍とされていますが、これはAirLLM内での比較です。ディスクから毎回レイヤーを読む構造は変わりません。

まとめ

  • RTX 3060(12GB)でもAirLLMは動く。必要VRAMは1レイヤー分で、3060には余裕がある
  • 本当の制約はディスク。70Bで約130GBのストレージとNVMe SSDが要る
  • 速度は「モデルサイズ ÷ ディスク速度」で決まり、70Bなら1トークン数秒〜数十秒の見込み。通常推論と比べて400倍前後の差がある
  • 使い道はバッチ処理と検証。対話は量子化モデル(llama.cpp、Ollama)に任せる

まず試すなら、小さめのモデルで手順とディスクの消費量を確かめてから、70Bに進むのが安全です。

参考リンク