AI Fabric · Serverless GPUs for Python Opening gradually
You probably don't needan H100a GB300an H200a B200a GB200a B300an H100 NVLto train FLUX on your own images.to serve an LLM with a 256k context.to run a real-time voice agent.to run coding agents in parallel.to generate video from a prompt.to transcribe 10,000 calls.to fine-tune a 7B on your data.
LoRA on FLUX.1-devpeak 10.8 GiB€0.40/h interruptible
Gemma 4 26B in 4-bit2-way tensor parallel€0.80/h interruptible
import os, subprocess, bladekitapp = bladekit.app("moshi-voice-chat")image = (bladekit.Image.debian_slim(python_version="3.12") .apt_install("ffmpeg") .pip_install("moshi==0.2.4", "torch", "sphn","huggingface_hub"))# Full-duplex speech: it listens and talks at the same time.# A ~7B transformer and the Mimi codec, about 15 GB of VRAM.@app.web_server(startup_timeout=900, min_replicas=1, max_replicas=1)@app.function(gpu="RTX-A4500", image=image, secrets=[bladekit.Secret.from_name("hf-token")])defserve(): port = os.environ["FABRIC_SERVER_PORT"] subprocess.Popen(["python", "-m", "moshi.server", "--host", "0.0.0.0","--port", port, "--hf-repo", "kyutai/moshiko-pytorch-bf16", ])
import bladekitapp = bladekit.app("coding-agents")agent_image = (bladekit.Image.debian_slim(python_version="3.12") .apt_install("git", "nodejs", "npm"))@app.function(timeout=300)defrun_coding_agent(task: dict) -> dict:"""One coding agent, in its own gVisor sandbox."""with bladekit.Sandbox.create(image=agent_image) as sb: sb.exec("git", "clone", task["repo"], "/work/repo").wait() sb.write_file("/work/task.txt", task["prompt"].encode()) proc = sb.exec("your-agent", "/work/task.txt") proc.wait()return {"id": task["id"], "out": proc.stdout.read().decode()}@app.local_entrypoint()defmain(): tasks = [{"id": i, "prompt": f"Fix issue #{i}", "repo": REPO}for i in range(200)] results = list(run_coding_agent.map(tasks, return_exceptions=True))
As much GPU memory as one H100, split over four cards on one machine.
Weights only; 20% of memory left for the KV cache.
/
Billed by the minute.
Billed from container start to stop, including model loading and the five idle minutes before scale-down. Image pulls aren't billed. The idle timeout is configurable.
Replica billing
RTX A4500 · interruptible · €0.40 per hour · €0.0067 per minute
Billed€0.133320 min at €0.40/h
Select a phase for billing details.
What one replica costs, phase by phase (example)
Phase
Duration
Billed
Queued
3 s
—
Pulling image
41 s
—
Loading model
52 s
€0.0058
Serving
14 min 8 s
€0.0942
Idle
5 min
€0.0333
Stopped
until the next request
€0
Total
20 min billed
€0.1333
Illustration
Prices
NVIDIA RTX A4500 20 GB
€0.40per hour
interruptible · €0.70 non-interruptible
NVIDIA RTX 2000 Ada 16 GB
€0.20per hour
interruptible · €0.50 non-interruptible
CPU sandboxes and jobs
€0.05per vCPU, per hour
billed on requested vCPUs
Beta prices, excluding VAT, as of 22 October 2026. GPU prices include CPU and RAM. Interruptible is the default and can be reclaimed.
/
Included in the SDK.
your codeuploadedpip_install("diffusers", "peft")cachedapt_install("ffmpeg")cachedfabric/torchcatalog
Cached image builds
We build with BuildKit and cache the layers. Your code is uploaded separately, so editing it doesn't trigger a rebuild.
Download a model once into a Volume. New containers read it from disk.
v1v2v3rollbackv2 · live
Every deploy is a version
blade deploy numbers each release. blade app rollback brings an older one back.
Secrets from your environment
S3 buckets as directories
Live logs that resume
Estimated cost of each run
Queues and dicts between functions
FAQ
When do I need an H100?
For speed or large-scale training. We don't offer H100s today.
I'm coming from Modal. What changes?
Apps, functions, classes, images, volumes, .remote() and .map() mostly map directly. Check the GPU names, fabric/ images and endpoint auth. .spawn() queues calls on a single container; use .map() for parallel work.
Do I need a Dockerfile?
No. Start from fabric/torch, fabric/vllm or fabric/sglang and add packages in Python. Your own Dockerfile or registry image works too.
Which Python versions work?
The SDK requires Python 3.10 or later. With blade run, local Python must match the image version (3.12 by default, 3.13 available). blade deploy has no version-matching requirement.
Where does it run?
In France. Shadow operates the GPUs. Images and volumes are stored on OVHcloud. More in how we handle data.
How do I get access?
Install the SDK from PyPI. To run on the GPUs, request access and tell us what you want to run.