llama.cppは、MetaのLlamaモデルなどの様々な大規模言語モデルに対して推論を実行するオープンソースのソフトウェアライブラリである。これは、C言語で書かれた汎用テンソルライブラリであるGGMLプロジェクトと共同開発されている。このライブラリは、専用GPUを搭載しないコンピュータ上での効率的な実行に焦点を当てており、機械学習モデルを標準的なハードウェアで利用可能にしている。
このプロジェクトには、コマンドラインツールと、シンプルなウェブインターフェースを備えたサーバーが含まれている。これは、OllamaやLM Studioを含むほぼすべてのローカル推論ツールの中核として事実上の標準となっており、ユーザーが生成AIモデルを自分のデバイス上で実行できるようにしている。
背景
2022年9月下旬、ジョージア出身の開発者Georgi Gerganovは、テンソル代数を実装するCライブラリであるGGMLライブラリの開発を開始した。Gerganovは、厳格なメモリ管理とマルチスレッド処理をGGMLの主要な目標として設計した。この開発は、テンソル計算用のCライブラリであるFabrice BellardのLibNCの研究に触発されたものである。
llama.cppを開始する前、Gerganovはwhisper.cppと呼ばれる類似のライブラリを開発しており、これはOpenAIが作成した音声認識モデルであるWhisperを実装していた。この初期のプロジェクトは、低水準言語での効率的なモデル推論に対する彼のアプローチを確立した。
開発
llama.cppは2023年3月に、外部依存関係のない純粋なC/C++でのLlama推論コードの実装として開発が開始された。このアプローチは、GPUやその他の専用ハードウェアを搭載しないコンピュータでのパフォーマンスを向上させ、これはプロジェクトの主要な目標であった。これは、専用ハードウェアを持たないユーザーの間で急速に注目を集め、中央処理装置(CPU)だけで実行できるようになった。
当初はCPU向けに設計されていたが、GPUおよびニューラル処理装置(NPU)バックエンドのサポートが後に追加された。2026年5月の時点で、このプロジェクトはGitHubで109,000以上のスターを獲得しており、その広範な採用を反映している。
主要な開発マイルストーンには以下が含まれる。FlashAttentionは2024年4月30日に導入され、アテンション機構の効率を改善した。2025年4月10日には、以前停滞していたマルチモーダルモデルのサポートを活性化するためにlibmtmdが導入された。2025年12月17日には、新しいGUIバインディングを介してAndroidおよびChromeOSデバイスでの完全なアクセラレーションが導入され、以前のクロスコンパイルやadbシェルでのコマンドラインインターフェースの実行を超えたネイティブアプリ開発が可能になった。
アーキテクチャ
llama.cppは、x86、ARM、Metal、BLAS、BLIS、zDNN、ZenDNN、SYCL、MUSA、CUDA、HIP、CANN、OpenCL、RPC、およびVulkanバージョン1.2以上を含む複数のハードウェアターゲットをサポートしている。これらのバックエンドは、フロントエンドのモデル固有のllama.cppコードによって使用されるGGMLテンソルライブラリの一部である。
このライブラリは、最適化のためにいくつかのCPU拡張機能を利用している。x86-64では、AVX、AVX2、AVX-512、AVX-VNNI、およびAMX命令セットを使用する。AArch64(ARM64)では、NEON、i8MM、SVE、SVE2、SME、およびSME2を使用する。s390xでは、Vector Enhancement Facility 2(VXE2)を使用する。Appleシリコンは、このプロジェクトの重要なターゲットである。
いくつかの機能は、エッジデバイスでの推論を対象としている。これには、事前のモデル量子化、オンザフライのキー値(kv)キャッシュ量子化、投機的デコード、およびモデルレイヤーのシステムRAMへの部分的なオフロードが含まれる。後者により、デバイスはGPU VRAMに完全に収まらないほど大きいモデルを読み込むことができる。
フロントエンド通信のために、llama.cppはv1/chat/completionsなどのOpenAI互換エンドポイントを提供し、文法ベースの出力フォーマットをJSONとしてサポートしている。これにより、クラウドサービスがライブラリと統合できるようになる。
GGUFファイル形式
GGUF(GGML Universal File)形式は、テンソルとメタデータの両方を単一のファイルに格納するバイナリ形式であり、モデルデータの高速な保存と読み込みのために設計されている。これは、他のモデルアーキテクチャのサポートが追加されるにつれて後方互換性を維持するために、2023年8月にプロジェクトチームによって導入された。
GGUFは以前のGGML形式を置き換え、通常はPyTorchなどの他の機械学習ライブラリで開発されたモデルを変換して生成される。この形式は、モデルの重みの精度を下げる行為である量子化に焦点を当てている。量子化はメモリ使用量を減らし速度を向上させるが、モデルの精度が低下するという犠牲を伴う。
GGUFは、2ビットから8ビットの量子化整数型、float32、float16、bfloat16などの一般的な浮動小数点データ形式、および1.58ビット量子化をサポートしている。これには、トークナイザーの語彙、コンテキスト長、テンソル情報、およびGPTのような言語モデルに必要なその他の属性が含まれている。
バイトレベルの構造はリトルエンディアン順序を使用し、メタデータブロックとテンソル情報ブロックに分割されている。この構造により、ストレージとの間の動的な効率的なシリアライゼーションが可能になる。<br>
モデル
llama.cppは、Llama、Mistral、Gemma、DeepSeek、gpt-oss、Phi、およびQwenを含む多くの大規模言語モデルをサポートしている。この多様性により、チャットアプリケーションからより専門的なタスクまで、様々な人工知能のユースケースに対する柔軟なソリューションとなっている。
OllamaやLM Studioなどのコミュニティツールはこのプロジェクトに基づいて構築されており、Anthropicなどの独自エコシステムをローカルインフラストラクチャで使用することが多い。