PRISME France 2030 · Culture & IA

Protocole PRISME-Mesh — réseau edge décentralisé

Vérifier la maturitéAxe projetDoc. générale

Projet : PRISME — France 2030

Version : 0.1 (brouillon M12)

Statut : spécification technique + charte ESS — à valider CODIR (post-séminaire 29/07/2026) · COPIL + comité éthique IA (M1+)

Jalon : protocole signé M12 · registre opérationnel M18 · ≥ 3 nœuds M24

Complète : Axe entrepreneurial & edge §4 · IA fédérée Marty · Edge computing & Nœud IA Expérimental · Autonomie & outils souverains · F05 · 05 ia responsable

1. Objet et périmètre

1.1 Problème adressé

De nombreuses structures culturelles (compagnies émergentes, jeunes lieux, entrepreneurs de spectacles cat. 1–3) n'ont ni GPU ni administrateur système pour exécuter localement un petit modèle de langage spécialisé (SLM). À l'inverse, certaines structures (fabriques, scènes, hubs réseau) disposent de capacité de calcul inutilisée en dehors des créneaux de production.

PRISME-Mesh mutualise cette capacité sans centraliser les données métier — complément de l'inférence locale (Nœud IA POC / Serveur Outils Grainerie) et de l'apprentissage fédéré Marty (FedAvg).

1.2 Ce que PRISME-Mesh est — et n'est pas

PRISME-Mesh estPRISME-Mesh n'est pas
Orchestration de jobs d'inférence SLM en créneaux libres (y compris nocturnes)Plateforme cloud propriétaire
Réseau ESS à adhésion volontaireMarché spot commercial de GPU
Agents métier spécialisés en arrière-plan — latence réseau assuméeAgent conversationnel temps réel ni promesse d'accélération/facilitation GPAI
Extension du registre instances_federeesCopie centralisée des bases Baserow
Accès IA souveraine pour structures sans nœud localEnvoi de données vers hyperscaler US

1.3 Distinction avec l'apprentissage fédéré

MécanismeObjet échangéDonnées métier
Apprentissage fédéré (Marty FedAvg)Agrégats de poids / gradientsJamais — restent locales
PRISME-MeshJobs d'inférence (prompt + contexte minimal)Jamais centralisées — traitement sur nœud hub ou spoke avec données locales
Hub IA fixe (fabrique, CIRC-INO)Inférence mutualisée continueQuote-part réseau

Les trois mécanismes sont complémentaires et partagent la même gouvernance (charte F05, consentement, comité éthique IA).

1.4 Enjeux du réseau mesh edge — synthèse

Dans un mesh, aucun nœud n'est maître : la valeur du réseau dépend de huit registres indissociables. PRISME-Mesh les traite explicitement — c'est la condition pour passer de POC (TRL 3–4) à pilote filière (TRL 5–6).

#EnjeuRisque si négligéRéponse PRISME-Mesh
1Orchestration distribuéeChaos — jobs perdus, modèles incohérentsDécoupage en micro-jobs (inférence SLM, modes A/B/C) · mesh-orchestrator (files, scoring latence/charge/énergie) · heartbeat 30 s · gestion volatilité (file + retry · préemption jobs locaux) · profils marty-* versionnés
2Sécurité & confianceRéseau inutilisable — poisoning, fuiteOIDC fédéré (Authentik) · mTLS inter-hubs · charte F05 + révocation · pas de PII en logs · comité éthique IA · revue ANITI / B612 · interdiction centralisation données métier
3Performance & latencePromesse temps réel non tenue — déception vs GPAILatence inter-nœuds assumée — jobs asynchrones, files et créneaux libres (nuit) · routage proximité + GPU libre · vLLM / Hermes · batching · quantization SLM · pas d'objectif chat instantané · bench kWh/job vs GPAI (E5)
4GouvernanceMesh ingérable à l'échelleAdhésion volontaire ESS · créneaux share_windows · priorités publiques (spoke sans GPU · < 5 ETP · pépinière) · COPIL + comité éthique · pas de spot pricing
5InteropérabilitéSilos matériels et logicielsStack ouverte : OpenAI /v1, profils Marty, Docker PRISME-edge-minimal · registre mesh_nodes (capacités hétérogènes : none → 48 Go VRAM) · extension instances_federees Calendrier
6Économie du partageNœuds ne contribuent pasCrédit contributeur (heures GPU) · quote-part ESS transparente · tableau de bord kWh/jobs · pas d'enchères — alignement intérêt général
7Fiabilité du maillageEffondrement si nœuds partentTolérance aux pannes : file d'attente · retry exponentiel · ≥ 3 hubs (M24) · Le Filament (SLA infogérance) · bascule orchestrateur Serveur Outils Grainerie → serveur dédié (M18)
8Qualité des résultats IARéponses divergentes, biais locauxProfils restreints (marty-grainerie, marty-baserow, marty-calendarinterdit programmation artistique · métriques job (tokens, duration_ms, kwh_estimated`)

Fil conducteur : sans orchestration robuste (1) et confiance (2), le mesh devient chaotique ; sans gouvernance ESS (4) et incitations (6), il ne grandit pas ; sans fiabilité (7) et qualité (8), il n'est pas adoptable par des structures culturelles.

flowchart LR
  subgraph enjeux["8 registres"]
    O[1 Orchestration]
    S[2 Sécurité]
    P[3 Performance]
    G[4 Gouvernance]
    I[5 Interop]
    E[6 Économie]
    R[7 Fiabilité]
    Q[8 Qualité IA]
  end
  subgraph prisme["PRISME-Mesh"]
    ORC[Orchestrateur]
    CHR[Charte ESS F05]
    REG[Registre mesh_nodes]
  end
  O & P & R --> ORC
  S & G & E --> CHR
  I & Q --> REG

2. Charte ESS — gouvernance du réseau

2.1 Adhésion

RègleDétail
VolontariatOpt-in explicite par la direction de la structure
RévocabilitéDésinscription possible à tout moment — jobs en cours honorés puis arrêt
Types de nœudsHub (GPU contributif) · Spoke (consommateur) · Hybride (les deux)
Charte IASignature annexe F05 + présent protocole
InfogéranceRecommandée pour hubs — partenaire Le Filament (SLA documenté)
Expertise académiqueRevue protocole · banc d'essai — ANITI · espace B612 (Toulouse) — voir Partenariat ANITI

2.2 Créneaux de partage (hubs)

Le contributeur définit des fenêtres de disponibilité :

ParamètreExempleContrainte
share_windowsLun–Ven 22h–07h ; Sam–Dim 00h–23hPlages hors résidence / spectacle
max_concurrent_jobs2Limite charge GPU
priority_localtrueJobs locaux toujours prioritaires
preempt_mesh_jobstrueArrêt gracieux des jobs mesh si charge locale

2.3 Priorisation des bénéficiaires

Ordre de priorité de l'orchestrateur (en cas de contention) :

  1. Structure sans nœud GPU local
  2. Structure < 5 ETP équivalent numérique
  3. Parcours entrepreneur émergent (pépinière CIRC-INO)
  4. Membres contributeurs (crédit mesh)
  5. Autres membres réseau

2.4 Données et confidentialité

InterditAutorisé
Copie persistante des données métier sur le nœud distantInférence sur extrait minimal nécessaire au job
Entraînement sur données d'une autre structureAgrégats anonymisés (fédération Marty — protocole séparé)
Logs contenant PII en clairMétadonnées job : job_id, node_id, tokens, kWh, duration_ms

Modes d'inférence mesh :

ModeDescriptionUsage
A — Prompt seulTexte déjà anonymisé / génériqueClassification tags, reformulation neutre
B — Contexte localDonnées lues sur le spoke ; seul le prompt compilé transite chiffréAssistant admin avec périmètre restreint
C — Modèle vers spokeHub pousse adaptateur LoRA ; inférence sur CPU/GPU spokeStructures avec matériel léger

2.5 Modèle économique ESS

ÉlémentPrincipe
Quote-part réseauCotisation annuelle ESS — barème progressif selon taille structure
Crédit contributeurHeures GPU offertes → crédit consommation mesh
Pas de spot pricingTarifs publiés · pas d'enchères
TransparenceTableau de bord : kWh partagés, jobs, quote-part

3. Architecture technique

3.1 Vue d'ensemble

flowchart TB
  subgraph spokes["Spokes — structures sans GPU"]
    S1["Compagnie émergente\nCalendrier + Baserow"]
    S2["Jeune lieu\nspoke léger Docker"]
  end

  subgraph control["Couche contrôle PRISME-Mesh"]
    REG["Registre nœuds\n(Baserow mesh_nodes)"]
    ORC["Orchestrateur\nmesh-orchestrator"]
    OIDC["Authentik / OIDC\nfédération identités"]
  end

  subgraph hubs["Hubs — capacité contributive"]
    H1["La Grainerie\nmarty — GPU 48 Go"]
    H2["Scène CIRC-INO\nhub secondaire"]
    H3["Le Filament\ninfogérance CHATONS"]
  end

  subgraph stack["Stack edge par hub"]
    VLLM["vLLM marty-llm\nOpenAI /v1"]
    HER["Hermes Gateway\nprofils marty-*"]
    MON["Monitoring\nkWh · GPU · SLA"]
  end

  S1 & S2 -->|HTTPS mTLS\nsoumission job| ORC
  ORC --> REG
  ORC --> OIDC
  ORC -->|route job| H1 & H2
  H1 --> VLLM & HER & MON
  H2 --> VLLM & HER
  H3 -.->|supervision| H1 & H2
  REG <-->|heartbeat · capacités| H1 & H2

3.2 Topologie logique — trois couches

┌─────────────────────────────────────────────────────────────────────────────┐
│ COUCHE 1 — Métier (par structure) │
│ Calendrier · Baserow · n8n · PostgreSQL — données ICC locales │
├─────────────────────────────────────────────────────────────────────────────┤
│ COUCHE 2 — PRISME-Mesh (mutualisation capacité) │
│ mesh-agent (spoke) · mesh-orchestrator · registre mesh_nodes │
├─────────────────────────────────────────────────────────────────────────────┤
│ COUCHE 3 — Inférence edge (hubs) │
│ vLLM · Hermes · profils marty-grainerie / marty-baserow / marty-calendar │
└─────────────────────────────────────────────────────────────────────────────┘

Héritage technique : le registre PRISME-Mesh étend la table Baserow instances_federees et l'API register déjà spécifiées dans SPEC_ARCHITECTURE_FEDEREE (Calendrier Grainerie).

3.3 Composants

ComposantRôleDéploiementJalon
mesh_nodes (Baserow)Registre : capacités, créneaux, statut, charte signéeHub central PRISMEM12
mesh-orchestratorFiles d'attente, routage, priorité, facturation ESSPhase 1 (M12–M18) : conteneur/service isolé sur Serveur Outils Grainerie (expérimentation) · Phase 2 (M18+) : serveur dédié type Nœud IA POC (stack mesh séparée du métier)M12 (exp.) → M18+ (prod.)
`mesh-agent (spoke) | Client léger — soumet jobs, reçoit résultats | Docker PRISME-edge-minimal | M18
mesh-hub-agentAgent sur nœud GPU — accepte jobs mesh, heartbeatNœud IA POC / hubs partenairesM12–M18
mesh-dashboardDispo, kWh, crédits, SLAIntégré Calendrier adminM24
Authentik / OIDC` | Identités fédérées inter-instances | Existant federation L1 | M12

3.4 Schéma réseau — flux de confiance

sequenceDiagram
  participant Spoke as Spoke (structure A)
  participant Orch as Orchestrateur
  participant Reg as Registre mesh_nodes
  participant Hub as Hub GPU (structure B)
  participant VLLM as vLLM / Hermes

  Spoke->>Orch: POST /api/mesh/jobs (JWT OIDC)
  Orch->>Reg: GET nœuds disponibles + créneaux
  Reg-->>Orch: liste hubs (GPU libre, latence, crédit)
  Orch->>Hub: POST /api/mesh/hub/execute (job chiffré)
  Hub->>VLLM: inférence SLM (profil marty-*)
  VLLM-->>Hub: completion
  Hub-->>Orch: résultat + métriques (tokens, kWh)
  Orch-->>Spoke: réponse + job_id
  Orch->>Reg: log métadonnées (sans PII)

3.5 Routage — algorithme (v0.1)

ENTRÉE : job (type, tokens_estimés, profil_marty, priorité_structure)
SORTIE : hub_id ou FILE_ATTENTE

1. Filtrer hubs : status=online · charte_valide · dans share_window
2. Exclure hubs : GPU_util > seuil (80 %) · preempt_mesh_jobs déclenché
3. Scorer chaque hub :
   score = w1·(1/latence) + w2·crédit_disponible + w3·priorité_bénéficiaire
         - w4·empreinte_kWh_estimée
4. Sélectionner hub score max
5. Si aucun hub : mise en file · notification · retry exponentiel (max 3)
6. Timeout job : 120 s (inférence admin) · 600 s (batch)

Principe sobriété : favoriser le hub géographiquement le plus proche et le moins chargé — réemploi de capacité existante (référence E5 Shift Project).

3.6 Hébergement de l'orchestrateur (décision CODIR Q4)

L'orchestrateur mesh est séparé de la couche métier (Calendrier, Baserow, n8n) et de l'inférence GPU (Nœud IA POC). Deux phases :

PhasePériodeHébergementObjectif
ExpérimentationM12–M18Service isolé sur Serveur Outils Grainerie (conteneur dédié, ressources CPU/RAM limitées)Valider routage, file d'attente, API mesh — sans impacter la charge métier critique
ConsolidationM18+Serveur dédié type Nœud IA POC (rack, stack mesh autonome : orchestrateur + registre + dashboard)Production réseau · ≥ 3 nœuds contributifs · SLA documenté

Règles d'architecture :

Patrimoine existant : Nœud IA POC (GPU inférence, 10 707 € HT acquis) · Serveur Outils Grainerie (HP DL580 G7, 600 € HT) — voir budget mesh infrastructure.

4. Modèle de données — registre mesh_nodes

Extension de instances_federees :

ChampTypeDescription
node_idUUIDIdentifiant unique
structure_idlienStructure membre PRISME
node_typeenumhub · spoke · hybrid
gpu_modeltextex. RTX PRO 5000 48Go · none
vram_gbintVRAM disponible pour mesh
share_windowsJSONPlages cron (UTC)
max_concurrent_jobsintPar défaut 1
statusenumonline · offline · busy · maintenance
last_heartbeatdatetime< 60 s pour online
charte_signed_atdateSignature protocole
mesh_credit_hoursfloatCrédit contributeur (heures GPU)
endpoint_meshURLhttps://hub.example.net/api/mesh/hub
oidc_client_idtextClient fédéré Authentik

Heartbeat hub (toutes les 30 s) :

{
  "node_id": "uuid",
  "status": "online",
  "gpu_util_pct": 12,
  "vram_free_gb": 40,
  "mesh_jobs_active": 0,
  "local_jobs_active": 1,
  "accepting_mesh": true
}

5. API PRISME-Mesh (spécification v0.1)

Base URL orchestrateur : https://mesh.prisme.grainerie.net (indicatif — instance Serveur Outils Grainerie ou service dédié).

5.1 Enregistrement nœud

POST /api/mesh/nodes/register
Authorization: Bearer <JWT OIDC>
Content-Type: application/json

Corps (hub) :

{
  "node_type": "hub",
  "endpoint_mesh": "https://marty.grainerie.net/api/mesh/hub",
  "gpu_model": "RTX PRO 5000",
  "vram_gb": 48,
  "share_windows": [
    { "cron": "0 22 * * 1-5", "duration_hours": 9 },
    { "cron": "0 0 * * 0,6", "duration_hours": 24 }
  ],
  "max_concurrent_jobs": 2,
  "charte_version": "0.1"
}

Réponse : 201 Created + node_id

5.2 Soumission job (spoke)

POST /api/mesh/jobs
Authorization: Bearer <JWT OIDC>

Corps :

{
  "profile": "marty-grainerie",
  "mode": "A",
  "prompt": "Résume ce texte en 3 points…",
  "max_tokens": 512,
  "temperature": 0.2,
  "priority": "emergent",
  "callback_url": null
}

Réponse synchrone (hub disponible) :

{
  "job_id": "uuid",
  "status": "completed",
  "hub_node_id": "uuid",
  "completion": "…",
  "metrics": {
    "tokens_in": 120,
    "tokens_out": 89,
    "duration_ms": 2340,
    "kwh_estimated": 0.002
  }
}

5.3 Exécution côté hub

POST /api/mesh/hub/execute
Authorization: Bearer <mesh-internal-token>
X-Mesh-Job-Id: uuid

Le hub invoque marty-llm (completions) ou Hermes Gateway selon le profil — sans persister le prompt au-delà du TTL job (défaut 300 s).

5.4 Statut et métriques

GET /api/mesh/jobs/{job_id}
GET /api/mesh/nodes/{node_id}/metrics?period=30d

6. Sécurité

CoucheMesure
TransportTLS 1.3 · mTLS inter-nœuds hubs
AuthentificationOIDC fédéré (Authentik) — même socle que instances_federees
AutorisationRBAC : mesh:submit · mesh:contribute · mesh:admin
Chiffrement jobOptionnel v0.2 — AES-GCM clé éphémère par job (mode B)
JournalisationMétadonnées uniquement · rétention 90 jours
AuditRevue trimestrielle comité éthique IA
IsolationJobs mesh dans cgroup / conteneur éphémère · pas d'accès filesystem hub

Garde-fous IA (F05) :

7. Déploiement — package spoke

PRISME-edge-minimal (Docker Compose) — jalon M18 :

# Extrait indicatif — voir livrable Développer M18
services:
  mesh-agent:
    image: prisme/mesh-agent:0.1
    environment:
      MESH_ORCHESTRATOR_URL: https://mesh.prisme.grainerie.net
      OIDC_ISSUER: https://auth.grainerie.net
    volumes:
      - ./config:/config:ro
  # Optionnel — Calendrier spoke léger sans GPU

Le spoke n'expose pas de port GPU — il délègue l'inférence au mesh.

8. Scénario type — compagnie émergente

flowchart LR
  subgraph emer["Compagnie émergente (spoke)"]
    CAL["Calendrier simplifié"]
    AG["mesh-agent"]
    DATA["Données locales\nBaserow"]
  end

  subgraph mesh["PRISME-Mesh"]
    O["Orchestrateur"]
  end

  subgraph hub["La Grainerie (hub)"]
    M["Nœud IA POC GPU\n22h–7h libre"]
  end

  CAL -->|tâche métier différée| AG
  DATA -->|contexte local| AG
  AG -->|job mode B| O
  O -->|routage| M
  M -->|completion| O
  O --> AG

Étapes :

  1. Compagnie issue de la pépinière CIRC-INO — spoke déployé (M18).
  2. Besoin : résumer un compte rendu de répétition (mode A — texte déjà anonymisé) — job déposé, pas d'échange conversationnel.
  3. mesh-agent soumet le job en arrière-plan — priorité emergent ; délai acceptable (file + routage mesh).
  4. Orchestrateur route vers Nœud IA POC (créneau 22h–7h, GPU à 12 %) — latence réseau assumée.
  5. Inférence marty-grainerie — notification à la fin du traitement ; relecture humaine si besoin.
  6. Métriques observatoire : 0,002 kWh vs ~0,2 kWh GPAI cloud (ordre de grandeur E5).

9. Jalons et critères d'acceptation

JalonMoisLivrableCritère d'acceptation
P0 — ProtocoleM12Ce document + charte signéeValidation CODIR + comité éthique IA
P1 — RegistreM12Table mesh_nodes + API register≥ 1 hub (Grainerie) enregistré
P2 — Hub agentM18mesh-hub-agent sur Nœud IA POCHeartbeat + 10 jobs tests réussis
P2bis — Orchestrateur exp.M12–M18mesh-orchestrator sur Serveur Outils Grainerie (service isolé)API + routage test · 10 jobs internes
P3 — Orchestrateur prod.M18+Bascule serveur dédié type Nœud IA POCRoutage + file d'attente opérationnels · SLA
P4 — SpokeM18mesh-agent dans edge-minimal1 spoke pilote (compagnie émergente)
P5 — RéseauM24≥ 3 nœuds contributifsGrainerie + 2 partenaires (CIRC-INO, Le Filament)
P5bis — Revue ANITIM12–M18Avis expert + campagne tests B612Recommandations intégrées protocole · ≥ 10 scénarios synthétiques
P6 — DashboardM24Métriques kWh / créditsExport observatoire PRISME

10. Indicateurs (F08)

IndicateurCible M36
Nœuds PRISME-Mesh contributifs≥ 3
Heures GPU mutualisées documentées≥ 500 h (ordre de grandeur)
Jobs mesh complétés avec succès≥ 1 000
Structures spokes sans GPU local≥ 5
Bench kWh/job mesh vs GPAI cloud1 fiche publiée (Observer)

11. Annexes

Annexe A — Charte d'adhésion (modèle)

Annexe B — Profils Marty autorisés sur le mesh (v0.1)

ProfilCas d'usage meshInterdit
marty-grainerieReformulation, résumé adminDécisions RH définitives
marty-baserowSuggestions champs, tagsExport masse cross-structure
marty-calendarIntentions calendrierProgrammation artistique

Annexe C — Références techniques

12. Formulation dossier (Word §5 Innovation)

13. Contrôles avant publication M12