|
| 1 | +# Fast Statistical Models for Python |
| 2 | + |
| 3 | +This repository contains the PyCon US 2026 deck and reproducibility artifacts for **Breaking the Speed Limit: Python 3.14, Numba, and Codex in Statistical Computing**. |
| 4 | + |
| 5 | +Core thesis: |
| 6 | + |
| 7 | +- simulation is how statisticians write tests; |
| 8 | +- speed only counts after the statistic is preserved; |
| 9 | +- Python remains the scientific interface; |
| 10 | +- Numba, JAX, Python 3.14, threads, processes, and A100 solve different bottlenecks. |
| 11 | + |
| 12 | +## View the slides |
| 13 | + |
| 14 | +Use the project conda environment by default: |
| 15 | + |
| 16 | +```bash |
| 17 | +conda activate py312 |
| 18 | +python -m http.server 8000 |
| 19 | +``` |
| 20 | + |
| 21 | +Open: |
| 22 | + |
| 23 | +```text |
| 24 | +http://localhost:8000/slides/index.html |
| 25 | +``` |
| 26 | + |
| 27 | +PDF/print mode: |
| 28 | + |
| 29 | +```text |
| 30 | +http://localhost:8000/slides/index.html?print-pdf |
| 31 | +``` |
| 32 | + |
| 33 | +The canonical deck is [`slides/index.html`](slides/index.html). Current structure is 32 slides total: 27 main-path slides and 5 backup slides. |
| 34 | + |
| 35 | +## Results layout |
| 36 | + |
| 37 | +- MacBook/local trust tier: [`experiments/results/macbook_air_long/latest/`](experiments/results/macbook_air_long/latest/) |
| 38 | +- Linux server CPU scale tier: [`experiments/results/linux_server_cpu/long_safe_20260503_190133/`](experiments/results/linux_server_cpu/long_safe_20260503_190133/) |
| 39 | +- Historical A100 long-safe tier: [`experiments/results/linux_server_a100/long_safe_20260503_190133/`](experiments/results/linux_server_a100/long_safe_20260503_190133/) |
| 40 | +- A100 permutation follow-up notes and figures: [`experiments/results/linux_server_a100/permutation_followup/`](experiments/results/linux_server_a100/permutation_followup/) |
| 41 | +- A100 permutation break-even notes: [`experiments/results/linux_server_a100/permutation_break_even/`](experiments/results/linux_server_a100/permutation_break_even/) |
| 42 | +- Slide-ready figures: [`experiments/results/presentation_figures/`](experiments/results/presentation_figures/) |
| 43 | + |
| 44 | +## Current result status |
| 45 | + |
| 46 | +- MacBook k-means and permutation correctness/calibration results are the trust tier used in the main talk. |
| 47 | +- Linux server CPU and k-means A100 results are scale evidence used in the main talk. |
| 48 | +- The old A100 permutation matched slice is historical negative evidence: `n=5,000`, `p=50,000`, `batch_R=512`, before streamed reduction and the broader shape sweep. |
| 49 | +- The current A100 permutation break-even narrative uses `a100_streamed_reduction`, larger `batch_R`, and a measured shape sweep. Speedup is scoped to the matched CPU matrix baseline divided by A100 streamed full end-to-end. Compile is excluded, transfer is included, and kernel-only rows are not used for CPU/A100 decisions. |
| 50 | +- A100 permutation correctness wording is intentionally scoped: historical rows marked `check` are not exact `pass` rows; new accepted GPU rows should be emitted as `pass_gpu_tolerance`. |
| 51 | + |
| 52 | +## Regenerate figures |
| 53 | + |
| 54 | +MacBook figures: |
| 55 | + |
| 56 | +```bash |
| 57 | +python -m experiments.visualization.plot_macbook_air_evidence \ |
| 58 | + --results-dir experiments/results/macbook_air_long/latest |
| 59 | +``` |
| 60 | + |
| 61 | +Server CPU and k-means/A100 presentation figures: |
| 62 | + |
| 63 | +```bash |
| 64 | +python -m experiments.visualization.plot_server_talk_evidence |
| 65 | +``` |
| 66 | + |
| 67 | +A100 permutation break-even figures, when the experiment CSVs are available: |
| 68 | + |
| 69 | +```bash |
| 70 | +python -m experiments.server.a100_permutation_break_even plot \ |
| 71 | + --out-dir experiments/results/linux_server_a100/permutation_break_even \ |
| 72 | + --presentation-dir experiments/results/presentation_figures |
| 73 | +``` |
| 74 | + |
| 75 | +## Deck QA |
| 76 | + |
| 77 | +Latest screenshot and render QA artifacts are written under [`slides/qa/latest/`](slides/qa/latest/). The QA pass checks browser mode, print/PDF mode, video poster fallbacks, broken media URLs, clipping, overlap, console errors, and A100 pending/experimental wording. |
0 commit comments