Llama.cpp 入门教程:一步步教你在本地运行 LLM
前言:为什么要在本地运行大语言模型?
近年来,以 ChatGPT 为代表的大语言模型(LLM)以前所未有的能力展示了人工智能在文本生成、问答、编程辅助等领域的巨大潜力。然而,大多数强大的 LLM 都运行在云端服务器上,通过 API 或网页界面提供服务。这意味着:
- 隐私问题: 您的所有输入(Prompt)都需要发送到第三方服务器进行处理。对于涉及敏感信息或个人隐私的场景,这可能不是最佳选择。
- 成本问题: 持续使用云端 LLM 服务通常需要付费,尤其是在高强度或商业应用场景下。
- 离线可用性: 云服务依赖网络连接。在没有网络的环境下,您将无法使用 LLM。
- 定制与控制: 本地运行可以为您提供更大的灵活性,例如尝试不同的模型、参数调优,甚至进行微调(虽然微调本身可能需要更复杂的工具和资源)。
正因为这些需求,能够在本地消费者级硬件上运行 LLM 成为了一个热门方向。而在这其中,llama.cpp
项目无疑是目前最耀眼、最成功的开源项目之一。
什么是 Llama.cpp?
llama.cpp
是 Georgi Gerganov 发起的一个开源项目,其核心目标是使用 C/C++ 语言以极高的效率实现大型语言模型的推理(Inference)。它最初是为了在苹果芯片(如 M1/M2/M3)上流畅运行 Meta 的 Llama 模型而设计,但现在已经发展成为一个高度通用、跨平台、支持多种模型架构和多种硬件加速后端的项目。
llama.cpp
的主要特点包括:
- 极致的性能和效率: 专为在 CPU 和消费者级 GPU 上高效运行而设计,利用了各种优化技术(如低精度量化)。
- 跨平台: 支持 Windows, macOS, Linux 等主流操作系统。
- 硬件加速: 支持 CPU 推理,并可通过多种后端利用 GPU 加速,包括 NVIDIA CUDA/cuBLAS, AMD ROCm, Apple Metal, Vulkan, OpenCL 等。
- 支持多种模型: 不仅限于 Llama 系列,还支持许多其他流行的开源模型架构(如 Mistral, Mixtral, Qwen, Yi, BERT, GPT-2 等),前提是它们被转换为
llama.cpp
支持的格式(主要是 GGUF 格式)。 - 活跃的社区: 拥有庞大且活跃的社区,持续进行开发、优化和模型转换。
通过 llama.cpp
,您可以在自己的笔记本电脑或台式机上,使用量化后的模型,以相对较低的资源消耗获得不错的 LLM 推理速度。
本教程将一步步指导您如何在本地搭建环境、获取模型,并使用 llama.cpp
运行一个 LLM。
前提条件
在开始之前,请确保您的系统满足以下基本要求:
- 操作系统: Windows 10/11 (64位), macOS (Intel 或 Apple Silicon), 或 Linux。
- 硬件:
- CPU: 现代的多核 CPU。即使没有强大的 GPU,
llama.cpp
也能在 CPU 上运行,只是速度会慢一些。 - 内存 (RAM): 至少 8GB,推荐 16GB 或更多。运行较大的模型需要更多的内存来加载模型参数。
- 存储空间: LLM 模型文件通常较大(几个 GB 到几十 GB),请确保您有足够的硬盘空间。
- GPU (可选,但强烈推荐): 如果您有 NVIDIA (CUDA 兼容)、AMD (ROCm 兼容)、或 Apple Silicon (Metal 兼容) GPU,可以显著加速推理过程。
- CPU: 现代的多核 CPU。即使没有强大的 GPU,
- 必要的软件工具:
- Git: 用于从 GitHub 克隆
llama.cpp
仓库。如果未安装,请根据您的操作系统搜索安装教程。 - CMake: 一个跨平台的构建工具,
llama.cpp
使用它来管理编译过程。如果未安装,请根据您的操作系统搜索安装教程。 - C++ 编译器:
- Windows: Visual Studio (推荐安装带有 Desktop Development with C++ 工作负载的 Community 版本) 或 MinGW/MSYS2。
- macOS: Xcode Command Line Tools (运行
xcode-select --install
)。 - Linux: build-essential 包 (包含 GCC/G++ 等,例如在 Ubuntu/Debian 上运行
sudo apt update && sudo apt install build-essential
)。
- CUDA Toolkit (如果使用 NVIDIA GPU 加速): 如果您计划使用 NVIDIA GPU 并想获得最佳兼容性,可能需要安装 CUDA Toolkit。不过,
llama.cpp
很多时候可以通过 cuBLAS 库直接利用已安装的 NVIDIA 驱动,无需完整安装 CUDA Toolkit。最简单的方式是先不装,如果编译或运行时提示缺少 CUDA 相关库再考虑安装。 - ROCm (如果使用 AMD GPU 加速): AMD GPU 加速需要 ROCm 环境,这在 Linux 上相对成熟,Windows 支持正在发展中。安装过程可能较复杂,请参考
llama.cpp
官方文档或相关社区指南。 - Vulkan SDK 或 OpenCL ICD (如果使用对应后端): 用于 Vulkan 或 OpenCL 加速,根据需要安装。
- Git: 用于从 GitHub 克隆
重要提示: 本教程主要关注最常见和相对简单的设置(CPU 或 NVIDIA/Apple Silicon GPU 加速)。其他 GPU 加速方式(ROCm, Vulkan, OpenCL)的配置可能会更复杂,请参考 llama.cpp
官方文档。
第一步:获取 Llama.cpp 源代码
首先,您需要通过 Git 从 GitHub 克隆 llama.cpp
的最新源代码。
打开您的终端(在 Windows 上可以使用 Command Prompt, PowerShell 或 Git Bash; 在 macOS/Linux 上使用 Terminal 应用)。
执行以下命令:
bash
git clone https://github.com/ggerganov/llama.cpp.git
这将在当前目录下创建一个名为 llama.cpp
的文件夹,其中包含了项目的所有文件。
进入项目目录:
bash
cd llama.cpp
现在您已经获取了 llama.cpp
的源代码。
第二步:编译 Llama.cpp
编译是将源代码转换成可执行程序的过程。llama.cpp
使用 CMake 来管理这个过程,让它在不同平台上更容易构建。编译步骤是根据您的操作系统和是否需要 GPU 加速而有所不同。
在编译之前,请确保您已经进入了 llama.cpp
的项目目录 (cd llama.cpp
)。
推荐的编译方式(使用 CMake):
这是官方推荐且最灵活的方式,可以轻松开启各种硬件加速选项。
-
创建构建目录: 这是一个好的习惯,将编译生成的文件放在一个单独的目录中,保持源代码目录的整洁。
bash
mkdir build
cd build -
运行 CMake 配置: 根据您的需求选择不同的 CMake 命令。CMake 会检查您的系统环境和您指定的选项,生成适合您系统的编译配置文件(例如 Makefile 或 Visual Studio Solution)。
-
最简单的 CPU 编译(适用于所有平台,不需要 GPU):
bash
cmake .. -
开启 NVIDIA GPU (CUDA/cuBLAS) 加速 (如果您的系统有 NVIDIA GPU):
bash
cmake .. -DLLAMA_CUBLAS=on
(注意:可能需要系统已经正确安装了 NVIDIA 驱动。大多数情况下,安装了驱动就包含了 cuBLAS 库,无需单独安装 CUDA Toolkit。) -
开启 Apple Silicon (Metal) GPU 加速 (如果您的 Mac 是 M1/M2/M3 等):
bash
cmake .. -DLLAMA_METAL=on
(在较新版本的llama.cpp
中,如果您在 Apple Silicon Mac 上运行 CMake,Metal 支持通常会默认开启,除非您明确禁用。) -
开启 AMD GPU (ROCm) 加速 (主要适用于 Linux 系统,有 AMD GPU):
bash
cmake .. -DLLAMA_ROCM=on
(需要系统正确安装 ROCm 环境。) -
开启 Intel/AMD 集显或旧显卡 (Vulkan) 加速:
bash
cmake .. -DLLAMA_VULKAN=on
(需要系统安装 Vulkan SDK 或驱动提供 Vulkan 支持。) -
开启 OpenCL 加速:
bash
cmake .. -DLLAMA_CLBLAST=on
(需要系统安装 OpenCL ICD 和 CLBlast 库。) -
组合选项: 您可以组合多个选项,例如在 Linux 上同时支持 CPU 和 CUDA:
cmake .. -DLLAMA_CUBLAS=on
(CUBLAS 默认也会包含 CPU 支持)。 -
Windows 用户 (使用 Visual Studio): 如果您安装了 Visual Studio,可以在
build
目录中运行:bash
cmake .. -G "Visual Studio 17 2022" # 根据您安装的VS版本修改数字,例如 "Visual Studio 16 2019"
这会在build
目录中生成一个.sln
解决方案文件。您可以双击打开它,然后在 Visual Studio 中选择Release
配置并构建ALL_BUILD
项目。或者,在终端中继续使用 CMake 构建命令:bash
cmake --build . --config Release --parallel # 使用多核并行构建 -
Windows 用户 (使用 MinGW/MSYS2): 在 MinGW/MSYS2 环境中,进入
llama.cpp
目录,然后按照 Linux 或 macOS 的方式使用cmake ..
命令。
-
-
运行编译命令: CMake 配置成功后,根据生成的配置文件类型执行编译命令。
-
在 macOS/Linux/MinGW/MSYS2 环境中 (生成 Makefile):
“`bash
make或者使用多核并行编译,加快速度 (推荐)
make -j
# 将 替换为您 CPU 的核心数,例如 make -j 8
“` -
在 Windows 环境中 (使用 Visual Studio 生成的解决方案):
- 如果使用 Visual Studio IDE 打开
.sln
文件,在界面中选择Release
配置并构建。 - 如果使用命令行,已经在
build
目录中运行了cmake --build . --config Release --parallel
。
- 如果使用 Visual Studio IDE 打开
-
编译成功标志:
编译完成后,您会在 build
目录下的 bin
文件夹中找到可执行文件。最常用的是 main
(或 main.exe
on Windows),以及其他工具如 quantize
或 server
等(取决于您的编译选项)。
如果在编译过程中遇到错误,请仔细阅读错误信息。常见问题包括:
* 缺少依赖库(如 CMake, 编译器, CUDA/ROCm 库)。
* CMake 配置时选项错误。
* Windows 上环境变量或 Visual Studio 配置问题。
遇到问题时,最好的办法是查阅 llama.cpp
的官方 GitHub 仓库的 Issues 或 Discussions 区,很多常见问题都能找到解决方案。
第三步:获取 LLM 模型文件(GGUF 格式)
llama.cpp
不能直接使用 PyTorch 或 TensorFlow 格式的原始模型文件。它需要一个专门为高效加载和推理而设计的格式,目前主要使用的是 GGUF (GGML Unified Format)。GGUF 格式是 GGML 格式的继任者,包含了更多的元数据,并且设计上更易于扩展和使用。
GGUF 格式的一个重要特性是它通常包含了量化后的模型。量化是将模型参数从高精度(如 32 位浮点数 FP32 或 16 位浮点数 FP16)转换为低精度(如 8 位整数 INT8, 4 位整数 INT4 等)的过程。这样做可以显著减小模型文件大小和内存占用,同时提高推理速度,但可能会对模型性能(如生成文本的质量)产生一定影响。
llama.cpp
支持多种量化级别,常见的包括:
Q8_0
: 8 位整数量化,文件较大,质量接近 FP16,速度较快。Q5_K_M
,Q5_K_S
: 5 位量化(使用 K-quant 方案),平衡了文件大小、速度和质量,通常是推荐的折衷方案。Q4_K_M
,Q4_K_S
: 4 位量化(使用 K-quant 方案),文件更小,内存占用更低,速度更快,但质量可能略有下降。Q4_K_M
是许多用户首选的入门级别,因为它能在消费级硬件上较好地运行。Q2_K
: 2 位量化(使用 K-quant 方案),文件最小,速度最快,但质量下降较明显。
哪里获取 GGUF 模型文件?
最主要的来源是 Hugging Face 模型 Hub。许多开源模型(如 Llama, Mistral, Yi, Qwen 等)的社区成员会将其转换为 GGUF 格式并上传。
搜索 GGUF 模型最简单的方式是:
- 访问 Hugging Face 网站 (
huggingface.co
)。 - 在搜索框中搜索您感兴趣的模型名称,加上关键词
GGUF
。例如Mistral-7B-Instruct-v0.2 GGUF
或Qwen1.5-7B-Chat GGUF
。 - 通常,您会找到由社区用户(例如著名的模型转换者 TheBloke)上传的 GGUF 仓库。进入该仓库页面。
- 切换到 “Files and versions” (文件和版本) 标签页。
- 在文件列表中,找到
.gguf
结尾的文件。您会看到同一个模型有不同量化级别的 GGUF 文件(例如mistral-7b-instruct-v0.2.Q4_K_M.gguf
,mistral-7b-instruct-v0.2.Q5_K_M.gguf
,mistral-7b-instruct-v0.2.Q8_0.gguf
等)。 - 根据您的硬件条件(尤其是内存和显存大小)和对模型质量的需求,选择一个合适的量化版本下载。对于初学者,推荐先尝试
Q4_K_M
或Q5_K_M
版本。 - 点击下载按钮将
.gguf
文件下载到您的电脑上。
下载的模型文件放在哪里?
将下载好的 .gguf
文件放在一个您方便访问的位置。一个常用的约定是将其放在 llama.cpp
项目目录下的 models
子目录中。如果您没有这个目录,可以手动创建它。
例如,如果您下载了 mistral-7b-instruct-v0.2.Q4_K_M.gguf
,可以将其复制或移动到 llama.cpp/models/
目录下。
第四步:运行 LLM 模型
编译成功并获取了 .gguf
模型文件后,您就可以使用 llama.cpp
的可执行文件来运行模型进行推理了。
主要的推理可执行文件是 main
(在 Windows 上是 main.exe
),它位于您之前创建的 build
目录下的 bin
文件夹中。
打开您的终端,并切换到 build
目录:
bash
cd llama.cpp/build
然后,您可以运行 main
程序,并指定模型文件路径和您的 Prompt。
基本运行命令:
bash
./bin/main -m ../models/your-model-name.gguf -p "Your prompt goes here." -n 256
./bin/main
: 执行编译生成的main
程序(在 Windows 上是.\bin\main.exe
)。-m ../models/your-model-name.gguf
: 指定要加载的模型文件路径。请将../models/your-model-name.gguf
替换为您实际的模型文件路径。如果您把模型放到了llama.cpp/models/
目录下,相对于build
目录,它的路径就是../models/your-model-name.gguf
。-p "Your prompt goes here."
: 指定您想要模型回答的 Prompt(输入)。请将"Your prompt goes here."
替换为您自己的文本。Prompt 需要用引号括起来,特别是包含空格或特殊字符时。-n 256
: 指定模型最多生成多少个 Token。一个 Token 大约是 3-4 个英文字符或 1 个汉字。-n 256
表示模型最多生成 256 个 Token 的回复。您可以根据需要调整这个值。
执行这个命令后,llama.cpp
会加载模型,处理您的 Prompt,并在终端中输出生成的回复。
交互模式 (Interactive Mode):
main
程序也支持交互模式,这更像您使用在线聊天助手。
bash
./bin/main -m ../models/your-model-name.gguf -i
-i
: 启用交互模式。
在交互模式下,程序会加载模型,然后等待您输入 Prompt。输入完 Prompt 后按回车,模型就会生成回复。生成完成后,程序再次等待您的输入。您可以进行多轮对话。要退出交互模式,通常输入 /bye
然后按回车。
常用参数详解:
main
程序有很多参数可以控制模型的行为和性能。以下是一些常用的:
-m <path>
: 指定模型文件路径(必需)。-p <prompt>
: 指定 Prompt 文本(非必需,如果在交互模式下则无需)。-n <tokens>
: 指定最大生成 Token 数(默认为 128)。-i
: 启用交互模式。-r <string>
: 在交互模式下,设置一个字符串来标记回复的结束(例如--reverse-prompt "User:"
可以让模型在生成到它认为该轮回复结束时停止,等待下一个 “User:” 输入)。--temp <value>
: 控制生成文本的随机性或“创意度”。值越高,文本越随机(可能更有创意,但也可能偏离主题或产生胡言乱语)。范围通常在 0.0 到 2.0 之间,默认为 0.8。--temp 0
会尝试生成最确定、最“保守”的文本。--top-k <value>
: Top-K 采样参数。在生成下一个 Token 时,只考虑概率最高的 K 个 Token。默认值通常是 40。较小的 K 值使生成更确定。--top-p <value>
: Top-P (核采样) 参数。在生成下一个 Token 时,选择概率累加和超过 P 的最小 Token 集合中进行采样。默认值通常是 0.95。较小的 P 值使生成更确定。Top-K 和 Top-P 通常结合使用。--repeat-penalty <value>
: 重复惩罚。用于减少模型重复生成相同的词组或句子。值大于 1.0 会惩罚重复。默认为 1.1。--n-gpu-layers <layers>
: 非常重要的 GPU 加速参数。指定将模型的前<layers>
层加载到 GPU 显存中进行计算。剩余的层将在 CPU 上计算。设置合适的层数可以最大化利用 GPU 性能,同时避免显存溢出。如果您的 GPU 显存足够大,可以将所有层都加载到 GPU (-n-gpu-layers 10000
或一个足够大的数)。如果设置为 0,则完全在 CPU 上运行。您需要根据您的显存大小进行尝试,找到能放入显存的最大层数。一般来说,量化级别越低,所需的显存越少,可以放入更多层。--mlock
: 在 Linux/macOS 上,尝试锁定模型的内存,防止其被换出到硬盘,有助于保持较低的延迟。需要相应的系统权限。--mirostat <mode>
: Mirostat 采样方法,一种更动态的采样策略,有助于控制文本长度和质量。0 = 禁用,1 = Mirostat,2 = Mirostat 2.0。配合--mirostat-tau
和--mirostat-eta
参数使用。--threads <n>
: 指定用于推理的 CPU 线程数。默认为物理核心数。您可以尝试调整此值以找到最佳性能。
示例:使用 GPU 加速运行 Mistral 7B Q4_K_M 模型
假设您下载了 mistral-7b-instruct-v0.2.Q4_K_M.gguf
并放到了 llama.cpp/models/
目录下,并且您的系统支持 GPU 加速(例如 NVIDIA 或 Apple Silicon),并且在编译时开启了相应的 GPU 支持。
您可以尝试以下命令:
“`bash
切换到build目录
cd llama.cpp/build
使用交互模式,加载模型,将大部分层放入GPU显存(例如假设你的显卡有6-8GB显存,可以尝试30层)
./bin/main -m ../models/mistral-7b-instruct-v0.2.Q4_K_M.gguf -i –n-gpu-layers 30 –temp 0.7 –repeat-penalty 1.1
如果想把所有层都放入GPU (显存需足够大,Q4_K_M 模型通常需要约5GB显存)
./bin/main -m ../models/mistral-7b-instruct-v0.2.Q4_K_M.gguf -i –n-gpu-layers 10000 –temp 0.7 –repeat-penalty 1.1
直接提供Prompt,非交互模式
./bin/main -m ../models/mistral-7b-instruct-v0.2.Q4_K_M.gguf -p “请用中文写一篇关于人工智能对社会影响的文章,约500字。” -n 1000 –n-gpu-layers 30 –temp 0.8
“`
执行命令后,您会看到 llama.cpp
输出加载模型的信息,包括加载了多少层到 GPU,以及模型的参数概览。然后就可以开始输入 Prompt 或等待生成结果。
理解输出信息:
当您运行 main
程序时,它会输出一些状态信息,这些信息有助于您了解模型加载情况和推理性能:
...
llama_model_load: model size = 4096.78 MB / num tensors = 363
llama_model_load: offloading 30 repeating layers to GPU
llama_model_load: offloaded 30/35 layers to GPU
llama_model_load: VRAM used: 4321 MB
...
ggml_metal_init: allocating metal context
ggml_metal_init: found device: Apple M1 Pro (id=0)
...
sampling: temp = 0.800000, top_k = 40, top_p = 0.950000, repeat_last_n = 64, repeat_penalty = 1.100000
generate: prompt = 'Your prompt here'
... (模型生成的文本) ...
Output generated in XXXX.xx ms (YYYY tokens, ZZZ.zz tokens/s)
llama_model_load: offloading XX/YY layers to GPU
: 表示成功将 YY 层中的 XX 层加载到了 GPU。这确认了 GPU 加速是启用的。llama_model_load: VRAM used: XXXX MB
: 显示模型在 GPU 显存中占用的内存大小。这有助于您判断-n-gpu-layers
设置是否合适,以及您的显存是否足够。Output generated in XXXX.xx ms (YYYY tokens, ZZZ.zz tokens/s)
: 显示生成 YYYY 个 Token 花费的时间和平均每秒生成 Token 数(推理速度)。这个指标是衡量性能的关键。
第五步:性能调优与故障排除
性能调优:
- 选择合适的量化模型: 更低的量化(如 Q4_K_M)通常更快、占用资源更少,适合显存或内存有限的设备。更高的量化(如 Q8_0)文件更大、速度可能稍慢,但通常能获得更好的模型质量。根据您的需求和硬件进行权衡和尝试。
- 利用 GPU 加速并调整
-n-gpu-layers
: 如果您的 GPU 显存足够,将尽可能多的层卸载到 GPU。通过逐步增加-n-gpu-layers
的值,观察 VRAM 使用情况和推理速度,找到最优解。当-n-gpu-layers
超过显存容量时,程序会报错(通常是显存分配失败)。 - 调整 CPU 线程数: 使用
--threads <n>
参数。通常设置为您 CPU 的物理核心数或逻辑核心数。有时略小于核心数可能会有更好的表现,需要测试。 - 使用
mlock
(如果可能): 在支持的系统上使用--mlock
参数,防止模型内存被换出,减少因内存页面交换导致的延迟。 - 关闭不必要的程序: 确保在运行 LLM 时,您的系统有足够的空闲内存和显存。
故障排除:
- 编译失败:
- 检查是否安装了所有必要工具(Git, CMake, C++ 编译器)。
- 检查 CMake 命令是否拼写正确,特别是
-D
开头的选项。 - Windows 上使用 Visual Studio 时,确保选择了正确的配置(Release)和目标(ALL_BUILD)。
- 如果涉及 GPU 加速,检查 GPU 驱动是否正确安装,以及相应的库(CUDA/cuBLAS, ROCm 等)是否可用。查阅
llama.cpp
官方 Issues 或 Discussions 区寻找类似问题的解决方案。
- 运行
main
时报错:Error loading model: ... file not found
: 检查-m
参数后的模型文件路径是否正确。确保您在build
目录中运行main
,并且模型文件路径相对于build
目录是正确的(例如../models/your-model.gguf
)。Out of memory
或显存分配失败 (CUDA error: out of memory
等): 您尝试加载的模型太大,或者-n-gpu-layers
设置过高,超过了您的内存或显存容量。请尝试:- 使用量化级别更低(文件更小)的模型。
- 减小
-n-gpu-layers
的值。 - 关闭占用大量内存或显存的其他应用程序。
- 模型加载成功但推理速度很慢:
- 确认是否启用了 GPU 加速(查看输出信息中是否有
offloading layers to GPU
)。如果没有,检查编译步骤是否开启了 GPU 支持,并在运行命令中加入-n-gpu-layers
参数。 - 检查
-n-gpu-layers
参数是否设置合适。如果设置为 0 或很小,模型几乎完全在 CPU 上运行,速度自然较慢。 - 检查您的硬件资源利用率(任务管理器,
nvidia-smi
等)。看看是 CPU 还是 GPU 成为了瓶颈。
- 确认是否启用了 GPU 加速(查看输出信息中是否有
- 模型生成质量不佳或行为异常:
- 尝试调整采样参数 (
--temp
,--top-k
,--top-p
,--repeat-penalty
)。 - 尝试使用不同量化级别或由不同人转换的 GGUF 模型文件。
- 确保您的 Prompt 格式符合模型的预期(尤其是 Instruction 模型,通常需要特定的格式,例如 Alpaca, ChatML 等格式)。查阅您下载模型的说明页面了解其推荐的 Prompt 格式。
- 尝试调整采样参数 (
其他高级用法(简述)
- 使用
quantize
工具:llama.cpp
项目中还包含了quantize
工具,可以将 FP16 或 FP32 的 GGUF 模型文件转换为不同量化级别的 GGUF 文件。如果您找到了非量化的 GGUF 文件,或者想尝试官方未提供的量化级别,可以使用这个工具。例如:./bin/quantize ../models/your-model.gguf ../models/your-model.Q4_K_M.gguf Q4_K_M
。 - 运行 Web Server:
llama.cpp
也可以编译为一个 Web 服务器(如果在 CMake 配置时开启了-DLLAMA_SERVER=on
)。运行bin/server
可以启动一个本地 API 服务器,甚至提供一个简单的网页界面,方便通过浏览器与模型交互,或与其他应用程序集成。 - 绑定和库:
llama.cpp
提供了 C/C++ 库接口,并且有社区提供的 Python, Node.js 等语言的绑定,允许您在自己的程序中集成llama.cpp
的推理能力。
总结
恭喜您!通过以上步骤,您应该已经成功地在本地使用 llama.cpp
运行了一个大语言模型。这不仅让您可以在个人设备上自由、私密地与强大的 AI 模型交互,还为进一步探索、学习和应用 LLM 打开了大门。
从获取源代码、根据硬件编译、下载合适的量化模型到使用 main
程序进行推理,每一步都要求您细心操作。特别是编译和 -n-gpu-layers
参数的设置,是影响能否成功运行和性能的关键。
llama.cpp
是一个快速发展的项目,其性能、支持的模型和功能都在不断进步。如果您对某个模型感兴趣,或者想尝试最新的优化,可以定期更新 llama.cpp
仓库代码(使用 git pull
)并重新编译。
本地运行 LLM 是一个充满乐趣和探索的过程。现在您已经掌握了基础,可以开始尝试不同的模型,调整参数,体验本地 AI 的强大之处了!