APIs de geração: Replicate, fal.ai, RunPod, Modal
- ⬜🎬 Video generation: Sora, Runway Gen-4, Kling, Veo(Diffusion Models & Geração Multimodal)
Recomendamos completar os pré-requisitos antes de seguir, mas nada te impede de continuar.
O cenário — quando NÃO rodar a GPU própria
A pergunta certa não é "qual GPU comprar?", é "vale comprar GPU?". Em 2026, com APIs maduras e preços competitivos, a maior parte dos times indie/SaaS roda em provider especializado. Ganha velocidade, não gerencia driver CUDA, escala automaticamente. Perde controle e custo unitário em alto volume.
Os 4 grandes em 2026
| Provider | Foco | Pricing típico | Cold-start |
|---|---|---|---|
| Replicate | Catálogo amplo, marketplace de modelos | US$0.0005-0.0023/s + por modelo | 5-30s (cold), <1s (warm) |
| fal.ai | Low-latency, realtime, WebSocket | US$0.001-0.003/s | ~1-3s (otimizado) |
| RunPod Serverless | Bare-metal GPU on-demand, Docker | US$0.0001-0.0008/s GPU + storage | ~10-60s (cold) |
| Modal | Python-native, DX excepcional | US$0.0006-0.003/s + ergonomia | ~3-15s |
Replicate em 5 linhas
import Replicate from 'replicate';
const replicate = new Replicate({ auth: process.env.REPLICATE_API_TOKEN });
const output = await replicate.run(
'black-forest-labs/flux-schnell:bf53bdb9...',
{ input: { prompt: 'a cyberpunk dolphin riding a hovercraft, neon-lit, 8k' } }
);
// output é array de URLs com a imagem geradafal.ai — streaming realtime
import { fal } from '@fal-ai/client';
fal.config({ credentials: process.env.FAL_KEY });
// Modo subscribe (WebSocket streaming de progress)
const result = await fal.subscribe('fal-ai/flux/dev', {
input: { prompt: 'a serene mountain lake at dawn', image_size: 'landscape_16_9' },
onQueueUpdate: (update) => {
if (update.status === 'IN_PROGRESS') {
console.log('logs:', update.logs?.map(l => l.message));
}
},
});
console.log(result.data.images[0].url);Modal — Python-native
import modal
app = modal.App('my-flux-app')
image = (
modal.Image.debian_slim()
.pip_install('torch', 'diffusers', 'transformers')
)
@app.function(image=image, gpu='A100', timeout=300)
def generate(prompt: str) -> bytes:
from diffusers import FluxPipeline
pipe = FluxPipeline.from_pretrained('black-forest-labs/FLUX.1-dev')
image = pipe(prompt).images[0]
import io
buf = io.BytesIO()
image.save(buf, format='PNG')
return buf.getvalue()
# Deploy: modal deploy my_app.py
# Chama via @app.function como endpoint REST automáticoA pergunta certa, segundo o módulo, não é qual placa comprar, e sim se vale comprar. O que se ganha e o que se perde ao usar um provedor especializado?
RunPod — bare-metal serverless
# handler.py (Docker)
import runpod
def handler(event):
prompt = event['input']['prompt']
# Seu código de inferência aqui
return {'image_url': '...'}
runpod.serverless.start({'handler': handler})
# Build Docker, push para registry, criar endpoint serverless no RunPod
# Chama via REST: POST https://api.runpod.ai/v2/{endpoint_id}/runsyncDecisão prática
📋 Qual provider para qual caso?
Cada um brilha em um eixo. Evite religião de stack.
Alt: Realtime UX (image gen <3s) — fal.ai
Alt: Catálogo amplo + protótipos — Replicate
Alt: Time Python sério, deploy rápido — Modal
Alt: Custo mínimo em escala, Docker comfort — RunPod
Alt: Volume sustentado >12h/dia — GPU própria ou reserved (Lambda Labs, Vast.ai)
Patterns de produção
Perguntas frequentes
❓ API de geração ou GPU própria?
❓ Por que a primeira chamada demora tanto?
❓ Como controlar custo de geração de imagem?
Fixando
Por que armazenar o resultado indexado por uma combinação de prompt, semente e modelo?
Para gerações que passam de alguns segundos, por que usar retorno por chamada de volta em vez de esperar a resposta?
Terminou de ler?
Marcar como concluído registra o XP, mantém sua sequência e coloca 3 cartas deste módulo na fila de revisão espaçada.
Próximos passos sugeridos
Temas deste módulo
Discussão
Carregando comentários…