DGX Spark llama.cpp 方式部署 gpt-oss-120b 模型

1 条回复
19 次浏览

DGX Spark 使用 llama.cpp 部署 GPT-OSS-120B 模型

原文参考: https://v2ex.com/t/1195382
原文参考: https://2libra.com/post/ai-programming/sS2H4De
参考资料: https://forums.developer.nvidia.com/t/pre-installed-ollama-configuration/349480

书接上回,国内这方面资料太少了,半吊子英语水平,一边看一边尝试,总结下来就是以下步骤,供大家参考。
参考资料学习了很久,最下面还有很多相关的帖子,基本都看了一遍,有兴趣的可以看看

总结一下

Ollama 这个就是个玩具,真的要部署最好采用 vLLM 或者 llama.cpp 方式,还有一种 TensorRT-LLM ,英伟达出的部署方式
综合看了下 DGX Spark 采用 llama.cpp 方式部署是最成熟优化最完整的

最近甚至加了一个群,里面全是卖教程的,一位 99,讲的全是一键 openclaw,一键买模型,一键买服务器.
大家看的爽了给个金币,我也赚钱了


📋 前置准备

  1. 需要魔法(网络代理)
  2. 安装 Node.js(可通过 nvm 安装,选择最新 LTS 版本即可),后续安装龙虾 openclaw,顺带准备好

一、安装系统依赖

一次性安装所有必要的编译工具和开发库:

复制
sudo apt update
sudo apt install -y clang cmake libcurl4-openssl-dev libssl-dev build-essential

二、克隆并编译 llama.cpp

复制
# 克隆仓库(这个实在不行就手动下载放在相同目录下,因为 git clone 经常失败,git 需要单独设置代理)
git clone https://github.com/ggml-org/llama.cpp.git
cd llama.cpp

# 编译(关键:启用 CUDA 和 CURL 支持)
cmake -B build -DGGML_CUDA=ON -DGGML_CURL=ON
cmake --build build --config Release -j 20

⚠️ 如果编译后运行报 SSL/CURL 相关错误,请清理后重新编译:

复制
cd ~/llama.cpp
rm -rf build
cmake -B build -DGGML_CUDA=ON -DLLAMA_CURL=ON -DLLAMA_OPENSSL=ON
cmake --build build --config Release -j 20

三、启动服务(推荐 B 方式)

方式 A:自动从 Hugging Face 下载模型(没成功过,不是代理的问题,是文件压根找不到,基本给的例子都是找不到返回 404)

复制
cd ~/llama.cpp/build/bin

./llama-server -hf ggml-org/gpt-oss-120b-GGUF \
  -fa on -ngl 999 \
  --jinja \
  --ctx-size 0 \
  -b 2048 -ub 2048 \
  --no-mmap \
  --temp 1.0 \
  --top-p 1.0 \
  --top-k 0 \
  --reasoning-format auto

方式 B:手动下载模型后加载

1. 创建模型目录

复制
mkdir -p ~/models/gpt-oss-120b
cd ~/models/gpt-oss-120b

2. 手动下载 GGUF 模型文件

前往以下地址,用浏览器下载分片文件:

复制
https://huggingface.co/bartowski/openai_gpt-oss-120b-GGUF/tree/main/openai_gpt-oss-120b-Q3_K_M

需要下载的文件:

  • openai_gpt-oss-120b-Q3_K_M-00001-of-00002.gguf
  • openai_gpt-oss-120b-Q3_K_M-00002-of-00002.gguf

将文件放到 ~/models/gpt-oss-120b/ 目录下。

3. 启动服务(方式 B 直接指定分片文件路径)

💡 llama.cpp 新版本支持直接加载分片文件,无需手动合并。

复制
cd ~/llama.cpp/build/bin

./llama-server -m ~/models/gpt-oss-120b/openai_gpt-oss-120b-Q4_K_M-00001-of-00002.gguf \
  -fa on -ngl 999 \
  --jinja \
  --ctx-size 0 \
  -b 2048 -ub 2048 \
  --no-mmap \
  --temp 1.0 \
  --top-p 1.0 \
  --top-k 0 \
  --reasoning-format auto

四、验证服务是否正常

服务启动后默认监听 http://localhost:8080,执行以下命令测试:

复制
curl -s http://localhost:8080/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-oss-120b",
    "messages": [
      { "role": "user", "content": "Hello, who are you?" }
    ],
    "max_tokens": 100
  }'

五、配置开机自启动(systemd)

将以下脚本保存后整体执行,可一键完成配置:

复制
# ===== 请确认你的用户名 =====
# 脚本会自动检测,如果不对请手动修改
USERNAME=$(whoami)
HOME_DIR="/home/$USERNAME"

echo "正在为用户 $USERNAME 配置 llama.cpp 开机自启动..."

# 第一步:创建启动脚本
sudo tee /usr/local/bin/start-llama-server.sh > /dev/null <<EOF
#!/bin/bash
cd $HOME_DIR
$HOME_DIR/llama.cpp/build/bin/llama-server \
  -m $HOME_DIR/models/gpt-oss-120b/openai_gpt-oss-120b-Q4_K_M-00001-of-00002.gguf \
  -fa on -ngl 999 \
  --jinja \
  --ctx-size 0 \
  -b 2048 -ub 2048 \
  --no-mmap \
  --temp 1.0 \
  --top-p 1.0 \
  --top-k 0 \
  --reasoning-format auto
EOF

# 第二步:添加执行权限
sudo chmod +x /usr/local/bin/start-llama-server.sh

# 第三步:创建 systemd 服务
sudo tee /etc/systemd/system/llama-server.service > /dev/null <<EOF
[Unit]
Description=llama.cpp Server for GPT-OSS-120B
After=network.target network-online.target
Wants=network-online.target

[Service]
User=$USERNAME
Group=$USERNAME
ExecStart=/usr/local/bin/start-llama-server.sh
Restart=on-failure
RestartSec=5
Type=simple
TimeoutStopSec=30
KillMode=process

[Install]
WantedBy=multi-user.target
EOF

# 第四步:重新加载 systemd 并启用服务
sudo systemctl daemon-reload
sudo systemctl enable llama-server.service
sudo systemctl start llama-server.service

# 第五步:显示状态
echo "=================================="
echo "✅ 安装完成!服务状态:"
sudo systemctl status llama-server.service --no-pager

echo "=================================="
echo "📝 常用命令:"
echo " 查看日志: sudo journalctl -u llama-server.service -f"
echo " 重启服务: sudo systemctl restart llama-server"
echo " 停止服务: sudo systemctl stop llama-server"
echo "=================================="

📝 常用管理命令

操作命令
查看实时日志sudo journalctl -u llama-server.service -f
重启服务sudo systemctl restart llama-server
停止服务sudo systemctl stop llama-server
查看服务状态sudo systemctl status llama-server

📢 转载声明:如需转载本文,请注明原文出处

发表一个评论

R保持