The standard library for Brunost ML and RL tasks.
One pinned set of packages. The Judge's ML sandbox image installs exactly one
release of ml-std; a contestant installs the same release and has the
Judge's environment on their own machine:
pip install ml-std==2.0.0
python -m ml_std check # "environment matches the Judge runtime"On Linux x86_64 add --extra-index-url https://download.pytorch.org/whl/cpu
to get the CPU build of PyTorch (the Judge runs CPU workers; the default
PyPI wheel drags in CUDA libraries). macOS and aarch64 wheels are CPU-only.
Nothing else is importable inside the Judge (no network, no pip), so this package's dependency list is the complete answer to "what can I use?".
The contest environment of IOAI 2025
(Python 3.12.7, requirements.txt), reduced to the ML-relevant packages
and pinned at exactly their versions, so training for Brunost is training
for the Olympiad:
| Area | Packages |
|---|---|
| Deep learning | torch 2.7.1, torchvision 0.22.1, torchaudio 2.7.1, pytorch-lightning 2.5.2, timm 1.0.16, einops 0.8.1 |
| Hugging Face | transformers 4.54.0, tokenizers 0.21.2, datasets 3.6.0, huggingface-hub 0.34.2, safetensors 0.5.3, accelerate 1.8.1, peft 0.16.0, sentence-transformers 4.1.0, sentencepiece 0.2.1, evaluate 0.4.4 |
| Classic ML and data | numpy 2.2.6, pandas 2.2.3, scipy 1.14.1, scikit-learn 1.6.1, xgboost 3.0.2, lightgbm 4.6.0, catboost 1.2.8, statsmodels 0.14.4, numba 0.61.2, pyarrow 20.0.0, networkx 3.4.2 |
| Images, audio, text | pillow 11.1.0, scikit-image 0.25.0, librosa 0.11.0, nltk 3.9.1, spacy 3.8.7 |
| Plotting | matplotlib 3.10.0, seaborn 0.13.2 |
| RL and testing | gymnasium 1.2.0, pytest 8.4.1, tqdm 4.67.1 |
Deviations from IOAI 2025, both forced by Python 3.13 wheels: scipy 1.14.1 (IOAI 1.13.1) and sentencepiece 0.2.1 (IOAI 0.2.0). Left out on purpose: GPU-only packages (bitsandbytes, diffusers), notebooks (jupyter, ipykernel) and API clients, which are not part of a judged solution.
| ml-std | Judge runtime | Python |
|---|---|---|
| 2.0.0 | python-3.13-ml-v1 |
3.13 |
- Change the pins in
pyproject.toml, bumpversionthere and__version__. python -m ml_std catalog > src/ml_std/runtimes/<version>.json(keep the old files: earlier runtimes stay known).- Set
RUNTIMEto the new runtime name (python-3.13-ml-v2, ...). - Build and publish the wheel; build the Judge image with
ML_STD_SPEC=ml-std==<version>and map the new runtime inBRUNOST_JUDGE_SANDBOX_IMAGES.
Tasks already published keep their runtime; new tasks default to the newest.
python -m ml_std runtimes prints every runtime this release knows about,
which is what the Judge's GET /v1/runtimes serves to the task editor.