Run Hugging Face Training Smoke
Run the smallest experiment that can disprove the training setup. Treat a passing smoke as permission to consider a longer run, never as model or product acceptance.
Establish the boundary
- Record the hypothesis, maximum optimizer steps, hardware, timeout, budget, seed, and stop gates.
- Freeze dataset splits, model revision, tokenizer revision, prompt contract, held-out manifest, and validator revision. Hash local inputs before renting compute.
- Confirm the user has authorized paid compute and any artifact upload. Keep repositories private unless explicitly told otherwise.
- Load credentials from the authorized environment without printing or copying them into commands, logs, manifests, or source.
Preflight locally
Run scripts/preflight_runner.py against the exact submitted runner:
python scripts/preflight_runner.py path/to/runner.py \
--require "load_best_model_at_end" \
--forbid "print(os.environ"
Then execute the runner's cheapest supported dry run or stdin simulation. Verify:
- imports and argument parsing succeed;
- dataset and model revisions resolve;
- chat/template formatting produces completion-only labels as intended;
- the output directory and private Hub target are explicit;
- evaluation occurs at the intended cadence;
- the metric used for best-model selection matches the emitted metric;
- held-out evaluation explicitly reloads the recorded best checkpoint;
- incremental logs and results survive job termination.
Do not rely on load_best_model_at_end alone as proof of the evaluated checkpoint.
Launch exactly one bounded job
Submit the already-preflighted command. Record the job ID and immutable command immediately. Monitor only long enough to detect startup, data, memory, loss, or checkpoint failures. Do not automatically retry a paid job; preserve the failure and obtain new authorization when another paid attempt is needed.
Stop when any project-defined gate fails. Never relax parsing, supplied-ID, legality, replay, safety, or quality thresholds because the loss curve looks healthy.
Evaluate and report
Evaluate the frozen held-out cases once, without repair or retry, using the recorded best-validation checkpoint. Preserve:
- exact command, configuration, revisions, hashes, seed, package versions, GPU, runtime, peak memory, and estimated cost;
- train/evaluation loss history and best metric, step, and checkpoint;
- proof of the checkpoint loaded for held-out inference;
- raw and normalized outputs, validator results, latency, and domain gates;
- artifact locations and hashes.
State the narrowest justified conclusion. A smoke can prove that the pipeline trains and obeys a contract; it cannot establish strategic usefulness or production acceptance.
1---2name: run-hugging-face-training-smoke3description: Runs one bounded, private Hugging Face training smoke with immutable inputs, local preflight checks, explicit stop gates, checkpoint verification, and reproducible evidence. Use before spending cloud compute on a longer fine-tuning run.4---56# Run Hugging Face Training Smoke78Run the smallest experiment that can disprove the training setup. Treat a passing smoke as permission to consider a longer run, never as model or product acceptance.910## Establish the boundary11121. Record the hypothesis, maximum optimizer steps, hardware, timeout, budget, seed, and stop gates.132. Freeze dataset splits, model revision, tokenizer revision, prompt contract, held-out manifest, and validator revision. Hash local inputs before renting compute.143. Confirm the user has authorized paid compute and any artifact upload. Keep repositories private unless explicitly told otherwise.154. Load credentials from the authorized environment without printing or copying them into commands, logs, manifests, or source.1617## Preflight locally1819Run `scripts/preflight_runner.py` against the exact submitted runner:2021```sh22python scripts/preflight_runner.py path/to/runner.py \23 --require "load_best_model_at_end" \24 --forbid "print(os.environ"25```2627Then execute the runner's cheapest supported dry run or stdin simulation. Verify:2829- imports and argument parsing succeed;30- dataset and model revisions resolve;31- chat/template formatting produces completion-only labels as intended;32- the output directory and private Hub target are explicit;33- evaluation occurs at the intended cadence;34- the metric used for best-model selection matches the emitted metric;35- held-out evaluation explicitly reloads the recorded best checkpoint;36- incremental logs and results survive job termination.3738Do not rely on `load_best_model_at_end` alone as proof of the evaluated checkpoint.3940## Launch exactly one bounded job4142Submit the already-preflighted command. Record the job ID and immutable command immediately. Monitor only long enough to detect startup, data, memory, loss, or checkpoint failures. Do not automatically retry a paid job; preserve the failure and obtain new authorization when another paid attempt is needed.4344Stop when any project-defined gate fails. Never relax parsing, supplied-ID, legality, replay, safety, or quality thresholds because the loss curve looks healthy.4546## Evaluate and report4748Evaluate the frozen held-out cases once, without repair or retry, using the recorded best-validation checkpoint. Preserve:4950- exact command, configuration, revisions, hashes, seed, package versions, GPU, runtime, peak memory, and estimated cost;51- train/evaluation loss history and best metric, step, and checkpoint;52- proof of the checkpoint loaded for held-out inference;53- raw and normalized outputs, validator results, latency, and domain gates;54- artifact locations and hashes.5556State the narrowest justified conclusion. A smoke can prove that the pipeline trains and obeys a contract; it cannot establish strategic usefulness or production acceptance.