Repository navigation
XLA Serving v0.0.12
XLA Serving v0.0.12
The release that finishes the move from Neptune to XLA Serving. Expect renamed packages, modules and binaries; see the migration notes below. Alongside the rename: ahead-of-time (AOT) serving without a JIT, priority-aware batching, faster host-to-device transfers, and a new round-trip from XLA SavedModel back to JAX.
⚠️ Breaking changes: Neptune → XLA Serving
| Before | After | PRs |
|---|---|---|
neptune_model / neptune-model wheel |
xla_saved_model / xla-saved-model |
#470 |
neptune_model_runner wheel |
xla_saved_model_runner |
#528 |
neptune_data |
xla_serving_data |
#487 |
npt-cli |
xsm-cli (npt-cli kept as an alias) |
#470 |
neptune_model_* / neptune_bundle_* protos |
xla_saved_model_* / xla_serving_bundle_* |
#484, #511 |
neptune Bazel module, runtime/neptune/… |
xla_serving, runtime/xla_serving/… |
#483, #476 |
neptune_main_* server targets and Docker images |
xla_serving_main_* |
#504 |
neptune_warmup_requests |
xla_serving_warmup_requests |
#536 |
NEPTUNE_ header guards, neptune_stream FFI target |
XLA_SERVING_, xla_serving_stream |
#482, #534 |
Remaining NPT/Neptune references in docs, metrics and flags were cleaned up in #533, #535, #548, #576, #577.
✨ Highlights
Ahead-of-time serving
- AOT StableHLO execution no longer depends on JIT compilation or LLVM codegen (#518);
runtime/interpreteris split into:interpreter_coreplus opt-in capabilities (#517). - New
xsm-cli recompilesubcommand for offline compilation, with automatic deviceless-compilation detection (#412, #499). - Target-topology routing wired into
ModelRunner, with on-disk AOT tests (#465). - End-to-end AOT benchmark suite under
examples/aot_benchmark(#500, #549) and AOT user and deployment guides (#501).
Batching and queues
PriorityAwareQueuewithPriorityBatchingPolicy, plumbed throughQueueOptions(#407, #473, #475, #485, #492);SharedBatchSchedulercan switch toQueueBasebehind a flag (#463).pad_variable_length_inputsbatch option: export, interpreter and batching-kernel support (#496, #508, #552).
Host-to-device transfers
BatchedH2DTransferExecutorsupports partitioned and tiled sharding, custom byte strides and single-deviceHloShardingnormalization (#469, #543, #546).- JAX host-resident placement (
memory_kind='pinned_host'/'host') is bridged through (#464). [N, H, W, C]inputs with smallCare transposed to[N, C, H, W]during R1 staging (#571);kImmutableZeroCopyhost buffers (#585); a distinct IFRT stream per StableHLO execution (#580); no more per-inputSingleDeviceShardingrebuilds (#586).
Export and JAX round-tripping
- Load exported functions and weights back into JAX:
ExportedApplyFn,xsm_fn_to_apply_fn, and the stitching tools (#481, #489, #598). - The PyTree structure of an exported function is recorded in the JAX supplemental and used when rebuilding, including custom nodes without registration (#531, #532, #551).
- TF functions returning tracked containers keep their output structure (#553, #565).
- Input aliasing (#567),
float4e2m1fn/float8e8m0fnudtypes (#530), and a single model-version file (#495).
Runtime and server
- Multi-model serving in
OrbaxCallbackGrpcServer(#468) and--model_config_filein the serving binary (#497). - NanoRt is the default CPU runtime (#581); server binaries link tcmalloc (#584).
- Faster CPU embedding lookups: mapped tables, grouped scheduling, SVE, inline small batches (#570, #573, #574).
enable_input_r1_optimization/enable_output_r1_optimizationon the PythonModelRunner(#568).
CLI
xsm-cli updatefor changing a pipeline's max batch size in place (#494).
🐛 Fixes
- Predict RPCs now finish off the completing interpreter thread (#526) — thanks @hyunminch!
- Data race in
ThreadSafeStatus::status()(#578). - Cache key construction in
AotStableHloRunner::PopulateExecutableBundles(#498). - Hardcoded
PredictionServicegRPC method path (#539). - Segfault when TensorFlow is imported before
xla_serving_data(#556). - nanobind module initialization in
composite_processor_pybind(#521). - Legacy Orbax JAX supplemental MIME type accepted by the stitching loader (#522).
🔧 Build, CI and packaging
- Python 3.13 and 3.14 in presubmits and the release matrix (#579, #583).
- Every example runs end to end in the OSS export and in CI (#569); build-time AOT test models and capability suites (#520).
- XLA pin moved to
third_party/xla/xla.MODULE.bazeland bumped to a recent green commit, dropping the bzlmod patch (#589, #590, #563). - Bazel remote cache improvements (#486);
ml-buildcontainer pinned by digest (#529);jax<0.11.2pinned in CI pending a Flax fix (#544).
New Contributors
- @hyunminch made their first contribution in #526
Full Changelog: v0.0.11...v0.0.12