Repository navigation
Conversation
Call ATOM mono kernels as a library for sparse target decode layers while preserving native scheduling, cache ownership, EAGLE3 and graph lifecycle. Retain original weights for fallback and reject online weight updates before they can invalidate the mono conversion copies. Add worker regression coverage and document the measured configuration, numerical limits, and required port to the current ATOM shared runtime before merge. Co-authored-by: Codex <noreply@openai.com> Signed-off-by: whx-sjtu <xiaowang990929@gmail.com>
Contributor
|
Documentation preview: https://vllm--60528.org.readthedocs.build/en/60528/ |
Contributor
|
This pull request has merge conflicts that must be resolved before it can be |
Merge main and retain native KV initialization before binding the library. Keep model/cache adaptation in vLLM while ATOM owns conversions, metadata, compilation, execution buffers, and IPC lifecycle through AtomM3Mono. Co-authored-by: Codex <noreply@openai.com> Signed-off-by: whx-sjtu <xiaowang990929@gmail.com>
Co-authored-by: Codex <noreply@openai.com> Signed-off-by: whx-sjtu <xiaowang990929@gmail.com>
valarLip
suggested changes
Oct 8, 2026
Restore the shared GPU runner and select the model-specific worker through the existing worker_cls extension point. Preserve native cache initialization and graph-before-IPC teardown, and reject weight resets alongside reloads. Co-authored-by: Codex <noreply@openai.com> Signed-off-by: whx-sjtu <xiaowang990929@gmail.com>
Initialize the ATOM library during eager model warmup after native caches are bound. Close each cache generation through the existing attention cache detach protocol after graph teardown. Remove the specialized worker and runner. Document fixed weights, unsupported direct storage mutation, and explicit cache sizing for lazy allocation. Cover cache generations and capture-time initialization in model tests selected by AMD CI. Co-authored-by: Codex <noreply@openai.com> Signed-off-by: whx-sjtu <xiaowang990929@gmail.com>
Co-authored-by: Codex <noreply@openai.com> Signed-off-by: whx-sjtu <xiaowang990929@gmail.com>
Contributor
|
This pull request has merge conflicts that must be resolved before it can be |
6 tasks done
Contributor
Author
|
Might reopen when ATOM import path is needed again. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Overview
Add opt-in MiniMax-M3 sparse decode through ATOM's tensor library, with shared native weights and per-batch eligibility. Companion: ROCm/ATOM#2492.
This is an alternative dependency boundary to #59705 (vendored kernels) and #59653 (AITER port): ATOM owns the kernels, and both paths borrow the same loaded weights. AI assistance was used, with independent Standards, Spec, and router/kernel reviews before committing.
Claims
text_config.router_dtype=bfloat16selects BF16 weights for the VL checkpoint while keeping logits, sigmoid, and correction bias FP32. The mono flag never changes router precision.Validation
Before: the adapter/library produced private FP8 projection and BF16 router copies, and restricted configured concurrency to four. After: native and mono share prepared storage; compatibility and current batch shape determine dispatch.
October 8, gfx950/256 CU, GPUs 0–3, TP4, MiniMax-M3-MXFP4, EAGLE3 three speculative tokens with standard acceptance, online per-channel FP8 QKV/O:
All three pilots had no API errors, truncations or parse failures. A used the default FP32 router with mono requested and collectively refused; B and C shared BF16 router/FP8 projection weights. C used a 0.70 memory reservation before other jobs appeared; A/B used 0.25 with the same 1024 cache blocks and request settings. These 64-question samples do not establish accuracy parity or performance.
A fixed-activation CPU probe isolated router weight rounding on 112 token rows from layers 3 and 20. BF16-rounded weights with FP32 matrix multiplication changed two top-4 expert sets versus FP32 weights (maximum absolute logit difference 0.005854). This is evidence that rounding can affect routing, not an end-to-end accuracy guarantee.
Commands and evidence scope
Commands used the existing environment through
uv run --no-project --python /usr/bin/python, with ATOM's vLLM plugin disabled:Applicable pre-commit hooks, mypy 3.12, ATOM Ruff/Black, and whitespace checks passed. Current evidence:
artifacts/rfc001/shared-weights-20261008/. External checkpoint/request fixtures are not included in these PRs. Frozen request-file SHA256:94b69013c48651fced9936a139c3c80c7ed0548267c9e66b335577e7f093d270; temperature 0, max output 8192, checkpoint chat template with thinking enabled.The design document contains the launch command. The tested native backend is AITER preshuffled; this environment's Hipb backend lacked a rowwise FP8 algorithm for the large QKV prefill shape. Local runs also pinned
ROCR_VISIBLE_DEVICES=0,1,2,3andTRITON_LIBHIP_PATH=/opt/rocm/lib/libamdhip64.soafter startup diagnostics.Details
Scope: gfx950/256 CU, TP4/PP1/DP1, V2 runner, 57 sparse layers, max length 16384, FP8 main/index cache block128, shared-expert fusion, EAGLE3 three tokens, prefix caching disabled. Scheduler concurrency may exceed four; each mono batch has at most four padded request rows. Explicit
num_gpu_blocks_overridereserves room for lazy allocation; the launch uses 1024 blocks.The first eager forward with bound caches initializes the library. The existing model cache detach closes it collectively after graph teardown, including temporary profiling caches. Weight transfer, LoRA, KV transfer, sleep and unsupported parallel configurations disable mono. Weights and captured addresses must remain stable; direct weight writes, partial cache replacement and raw/kernel-format reload require rebuilding the execution state. Eager execution and CUDA graphs are supported; direct
torch.compileof the library is rejected because functionalization can replace storage referenced by device descriptors.Merge Danger
Door: two-way, opt-in, no checkpoint migration. Blast Radius: MiniMax-M3 ROCm and the paired ATOM library.
The profiler trace was saved, but profiler-summary export blocked subsequent requests and the diagnostic process was stopped. A later mono restart with external GPU jobs present and a 0.25 memory reservation stalled after final runtime preparation; native B and A completed under those conditions. The cause is unresolved. The persistent kernel assumes 256 CTAs can reside together; dedicated GPU capacity is required for further qualification. Long-input smoke and normal mono shutdown still need a dedicated-GPU rerun.
Still Draft: full 1319-question accuracy, performance, native ATOM engine requalification and human line-by-line review remain outstanding. Previous converted-weight model evaluations and saved-layer replay results do not qualify this shared-weight revision. Shared weights do not imply bitwise-identical kernels. The replay harness now requires new online-FP8/BF16-router captures.
Pull Request Checklist
/pr-checklistskill. (Mandatory for agents, optional for humans).