Trabajos GPU en GitHub Actions

Use la acción nodelodge/run para ejecutar un comando en una GPU desde un workflow, con un tope de costo estricto, y detener siempre la máquina.

La acción nodelodge/run ejecuta un comando en una máquina GPU Node Lodge Secure desde un workflow de GitHub Actions. Lanza la sesión, ejecuta su comando por SSH con la salida en el log del job, sube un directorio de salida como artefacto y siempre detiene la sesión, incluso cuando el job falla o se cancela.

Antes de empezar

  1. En la consola, abra Keys y cree una clave para el workflow con los alcances workloads:read y workloads:write.
  2. Defina sus Spending limits (por sesión y total). Node Lodge rechaza cualquier sesión que superaría alguno, pida lo que pida el workflow.
  3. En su repositorio, añada la clave como secreto con el nombre NODELODGE_API_KEY (Settings, Secrets and variables, Actions).

Un workflow

name: Fine-tune on a GPU

on:
  workflow_dispatch:

permissions:
  contents: read

jobs:
  train:
    runs-on: ubuntu-latest
    timeout-minutes: 120
    steps:
      - uses: actions/checkout@v4

      - name: Train on Node Lodge
        id: gpu
        uses: nodelodge/run@v1
        with:
          api-key: ${{ secrets.NODELODGE_API_KEY }}
          max-cost-usd: '5'
          min-vram-gb: '48'
          image: pytorch/pytorch:2.5.1-cuda12.4-cudnn9-runtime
          upload-dir: training
          command: |
            pip install -r requirements.txt
            python train.py --epochs 3 --out output/
          timeout-minutes: '60'
          output-dir: output
          artifact-name: model

La carpeta training de su repositorio se copia a la máquina, el comando se ejecuta allí en el contenedor de PyTorch y la carpeta output vuelve como el artefacto model de la ejecución. Las salidas del paso indican el id de la sesión, el código de salida del comando y lo que costó la sesión.

Entradas

Entrada
api-key Obligatoria. La clave, desde un secreto.
max-cost-usd Obligatoria. Lo máximo que puede costar la ejecución.
command Obligatoria. Se ejecuta con sh -c en el directorio de trabajo.
offer, o gpu y min-vram-gb Qué máquina: un id de oferta, o la máquina reservable más barata que coincida.
image Ejecuta el comando en este contenedor, con el directorio de trabajo en /workspace. Sin ella, el comando se ejecuta en la propia máquina.
timeout-minutes Lo máximo que puede durar el comando (60 por defecto).
upload-dir Una carpeta del repositorio que se copia antes a la máquina.
output-dir, artifact-name La carpeta que se sube después del comando, incluso si falla, y el nombre de su artefacto.
allow-cidr La dirección autorizada a llegar a la máquina por SSH. Por defecto: la dirección del propio runner.

Cómo el costo se mantiene bajo su tope

  • max-cost-usd es el presupuesto de la sesión, reservado sobre su crédito al lanzarla. Node Lodge lo compara con su crédito disponible y los límites de la clave, y rechaza la ejecución antes de iniciar nada si no cabe.
  • La facturación sigue el tiempo real en que la máquina está en marcha, y Budget Guard detiene la sesión antes de que se gaste el presupuesto.
  • El comando se detiene al llegar a timeout-minutes (código de salida 124) y la sesión se detiene justo después. Paga por el tiempo en marcha, y el resto del presupuesto se libera.
  • Un paso posterior detiene la sesión si el job se canceló o si la primera detención falló. Si eso también falla, el job falla y su log indica qué sesión detener en la consola.

Seguridad

  • La clave se enmascara en el log. Guárdela en un secreto y dé a cada workflow su propia clave con límites ajustados.
  • El par de claves SSH se crea para la ejecución y nunca sale del runner. Solo la dirección del runner puede llegar a la máquina.
  • Detener la sesión elimina la máquina y su disco. Todo lo que necesite debe estar en output-dir.

Para las claves de API y sus límites, consulte Inicio rápido de la API. Para controlar sesiones desde un agente de IA, consulte Use Node Lodge desde un agente de IA (MCP).

Última actualización

Los resultados aparecen mientras escribe. Las flechas permiten recorrerlos.