Architecture expérimentale : deux DGX Spark, DeepSeek-V4-Flash, n8n et Hermes
Avancé10 min de lectureIA privée / locale

Architecture expérimentale : deux DGX Spark, DeepSeek-V4-Flash, n8n et Hermes

Comment évaluer une solution communautaire expérimentale qui exécute DeepSeek-V4-Flash sur deux DGX Spark, avec n8n pour les opérations déterministes et Hermes pour les tâches qui exigent du jugement.

Ce que vous saurez faire

Le service de DeepSeek-V4-Flash sur deux Spark est une solution communautaire expérimentale, et non une recette de production de NVIDIA ou de vLLM. Validez la version exacte avant d’ajouter n8n et Hermes, et soumettez toute action irréversible à une personne.

Enregistré uniquement dans ce navigateur.
Dans cet article

Voici une architecture de laboratoire plausible après l’achat d’un second DGX Spark : une inférence locale pour un grand modèle, une automatisation reliée aux systèmes de l’entreprise et un environnement d’exécution pour l’agent. Il ne s’agit pas d’une solution clé en main prise en charge par un fournisseur.

La version défendable est plus étroite. Vous évaluez quatre couches qui doivent rester séparables :

  1. Interconnexion : deux systèmes Spark reliés pour l’inférence distribuée, selon la documentation de NVIDIA sur les clusters et le guide pour connecter deux Spark.
  2. Serveur de modèle expérimental : une solution communautaire compatible avec l’API OpenAI qui exécute DeepSeek-V4-Flash, ou sa variante DSpark avec décodage spéculatif, sur les deux nœuds.
  3. Automatisation déterministe : n8n pour les webhooks, les planifications, les écritures dans le CRM, les e-mails et Slack, la validation et les étapes de décision humaine.
  4. Environnement d’exécution pour les tâches de jugement : Hermes Agent pour le tri, la rédaction, l’investigation et l’utilisation d’outils qui exigent une mémoire et un raisonnement en plusieurs étapes, avec la documentation officielle du serveur API et la documentation officielle des webhooks.

L’association de n8n et d’Hermes décrite dans cet article illustre une intégration ; il ne s’agit pas d’un parcours clé en main documenté ou pris en charge par l’un ou l’autre fournisseur. Lorsqu’un flux doit récupérer le résultat de l’agent dans n8n, utilisez le serveur API d’Hermes avec authentification par jeton porteur. L’adaptateur de webhooks HMAC d’Hermes constitue une surface distincte d’entrée d’événements : il déclenche un agent et remet son résultat à une destination configurée, mais ne définit pas de contrat général de réponse synchrone pour n8n.

Une cinquième couche est facultative : OpenClaw pour proposer des conversations par Telegram, Slack ou un autre canal, éventuellement lancé par NemoClaw et OpenShell lorsque vous avez besoin de règles d’isolation. NemoClaw est actuellement un projet alpha en accès anticipé, pas un logiciel prêt pour la production. Aucune de ces couches n’est nécessaire pour les trois flux décrits plus loin.

Ne laissez pas une boucle d’agent envoyer automatiquement des e-mails aux clients, déposer des documents juridiques, modifier l’infrastructure de production ou effectuer des paiements. Faites passer toute action irréversible par une étape de validation humaine jusqu’à disposer de journaux, de garanties d’idempotence et d’un nombre suffisant d’exécutions examinées pour faire confiance au parcours.

Ce que DeepSeek-V4-Flash change sur deux Spark

DeepSeek-V4-Flash est un modèle à mélange d’experts qui compte 284B paramètres au total, dont 13B activés, et dont la fiche officielle indique une fenêtre de contexte de 1M jetons. Les poids du modèle Instruct utilisent le format FP4 pour les experts routés et FP8 ailleurs. Cette combinaison est importante sur Spark pour trois raisons :

  • Le nombre de paramètres activés maintient le coût du décodage à un niveau raisonnable par rapport aux modèles denses dont la taille totale annoncée est comparable.
  • Le contexte long peut servir aux agents qui traitent des portions de dépôt, des historiques de tickets ou des ensembles de règles, à condition de récupérer les bons éléments et de continuer à vérifier les affirmations.
  • Le point de contrôle DSpark reprend le même modèle et lui ajoute un module de décodage spéculatif. L’exemple de sa fiche officielle utilise un nœud GB300 doté de quatre GPU, pas deux Spark ; le rapport communautaire vLLM présenté ci-dessous emploie le point de contrôle hors DSpark sur deux systèmes GB10.

Considérez les débits publiés en jetons par seconde et les contextes maximaux comme des résultats propres à une configuration, et non comme des garanties pour votre câble, votre pilote, votre conteneur ou vos paramètres de concurrence. Les fiches officielles des modèles ne décrivent aucun déploiement validé sur deux Spark ; l’exemple DSpark utilise un nœud GB300 doté de quatre GPU. Lors de la nouvelle vérification du 2026-08-10, le ticket vLLM nº 40969 encore ouvert signalait un blocage après la sixième ou la septième requête sur deux systèmes GB10, avec une version figée de vLLM utilisant des graphes CUDA FULL_AND_PIECEWISE, le préremplissage par segments, Marlin MoE, un cache KV FP8 et TP=2. Ce constat concerne cette configuration, pas tous les déploiements. N’adoptez cette solution que comme une expérience aux versions figées, assortie d’une solution de repli.

Architecture de référence

                    ┌─────────────────────────────┐
   Forms/CRM/Git ──►│ n8n (validate, branch, HITL) │──► Slack / CRM / email
                    └──────────────┬──────────────┘
                                   │ HTTPS + bearer auth
                                   ▼
                    ┌─────────────────────────────┐
                    │ Hermes (memory, tools, draft)│
                    └──────────────┬──────────────┘
                                   │ OpenAI-compatible /v1
                                   ▼
              ┌────────────────────────────────────────┐
              │ Spark A ◄── QSFP / RoCE ──► Spark B    │
              │ experimental community TP=2 model path │
              └────────────────────────────────────────┘

Voici les règles de conception qui évitent de rester au stade de la démonstration :

CoucheResponsabilitésNe doit pas prendre en charge
n8nDéclencheurs, schémas, nouvelles tentatives, écritures dans les SaaS, validationsUn accès général au shell sur le réseau local
HermesClassification, rédaction, étapes de recherche, utilisation d’outilsDes actions silencieuses sur les systèmes de production
Serveur de modèleRéception et génération des jetonsLes identifiants des systèmes métier
OpenClaw (facultatif)Canaux de conversation avec les personnes et listes d’autorisationUn accès racine à l’hôte sans isolation

Configurez Hermes, ainsi que les nœuds d’IA de n8n si vous les utilisez, avec le point de terminaison du cluster comme URL de base compatible avec l’API OpenAI. Conservez les clés d’API sur le réseau local ou le VPN ; n’exposez pas le port vLLM sur l’internet public.

Liste de contrôle pour la mise en service, dans cet ordre

1. Interconnexion des deux Spark

Suivez le guide NVIDIA, pas des informations invérifiables :

  • Même nom d’utilisateur sur les deux nœuds.
  • Un câble QSFP entre les ports ConnectX-7 correspondants. Le playbook de NVIDIA indique que la bande passante complète est atteignable avec un seul câble, et ne documente aucun gain de débit apporté par un second câble entre les deux mêmes systèmes.
  • Un adressage L3 et une configuration Netplan réservés à la liaison rapide ; conservez le 10 GbE ou le Wi-Fi pour l’administration et l’accès à Internet.
  • SSH sans mot de passe entre nœuds.
  • Vérifiez que les interfaces apparaissent Up, à l’aide d’ibdev2netdev et des étapes indiquées par NVIDIA, avant de rechercher des erreurs NCCL.

Cluster Assistant de NVIDIA Sync peut configurer ConnectX-7 et SSH pour les topologies prises en charge ; il n’installe pas la pile d’inférence à votre place.

2. Serveur de modèle

  • Sélectionnez une configuration communautaire clairement identifiée qui fige le conteneur ou la version, la pile CUDA, les correctifs vLLM, les commandes de lancement et les limites connues. N’assemblez pas une commande de production à partir de fragments de cet article.
  • Vérifiez que cette configuration prend explicitement en charge vos deux nœuds GB10 et le point de contrôle exact DeepSeek-V4-Flash. Un parallélisme de tenseurs de taille 2 reste ici une hypothèse à tester, pas une promesse officielle de prise en charge.
  • Exposez /v1/models et /v1/chat/completions uniquement sur une interface privée.
  • Consignez la longueur maximale de contexte réellement configurée, le nombre maximal de séquences simultanées, le type de données du cache KV et l’activation éventuelle du décodage spéculatif.
  • La documentation actuelle d’Hermes exige un contexte de modèle configuré d’au moins 64K jetons. Un profil de service à contexte inférieur ne démontre pas sa compatibilité avec la version actuelle d’Hermes ; configurez et soumettez à un essai prolongé un profil d’au moins 64K avant de le connecter.

Testez des requêtes courtes, longues, répétées et simultanées avant de connecter des agents. Le problème signalé sur deux Spark apparaît après plusieurs requêtes ; un seul « hello » ne prouve donc presque rien. Cette solution ne peut pas être considérée comme prête pour la production tant qu’un essai prolongé réalisé avec des versions figées n’a pas réussi sur votre matériel.

3. Hermes

  • Installez Hermes au moyen de son guide officiel de démarrage rapide, puis configurez le fournisseur du modèle avec l’URL de base privée compatible avec l’API OpenAI.
  • Pour les flux de requête-réponse ci-dessous, activez le serveur API, définissez une API_SERVER_KEY robuste, conservez-le sur une interface privée et vérifiez GET /health sur le port documenté par défaut, 8642. Utilisez /v1/responses pour obtenir un résultat direct, ou /v1/runs et l’interrogation de son état pour une tâche longue.
  • Si votre cas d’usage exige l’entrée d’un événement et la remise du résultat ailleurs, utilisez l’adaptateur de webhooks distinct : routes nommées, HMAC V2 horodaté, identifiants de requête pour la déduplication et port par défaut 8644. Ne confondez pas son accusé de réception avec le résultat de l’agent.
  • Interdisez l’accès général au shell jusqu’à disposer d’une liste d’autorisation et d’une personne qui surveille les journaux. La clé API autorise l’accès aux outils de l’agent, pas seulement au texte du modèle.

Sur DGX Spark, NemoClaw peut exécuter Hermes dans OpenShell avec des règles portant sur le système de fichiers, le réseau et les processus. Considérez-le comme un parcours d’évaluation alpha, pas comme une garantie de sécurité pour la production.

4. n8n

  • Auto-hébergez n8n sur le même réseau de confiance, ou sur le VPN. Suivez les modèles décrits dans les points de terminaison locaux compatibles avec l’API OpenAI dans n8n et dans l’idempotence et la validation humaine des flux d’IA n8n.
  • Pour transmettre à Hermes une requête dont n8n attend la réponse dans les flux ci-dessous, configurez le nœud HTTP Request officiel de n8n avec des identifiants de type Bearer et des délais d’expiration explicites. Conservez l’enregistrement durable d’idempotence métier dans n8n ou dans le système métier. Le serveur API d’Hermes met en cache pendant cinq minutes les réponses associées à une Idempotency-Key, mais cette fenêtre de transport limitée ne remplace pas la déduplication durable du flux de travail. Si vous choisissez délibérément le parcours de webhook distinct d’Hermes, le nœud Crypto de n8n peut produire le HMAC, mais les octets signés et les en-têtes d’horodatage V2 doivent respecter exactement le contrat de webhook d’Hermes. La transmission par webhook entre n8n et Hermes illustre une conception, pas une intégration officielle des fournisseurs.

Trois charges de travail candidates à l’évaluation

Cas A : tri privé des demandes d’assistance

Problème : Les tickets contiennent des messages de clients que vous ne souhaitez pas transmettre à un fournisseur public de modèles. Leur tri exige néanmoins du jugement : gravité, domaine du produit, détection des doublons et projet de réponse.

Flux :

  1. Le webhook du service d’assistance transmet le ticket à n8n.
  2. n8n valide le schéma, retire les secrets tels que les jetons et les numéros de carte bruts, puis déduplique selon l’identifiant du ticket.
  3. n8n enregistre une clé d’idempotence au niveau du flux, puis envoie une charge utile minimale au serveur API privé d’Hermes selon un contrat de prompt support-triage restreint et versionné, avec authentification par jeton porteur.
  4. Hermes appelle DeepSeek-V4-Flash en local et renvoie une réponse. n8n analyse l’objet demandé {severity, product, confidence, draft, needs_human} et le valide par rapport au schéma ; tout résultat incorrect ou incomplet est soumis à une revue humaine.
  5. n8n sépare les cas : une confiance faible ou needs_human exige une validation dans Slack ; une confiance élevée et une action autorisée ne permettent que la mise à jour des champs du ticket. Aucun envoi automatique tant que le flux n’a pas franchi cette étape de maturité.

Hypothèse à vérifier : les connecteurs n8n et un appel à l’API d’Hermes pourraient prendre en charge ce flux. Le point de terminaison du modèle reste sur le réseau privé, mais les outils sortants et les connecteurs SaaS franchissent toujours cette frontière et nécessitent un contrôle des sorties réseau. Évaluez si le contexte supplémentaire améliore le résultat et continuez à vérifier le brouillon.

À ne pas faire : laisser Hermes ouvrir des URL arbitraires trouvées dans le ticket sans liste d’autorisation appliquée par un proxy, en raison du risque d’injection d’instructions.

Cas B : assistant de recherche interne à long contexte

Problème : Les juristes, les responsables de l’exploitation ou les responsables techniques doivent « lire ces 40 PDF ou cette partie du dépôt monolithique et produire une note structurée » sans téléverser le corpus vers un modèle de langage proposé en SaaS.

Flux :

  1. Une personne dépose un dossier de travail, ou n8n surveille une boîte de réception sécurisée.
  2. n8n rassemble les métadonnées et les résultats de la recherche documentaire ; autre possibilité, les outils d’Hermes lisent un chemin ou un index RAG autorisé.
  3. Hermes soumet à DeepSeek-V4-Flash une consigne de recherche en plusieurs étapes assortie d’un format de citation explicite.
  4. n8n valide la structure de la réponse et la place dans une file de revue. Exigez pour chaque affirmation un chemin source et le passage concerné ; une personne l’accepte ou la rejette.

Pourquoi V4-Flash : sa fenêtre de contexte officielle de 1M jetons et son mécanisme efficace d’attention sur contexte long sont précisément l’intérêt recherché. Toutefois, une grande fenêtre de contexte ne garantit pas l’exactitude. La qualité de la recherche documentaire et le contrôle des citations importent davantage que le nombre maximal de jetons.

À ne pas faire : déposer automatiquement des rapports réglementaires ou des résumés médicaux. Limitez le système à la lecture et à la rédaction ; les documents doivent être signés par des professionnels habilités.

Cas C : investigation opérationnelle permanente avec accès par messagerie

Problème : L’équipe d’astreinte veut « surveiller ces alertes, enquêter à partir des journaux et proposer l’étape suivante du guide d’exploitation », puis poser des questions de suivi dans Telegram ou Slack, sans donner au modèle un accès racine à l’ensemble du parc.

Flux :

  1. Une tâche planifiée dans n8n ou un webhook PagerDuty collecte les signatures des alertes.
  2. Hermes enquête au moyen d’outils en lecture seule, tels qu’une API d’interrogation des journaux et des points de terminaison d’état, avec des identifiants explicitement autorisés.
  3. Hermes renvoie une hypothèse, les éléments qui l’étayent et la prochaine commande conseillée, sans l’exécuter.
  4. Un canal OpenClaw ou NemoClaw facultatif permet à une personne d’astreinte d’interroger un agent configuré séparément, avec appairage et listes d’autorisation selon les principes de sécurité d’OpenClaw. Ne supposez pas qu’OpenClaw et Hermes partagent une session ou un espace de mémoire.

Hypothèse concernant les deux Spark : plusieurs investigations simultanées, ou un modèle et un contexte plus grands, peuvent justifier le second nœud. Comparez cette solution à un seul Spark et à une inférence gérée en mesurant la file d’attente, la qualité, la latence et le coût total, tout en tenant compte des exigences de confidentialité.

À ne pas faire : déclencher automatiquement les corrections. Les commandes proposées doivent être confiées à une personne ou à un exécuteur de procédures strictement limité et doté de sa propre authentification.

Modes de défaillance à concevoir dès le jour un

DéfaillanceSymptômeAtténuation
Mauvaise configuration de NCCL ou RoCEBlocage ou repli sur TCP, avec une très forte latenceLimiter NCCL aux interfaces RoCE ; valider l’interconnexion avant les agents
Contexte excessifUne longue tâche prive les autres de ressourcesPlafonner max_model_len et le nombre de requêtes simultanées ; mettre les tâches en file dans n8n
Abus de l’entréeUn attaquant déclenche HermesJeton porteur ou HMAC avec horodatage ; réseau privé ; limitation du débit
Injection d’instructionsLe texte du ticket remplace les règlesInstructions système propres à chaque route ; listes d’outils autorisés ; aucun HTML brut transmis au shell
Écritures silencieuses dans un SaaSMises à jour en double dans le CRMClés d’idempotence ; validation humaine avant envoi
Dérive de la configurationLa recette cesse de fonctionner après la mise à jour du conteneurFiger les condensats des images ; effectuer des contrôles élémentaires dans l’intégration continue

À quoi ressemble « terminé »

Vous ne pouvez affirmer que le périmètre testé fonctionne que lorsque :

  1. Une version figée pour deux Spark réussit des essais prolongés, répétés et simultanés, y compris le scénario de défaillance signalé dans le projet amont ; consignez le nombre exact d’exécutions, les tailles de contexte et le taux d’erreur.
  2. Le chemin n8n → Hermes → modèle est authentifié de bout en bout et journalisé ; n8n valide le schéma applicatif renvoyé.
  3. Au moins un flux nommé fonctionne avec une validation humaine de chaque message externe et réussit son jeu d’évaluation défini à l’avance.
  4. Vous disposez d’une procédure écrite de retour en arrière : désactiver l’appel de n8n à Hermes, revenir à des modèles de texte utilisés uniquement par n8n ou configurer Hermes avec un modèle local plus petit.

Exercice

Choisissez le cas A. Implémentez uniquement la validation du webhook dans n8n, un contrat de prompt versionné transmis par le serveur API d’Hermes avec authentification par jeton porteur, un enregistrement d’idempotence au niveau du flux, un appel au modèle local, la validation du schéma de réponse et un aperçu du brouillon. Ne connectez pas l’envoi d’e-mails. Utilisez un jeu d’évaluation représentatif et approuvé, assez vaste pour couvrir les cas ordinaires comme les cas rares. Définissez à l’avance les critères d’accord sur la gravité, d’affirmations non étayées, de quantité de retouches, de latence et d’échec. À partir de ces éléments, décidez si un second Spark ou V4-Flash se justifie.

Pour aller plus loin

À lire ensuite

Continuez sur le même parcours d'apprentissage avec les prochains articles pratiques.