GPU Compute / Recipe
Audio and transcription jobs
Run Whisper batch transcription or audio processing pipelines as one-off GPU jobs. Billing stops when the script exits — no persistent endpoint needed for occasional workloads.
npm install -g badgr-cli then badgr login. Setup guide →Batch transcription with Whisper
Run a Python script that transcribes a folder of audio files. Pass model size and paths via --env:
badgr run python transcribe.py \ --gpu RTX_4090 \ --env WHISPER_MODEL=large-v3 \ --env AUDIO_DIR=./audio \ --env OUTPUT_FILE=transcripts.json
A typical transcribe.py using faster-whisper:
import os, json
from pathlib import Path
from faster_whisper import WhisperModel
model = WhisperModel(
os.environ.get("WHISPER_MODEL", "large-v3"),
device="cuda",
compute_type="float16",
)
audio_dir = Path(os.environ.get("AUDIO_DIR", "./audio"))
results = []
for path in audio_dir.glob("*.mp3"):
segments, info = model.transcribe(str(path))
text = " ".join(seg.text for seg in segments)
results.append({"file": path.name, "language": info.language, "text": text})
print(f"Done: {path.name}")
output = os.environ.get("OUTPUT_FILE", "transcripts.json")
with open(output, "w") as f:
json.dump(results, f, indent=2)
print(f"Wrote {len(results)} transcripts to {output}")Use a pre-built transcription image
Run a container that already has faster-whisper and CUDA set up. Pass model size and input/output paths via --env:
badgr run \ --image ghcr.io/my-org/whisper-batch:latest \ --gpu RTX_4090 \ --env WHISPER_MODEL=large-v3 \ --env MANIFEST_URL=https://storage.example.com/manifest.json \ --env OUTPUT_BUCKET=my-transcripts
Detach and check logs later
Use --detach for large batches so you don't need to keep your terminal open:
# Launch and return immediately badgr run python transcribe.py \ --gpu RTX_4090 \ --env WHISPER_MODEL=large-v3 \ --detach # Check progress when ready badgr logs <deployment-id>
Options
--gpu RTX_4090Recommended for Whisper — fits large-v3 at 24 GB VRAM--image <ref>Custom container with faster-whisper or whisper.cpp--env KEY=VALUESet environment variables (model size, paths, etc.) — repeatable--detachReturn job ID immediately, don't stream logs--max-runtime <min>Auto-stop after N minutes (recommended to cap spend)--max-cost <$>Auto-stop when spend reaches this amountNext steps