Repository navigation
πΊοΈ Roadmap: vLLM Full Compatibility (NPU-first)Β #205
Copy link
Copy link
Open
Description
Goal
Make candle a backend capable of running vLLM workloads end-to-end, starting with an NPU-first target (Ascend / HCCL / ACLNN).
Near-term MVP target:
- single-node
- text generation
- TP=1 first
- no quantization initially
Longer-term target:
- tensor parallel
- graph capture
- quantization
- serving-grade throughput
Current State
| Capability | Status | Notes |
|---|---|---|
| NPU backend (ACLNN) | β Strong | Mature op coverage, allocator, streams |
NPU graph capture (NPUGraph) |
β Exists | Needs vLLM-style validation |
| HCCL distributed collectives | β Strong | all_reduce / all_gather / reduce_scatter / all_to_all |
| CUDA backend | β Skeletal | Not viable for vLLM today |
| NCCL backend | β Missing | CUDA TP path blocked |
| torch.compile | No real graph/compile backend | |
| torch.library / custom_op | β Exists | Useful for custom kernel registration |
| torch.ops namespace | β Stub only | load_library() no-op |
| SDPA / fused attention | No paged attention / flash attention | |
| Meta/Fake tensors | β Missing | Needed for shape-only init/tracing |
| Quantization | β Missing | No GPTQ/AWQ/FP8/INT8 kernels |
Tensor-level record_stream() |
β Missing | Allocator-level only |
Key Blockers
- No PagedAttention / fused decode attention kernel
torch.opsnamespace is stubbed- No meta/fake tensor support
- No real
torch.compile/ graph lowering story - No quantized kernel path
- CUDA backend is not a practical target yet
Given current candle strengths, vLLM-on-NPU is realistic; vLLM-on-CUDA is not a near-term goal.
Sub-Issues
Phase 1: API Compatibility Foundation (Target: July 2026)
- [Task][vLLM] 1.1: Fix Library() 3-arg constructorΒ #235 β 1.1 Fix
Library()3-arg constructorβ€΄οΈ also HF [Task][HF] 1.4: Fix Library() 3-arg constructorΒ #226 - [Task][vLLM] 1.2: Implement functional torch.ops namespaceΒ #236 β 1.2 Implement functional
torch.opsnamespace - [Task][vLLM] 1.3: Add meta/fake tensor supportΒ #237 β 1.3 Add meta/fake tensor support
β€΄οΈ also HF [Task][HF] 1.1: Meta device and Module.to_empty() implementationΒ #223 - [Task][vLLM] 1.4: Expose Tensor.record_stream(stream)Β #238 β 1.4 Expose
Tensor.record_stream(stream) - [Task][vLLM] 1.5: Make torch.compile(..., backend="eager") a valid no-opΒ #239 β 1.5 Make
torch.compile(..., backend="eager")a valid no-opβ€΄οΈ partial overlap with HF [Task][HF] 1.3: Promote torch submodule stubs from conftest to candle sourceΒ #225
Phase 2: Core Serving Kernels (Target: September 2026)
- [Task][vLLM] 2.1: Implement PagedAttention for NPUΒ #240 β 2.1 Implement PagedAttention for NPU
- [Task][vLLM] 2.2: Implement npu_fusion_attention compatibility wrapperΒ #241 β 2.2 Implement
npu_fusion_attentioncompatibility wrapper - [Task][vLLM] 2.3: Add fused RoPE / rotary embedding kernel for NPUΒ #242 β 2.3 Add fused RoPE / rotary embedding kernel for NPU
- [Task][vLLM] 2.4: Validate and harden NPUGraph for decode replayΒ #243 β 2.4 Validate and harden
NPUGraphfor decode replay
Phase 3: Runtime Integration (Target: November 2026)
- [Task][vLLM] 3.1: Validate tensor-parallel execution with HCCLΒ #244 β 3.1 Validate tensor-parallel execution with HCCL
- [Task][vLLM] 3.2: Add end-to-end vLLM integration testsΒ #245 β 3.2 Add end-to-end vLLM integration tests
- [Task][vLLM] 3.3: Add quantization entry-point stubsΒ #246 β 3.3 Add quantization entry-point stubs
- [Task][vLLM] 3.4: Benchmark serving throughput / latencyΒ #247 β 3.4 Benchmark serving throughput / latency
Phase 4: Full Serving Feature Set (Stretch β Q1 2027)
- [Task][vLLM] 4.1: Tensor parallel > 1 end-to-endΒ #248 β 4.1 Tensor parallel > 1 end-to-end
- [Task][vLLM] 4.2: Quantized serving (GPTQ/AWQ/FP8)Β #249 β 4.2 Quantized serving (GPTQ/AWQ/FP8)
- [Task][vLLM] 4.3: Scheduler / memory manager validation under continuous batchingΒ #250 β 4.3 Scheduler / memory manager validation under continuous batching
- [Task][vLLM] 4.4: Multi-model benchmark suiteΒ #251 β 4.4 Multi-model benchmark suite
Cross-Roadmap Duplicates
| Capability | vLLM | HF | Megatron | Notes |
|---|---|---|---|---|
| Meta device | #237 | #223 | β | Resolving one closes both |
| Library() 3-arg | #235 | #226 | β | Resolving one closes both |
| _dynamo / compiler stubs | #239 | #225 | β | Partial overlap; coordinate work |
Milestones / DDL
- API compatibility base: 2026-07-31
- NPU serving MVP (single model, TP=1, no quant): 2026-09-30
- NPU production-oriented integration (graphs + TP validation + E2E tests): 2026-11-30
- Full-feature serving stretch goal: 2027-03-31
Success Criteria
import vllm-style initialization paths no longer fail on missing PyTorch APIs- Candle can execute prefill + decode for at least one small causal LM on NPU
NPUGraphreplay is validated on decode workloads- HCCL-backed TP primitives are validated for serving use cases
- Throughput gap vs torch_npu baseline is understood and benchmarked
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels
Activity