feat: add Jetson contributor validation path

This commit is contained in:
Joseph Magly
2026-08-21 20:12:35 -04:00
parent 1e870ccee0
commit 06e80af7b6
23 changed files with 1128 additions and 30 deletions
+67
View File
@@ -79,6 +79,41 @@ from being selected: upstream documents that wheel as SBSA/server ARM and says
Jetson L4T/JetPack requires a source build. Until a pinned source build passes
on the selected device, bitsandbytes is unsupported for that tier.
### Experimental contributor bootstrap
Start with NVIDIA's PyTorch wheel or PyTorch iGPU container for the exact
JetPack patch installed on the device. Confirm that `python3 -c 'import torch;
assert torch.cuda.is_available()'` succeeds before installing OBLITERATUS. Then,
from a checkout of the exact commit under test, run:
```bash
python3 -m venv .venv-jetson-tools
.venv-jetson-tools/bin/python -m pip install "uv==0.12.4"
.venv-jetson-tools/bin/python scripts/setup_jetson.py \
--python python3 \
--uv-python .venv-jetson-tools/bin/python \
--venv .venv-jetson
.venv-jetson/bin/python scripts/run_conditional_gate.py jetson-runtime
.venv-jetson/bin/python scripts/jetson_support.py \
--check \
--gate-evidence conditional-evidence/jetson-runtime.json \
--output conditional-evidence/jetson-report.json \
--issue-body conditional-evidence/jetson-issue.md
```
The bootstrap validates ARM64, L4T, and CUDA before changing the environment.
It creates a virtual environment with `--system-site-packages`, exports the
committed lock, and installs locked OBLITERATUS dependencies without replacing
the vendor `torch`. It also excludes bitsandbytes. The generic bitsandbytes
package is now an explicit `quantization` extra for supported non-Jetson
environments; Jetson quantization remains a separate source-build milestone.
For JetPack 6.2, NVIDIA publishes the
`nvcr.io/nvidia/pytorch:25.06-py3-igpu` container. Run it only on Jetson hardware
with the NVIDIA runtime, mount a reviewed checkout, and use the same bootstrap
inside the container. Match other JetPack releases through NVIDIA's
compatibility table rather than substituting a `latest` tag.
## Conditional gate
Add a new gate instead of modifying the x64 CUDA gate:
@@ -93,6 +128,35 @@ Add a new gate instead of modifying the x64 CUDA gate:
The job must run only from a trusted ref or reviewed maintainer dispatch. A
persistent self-hosted Jetson must never execute untrusted pull-request code.
### Attaching a contributor-owned runner
Register the runner using GitHub's self-hosted runner instructions, on the
Jetson itself, and add the custom label `jetson`. GitHub supplies the
`self-hosted`, `linux`, and `ARM64` default labels. Verify that the repository
shows exactly these required labels before dispatching the job:
```text
self-hosted, linux, ARM64, jetson
```
Use a dedicated, non-personal runner account and a disposable or resettable
workspace. Do not place Hugging Face, SSH, cloud, or signing credentials on the
runner. Only a maintainer should manually dispatch `Conditional tests` against
a reviewed commit; the Jetson job is deliberately unavailable to pull-request,
scheduled, and release triggers. Remove the runner registration token after
setup and keep the runner offline when it is not being used for reviewed work.
### Reporting results without a project-owned Jetson
Open the [Jetson runtime report](https://github.com/elder-plinius/OBLITERATUS/issues/new?template=jetson-runtime.yml)
issue form and attach `conditional-evidence/jetson-report.json`, or paste the
generated `conditional-evidence/jetson-issue.md`. The collector reports only an
allow-listed architecture, OS/JetPack, PyTorch/CUDA, device-class, test-result,
and commit profile. It excludes environment variables, hostnames, usernames,
network addresses, device serials, tokens, and local filesystem paths. Review
the file yourself before publishing it. A failed report is useful evidence and
does not imply that the contributor must diagnose the compatibility problem.
The gate should verify:
- `platform.machine()` is `aarch64` or equivalent ARM64.
@@ -146,3 +210,6 @@ them.
- [Astral: Using uv with PyTorch](https://docs.astral.sh/uv/guides/integration/pytorch/)
- [Hugging Face: bitsandbytes installation guide](https://huggingface.co/docs/bitsandbytes/installation)
- [GitHub: secure use of self-hosted runners](https://docs.github.com/en/actions/reference/security/secure-use#hardening-for-self-hosted-runners)
- [GitHub: use self-hosted runner labels](https://docs.github.com/en/actions/how-tos/manage-runners/self-hosted-runners/use-in-a-workflow)
- [GitHub: hosted ARM64 runners](https://docs.github.com/en/actions/reference/runners/github-hosted-runners)
- [NVIDIA: PyTorch 25.06 for JetPack 6.2](https://docs.nvidia.com/deeplearning/frameworks/pytorch-release-notes/rel-25-06.html)