본문으로 건너뛰기
cccskills
무료GitHub에 공개

modal-serverless-gpu

Plataforma GPU serverless em nuvem para executar workloads de ML. Use quando você precisar de acesso GPU sob demanda sem gerenciamento de infraestrutura, fazendo deploy de modelos de ML como APIs, ou executando jobs em batch com auto-scaling.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

연동 도구DiscordHugging Face
설치 방법 보기

포함된 파일(3)

  • SKILL.md9.0 KB
  • references/advanced-usage.md10.6 KB
  • references/troubleshooting.md10.3 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

Modal Serverless GPU

Guia completo para executar workloads de ML na plataforma GPU serverless em nuvem do Modal.

Quando usar Modal

Use Modal quando:

  • Executar workloads de ML intensivos em GPU sem gerenciar infraestrutura
  • Fazer deploy de modelos de ML como APIs com auto-scaling
  • Executar jobs de processamento em batch (treinamento, inferência, processamento de dados)
  • Precisar de preços GPU pay-per-second sem custos de ociosidade
  • Prototipando aplicações de ML rapidamente
  • Executar jobs agendados (workloads tipo cron)

Funcionalidades-chave:

  • GPUs Serverless: T4, L4, A10G, L40S, A100, H100, H200, B200 sob demanda
  • Nativo em Python: Define infraestrutura em código Python, sem YAML
  • Auto-scaling: Escale a zero, escale para 100+ GPUs instantaneamente
  • Cold starts sub-segundo: Infraestrutura baseada em Rust para lançamentos rápidos de containers
  • Cache de containers: Camadas de imagem em cache para iteração rápida
  • Web endpoints: Faça deploy de funções como APIs REST com atualizações sem downtime

Use alternativas em vez disso:

  • RunPod: Para pods de execução mais longa com estado persistente
  • Lambda Labs: Para instâncias GPU reservadas
  • SkyPilot: Para orquestração multi-cloud e otimização de custos
  • Kubernetes: Para arquiteturas complexas multi-serviço

Quick start

Instalação

pip install modal
modal setup  # Abre navegador para autenticação

Hello World com GPU

import modal

app = modal.App("hello-gpu")

@app.function(gpu="T4")
def gpu_info():
    import subprocess
    return subprocess.run(["nvidia-smi"], capture_output=True, text=True).stdout

@app.local_entrypoint()
def main():
    print(gpu_info.remote())

Execute: modal run hello_gpu.py

Endpoint básico de inferência

import modal

app = modal.App("text-generation")
image = modal.Image.debian_slim().pip_install("transformers", "torch", "accelerate")

@app.cls(gpu="A10G", image=image)
class TextGenerator:
    @modal.enter()
    def load_model(self):
        from transformers import pipeline
        self.pipe = pipeline("text-generation", model="gpt2", device=0)

    @modal.method()
    def generate(self, prompt: str) -> str:
        return self.pipe(prompt, max_length=100)[0]["generated_text"]

@app.local_entrypoint()
def main():
    print(TextGenerator().generate.remote("Hello, world"))

Conceitos principais

Componentes-chave

ComponentePropósito
AppContainer para funções e recursos
FunctionFunção serverless com especificações de compute
ClsFunções baseadas em classe com lifecycle hooks
ImageDefinição de imagem de container
VolumeArmazenamento persistente para modelos/dados
SecretArmazenamento seguro de credenciais

Modos de execução

ComandoDescrição
modal run script.pyExecuta e sai
modal serve script.pyDesenvolvimento com live reload
modal deploy script.pyDeploy persistente em nuvem

Configuração de GPU

GPUs disponíveis

GPUVRAMMelhor para
T416GBInferência com orçamento limitado, modelos pequenos
L424GBInferência, arquitetura Ada Lovelace
A10G24GBTreinamento/inferência, 3.3x mais rápido que T4
L40S48GBRecomendado para inferência (melhor custo/performance)
A100-40GB40GBTreinamento de modelos grandes
A100-80GB80GBModelos muito grandes
H10080GBMais rápido, FP8 + Transformer Engine
H200141GBAuto-upgrade do H100, 4.8TB/s de largura de banda
B200LatestArquitetura Blackwell

Padrões de especificação de GPU

# GPU única
@app.function(gpu="A100")

# Variante de memória específica
@app.function(gpu="A100-80GB")

# Múltiplas GPUs (até 8)
@app.function(gpu="H100:4")

# GPU com fallbacks
@app.function(gpu=["H100", "A100", "L40S"])

# Qualquer GPU disponível
@app.function(gpu="any")

Imagens de container

# Imagem básica com pip
image = modal.Image.debian_slim(python_version="3.11").pip_install(
    "torch==2.1.0", "transformers==4.36.0", "accelerate"
)

# Baseado em CUDA
image = modal.Image.from_registry(
    "nvidia/cuda:12.1.0-cudnn8-devel-ubuntu22.04",
    add_python="3.11"
).pip_install("torch", "transformers")

# Com pacotes de sistema
image = modal.Image.debian_slim().apt_install("git", "ffmpeg").pip_install("whisper")

Armazenamento persistente

volume = modal.Volume.from_name("model-cache", create_if_missing=True)

@app.function(gpu="A10G", volumes={"/models": volume})
def load_model():
    import os
    model_path = "/models/llama-7b"
    if not os.path.exists(model_path):
        model = download_model()
        model.save_pretrained(model_path)
        volume.commit()  # Persistir mudanças
    return load_from_path(model_path)

Web endpoints

Decorator FastAPI endpoint

@app.function()
@modal.fastapi_endpoint(method="POST")
def predict(text: str) -> dict:
    return {"result": model.predict(text)}

App ASGI completo

from fastapi import FastAPI
web_app = FastAPI()

@web_app.post("/predict")
async def predict(text: str):
    return {"result": await model.predict.remote.aio(text)}

@app.function()
@modal.asgi_app()
def fastapi_app():
    return web_app

Tipos de web endpoint

DecoratorCaso de uso
@modal.fastapi_endpoint()Função simples → API
@modal.asgi_app()Apps FastAPI/Starlette completos
@modal.wsgi_app()Apps Django/Flask
@modal.web_server(port)Servidores HTTP arbitrários

Dynamic batching

@app.function()
@modal.batched(max_batch_size=32, wait_ms=100)
async def batch_predict(inputs: list[str]) -> list[dict]:
    # Inputs automaticamente agrupados em batch
    return model.batch_predict(inputs)

Gerenciamento de segredos

# Criar segredo
modal secret create huggingface HF_TOKEN=hf_xxx
@app.function(secrets=[modal.Secret.from_name("huggingface")])
def download_model():
    import os
    token = os.environ["HF_TOKEN"]

Agendamento

@app.function(schedule=modal.Cron("0 0 * * *"))  # Diariamente à meia-noite
def daily_job():
    pass

@app.function(schedule=modal.Period(hours=1))
def hourly_job():
    pass

Otimização de performance

Mitigação de cold start

@app.function(
    container_idle_timeout=300,  # Mantém aquecido por 5 min
    allow_concurrent_inputs=10,  # Processa requests concorrentes
)
def inference():
    pass

Melhores práticas para carregamento de modelos

@app.cls(gpu="A100")
class Model:
    @modal.enter()  # Executado uma vez no início do container
    def load(self):
        self.model = load_model()  # Carrega durante warm-up

    @modal.method()
    def predict(self, x):
        return self.model(x)

Processamento paralelo

@app.function()
def process_item(item):
    return expensive_computation(item)

@app.function()
def run_parallel():
    items = list(range(1000))
    # Distribui para containers paralelos
    results = list(process_item.map(items))
    return results

Configuração comum

@app.function(
    gpu="A100",
    memory=32768,              # 32GB RAM
    cpu=4,                     # 4 cores de CPU
    timeout=3600,              # 1 hora máximo
    container_idle_timeout=120,# Mantém aquecido 2 min
    retries=3,                 # Retry em caso de falha
    concurrency_limit=10,      # Máximo de containers concorrentes
)
def my_function():
    pass

Debug

# Teste localmente
if __name__ == "__main__":
    result = my_function.local()

# Ver logs
# modal app logs my-app

Problemas comuns

ProblemaSolução
Latência de cold startAumente container_idle_timeout, use @modal.enter()
GPU OOMUse GPU maior (A100-80GB), ative gradient checkpointing
Falha no build de imagemFixe versões de dependências, verifique compatibilidade CUDA
Erros de timeoutAumente timeout, adicione checkpointing

Referências

Recursos

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

Especialista em construir experiências 3D para a web - Three.js, React Three Fiber, Spline, WebGL e cenas 3D interativas. Cobre configuradores de produtos, portfólios 3D, websites imersivos e adição de profundidade às experiências web. Use quando: website 3D, three.js, WebGL, react three fiber, experiência 3D.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

artubss/SKILLS-CLAUDE-CODE112026년 5월 17일 업데이트

Quando o usuário quer planejar, projetar ou implementar um teste A/B ou experimento. Também use quando o usuário menciona "teste A/B", "split test", "experimento", "testar essa mudança", "copy variante", "teste multivariado" ou "hipótese". Para implementação de rastreamento, veja analytics-tracking.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

artubss/SKILLS-CLAUDE-CODE112026년 5월 17일 업데이트

Auditar e melhorar a acessibilidade web seguindo as diretrizes WCAG 2.1. Use quando solicitado para "melhorar acessibilidade", "auditoria a11y", "conformidade WCAG", "suporte a leitor de tela", "navegação por teclado" ou "tornar acessível".

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

artubss/SKILLS-CLAUDE-CODE112026년 5월 17일 업데이트

Testes e benchmarking de agentes LLM incluindo testes comportamentais, avaliação de capacidades, métricas de confiabilidade e monitoramento em produção—onde até os melhores agentes alcançam menos de 50% em benchmarks do mundo real. Use quando: testes de agentes, avaliação de agentes, benchmark de agentes, confiabilidade de agentes, teste de agentes.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

artubss/SKILLS-CLAUDE-CODE112026년 5월 17일 업데이트

Criar, gerenciar e orquestrar agentes de IA usando o CLI AI Maestro. Use quando o usuário pedir para "criar agente", "listar agentes", "deletar agente", "hibernar agente", "despertar agente", "instalar plugin", "mostrar agente", "reiniciar agente" ou qualquer tarefa de gerenciamento do ciclo de vida do agente.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

artubss/SKILLS-CLAUDE-CODE112026년 5월 17일 업데이트

Gerencie múltiplos agentes CLI locais via sessões tmux (iniciar/parar/monitorar/atribuir) com agendamento compatível com cron.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

artubss/SKILLS-CLAUDE-CODE112026년 5월 17일 업데이트

artubss의 스킬 모두 보기

이 스킬의 문제 신고