Skip to content

A reproducible end-to-end training workload as the acceptance test for 0.5 #76

Description

@vyncint

Summary

The milestone needs one artefact that proves the pieces work together for a user who is not the maintainer: a small model trained end to end on each available device with a recorded loss trajectory, a saved checkpoint that resumes, and a documented wall-clock number produced by the benchmark harness. Today the only example is train_mnist, which trains but does not checkpoint, does not compare devices and records no number.

Where (main at 853a224)

crates/oxmera/examples/train_mnist.rs (167 lines); ROADMAP.md "Next" lists "Model zoo examples: CNN on MNIST/CIFAR".

Content

  • examples/01_tensor_and_strides.rs, 02_the_tape.rs, 03_a_kernel_in_two_languages.rs (the MSL/CUDA pair side by side) as a reading path, and 04_train_resume.rs as the workload: a Conv2d + BatchNorm2d + Linear network on MNIST (synthetic fallback), Module::to_device, save at epoch k, resume, assert the resumed trajectory matches the uninterrupted one.
  • A CI step that runs 04_train_resume on the CPU with the synthetic dataset and asserts the final loss is below a fixed threshold, so a numerical regression in any layer fails CI.
  • The same run on Metal (macOS CI) and CUDA (--features hardware, manual) with the loss trajectories recorded under docs/perf/.

Done when

The example runs on a CPU-only box in under two minutes; CI asserts its loss; the README's quick start points at it.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions