Quick reference
Batch wait time and CPU preprocess worker count rarely matter once the GPU is the bottleneck — leave them at their defaults unless you’ve confirmed with the check in Is the GPU the bottleneck? that the GPU is not saturated.
Backend-specific knobs
- Local (in-process)
- Remote / AWS SageMaker
Inference(..., workers=...) at 1–2 — all slides share the same GPU, so higher values add threads without adding throughput. To use multiple local GPUs, run one process per GPU (CUDA_VISIBLE_DEVICES=<i>) rather than raising workers. See Cohorts.mask_threshold) and tile geometry (size/stride) are backend-agnostic — see Preprocessing tuning knobs.
For ready-to-copy starting configurations (single slide vs. cohort), see Recommended starting configurations on the Bioptimus SDK page.
Order-of-magnitude expectations
Order-of-magnitude expectations
As a rough reference, on a single mid-range datacenter GPU, embedding a typical whole slide (a few thousand tissue tiles) with the fp16 checkpoint takes on the order of one to a few minutes; fp32 is a few times slower. Tissue coverage and GPU model shift this substantially — measure your own workload (tiles processed ÷ wall-clock time) rather than relying on this as a guarantee.

