Skip to content

vllm: Add version 0.29.0+cpu - #2093

Draft
luhenry wants to merge 4 commits into
mainfrom
vllm
Draft

luhenry wants to merge 4 commits into
mainfrom
vllm

Conversation

@luhenry

@luhenry luhenry commented Sep 19, 2026

Copy link
Copy Markdown
Member

Compiles vLLM's CPU inference backend (vllm._C and the PyO3 frontend) against the torch 2.13.0+cpu wheels this registry already publishes. Upstream publishes no riscv64 wheel.

Mirrors upstream's docker/Dockerfile.cpu, vLLM's only CPU wheel build.

Differs from upstream

  • -DVLLM_RVV_VLEN=0 - auto-detection would bake the runner's own VLEN into every wheel.
  • Rust toolchain installed in-container - upstream's CPU image ships one, the manylinux image does not.

Matrix: one cp312 build. CMakeExtension sets py_limited_api, so upstream ships a single cp38-abi3 wheel for every interpreter and so do we. cp312 is also the floor at which torch==2.13.0 resolves on riscv64.

Testing: imports vllm and vllm._C from the installed wheel and reports the detected CPU architecture; upstream's own suites need model downloads.

License: OK

Patches

  • 0001-requirements-do-not-require-numba-on-riscv64.patch - Upstream-Status: To upstream. Without it the wheel is buildable but not installable: requirements/cpu.txt requires numba everywhere but s390x, and numba has no riscv64 wheel and cannot be built from sdist (llvmlite needs a conda-only patched LLVM with no linux-riscv64 subdir). numba is optional to vLLM by construction (is_numba_available()), and this is the configuration upstream already ships for s390x. riscv64-only.

Not yet built: quay.io and pypi.riseproject.dev are both unreachable from the authoring environment, so nothing was rehearsed locally. Draft until CI produces a wheel.

luhenry pushed a commit that referenced this pull request Sep 19, 2026
Add build-vllm.yml and docs/packages/vllm.yaml for vLLM 0.29.0+cpu, the
VLLM_TARGET_DEVICE=cpu build of vllm-project/vllm.

vLLM's CPU backend already has first-class riscv64 support upstream: a
riscv64 branch in cmake/cpu_extension.cmake, RVV kernels under csrc/cpu
(cpu_types_riscv*.hpp, sgl-kernels/gemm_int4.cpp, cpu_wna16.cpp), a
CpuArchEnum.RISCV platform, and platform_machine == "riscv64" markers in
requirements/cpu.txt that already pin torch==2.13.0 - exactly the version
this registry publishes as 2.13.0+cpu.

The wheel is built at the rv64gc baseline (-DVLLM_RVV_VLEN=0, upstream's
documented scalar RISC-V mode) rather than letting cmake auto-detect VLEN
from the runner's /proc/cpuinfo, which would bake that runner's vector
extensions into a wheel shipped to every riscv64 user.
A GPU package whose PyPI wheels are unconditionally CUDA can still build
a portable CPU distribution from the same tree when setup.py selects the
device from an env var. Records how to tell the two apart, why upstream
riscv64 requirement markers are the fastest evidence, when an absent
optional dependency is a marker patch rather than a park, and why a
native riscv64 runner's /proc/cpuinfo must not drive a published wheel's
-march.
cibuildwheel's before-build cwd is not guaranteed to be the package
directory when package-dir points at a subdirectory, so anchor the
requirements path explicitly.
@luhenry luhenry changed the title vllm: build riscv64 CPU-backend wheels vllm: Add version 0.29.0+cpu Sep 19, 2026
@github-actions

github-actions Bot commented Sep 19, 2026

Copy link
Copy Markdown
Contributor
PR Preview Action v1.8.1

QR code for preview link

🚀 View preview at
https://riseproject-dev.github.io/python-wheels/pr-preview/pr-2093/

Built to branch gh-pages at 2026-09-19 10:40 UTC.
Preview will be ready when the GitHub Pages deployment is complete.

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