
2026/08/03 20:15
単一の4GB GPUでAirLLM 70Bを実行する
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
以下の改訂は、リストに記載されたすべての主要なポイントを網羅しつつ、ナラティブを明確かつ簡潔に保つものです:
AirLLM は、量子化、蒸留、または剪定を施さずに低エンドのハードウェア上で極めて大規模な言語モデル(Kimi K3 2.8T パラメータを含む)を実行することを可能にするために、アクティブな専門家のみをストリーミングする疎な MoE アーキテクチャを利用します。具体的な例としては、単一の 4GB GPU に搭載された 70B モデル、3.72GB の VRAM に搭載された Kimi K3、約 12GB で動作する DeepSeek-V3(671B)、および約 3GB で動作する Qwen3-235B-A22B が挙げられます。このライブラリは、Llama 2/3/3.1/3.3/4、Qwen、DeepSeek、Mistral、Mixtral、Phi、Gemma、ChatGLM、Baichuan、および InternLM を含むほぼ全ての主要なオープンソース LLM ファミリーをサポートしています。バージョン 3.0(2026 年 6 月)では、FP8 プリシジョンが追加され、DeepSeek-V3 のような最新モデルへのアクセスが AutoModel を介して統一されました。Kimi K3 については、必要な依存関係として compressed-tensors、flash-attn、CUDA 12 PyTorch ビルド、および transformers 4.56.x が挙げられます。MacOS Apple Silicon サポート(単一のカード上で 70B モデルを実行)は、mlx ライブラリ(v2.8.2)を通じて利用可能です。構成オプションには、
compression('4bit'、'8bit'、または 'None')、プロファイリングモード、レイヤーシャードの保存パス、およびディスク使用量を半減させるために delete_original が含まれます。モデル分割は大きなディスク空間を消費するため、「MetadataIncompleteBuffer」などのエラーは、しばしば HuggingFace キャッシュ容量が不十分なことを示しています。プリフェッチングにより、モデル読み込みと計算が重複され、対応するアーキテクチャ(現状では AirLLMLlama2 のみ)においては推論速度が最大 10% 向上します。meta-llama/Llama-2-7b-hf などのゲート付きモデルは、初期化時に HuggingFace API トークン(hf_token)を渡す必要があります。このプロジェクトは、SimJeg の Kaggle コンテストからのコードに基づいており、AirLLM(著者:Gavin Li、2023 年)として引用されています。本文
AirLLM:軽量 GPU で超大規模 LLM を実行するガイド
AirLLM は推論時のメモリ使用量を劇的に削減し、特別な最適化なしに単一の 4GB GPU で大規模言語モデルを動作させるためのライブラリです。
主な特徴と実績
- メモリ効率の向上: 700 億パラメータのモデルも単一 4GB GPU で動作します。
- スパース型 MoE の活用: トークンごとに専門知識(expert)を選択してストリーミングさせ、層全体を保持する必要をなくします。
- 対応可能な超大規模モデル例:
- Llama 3.1 (405B): 8GB GPU で動作
- DeepSeek-V3 (671B): 約 12GB GPU で動作
- Kimi K3 (2,800B): 単一 RTX 6000 Ada で 3.72GB の VRAM で動作
更新履歴 (Changelog)
- [2026 年 7 月] Kimi K3 (2.8T) サポート開始
- 最大規模のオープンソースモデルが、単一カード(RTX 6000 Ada)でわずか 3.72GB の VRAM で動作します。
- Expert 毎ストリーミング方式により、実際に利用される専門家のみを読み込みます。
- 要件:
が必須です(モデルコードにより強制されます)。pip install compressed-tensors flash-attn - 環境: CUDA 12 ビルドの torch と transformers 4.56.x を必要とします。
- [2026 年 6 月] バージョン 3.0
- FP8 モデルサポート追加および最新モデルへの対応。
- DeepSeek-V3 (約 12GB)、Qwen3-235B (約 3GB) など、全ての主要モデルを単一の
で実行可能に。AutoModel
- [2024 年]
- Qwen2.5 サポート開始 (v2.11.0)
- CPU 推論および非分割モデルサポート開始 (v2.10.1)
- Llama3.1 405B サポート開始、8bit/4bit 量化対応 (v2.11.0 以降)
- [2023 年]
- macOS 上での 700 億パラメータモデル実行サポート開始 (v2.8.2)
- AirLLMMixtral, AutoModel, プレフェッチ機能など、様々な機能を追加・改善。
- AirLLM 初版リリース。
すばやく始める (Quick Start)
1. パッケージのインストール
まずは pip パッケージをインストールしてください。
2. 推論の実行
AutoModel を初期化し、HuggingFace のリポジトリ ID またはローカルパスを入力します。
from airllm import AutoModel MAX_LENGTH = 128 # リポジトリ ID をそのまま渡すだけで動作します: model = AutoModel.from_pretrained("Qwen/Qwen3-32B") # 同様に、より大きなモデルも実行可能です: # model = AutoModel.from_pretrained("Qwen/Qwen3-235B-A22B") # ~3GB で動作 # model = AutoModel.from_pretrained("deepseek-ai/DeepSeek-V3") # ~12GB で動作 # ローカルパスを使用する場合: # model = AutoModel.from_pretrained("/path/to/local/model") 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=MAX_LENGTH, 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)
注意: 推論時、モデルは最初に層ごとに分解され保存されます。HuggingFace のキャッシュディレクトリに十分なディスク容量があることを確認してください。
モデル圧縮 (Compression)
ブロック単位量子化に基づく機能で、推論速度を最大 3 倍向上させます。精度の低下はほとんどありません。
有効にする手順
- bitsandbytes のインストール:
pip install -U bitsandbytes - AirLLM の更新確認:
pip install -U airllm - モデル初期化時に引数を指定:
from airllm import AutoModel model = AutoModel.from_pretrained("garage-bAInd/Platypus2-70B-instruct", compression='4bit') # '8bit' も指定可
圧縮と量子化の違い
- 標準的な量子化: 重みとアクティベーションの両方を量子化する必要があるため、精度維持が難しい。
- AirLLM コンプRESSION: ボトルネックはディスク読み込みであるため、重みの部分のみを量子化すればよく、精度を確保しやすい。
設定オプション (Configurations)
モデル初期化時の主要な引数:
| 引数 | 説明 | 値の例 |
|---|---|---|
| compression | ブロック単位量子化の有無 | , , (デフォルト) |
| profiling_mode | 実行時間消費量の出力有無 | , (デフォルト) |
| layer_shards_saving_path | 分割モデルの保存パス | ローカルパス指定 |
| hf_token | ゲート付きモデルの認証トークン | HuggingFace API トークン |
| prefetching | モデル読み込みと計算の重畳機能 | (デフォルト, 限定) |
| delete_original | 元の HF モデルを削除してディスク容量節約 | , |
MacOS での動作
Linux と同様に、必要なライブラリをインストールしてコードを実行すれば動作します。
要件
とmlx
のインストールが必要。torch- Python ネイティブのインストールが必要な場合があります。
- 対応プラットフォーム: Apple Silicon 専用。
サンプルコード (MacOS)
from airllm import AutoModel MAX_LENGTH = 128 model = AutoModel.from_pretrained("THUDM/chatglm3-6b-base") input_text = ['What is the capital of China?'] input_tokens = model.tokenizer(input_text, return_tensors="pt", return_attention_mask=False, truncation=True, max_length=MAX_LENGTH, padding=True) generation_output = model.generate( input_tokens['input_ids'].cuda(), max_new_tokens=5, use_cache=True, return_dict_in_generate=True) print(model.tokenizer.decode(generation_output.sequences[0]))
対応モデル (Supported Models)
実質的なすべての人気オープン LLM と**开箱即用 (即座に動作)**します。主なファミリー:
- 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
小さな GPU で大きなモデルを実行するコツ
AirLLM は常に GPU に層を 1 つしか保持しません。必要な VRAM は総モデルサイズではなく、各層のサイズによって決まります。これにより、6710 億パラメータのモデルもホビー用カードで動作します。
| モデル | サイズ | 必要 VRAM (目安) |
|---|---|---|
| Qwen3 / Mistral / Phi | ≈8B | ~1–2 GB |
| Qwen3-30B / Mixtral (MoE) | 30–47B | ~1–3 GB |
| Qwen3-235B (MoE) | 235B | ~3 GB |
| Llama 3.x (全精度) | 70B | ~4 GB |
| Llama 3.1 | 405B | ~8 GB |
| DeepSeek-V3 | 671B | ~12 GB |
すべてのモデルは単一行のコードで実行可能です。特別なセットアップは不要。
FAQ (よくある質問)
1. MetadataIncompleteBuffer
エラーが発生した
MetadataIncompleteBuffer- 原因: ディスク容量不足。モデル分割プロセスに大量の一時ファイルが必要。
- 解決策: ディスク容量を増やすか、HuggingFace の
をクリアして再実行してください。.cache
2. ValueError: max() arg is an empty sequence
エラーが発生
ValueError: max() arg is an empty sequence- 原因:
クラスで QWen や ChatGLM モデルを読み込んでいるため。AirLLMLlama2 - 解決策:
を使用してください。AutoModelfrom airllm import AutoModel # AirLLMLlama2 の代わりにこちらを使用 model = AutoModel.from_pretrained("Qwen/Qwen-7B")
3. 401 Client Error: Repo model ... is gated
エラー
401 Client Error: Repo model ... is gated- 原因: ゲート付きモデルへのアクセスに HuggingFace API トークンが必要。
- 解決策:
引数にトークンを渡す。hf_tokenmodel = AutoModel.from_pretrained("meta-llama/Llama-2-7b-hf", hf_token='YOUR_HF_API_TOKEN')
4. ValueError: Asking to pad but the tokenizer does not have a padding token
ValueError: Asking to pad but the tokenizer does not have a padding token- 原因: トークナイザーにパディングトークンがない設定。
- 解決策: パディングを無効化 (
) か、設定を調整する。padding=Falseinput_tokens = model.tokenizer(input_text, ..., padding=False)
引用とサポート
BibTeX 引用
AirLLM が研究に役立つ場合は、以下のように引用してください。
@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}, }
クレジット
多くのコードは Kaggle 競技会での SimJeg 氏の作業に基づいています。
- GitHub: @SimJeg
- コードと議論への感謝を表明します。
スポンサー情報:Bloome
クラウド上で AI エージェントチームをゼロセットアップで構築・実行可能プラットフォーム。
- グループチャットにスキルを追加し、ワンクリックで実行・共有。
- @mention でタスクを割り当てられる AI アシスタント機能付き。
👉 Bloome を試す (リンク準備中)
コントリビュート
コードへの貢献やアイデア、議論を歓迎します!
- 有用であれば ⭐ またはコーヒーを購入してください!