Skip to content

ci: end-to-end reproducibility workflow on free runners - #12

Open
ayushnandi718-dev wants to merge 3 commits into
slvDev:mainfrom
ayushnandi718-dev:ci-reproducibility
Open

ci: end-to-end reproducibility workflow on free runners#12
ayushnandi718-dev wants to merge 3 commits into
slvDev:mainfrom
ayushnandi718-dev:ci-reproducibility

Conversation

@ayushnandi718-dev

Copy link
Copy Markdown

Proves the whole pipeline from a clean checkout — no hardware, no cloud credits, and no compute on contributors' machines (everything runs on GitHub-hosted runners):

  • lint — Python syntax check + informational ruff run
  • host-pipeline — prepare a 16MB TinyStories slice, train a tiny ple model on CPU, export model.bin + golden logits, then build and run the host verifier (C must match the PyTorch golden) and the perplexity harness; model artifacts are uploaded for reuse
  • firmware-compile — installs the ESP32 core + display libs and compiles the sketch with arduino-cli, catching C errors without a board

Supporting changes:

  • data/prepare.py: --max-bytes flag (smoke runs use a small slice instead of 300MB)
  • src/gen_assets.py: --tok argument so vocab.h can be generated from any tokenizer

This directly addresses the spirit of issue #7 ("the model does not exist anywhere") by showing the reproducible pipeline end to end, and adds regression protection for firmware changes (#3, #8 and future PRs).

The trained model.bin is intentionally not committed, but the reason was
easy to miss. Document which script regenerates each ignored artifact and
add tools/fetch_model.py, a SHA-256-verified downloader for the published
weights, wired into the firmware build steps (issues slvDev#5 and slvDev#7).
Adds a GitHub Actions workflow that proves the whole pipeline from a clean
checkout -- no hardware required:
- lint: syntax check + informational ruff run
- host-pipeline: prepare a small TinyStories slice, train a tiny ple model on
  CPU, export model.bin + golden logits, build and run the host verifier
  (C vs PyTorch golden must PASS) and the perplexity harness, then upload
  the model artifacts for reuse
- firmware-compile: install the ESP32 core + display libs and compile the
  sketch with arduino-cli, catching C errors without a board

Supporting changes:
- data/prepare.py: --max-bytes flag so smoke runs use a small slice instead
  of the full 300MB
- src/gen_assets.py: --tok argument so vocab.h can be generated from any
  tokenizer JSON (not just bpe32768.json)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant