You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The MLX engine supports roughly 90 model_type values (see src/models/detection.rs). The OpenXLA/IREE backend (#449 M3 Stage 2d) currently serves only three text, dense architectures: Llama, Qwen2, and Gemma2, on both the single-sequence CLI path (MLXCEL_BACKEND=xla) and the continuous-batching serve path (mlxcel-server).
The gap is no longer infrastructure. The shared, architecture-agnostic base is already done and must not be re-created:
History penalties: repetition, frequency, presence, DRY.
Streaming-safe stop strings.
Server seam: BatchEngine trait, XlaServeWorker, /v1/completions, /metrics.
Goal
Bring the OpenXLA backend toward MLX-engine architecture coverage, planned in release windows. Because the common base is fixed, adding a new family needs only four per-family pieces:
Config::from_json arch detection and fields (emitter/config.rs).
weight_names per-layer order (iree.rs).
The emitter forward (emitter/model.rs).
Token-exact (or reference-exact) validation against an HF oracle on a real checkpoint.
The only exceptions are families that need a new shared graph primitive (MoE FFN, SSM/recurrent mixing); those are scoped as their own foundation issues so the per-family work stays cheap.
Validation pattern
The established gate for every architecture:
Dequant a 4bit/8bit checkpoint offline to f32 (or use a bf16 checkpoint directly).
Run HF fp32 as the oracle.
Run XLA on the quantized/bf16 model.
Compare: single-sequence path token-exact vs the HF fp32 oracle; serve path reference-exact via xla_batch_bench.
tanh-based architectures (soft-capping, GeGLU) may differ only at sub-0.01 logit near-ties; that is acceptable.
Windows D (SSM/hybrid/recurrent) and E (multimodal/VLM) are separate tracks that introduce non-attention graph primitives or vision/audio encoders; each is expected to spin out into its own follow-up epic after its design issue lands.
Problem / Background
The MLX engine supports roughly 90
model_typevalues (seesrc/models/detection.rs). The OpenXLA/IREE backend (#449 M3 Stage 2d) currently serves only three text, dense architectures: Llama, Qwen2, and Gemma2, on both the single-sequence CLI path (MLXCEL_BACKEND=xla) and the continuous-batching serve path (mlxcel-server).The gap is no longer infrastructure. The shared, architecture-agnostic base is already done and must not be re-created:
index.json), bf16/f16/f32 widening, MLX 4bit/8bit affine dequant.XlaBatchEngineplus the ragged scheduler.BatchEnginetrait,XlaServeWorker,/v1/completions,/metrics.Goal
Bring the OpenXLA backend toward MLX-engine architecture coverage, planned in release windows. Because the common base is fixed, adding a new family needs only four per-family pieces:
Config::from_jsonarch detection and fields (emitter/config.rs).weight_namesper-layer order (iree.rs).emitter/model.rs).The only exceptions are families that need a new shared graph primitive (MoE FFN, SSM/recurrent mixing); those are scoped as their own foundation issues so the per-family work stays cheap.
Validation pattern
The established gate for every architecture:
xla_batch_bench.tanh-based architectures (soft-capping, GeGLU) may differ only at sub-0.01 logit near-ties; that is acceptable.
Sub-issues
Phase 1: Window A (Foundation)
Phase 2: Window B (Dense decoder-only families)
Phase 3: Window C (Mixture-of-Experts)
Phase 4: Window D (SSM / hybrid / recurrent)
Phase 5: Window E (Multimodal / VLM)
Acceptance Criteria
MLXCEL_BACKEND=xlapath and serves viamlxcel-server.xla_batch_bench.Technical Considerations