Llama.cpp
|
| |
|
| |
| 作者 | Georgi Gerganov |
|---|---|
| 開発元 | Georgi Gerganov とコミュニティ |
| 初版 | 2023年3月10日[1] |
| 最新版 |
v0.5.0
/ 2026年9月23日 |
| リポジトリ |
github |
| プログラミング 言語 | C++、C |
| 種別 | 大規模言語モデル用ライブラリ |
| ライセンス | MIT License[2] |
llama.cppは、MetaのLLaMAモデルのような様々な大規模言語モデルの推論を実行する、オープンソースのソフトウェアライブラリである[3]。汎用的なテンソルライブラリであるGGMLプロジェクトと並行して共同開発されている[4]。
ライブラリにはコマンドラインツールが含まれており[5]、シンプルなWebインタフェースを持つサーバも付属している[6][7]。
llama.cppは、OllamaやLM Studioを含むほぼすべてのローカル推論ツールのコアとして、事実上の標準と見なされている[8]。
背景
2022年9月末にかけて、Georgi Gerganovはテンソル代数を実装するCライブラリであるGGMLライブラリの開発を開始した。Gerganovは、厳密なメモリ管理とマルチスレッド化を意図してこのライブラリを開発した。GGMLの作成は、ファブリス・ベラールのLibNCにおける取り組みに触発されたものである[9]。
llama.cppの前に、GerganovはOpenAIによる音声認識モデルであるWhisperを実装したwhisper.cppと呼ばれる同様のライブラリに取り組んでいた[10]。
開発
llama.cppは2023年3月にGeorgi Gerganovによって、依存関係のない純粋なC/C++によるLLaMA推論コードの実装として開発が開始された。これにより、プロジェクトの目標であったGPUやその他の専用ハードウェアを搭載していないコンピュータでのパフォーマンスが向上した[3][11][12]。llama.cppはCPUだけで実行できたため、専用ハードウェアを持たないユーザーの関心を集めた。当初はCPU向けに設計されていたが、後にGPUおよびNPUバックエンドのサポートが追加された[13]。2026年5月現在、GitHubで10万9000以上のスターを獲得している[14]。
2024年4月30日には、FlashAttentionが導入された[要出典]。
2025年4月10日にはlibmtmdが導入され、これまで停滞していたマルチモーダルモデルのサポートが再活性化された[要出典]。
2025年12月17日、新しいGUIバインディングを通じてAndroidおよびChromeOSデバイスでの完全なアクセラレーションが導入され[15]、クロスコンパイルしてadbシェルでCLIを実行するというこれまでのアプローチを超えた、ネイティブアプリ開発への道が開かれた[11][16][17]。
アーキテクチャ
llama.cppは、x86、ARM、Metal、BLAS、BLIS、zDNN、ZenDNN、SYCL、MUSA、CUDA、HIP、CANN、OpenCL、RPC、およびVulkan(バージョン1.2以降)を含む多数のハードウェアターゲットをサポートしている[18][19][20][21]。これらのバックエンドはGGMLテンソルライブラリを構成し、フロントエンドのモデル固有のllama.cppコードによって使用される[22]。llama.cppは、最適化のためにいくつかのCPU拡張命令を利用している。
- x86-64向けのAVX、AVX2、AVX-512、AVX-VNNI、およびAMX。
- AArch64(ARM64)向けのNeon、i8MM、SVE、SVE2、SMEおよびSME2。
- S390x向けのVXE2(Vector Enhancement Facility 2)。
- Appleシリコンは、プロジェクトにとって重要なターゲットである[14][23]。
llama.cppは、エッジデバイスでの推論を目的とした様々な機能をサポートしている。
- 事前モデル量子化およびオンザフライのKVキャッシュ量子化[24]。
- 投機的デコード[7]。
- システムRAMへのモデルレイヤーの部分的なオフロード。これにより、デバイスはVRAMに単独で収まりきらないほど大きなモデルをロードできるようになる。
さらに、llama.cppはフロントエンド通信のための様々な機能とAPIをサポートしている。
GGUFファイルフォーマット
|
| |
| 拡張子 |
.gguf |
|---|---|
| マジック ナンバー |
0x46 0x47 0x55 |
| 開発者 | Georgi Gerganov とコミュニティ |
| 初版 | 2023年8月22日[25] |
| 最新版 |
v3[26] |
| 種別 | 機械学習テンソル |
GGUF(GGML Universal File)[27]ファイルフォーマットは、テンソルとメタデータの両方を単一のファイルに格納するバイナリフォーマットであり、モデルデータの高速な保存と読み込みのために設計されている[28]。他のモデルアーキテクチャへのサポートが追加される中で、後方互換性をより良く維持するために、llama.cppプロジェクトによって2023年8月に導入された[13][29]。これはGGMLのようなプロジェクトで使用されていた以前のフォーマットに取って代わるものであり、通常はPyTorchなどの異なる機械学習ライブラリで開発されたモデルを変換することによって生成される[28]。
設計
GGUFは量子化、つまりモデルの重みの精度を下げる行為に焦点を当てている。これにより、モデルの精度が低下する代償として、メモリ使用量の削減と速度の向上がもたらされる[30][29]。
GGUFは、2ビットから8ビットの量子化整数型[31]、float32、float16、bfloat16などの一般的な浮動小数点データフォーマット、および1.58ビット量子化をサポートしている[5]。
GGUFには、トークナイザーの語彙、コンテキスト長、テンソル情報、その他の属性など、GPTのような言語モデルを実行するために必要な情報が含まれている[32]。
バイトレベル構造(リトルエンディアン)
| バイト数 | 説明[33] |
|---|---|
| 4 | GGUFマジックナンバー、現在は0x47 0x47 0x55 0x46に設定 |
| 4 | GGUFバージョン、現在は3に設定 |
| 8 | UINT64 tensor_count: テンソルの数 |
| 8 | UINT64 metadata_kv_count: メタデータのキーと値のペアの数 |
| 可変 | メタデータブロック、metadata_kv_count個のキーと値のペアを含む |
| 可変 | テンソル情報ブロック、tensor_count個の値を含む |
| 可変 | uint8_t tensor_data[]、重みビットブロック |
メタデータブロック
// メタデータの例
general.architecture: 'llama',
general.name: 'LLaMA v2',
llama.context_length: 4096,
... ,
general.file_type: 10, // (通常は量子化レベルを示す。ここでは "MOSTLY_Q2_K")
tokenizer.ggml.model: 'llama',
tokenizer.ggml.tokens: [
'<unk>', '<s>', '</s>', '<0x00>', '<0x01>', '<0x02>',
'<0x03>', '<0x04>', '<0x05>', '<0x06>', '<0x07>', '<0x08>',
...
],
...
テンソル情報ブロック
// n番目のテンソル
name: GGUF string, // 例: "blk.0.ffn_gate.weight"
n_dimensions: UINT32, // 例: 2
dimensions: UINT64[], // 例: [ 4096, 32000 ]
type: UINT32, // 例: 10 (通常は量子化レベルを示す。ここでは "GGML_TYPE_Q2_K")
offset: UINT64 // tensor_dataブロックの開始位置からの相対的な開始位置
// (n+1)番目のテンソル
...
モデル
Llama.cppは、LLaMA、Mistral、Gemma、DeepSeek、gpt-oss、Phi、Qwenなど、多くの大規模言語モデルをサポートしている[34]。
脚注
- ↑ “Initial release · ggerganov/llama.cpp@26c0846” (英語). GitHub. 2024年5月15日閲覧。
- ↑ “llama.cpp/LICENSE at master · ggerganov/llama.cpp” (英語). GitHub. 2026年10月15日閲覧。
- 1 2 Connatser, Matthew. “How this open source LLM chatbot runner hit the gas on x86, Arm CPUs” (英語). theregister.com. 2024年4月15日閲覧。
- ↑ Gerganov, Georgi (2024年5月17日). “ggerganov/ggml”. GitHub. 2026年10月15日閲覧。
- 1 2 Mann, Tobias (2024年7月14日). “Honey, I shrunk the LLM! A beginner's guide to quantization – and testing it”. theregister. 2026年10月15日閲覧。
- ↑ Alden, Daroc. “Portable LLMs with llamafile [LWN.net]”. lwn.net. 2024年7月30日閲覧。
- 1 2 Mann, Tobias (2024年12月15日). “Intro to speculative decoding: Cheat codes for faster LLMs” (英語). theregister. 2026年10月15日閲覧。
- ↑ Shariq Murtuza (2026-03-25). “Forensic Implications of Localized AI: Artifact Analysis of Ollama, LM Studio, and llama.cpp”. arXiv 2026年10月15日閲覧。.
- ↑ “Bringing Whisper and LLaMA to the masses with Georgi Gerganov (Changelog Interviews #532)” (英語). Changelog (2023年3月22日). 2024年7月28日閲覧。
- ↑ “ggerganov/whisper.cpp”. GitHub. 2026年10月15日閲覧。
- 1 2 Edwards, Benj (2023年3月13日). “You can now run a GPT-3-level AI model on your laptop, phone, and Raspberry Pi”. arstechnica.com (英語). 2024年4月15日閲覧.
- 1 2 Wiest, Isabella Catharina; Ferber, Dyke; Zhu, Jiefu; van Treeck, Marko; Meyer, Sonja K.; Juglan, Radhika; Carrero, Zunamys I.; Paech, Daniel et al. (2024). “Privacy-preserving large language models for structured medical information retrieval”. npj Digital Medicine 7 (257): 257. doi:10.1038/s41746-024-01233-2. PMC 11415382. PMID 39304709.
- 1 2 Rajput, Saurabhsingh; Sharma, Tushar (2024-06-04). “Benchmarking Emerging Deep Learning Quantization Methods for Energy Efficiency”. 2024 IEEE 21st International Conference on Software Architecture Companion (ICSA-C). pp. 238–242. doi:10.1109/ICSA-C63560.2024.00049. ISBN 979-8-3503-6625-9
- 1 2 “ggerganov/llama.cpp”. GitHub. 2026年10月15日閲覧。
- ↑ “llama.cpp/docs/android.md at master” (英語). ggml-org/llama.cpp. GitHub. 2025年12月20日閲覧。
- ↑ Hood, Stephen. “llamafile: bringing LLMs to the people, and to your own computer” (英語). Mozilla Innovations. 2024年7月28日閲覧。
- ↑ “Democratizing AI with open-source language models”. lwn.net. 2024年7月28日閲覧。
- ↑ Gerganov, Georgi (2024年8月13日). “Introduction to ggml”. Huggingface. 2026年10月15日閲覧。
- ↑ Kluska, Piotr; Castelló, Adrián; Scheidegger, Florian; Malossi, A. Cristiano I.; Quintana-Ortí, Enrique (2024-06). “QAttn: Efficient GPU Kernels for mixed-precision Vision Transformers”. Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR) Workshops 2026年10月15日閲覧。.
- ↑ Zhang, Jianyu; Meng, Hengyu; Hu, Ying; Luo, Yu; Duan, Xiaoping; Majumder, Abhilash (2024-07). “Run LLMs on Intel GPUs Using llama.cpp” (英語). The Parallel Universe (Intel) (57): 34–37 2026年10月15日閲覧。.
- ↑ Bolz, Jeff (2025年2月11日). Machine Learning in Vulkan with Cooperative Matrix 2 (PDF) (英語). Cambridge, UK: The Khronos Group/Nvidia. 2026年10月15日閲覧.
- ↑ Pounder, Les (2023年3月25日). “How To Create Your Own AI Chatbot Server With Raspberry Pi 4” (英語). tomshardware.com. 2024年4月16日閲覧。
- ↑ Larabel, Michael. “Llamafile 0.7 Brings AVX-512 Support: 10x Faster Prompt Eval Times For AMD Zen 4” (英語). www.phoronix.com. 2026年10月15日閲覧。
- ↑ Walkowiak, Bartosz; Walkowiak, Tomasz (2024). “Implementation of language models within an infrastructure designed for Natural Language Processing”. International Journal of Electronics and Telecommunications 70 (1): 153-159. doi:10.24425/ijet.2024.149525 2024年5月8日閲覧。.
- ↑ “GGUF by ggerganov · Pull Request #2398 · ggerganov/llama.cpp” (英語). GitHub. 2026年10月15日閲覧。
- ↑ “ggml/docs/gguf.md at master · ggerganov/ggml” (英語). GitHub. 2026年10月15日閲覧。
- ↑ “ggerganov/llama.cpp/gguf-py/README.md”. GitHub. 2024年11月10日閲覧。
- 1 2 “GGUF”. huggingface.co. 2024年5月9日閲覧。
- 1 2 Mucci, Tim (2024年7月3日). “GGUF versus GGML” (英語). www.ibm.com. 2024年7月26日閲覧。
- ↑ Labonne, Maxime (2023年11月29日). “Quantize Llama models with GGUF and llama.cpp” (英語). Medium. Towards Data Science. 2024年5月9日閲覧。
- ↑ Cabezas, Darío; Fonseca-Delgado, Rigoberto; Reyes-Chacón, Iván; Vizcaino-Imacaña, Paulina; Morocho-Cayamcela, Manuel (2024). “Integrating a LLaMa-based Chatbot with Augmented Retrieval Generation as a Complementary Educational Tool for High School and College Students”. Proceedings of the 19th International Conference on Software Technologies. pp. 395–402. doi:10.5220/0012763000003753. ISBN 978-989-758-706-1
- ↑ Dong, Bo; Lin, Jun; Yu, Zhentao; Xu, Zhenzhong; Luo, Yu; Chang, Hanwen; Shen, Haihao (2024-07). “Accelerating GGUF Models with Transformers” (英語). The Parallel Universe (Intel) (57): 28–33 2026年10月15日閲覧。.
- ↑ “GGUF specification (ggml/docs/gguf.md at master · ggml-org/ggml)” (英語). 2026年10月15日閲覧。
- ↑ “ggml-org/llama.cpp”. ggml (2026年4月19日). 2026年4月19日閲覧。