Modal is a serverless platform for running Python code on cloud GPUs. It provides:
Two patterns:
@app.function decoratorTopicReferenceBasic StructureGetting StartedGPU OptionsGPU SelectionData HandlingData DownloadResults & OutputsResultsTroubleshootingCommon Issues
bash
pip install modal
modal token set --token-id <id> --token-secret <secret>
python
import modal
app = modal.App("my-training-app")
image = modal.Image.debian_slim(python_version="3.11").pip_install(
"torch",
"einops",
"numpy",
)
@app.function(gpu="A100", image=image, timeout=3600)
def train():
import torch
device = torch.device("cuda")
print(f"Using GPU: {torch.cuda.get_device_name(0)}")
# Training code here
return {"loss": 0.5}
@app.local_entrypoint()
def main():
results = train.remote()
print(results)
python
import modal
from modal import Image, App
# Inside remote function
import torch
import torch.nn as nn
from huggingface_hub import hf_hub_download
ScenarioApproachQuick GPU experimentsgpu="T4" (16GB, cheapest)Medium training jobsgpu="A10G" (24GB)Large-scale traininggpu="A100" (40/80GB, fastest)Long-running jobsSet timeout=3600 or higherData from HuggingFaceDownload inside function with hf_hub_downloadReturn metricsReturn dict from function
bash
# Run script
modal run train_modal.py
# Run in background
modal run --detach train_modal.py