Por que migrar seu CI para Hugging Face Jobs?
Vamos ser sinceros: GitHub Actions é prático, mas tem limites. Runners genéricos, sem GPU, e manutenções que travam seu pipeline. No Trackio, a gente precisava de CI confiável para testes unitários (CPU) e também testes CUDA (GPU) – sem criar nosso próprio runner.
Hugging Face Jobs resolve isso: computação serverless com hardware flexível (CPU, T4, A10G, H200). A mágica é conectar o GitHub Actions via um dispatcher pequenino. Resultado:
- Testes CPU caíram de 1m40s para 1m10s (~30% mais rápido)
- Testes GPU rodam em 45s numa T4
- Usamos imagens Docker customizadas (Playwright, CUDA)
- Logs em tempo real no próprio GitHub Actions
Bora montar isso? Olha só o passo a passo que a gente usou no Trackio. E se quiser ver outro exemplo de computação serverless, dá uma olhada no artigo sobre Data Commons MCP no Google Cloud.

Passo 1: Criar o Dispatcher Space
O dispatcher é um Space Docker que recebe webhooks do GitHub (workflow_job.queued) e dispara Jobs no Hugging Face. Cria ele primeiro porque o GitHub App precisa da URL do webhook.
- Acessa huggingface/jobs-actions-dispatcher e clica Duplicate this Space.
- Configura:
- Owner: seu user ou org do HF
- Name:
jobs-actions-dispatcher - Hardware:
cpu-upgrade(recomendado;cpu-basicpode hibernar e perder webhooks)
- Depois de buildar, o Space mostra a URL do webhook:
https://SEU-HF-NAMESPACE-jobs-actions-dispatcher.hf.space/webhook
Alternativa via CLI
export HF_NAMESPACE=seu-user-hf-ou-org
export SPACE_ID="$HF_NAMESPACE/jobs-actions-dispatcher"
hf repo duplicate huggingface/jobs-actions-dispatcher "$SPACE_ID" \
--type space \
--flavor cpu-upgrade \
--exist-ok
export DISPATCHER_URL="https://${HF_NAMESPACE}-jobs-actions-dispatcher.hf.space"

Passo 2: Criar e Instalar o GitHub App
No UI do seu dispatcher Space, coloca o repositório (SEU-ORG/SEU-REPO) e clica Create GitHub App. Escolhe um nome qualquer. A tela final vai te dar os comandos CLI para subir as credenciais.
Importante: Salva seu token do Hugging Face (com permissão para lançar Jobs) como secret HF_TOKEN no dispatcher Space.
Depois instala o App no repositório pelas configurações do GitHub:
https://github.com/organizations/SEU-ORG/settings/installations
Passo 3: Atualizar o Workflow
Muda o runs-on de ubuntu-latest para um dos labels do dispatcher:
name: CI no HF Jobs
on:
pull_request:
push:
branches: [main]
workflow_dispatch:
jobs:
test:
runs-on: hf-jobs-cpu-upgrade
steps:
- uses: actions/checkout@v4
- run: echo "Olá do Hugging Face Jobs!"
Para GPU, usa hf-jobs-t4-small ou hf-jobs-a10g-small.
Passo 4: Escolher a Imagem Docker Certa
O ubuntu-latest do GitHub já vem cheio de ferramentas. No HF Jobs você escolhe a imagem. No Trackio:
- Testes CPU:
mcr.microsoft.com/playwright:v1.60.0-jammy(já vem com Node, Playwright, ffmpeg, git) - Testes GPU:
nvidia/cuda:12.4.0-runtime-ubuntu22.04
Define a imagem no workflow com container::
jobs:
test:
runs-on: hf-jobs-cpu-upgrade
container:
image: mcr.microsoft.com/playwright:v1.60.0-jammy
steps:
- uses: actions/checkout@v4
- run: npx playwright test
Passo 5: Verificar e Monitorar
Pelo terminal:
gh run list --repo SEU-ORG/SEU-REPO --limit 5
hf jobs ps --namespace "$HF_NAMESPACE"
hf spaces logs "$SPACE_ID"
Os logs aparecem em tempo real no GitHub Actions. Também dá pra baixar localmente:
hf jobs logs > logs.txt
Quer entender mais sobre padrões de comunicação distribuída? Dá uma olhada no Tutorial de PyTorch Distributed Communication.

Limitações e Cuidados
- Cold start: Se o dispatcher Space hibernar (no
cpu-basic), o primeiro webhook pode atrasar. - Custo: HF Jobs não é gratuito; fica de olho no consumo. Uma T4 por 45s custa menos de 1 centavo.
- Imagens: Nem toda imagem Docker funciona de primeira. Talvez precise instalar pacotes (
apt-get update && apt-get install -y git). - Rede: Egress limitado; downloads grandes podem ser mais lentos que no GitHub.
Próximos Passos
- Testa outros sabores de hardware (A10G, H200) para treino de ML.
- Monta datasets ou modelos do Hugging Face como volumes para acelerar o CI.
- Explora a CLI
hf jobspara configurações avançadas (variáveis de ambiente, secrets).
Esse setup te dá a flexibilidade do GitHub Actions com a potência do Hugging Face Jobs. Começa com um workflow simples, depois parte para GPU e imagens customizadas. Mão na massa!