Before you start
Open Submit job under Training in the sidebar. You need a storage bucket first; without one the page sends you to your profile to create it.
Each step ends with a Continue to … button. The header has Back, Drafts and Discard.
Steps 1–4: name, training, federation, model
1. Name
Type a name such as food101-finetune. The wizard lowercases it, turns spaces into dashes and keeps only letters, digits, - and _. It shows the result and the workspace folder, jobs/<name>/. A name needs at least one letter or digit.
2. Training
Name and value pairs sent to every worker each round; your training function reads them. Add, remove or rename any of them, in the Fields view or as JSON.
Numbers stay numbers, and a value that starts with [ or { is read as JSON. The platform sets data_root, adapter_module, train_fn, validate_fn and out_dir_name itself, so don’t use those names.
3. Federation
Revert to defaults puts all five back.
4. Model
If you start from the model_def.py template, keep the defaults. Then either Continue to Advanced to review the generated files, or Skip Advanced to build the workspace with them as they are and go straight to step 6.
Step 5: Advanced (optional)
The three config files open in editors, filled in from steps 2–4. The two Python scripts are shown read-only.
Build workspace and continue writes the workspace to your bucket:
jobs/<name>/
├── scripts/
│ ├── custom_client_executor.py
│ ├── custom_persistor.py
│ └── model_def_wrapper_template.py ← your starting model_def.py
├── configs/
│ ├── config_fed_client.json
│ ├── config_fed_server.json
│ └── meta.json
├── requirements/
│ └── requirements.txt
├── shards/ ← your zips, in step 6
└── model/ ← optional checkpoint, in step 6model_def_wrapper_template.py is a starter model_def.py with your hyperparameters filled in. Save it as model_def.py, add your model and training function, and upload it in step 6. How to write it: Port a centralized recipe to FL.
Step 6: Validate
Five cards, one per folder. Each shows Needs files, a file count or Empty; Upload or Browse opens that folder, where you can add files.
Continue to Launch unlocks once Scripts, Configs, Requirements and Dataset Shards each hold a file. A few problems show up later, so check them yourself:
- A missing
model_def.pygets a red warning here but doesn’t block you. - Only
.zipfiles count as shards. The card says how many workers that means. - More than one
.ptin Base Model is rejected when you launch.
How to split and zip your data: Dataset format & sharding.
Step 7: Launch
You pick a GPU type, not single machines. The job gets one worker of that type per shard, the cheapest free ones. Prices are per worker per hour.
- Search GPUs, Filters, sort by price or by VRAM, and refresh. The list also refreshes itself every 20 seconds.
- Available lists GPU types with free workers, All every type. Only my machines keeps the GPUs you own.
- Each card shows the price, VRAM × GPUs per worker, vCPU and RAM, and how many are free. It greys out when it falls below your filters or every worker is busy.
Filters
All optional. Nothing is picked for you; a filter only greys out GPU types that fall short.
While you drag, the modal counts how many idle workers and central servers still match. Active filters show as chips above the grid. What to set for your model: Choosing hardware.
Price and balance
The Summary shows the GPU you picked, its price per worker and the Total per hour, billed while the job runs. Under it, your balance and how many hours it covers at that rate; Top up adds funds. Launch training job unlocks when the GPU type you picked has a free worker for every shard and your balance hasn’t run out.
When nothing fits
- Order GPUs asks a provider to reserve GPUs in your name. You launch on them later from My orders.
- If no central server meets your minimums, the page says so and offers Order a central server. One reserved for you shows as Reserved for you, and your jobs use it first. See Central servers.
After launch
An overlay follows the launch and ends on Job launched with the job name and id. View live status opens the job page; Submit another job starts a new wizard.
Drafts
- The wizard saves a draft each time you press Continue or Skip Advanced. Drafts live in this browser; another browser or device won’t see them.
- A draft keeps the job name and the step you reached. Steps 2–4 return to their defaults when you resume, so check them again; configs you already built load from your bucket.
- Resume from Saved drafts on the first page or from Drafts in the wizard header. The trash icon deletes one.
- Discard deletes the current draft and returns to the first page. Launching removes the draft too.