llama.cpp 概述
llama.cpp: C/C++ 中用于 LLM 推理的首选库
lama.cpp 是一个强大的开源库,旨在通过 C/C++ 实现高效的大型语言模型 (LLM) 推理。它针对从本地机器到云部署的各种硬件进行了优化,以其最少的设置和最先进的性能而著称。
什么是 llama.cpp?
lama.cpp 是一个专注于在 C/C++ 中执行 LLM 推理的项目。它的设计宗旨是在具有最少依赖项的不同硬件配置中提供出色的性能。
主要特性和优势
- 纯 C/C++ 实现: 消除了外部依赖项,简化了部署。
- Apple Silicon 优化: 利用 ARM NEON、Accelerate 和 Metal 框架,在 Apple 设备上实现最佳性能。
- x86 架构支持: 包括 AVX、AVX2、AVX512 和 AMX 支持,以优化 x86 CPU 上的性能。
- 量化: 支持 1.5 位到 8 位整数量化,从而减少内存使用并加速推理。
- GPU 加速: 自定义 CUDA 内核可在 NVIDIA GPU 上实现高效的 LLM 执行。还支持通过 HIP 支持 AMD GPU,以及通过 MUSA 支持 Moore Threads GPU。
- 混合 CPU+GPU 推理: 通过在 CPU 和 GPU 之间分配工作负载,有助于使用大于可用 VRAM 的模型。
- 多个后端: 支持 Metal、BLAS、BLIS、SYCL、MUSA、CUDA、HIP、Vulkan、CANN、OpenCL、IBM zDNN 和 WebGPU(开发中)。
llama.cpp 如何工作?
lama.cpp 通过直接在 C/C++ 中实现 LLM 推理来工作。这种方法减少了开销,并允许对硬件资源进行细粒度控制。该库设计为模块化,具有针对各种硬件平台优化的不同后端。它使用量化等技术来减少模型的内存占用,从而可以在资源受限的设备上运行大型模型。
如何使用 llama.cpp?
安装:
- 使用包管理器: 通过 brew、nix 或 winget 安装。
- Docker: 使用提供的 Docker 镜像。
- 预构建的二进制文件: 从发布页面下载二进制文件。
- 从源代码构建: 克隆存储库并按照构建指南进行操作。
获取模型:
- 从 Hugging Face 或其他模型托管站点下载 GGUF 模型。
- 使用提供的 Python 脚本将模型转换为 GGUF 格式。
运行推理:
- 使用
llama-cli工具进行实验。 - 使用
llama-server部署本地 HTTP 服务器,以实现 OpenAI API 兼容性。
- 使用
示例命令:
## Use a local model file
llama-cli -m my_model.gguf
## Or download and run a model directly from Hugging Face
llama-cli -hf ggml-org/gemma-3-1b-it-GGUF
## Launch OpenAI-compatible API server
llama-server -hf ggml-org/gemma-3-1b-it-GGUF
llama.cpp 适用于哪些人?
lama.cpp 非常适合:
- 开发人员: 使用 C/C++ 实现 LLM 驱动的应用程序。
- 研究人员: 在各种硬件平台上试验 LLM。
- 爱好者: 在个人计算机和设备上运行 LLM。
- 组织: 在生产环境中部署 LLM,并尽量减少开销。
llama.cpp 的实际应用
lama.cpp 可用于各种场景,包括:
- 本地 LLM 推理: 在个人计算机上运行模型,而无需依赖云服务。
- 边缘计算: 在边缘设备上部署 LLM,以实现低延迟应用。
- 移动应用: 将 LLM 集成到移动应用中,以进行设备端处理。
- 自定义 AI 解决方案: 构建针对特定硬件和软件环境量身定制的自定义 AI 解决方案。
为什么选择 llama.cpp?
lama.cpp 提供了性能、灵活性和易用性的独特组合,使其成为 LLM 推理的绝佳选择。其主要优势包括:
- 优化的性能: 专为在各种硬件上实现最佳性能而设计。
- 最少的依赖项: 简化了部署并降低了冲突的风险。
- 量化支持: 支持在资源受限的设备上使用大型模型。
- 活跃的社区: 受益于持续的开发和社区支持。
- 多功能工具: 包括
llama-cli、llama-server、llama-perplexity和llama-bench等工具,适用于各种用例。
支持的后端
lama.cpp 支持多个后端,目标是各种设备:
| 后端 | 目标设备 |
|---|---|
| Metal | Apple Silicon |
| BLAS | 所有 |
| BLIS | 所有 |
| SYCL | Intel 和 Nvidia GPU |
| MUSA | Moore Threads GPU |
| CUDA | Nvidia GPU |
| HIP | AMD GPU |
| Vulkan | GPU |
| CANN | Ascend NPU |
| OpenCL | Adreno GPU |
| IBM zDNN | IBM Z & LinuxONE |
| WebGPU | 所有(开发中) |
| RPC | 所有 |
如何为 llama.cpp 做出贡献
欢迎为 llama.cpp 做出贡献!您可以通过以下方式做出贡献:
- 提交包含错误修复或新功能的拉取请求。
- 在现有问题和项目上进行协作。
- 帮助管理问题、PR 和项目。
- 改进文档和示例。
什么是 GGUF?
GGUF 是 llama.cpp 用于存储模型所需的文件格式。可以使用存储库中的 convert_*.py Python 脚本将其他数据格式的模型转换为 GGUF。
结论
lama.cpp 是一个多功能且功能强大的库,它使更广泛的受众可以访问 LLM 推理。无论您是开发人员、研究人员还是爱好者,llama.cpp 都能提供您所需的工具和灵活性,从而在您选择的硬件上利用 LLM 的强大功能。凭借其对性能、易用性和社区支持的关注,llama.cpp 有望在快速发展的 AI 推理领域中保持关键地位。
有关更多信息,请访问 llama.cpp GitHub 存储库。
"llama.cpp"的最佳替代工具
Friendli Inference 是最快的 LLM 推理引擎,针对速度和成本效益进行了优化,可在提供高吞吐量和低延迟的同时,将 GPU 成本降低 50-90%。
Awan LLM提供无限token、无限制且经济高效的LLM推理API平台,非常适合开发者和高级用户。 无需担心token限制即可处理数据、完成代码并构建AI代理。
GraphRAG是一个开源的、模块化的基于图的检索增强生成系统,旨在利用大语言模型从非结构化文本中提取结构化数据。使用GraphRAG增强您的大语言模型的推理能力。
Magic Loops是一个无代码平台,结合LLM和代码,在几分钟内构建专业的AI原生应用。无需编码技能,即可自动化任务、创建自定义工具并探索社区应用。
Nebius AI Studio Inference Service 提供托管开源模型,实现比专有 API 更快、更便宜、更准确的推理结果。无需 MLOps,即可无缝扩展,适用于 RAG 和生产工作负载。
Roo Code 是 VS Code 的开源 AI 驱动编码助手,具备用于多文件编辑、调试和架构的 AI 代理。它支持各种模型,确保隐私,并自定义适应您的工作流程以实现高效开发。
mistral.rs 是一个用 Rust 编写的极速 LLM 推理引擎,支持多模态工作流程和量化。提供 Rust、Python 和 OpenAI 兼容的 HTTP 服务器 API。
使用 PromptsLabs 发现并测试适用于新型大型语言模型 (LLM) 的综合性 AI 提示库。立即改进您的 LLM 测试流程!
GPT4All 可以在日常桌面上私有、本地执行大型语言模型 (LLM),无需 API 调用或 GPU。 具有扩展功能的易于访问且高效的 LLM 使用。