Comment se débarasser du zoo de conteneurs lors de la création d'agents IA avec SIE
Construire des agents autonomes sur des réseaux neuronaux locaux ou open-source devient rapidement un casse-tête en matière d'infrastructure. Si vous assemblez un système RAG avec plusieurs étapes de prise de décision, vous devez exécuter plusieurs systèmes à usage spécifique simultanément. Vous avez besoin d'un modèle vectoriel pour la recherche, d'un réordonnanceur séparé, d'un outil pour analyser les graphiques complexes dans les PDF, d'un classificateur de sécurité et d'un LLM génératif.
Résultat : l'environnement de développement se transforme rapidement en un amas de fichiers docker-compose. Un conteneur accapare la mémoire pour vLLM, un autre lance Text Embeddings Inference, un troisième démarre PyTorch juste pour l'extraction paranoïaque d'entités via GLiNER. Garder toutes ces instances en fonctionnement constant est un moyen infaillible de faire exploser les factures GPU.
Les ingénieurs de Superlinked ont rencontré le même problème et ont publié SIE (Superlinked Inference Engine). Il s'agit d'un serveur d'inférence qui consolide tout le traitement des tâches des agents sous un même toit.
Comment ça fonctionne en coulisses
SIE adopte une approche différente. Au lieu d'exécuter cinq serveurs d'inférence indépendants, vous déployez un cluster qui répond aux endpoints OpenAI standard comme /v1/embeddings ou /v1/chat/completions.
La fonctionnalité principale est le chargement dynamique des modèles à la demande avec un algorithme d'éviction LRU (Least Recently Used). Lorsqu'un agent a besoin de l'OCR pour analyser un scan téléchargé par un utilisateur, SIE charge le modèle de reconnaissance de documents dans la mémoire GPU. Une fois l'étape d'analyse terminée et le système passe au dialogue, le modèle rarement utilisé libère la mémoire pour le réseau génératif.
Le catalogue propose plus d'une centaines de configurations préétablies prêtes à l'emploi. Les options populaires incluent BGE-M3, ColBERTv2, SPLADE-v3, GLiNER, Docling, Qwen3 et les modèles de protection contre les injections de prompts comme Granite Guardian.
Démarrage rapide sur votre machine locale
Pour un premier aperçu, un package Python standard suffit. Vous pouvez démarrer une instance de test sur CPU ou Apple Silicon en deux commandes :
pip install "sie-server[local]"
sie-server serve
Si vous prévoyez d'exécuter des charges de travail lourdes sur des GPU NVIDIA, privilégiez Docker dès le départ. Les développeurs ont intentionnellement séparé les services en conteneurs isolés en raison de dépendances système conflictuelles. Les modèles OCR nécessitent la dernière version de la bibliothèque transformers, ils sont donc fournis sous forme de tag séparé.
Pour la recherche vectorielle, lancer le conteneur de base ressemble à ceci :
docker run --gpus all -p 8080:8080 \
-v sie-hf-cache:/app/.cache/huggingface \
ghcr.io/superlinked/sie-server:latest-cuda12-default
Vous pouvez vérifier qu'il fonctionne avec un appel curl standard :
curl http://localhost:8080/v1/embeddings \
-H 'Content-Type: application/json' \
-d '{"model": "sentence-transformers/all-MiniLM-L6-v2", "input": "Привет, мир"}'
Lors de la première requête, le serveur télécharge automatiquement les poids depuis Hugging Face et les enregistre dans le cache local, afin que les requêtes suivantes s'exécutent sans délai de téléchargement.
Coder avec le SDK Python
Pour travailler avec le serveur, les auteurs ont écrit des bibliothèques pour Python et TypeScript. Le SDK gère l'appel de tâches spécifiques comme la classification ou l'extraction d'entités nommées.
Voici un exemple de comment vectoriser du texte, réordonner les résultats et extraire des entités dans un seul client :
from sie_sdk import SIEClient
from sie_sdk.types import Item
client = SIEClient("http://localhost:8080")
# Получаем эмбеддинг
embedding = client.encode("sentence-transformers/all-MiniLM-L6-v2", Item(text="Привет мир"))
# Считаем релевантность документов
scores = client.score(
"cross-encoder/ms-marco-MiniLM-L-6-v2",
Item(text="Что такое машинное обучение?"),
[Item(text="ML обучается на данных."), Item(text="Сегодня солнечная погода.")],
)
# Извлекаем сущности через GLiNER
entities = client.extract(
"urchade/gliner_multi-v2.1",
Item(text="Тим Кук руководит компанией Apple в Купертино."),
labels=["person", "organization", "location"],
)
La syntaxe est simple. Vous n'avez pas besoin d'écrire vos propres wrappers pour les endpoints HTTP ni d'intégrer des bibliothèques tierces pour chaque modèle secondaire.
Prêt pour la production
De nombreux projets open-source similaires restent bloqués au stade d'un README bien présenté pour une utilisation locale. Dans le cas de SIE, les auteurs ont immédiatement publié les outils d'infrastructure pour le déploiement sur Kubernetes.
Le dépôt et les projets associés de l'organisation incluent :
- Un chart Helm
sie-clusterpour une installation rapide. - Des modules Terraform prêts à l'emploi pour AWS (EKS), Google Cloud (GKE) et Azure (AKS).
- Des configurations KEDA pour la mise à l'échelle automatique des pods jusqu'à zéro.
- Des tableaux de bord Load Balancer et Grafana pour la collecte de métriques.
La possibilité de réduire les pods à zéro est particulièrement utile pour les services internes d'entreprise. Si les employés n'utilisent pas l'agent la nuit, les GPU cloud ne resteront pas simplement inactifs.
L'attrape
Le concept d'un serveur d'inférence unique pour toutes les tâches semble formidable, mais il n'existe pas de solution parfaite.
Le principal écueil est la latence de démarrage à froid. Lorsqu'un modèle est expulsé de la mémoire GPU en raison de l'éviction LRU, la requête suivante doit attendre le rechargement des poids depuis le disque. Sur un stockage relativement lent, cela ajoute quelques secondes de délai à la réponse de l'agent.
Le deuxième détail concerne la séparation des images Docker. Si votre pipeline a simultanément besoin d'OCR basé sur LightOnOCR et d'une inférence LLM rapide sur SGLang, vous devrez toujours lancer deux conteneurs SIE différents car leurs environnements diffèrent.
Cela vaut-il le coup d'essayer ?
SIE est un excellent candidat pour les équipes qui construisent des pipelines sur leur propre matériel ou dans un cloud privé. Si vous êtes fatigué de maintenir une infrastructure tenue ensemble par cinq conteneurs différents juste pour un système RAG, ce projet vous fera gagner énormément de temps.
Si votre architecture est simple et se compose d'un seul modèle conversationnel sans traitement complexe de documents ni étapes de réordonnancement, il n'y a aucun intérêt à passer à SIE. Un vLLM ou Ollama classique sera parfaitement suffisant dans ce cas.
Projets similaires