mirror of
https://github.com/elder-plinius/OBLITERATUS.git
synced 2026-08-29 22:20:36 +02:00
feat: add Jetson contributor validation path
This commit is contained in:
@@ -70,21 +70,28 @@ probes.
|
||||
For an operator run on the labeled machine:
|
||||
|
||||
```bash
|
||||
uv sync --locked --extra dev
|
||||
uv sync --locked --extra dev --extra quantization
|
||||
CUDA_TORCH_VERSION="$(.venv/bin/python -c \
|
||||
'import torch; print(torch.__version__.split("+", 1)[0])')"
|
||||
UV_TORCH_BACKEND=cu130 uv pip install --python .venv/bin/python \
|
||||
--reinstall-package torch "torch==$CUDA_TORCH_VERSION"
|
||||
uv pip check --python .venv/bin/python
|
||||
uv run --extra dev python scripts/run_conditional_gate.py cuda-runtime
|
||||
uv run --extra dev python scripts/run_conditional_gate.py bitsandbytes-runtime
|
||||
uv run --extra dev --extra quantization python scripts/run_conditional_gate.py cuda-runtime
|
||||
uv run --extra dev --extra quantization python scripts/run_conditional_gate.py bitsandbytes-runtime
|
||||
```
|
||||
|
||||
Jetson CUDA support is tracked separately from this generic x64 CUDA lane. A
|
||||
generic Linux ARM build can prove package portability, but it does not prove
|
||||
Jetson GPU support because Jetson depends on a JetPack/L4T-matched CUDA, cuDNN,
|
||||
and PyTorch runtime. The support plan, recommended container path, and acceptance
|
||||
criteria are documented in [NVIDIA Jetson support plan](platforms/jetson.md).
|
||||
Jetson CUDA support is tracked separately from this generic x64 CUDA lane. The
|
||||
mandatory `Linux ARM64 preflight` uses GitHub's hosted `ubuntu-24.04-arm` runner
|
||||
to prove locked CPU packaging, imports, CLI startup, and Jetson tooling contracts.
|
||||
It is not GPU evidence. Jetson depends on a JetPack/L4T-matched CUDA, cuDNN, and
|
||||
PyTorch runtime.
|
||||
|
||||
Physical testing uses only a trusted manual dispatch on the labels `self-hosted`,
|
||||
`linux`, `ARM64`, and `jetson`. The job preserves NVIDIA's vendor PyTorch, runs
|
||||
`jetson-runtime`, and uploads the sanitized `conditional-jetson-<run-attempt>`
|
||||
artifact for 30 days. It never runs for a pull request, schedule, or release.
|
||||
Contributor bootstrap, runner isolation, reporting commands, and acceptance
|
||||
criteria are documented in the [NVIDIA Jetson support plan](platforms/jetson.md).
|
||||
|
||||
## Apple MPS and MLX
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user