Provision GPU/CPU virtual machines and run workloads on them
VMs are dedicated, long-lived machines you SSH into. Use them for training jobs that span hours, interactive development, or anything that doesn’t fit a one-shot serverless run.
Provisioning typically takes 1–3 minutes. The CLI polls automatically; the API exposes GET /vms/{vm_id}/status so you can poll yourself.
# Authenticate (one-time)lyceum auth login# See what hardware is available right nowlyceum vm availability# Start an A100 instancelyceum vm start \ -h a100 \ -k "$(cat ~/.ssh/id_ed25519.pub)"# CLI waits for the VM to become ready and prints its IP.# Then SSH in (the username depends on the image — see vm status output).ssh root@<ip>
To launch with multiple GPUs, add -g 2 (or 4, 8 if the profile supports it). To return immediately without waiting, add -a / --async.For the full set of available profiles and flags see the VM page and Launch an Instance.
lyceum vm start -h a100 -k "$(cat ~/.ssh/id_ed25519.pub)"
2
Connect and set up the environment
ssh root@<ip># On the VMnvidia-smi # verify GPU is visiblegit clone https://github.com/your-org/ml-project.gitcd ml-projectpython -m venv venv && source venv/bin/activatepip install -r requirements.txt
3
Run training inside tmux
tmux new -s trainingpython train.py --epochs 100 --batch-size 32# Detach with Ctrl+B, D — reattach later with: tmux attach -t training
4
Pull results and terminate
# From your local machinescp root@<ip>:~/ml-project/model.pt ./# Tear the VM downlyceum vm terminate <vm_id> -f
Local disk on a VM is wiped on termination. Anything you want to keep should be scp’d off, pushed to git, or written to your storage bucket before terminating.
VMs bill from the moment they enter running until you terminate them, regardless of whether anything is executing. Run lyceum vm list periodically to make sure you don’t have idle instances.