Skip to content

Publish the GB10 runtime base and make DeepSeek runnable from it - #63

Merged
FujitsuPolycom merged 4 commits into
mainfrom
claude/publish-runtime-base
Aug 20, 2026
Merged

Publish the GB10 runtime base and make DeepSeek runnable from it#63
FujitsuPolycom merged 4 commits into
mainfrom
claude/publish-runtime-base

Conversation

@FujitsuPolycom

Copy link
Copy Markdown
Owner

Resulting behavior

The runtime layer the serving profiles derive from is published and pinned by
digest, and the DeepSeek quickstart launches from it.

ghcr.io/fujitsupolycom/gb10-vllm-base@sha256:9d88c2152b0ae9f33e7a793b7df29398ed79710b205b9244ac63597ab4481ada
linux/arm64, 23.6 GB, built from source commit 19523482c298. Anonymous
pull verified.

What the image carries

Checked by running it, not inferred:

  • The forked vLLM, 0.11.2.dev279+eldritch.final.fcc6141.b12x284a2ea.fi25dd814.cu132.20260626,
    registering 360 architectures including DeepseekV4ForCausalLM and
    Glm4MoeForCausalLM
  • B12X, FlashInfer 0.6.13+cu132, DeepGEMM 2.5.0, torch 2.12.0+cu132
  • libspark_transport_capi.so and fourteen probe binaries — the ARM64 CUDA
    build a deployment would otherwise perform
  • The patched libnccl.so.2.30.7
  • /opt/spark-vllm/sitecustomize.py, so the transport installs when a
    VLLM_SPARK_TP4_* mode is set

Not carried, and needed only by the EXL3 lanes: ExLlamaV3 and LMCache, which
scripts/bootstrap_exl3.py builds into a derived image.

Two dead ends replaced

runtime/exl3-r7/README.md required a parent image supplied through
BASE_IMAGE with no way to obtain one. docs/DEEPSEEK_V4_FLASH_QUICKSTART.md
required "a vLLM build that can load DeepseekV4ForCausalLM with the B12X
kernel family" and did not say where to get it. Both now give the pull.

The DeepSeek launch matches the running configuration

The quickstart's command omitted four flags the deployed stack carries. Each
failure is one an operator would hit after provisioning four machines:

  • --kernel-config '{"enable_cutedsl_warmup": false}' — without it the worker
    aborts in CuteDSL router-GEMM warmup before the engine starts
  • --kv-cache-dtype fp8_ds_mlafp8 allocates and serves identically while
    declaring a geometry that does not match what is allocated; the engine's own
    kernels never read that declaration, an external key-value consumer does
  • --tokenizer-mode deepseek_v4
  • --headless on ranks 1 through 3

The launch is now a container invocation carrying the host namespaces, RDMA
device, and memory-lock limit the transport requires.

Lock and retrieval

runtime/faststart-lock.json records the image by manifest digest, and
scripts/pull_pinned_images.py retrieves it with the other pinned images —
four in total. check_runtime_inputs.py --check-remote watches it for
retrievability alongside the git sources.

Scope

The published image is the runtime base, not a serving profile. A digest states
which bytes are correct; keeping them served is a separate ongoing act, which
docs/RUNTIME_INPUT_DURABILITY.md states.

Validation

ruff clean. python -m pytest scripts runtime -q → 1789 passed, 12 skipped.
pull_pinned_images.py --plan lists four digest-pinned images. Repo-relative
Markdown link and anchor check passes.

The runtime layer the serving profiles derive from is retrievable from a
registry: `ghcr.io/fujitsupolycom/gb10-vllm-base` at manifest digest
`sha256:9d88c2152b0ae9f33e7a793b7df29398ed79710b205b9244ac63597ab4481ada`,
`linux/arm64`, built from source commit `19523482c298`.

`runtime/faststart-lock.json` records it, so it is named by content
digest like every other pinned input, and
`scripts/pull_pinned_images.py` retrieves it alongside them.

Two documents asked a reader for an image and did not say where to get
one. `runtime/exl3-r7/README.md` required a parent supplied through
`BASE_IMAGE`, and `docs/DEEPSEEK_V4_FLASH_QUICKSTART.md` required "a
vLLM build that can load `DeepseekV4ForCausalLM` with the B12X kernel
family". Both now give the pull.

Scope. The published image is the runtime base, not a serving profile:
a deployment still builds its derived image. The digest identifies one
immutable set of bytes; keeping them served is a separate ongoing act,
which `docs/RUNTIME_INPUT_DURABILITY.md` states.

Validation: ruff, `python -m pytest scripts runtime -q` at 1789 passed
12 skipped, `python scripts/pull_pinned_images.py --plan` listing four
digest-pinned images, and the repo-relative Markdown link and anchor
check.
The quickstart asked for "a vLLM build that can load
`DeepseekV4ForCausalLM` with the B12X kernel family" without saying where
to obtain one, and its launch command omitted four flags the running
configuration carries.

The published GB10 runtime base registers `DeepseekV4ForCausalLM` and
carries B12X, the patched NCCL, and the transport library, so it serves
this checkpoint with no derived build. The launch is a container
invocation against that image by digest rather than a bare `vllm serve`,
including the host namespaces, RDMA device, and memory-lock limit the
transport needs.

Four flags are stated as load-bearing because omitting any of them fails
a deployment that is otherwise correct:

- `--kernel-config '{"enable_cutedsl_warmup": false}'` disables a CuteDSL
  router-GEMM warmup that aborts the worker before the engine starts.
- `--kv-cache-dtype fp8_ds_mla` declares the layout the engine allocates.
  `fp8` allocates identically and serves identically, and declares a
  geometry that does not match, which an external key-value consumer
  reads.
- `--tokenizer-mode deepseek_v4`.
- `--headless` on ranks 1 through 3, without which every rank binds the
  API port.

Validation: ruff, `python -m pytest scripts runtime -q` at 1789 passed
12 skipped, and the repo-relative Markdown link and anchor check. The
architecture registration was checked by running the published image:
`DeepseekV4ForCausalLM` is among the 360 architectures it registers.
…s it

Two images are published and pinned by digest in
`runtime/faststart-lock.json`:

- `ghcr.io/fujitsupolycom/gb10-vllm-base` — the runtime layer the serving
  profiles derive from. SM121 kernels, aarch64 cu132 wheels, the pinned
  vLLM, B12X, FlashInfer, DeepGEMM, the patched NCCL, and
  `libspark_transport_capi.so` with fourteen probe binaries. It is the
  parent `runtime/exl3-r7/build-image.sh` takes through `BASE_IMAGE`.
- `ghcr.io/fujitsupolycom/gb10-vllm-serving` — derived from that base and
  carrying LMCache, the EXL3 quantization overlay, and the R7 profile
  overlays. It registers `Glm4MoeForCausalLM` and
  `DeepseekV4ForCausalLM`.

A four-rank launch established which image serves DeepSeek-V4-Flash-0731
and corrected the quickstart accordingly. The base registers the
architecture but does not serve the checkpoint: its vLLM build rejects
`--kernel-config`, and its entrypoint requires GLM attestation variables
that this checkpoint has no values for. The quickstart names the serving
image.

Both images run an attestation entrypoint, so a launch for a checkpoint
other than the profile an image attests overrides it with
`--entrypoint`. The quickstart's command does.

`scripts/pull_pinned_images.py` retrieves both alongside the other pinned
images, five in total.

Validation: ruff, `python -m pytest scripts runtime -q` at 1789 passed
12 skipped, `pull_pinned_images.py --plan`, and the repo-relative
Markdown link and anchor check.
@FujitsuPolycom
FujitsuPolycom force-pushed the claude/publish-runtime-base branch from 39a0330 to b125efe Compare August 20, 2026 06:11
`ghcr.io/fujitsupolycom/gb10-vllm-serving` at digest
`sha256:df0e2068fc7034a1ec7a2c1fa4e0c3224c720161539525b5a7cbb037dc1d0f8e`,
`linux/arm64`, is the published runtime. It carries the pinned vLLM,
B12X, LMCache, the EXL3 quantization overlay, FlashInfer, DeepGEMM, the
patched NCCL, and `libspark_transport_capi.so` with its probe binaries,
and registers both `Glm4MoeForCausalLM` and `DeepseekV4ForCausalLM`. One
image covers the GLM profiles and DeepSeek-V4-Flash-0731.

`runtime/faststart-lock.json` records it by digest and
`scripts/pull_pinned_images.py` retrieves it.

A four-rank launch established which image serves this checkpoint. The
runtime base layer registers the architecture but does not serve it: its
vLLM build rejects `--kernel-config`, and its entrypoint requires GLM
attestation variables that the checkpoint has no values for. Publishing
that layer separately would have offered a reader a second image that
looks equivalent and is not, so only the derived image is published. The
bootstrap still builds the base layer locally, and
`runtime/exl3-r7/build-image.sh` still takes a parent through
`BASE_IMAGE`.

The published image runs an entrypoint that attests a GLM profile, so a
launch for another checkpoint overrides it with `--entrypoint`. The
DeepSeek quickstart's command does.

Validation: ruff, `python -m pytest scripts runtime -q` at 1789 passed
12 skipped, `pull_pinned_images.py --plan`, and the repo-relative
Markdown link and anchor check.
@FujitsuPolycom
FujitsuPolycom merged commit ab74c03 into main Aug 20, 2026
12 checks passed
@FujitsuPolycom
FujitsuPolycom deleted the claude/publish-runtime-base branch August 20, 2026 06:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant