Download tests/test_precision.py from Celsia/torch-dimensions: direct link, hf CLI and curl.
- Browser
- Download file 4.45 kB
-
https://huggingface.co/Celsia/torch-dimensions/resolve/main/tests/test_precision.py
- Command line
-
hf download hf://Celsia/torch-dimensions/tests/test_precision.py
-
curl -L -o test_precision.py https://huggingface.co/Celsia/torch-dimensions/resolve/main/tests/test_precision.py
4.45 kB
| """What precision the benchmarks actually ran at, recorded rather than assumed. | |
| CUDA does not run float32 by default. `torch.backends.cudnn.allow_tf32` ships | |
| as True, so cuDNN convolutions and RNNs execute in TF32 — 10 mantissa bits | |
| against float32's 23. `matmul.allow_tf32` ships as False, which is why the | |
| attention, Mamba and S4 models were never affected and the convolutional and | |
| recurrent ones were. | |
| The device comparison was therefore measuring MPS float32 against CUDA TF32 | |
| and attributing the difference to the hardware. With TF32 off, `cnn_2d_sparse` | |
| moves from 1.96e-04 to 2.34e-07 and `tcn_2d_sparse` from 1.16e-04 to 1.13e-07. | |
| These tests run on any machine, including one with no GPU, because the thing | |
| worth pinning is not the GPU behaviour — it is that the setting is applied, | |
| reported honestly when it could not be applied, and never silently assumed. | |
| """ | |
| from __future__ import annotations | |
| import argparse | |
| import importlib.util | |
| import sys | |
| from pathlib import Path | |
| import torch | |
| ROOT = Path(__file__).resolve().parent.parent | |
| sys.path.insert(0, str(ROOT / "benchmarks")) | |
| spec = importlib.util.spec_from_file_location("_td_precision", ROOT / "benchmarks" / "precision.py") | |
| precision = importlib.util.module_from_spec(spec) | |
| sys.modules["_td_precision"] = precision | |
| spec.loader.exec_module(precision) | |
| def parse(argv, *, tf32_default="off"): | |
| ap = argparse.ArgumentParser() | |
| precision.add_arguments(ap, tf32_default=tf32_default) | |
| return ap.parse_args(argv) | |
| def test_the_numerical_benchmark_defaults_to_real_float32(): | |
| """`agreement.py` asks for TF32 off, because comparing one device's float32 | |
| against another's TF32 measures a precision setting and calls it hardware.""" | |
| assert parse([], tf32_default="off").tf32 == "off" | |
| def test_the_training_benchmark_defaults_to_what_users_get(): | |
| """`pretrain.py` keeps torch's own default, since its speed numbers should | |
| describe the configuration people actually run.""" | |
| assert parse([], tf32_default="on").tf32 == "on" | |
| def test_cudnn_stays_on_unless_asked(): | |
| """Turning cuDNN off changes *which implementation runs*, not its | |
| precision. It answers a diagnostic question — the RNN residual is the fused | |
| kernel, not float32 — and must not be the default, because the fused kernel | |
| is what a user's model uses.""" | |
| assert parse([]).cudnn == "on" | |
| assert parse(["--cudnn", "off"]).cudnn == "off" | |
| def test_the_settings_are_reported_as_observed_not_as_requested(): | |
| """On a machine with no CUDA these knobs do nothing. A manifest that | |
| recorded "tf32: off" there would claim a control that was never applied, | |
| and the whole point of the record is that a number's precision travels | |
| with it.""" | |
| settings = precision.apply(parse(["--tf32", "off"])) | |
| assert settings["tf32_requested"] == "off" | |
| if torch.cuda.is_available(): | |
| assert settings["cudnn_tf32"] is False | |
| assert settings["matmul_tf32"] is False | |
| else: | |
| assert settings["cudnn_tf32"] is None | |
| assert settings["matmul_tf32"] is None | |
| assert "no CUDA" in settings["note"] | |
| def test_describe_never_claims_a_control_it_did_not_apply(): | |
| without = {"tf32_requested": "off", "cudnn_tf32": None} | |
| assert "n/a" in precision.describe(without) | |
| with_cuda = { | |
| "tf32_requested": "off", | |
| "cudnn_tf32": False, | |
| "matmul_tf32": False, | |
| "cudnn_enabled": True, | |
| } | |
| text = precision.describe(with_cuda) | |
| assert "cudnn=False" in text and "matmul=False" in text | |
| def test_applying_the_setting_does_not_disturb_a_cpu_run(): | |
| """The knobs are CUDA-only; asking for them on CPU must not raise or leave | |
| torch in a state the rest of the suite then inherits.""" | |
| before = torch.backends.cudnn.enabled | |
| precision.apply(parse(["--tf32", "off"])) | |
| precision.apply(parse(["--tf32", "on"])) | |
| if not torch.cuda.is_available(): | |
| assert torch.backends.cudnn.enabled == before | |
| def test_both_benchmarks_record_precision_in_their_manifest(): | |
| """The record is the deliverable: two runs are only comparable if each says | |
| what precision it ran at, and neither script may quietly drop it.""" | |
| for name in ("agreement.py", "pretrain.py"): | |
| source = (ROOT / "benchmarks" / name).read_text() | |
| assert "precision.apply(args)" in source, f"{name} never applies the setting" | |
| assert '"precision": prec' in source, f"{name} never records the setting" | |