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.

Developer setting up CI pipeline with GitHub Actions and Hugging Face Jobs on cloud infrastructure Software Concept Art

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.

  1. Acessa huggingface/jobs-actions-dispatcher e clica Duplicate this Space.
  2. Configura:
    • Owner: seu user ou org do HF
    • Name: jobs-actions-dispatcher
    • Hardware: cpu-upgrade (recomendado; cpu-basic pode hibernar e perder webhooks)
  3. 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"

Hugging Face Jobs dispatcher running on server with GPU and CPU hardware flavors Algorithm Concept Visual

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.

Developer monitoring real-time CI logs from Hugging Face Jobs on laptop terminal Dev Environment Setup

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

  1. Testa outros sabores de hardware (A10G, H200) para treino de ML.
  2. Monta datasets ou modelos do Hugging Face como volumes para acelerar o CI.
  3. Explora a CLI hf jobs para 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!

Este conteúdo foi elaborado com o auxílio de ferramentas de IA, com base em fontes confiáveis, e revisado pela nossa equipe editorial antes da publicação. Não substitui o aconselhamento de um profissional especializado.