Skip to content

fix: build the aiconfigurator wheel as manylinux_2_28 (cherry-pick #1330)#1332

Merged
nv-nmailhot merged 1 commit into
release/0.10.0from
agent/cherry-pick-pr1330-to-release-0.10.0
Jul 8, 2026
Merged

fix: build the aiconfigurator wheel as manylinux_2_28 (cherry-pick #1330)#1332
nv-nmailhot merged 1 commit into
release/0.10.0from
agent/cherry-pick-pr1330-to-release-0.10.0

Conversation

@jasonqinzhou

@jasonqinzhou jasonqinzhou commented Jul 8, 2026

Copy link
Copy Markdown
Contributor

Summary

  • cherry-pick #1330 squash commit d01ce3d to release/0.10.0
  • build the native aiconfigurator wheel as manylinux_2_28_<arch>
  • support both amd64 and arm64 manylinux build stages
  • pin the release build to Rust 1.96.0 and the manylinux image's CPython 3.12
  • require Maturin 1.5.1+ for reliable PEP 517 compatibility handling
  • document the Linux x86-64 wheel's glibc 2.28 requirement

Backport relationship

#1330 was merged directly on top of #1329 and assumes its single-wheel Docker layout. Release backport #1331 has now merged.

This branch is rebased onto #1331's release/0.10.0 merge commit (001fbdd), so the PR contains only the one-commit #1330 backport.

Backport notes

Validation

  • exact stable patch-ID match with source squash commit d01ce3d5d4fa172ff96b4ab4b53263e2d3039ff0
  • uv lock --check
  • local uv build --wheel
  • python3 tools/verify_release_wheels.py
  • isolated --no-deps wheel install followed by import aiconfigurator and import aiconfigurator_core
  • git diff --check

Docker is not installed in the local environment. The source PR's complete CI suite passed; this backport's Docker/Build and Test checks are required before merge.

@copy-pr-bot

copy-pr-bot Bot commented Jul 8, 2026

Copy link
Copy Markdown

This pull request requires additional validation before any workflows can run on NVIDIA's runners.

Pull request vetters can view their responsibilities here.

Contributors can view more details about this message here.

@coderabbitai

coderabbitai Bot commented Jul 8, 2026

Copy link
Copy Markdown
Contributor

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: e249fdd5-a452-441d-bf1f-1b6ab9521215

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Comment @coderabbitai help to get the list of available commands.

@github-actions github-actions Bot added the fix label Jul 8, 2026
* fix: build the aiconfigurator wheel as manylinux_2_28

The wheel carries a native Rust/PyO3 (abi3) extension but was built on
ubuntu:jammy and tagged linux_x86_64 -- a bare platform tag that PyPI
rejects and that effectively pins the wheel to the build host's glibc.
Build it as a portable manylinux_2_28_x86_64 wheel instead (glibc >= 2.28;
RHEL 8+ / Ubuntu 20.04+).

Move the build stage onto quay.io/pypa/manylinux_2_28_x86_64 (glibc 2.28)
with an explicit rustup toolchain and uv, pinned to the image's CPython
3.12. maturin's built-in auditwheel checks the manylinux_2_28 policy and
stamps the tag -- no separate auditwheel step. uv build makes maturin's
PEP517 backend force --compatibility off, so the target is re-asserted via
MATURIN_PEP517_ARGS on the build command. README notes the new tag.

Verified: auditwheel reports the wheel consistent with manylinux_2_28_x86_64
(only whitelisted libc/libm/libpthread/libgcc_s referenced, nothing bundled);
it installs and runs on the jammy runtime image; verify_release_wheels.py passes.

Signed-off-by: Anant Sharma <anants@nvidia.com>

* ci: build aiconfigurator wheels for arm64 as well as x86-64

Parameterize the wheel build stage by target architecture so it produces
both manylinux_2_28_x86_64 and manylinux_2_28_aarch64 wheels from one
Dockerfile.

BuildKit populates TARGETARCH (amd64/arm64) from --platform (default: the
build host's arch); `FROM manylinux-${TARGETARCH}` selects the matching PyPA
base (quay.io/pypa/manylinux_2_28_{x86_64,aarch64}) and only that stage is
built. MATURIN_PEP517_ARGS is unchanged -- maturin appends the arch, so the
tag resolves to _x86_64 or _aarch64 automatically. The crate is
architecture-agnostic (no target_arch code / x86 intrinsics) and the parquet
data payload is identical across arches.

Build an aarch64 wheel natively on ARM, or from an x86 host via QEMU/buildx:
  docker buildx build --platform linux/arm64 --target build --load .

Also drop a stale comment that referenced a [tool.maturin] compatibility
value that is not set (the target is asserted via MATURIN_PEP517_ARGS).

amd64 build re-verified unchanged; the aarch64 base pull and rustup
toolchain install validated under buildx QEMU emulation.

Signed-off-by: Anant Sharma <anants@nvidia.com>

* fix: harden Rust bootstrap and tighten maturin pin for wheel builds

docker/Dockerfile: download the rustup installer to disk instead of piping
`curl | sh`, so a failed download aborts the build (the pipeline previously
reported only sh's exit status and silently skipped rustup). Add curl retries
for transient network blips and pin the toolchain to 1.96.0 so release wheels
build reproducibly.

pyproject.toml: require maturin>=1.5.1. 1.5.1 fixed `--compatibility` handling
when run as a PEP517 backend, which the manylinux_2_28 wheel build depends on
(MATURIN_PEP517_ARGS="--compatibility manylinux_2_28"); 1.5.0 ignored it.

Signed-off-by: Anant Sharma <anants@nvidia.com>

* docs: condense wheel-build comments in Dockerfile

Trim the verbose block comments added for the manylinux_2_28 wheel build to
their essential rationale (why manylinux/glibc 2.28, why MATURIN_PEP517_ARGS
overrides the PEP517 compatibility default, why pin the interpreter).

Signed-off-by: Anant Sharma <anants@nvidia.com>

---------

Signed-off-by: Anant Sharma <anants@nvidia.com>
(cherry picked from commit d01ce3d)
@jasonqinzhou
jasonqinzhou force-pushed the agent/cherry-pick-pr1330-to-release-0.10.0 branch from a2d76e1 to 0e54146 Compare July 8, 2026 23:23
@jasonqinzhou
jasonqinzhou marked this pull request as ready for review July 8, 2026 23:25
@jasonqinzhou
jasonqinzhou requested review from a team as code owners July 8, 2026 23:25
@nv-nmailhot
nv-nmailhot merged commit 3452bcb into release/0.10.0 Jul 8, 2026
12 checks passed
@nv-nmailhot
nv-nmailhot deleted the agent/cherry-pick-pr1330-to-release-0.10.0 branch July 8, 2026 23:25
@github-actions

github-actions Bot commented Jul 8, 2026

Copy link
Copy Markdown
Contributor

AIC Accuracy Regression Testing

Workflow result: success

Old revision: 001fbdd19706bc6d3513c22217874b174a6a29cb

Summary

  • # samples added: 0
  • ttft_mape_improvement_%: 0.000000
  • tpot_mape_improvement_%: 0.000000
Comparison summary table
partition num_samples_added ttft_mape_improvement_% tpot_mape_improvement_%
all 0 0.000000 0.000000
agg 0 0.000000 0.000000
disagg 0 0.000000 0.000000
MiniMax-M2.5 0 0.000000 0.000000
Qwen3.5-397B-A17B 0 0.000000 0.000000
Kimi-K2.5 0 0.000000 0.000000
DeepSeek-V3 0 0.000000 0.000000
DeepSeek-R1-NVFP4 0 0.000000 0.000000
DeepSeek-V3.1-NVFP4 0 0.000000 0.000000
Qwen3-32B-NVFP4 0 0.000000 0.000000
DeepSeek-R1 0 0.000000 0.000000
Qwen3-32B 0 0.000000 0.000000
Qwen3-235B-A22B-FP8 0 0.000000 0.000000
Llama-3.1-8B-Instruct-FP8 0 0.000000 0.000000
b300_sxm 0 0.000000 0.000000
gb200 0 0.000000 0.000000
b200_sxm 0 0.000000 0.000000
gb300 0 0.000000 0.000000
h200_sxm 0 0.000000 0.000000
h100_sxm 0 0.000000 0.000000
vllm-agg 0 0.000000 0.000000
sglang-agg 0 0.000000 0.000000
trtllm-disagg 0 0.000000 0.000000
sglang-disagg 0 0.000000 0.000000
trtllm-agg 0 0.000000 0.000000
vllm-disagg 0 0.000000 0.000000
MiniMax-M2.5|b300_sxm|vllm|agg 0 0.000000 0.000000
Qwen3.5-397B-A17B|b300_sxm|sglang|agg 0 0.000000 0.000000
Kimi-K2.5|gb200|trtllm|disagg 0 0.000000 0.000000
Kimi-K2.5|b200_sxm|vllm|agg 0 0.000000 0.000000
Kimi-K2.5|b300_sxm|vllm|agg 0 0.000000 0.000000
MiniMax-M2.5|b200_sxm|vllm|agg 0 0.000000 0.000000
DeepSeek-V3|gb200|trtllm|disagg 0 0.000000 0.000000
DeepSeek-V3|gb300|trtllm|disagg 0 0.000000 0.000000
DeepSeek-V3|gb200|sglang|disagg 0 0.000000 0.000000
DeepSeek-V3|gb300|sglang|disagg 0 0.000000 0.000000
DeepSeek-V3|h200_sxm|sglang|agg 0 0.000000 0.000000
DeepSeek-V3|b200_sxm|trtllm|disagg 0 0.000000 0.000000
DeepSeek-V3|h200_sxm|sglang|disagg 0 0.000000 0.000000
MiniMax-M2.5|h200_sxm|vllm|agg 0 0.000000 0.000000
Qwen3.5-397B-A17B|b200_sxm|sglang|agg 0 0.000000 0.000000
DeepSeek-V3|b200_sxm|sglang|disagg 0 0.000000 0.000000
DeepSeek-V3|b200_sxm|sglang|agg 0 0.000000 0.000000
DeepSeek-V3|b200_sxm|trtllm|agg 0 0.000000 0.000000
DeepSeek-V3|h200_sxm|trtllm|disagg 0 0.000000 0.000000
DeepSeek-V3|h100_sxm|trtllm|disagg 0 0.000000 0.000000
DeepSeek-V3|h200_sxm|trtllm|agg 0 0.000000 0.000000
Kimi-K2.5|gb200|vllm|disagg 0 0.000000 0.000000
DeepSeek-V3|b300_sxm|sglang|agg 0 0.000000 0.000000
DeepSeek-R1-NVFP4|b200_sxm|trtllm|agg 0 0.000000 0.000000
DeepSeek-V3.1-NVFP4|b200_sxm|trtllm|agg 0 0.000000 0.000000
Qwen3-32B-NVFP4|b200_sxm|trtllm|disagg 0 0.000000 0.000000
Qwen3-32B-NVFP4|b200_sxm|trtllm|agg 0 0.000000 0.000000
DeepSeek-R1|gb200|trtllm|agg 0 0.000000 0.000000
Qwen3-32B|gb200|trtllm|agg 0 0.000000 0.000000
DeepSeek-V3.1-NVFP4|gb200|trtllm|agg 0 0.000000 0.000000
Qwen3-32B-NVFP4|gb200|trtllm|disagg 0 0.000000 0.000000
Qwen3-32B-NVFP4|gb200|trtllm|agg 0 0.000000 0.000000
Qwen3-32B|h100_sxm|sglang|agg 0 0.000000 0.000000
Qwen3-32B|h100_sxm|sglang|disagg 0 0.000000 0.000000
Qwen3-235B-A22B-FP8|h100_sxm|trtllm|agg 0 0.000000 0.000000
Qwen3-32B|h100_sxm|trtllm|agg 0 0.000000 0.000000
Qwen3-32B|h100_sxm|vllm|agg 0 0.000000 0.000000
Qwen3-235B-A22B-FP8|h200_sxm|sglang|agg 0 0.000000 0.000000
Qwen3-235B-A22B-FP8|h200_sxm|vllm|agg 0 0.000000 0.000000
Llama-3.1-8B-Instruct-FP8|h200_sxm|vllm|agg 0 0.000000 0.000000
MiniMax-M2.5|h100_sxm|vllm|agg 0 0.000000 0.000000
DeepSeek-R1|b200_sxm|sglang|agg 0 0.000000 0.000000
DeepSeek-R1|h200_sxm|sglang|agg 0 0.000000 0.000000
DeepSeek-R1|b200_sxm|trtllm|agg 0 0.000000 0.000000
DeepSeek-R1|h200_sxm|trtllm|agg 0 0.000000 0.000000
Comparison plot AIC accuracy regression testing comparison plot

Artifact bundle: accuracy-regression-testing-results

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants