--图源GitHub项目主页
概述
llama.cpp是以一个开源项目(GitHub主页:llamma.cpp),也是本地化部署LLM模型的方式之一,除了自身能够作为工具直接运行模型文件,也能够被其他软件或框架进行调用进行集成。
其自身支持C++编译,也兼容其他语言,如python(GitHub主页:llama-cpp-python)。默认编译流程设计更多针对 Linux/macOS,所以在 Windows 上需要额外设置和工具支持。
4种部署使用方案
以下是列举的已知的几种运行方案,推荐方案三的第二个,使用本地编译器编译再运行。
方案1:使用预编译可执行文件(不推荐)
- 下载预编译可执行文件:
基于 CPU 的版本,这些版本针对不同的 CPU 指令集进行了优化:
- llama-b4393-bin-win-avx-x64.zip:支持 AVX 指令集的 64 位 Windows 版本。
- llama-b4393-bin-win-avx2-x64.zip:支持 AVX2 指令集的 64 位 Windows 版本。
- llama-b4393-bin-win-avx512-x64.zip:支持 AVX-512 指令集的 64 位 Windows 版本。
- llama-b4393-bin-win-noavx-x64.zip:不支持 AVX 指令集的 64 位 Windows 版本(适用于较旧的 CPU)。
- llama-b4393-bin-win-openblas-x64.zip :使用 OpenBLAS 优化的 64 位 Windows 版本。
基于 GPU 的版本,这些版本针对不同的 GPU 和计算框架进行了优化: - cudart-llama-bin-win-cu11.7-x64.zip:支持 CUDA 11.7 的 64 位 Windows 版本。
- cudart-llama-bin-win-cu12.4-x64.zip:支持 CUDA 12.4 的 64 位 Windows 版本。
- llama-b4393-bin-win-cuda-cu11.7-x64.zip:支持 CUDA 11.7 的 64 位 Windows 版本。
- llama-b4393-bin-win-cuda-cu12.4-x64.zip:支持 CUDA 12.4 的 64 位 Windows 版本。
- llama-b4393-bin-win-hip-x64-gfx1030.zip:支持 AMD HIP 框架(针对 RDNA2 架构 GPU,如 RX 6000 系列)。
- llama-b4393-bin-win-hip-x64-gfx1100.zip:支持 AMD HIP 框架(针对 RDNA3 架构 GPU,如 RX 7000 系列)。
- llama-b4393-bin-win-hip-x64-gfx1101.zip:支持 AMD HIP 框架(针对 RDNA3 架构 GPU 的特定型号)。
- llama-b4393-bin-win-vulkan-x64.zip:支持 Vulkan API 的 64 位 Windows 版本。
- llama-b4393-bin-win-sycl-x64.zip:支持 SYCL 框架的 64 位 Windows 版本(适用于 Intel GPU)。
- llama-b4393-bin-win-kompute-x64.zip:支持 Kompute 框架的 64 位 Windows 版本(适用于 Vulkan GPU)。
针对特定平台的版本:这些版本针对特定的操作系统和硬件平台:
- llama-b4393-bin-macos-arm64.zip:针对 Apple Silicon(ARM64)的 macOS 版本。
- llama-b4393-bin-macos-x64.zip:针对 Intel x64 的 macOS 版本。
- llama-b4393-bin-ubuntu-x64.zip:针对 Ubuntu 的 64 位 Linux 版本。
- llama-b4393-bin-win-llvm-arm64-opencl-adreno.zip:针对 ARM64 设备(如 Adreno GPU)的 Windows 版本,支持 OpenCL。
- llama-b4393-bin-win-lvm-arm64.zip:针对 ARM64 设备的 Windows 版本。
- llama-b4393-bin-win-msvc-arm64.zip:针对 ARM64 设备的 Windows 版本,使用 MSVC 编译器。
- 根据硬件和操作系统选择合适的版本,不知道指令集可以使用CPU-Z软件查看。下载并解压到本地文件夹,可以看到非常多的可执行文件。
核心可执行文件,用于模型推理、转换、量化等任务:
- llama-cli.exe:命令行工具,用于与 LLaMA 模型交互。
- llama-server.exe:启动一个本地服务器,提供模型推理服务。
- llama-simple.exe / llama-simple-chat.exe:简单的模型推理工具,支持聊天模式。
- llama-quantize.exe:用于量化模型,减少模型大小并提高推理速度。
- llama-convert-llama2c-to-ggml.exe:将 LLaMA 2 模型转换为 GGML 格式。
- llama-gguf.exe:处理 GGUF 格式的模型文件(GGUF 是 GGML 的升级版)。
- llama-embedding.exe:生成文本嵌入向量。
- llama-tokenize.exe:对文本进行分词。
依赖库,运行所需的动态链接库(DLL):
- ggml.dll / ggml-base.dll / ggml-cpu.dll:GGML 库的核心文件,用于张量计算和模型推理。
- ggml-rpc.dll:用于远程过程调用(RPC)的 GGML 库。
- llava-shared.dll:与 LLaVA(LLaMA 视觉模型)相关的共享库。
测试和工具,用于测试和开发的可执行文件:
- test-gguf.exe:测试 GGUF 格式的模型文件。
- test-quantize-fns.exe / test-quantize-perf.exe:测试量化函数和性能。
- test-tokenizer-0.exe:测试分词器功能。
- test-c.exe。
- test-log.exe:测试日志功能。
其他工具,用于特定任务:
- llama-batched.exe:支持批量推理的工具。
- llama-parallel.exe:支持并行推理的工具。
- llama-speculative.exe / llama-speculative-simple.exe:支持推测解码的工具。
- llama-tts.exe:可能与文本到语音(TTS)相关的工具。
- llama-retrieval.exe:用于检索任务。
- llama-export-lora.exe:导出 LoRA(低秩适配)模型。
-
准备模型文件:确保有 GGUF 格式的模型文件(如
Llama-3.2-1B-Instruct-Q8.gguf
)。将文件放在与可执行文件相同的目录下,或者记住模型文件的路径。 -
运行推理:使用命令行工具(如
llama-cli.exe
)加载模型并生成文本。例如:bashllama-cli.exe -m Llama-3.2-1B-Instruct-Q8.gguf -p "hello,LLaMA!" -n 50 --temp 0.7
方法二:使用 Python 封装库(简单且灵活,但不推荐在Windows下配置,或者用anaconda或者推荐Linux或者MacOS)
-
安装 Python 和
llama-cpp-python
:-
确保你已安装 Python 和 pip,而且不满足环境要求很大概率会出现图片的失败:
- Linux: gcc or clang
- Windows: Visual Studio or MinGW
- MacOS: Xcode
-
在命令提示符运行:
bashpip install llama-cpp-python
-
-
准备模型文件: 下载
gguf
格式的模型文件。 -
运行 Python 脚本: 创建并运行以下 Python 脚本:
pythonfrom llama_cpp import Llama # 替换为你的模型路径 llm = Llama(model_path="path/to/model.gguf") response = llm("hello,世界!") print(response)
方法三:自行编译(适合需要自定义功能或最新版本的用户)
使用 Visual Studio 编译
-
安装 Visual Studio:
- 从 Visual Studio 官网 下载并安装。
- 在安装时选择 C++ 桌面开发 工作负载。
-
下载和配置
llama.cpp
源码:-
克隆项目:
bashgit clone https://github.com/ggerganov/llama.cpp.git cd llama.cpp
-
使用
cmake
生成工程文件:bashmkdir build cd build cmake .. -G "Visual Studio 17 2022"
-
打开生成的
llama.cpp.sln
,编译生成可执行文件。
-
-
运行: 按照需求运行相关的EXE文件。
使用 MSYS2 和 MinGW 编译(推荐,如果非得在Windows平台跑)
-
安装 MSYS2:
MSYS2 是一个在 Windows 上提供类 Unix 环境的工具链,适合编译 C/C++ 项目。下载 MSYS2 安装程序:https://www.msys2.org/
运行安装程序,按照提示完成安装。打开 MSYS2 UCRT64 终端。
-
打开 MSYS2,安装必要工具MinGW和cmake:
bashpacman -Syu pacman -S base-devel mingw-w64-x86_64-toolchain pacman -S mingw-w64-ucrt-x86_64-cmake mingw-w64-ucrt-x86_64-gcc
-
-
下载源码解压后在终端进入文件夹 ,编译 llama.cpp:
bashcd /path/to/llama.cpp-b4393 mkdir build cd build cmake -G "MSYS Makefiles" .. make
..
表示项目的根目录。-G "MinGW Makefiles"
指定使用 MinGW 构建工具。- 如果有GPU:
cmake -G "MSYS Makefiles" -DLLAMA_CUDA=ON ..
-
运行chat:
请注意,MSYS2终端默认设置下不支持和模型中文对话,可以尝试更改字符编码或者在其他地方如LMstudio进行尝试。bash./llama-simple-chat.exe -m Llama-3.2-1B-Instruct-Q8_0.gguf
-
llama-cli.exe :命令行工具,支持交互式推理和批量推理。
bash./llama-cli.exe -m Llama-3.2-1B-Instruct-Q8_0.gguf -p "hello,LLaMA!" -n 50 --temp 0.7
-
llama-simple.exe :简单的推理工具,适合快速测试。
bash./llama-simple.exe -m Llama-3.2-1B-Instruct-Q8_0.gguf
-
llama-simple-chat.exe :简单的聊天工具,支持交互式对话。
bash./llama-simple-chat.exe -m Llama-3.2-1B-Instruct-Q8_0.gguf
-
llama-server.exe :启动本地服务器,通过 HTTP 请求与模型交互。
bash./llama-server.exe -m Llama-3.2-1B-Instruct-Q8_0.gguf
-
llama-convert-llama2c-to-ggml.exe :将 LLaMA 2 模型转换为 GGML 格式。
bash./llama-convert-llama2c-to-ggml.exe input_model.bin output_model.ggml
-
llama-quantize.exe :对模型进行量化,减少模型大小并提高推理速度。
bash./llama-quantize.exe Llama-3.2-1B-Instruct-Q8_0.gguf Llama-3.2-1B-Instruct-Q4_0.gguf Q4_0
-
llama-embedding.exe :生成文本嵌入向量。
bash./llama-embedding.exe -m Llama-3.2-1B-Instruct-Q8_0.gguf -p "hello,LLaMA!"
-
llama-tokenize.exe :对文本进行分词。
bash./llama-tokenize.exe -m Llama-3.2-1B-Instruct-Q8_0.gguf "hello,LLaMA!"
-
llama-batched.exe :支持批量推理的工具。
bash./llama-batched.exe -m Llama-3.2-1B-Instruct-Q8_0.gguf -p "hello,LLaMA!" -n 50
-
llama-parallel.exe :支持并行推理的工具。
bash./llama-parallel.exe -m Llama-3.2-1B-Instruct-Q8_0.gguf -p "hello,LLaMA!" -n 50
-
test-gguf.exe :测试 GGUF 格式的模型文件。
bash./test-gguf.exe Llama-3.2-1B-Instruct-Q8_0.gguf
-
test-quantize-fns.exe / test-quantize-perf.exe :测试量化函数和性能。
bash./test-quantize-fns.exe
-
test-tokenizer-0.exe :测试分词器功能。
bash./test-tokenizer-0.exe
-
启动聊天 :
bash./llama-simple-chat.exe -m Llama-3.2-1B-Instruct-Q8_0.gguf
-
量化模型 :
bash./llama-quantize.exe Llama-3.2-1B-Instruct-Q8_0.gguf Llama-3.2-1B-Instruct-Q4_0.gguf Q4_0
-
生成嵌入向量 :
bash./llama-embedding.exe -m Llama-3.2-1B-Instruct-Q8_0.gguf -p "hello,LLaMA!"
方法四:使用 Docker(适合熟悉容器的用户)
-
安装 Docker:
- 从 Docker 官网 下载并安装。
-
运行
llama.cpp
容器:-
在命令行运行:
bashdocker run -v /path/to/model:/models llama-cpp -m /models/model.gguf -p "hello,世界!"
-
替换 /path/to/model
为模型文件所在路径。