Skip to content

Add native deployment of PaddleOCR-VL on NVIDIA DGX Spark (GB10, aarch64, sm_121) - #18310

Open
BreezeHavana wants to merge 3 commits into
PaddlePaddle:mainfrom
BreezeHavana:dgx-spark-native-deploy
Open

Add native deployment of PaddleOCR-VL on NVIDIA DGX Spark (GB10, aarch64, sm_121)#18310
BreezeHavana wants to merge 3 commits into
PaddlePaddle:mainfrom
BreezeHavana:dgx-spark-native-deploy

Conversation

@BreezeHavana

Copy link
Copy Markdown
Contributor

背景

NVIDIA DGX Spark(GB10)是 aarch64 + Blackwell sm_121 + CUDA 13.0(DGX OS) 的机器,PaddleOCR-VL 在该平台上的官方部署路径全部失效:

官方路径 失效原因
官方 Docker 镜像(deploy/paddleocr_vl_docker/ paddleocr-vl 镜像仅 x86_64,ARM64 无法运行
paddlepaddle-gpu pip wheel 官方无 aarch64+CUDA 版本,且明确暂无支持计划(PaddlePaddle/Paddle#76215
xformers 已确认运行时无调用、非必须依赖(ViT/主模型 attention 全走 flash-attn 与 vLLM 自有后端),且全版本无 aarch64 wheel

本 PR 提供一套原生(非 Docker)离线部署方案:宿主机离线下载 → 传输 Spark → 源码编译 + pip 离线安装,架构与官方 Docker 方案完全等价(两进程),只是用两个原生进程替代两个容器。已在真实 DGX Spark 上完成端到端验证。

新增内容(deploy/paddleocr_vl_dgx_spark/

  • README.md:完整部署文档(标识符约定、四阶段流程、脚本清单、目录结构、运维命令),并附成品离线镜像的下载方式(百度网盘链接 + sha256),下载恢复后可跳过编译直接起服务;
  • config/pipeline_config_vllm.yaml:PaddleOCR-VL-1.6 流水线配置(vLLM 后端);
  • scripts/(7 个幂等脚本,均含调用说明/脚本逻辑/输入输出注释):
脚本 运行位置 作用
00_offline_prepare.sh 宿主机 离线下载 Paddle 源码(固定 SHA+子模块)、torch/triton/flash-attn 源与全部 wheel,打包
00_install_build_deps.sh Spark 源码编译 paddle 所需系统依赖(编译工具链 + cuDNN9/NCCL)
01_build_paddle_wheel.sh Spark 源码编译 paddlepaddle-gpu aarch64 sm_121 wheel
07_install_cuda_toolkit.sh Spark CUDA 12.9 工具链(供 flash-attn 源编,与 torch cu129 主版本一致)
02_setup_runtime.sh Spark venv + 全运行时依赖(含 flash-attn 源编)+ 六项验收,离线 wheel 优先
03_start_services.sh Spark 启动/停止/状态:genai_server(127.0.0.1:8081) + paddlex --serve(:8080) 两进程
04_health_check.sh Spark 三层验证:VLM health / API health / 端到端解析

说明

🤖 Generated with Claude Code

BreezeHavana and others added 2 commits August 17, 2026 16:58
Add deploy/paddleocr_vl_dgx_spark/: README, pipeline config and the full
script set for deploying PaddleOCR-VL natively (no Docker) on DGX Spark
(aarch64 + Blackwell sm_121 + CUDA 13.0 OS stack), where the official
paths all fail:

- the official docker images are x86_64-only;
- there is no aarch64+CUDA paddlepaddle-gpu wheel (Paddle#76215);
- xformers has no aarch64 wheel and is not used at runtime anyway.

Contents:
- 00_offline_prepare.sh: download Paddle source (pinned SHA + submodules),
  torch/triton/flash-attn sources and all pip wheels on a host machine
- 00_install_build_deps.sh / 01_build_paddle_wheel.sh: build the
  paddlepaddle-gpu aarch64 wheel from source on the Spark
- 07_install_cuda_toolkit.sh: CUDA 12.9 toolkit for the flash-attn build
- 02_setup_runtime.sh: venv + full runtime stack (incl. flash-attn source
  build), with an inline paddlex patch dropping the unused xformers
  requirement, idempotent with offline-wheel preference
- 03_start_services.sh / 04_health_check.sh: start/stop/status of the
  two-process serving stack (genai_server 127.0.0.1:8081 + paddlex
  --serve :8080) and three-layer health checks
- README also links a ready-to-use offline image of the finished
  environment (restore and skip straight to serving)

The deployment was validated end-to-end on a real DGX Spark.
Related upstream change: PaddlePaddle/PaddleX#5194 (drop xformers).

Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Claude <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant