Training /Choosing hardware

Choosing hardware for training

VRAM per client by method, how many clients, and what the FL server needs before you submit.

What you choose

A training job runs on clients you pick and one FL server the platform picks.

What it isGPUWho picks it
Client (worker)One machine with one GPU that trains the whole model on its own shardyesYou, through the job’s requirements
FL serverHands out the model each round, collects every result, averages them. Trains nothingnoThe platform. See Central servers
TermMeaning
ShardOne zip of data per client. Shards = clients
RoundEvery client trains for local_epochs, the server averages, the next round starts from the average. The server waits for every client
Full fine-tuneUpdates every weight
LoRA / QLoRAFreezes the model and trains small adapters; QLoRA on a 4-bit base. The method sets memory and traffic more than model size does
One GPU per clientA multi-GPU client trains on one card today. Bigger models need a bigger card, not more cards

1. VRAM per client

Training holds weights, gradients, optimizer state and activations. Optimizer state dominates a full fine-tune; base weights dominate LoRA.

MethodBytes / param1B3B8B27B70B
Full fine-tune (Adam, mixed precision)~1616 GB48 GB128 GB432 GB1.1 TB
LoRA (bf16 base)~2.22 GB7 GB18 GB60 GB154 GB
QLoRA (4-bit base)~0.61 GB2 GB5 GB16 GB42 GB

Add 10–30% for activations with gradient checkpointing on (the examples turn it on). Activations grow with batch × sequence length, or batch × image size.

One client with…QLoRALoRAFull fine-tune
8–12 GB (T4, 3060, 4070)≤ 8B≤ 3BSmall CNNs, ViT-B, DenseNet
16–24 GB (5070 Ti, 3090, 4090, L4)≤ 14B; 30B tight≤ 8B≤ 1B
48 GB (A6000, L40S)≤ 32B; 70B tight≤ 14B≤ 2B
80–96 GB (H100, RTX PRO 6000)70B≤ 32B≤ 4–5B
141 GB (H200)70B with room~50B≤ 7B

Measured on the example jobs

Example jobModel, methodMin GPU
job_csgoYOLOv5 detection4 GB
job_classifyViT-B/16, full weights, batch 32 fp168 GB
job_medicalDenseNet121 at 224 px, batch 328 GB
job_embedEmbedding model fine-tune8 GB
job_llmPhi-3.5-mini (3.8B) LoRA12 GB
job_speechWhisper-small LoRA, 30 s audio12 GB
job_yolo11YOLO11m at 640 px, batch 1612 GB
job_diffusionSDXL LoRA24 GB
job_agentLlama-3.1-8B 4-bit + LoRA r16, 2,048 tokens24 GB
job_lm_scratchPythia-1B from scratch, bf1680 GB

Set the GPU memory minimum from this table plus activation headroom; the platform checks it on one card. Some families advise against 4-bit training: for Qwen3.5 use bf16 LoRA, which puts a 27B at ~56 GB.

2. How many clients

ForceRule
DataEach round should give every client ≥ ~50 optimizer steps: shard_size ÷ batch_size ≥ 50. Dataset and batch size cap the useful client count
TimeRounds wait for the slowest client. More clients, smaller shards, shorter rounds. Measured: DeepLab 63M took 3 days on 3 × A40 vs 9 days on 1 × RTX 5090, 47% cheaper
Where the data isIn a real federation each site that owns data is a client; the count is given

Mixing GPU models works: four runs across two GPU generations landed within 0.09 percentage points. The smallest card sets the model size (every client holds the whole model); the slowest sets the round time, so size shards by card speed. T4 and RTX 2080 Ti have no bf16 and train in fp16.

3. Disk, RAM and CPU per client

ResourceRule of thumbSubmit form
DiskBase weights + 2.5 × shard zip + checkpoints + 25 GB. An 8B base needs its 16 GB on every clientDisk
Host RAM2 × VRAM (data loaders, decoding)RAM
CPU4 cores for text; 8+ for images and audio, where decoding is often the bottleneck
DriverR570 or newer

4. The FL server

The training job’s central server. The platform picks it at submit. Each round it sends the current model to every client, waits for all of their results, averages them weighted by sample count, and starts the next round. It also reports the job’s status. It trains nothing and needs no GPU.

What it needs depends on what travels each round:

MethodServer RAMServer diskNetwork per round, N clients
LoRA / QLoRA, any base< 1 GBMBsN × 10–500 MB
Full weights~12 bytes per parameter2 copies of the model2 × N × 4 bytes per parameter
worked example · 8B full fine-tune, 8 clients
per round  = 2 × 8 × 4 bytes × 8B params = 512 GB
at 10 Gbps ≈ 7 minutes      at 1 Gbps ≈ over an hour
server RAM ≈ 12 bytes × 8B  ≈ 96 GB
SettingDefaultWhere you set it
Free RAM≥ 1 GBFilters → Central server RAM
Free diskNo minimumFilters → Central server disk
A whole server for this jobSharedFilters → Dedicated central server
A server only your jobs useNoneOrder a central server (workers step or Support)
  • LoRA and QLoRA at any model size: the defaults work.
  • Full weights above ~1B: set RAM to ~12 bytes per parameter, disk to two copies of the model, turn on dedicated, and raise the result timeout from its 300 s default.
  • Many clients or long runs: a reserved server keeps other jobs off it.

A server reserved for you is used first; otherwise the platform picks a shared one that meets your minimums. If none does, the launch stops and the wizard offers to order one.

warn
The FL server has no failover. If it goes down, the round is lost and the job fails; resubmit it.

5. Rounds, time and cost

Total optimizer steps decide quality. Match the centralized recipe:

formula
steps_per_round = shard_size ÷ batch_size
num_rounds      ≈ centralized_total_steps ÷ (steps_per_round × local_epochs)

wall-clock      ≈ rounds × (slowest client's local time + exchange)
cost            ≈ clients × GPU-hour price × wall-clock

Fewer local epochs and more rounds beat the reverse. Measured: job_classify at 4 clients × 5 rounds × 148 steps matched the centralized step budget and its accuracy (89.4% vs 89.1%).

Example jobs on their minimum GPUTypical wall-clock
Classification, small CNNs30–90 min
Speech, 3B-LLM LoRA3–6 h
YOLO11 on COCO6–10 h
SDXL LoRA8–12 h
8B QLoRA on 113k examples12–18 h

When a client can’t keep up

Rounds wait for every client, so one client’s failure fails the job.

What goes wrongWhat happensPrevent it with
A client runs out of VRAMIts process dies; after the 600 s heartbeat timeout the job failsGPU memory minimum with headroom; gradient checkpointing
One client is much slowerEvery round waits; the others idle and billSame VRAM tier; shards sized by card speed
A client’s disk fillsUnpacking or a checkpoint write failsDisk minimum (step 3)
A full-weight result misses the upload windowThe round result is rejected after 300 sRaise the result timeout; LoRA above ~1B
The FL server runs out of RAMAggregation dies~12 bytes per parameter of server RAM; dedicated
note
A one-client, one-round run of the exact recipe shows the real VRAM, step time and unpacked shard size for a few GPU-minutes.

By job type

TypeModelMethodPer clientPer-round transfer
LLM / agent tuningLlama-3.1-8B, Phi-3.5-miniQLoRA / LoRA24 GB / 12 GB10–25 MB
LLM, larger baseQwen3.5-27Bbf16 LoRA80–96 GB100–500 MB
Image classificationViT-B/16, DenseNet121Full weights8 GB~350 MB
DetectionYOLO11m, YOLOv5Full weights12 GB / 4 GB~80 MB
SegmentationDeepLabV3+ 63MFull weights8–12 GB~250 MB
EmbeddingsSentence-embedding modelFull weights8 GBSmall
SpeechWhisper-smallLoRA12 GB5–10 MB
Image generationSDXLLoRA24 GBTens of MB
Pretraining from scratchPythia-1B, ImageNet ResNetFull weights80 GB4 GB each way

Full-weight training is practical up to ~1B parameters, since weights travel in fp32 every round. Above that, use LoRA or QLoRA: the adapter is what you get back and what you serve.

Before you submit

The platform checks at submitYou check
VRAM on one cardyesThat you added activation headroom (step 1)
Disk and host RAM per clientyesThe numbers (step 3)
GPU generation and driveryesCompute 8.0+ for bf16 recipes
FL server RAM, disk, dedicatedyesFull-weight models (step 4)
Steps per round ≥ ~50noshard_size ÷ batch_size

Worked examples

GoalSizing
Fine-tune an 8B chat model on support tickets, 4 sitesQLoRA on 24 GB cards (the job_agent recipe). Four clients, one per site. LoRA traffic is MBs, so any server works. 12–18 h on 113k examples.
Classify 50k product photos across 3 warehousesViT-B full weights fit 8 GB; three clients on any 12 GB card; ~350 MB per client per round. 5 rounds of 1 epoch, under 2 hours.
Train a 27B model without 4-bitbf16 LoRA at ~56 GB: one 80 or 96 GB card per client (H100, RTX PRO 6000).
Full fine-tune a 7B model~112 GB of state per client doesn’t fit one card today. Use LoRA.