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
- Dans la console, ouvrez Keys et créez une clé pour le workflow avec les portées
workloads:readetworkloads:write. - 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.
- 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-usdest 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).