LLMをローカルで動かしたいけれど、VRAM不足で諦めた経験はないでしょうか。富士通が開発するオープンソースツール「OneComp」を使えば、たった1行のコマンドでモデルを約1/4に圧縮できます。
この記事でわかること
- OneCompとは何か、どんな課題を解決するのか
- v1.1.0で追加されたGemma 4対応の詳細
- 独自の日本語キャリブレーションによる性能維持の仕組み
- インストールから圧縮実行までの手順
LLMの圧縮が必要な理由
大規模言語モデル(LLM)は高い性能を持つ一方、数十GBのVRAMを必要とします。たとえばGemma 4の31Bパラメータモデルをそのまま動かすには、60GB以上のGPUメモリが必要です。個人の開発環境や中小規模のサーバーでは、この要件がそのままハードルになります。
モデル圧縮(量子化)は、重みの精度を下げてモデルサイズを縮小する技術です。ただし従来の量子化ツールは、対象モデルごとに設定を調整する必要がありました。ビット幅の選択、キャリブレーションデータの準備、レイヤーごとの最適化など、専門知識が求められる作業が多くあります。
OneCompはこの問題を解決するために作られました。
OneCompの概要
OneCompは富士通が開発したPython製のLLM圧縮ライブラリです。MITライセンスで公開されており、GitHubで343スターを獲得しています(2026年4月時点)。NeurIPS 2025で発表されたQuantization Error Propagation(QEP)を実装しており、学術的な裏付けもあります。
最大の特徴は「1行で圧縮が完結する」という設計思想です。以下のコマンドだけで、GPUのVRAM容量を自動検出し、レイヤーごとに最適なビット幅を割り当て、量子化と評価、保存まで一括で実行します。
onecomp gemma-4-31B
Python APIからも同様にシンプルに実行できます。
from onecomp import Runner
Runner.auto_run(model_id="gemma-4-31B")
v1.1.0の主な変更点
2026年4月28日にリリースされたv1.1.0では、対応モデルが大幅に拡大しました。
Gemma 2 / 3 / 4への対応がこのリリースの目玉です。Gemma 4はMixture of Experts(MoE)アーキテクチャを採用しており、専門家(Expert)の重みが3次元テンソルとして融合されています。OneCompはこれを自動的に分解し、レイヤーごとの量子化に対応させます。VLM(Vision Language Model)にも対応し、画像エンコーダや音声エンコーダは量子化対象から自動的に除外されます。
Custom Calibration機能も新たに追加されました。従来はC4データセットでのキャリブレーションのみでしたが、v1.1.0ではWikiText-2やカスタムデータセット(.txt、.json、.csv、.parquetなど)を指定できます。用途に応じたキャリブレーションデータを使うことで、特定ドメインでの精度を高められます。
そのほかの主要な新機能は以下の通りです。
- LPCD(Layer-Projected Coordinate Descent): レイヤー単位を超えてサブモジュール群(QK / VO / MLPなど)を同時最適化する統合フレームワーク
- Block-wise PTQ: 量子化後にブロック単位で蒸留を行い、精度を回復させる後処理
- vLLMプラグイン統合: 圧縮したモデルをvLLMで直接サーブでき、Open WebUIと組み合わせればブラウザからチャットできる
日本語性能を維持する独自キャリブレーション
OneCompの開発元である富士通は、日本語に特化したキャリブレーションを用意しています。開発者のIchikawa氏によると、独自の日本語キャリブレーションを適用することで、モデルサイズを約1/4に圧縮しながら日本語性能を維持できます。さらに日本語でのコーディングタスクでは、圧縮前の元モデルを上回る性能を達成したとのことです。
汎用的なキャリブレーションデータ(英語中心のC4など)で量子化すると、日本語の精度が不均一に劣化する問題がありました。日本語トークンの出現頻度が低いため、量子化誤差が日本語に偏って蓄積するためです。言語固有のキャリブレーションはこの課題への有効な対策です。
インストールと使い方
インストールはpipで完了します。事前にPyTorchのインストールが必要です。
pip install torch --index-url https://download.pytorch.org/whl/cu128
pip install onecomp
圧縮を実行するには、CLIでモデル名を指定するだけです。
onecomp meta-llama/Llama-3-8B
OneCompがGPUのVRAMを検出し、AutoBitアルゴリズムでレイヤーごとの最適なビット幅(2/3/4/8ビット)を自動割り当てします。処理が完了すると、圧縮済みモデルが保存されます。
カスタムキャリブレーションを使う場合は、CalibrationConfigで指定します。
from onecomp import Runner
from onecomp.calibration import CalibrationConfig
config = CalibrationConfig(
calibration_dataset="path/to/your/data.txt",
max_length=2048,
num_calibration_samples=512
)
Runner.auto_run(
model_id="gemma-4-31B",
calibration_config=config
)
GGUFやAutoGPTQとの違い
既存のLLM量子化ツールとして、llama.cppのGGUF変換やAutoGPTQが広く使われています。これらとOneCompの違いを整理します。
GGUF変換は手軽ですが、全レイヤーに同じビット幅を適用します。重要なレイヤーと重要でないレイヤーを区別しないため、精度の劣化が均一に発生します。OneCompのAutoBitは、レイヤーごとに異なるビット幅を割り当てる混合精度量子化により、同じモデルサイズでもより高い精度を実現します。
AutoGPTQはGPTQ量子化の定番ツールですが、ビット幅やグループサイズなどのパラメータを手動で設定する必要があります。OneCompはVRAM容量から最適な設定を自動計算するため、量子化の専門知識がなくても使えます。加えて、QEPやLPCDといった誤差補正手法を組み合わせることで、同じビット幅でも高い精度を維持します。
対応モデルについては、Llama、Qwen3、Gemma 2/3/4が検証済みです。そのほかのHugging Face互換モデルも動作する可能性がありますが、公式には未検証となっています。
まとめ
OneComp v1.1.0は、Gemma 4を含むMoEモデルへの対応、カスタムキャリブレーション、LPCDやBlock-wise PTQといった精度回復手法の追加により、実用性が大きく向上しました。1行コマンドで圧縮が完結する設計は、量子化の専門知識を持たない開発者にとって特に価値があります。VRAMに制約のある環境でLLMを活用したい方は、試してみる価値があるツールです。