Skip to content

feat(dsv4): compose native Indexer and compressor training VJPs (item 26) - #631

Draft
inaniloquentee wants to merge 36 commits into
dsv4-rocmfrom
feat/dsv4-indexer-compressor-vjp-bi
Draft

inaniloquentee wants to merge 36 commits into
dsv4-rocmfrom
feat/dsv4-indexer-compressor-vjp-bi

Conversation

@inaniloquentee

Copy link
Copy Markdown
Collaborator

Scope

Opt-in item 26 of KLR #81 / RL-Kernel #514. Compose the existing RLK Indexer projection, Indexer ICV, Indexer C4, main C4/C128 compressors and joint sparse attention with native aiter/vLLM BI arithmetic and mLite reference rules. Add explicit Indexer auxiliary metadata, quantized-operand identity-STE VJP, canonical cross-microbatch key-gradient collection and loss normalization. No numerical GPU kernel has been copied or authored.

Base and dependencies

Latest main 8588158650aff58c9c1f527674de94bad06c3d10; target dsv4-rocm. This branch includes the open dependencies #590, #599, #616, #618, #624, #628 and #629, among others. Review the item-26 implementation as commit a13705e until those prerequisites land. The source provisioning helper pins exact aiter/mLite files by SHA256 and rejects TF32 unless the process starts with TRITON_F32_DEFAULT=ieee.

Evidence

MI300X/gfx942 in the ljj ROCm container: 101 item tests passed and 963 contract/model tests passed (19 warnings), Ruff check/format passed. Tests include independent mathematical gradients, byte-identical repartition/reordering, fresh-process hashes, MXFP4/FP8 inputs and a composed projection/Indexer C4/main C4/C128/joint-attention training chain. Six checked benchmark profiles, not isolated kernel timings, are in the committed report; raw JSON is in /outputs/item26-20261029/benchmark.json on the machine.

Remaining for signoff

This is single-card operator validation, not actual two-rank CP exchange or complete model integration. PP, Graph, LoRA/scale update barriers and four-path Flash-0731 raw-logprob acceptance remain untested. The ljj container exposes one GPU and lacks the model checkpoint. Keep draft until the task-26 cross-rank boundary and review requirements are confirmed; item 27 and tasks 39-42 are separate follow-ups.

fangfangssj and others added 30 commits October 24, 2026 08:44
Signed-off-by: fangfangssj <1135470306@qq.com>
Signed-off-by: Ziyi <ziyizhao0723@gmail.com>
ws1-gtest-gpu and ws1-chain-gpu fail at "Configure runpodctl" before any
test runs. They install releases/latest (v2.14.0 since 2026-09-10), whose
deprecated `config --apiKey` aborts with
`Config File ".runpod.yaml" Not Found` when it is the first runpodctl
call on a fresh HOME. It only succeeds once an earlier call has created
~/.runpod/config.toml, which is why gpu-ci, whose install step happens to
run `runpodctl version` first, got past the same command.

Drop the config step in all three workflows. runpodctl v2 reads
RUNPOD_API_KEY from the environment, and every step that runs
ci/run_gpu_ci.sh already exports it, including the cleanup trap that
calls `pod remove`. Verified for v2.9.0 inside `unshare -rn`, from a
fresh HOME after `runpodctl version`: without the variable `pod list`
fails locally with no_credentials, with RUNPOD_API_KEY=dummy it gets
past the credential check to a network_error, and config.toml keeps
`apikey = ''` throughout. v2.14.0 behaves the same.

Pin the download to v2.9.0, the version gpu-ci run 31455127310 exercised
end to end (pod create with sold-out fallback, pod id parsing, pod get
polling, SSH, cleanup), and verify it with sha256sum -c against the
runpodctl-linux-amd64 line of checksums_2.9.0_sha256.txt
(06e6f54957db79d5cd9f1909a7f1d365076826751ba2f5df65d75dde43a64148),
which matches GitHub's asset digest.

Signed-off-by: Wenbo Ji <36562829+fusheng-ji@users.noreply.github.com>
fix(ci): pin runpodctl v2.9.0 and drop the deprecated config step (RUNPOD_API_KEY auth)
Signed-off-by: maxiaosong1124 <maxiaosong7890@outlook.com>
Signed-off-by: maxiaosong1124 <maxiaosong7890@outlook.com>
Signed-off-by: maxiaosong1124 <maxiaosong7890@outlook.com>
Signed-off-by: maxiaosong1124 <maxiaosong7890@outlook.com>
ci: remove obsolete RunPod WS1-chain-GPU workflow
Signed-off-by: maxiaosong1124 <maxiaosong7890@outlook.com>
Signed-off-by: maxiaosong1124 <maxiaosong7890@outlook.com>
Signed-off-by: maxiaosong1124 <maxiaosong7890@outlook.com>
Signed-off-by: maxiaosong1124 <maxiaosong7890@outlook.com>
ci: add RL-Kernel-specific automatic OCR review
Signed-off-by: maxiaosong1124 <maxiaosong7890@outlook.com>
Signed-off-by: maxiaosong1124 <maxiaosong7890@outlook.com>
Signed-off-by: lamentropetion <3051000145@qq.com>
docs(rocm): make the vLLM companion base reproducible from upstream
[Ascend] Fix deterministic attention backward compilation
…465b77f1b36b1d44de936e5a35c2c3325fbb'; commit '787ec2b386fdfd8d3102ad103f1a214d94b3f860'; commit 'e61f5eeaff5f46042b381657abe0a5dd213154c9' into feat/dsv4-indexer-compressor-vjp-bi
@coderabbitai

coderabbitai Bot commented Oct 29, 2026 •

Copy link
Copy Markdown

Important

Review skipped

Too many files!

This PR contains 121 files, which is 21 over the limit of 100.

To get a review, reduce the PR to 100 files or fewer by splitting it into smaller PRs or changing its base branch.

Upgrade to a paid plan to raise the limit.

This review couldn't start because sufficient usage credits or metered capacity aren't available. Add credits or update usage-based reviews in the billing tab, then retry.

Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: defaults
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 4de45d22-1e62-44ba-906b-0187460d2891
Commits

Reviewing files that changed from the base of the PR and between 5ba769f and 51e3c9c.

Files selected for processing: 121
  • .github/CODEOWNERS
  • .github/workflows/gpu-ci.yml
  • .github/workflows/ocr-review.yml
  • .github/workflows/ws1-chain-gpu.yml
  • .github/workflows/ws1-gtest-gpu.yml
  • .opencodereview/rule.json
  • benchmarks/benchmark_indexer_compressor_c4.py
  • benchmarks/benchmark_indexer_icv.py
  • benchmarks/benchmark_indexer_projection.py
  • benchmarks/benchmark_indexer_training.py
  • benchmarks/benchmark_joint_attention.py
  • benchmarks/benchmark_joint_backward.py
  • benchmarks/benchmark_kv_compressor_c128.py
  • benchmarks/benchmark_kv_compressor_c4.py
  • csrc/ascend/attention/deterministic_attention_backward_ascend.asc
  • docs/.nav.yml
  • docs/contributing/README.md
  • docs/contributing/ocr-review.md
  • docs/models/deepseek_v4/indexer-compressor-c4.md
  • docs/models/deepseek_v4/indexer-icv.md
  • docs/models/deepseek_v4/indexer-projection.md
  • docs/models/deepseek_v4/indexer-training.md
  • docs/models/deepseek_v4/joint-attention.md
  • docs/models/deepseek_v4/joint-backward.md
  • docs/models/deepseek_v4/kv-compressor-c128.md
  • docs/models/deepseek_v4/kv-compressor-c4.md
  • docs/usage/qwen3-vime-consistency.md
  • reports/indexer-compressor-c4-mi300x-20261029.md
  • reports/indexer-icv-mi300x-20261026.md
  • reports/indexer-icv-review-mi300x-20261028.md
  • reports/indexer-projection-mi300x-20261025.md
  • reports/indexer-training-mi300x-20261029.md
  • reports/joint-attention-mi300x-20261029.json
  • reports/joint-attention-mi300x-20261029.md
  • reports/joint-backward-mi300x-20261029.json
  • reports/joint-backward-mi300x-20261029.md
  • reports/kv-compressor-c128-mi300x-20261028.md
  • reports/kv-compressor-c128-new-host-20261029.json
  • reports/kv-compressor-c128-new-host-20261029.md
  • reports/kv-compressor-c4-mi300x-20261028.md
  • reports/kv-compressor-c4-new-host-20261029.md
  • rl_engine/backends/rocm/attention/indexer_compressor_c4.py
  • rl_engine/backends/rocm/attention/indexer_icv.py
  • rl_engine/backends/rocm/attention/indexer_training.py
  • rl_engine/backends/rocm/attention/joint_attention.py
  • rl_engine/backends/rocm/attention/joint_backward.py
  • rl_engine/backends/rocm/attention/kv_compressor_c128.py
  • rl_engine/backends/rocm/attention/kv_compressor_c4.py
  • rl_engine/backends/rocm/gemm/indexer_projection.py
  • rl_engine/contracts/operators/indexer_compressor_c4.py
  • rl_engine/contracts/operators/indexer_icv.py
  • rl_engine/contracts/operators/indexer_projection.py
  • rl_engine/contracts/operators/indexer_training.py
  • rl_engine/contracts/operators/joint_attention.py
  • rl_engine/contracts/operators/kv_compressor_c128.py
  • rl_engine/contracts/operators/kv_compressor_c4.py
  • rl_engine/integrations/common/indexer_compressor_c4.py
  • rl_engine/integrations/common/indexer_icv.py
  • rl_engine/integrations/common/indexer_projection.py
  • rl_engine/integrations/common/kv_compressor_c128.py
  • rl_engine/integrations/common/kv_compressor_c4.py
  • rl_engine/integrations/engines/rollout/vllm/indexer_compressor_c4.py
  • rl_engine/integrations/engines/rollout/vllm/indexer_icv.py
  • rl_engine/integrations/engines/rollout/vllm/indexer_projection.py
  • rl_engine/integrations/engines/rollout/vllm/joint_attention.py
  • rl_engine/integrations/engines/rollout/vllm/kv_compressor_c128.py
  • rl_engine/integrations/engines/rollout/vllm/kv_compressor_c4.py
  • rl_engine/integrations/engines/train/megatron/indexer_compressor_c4.py
  • rl_engine/integrations/engines/train/megatron/indexer_icv.py
  • rl_engine/integrations/engines/train/megatron/indexer_projection.py
  • rl_engine/integrations/engines/train/megatron/indexer_training.py
  • rl_engine/integrations/engines/train/megatron/joint_attention.py
  • rl_engine/integrations/engines/train/megatron/joint_backward.py
  • rl_engine/integrations/engines/train/megatron/kv_compressor_c128.py
  • rl_engine/integrations/engines/train/megatron/kv_compressor_c4.py
  • rl_engine/integrations/orchestrators/vime/patches/rocm_attention/README.md
  • rl_engine/integrations/orchestrators/vime/patches/rocm_attention/sources.json
  • rl_engine/integrations/orchestrators/vime/patches/rocm_attention/vllm-base.patch
  • rl_engine/models/deepseek_v4/indexer_compressor_c4.py
  • rl_engine/models/deepseek_v4/indexer_icv.py
  • rl_engine/models/deepseek_v4/indexer_projection.py
  • rl_engine/models/deepseek_v4/indexer_training.py
  • rl_engine/models/deepseek_v4/joint_attention.py
  • rl_engine/models/deepseek_v4/joint_autograd.py
  • rl_engine/models/deepseek_v4/joint_backward.py
  • rl_engine/models/deepseek_v4/kv_compressor_c128.py
  • rl_engine/models/deepseek_v4/kv_compressor_c4.py
  • scripts/prepare_dsv4_indexer_training_sources.py
  • scripts/prepare_dsv4_sparse_provider.py
  • tests/models/deepseek_v4/c128_helpers.py
  • tests/models/deepseek_v4/c128_process_probe.py
  • tests/models/deepseek_v4/c4_helpers.py
  • tests/models/deepseek_v4/c4_process_probe.py
  • tests/models/deepseek_v4/icv_helpers.py
  • tests/models/deepseek_v4/icv_process_probe.py
  • tests/models/deepseek_v4/indexer_c4_helpers.py
  • tests/models/deepseek_v4/indexer_c4_process_probe.py
  • tests/models/deepseek_v4/indexer_training_process_probe.py
  • tests/models/deepseek_v4/joint_attention_helpers.py
  • tests/models/deepseek_v4/test_indexer_auxiliary_rocm.py
  • tests/models/deepseek_v4/test_indexer_compressor_c4.py
  • tests/models/deepseek_v4/test_indexer_compressor_c4_rocm.py
  • tests/models/deepseek_v4/test_indexer_icv.py
  • tests/models/deepseek_v4/test_indexer_icv_adversarial.py
  • tests/models/deepseek_v4/test_indexer_icv_review.py
  • tests/models/deepseek_v4/test_indexer_icv_rocm.py
  • tests/models/deepseek_v4/test_indexer_icv_stress_rocm.py
  • tests/models/deepseek_v4/test_indexer_projection.py
  • tests/models/deepseek_v4/test_indexer_projection_rocm.py
  • tests/models/deepseek_v4/test_indexer_training.py
  • tests/models/deepseek_v4/test_indexer_training_chain_rocm.py
  • tests/models/deepseek_v4/test_indexer_training_math_rocm.py
  • tests/models/deepseek_v4/test_joint_attention.py
  • tests/models/deepseek_v4/test_joint_attention_rocm.py
  • tests/models/deepseek_v4/test_joint_autograd_rocm.py
  • tests/models/deepseek_v4/test_joint_backward.py
  • tests/models/deepseek_v4/test_joint_backward_rocm.py
  • tests/models/deepseek_v4/test_kv_compressor_c128.py
  • tests/models/deepseek_v4/test_kv_compressor_c128_rocm.py
  • tests/models/deepseek_v4/test_kv_compressor_c4.py
  • tests/models/deepseek_v4/test_kv_compressor_c4_rocm.py

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

  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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

Signed-off-by: ljj <ljj@users.noreply.github.com>
@inaniloquentee
inaniloquentee force-pushed the feat/dsv4-indexer-compressor-vjp-bi branch from a13705e to 51e3c9c Compare October 29, 2026 11:56
@Flink-ddd Flink-ddd added platform: rocm Specific tasks specific to AMD graphics cards (such as CK, bpreshuffle/FA) DSv4 labels Oct 30, 2026
@inaniloquentee

Copy link
Copy Markdown
Collaborator Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Oct 30, 2026 •

Copy link
Copy Markdown
⚠️ Action not completed

Review skipped: 121 files exceed the limit of 100.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

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

DSv4 platform: rocm Specific tasks specific to AMD graphics cards (such as CK, bpreshuffle/FA)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants