外观
🚀 llama.cpp 安装部署测试
需重点关注
建议优先使用免安装方式启动模型,如果启动异常,请手动编译安装 llama.cpp。
由于平台存在多种规格配置,可能存在兼容性。如果模型推理异常,请手动编译安装 llama.cpp。
⚠️ 以下 GPU 不支持免安装方式:
- V100
- P40
🔥 免安装直接用 (推荐)
已经完成 llama.cpp 的源码编译,可直接通过以下命令启动模型即可。
提示
平台会定期编译更新 llama.cpp,请在实例内公开盘 /root/public-storage/package/llama.cpp/ 中查看是最新版本。
如果有新版,请更新 LLAMACPP_VERSION 版本
启动推理
以启动 Qwen3.8-27B Q4 版本的推理为例。
bash
# 指定 llama.cpp 二进制及动态库
export LLAMACPP_VERSION=0.1.2-dev
export LLAMACPP_PATH=/root/public-storage/package/llama.cpp/${LLAMACPP_VERSION}/build
export LD_LIBRARY_PATH=$LLAMACPP_PATH/bin:$LD_LIBRARY_PATH
# 启动模型
$LLAMACPP_PATH/bin/llama-server \
--model /root/public-storage/model/unsloth/Qwen3.8-27B-GGUF/Qwen3.8-27B-Q4_K_M.gguf \
--host 0.0.0.0 \
--port 8000 \
--ctx-size 32768 \
--parallel 1 \
--n-gpu-layers 999 \
--flash-attn on \
--cache-type-k q8_0 \
--cache-type-v q8_0 \
--jinja \
--metrics请使用 nohup 的方式启动 llama.cpp 服务。
测试推理
✅ 模型加载完成后,即可通过以下命令测试模型
bash
curl http://127.0.0.1:8000/v1/chat/completions \
-H 'Content-Type: application/json' \
-d '{
"model": "Qwen3.8-27B",
"stream": true,
"messages": [
{
"role": "user",
"content": "llama.cpp 最佳实践"
}
]
}'
🚗 手动编译 llama.cpp 进程
当前自动生成的目录是 /root/workspace/llama.cpp, 如果要变更目录,则修改下面的脚本中 LLAMA_DIR 变量。或者在编译完成后,直接 mv 移动文件夹到任意目录即可。
⚠️ 编译非常耗时,通常需要十几分钟才可完成编译。
编译 llama.cpp 进程
bash
cat >/root/install_llama.sh <<'EOF'
#!/usr/bin/env bash
set -Eeuo pipefail
LLAMA_DIR="/root/workspace/llama.cpp"
REPO="https://ghfast.top/https://github.com/ggml-org/llama.cpp.git"
echo "=================================================="
echo " 安装 llama.cpp"
echo " 目录: ${LLAMA_DIR}"
echo "=================================================="
# --------------------------------------------------
# 1. 安装依赖
# --------------------------------------------------
apt-get update
apt-get install -y \
git \
cmake \
build-essential \
pkg-config \
curl \
libcurl4-openssl-dev
# --------------------------------------------------
# 2. 检查 GPU / CUDA
# --------------------------------------------------
echo
echo ">>> NVIDIA GPU"
nvidia-smi
echo
echo ">>> CUDA Toolkit"
if ! command -v nvcc >/dev/null 2>&1; then
echo "ERROR: 没有找到 nvcc"
echo "请先安装 CUDA Toolkit"
exit 1
fi
nvcc --version
# --------------------------------------------------
# 3. 获取 llama.cpp
# --------------------------------------------------
mkdir -p ${LLAMA_DIR}
if [[ ! -d "${LLAMA_DIR}/.git" ]]; then
echo
echo ">>> clone llama.cpp"
rm -rf "${LLAMA_DIR}"
git clone \
--depth=1 \
"${REPO}" \
"${LLAMA_DIR}"
else
echo
echo ">>> 更新 llama.cpp"
git -C "${LLAMA_DIR}" remote set-url origin "${REPO}"
git -C "${LLAMA_DIR}" fetch \
--depth=1 origin master
git -C "${LLAMA_DIR}" reset \
--hard origin/master
fi
echo
echo ">>> 当前版本"
git -C "${LLAMA_DIR}" log -1 --oneline
# --------------------------------------------------
# 4. 编译 CUDA 版本
# --------------------------------------------------
echo
echo ">>> 编译 llama-server"
cd "${LLAMA_DIR}"
rm -rf build
cmake -B build \
-DGGML_CUDA=ON \
-DGGML_NATIVE=OFF \
-DLLAMA_BUILD_TESTS=OFF \
-DCMAKE_BUILD_TYPE=Release
cmake --build build \
--config Release \
--target llama-server \
-j"$(nproc)"
# --------------------------------------------------
# 5. 检查
# --------------------------------------------------
SERVER="${LLAMA_DIR}/build/bin/llama-server"
if [[ ! -x "${SERVER}" ]]; then
echo "ERROR: llama-server 编译失败"
exit 1
fi
echo
echo "=================================================="
echo " llama.cpp 编译成功"
echo "=================================================="
echo
echo "Binary:"
echo "${SERVER}"
echo
"${SERVER}" --version || true
echo
echo "动态库检查:"
ldd "${SERVER}" | grep "not found" && {
echo "WARNING: 存在缺失动态库"
exit 1
} || true
EOF
chmod +x /root/install_llama.sh
/root/install_llama.sh启动模型服务
丹摩在实例内预置了大量的主流模型,编译完成后,直接启动模型服务即可。
bash
export LLAMACPP_PATH=/root/workspace/llama.cpp/build
export LD_LIBRARY_PATH=$LLAMACPP_PATH/bin:$LD_LIBRARY_PATH
$LLAMACPP_PATH/bin/llama-server \
--model /root/public-storage/model/unsloth/Qwen3.8-27B-GGUF/Qwen3.8-27B-Q4_K_M.gguf \
--host 0.0.0.0 \
--port 8000 \
--ctx-size 32768 \
--parallel 1 \
--n-gpu-layers 999 \
--flash-attn on \
--cache-type-k q8_0 \
--cache-type-v q8_0 \
--jinja \
--metrics测试模型
bash
curl http://127.0.0.1:8000/v1/chat/completions \
-H 'Content-Type: application/json' \
-d '{
"model": "Qwen3.8-27B",
"messages": [
{
"role": "user",
"content": "你好,介绍一下你自己"
}
],
"temperature": 0.6,
"max_tokens": 512
}'