Prototype TensorStore inside the native OM4 batch pipeline - #874
Draft
fomo-bot wants to merge 1 commit into
Draft
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This draft lets
data.loading.type: tensorstoreuse the rollout-wide plane deduplication, pinned-buffer reuse, host prefetch, and CUDA batch preparation from #800. Xarray remains the semantic delegate; TensorStore reads directly into the shared pipeline's output buffers without requiring the Rust extension.Stacked on #800 (
u/jder/rust-loader) so the review shows only the prototype integration. Related to the comparison in #871; this uses direct TensorStore reads rather than #871's Xarray backend option.What is included
Om4IoRuntime/Om4PlaneReaderinterface used by the existing Rust implementation and the new TensorStore reader.scripts/benchmark_native_loading.pyharness anddocs/tensorstore-native-loader.mdwalkthrough.Local experiment
GB10, uncompressed one-degree OM4 (180 × 360), batch size 1, history 1, four rollout steps, 77 prognostic plus three boundary channels. Median of three warmed 16-batch passes through the configuration and loader factories:
All 16 prepared batches matched the CPU reference for each reader. These are loader-only measurements, including transfer and preprocessing, without model execution. They do not establish full-training speedups or equivalence on compressed quarter-degree / multi-GPU workloads.
Validation
Focused native/config/sampler CPU suite: 141 passed.
Native-loader CUDA suite: 7 passed.
uvx pre-commit run --all-files: passed.Clean
--no-dev --extra tensorstoreinstallation: Rust extension absent; local OM4 native read passed.Broad non-manual/non-CUDA suite: 553 passed, 2 skipped, 10 xfailed; 75 deselected.
GitHub CI at
4e466dc6: CPU, GPU, data tests, pre-commit, Rust extension tests on x86_64/ARM64, and the x86_64 container build passed. All workflows and report jobs reached terminal success.ARM64 container and separate container CPU/GPU test jobs were skipped by workflow conditions.
Draft scope
The pipeline retains its existing
rust_data.pymodule andRustTrainDataLoadername to keep this comparison focused. Remote storage, LLC, native inference, derived anomaly channels, broad renaming, and a decision to replace Rust are outside this draft. The next experiment is matched compressed quarter-degree training with epoch time, data-wait, and host/device memory measurements.