–圖源GitHub項目主頁
概述
llama.cpp是以一個開源項目(GitHub主頁:llamma.cpp),也是本地化部署LLM模型的方式之一,除了自身能夠作為工具直接運行模型文件,也能夠被其他軟件或框架進行調用進行集成。
其自身支持C++編譯,也兼容其他語言,如python(GitHub主頁:llama-cpp-python)。默認編譯流程設計更多針對 Linux/macOS,所以在 Windows 上需要額外設置和工具支持。
4種部署使用方案
以下是列舉的已知的幾種運行方案,推薦方案三的第二個,使用本地編譯器編譯再運行。
方案一:使用預編譯可執行文件(不推薦)
- 下載預編譯可執行文件:
- 打開 llama.cpp Releases 頁面。
- 打開 llama.cpp Releases 頁面。
基于 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
)加載模型并生成文本。例如:llama-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
- 在命令提示符運行:
pip install llama-cpp-python
- 確保你已安裝 Python 和 pip,而且不滿足環境要求很大概率會出現圖片的失敗:
-
準備模型文件: 下載
gguf
格式的模型文件。 -
運行 Python 腳本: 創建并運行以下 Python 腳本:
from 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
源碼:- 克隆項目:
git clone https://github.com/ggerganov/llama.cpp.git cd llama.cpp
- 使用
cmake
生成工程文件:mkdir 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:
pacman -Syu pacman -S base-devel mingw-w64-x86_64-toolchain pacman -S mingw-w64-ucrt-x86_64-cmake mingw-w64-ucrt-x86_64-gcc
- 打開 MSYS2,安裝必要工具MinGW和cmake:
-
下載源碼解壓后在終端進入文件夾,編譯 llama.cpp:
cd /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進行嘗試。./llama-simple-chat.exe -m Llama-3.2-1B-Instruct-Q8_0.gguf
- llama-cli.exe:命令行工具,支持交互式推理和批量推理。
./llama-cli.exe -m Llama-3.2-1B-Instruct-Q8_0.gguf -p "hello,LLaMA!" -n 50 --temp 0.7
- llama-simple.exe:簡單的推理工具,適合快速測試。
./llama-simple.exe -m Llama-3.2-1B-Instruct-Q8_0.gguf
- llama-simple-chat.exe:簡單的聊天工具,支持交互式對話。
./llama-simple-chat.exe -m Llama-3.2-1B-Instruct-Q8_0.gguf
- llama-server.exe:啟動本地服務器,通過 HTTP 請求與模型交互。
./llama-server.exe -m Llama-3.2-1B-Instruct-Q8_0.gguf
- llama-convert-llama2c-to-ggml.exe:將 LLaMA 2 模型轉換為 GGML 格式。
./llama-convert-llama2c-to-ggml.exe input_model.bin output_model.ggml
- llama-quantize.exe:對模型進行量化,減少模型大小并提高推理速度。
./llama-quantize.exe Llama-3.2-1B-Instruct-Q8_0.gguf Llama-3.2-1B-Instruct-Q4_0.gguf Q4_0
- llama-embedding.exe:生成文本嵌入向量。
./llama-embedding.exe -m Llama-3.2-1B-Instruct-Q8_0.gguf -p "hello,LLaMA!"
- llama-tokenize.exe:對文本進行分詞。
./llama-tokenize.exe -m Llama-3.2-1B-Instruct-Q8_0.gguf "hello,LLaMA!"
- llama-batched.exe:支持批量推理的工具。
./llama-batched.exe -m Llama-3.2-1B-Instruct-Q8_0.gguf -p "hello,LLaMA!" -n 50
- llama-parallel.exe:支持并行推理的工具。
./llama-parallel.exe -m Llama-3.2-1B-Instruct-Q8_0.gguf -p "hello,LLaMA!" -n 50
- test-gguf.exe:測試 GGUF 格式的模型文件。
./test-gguf.exe Llama-3.2-1B-Instruct-Q8_0.gguf
- test-quantize-fns.exe / test-quantize-perf.exe:測試量化函數和性能。
./test-quantize-fns.exe
- test-tokenizer-0.exe:測試分詞器功能。
./test-tokenizer-0.exe
- 啟動聊天:
./llama-simple-chat.exe -m Llama-3.2-1B-Instruct-Q8_0.gguf
- 量化模型:
./llama-quantize.exe Llama-3.2-1B-Instruct-Q8_0.gguf Llama-3.2-1B-Instruct-Q4_0.gguf Q4_0
- 生成嵌入向量:
./llama-embedding.exe -m Llama-3.2-1B-Instruct-Q8_0.gguf -p "hello,LLaMA!"
方法四:使用 Docker(適合熟悉容器的用戶)
-
安裝 Docker:
- 從 Docker 官網 下載并安裝。
-
運行
llama.cpp
容器:- 在命令行運行:
docker run -v /path/to/model:/models llama-cpp -m /models/model.gguf -p "hello,世界!"
- 在命令行運行:
替換 /path/to/model
為模型文件所在路徑。