Skip to content

fix(linked): support multiple operator schemas - #913

Draft
voltjia wants to merge 2 commits into
masterfrom
fix/linked-multiple-operator-schemas
Draft

fix(linked): support multiple operator schemas#913
voltjia wants to merge 2 commits into
masterfrom
fix/linked-multiple-operator-schemas

Conversation

@voltjia

@voltjia voltjia commented Aug 8, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • Allow a linked binding's existing operator_schema field to contain either one schema string or a non-empty list of schema strings.
  • Validate every listed schema against the same resolved provider library and dispatch key while loading that DSO only once.
  • Preserve scalar manifest output for one schema and use a list only for multiple schemas.

Motivation

A linked composite can require several Dispatcher operators from one provider DSO. Expressing those exact contracts in the existing field avoids a new dependency graph, a new YAML key, or an imprecise high-level provider claim.

N/A - no linked issue.

Type of Change

  • feat - new feature / new operator / new platform
  • fix - bug fix
  • perf - performance improvement (no behavioral change)
  • refactor - code restructuring without behavior change
  • test - adding or fixing tests only
  • docs - documentation only
  • build / ci - build system or CI configuration
  • chore - tooling, formatting, or other non-code changes
  • Breaking change

Platforms Affected

  • CPU (WITH_CPU)
  • NVIDIA (WITH_NVIDIA)
  • Iluvatar (WITH_ILUVATAR)
  • MetaX (WITH_METAX)
  • Cambricon (WITH_CAMBRICON)
  • Moore (WITH_MOORE)
  • Ascend (WITH_ASCEND)
  • PyTorch C++ bindings (WITH_TORCH)
  • Build system / CMake / CI
  • Python bindings / user-facing API

Smoke Test Result

No operator implementation or compiled target changes in this PR. The resolver path was exercised directly with the real vLLM provider DSO, which is the behavior changed here.

tests/test_resolve_linked_ops.py: 32 passed

# vllm/vllm-openai:v0.10.0, real vllm/_moe_C.abi3.so
SCHEMAS_VALIDATED=2
LOAD_LIBRARY_CALLS=1
RESOLVED_OPERATOR_SCHEMAS=2
RESOLVED_LIBRARIES=1
FORCE_LOAD_ENTRIES=1

Test Results on Supported Platforms

Platform Affected Build / Smoke Result Full Result / Notes
NVIDIA No N/A - no backend source changed Real _moe_C.abi3.so resolver gate passed
Iluvatar No N/A - not affected N/A
MetaX No N/A - not affected N/A
Cambricon No N/A - not affected N/A
Moore No N/A - not affected N/A
Ascend No N/A - not affected N/A
Additional validation
Ruff 0.15.22 check and format: passed
git diff --check: passed
empty, non-string, blank, and duplicate schemas: rejected
one-element list manifest output: canonical scalar
multi-element list manifest output: ordered list

Benchmark / Performance Impact

N/A - configuration resolution only.

Notes for Reviewers

  • This extends the value type of the existing operator_schema field; it does not add a new configuration key or dependency mechanism.
  • Bare Tensor! remains the parseable representation for independent mutable aliases. The resolver retains its strict canonical schema comparison.
  • All schemas in one binding intentionally share its single dispatch_key.

@voltjia
voltjia force-pushed the feat/linked-moe-wna16-marlin-gemm branch from 3f89ad2 to 3173d65 Compare August 9, 2026 11:10
Base automatically changed from feat/linked-moe-wna16-marlin-gemm to master August 9, 2026 13:32
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