llama.cppとは
C/C++で実装された、CPUでも動作する軽量なLLM推論ライブラリ
ひとことで言うと
パソコンのCPUだけでも動く、軽量なAIモデル実行用のプログラム。
概要
llama.cpp(ラマ・シーピーピー)とは、Georgi GerganovによってC/C++で実装された、LLMの推論に特化した軽量なライブラリ。 Pythonの機械学習フレームワークに依存せず、量子化により4bit程度までモデルサイズを圧縮することで、GPUを持たない一般的なノートPCやスマートフォンでもLLMを動作させられるようにした点で、ローカルLLM実行の普及に大きく貢献した。 モデルの重み・量子化情報を1ファイルにまとめたGGUF形式は、llama.cppプロジェクトが定義したフォーマットであり、OllamaやLM Studio等、多くのローカルLLMツールの基盤技術として採用されている。
背景
当初のLLM推論はPyTorch等のPythonフレームワークとGPUを前提とすることが多く、一般的なノートPCでの実行は難しかった。 llama.cppは、C/C++による軽量な実装と積極的な量子化により、GPUなしでも実用的な速度でLLMを動かせるよう開発された。
歴史
2023年3月: Georgi GerganovがMeta LLaMAのCPU上での推論を可能にするllama.cppを公開。 以降、量子化フォーマット(GGML、後のGGUF)の整備や対応モデルの拡大が進み、多くのローカルLLMツールの基盤技術として採用されるようになった。
アーキテクチャ
モデルの重みを4bit等の低ビット精度に量子化したGGUF形式のファイルとして扱い、CPUの命令セットを活用した行列演算により推論する。 GPUが利用可能な環境では、一部の計算をGPUへオフロードすることも可能。
コード例
llama-cpp-pythonでの読み込み(概念例)
from llama_cpp import Llama
llm = Llama(model_path="./model.Q4_K_M.gguf", n_ctx=2048)
output = llm("Q: 日本の首都はどこですか? A:", max_tokens=100)
print(output["choices"][0]["text"])利点
欠点
比較
関連用語
よくある質問
GGUFとは?
llama.cppプロジェクトが定義した、量子化されたモデルの重みとメタデータを1つのファイルにまとめたフォーマット。 OllamaやLM Studio等、多くのローカルLLMツールで標準的に使われている。
llama.cppはPythonからも使える?
llama-cpp-python等のPythonバインディングが提供されており、Pythonのコードから直接呼び出すこともできる。
参考文献
- GitHubggml-org/llama.cpp