世界を動かす技術を、日本語で。

4GB GPUを使用したAirLLM 70B推論

2026年8月3日原文(github.com)

概要

  • AirLLM は大規模LLMを 低メモリGPU で実行可能にするライブラリ
  • 量子化・蒸留・プルーニング不要 で70Bモデルを4GB VRAMで実行
  • MacOS対応 や主要LLM全般のサポート
  • モデル圧縮 による推論速度最大3倍向上
  • AutoModel による簡単なモデル切替と利用

AirLLM: 低メモリGPUで大規模LLMを動かす最先端ライブラリ

  • AirLLM は、 70B 規模のLLMを 4GB のGPUカード1枚で実行可能
    • 量子化・蒸留・プルーニングなしで実現
  • MoE(Mixture of Experts)モデル は1エキスパートずつストリーミング
    • 例:Kimi K3 (2.8T)を4GB未満で実行
  • 405B Llama 3.1 は8GB、 DeepSeek-V3 (671B) は約12GBで動作
  • Apple Silicon搭載Mac にも対応
  • AutoModel によりHugging Face IDを渡すだけで主要モデルが即利用可能
    • Llama, Qwen, DeepSeek, Mistral, Phi, Gemma, ChatGLM, Baichuan, InternLM, Yiなど

最新アップデート

  • 2026/07: Kimi K3 (2.8T)サポート開始
    • RTX 6000 Adaで3.72GB VRAMで動作
    • 必須要件:compressed-tensors, flash-attn, CUDA 12版torch, transformers 4.56.x
  • 2026/06: v3.0リリース
    • FP8モデル対応
    • DeepSeek-V3 (671B)が12GB、Qwen3-235Bが3GBで動作
  • 2024/08/20: v2.11.0でQwen2.5サポート
  • 2024/08/18: v2.10.1でCPU推論と非シャードモデルサポート
  • 2023/12/25: v2.8.2でMacOS上で70Bモデル動作対応
  • 2023/12/01: v2.0でモデル圧縮機能追加、3倍の速度向上

クイックスタート

  • インストール方法
    • pip install airllm
  • 推論実行例
    • from airllm import AutoModel
    • model = AutoModel.from_pretrained("Qwen/Qwen3-32B")
    • input_text = ['What is the capital of United States?']
    • input_tokens = model.tokenizer(input_text, return_tensors="pt", return_attention_mask=False, truncation=True, max_length=128, padding=False)
    • generation_output = model.generate(input_tokens['input_ids'].cuda(), max_new_tokens=20, use_cache=True, return_dict_in_generate=True)
    • output = model.tokenizer.decode(generation_output.sequences[0])
    • print(output)
  • 注意点
    • 推論時、元モデルはレイヤー単位で分割・保存されるため、十分なディスク空き容量が必要

モデル圧縮(3倍高速化)

  • bitsandbytes のインストール:pip install -U bitsandbytes
  • airllm v2.0.0以降 を利用:pip install -U airllm
  • 初期化時にcompression引数 を指定
    • model = AutoModel.from_pretrained("garage-bAInd/Platypus2-70B-instruct", compression='4bit')
  • 特徴
    • 通常の量子化は重み・活性化の両方を対象だが、AirLLMは重みのみを圧縮
    • 精度を維持しつつ、ディスクからのロードを高速化

設定オプション

  • compression: 4bit, 8bit, None
  • profiling_mode: Trueで処理時間出力
  • layer_shards_saving_path: 分割モデルの保存先指定
  • hf_token: Hugging FaceのAPIトークン
  • prefetching: モデルロードと計算の重複実行(AirLLMLlama2のみ対応)
  • delete_original: 元モデルを削除してディスク容量節約

MacOSでの利用

  • Apple Siliconのみ対応
  • mlxtorch のインストールが必要
  • Pythonネイティブインストールが推奨
  • 詳細手順やサンプルノートブックは公式GitHub参照

主要モデルの利用例

  • ChatGLM
    • model = AutoModel.from_pretrained("THUDM/chatglm3-6b-base")
  • QWen
    • model = AutoModel.from_pretrained("Qwen/Qwen-7B")
  • Baichuan, InternLM, Mistralなど
    • model = AutoModel.from_pretrained("baichuan-inc/Baichuan2-7B-Base")
  • 全モデル共通
    • input_tokens = model.tokenizer([...], return_tensors="pt", ...)
    • generation_output = model.generate(...)
    • model.tokenizer.decode(generation_output.sequences[0])

サポートモデル一覧

  • Llama(2/3/3.1/3.3/4)
  • Qwen(1/2/2.5/3, MoE, FP8)
  • DeepSeek(V2/V3/R1)
  • Mistral, Mixtral, Phi, Gemma, ChatGLM, Baichuan, InternLM, Yi
  • 新規リリースモデルも即日対応が多い

メモリ要件の目安

  • Qwen3 / Mistral / Phi(約8B) :1–2 GB
  • Qwen3-30B / Mixtral(MoE) :1–3 GB
  • Qwen3-235B(MoE) :3 GB
  • Llama 3.x 70B :4 GB
  • Llama 3.1 405B :8 GB
  • DeepSeek-V3 671B :12 GB

FAQ(よくある質問)

  • MetadataIncompleteBufferエラー
    • 原因:ディスク容量不足
    • 対策:キャッシュ削除やディスク拡張
  • ValueError: max() arg is an empty sequence
    • QWenやChatGLMをLlama2クラスで読み込むと発生
    • 対策:AutoModelを利用
  • 401 Client Error
    • ゲートモデルはAPIトークンが必要
    • 対策:hf_tokenを指定
  • パディングトークン未定義エラー
    • 一部トークナイザーで発生
    • 対策:padding=Falseに設定

謝辞・貢献

  • SimJeg 氏のKaggle競技用コードに多くを依拠
  • GitHub でのStarやコーヒーサポート歓迎
  • 貢献や議論も大歓迎

引用方法

  • 論文等で利用する場合は以下のBibTexを参照
@software{airllm2023,
  author = {Gavin Li},
  title = {AirLLM: scaling large language models on low-end commodity computers},
  url = {https://github.com/lyogavin/airllm/},
  version = {0.0},
  year = {2023},
}

スポンサー・関連サービス

  • Bloome :AIエージェントをクラウドで構築・運用可能なIMプラットフォーム
    • チームチャットにAIアシスタントを追加し、ワンクリック実行や共有が可能
    • Bloome公式サイト

Hackerたちの意見

まだちょっと混乱してるんだけど、これって何を追加するの?フルサイズのオープンウェイトモデルを動かしたいとするじゃん。128GBのm3 maxのノートパソコンがあるんだけど、これは要するに必要に応じてレイヤーを読み込んだり出したりするってこと?つまり、フルモデルをディスクにダウンロードする必要はあるけど、RAMの要求はかなり減るってこと?READMEにはHuggingFaceに接続する必要があるって書いてあったから、もしかしたらフルモデルをダウンロードしなくてもいいのかな?

HuggingFaceのモデル識別子を指定すれば、ダウンロードするんじゃないかな。これを回避する方法はないと思う。要するに、コアとアクティブなレイヤーだけを常に読み込んで、ディスクからレイヤーをストリーミングしてる感じだね。こういうソリューションは他にもいくつかあって、もし私の理解が正しければ、これはmmap実装やストリーミングエキスパートよりも多分良いと思う。

「これってどれくらい遅いの?」って思ってる人のために、IIUCによれば、Kimi K3はRTX 6000 Ada(48GB)で292秒/トークンかかるみたいだよ。 https://github.com/lyogavin/airllm/releases/tag/v3.1.0

あはは、ありがとう!READMEのラベルのないグラフはtpsだと思ってたけど、sptだったんだね!

「VRAMに収まらない大きなモデルを動かす」プロジェクトは必要なステップだと思うけど、今のところ誰かにとって実際に役立ってるのかな?例えば、これらの技術を使って16〜32GBのマシンで大きなQwenを動かしてる人、いる?

これ、J/tokenでどれくらい測れるんだろう。

それは0.003トークン/秒だね。通常30トークン/秒(1時間で108k出力トークン)で終わる仕事をこのペースでやると、416日かかることになる。100ワット使ってると、その間に電気代で124.61ドルかかるし、他のことにデバイスを使えなくなるし、デバイスからの騒音や熱もある。124ドルで、Moonshotの公式Kimi K3 API料金(キャッシュ入力1Mあたり0.30ドル、新鮮な入力1Mあたり3ドル、新鮮な出力1Mあたり15ドル)を使えば、4200万の新鮮な入力トークン、または830万の生成された出力トークンを好きな組み合わせで買える。つまり、80倍高くて、416日待たなきゃいけないってこと。

スカラムーチのトークン数で言うと、どれくらいになるの?

コーディングのスピードに合ってる…まあ、いいか。

その時点で、これって単にCPUでモデルを動かすのと比べてどうなの?

292トークン/sって読み間違えて、一瞬ワクワクしちゃったのは俺だけじゃないよね?

「CPUで動かす」とか1GBのRAMを使うっていう話をよく見るけど、短く言うと、1MBのRAMや286で動かすこともできるよ。ただ、最初のトークンが出るまでに数年かかるけどね。これが変わってないっていう証拠は、NVIDIAの株価だよ。

Hacker Newsで議論の続きを見る