Skip to content

About

Nvidia DGX Spark 和GB10 Grace Blackwell 平台,本地大模型管理工具

Resources

Stars

1 star

Watchers

0 watching

Forks

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DGX Spark Manager 部署与运维指南

本指南面向系统管理员,详细介绍如何在 NVIDIA DGX Spark (ARM64 架构) 服务器上部署、配置及日常运维 dgxspark-manager 系统。


https://github.com/0111/dgxspark-manager/blob/main/video.mp4

1. 部署前提与环境要求

1.1 硬件与系统要求

  • 系统架构:仅限 ARM64 (aarch64) 架构(NVIDIA DGX Spark)。
  • 物理内存:要求 128 GB 或更高(利用 DGX 统一内存架构)。
  • 磁盘余量:模型存放分区或 /home 建议保留至少 50 GiB 的可用空间用于运行日志和缓存。

1.2 软件与驱动依赖

  • 操作系统:建议使用官方 DGX OS(基于 Ubuntu 22.04 LTS 或更高版本的 ARM64 发行版)。

  • NVIDIA 驱动:nvidia-smi 能够正常执行且可识别当前 GPU 设备。

  • CUDA Compatibility:必须安装 cuda-compat-13-2,确保兼容链接库文件位于 /usr/local/cuda-13.2/compat。(apt install cuda-compat-13-2)

  • Docker 容器环境:

    • Docker Engine 20.10+

    • Docker Compose v2(可通过 docker compose 调用)

    • NVIDIA Container Toolkit(已配置 runtime 允许 Docker 容器调用 GPU)

    • vllm采用 nvcr.io/nvidia/vllm:26.05.post1-py3

      该版本cuda版本高于宿主机,所以需要宿主机安装 cuda-compat-13-2 兼容包

    该兼容包,通过docker环境变量和目录映射的方式让容器可以兼容cuda程序的运行
    environment: [LD_LIBRARY_PATH=/usr/local/cuda/compat:/usr/local/nvidia/lib:/usr/local/nvidia/lib64]
      volumes: ["${MODEL_ROOT_HOST:-/home/spark/LocalModels/LLModels}:/models:ro", "/usr/local/cuda-13.2/compat:/usr/local/cuda/compat:ro"]
      
    

2. 一键快速部署

系统提供了自动化安装与初始化脚本 main/scripts/deploy.sh。

2.1 赋予执行权限

chmod +x main/scripts/deploy.sh main/bin/dgxspark-manager

2.2 执行一键部署

./main/scripts/deploy.sh

部署流程详解:

  1. 环境预检:检查 CPU、内存、OS、NVIDIA 驱动、CUDA 兼容动态库、可用端口等。
  2. 配置生成:检查项目目录下是否存在 .env 文件。若不存在,将自动创建,并强随机生成管理员密码 (ADMIN_PASSWORD)、API Token (ADMIN_TOKEN) 和 LiteLLM 密钥 (LITELLM_MASTER_KEY),规避弱口令风险。
  3. 镜像拉取:自动拉取 Ollama, LiteLLM, SearXNG, Open-WebUI 第三方镜像。
  4. 服务构建:自动构建本地 manager-api (API 服务) 与 manager-web (Web 前端) 容器镜像。
  5. 服务启动与验证:使用 Docker Compose 启动各组件,并循环检测健康状态直到完全 Healthy。
  6. 输出汇总:部署成功后,控制台将输出所有 Web 访问路径、账号密码及 API 密钥。

3. 部署选项与高级参数

部署脚本 main/scripts/deploy.sh 支持通过命令行参数自定义执行逻辑:

参数 作用说明
--check-env 仅执行宿主机硬件、驱动、CUDA 及网络环境的检查。
--audit-models 仅扫描大模型文件目录并生成审核报告。
--check-only 仅报告系统环境缺失的依赖项,不执行任何安装、修改或容器启动操作。
--no-start 初始化配置、准备环境并构建镜像,但不启动容器。
--skip-pull 强制使用本地现有的第三方镜像,跳过网络 Pull 步骤(适用于离线部署)。
-h, --help 显示帮助信息。

4. 核心配置文件 .env 详解

.env 包含系统的关键凭证与运行参数,其权限在生成时会自动限制为 0600(仅所有者可读写)。

环境变量 默认值/推荐值 说明
PUBLIC_HOST 192.168.199.4 宿主机对外可访问的 IP 地址。
MODEL_ROOT_HOST /home/spark/LocalModels/LLModels 宿主机上存放本地大模型文件的根目录。
PROJECT_DIR /home/spark/codex_work/dgxSpark-Manager 本项目在宿主机上的绝对路径。
MANAGER_API_PORT 8088 Manager API 服务的映射端口。
MANAGER_WEB_PORT 8089 Manager Web 网页界面的映射端口。
LITELLM_PORT 4000 LiteLLM 网关映射端口。
OPEN_WEBUI_PORT 3000 Open WebUI 映射端口。
SEARXNG_PORT 8080 SearXNG 映射端口。
VLLM_EMBEDDING_PORT 8001 vLLM-Embedding 服务映射端口。
ADMIN_USERNAME admin Web 后台登录的管理员用户名。
ADMIN_PASSWORD (强随机生成) 自动生成的 Web 后台登录密码。
ADMIN_TOKEN (强随机生成) 供 CLI 工具及内部接口调用的 Bearer Token。
LITELLM_MASTER_KEY (强随机生成) LiteLLM 和 Open WebUI 之间鉴权的主 API Key。
SEARXNG_NO_PROXY localhost,...,vllm,vllm-embedding 内部容器间通信免代理列表(须包含 vllm-embedding)。

5. 容器策略说明

  • 无自动重启:所有容器均不设置 restart 策略,全部手动启动,确保受控运行。
  • 本地镜像优先:若本地已存在镜像则不主动拉取最新版,使用 --skip-pull 参数进一步确保离线兼容。
  • 按需启动:vllm 和 vllm-embedding 使用 Docker Compose profiles 隔离,仅在用户通过加载向导显式请求时启动。
  • Open WebUI 数据持久化:使用本地 Bind Mount 映射至 main/config/openwebui-data/ 目录,便于数据迁移和备份。

6. 模型管理

6.1 模型扫描

python3 main/bin/dgxspark-manager scan

扫描 MODEL_ROOT_HOST 目录下的所有模型文件,生成审计报告至 main/scripts/results/。

6.2 模型加载(Web 向导)

通过 Web 页面(:8089)的模型加载向导完成三步操作:

  1. 选择模型 — 从扫描结果中选择状态为 READY 的模型。
  2. 配置参数 — 选择后端(vLLM / vLLM-Embedding / Ollama)、GPU 内存利用率、上下文长度等。
  3. 预检执行 — 系统自动验证参数、预判显存、检测冲突,通过后确认加载。

6.3 独立 Embedding 模型管理

系统支持两种方式管理嵌入模型:

  • 伴随加载:选择 vLLM 后端加载生成模型时,同时指定一个 Embedding 模型及其 GPU 利用率(默认 0.05,约 6.4 GiB)。
  • 独立加载:通过选择 vllm-embedding 后端,单独加载嵌入模型。
  • 独立卸载:生成模型和嵌入模型各自拥有独立的卸载按钮,互不影响。

6.4 GPU 显存预判机制

系统在加载前执行显存预判,保障系统稳定性:

  • 计算方式:projected_utilization = 已运行服务的利用率之和 + 新服务利用率
  • 安全阈值:总利用率超过 0.90(90%) 时,加载将被拒绝。
  • 替换模式:启用 replace_existing 时,先扣减将要卸载服务的利用率再重新评估。
  • 若显存不足,前端会提示用户降低 GPU 内存利用率或先卸载其他模型。

6.5 CLI 模型加载

# 交互式加载向导
python3 main/bin/dgxspark-manager load

# 切换模型(自动卸载当前模型)
python3 main/bin/dgxspark-manager switch

# 卸载指定后端的模型
python3 main/bin/dgxspark-manager unload --backend vllm-embedding

7. 日常运维与诊断

7.1 状态检查与日志查看

# 查看容器运行状态
docker compose -f main/compose.yaml ps -a

# 实时查看关键容器日志
docker compose -f main/compose.yaml logs --tail=100 -f manager-api
docker compose -f main/compose.yaml logs --tail=100 -f vllm-embedding

7.2 CLI 完整命令参考

命令 说明
help 显示命令帮助
check 检测 DGX、CUDA、Docker、网络和模型运行环境
scan 检测本地大模型文件并生成报告
load 通过交互向导选择、预检并加载本地模型
switch 通过交互向导卸载当前模型并切换模型
start [service] 启动项目服务(可指定单个服务)
stop [service] 停止项目服务
restart [service] 重启项目服务
delete <service> 停止并删除指定服务容器
unload [--backend] 卸载模型(--backend 支持 vllm / vllm-embedding / ollama)
clean [--images] [--yes] 清理已停止的容器(--images 同时清理悬空镜像)

使用示例:

python3 main/bin/dgxspark-manager start          # 启动全部服务
python3 main/bin/dgxspark-manager stop            # 停止全部服务
python3 main/bin/dgxspark-manager clean --images --yes  # 清理释放空间

8. 发布打包

项目提供自动化打包脚本,生成日期命名的发布包:

./build_release.sh

发布包自动存储在 Releases/ 目录,文件名格式为 dgxSpark-Manager-YYYY.MM.DD.tar.gz。打包时自动排除 .git、.env、__pycache__ 等敏感和临时文件。


9. 升级、备份与卸载

9.1 升级

在拉取最新的代码后,执行以下命令重新编译并应用配置(此操作不会覆盖已有的 .env 自定义变量):

./main/scripts/deploy.sh --skip-pull

9.2 备份

应定期备份以下数据:

备份项 路径/说明
环境配置 main/.env 文件
管理数据卷 manager-data Docker 卷
Open WebUI 数据 main/config/openwebui-data/ 目录
审计报告 main/scripts/results/ 目录
SQLite 数据库 manager.db(位于容器内 DATA_DIR)
LiteLLM 配置 main/config/litellm.yaml

About

Nvidia DGX Spark 和GB10 Grace Blackwell 平台,本地大模型管理工具

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages