llama.cpp CUDA with Gemma4-E4B(Ubuntu 24.04)部署

1.简述

最后发现支持GGUF文件的轻度部署环境还是llama.cpp好用,ollama的modelfile难用,容易丢。

实测量化版能跑到4.3G显存,测试环境是基于vscode+continue openai兼容模式

1.1.下载项目文件并安装依赖环境

bash 复制代码
# 下载文件
https://github.com/ggml-org/llama.cpp/archive/refs/tags/llama.cpp-b8646.zip
bash 复制代码
# 解压到系统目录
sudo tar -C /usr -xzf llama.cpp-b8646.zip
bash 复制代码
# 安装 Git, CMake, GCC/G++, Python 等基础依赖
sudo apt update
sudo apt install -y build-essential cmake git wget python3-pip
bash 复制代码
# 添加 CUDA 官方软件源
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/x86_64/cuda-keyring_1.1-1_all.deb
sudo dpkg -i cuda-keyring_1.1-1_all.deb
sudo apt-get update

# 安装 CUDA Toolkit 12.5(此步骤会自动安装匹配的 NVIDIA 驱动)
# 你可以根据需要选择更新的版本,如 12.6,只需将命令中的 "12-5" 替换即可[reference:3]
sudo apt-get -y install cuda-toolkit-12-5
bash 复制代码
# 编辑 ~/.bashrc 文件
echo 'export PATH=/usr/local/cuda-12.5/bin${PATH:+:${PATH}}' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda-12.5/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}' >> ~/.bashrc
source ~/.bashrc
bash 复制代码
# 最后验证 CUDA 编译器与驱动是否安装成功
nvcc --version
nvidia-smi

1.2.进行CUDA编译

下方参数可灵活配置,其他参数自行搜索即可。

显卡系列 代表型号 计算能力 CMake 参数 (-DCMAKE_CUDA_ARCHITECTURES=...)
GTX 10 系列 (Pascal) GTX 1060, 1070, 1080, 1080Ti 6.1 "61"
GTX 16 系列 (Turing) GTX 1650, 1660, 1660 Ti 7.5 "75"
RTX 20 系列 (Turing) RTX 2060, 2070, 2080, 2080 Ti 7.5 "75"
RTX 30 系列 (Ampere) RTX 3060, 3070, 3080, 3090 8.6 "86"
RTX 40 系列 (Ada Lovelace) RTX 4060, 4070, 4080, 4090 8.9 "89"
bash 复制代码
# 在项目根目录下创建一个 build 文件夹,所有编译生成的文件都会放在这里,这可以保持源码目录的整洁。
mkdir build && cd build
# 关键一步:运行 cmake 进行配置。要启用 CUDA 支持,必须添加 -DGGML_CUDA=ON 参数。同时,建议使用 -DCMAKE_BUILD_TYPE=Release 进行优化编译
cmake .. -DCMAKE_BUILD_TYPE=Release -DGGML_CUDA=ON -DCMAKE_CUDA_ARCHITECTURES="75" -DLLAMA_BUILD_SERVER=ON
# 配置完成后,开始编译。-j $(nproc) 会利用你所有的 CPU 核心来加速编译过程。
cmake --build . --config Release -j $(nproc)

1.3.服务端开启

带上我从魔搭社区下载的热呼的Gemma4-E4B-it进行愉快的Vscode agent测试

bash 复制代码
#!/bin/bash
# 启动 llama.cpp 服务器脚本

# 模型路径
MODEL_PATH="/home/azusa/llama.cpp/models/gemma-4-E4B-it-IQ4_XS.gguf"

# 视觉投影模型路径
MMPROJ_PATH="/home/azusa/llama.cpp/models/mmproj-F16.gguf"

# 可执行文件路径
SERVER_BIN="/home/azusa/llama.cpp/llama.cpp-b8646/build/bin/llama-server"

# 检查模型文件是否存在
if [ ! -f "$MODEL_PATH" ]; then
    echo "错误: 模型文件 $MODEL_PATH 不存在"
    exit 1
fi

if [ ! -f "$MMPROJ_PATH" ]; then
    echo "错误: 视觉投影文件 $MMPROJ_PATH 不存在"
    exit 1
fi

# 检查可执行文件是否存在
if [ ! -f "$SERVER_BIN" ]; then
    echo "错误: 可执行文件 $SERVER_BIN 不存在,请先编译 llama.cpp"
    exit 1
fi

# 启动服务器
# 参数说明:
#   --host 0.0.0.0        - 监听所有网络接口
#   --port 11434          - 端口号(与 Ollama 兼容)
#   -c 8192               - 上下文长度(根据显存调整)
#   --n-gpu-layers 99     - 加载所有层到 GPU(RTX 2060 12G 足够)
#   --batch-size 512      - 批处理大小
#   --threads 8           - CPU 线程数
#   --flash-attn on       - 启用 Flash Attention
$SERVER_BIN \
    -m "$MODEL_PATH" \
    --mmproj "$MMPROJ_PATH" \
    --host 0.0.0.0 \
    --port 11434 \
    -c 32768 \
    --n-gpu-layers 99 \
    --batch-size 512 \
    --threads 8 \
    --flash-attn on

1.4.实测结果

视觉需要加入额外的mmproj.gguf文件,已经测试图片

2.总结

之前的Qwen3.5的多模态模型给了我不小的震撼,这次的Gemma4-E4B更是如此。

相关推荐
workflower4 小时前
智能无人机成低空经济核心赛道
运维·人工智能·机器学习·机器人·云计算·无人机
ShineWinsu5 小时前
对于C++:缓冲区管理的详细解析
linux·c++·面试·编程·笔试·io·缓冲区
张小姐的猫5 小时前
【Linux】网络编程 —— 传输层协议 TCP(下)
linux·运维·服务器·网络·tcp/ip·http·php
程序员AlbertTu5 小时前
第2章 上手 Linux:环境与文件操作
linux·运维·服务器
☆凡尘清心☆6 小时前
CentOS Stream 9 源码编译搭建 Zabbix7.0.29 完整部署方案(部署成功)
linux·运维·centos
Escalating_xu6 小时前
【Linux】进程间通信:从匿名管道、FIFO 到共享内存、消息队列与信号量
java·linux·面试
予昊6 小时前
Linux 资源控制实战分析:用 LXC 亲手造一个 “迷你虚拟机“
linux·运维·服务器
allforgood6 小时前
管理网络安全
linux
xiaoxiangsiyan6 小时前
RHCE之2026年全套考点详解
运维·前端·网络·chrome·学习·rhce
love530love6 小时前
彻底清理 Windows 右键“打开方式“中的重复/失效程序项(PyCharm 多版本残留实战 + 自动化脚本)
运维·人工智能·windows·pycharm·jetbrains·toolbox