Presets#
A preset is a runtime image Hesperus offers by name, for notebooks and
environments alike. Each is pinned by digest, so it is the same bytes on
every machine. A preset may have several builds — NVIDIA (CUDA), AMD
(ROCm), CPU — and the one a runtime gets is chosen when it starts. Give a
preset's id as a runtime's image (--preset in astra env create), or
name an image of your own instead.
astra env presets and GET /notebook-images list them (the answer's
default is python).
The presets#
Sizes are the compressed linux/amd64 download of a machine's first start (1 GB = 1000 MB). arm64: the build is also published for linux/arm64.
| Id | Console name | What it has | Builds (download) | Jupyter |
|---|---|---|---|---|
python (default) |
Python + SciPy | Python 3.13 with NumPy, pandas, SciPy, scikit-learn, matplotlib and seaborn, and Jupyter (Jupyter scipy-notebook). | CPU 1.3 GB, arm64 | included (Jupyter Docker Stacks) |
python-3.12 |
Python 3.12 | Plain Python 3.12 on Debian 12: pip, and nothing else to start with. | CPU 381 MB, arm64 | installed at first start |
minimal |
Python (minimal) | Python 3.13 and Jupyter only. | CPU 567 MB, arm64 | included (Stacks) |
cuda |
CUDA dev | CUDA 12.9 toolkit on Ubuntu 24.04: nvcc, the CUDA libraries and headers, with gcc, make, CMake and Python added (NVIDIA only). | NVIDIA 5.7 GB, arm64 | installed at first start |
pytorch |
PyTorch | PyTorch 2.14 with CUDA 12.6 and cuDNN 9 on NVIDIA; AMD's PyTorch 2.13 on ROCm on AMD GPUs. | NVIDIA 4.0 GB, AMD 20.5 GB | installed at first start |
ngc-pytorch |
NVIDIA NGC PyTorch | NGC 26.09: CUDA 13, cuDNN, NCCL, TensorRT, Apex, Transformer Engine, JupyterLab (NVIDIA only). | NVIDIA 11.7 GB, arm64 | included |
huggingface |
Hugging Face | pytorch with Transformers, PEFT, Datasets, Accelerate and bitsandbytes, pinned, installed onto the drive at creation. |
as pytorch |
installed at first start |
jax |
JAX | NGC 26.09 JAX (the JAX Toolbox): JAX with CUDA, Flax, Optax, Orbax, JupyterLab (NVIDIA only). | NVIDIA 8.9 GB, arm64 | included |
tensorflow |
TensorFlow | TensorFlow 2.21 with CUDA on NVIDIA GPUs; the CPU build without a GPU. | NVIDIA 3.8 GB, CPU 616 MB | installed at first start |
spark |
Spark | Apache Spark 4.2 with PySpark and Java 21, in local mode on the runtime's cores; its scratch space on the drive. | CPU 803 MB, arm64 | installed at first start |
rapids |
RAPIDS | RAPIDS 26.08 for CUDA 12: cuDF, cuML, cuGraph, Dask, with JupyterLab (NVIDIA only). | NVIDIA 6.4 GB, arm64 | included |
vllm |
vLLM | vLLM 0.30, the release Eos serves with: run and benchmark models with vllm serve; its ROCm build on AMD GPUs. |
NVIDIA 8.7 GB (arm64), AMD 11.7 GB | installed at first start |
datascience |
Data science | Python, R and Julia with their data science libraries, and Jupyter (Jupyter datascience-notebook). | CPU 2.4 GB, arm64 | included (Stacks) |
pytorch-cuda |
PyTorch + SciPy (Jupyter) | PyTorch built for CUDA 12, with the scipy stack and Jupyter (Jupyter pytorch-notebook, cuda12). | NVIDIA 5.3 GB, arm64 | included (Stacks) |
tensorflow-cuda |
TensorFlow + SciPy (Jupyter) | TensorFlow 2.21 with CUDA, with the scipy stack and Jupyter (Jupyter tensorflow-notebook, cuda). | NVIDIA 4.9 GB, arm64 | included (Stacks) |
The console marks a preset GPU when it is built for GPUs (cuda,
pytorch, ngc-pytorch, huggingface, jax, tensorflow, rapids,
vllm, pytorch-cuda, tensorflow-cuda) and CPU otherwise. A GPU
preset runs without a GPU too, on the CPU.
Warnings the console shows with a preset:
ngc-pytorch: About 12 GB to download on a machine's first start; CUDA 13 needs an NVIDIA driver of the 580 series or newer.jax: About 9 GB to download on a machine's first start; needs an NVIDIA driver of the 580 series or newer.
The images#
| Id | Build | Image (the digest is what is pulled) |
|---|---|---|
python |
CPU | quay.io/jupyter/scipy-notebook:2026-09-29 |
python-3.12 |
CPU | python:3.12.15-bookworm |
minimal |
CPU | quay.io/jupyter/minimal-notebook:2026-09-29 |
cuda |
NVIDIA | nvidia/cuda:12.9.2-devel-ubuntu24.04 |
pytorch, huggingface |
NVIDIA | pytorch/pytorch:2.14.1-cuda12.6-cudnn9-runtime |
pytorch, huggingface |
AMD | rocm/pytorch:rocm10.0_ubuntu24.04_py3.12_pytorch_release_2.13.0 |
ngc-pytorch |
NVIDIA | nvcr.io/nvidia/pytorch:26.09-py3 |
jax |
NVIDIA | nvcr.io/nvidia/jax:26.09-py3 |
tensorflow |
NVIDIA | tensorflow/tensorflow:2.21.0-gpu |
tensorflow |
CPU | tensorflow/tensorflow:2.21.0 |
spark |
CPU | apache/spark:4.2.0-scala2.13-java21-python3-ubuntu |
rapids |
NVIDIA | rapidsai/notebooks:26.08-cuda12-py3.12 |
vllm |
NVIDIA | vllm/vllm-openai:v0.30.0 |
vllm |
AMD | vllm/vllm-openai-rocm:v0.30.0 |
datascience |
CPU | quay.io/jupyter/datascience-notebook:2026-09-29 |
pytorch-cuda |
NVIDIA | quay.io/jupyter/pytorch-notebook:cuda12-2026-09-29 |
tensorflow-cuda |
NVIDIA | quay.io/jupyter/tensorflow-notebook:cuda-2026-09-29 |
A runtime's image_ref gives the full reference with its digest, for the
build it got.
Which build a runtime gets#
- No GPU asked: the CPU build, or the first build when there is none (a GPU preset then runs on the CPU).
- GPUs asked, a preset not built for GPUs (
python,spark, …): its only build; the GPUs are there, its libraries do not use them. - GPUs asked, a GPU preset: the build for the GPUs of the machine it is pinned to, or, when it may run anywhere (or on a pool), of the workspace's eligible machines with as many GPUs as it asks for (any with GPUs when none has that many). AMD's build when most of those machines are AMD's, else NVIDIA's — a tie is NVIDIA's. Its GPUs are then asked of that vendor only, so a CUDA build never lands on an AMD GPU.
- No build for those GPUs: a preset with no AMD build where only AMD GPUs are fails to start: RAPIDS has no build for AMD GPUs, and the machines it may run on have AMD's: choose PyTorch or Hugging Face or vLLM, or an image of your own.
What a preset installs#
| Preset | At creation (onto the drive, once) | At every start (in the container) |
|---|---|---|
huggingface |
transformers==5.18.0, peft==0.21.2, datasets==5.0.1, accelerate==1.15.0, bitsandbytes==0.50.2 |
— |
cuda |
— | build-essential, cmake, python3, python3-pip, python3-venv |
They come before the runtime's own setup.
A notebook's runtime on an image without Jupyter Server installs
jupyter-server==2.21.1 and ipykernel==7.4.0 onto the drive at its first
start; the image needs Python with pip.
How each starts#
- Jupyter Docker Stacks presets (
python,minimal,datascience,pytorch-cuda,tensorflow-cuda) start a notebook's Jupyter Server through the image's own entrypoint, which gives/contentto the notebook userjovyanand runs Jupyter as that user. SSH into such a runtime logs in asjovyanby default. - Other presets and your own images run Jupyter Server directly: a preset as root, an image of your own as its own user.
- Environments (
shell,ide) run any image: the machine brings the SSH server (and the IDE) read-only, and the container runs as root so you may log in as any user the image has. The IDE needs an image built on glibc 2.28 or newer with libstdc++. - Spark (
spark) runs in local mode on the runtime's cores (spark.master local[<cores>]), its driver given 60% of the runtime's memory, its scratch space (SPARK_LOCAL_DIRS) on the drive under/content/.hesperus/env/<runtime>/spark-tmp.