Un système multi-agent analyse un fichier STEP en 30 secondes et produit un rapport de fabricabilité complet, le tout en local grâce à une carte graphique surpuissante.
LE PROBLÈME RÉSOLU
Entrez dans n'importe quel petit atelier d'usinage CNC (commande numérique par ordinateur) et demandez au responsable comment il décide d'accepter une commande. La réponse est presque toujours la même : on imprime le plan, on lit chaque dimension à la main, on fait le tour de l'atelier pour vérifier quels Outils sont disponibles, on estime si les machines peuvent tenir les tolérances exigées, et on prend des notes sur un calepin. L'ensemble du processus prend 30 à 60 minutes par plan. Pour un atelier très occupé qui reçoit 10 à 20 demandes de prix par semaine, cela représente 5 à 20 heures de temps de responsable qualifié passées uniquement sur l'analyse de faisabilité.
Parfois, l'atelier se trompe. On accepte un travail, on commence la production et on découvre à mi-chemin que le bon taraud (l'outil pour faire des filetages) manque, ou que la fraiseuse ne peut pas respecter la tolérance sur une caractéristique critique. La pièce est bonne pour la poubelle. Le client est mécontent. Le temps machine est perdu.
MachinaCheck a été conçu pour éliminer totalement ce problème.
CE QUE FAIT MACHINACHECK
MachinaCheck est un système d'intelligence artificielle multi-agent. On télécharge un fichier STEP (le format standard de fichier 3D qu'envoient les clients aux ateliers), avec trois informations simples : le type de matériau, la tolérance requise et les éventuelles spécifications de filetage. Trente secondes plus tard, on obtient un rapport de fabricabilité complet qui indique exactement si la pièce peut être fabriquée, quels outils sont nécessaires, ce qui manque, et quelles actions mener avant de lancer la production.
Fini la lecture manuelle des plans. Fini les allers-retours dans l'atelier. Plus de conjectures.
POURQUOI LE SYSTÈME TOURNE SUR AMD MI300X
Avant d'expliquer l'architecture, ce point mérite sa propre section car il ne s'agit pas seulement d'un choix technique, c'est une nécessité commerciale.
Les clients du secteur manufacturier signent des accords de confidentialité (NDA). Leurs fichiers STEP contiennent une géométrie confidentielle qui représente des années de travail d'ingénierie et des millions de dollars de recherche et développement. Le motif des trous sur un dispositif médical ou la géométrie d'une poche sur un composant aérospatial relèvent de la propriété intellectuelle protégée.
Envoyer ces données à OpenAI, Anthropic, ou à n'importe quel point d'accès API commercial constitue une violation de la confidentialité. Point final.
La carte graphique AMD Instinct MI300X change complètement la donne. Avec ses 192 Go de mémoire vidéo HBM3 et sa bande passante de 5,3 To/s, elle permet d'exécuter le modèle Qwen 2.5 7B Instruct entièrement sur place, dans les locaux de l'atelier. Aucune donnée ne quitte l'infrastructure de l'entreprise. Aucune géométrie STEP n'est transmise à un serveur tiers. La propriété intellectuelle du client reste là où elle doit être.
C'est cela, le "respect de la vie privée dès la conception" dans le contexte manufacturier : pas une simple case à cocher, mais une décision architecturale fondamentale qui rend le produit viable pour de vrais clients professionnels.
COMPOSANT 1 : L'ANALYSEUR DE FICHIER STEP (PYTHON PUR, SANS IA)
On utilise la bibliothèque Python cadquery (qui s'appuie sur OpenCASCADE) pour analyser directement les fichiers STEP. Cela permet une extraction des caractéristiques géométriques d'une précision mathématique absolue :
def extractfeatures(stepfile_path: str) -> dict:
model = cq.importers.importStep(stepfilepath)
shape = model.val()
bb = shape.BoundingBox()
holes = {}
for face in model.faces().vals():
adaptor = BRepAdaptor_Surface(face.wrapped)
if adaptor.GetType() == GeomAbs_Cylinder:
radius = adaptor.Cylinder().Radius()
diameter = round(radius * 2, 3)
holes[diameter] = holes.get(diameter, 0) + 1
return {
"boundingboxmm": {"length": round(bb.xlen, 3), .},
"holes": [.],
"flatsurfacescount": len(flat_surfaces),
}
Cette extraction est exacte à 100 % parce qu'elle lit directement la géométrie mathématique : pas de modèle de vision, pas d'OCR (reconnaissance optique de caractères), pas d'approximation. Un trou de diamètre 6,0 mm reste de diamètre 6,0 mm dans la sortie.
Ensuite, un premier agent (appelons-le l'expert en fabrication) s'appuie sur ce résultat et répond à la question : « Quelles opérations et quels outils CNC sont nécessaires pour fabriquer cette pièce ? »
Il applique des connaissances métier : l'acier inoxydable 304 exige des outils en carbure. Un trou cylindrique requiert un foret, pas une fraise. Une tolérance de ±0,005 mm impose une machine de précision, pas une fraiseuse standard.
AGENT 2 : VÉRIFICATEUR D'OUTILS (PYTHON PUR)
Cet agent n'utilise pas du tout d'intelligence artificielle. Il interroge la base de données de l'atelier qui recense tous les outils disponibles et compare chaque outil nécessaire avec ce qui est en stock. De la logique purement déterministe : recherche dans la base, comparaison, résultat. Une IA n'est pas nécessaire pour des requêtes de base de données, et en utiliser une ajouterait une latence inutile et un risque d'hallucination.
AGENT 3 : L'AGENT DE DÉCISION DE FAISABILITÉ (QWEN 2.5 7B)
Les résultats de la vérification des outils sont renvoyés à Qwen. L'agent raisonne sur la situation globale et produit une décision structurée en JSON :
{
"decision": "CONDITIONAL",
"confidence": "HIGH",
"reason": "Tous les outils sont disponibles sauf le taraud M10x1.5",
"action_items": ["Acheter un taraud M10x1.5 (15 €)"],
"risk_flags": ["Vérifier la vitesse de broche pour l'acier 304"],
"estimatedsetuphours": 2.5
}
AGENT 4 : GÉNÉRATEUR DE RAPPORT (QWEN 2.5 7B)
Le dernier agent synthétise l'ensemble des informations en un rapport de fabricabilité professionnel, avec un statut global, un résumé exécutif, une analyse de la pièce, l'état des outils, l'état des machines et une recommandation finale.
Voici la commande pour lancer le serveur d'inférence vLLM (un moteur optimisé pour les grands modèles de langage) sur la machine équipée du MI300X :
python -m vllm.entrypoints.openai.api_server \
--model Qwen/Qwen2.5-7B-Instruct \
--host 0.0.0.0 \
--port 8000 \
--dtype float16 \
--gpu-memory-utilization 0.5
Avec le paramètre gpu-memory-utilization 0.5, on utilise environ 96 Go sur les 192 Go disponibles, ce qui laisse une large marge. La latence d'inférence pour les appels de nos agents est en moyenne inférieure à 3 secondes.
Ensuite, on connecte LangChain au serveur vLLM :
from langchain_community.llms import VLLMOpenAI
llm = VLLMOpenAI(
openaiapibase="http://localhost:8000/v1",
openaiapikey="EMPTY",
model_name="Qwen/Qwen2.5-7B-Instruct",
temperature=0.1,
max_tokens=1000
)
RÉSULTATS
Les tests ont été menés avec de vrais fichiers STEP provenant de GrabCAD, une bibliothèque de modèles 3D professionnels. Le système a démontré sa capacité à identifier précisément les problèmes de fabricabilité et à générer des rapports exploitables.
CE QU'ON A APPRIS
Utiliser l'IA seulement là où le raisonnement est nécessaire. L'agent 2 (vérification des outils) est du pur Python. Placer une IA à cet endroit serait plus lent, plus cher et moins fiable. Le bon outil pour une recherche en base de données, c'est une requête de base de données.
L'ingénierie des invites pour la génération structurée compte énormément. Obtenir de Qwen qu'il produise systématiquement du JSON valide a exigé des règles précises dans l'invite : indiquer explicitement que les trous cylindriques nécessitent des forets et non des fraises, que les diamètres doivent correspondre exactement, que les tarauds n'apparaissent que si des filetages sont spécifiés.
Le AMD MI300X est vraiment impressionnant pour ce cas d'usage. Avec ses 192 Go de mémoire vidéo, on pourrait faire tourner un modèle bien plus gros si nécessaire. Pour un déploiement en production, le modèle Qwen 2.5 72B tiendrait confortablement et offrirait une qualité de raisonnement nettement supérieure.
OÙ L'ESSAYER
Une démo est disponible sur Hugging Face Spaces : Espace de démonstration. Le code source est sur GitHub. Il suffit de télécharger n'importe quel fichier STEP pour voir l'ensemble du pipeline en action.
L'ensemble tourne grâce à Qwen 2.5 7B, un modèle de langage puissant, sur une carte AMD Instinct MI300X, avec la pile logicielle ROCm, le moteur d'inférence vLLM, la bibliothèque LangChain pour orchestrer les agents, cadquery pour l'analyse géométrique, FastAPI pour le backend, Next.js pour l'interface, et Hugging Face Spaces pour le déploiement. Le tout créé lors du hackathon AMD Developer Hackathon en mai 2026.
- Hugging Face Blog
L'indépendance de CLODCO est votre garantie.
Pour que l'actualité de l'IA reste sans filtre et sans concession, votre soutien est indispensable. Votre contribution est le seul moteur de notre liberté éditoriale.
Soutenir CLODCO

