Sari la conținut

Run an event

Acest conținut nu este încă disponibil în limba selectată.

An event gives a group of people a GPU each for a fixed window: a workshop, a lab session, a hackathon or a competition. You schedule it, share a code, and razorBridge provisions the blades before the start time and removes them afterwards. Participants need only the CLI and the code; they are never billed.

This page is the organizer’s path from an empty account to a finished event. If you want to understand the machinery first, read GPU blades and sessions.

  • Credits. The organizing account pays for every blade the event provisions, and the event will not provision if the balance cannot cover it. Work out the cost first — see Manage an event budget — and request a grant with enough headroom.
  • A time window. Blades are created shortly before your start time and removed shortly after your end time, so book the window you actually need including setup.

In the web app, go to EventsCreate Event and fill in:

Field Notes
Name What participants will see, e.g. “ML Workshop — Spring term”
Event type Competition, Workshop, Hackathon, Lab or Other. Defaults to Workshop
Starts at / Ends at The window blades exist for
GPU Type The dropdown lists each GPU with its VRAM and current hourly rate
Max participants The cap on registrations. Defaults to 30
Users per blade How many participants share one GPU host. Defaults to 1
Docker image The environment participants land in. A CUDA + PyTorch image is prefilled
Cloud init script Optional shell script run on each blade at boot — install extra packages, fetch a dataset
Description Optional

Choose Create Event. razorBridge assigns a join code, computes a cost estimate, and moves the event to Scheduled.

Every event has an auto-generated join code — four letters, a hyphen, four digits — shown on the event’s detail page. You cannot choose it. Participants run:

Terminal window
rb event join ABCD-1234

Codes are not case-sensitive, so however it gets copied off a slide it will work. Put it on your first slide, in the course channel, or on the whiteboard.

Joining is possible while the event is a draft, scheduled, or already running, and stops as soon as the end time passes or the participant cap is reached. Joining does not create a blade — the schedule does that.

If you would rather not circulate a code, add people yourself through the API. There is no CSV upload in the web app; the endpoint takes JSON:

Terminal window
curl -X POST https://api.razorbridge.eu/v1/events/<event-slug>/roster/ \
-H "Authorization: Bearer $RB_TOKEN" \
-H "Content-Type: application/json" \
-d '{"participants": [
{"email": "alice@university.edu", "name": "Alice"},
{"email": "bob@university.edu"}
]}'

Only email is required; name defaults to the part before the @. The response reports how many were created and how many skipped — an entry is skipped if it duplicates someone already on the roster, has no usable address, or would exceed the participant cap. Re-posting the same list is safe.

The event slug is in the event’s URL, and rb event list prints it too. $RB_TOKEN is your session token — the access_token value in ~/.config/rb/token after rb auth login:

Terminal window
export RB_TOKEN=$(python -c "import json,pathlib;print(json.loads(pathlib.Path.home().joinpath('.config/rb/token').read_text())['access_token'])")

Session tokens last an hour, so re-run that line if a call starts returning 401.

You do not need to be present at the start:

  1. About 30 minutes before the start time, razorBridge picks capacity and provisions one blade per group of participants.
  2. Each participant is emailed when their GPU is ready, with the host, port, username and a ready-made SSH command. The password is not in the email — rb blade ssh fetches it.
  3. The event moves to Running.
  4. A few minutes after the end time, every blade is torn down and the account is charged once for the total runtime. The event becomes Completed and its cost card switches from Estimated to Final cost.

Two provisioning outcomes need an organizer’s attention:

  • Awaiting approval. If the GPU you chose is unavailable and only a more expensive option would satisfy the event, it waits for a decision rather than spending more than you agreed. The offer expires after about an hour, and the event then becomes Expired without provisioning.
  • Failed. An event whose account cannot cover the estimated cost at provisioning time, or for which no capacity can be found, is marked Failed. Nothing is charged, but nobody gets a GPU — which is why headroom in the balance matters.

The event detail page shows status, GPU, start and end times, the join code, the cost so far, and a participant table with each person’s name, email, assigned blade and last SSH login.

Use the last-SSH column to spot who needs help: someone who has never connected is usually stuck on installing the CLI or signing in, and Troubleshooting covers what they are most likely hitting.

An event that is already Running can be extended by 30, 60 or 120 minutes through the API:

Terminal window
curl -X POST https://api.razorbridge.eu/v1/events/<event-slug>/extend/ \
-H "Authorization: Bearer $RB_TOKEN" \
-H "Content-Type: application/json" \
-d '{"minutes": 60}'

The response confirms the new end time and the updated estimate. Participants keep working — their blades simply live longer — and the extra runtime is billed like the rest.

Blade disks are discarded at teardown and participants get no warning before an event ends. Say so at the start of the session, and ask people to copy results off as they go:

Terminal window
rb blade scp blade:~/outputs/metrics.json ./ # one file
rsync -avP rb-abc12345:~/outputs/ ./outputs/ # a directory, via rb blade config