Des tâches GPU dans GitHub Actions

Utilisez l'action nodelodge/run pour exécuter une commande sur un GPU depuis un workflow, sous un plafond de coût strict, avec arrêt garanti de la machine.

L’action nodelodge/run exécute une commande sur une machine GPU Node Lodge Secure depuis un workflow GitHub Actions. Elle lance la session, exécute votre commande en SSH avec sa sortie dans le journal du job, téléverse un dossier de sortie comme artefact, et arrête toujours la session, même si le job échoue ou est annulé.

Avant de commencer

  1. Dans la console, ouvrez Keys et créez une clé pour le workflow avec les portées workloads:read et workloads:write.
  2. Définissez ses Spending limits (par session et au total). Node Lodge refuse toute session qui en dépasserait une, quoi que demande le workflow.
  3. Dans votre dépôt, ajoutez la clé comme secret nommé 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

Le dossier training de votre dépôt est copié sur la machine, la commande s’y exécute dans le conteneur PyTorch, et le dossier output revient comme artefact model de l’exécution. Les sorties de l’étape donnent l’identifiant de la session, le code de sortie de la commande et le coût de la session.

Entrées

Entrée
api-key Obligatoire. La clé, tirée d’un secret.
max-cost-usd Obligatoire. Le coût maximal de l’exécution.
command Obligatoire. S’exécute avec sh -c dans le répertoire de travail.
offer, ou gpu et min-vram-gb La machine : un identifiant d’offre, ou la machine réservable la moins chère qui correspond.
image Exécute la commande dans ce conteneur, avec le répertoire de travail sur /workspace. Sans elle, la commande s’exécute directement sur la machine.
timeout-minutes La durée maximale de la commande (60 par défaut).
upload-dir Un dossier du dépôt à copier d’abord sur la machine.
output-dir, artifact-name Le dossier téléversé après la commande, même en cas d’échec, et le nom de son artefact.
allow-cidr L’adresse autorisée à joindre la machine en SSH. Par défaut : l’adresse du runner lui-même.

Un coût toujours sous votre plafond

  • max-cost-usd est le budget de la session, réservé sur votre crédit au lancement. Node Lodge le vérifie par rapport à votre crédit disponible et aux limites de la clé, et refuse l’exécution avant tout démarrage s’il ne tient pas.
  • La facturation suit le temps réel d’exécution de la machine, et Budget Guard arrête la session avant que le budget soit dépensé.
  • La commande s’arrête à timeout-minutes (code de sortie 124), et la session s’arrête aussitôt après. Vous payez la durée réelle, et le reste du budget est libéré.
  • Une étape finale arrête la session si le job a été annulé ou si le premier arrêt a échoué. Si elle échoue aussi, le job échoue et son journal indique la session à arrêter dans la console.

Sécurité

  • La clé est masquée dans le journal. Gardez-la dans un secret, et donnez à chaque workflow sa propre clé, avec des limites serrées.
  • La paire de clés SSH est créée pour l’exécution et ne quitte jamais le runner. Seule l’adresse du runner peut joindre la machine.
  • L’arrêt supprime la machine et son disque. Tout ce dont vous avez besoin doit se trouver dans output-dir.

Pour les clés d’API et leurs limites, voir Démarrage rapide de l’API. Pour piloter des sessions depuis un agent d’IA, voir Utiliser Node Lodge depuis un agent d’IA (MCP).

Dernière mise à jour

Les résultats apparaissent pendant la saisie. Les flèches permettent de les parcourir.