Skip to content

fix(models): the 35B bundle drops ipc: host (follow-up to #508) - #509

Open
kh0pper wants to merge 1 commit into
mainfrom
fix/35b-shm-not-ipc-host
Open

kh0pper wants to merge 1 commit into
mainfrom
fix/35b-shm-not-ipc-host

Conversation

@kh0pper

@kh0pper kh0pper commented Oct 16, 2026

Copy link
Copy Markdown
Owner

This is a follow-up to #508. A read-only dry run of #508's Start check on prod passed every bundle except llamacpp-vulkan-qwen36-35b-a3b, because it uses ipc: host without being privileged.

Change: remove ipc: host from the 35B compose file and keep shm_size: 16g. Under ipc: host that setting was ignored; it now sizes the container's own /dev/shm. The manifest also gets a version (1.0.1).

Why ipc: host isn't needed: llama-server is one process. It loads weights with --no-mmap into GPU memory through Vulkan, and it shares no POSIX shared memory or SysV IPC with any other process. ipc: host is a common default in GPU containers for multi-process PyTorch data loaders. It does nothing for llama.cpp, and the private 16 GB /dev/shm is generous headroom.

⚠ Verify in the next model window before merging.

  • servers/gateway/gpu-orchestrator.js starts this container from the repo's compose file. Once this is merged and pulled, the next on-demand compose up sees a config change and recreates the container.
  • So merge it inside a scheduled model window (CROW-SCHEDULE), then check:
    • the 35B comes up healthy on :8003;
    • vision and MTP still load;
    • the tok/s bench matches the current ~70 tok/s code.
  • The prod container was not touched or recreated.
  • The installed copy under the Crow home keeps its old compose file until a reinstall, because refresh doesn't copy compose files. That copy only matters for the Extensions Start route.

Not in this PR: llamacpp-vulkan-qwen3-embed and vllm-rocm-qwen35-4b also use ipc: host. Both are started only by gpu-orchestrator, whose compose path is unguarded; that follow-up is recorded in queue item 30. vLLM may genuinely want a large shm (shm_size) instead.

Tests: a new test in tests/compose-guard.test.js, plus the existing tests that reference the 35B bundle. Registry rebuilt; check-port-allocation passes.

https://claude.ai/code/session_01N9fXzvNy8rCEArj1y5p6fp

…emory with other processes)

The install security check (#508) refuses ipc: host without privileged
consent, and the read-only prod dry run of its Start check flagged this one
bundle. llama-server is a single process (--no-mmap, weights in GPU memory
through Vulkan) and uses no POSIX shared memory with other processes, so
the host IPC namespace is not needed; the private /dev/shm keeps shm_size
16g as headroom. Manifest gets a version (1.0.1).

Claude-Session: https://claude.ai/code/session_01N9fXzvNy8rCEArj1y5p6fp
@kh0pper
kh0pper force-pushed the fix/35b-shm-not-ipc-host branch from 3a589a9 to 25d8f3e Compare October 21, 2026 01:58
kh0pper added a commit that referenced this pull request Oct 21, 2026
…ass the check; operatorRoots now count (#524)

Stacked on #509, so the test's ipc: host exception for the 35B is dead and is removed: all
model bundles in the repo must pass the install security check as the orchestrator runs it.
The preflight comment said the check ignores ctx.operatorRoots; since #524 the host-path
allowlist uses them (a mount outside Crow's home must sit under one, and the floor applies).

Claude-Session: https://claude.ai/code/session_01N9fXzvNy8rCEArj1y5p6fp

This branch has not been deployed

No deployments
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