本地LLM部署--llama.cpp

--图源GitHub项目主页

概述

llama.cpp是以一个开源项目(GitHub主页:llamma.cpp),也是本地化部署LLM模型的方式之一,除了自身能够作为工具直接运行模型文件,也能够被其他软件或框架进行调用进行集成。

其自身支持C++编译,也兼容其他语言,如python(GitHub主页:llama-cpp-python)。默认编译流程设计更多针对 Linux/macOS,所以在 Windows 上需要额外设置和工具支持。

4种部署使用方案

以下是列举的已知的几种运行方案,推荐方案三的第二个,使用本地编译器编译再运行。

方案1:使用预编译可执行文件(不推荐)

  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 编译器。
  1. 根据硬件和操作系统选择合适的版本,不知道指令集可以使用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(低秩适配)模型。
  1. 准备模型文件:确保有 GGUF 格式的模型文件(如 Llama-3.2-1B-Instruct-Q8.gguf)。将文件放在与可执行文件相同的目录下,或者记住模型文件的路径。

  2. 运行推理:使用命令行工具(如 llama-cli.exe)加载模型并生成文本。例如:

    bash 复制代码
    llama-cli.exe -m Llama-3.2-1B-Instruct-Q8.gguf -p "hello,LLaMA!" -n 50 --temp 0.7

方法二:使用 Python 封装库(简单且灵活,但不推荐在Windows下配置,或者用anaconda或者推荐Linux或者MacOS)

  1. 安装 Python 和 llama-cpp-python

    • 确保你已安装 Python 和 pip,而且不满足环境要求很大概率会出现图片的失败:

      • Linux: gcc or clang
      • Windows: Visual Studio or MinGW
      • MacOS: Xcode
    • 在命令提示符运行:

      bash 复制代码
      pip install llama-cpp-python
  2. 准备模型文件: 下载 gguf 格式的模型文件。

  3. 运行 Python 脚本: 创建并运行以下 Python 脚本:

    python 复制代码
    from llama_cpp import Llama
    
    # 替换为你的模型路径
    llm = Llama(model_path="path/to/model.gguf")
    response = llm("hello,世界!")
    print(response)

方法三:自行编译(适合需要自定义功能或最新版本的用户)

使用 Visual Studio 编译
  1. 安装 Visual Studio:

  2. 下载和配置 llama.cpp 源码:

    • 克隆项目:

      bash 复制代码
      git clone https://github.com/ggerganov/llama.cpp.git
      cd llama.cpp
    • 使用 cmake 生成工程文件:

      bash 复制代码
      mkdir build
      cd build
      cmake .. -G "Visual Studio 17 2022"
    • 打开生成的 llama.cpp.sln,编译生成可执行文件。

  3. 运行: 按照需求运行相关的EXE文件。

使用 MSYS2 和 MinGW 编译(推荐,如果非得在Windows平台跑)

  1. 安装 MSYS2:

    MSYS2 是一个在 Windows 上提供类 Unix 环境的工具链,适合编译 C/C++ 项目。下载 MSYS2 安装程序:https://www.msys2.org/

    运行安装程序,按照提示完成安装。打开 MSYS2 UCRT64 终端。

    • 打开 MSYS2,安装必要工具MinGW和cmake:

      bash 复制代码
      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
  2. 下载源码解压后在终端进入文件夹编译 llama.cpp:

    bash 复制代码
    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 ..

  3. 运行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(适合熟悉容器的用户)

  1. 安装 Docker:

  2. 运行 llama.cpp 容器:

    • 在命令行运行:

      bash 复制代码
      docker run -v /path/to/model:/models llama-cpp -m /models/model.gguf -p "hello,世界!"
    复制代码

替换 /path/to/model 为模型文件所在路径。

相关推荐
悄悄敲敲敲几秒前
Linux:进程间通信->共享内存
linux·运维·服务器
yc_232 分钟前
KAG:通过知识增强生成提升专业领域的大型语言模型(二)
人工智能·语言模型·自然语言处理
绵绵细雨中的乡音9 分钟前
Linux进程学习【环境变量】&&进程优先级
linux·运维·学习
自不量力的A同学14 分钟前
字节 AI 原生 IDE Trae 发布 v1.3.0,新增 MCP 支持
人工智能
涛涛讲AI20 分钟前
当AI浏览器和AI搜索替代掉传统搜索份额时,老牌的搜索引擎市场何去何从。
人工智能·搜索引擎
cherishSpring21 分钟前
在windows使用docker打包springboot项目镜像并上传到阿里云
spring boot·docker·容器
LKAI.26 分钟前
k8s存储动态供给StorageClass
docker·微服务·云原生·容器·kubernetes
engchina28 分钟前
来自B站AIGC科技官的“vLLM简介“视频截图
人工智能·vllm
hyhrosewind33 分钟前
Python函数基础:说明文档(多行注释),函数嵌套调用,变量作用域(局部,全局,global关键字),综合案例
python·变量作用域·函数说明文档(多行注释)·函数嵌套调用·局部变量和全局变量·函数内修改全局变量·global关键字
说私域44 分钟前
基于开源技术体系的品牌赛道力重构:AI智能名片与S2B2C商城小程序源码驱动的品类创新机制研究
人工智能·小程序·重构·开源·零售