AirLLMは、70Bクラスの大規模言語モデルを量子化や蒸留、枝刈りなしに、単一の4GB GPUで推論できるようにするPythonパッケージです。レイヤー単位でモデルをディスクからストリーミング読み込みすることで、VRAM容量の制約を回避します。Llama、Qwen、ChatGLM、Mixtral、DeepSeek-V3、Kimi K3など多数のモデルアーキテクチャに対応した専用実装をairllmディレクトリに持っています。
air_llm/airllm/airllm_base.pyを中核に、モデルをHuggingFaceのレイヤー単位で分割・保存し(persist配下のsafetensor_model_persister.pyなど)、推論時に必要なレイヤーだけを都度ディスクからGPUへロードして計算後に解放する仕組みです。これにより全レイヤーを同時にVRAMへ載せる必要がなくなります。auto_model.pyのAutoModelがHuggingFaceのrepo IDからモデル種別を判定し、airllm_qwen.pyやairllm_mixtral.pyなど個別クラスへ振り分けます(test_automodel.pyのマッピング表で確認できます)。MoE系(Kimi K3、DeepSeek-V3など)では、レイヤー全体ではなくトークンが実際にルーティングされたエキスパートだけをストリーミングする設計とREADMEに記載されています。CPU推論や非shardedモデル対応、プリフェッチによる計算とロードのオーバーラップなど、バージョンごとに機能が積み重なっています。
- STEP 01
pip install airllmを実行し、パッケージとその依存関係(transformers、accelerateなど)が入る様子を確認します。
- STEP 02
from airllm import AutoModel; AutoModel.from_pretrained(...)を呼ぶと、指定したHuggingFace repo IDのモデルが初回はダウンロードされ、レイヤー単位に分割・保存される処理が走ります(layer_shards_saving_pathで保存先を指定可能)。
- STEP 03
分割処理が終わると推論が始まりますが、レイヤーを毎回ディスクから読み込むため、通常のtransformers推論より生成速度は明らかに遅くなります。
- STEP 04
4GB前後のGPUで70Bモデルを動かす場合、初回のレイヤー分割に時間とディスク容量(元モデルとほぼ同等サイズ)が必要になる点に気づきます。
- STEP 05
MoE系モデル(Kimi K3など)を試すと、READMEに記載の追加要件(compressed-tensors、flash-attn、特定バージョンのtransformers)を先に整えないと動かないことが分かります。
手元のGPU VRAMが4GB程度しかなくても、70B級(さらにREADME記載では405Bや671B、2.8TのMoEモデルまで)のLLMをAutoModelという単一のインターフェースでロードし、通常のtransformersに近い書き方で推論できる状態が得られます。ただし引き換えに生成速度はレイヤー単位のディスクI/Oに依存するため遅くなります。
レイヤーをディスクから都度ストリーミングする方式のため、生成速度はVRAMに全モデルを載せる通常推論より大幅に遅くなる点はREADMEの仕組み上避けられません。
requirements.txtはtransformers、peft、accelerateをGitHub直参照かつバージョン固定していない、または特定コミット指定であり、環境によって依存関係の解決結果が変わる可能性があります。
Kimi K3などの新モデルは、CUDA 12ビルドのtorch、特定バージョンのtransformers(4.56.x)、flash-attn必須など、モデルごとに個別の環境要件がREADMEに明記されており、一括対応ではない点に注意が必要です。
README本文の一部に外部サービスへの広告的リンク(AIエージェント推奨など)が含まれており、リポジトリの技術内容とは無関係な記述が混在しています。
VRAMが乏しい環境で大型モデルをとにかく動かしてみたい人、量子化を避けて元の重みのまま70B以上のモデルを試したい研究者や個人開発者に向いています。逆に生成速度が重要な本番用途には、ファイルツリーとコードの構成(レイヤー単位のpersist機構、AutoModelのモデル振り分けロジック)から見て向かないと判断できます。ソースコードとテスト(test_automodel.py)、CI設定(release.yml)が実在し、モデル対応クラスも実ファイルとして揃っているため、README記載の仕組みの説明自体は信頼できますが、実際の推論速度や新モデルの動作可否はREADMEの記述に依存しており、この分析だけでは数値的な速度検証はできていません。