Skip to content

Ledger de reservation GPU + planification hebdomadaire des trainings (ai-01 tenancier) #16737

Description

@myia-ai-01

Mandat user (2026-09-18)

« Oui on ouvre, et on laisse les agents décider en fonction de ce dont ils disposent. Les GPU devraient être gérées via le ledger de réservation que tu avais conçu et que je ne crois pas que tu utilises. On devrait avoir une gestion planifiée hebdomadaire de toutes les expériences et trainings qui vont être réalisés, et tu devrais en être le tenancier, chaque worker se chargeant des exécutions de sa machine en claimant les issues correspondantes. »

Constat — le ledger n'existe pas

Recherche exhaustive au f65e72d50f (code, issues, PRs, docs/, mémoires locales ai-01) :

  • Code : scripts/coordination/ ne contient que README.md et debt_ledger.py. Aucun hit pour gpu_ledger, gpu_reservation, reserve_gpu, gpu_lease, training_slot, gpu_claim. Le seul mécanisme GPU du dépôt est scripts/genai-stack/commands/gpu.py — un verrou de clocks nvidia mono-machine (undervolt lock), pas un ledger de flotte.
  • Issues/PRs : aucune issue de ledger de réservation GPU. L'écosystème ledger se limite à feat(coordination): deux ledgers partagés event-sourced pour dette issues et actions PR #16563 (umbrella) et feat(coordination): shared transport + pr-actions ledger (phase B) #16571 (phase B), tous deux issue-debt/pr-actions, aucune mention GPU.
  • Doc : docs/reference/cluster-agents.md porte la topologie (3x4090 ai-01, 3080+eGPU3090 po-2023) et une politique (« GPU 2 occupée 24/7 », CUDA_VISIBLE_DEVICES=2) — aucun mécanisme de réservation.

Il n'a donc jamais été écrit. Ce qui existe est une politique tenue de tête, ce qui explique exactement le symptôme observé : elle ne se planifie pas, elle ne s'audite pas, et une lane CPU ne peut pas savoir ce qui est libre.

Ce qui est demandé

1. Le ledger de réservation GPU — extension bornée de debt_ledger.py

L'organe existe déjà sur main (#16574) et son architecture est à dicts par kind. Ajouter un kind gpu-reservation demande : une constante, 5 entrées de dict (LEDGERS, LEDGER_WORKSPACES, ENTITY_FIELDS, LEDGER_FIELD_SPECS, TERMINAL_VALUES) et ses FieldSpec. Pas de refonte. Les garde-fous génériques (UTC explicite, actor/evidence/confidence obligatoires, refus des clés inconnues, refus d'écrire dans le repo ou sous $ROOSYNC_SHARED_PATH) s'appliquent tels quels.

Entité proposée : (machine, gpu_index). Champs : holder (lane), workload, started_at, expected_end, issue, state (held/released/stale).

Ce n'est pas un verrou dur. C'est un registre partagé qui rend visible qui occupe quoi — la discipline reste celle du claim, comme pour les lanes.

2. La planification hebdomadaire, dont ai-01 est le tenancier

Une passe hebdomadaire qui inscrit les expériences et trainings prévus, une issue par exécution, chaque worker claimant celles de sa machine. ai-01 tient le registre et le restitue ; il n'exécute pas à la place des lanes.

Le corollaire est ce que le mandat vise vraiment : une lane CPU qui ne peut pas prendre un grain training ne doit plus le découvrir en le tirant — le plan dit d'avance ce qui tourne où.

3. L'ouverture de l'accès

Les grains à gate de capacité cessent d'être réservés à la machine qui porte le matériel. Un worker sans GPU peut porter la préparation (dataset, config, protocole de validation) d'un training dont l'exécution est claimée par une lane équipée. C'est à l'agent de juger s'il peut prendre le grain, sur ce dont il dispose — pas à une table de routage de le décider pour lui.

Ce qui N'est PAS dans cette issue

La vision n'y est pas, et c'est délibéré : le mandat user la disjoint explicitement du GPU. Elle ne dépend pas de la machine mais du modèle qui anime la lane, et elle est traitée séparément (correction de .claude/rules/model-delegation.md, dont la section de routage visuel est fausse sur ce point).

Acceptance

  • debt_ledger.py déclare un kind gpu-reservation avec ses FieldSpec, tests inclus
  • Un dashboard dédié porte le ledger (LEDGER_WORKSPACES)
  • Une passe hebdomadaire ai-01 inscrit les exécutions prévues, une issue par exécution
  • docs/reference/cluster-agents.md renvoie au ledger au lieu de porter la politique de tête
  • Une lane CPU peut lire l'état d'occupation sans se connecter à la machine

Comment cette issue se réfute

Si le ledger existe déjà quelque part que je n'ai pas sondé — un post PROPOSAL sur un dashboard RooSync, une conversation inter-machines — le citer ici ferme l'issue en ramenant l'acquis plutôt qu'en le réécrivant.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions