概要
- 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倍の速度向上
クイックスタート
- インストール方法
- 推論実行例
- 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のみ対応
- mlx と torch のインストールが必要
- 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やコーヒーサポート歓迎
- 貢献や議論も大歓迎
引用方法
@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公式サイト