Skip to content

环境部署

Reference

背景介绍

为什么提到各种本地化部署模型软件时总要提到 llama.cpp?_llamacpp-CSDN 博客

llama.cpp 一种在本地 CPU 上部署的量化模型(超低配推理 llama) (uudwc.com)

LLaMA、llama.cpp 和 Ollama 区别_llamacpp-CSDN 博客

安装使用

一文熟悉新版 llama.cpp 使用并本地部署 LLAMA_llamacpp-CSDN 博客

llama.cpp 安装使用(支持 CPU、Metal 及 CUDA 的单卡/多卡推理) - 宇宙有只 AGI - 博客园 (cnblogs.com)

DeepSeek-R1-GGUF · 模型库 (modelscope.cn)

环境部署

llama.cpp/docs/build.md at master · ggml-org/llama.cpp (github.com)

1. 配置 GPU

  • 如果想用 GPU 推理,就必须进行配置

(1) 硬件检测

# 安装PCI工具(如未安装)
apt-get update
apt-get install pciutils

# 查看显卡型号
lspci | grep -i nvidia
## 示例:
01:00.0 VGA compatible controller: NVIDIA Corporation TU106M [GeForce RTX 2060 Mobile] (rev a1)
01:00.1 Audio device: NVIDIA Corporation TU106 High Definition Audio Controller (rev a1)
01:00.2 USB controller: NVIDIA Corporation TU106 USB 3.1 Host Controller (rev a1)
01:00.3 Serial bus controller: NVIDIA Corporation TU106 USB Type-C UCSI Controller (rev a1)

(2) 安装 NVIDIA 驱动

清理旧驱动
# 清理旧NVIDIA驱动驱动
apt-get purge nvidia*

# 重启
reboot
安装推荐驱动
  • Ubuntu/Debian
# 查看推荐驱动版本
ubuntu-drivers devices
## 示例:
driver   : nvidia-driver-550 - distro non-free recommended

# 安装推荐驱动
apt-get install nvidia-driver-550

# 重启
reboot
验证驱动安装
nvidia-smi

# 应显示如下信息:
# +-----------------------------------------------------------------------------+
# | NVIDIA-SMI 535.154.05   Driver Version: 535.154.05   CUDA Version: 12.2     |
# |-------------------------------+----------------------+----------------------+

(3) 安装 CUDA

安装 CUDA

先确定架构

# 看架构
uname -a
## 示例:
Linux pc1 6.8.0-52-generic #53~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Wed Jan 15 19:18:46 UTC 2 x86_64 x86_64 x86_64 GNU/Linux

然后去官网,选择对应类型的 CUDA,按照上面的 linux 命令操作

# 安装CUDA工具包
## 推荐12.x版本,只要NVIDIA 驱动版本在 510.x以上,都可以使用
## 比它小的版本容易出编译问题!!血泪
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.1-1_all.deb
dpkg -i cuda-keyring_1.1-1_all.deb
apt-get update
apt-get -y install cuda-toolkit-12-8

配置环境变量

echo 'export PATH=/usr/local/cuda-12.8/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
验证安装
# 检查CUDA是否安装
nvcc --version

# 应该如下显示:
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2025 NVIDIA Corporation
Built on Wed_Jan_15_19:20:09_PST_2025
Cuda compilation tools, release 12.8, V12.8.61
Build cuda_12.8.r12.8/compiler.35404655_0

2.拉取代码

git clone https://github.com/ggml-org/llama.cpp
cd llama.cpp

# 或者下载压缩包后,解压到当前文件夹(网络不行时)
unzip llama.cpp-master.zip
cd llama.cpp-master

3.构建 llama.cpp

  • 这里是采取手动编译 llama.cpp 的方式
  • 官网有预编译好的 docker 镜像,如果嫌麻烦

(1)安装前置依赖

apt-get install build-essential cmake ccache
# build-essential:这是一个元包,包含GCC、G++、make、libc-dev等基础开发工具
## GCC用于编译C/C++代码,CMake用于生成构建配置,make用于执行Makefile
# cmake:CMake工具,用于跨平台的构建配置
# ccache: 是一个编译器缓存,可以加速重复构建.如果经常更改代码并重新编译,安装 ccache 会有帮助

补充:g++的安装与版本切换

如何在 Ubuntu 上安装 G++(C++编译器)- LinuxConfig --- How to Install G++ (C++ Compiler) on Ubuntu - LinuxConfig

# 查看可以安装哪些版本的g++
apt search '^g\+\+-[0-9]+$'

# 安装g++12(兼容C++ 17)
apt remove --purge g++ # 完全卸载
apt install g++-12

# 将 g++-12 添加到 update-alternatives 管理系统中,以便管理多个编译器版本
## 100:是该版本的优先级。如果你有多个候选版本,优先级较高的版本会被默认选中。
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-12 100
update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-12 100

# 手动选择默认的编译器版本
## 运行该命令后,系统会列出所有安装的可用版本,并让你选择一个作为默认的 g++ 版本
update-alternatives --config g++

(2)手动编译 llama.cpp

操作
# 1.生成构建系统所需的文件(如Makefile)【创建"如何构建"的说明书】(配置阶段)
## 生成CPU执行环境
cmake -B build -DCMAKE_BUILD_TYPE=Release
### -B build:指定构建目录为build文件夹(自动创建)
### -DCMAKE_BUILD_TYPE=Release : 指定构建Release版本(比Debug版快3-5倍)

## 生成GPU执行环境
cmake -B build -DCMAKE_BUILD_TYPE=Release -DGGML_CUDA=ON
### -B build:指定构建目录为build文件夹(自动创建)
### -DCMAKE_BUILD_TYPE=Release : 指定构建Release版本(比Debug版快3-5倍)
### -DGGML_CUDA=ON:启用CUDA支持

# 2.编译源代码【按照说明书执行实际构建】(构建阶段)
cmake --build build -j 8
## --build build:指定从build目录读取构建配置
## -j 8:使用8个CPU核心并行编译,以加快编译速度
### -j 的最佳值应为CPU物理核心数的1-1.5倍,可通过nproc命令查看核心数

# 3.安装(可选,但不推荐;目前不install也是没问题的)
cd build
make install

# 4.配置环境变量
echo  'export "PATH=~/02Software/llama.cpp-master/build/bin:$PATH" ' >> ~/.bashrc

# 5.验证是否可用
llama-cli --help
## 如果安装成功,会看到 llama-cli 的帮助信息
补充知识

补充 1:CMake 重要参数解释

1.-D选项的作用

  • -D是 CMake 的**变量定义 参数**,用于在配置阶段**设置变量值**
  • 例如,-DGGML_CUDA=ON
  • GGML_CUDA是 llama.cpp 项目定义的开关**变量**
  • =ON表示启用 CUDA 支持(类似打开功能开关)
  • ▶️ 必须在**首次配置时**指定,后续重新编译时不需要重复设置

2.--config Release

--config Release

此参数的行为取决于 CMake 生成器类型:

生成器类型 典型示例 配置方式
多配置生成器 Visual Studio, Xcode 构建时指定 --config Release
单配置生成器 Unix Makefiles, Ninja 配置时指定 -DCMAKE_BUILD_TYPE=Release

实际应用场景llama.cpp/docs/build.md at master · ggml-org/llama.cpp (github.com)

▌ 在 Windows+Visual Studio 环境下:

# 配置阶段(生成.sln解决方案文件)
cmake -B build -DGGML_CUDA=ON -G "Visual Studio"

# 构建阶段(选择Release配置)
cmake --build build --config Release -j8

▌ 在 Linux/Makefile 环境下:

# 配置阶段。必须在配置阶段指定构建类型
cmake -B build -DGGML_CUDA=ON -DCMAKE_BUILD_TYPE=Release

# 构建阶段。构建时不需要--config参数
cmake --build build -j8

## 补充:-j $(nproc)
## $(nproc) 是一个 Shell 命令,它会返回当前系统的 CPU 核心数。 所以 -j $(nproc) 表示使用所有可用的 CPU 核心进行并行编译。
## 例如, echo $(nproc) 。结果为 12

常见误区警示

  • ❗ 在单配置生成器中使用--config参数是无效的 ❗
  • 如果忘记在 Makefile 生成器设置CMAKE_BUILD_TYPE,默认会生成 Debug 版本(性能差)

所以, 在 Linux 系统上,单配置生成器(如 Makefile)的构建类型更推荐这样设置:

cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build -j 8

补充 2:消除 CUDA 架构警告

nvcc warning : Support for offline compilation for architectures prior to '<compute/sm/lto>_75' will be removed in a future release (Use -Wno-deprecated-gpu-targets to suppress warning).
  • 这是一个关于 CUDA 编译器(nvcc)的警告,告知你当前使用的 CUDA 架构(例如 sm_35、sm_50 等)将在未来的 CUDA 版本中不再支持。如果你在构建时使用的是较旧的 GPU 架构,nvcc 会发出这个警告

  • 不影响当前编译:这个警告不会阻止当前的编译过程。它只是告诉你未来版本的 CUDA 可能不再支持这些较旧的 GPU 架构。

  • 更新目标架构:如果你知道自己使用的是较新的 GPU,可以通过指定目标架构来避免这个警告。例如,可以使用 -arch=sm_75 或更高版本(根据你的 GPU)来编译。

# 禁用警告:你可以通过添加 -Wno-deprecated-gpu-targets 来禁用该警告。
cmake -B build \
-DGGML_CUDA=ON \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_CUDA_FLAGS="-Wno-deprecated-gpu-targets"
# 指定目标架构:如果你使用的是较新的 NVIDIA GPU(例如 Turing 或更高架构),可以明确指定支持的架构
cmake -B build \
-DGGML_CUDA=ON \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_CUDA_FLAGS="-arch=sm_75"  # 修改为你的GPU架构

补充 3:编译的版本

  • 很多项目会同时编译 CPU 和 CUDA 版本,确保两种环境都能支持

  • 当然,llama 有 CPU+GPU 混合加速,保留更好

  • 如果不希望同时编译 CPU 版本,可以尝试修改 CMake 配置,禁用 CPU 版本

cmake -B build \
-DGGML_CUDA=ON \
-DGGML_CPU=OFF \
-DCMAKE_BUILD_TYPE=Release

补充 4:make install的作用

make install 主要用于将编译生成的文件(可执行文件、库文件、头文件等)安装到系统的标准位置,这样你就可以在系统的任何地方使用它们,而不需要依赖于构建目录。具体流程如下:

1.将可执行文件复制到系统路径

  • 比如,构建后生成的可执行文件(例如 llama-clitest-tokenizer 等)会被复制到 /usr/local/bin/ 或者用户指定的路径下。
  • 这样,你就可以直接在全局运行这些命令

2.将库文件复制到系统库目录

  • 如果你的项目包含共享库(如 libllama.so),make install 会将它们复制到系统的库目录(例如 /usr/local/lib/),这样其他程序就可以在需要时链接这些库。

3.安装头文件

  • 如果你在开发过程中需要使用这些库的头文件(例如 ggml.h),make install 会将头文件复制到系统的标准位置(如 /usr/local/include/),方便其他程序或开发者引用。

4.生成 CMake 配置文件

  • 如果你需要在其他项目中使用这个库,make install 会将 CMake 配置文件(如 ggml-config.cmake)安装到合适的目录(通常是 /usr/local/lib/cmake/),这样可以在 CMake 项目中通过 find_package 引用该库。

总结:

  • 不使用 make install:你只能在构建目录下使用该程序和库。

  • 如果需要在其他地方使用**【推荐】**

  • 一是配置环境变量,或使用完整路径

  • 二是需要注意 共享库的查找问题,通过设置 LD_LIBRARY_PATH 可以解决这个问题

    • 如果你运行时遇到类似 "cannot open shared object file" 的错误,说明程序找不到所需的共享库。这时,你可以设置 LD_LIBRARY_PATH 环境变量来告诉系统在哪里查找这些库。
    export LD_LIBRARY_PATH=~/02Software/llama.cpp-master/build/bin:$LD_LIBRARY_PATH
    ~/02Software/llama.cpp-master/build/bin/llama-cli --help
    
  • 使用 make install:就是将构建后的文件移到合适的系统目录,使它们可以全局访问。

  • 缺点就是,一是需要 sudo 权限,二是会把很多其他文件安装进系统目录,不够独立了

  • 总的来说,还是不要使用 make install

4.安装 python 依赖

# 进入虚拟环境
micromamba create -n llama python=3.12
micromamba activate llama
# 安装依赖(requirements.txt在llama.cpp的文件夹内的)
cd ~/02Software/llama.cpp-master
pip install -r requirements.txt -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple

至此,环境部署结束

本文阅读量  次
本站总访问量  次
Authors: wangshangjian