Vue lecture

Il y a de nouveaux articles disponibles, cliquez pour rafraîchir la page.

Cordon - L'outil qui trouve les aiguilles dans vos meules de logs

Vous avez déjà passé des heures à éplucher des fichiers de logs de plusieurs millions de lignes pour trouver ce qui cloche ? Genre une pauvre erreur bizarre qui se produit une fois sur 100 000, noyée dans un océan de messages répétitifs et d'infos inutiles ? Moi, oui plein de fois !

Mais ça c'était avant de tomber sur Cordon !

Cordon est un outil en Python qui utilise des modèles de transformers et du scoring k-NN pour détecter les anomalies sémantiques dans vos logs. En gros, au lieu de chercher des mots-clés comme un bourrin avec grep, Cordon comprend le sens des messages et repère ce qui sort de l'ordinaire.

Les patterns répétitifs sont alors considérés comme du bruit de fond normal, même si ce sont des erreurs parce que si vous avez la même erreur FATALE qui se répète 10 000 fois, c'est probablement un problème connu. Et vous, ce que vous voulez trouver, c'est l'événement rare, celui qui se produit une seule fois et qui est sémantiquement différent du reste.

L'installation est simple comme bonjour. Un petit pip install cordon et c'est réglé. Pour l'utilisation de base, vous balancez juste votre fichier de logs en argument :

cordon system.log

Et hop, Cordon va analyser tout ça et vous sortir uniquement les trucs intéressants. Par défaut, il garde les 10% les plus "anormaux" sémantiquement. Vous pouvez ajuster ce pourcentage avec --anomaly-percentile 0.05 pour être plus sélectif (top 5%).

Sous le capot, ça utilise le modèle all-MiniLM-L6-v2 de sentence-transformers pour vectoriser les logs. Le fichier est découpé en fenêtres de N lignes (4 par défaut), chaque fenêtre est transformée en vecteur, puis un score de densité k-NN est calculé. Les fenêtres qui ont des vecteurs très différents du reste sont marquées comme anomalies.

Et si vous avez un GPU, Cordon peut l'utiliser automatiquement avec l'option --device cuda. D'après les benchmarks, ça donne un speedup de 5 à 15x sur le scoring pour les gros datasets. Sur des logs HDFS de 1 à 5 millions de lignes, l'outil arrive à réduire le volume de 98%. Autant dire que ça filtre sévère.

Y'a aussi un mode "range" qui est pratique pour explorer par tranches. Genre si vous voulez exclure le top 5% (trop bizarre, probablement du garbage) mais garder le top 5-15%, vous faites :

cordon --anomaly-range 0.05 0.15 app.log

Ça permet d'affiner l'investigation de manière itérative.

Pour les environnements conteneurisés, Cordon propose également une image Docker avec un backend llama.cpp au lieu de sentence-transformers. Pratique si vous voulez utiliser des modèles GGUF ou si vous êtes dans un contexte où les dépendances PyTorch posent problème.

L'outil peut aussi s'utiliser comme bibliothèque Python si vous voulez l'intégrer dans vos propres scripts :

analyzer = SemanticLogAnalyzer()
output = analyzer.analyze_file(Path("system.log"))

C'est top moumoute pour le prétraitement de logs avant de les balancer à un LLM (pour réduire le contexte), le triage initial de fichiers de logs inconnus, ou la découverte de patterns inattendus. Par contre, si vous cherchez une erreur spécifique que vous connaissez déjà, grep reste votre ami. Et si vous avez besoin d'un historique complet pour la conformité, oubliez Cordon qui est volontairement "lossy".

Notez qu'au premier lancement, Cordon téléchargera le modèle d'embedding (environ 80 Mo) donc ce sera un peu lent, mais ensuite, ça sera quasi instantané car les lancements suivants utiliseront le cache. Et si vos logs sont très verbeux avec de longues lignes, le modèle par défaut (256 tokens max) risque de tronquer les lignes, dans ce cas, passez à un modèle plus costaud comme BAAI/bge-base-en-v1.5 qui supporte 512 tokens avec le paramètre --model-name.

Voilà, j'espère que ça vous sera utile ! C'est open source sous licence Apache 2.0 et ça se trouve sur GitHub .

EuroLLM - Le LLM européen qui tourne sur votre laptop

Faire tourner un modèle de langage européen sur votre machine sans avoir besoin d’un serveur surpuissant branché sur une centrale nucléaire, c’est maintenant possible, les amis ! Hé oui, EuroLLM vient de prouver qu’on pouvait faire tourner un modèle à 9 milliards de paramètres dans un peu moins de 6 GB de RAM sur un simple laptop.

Une seule commande Ollama , et c’est parti mon kiki !!!

Bien sûr, il est encore loin des gros modèles proprio comme GPT-5 mais c’est le enfin le premier LLM européen que VOUS pouvez faire tourner en local. C’est respectueux de votre vie privée, des droits d’auteurs et c’est gratuit !

Un projet 100% européen

EuroLLM, c’est en réalité une coalition de labos européens : Instituto Superior Técnico (Lisbonne), University of Edinburgh , Université Paris-Saclay , Unbabel , et d’autres et c’est financé par Horizon Europe et l’ EuroHPC , et ce modèle supporte les 24 langues officielles de l’UE, plus 11 langues supplémentaires (arabe, chinois, hindi, japonais, coréen, russe, turc…).

EuroLLM-9B , le modèle de base, a été entraîné sur 4 trillions de tokens avec le supercalculateur MareNostrum 5 à Barcelone (400 GPUs Nvidia H100) et l’architecture utilise du Grouped Query Attention, RoPE, SwiGLU et RMSNorm, comme tout LLM moderne qui se respecte.

Mais il existe d’autres versions comme EuroLLM-1.7B pour smartphones et bientôt EuroLLM-22B pour plus de puissance, ainsi qu’une version vision-language (EuroVLM-9B) et un modèle Mixture-of-Experts (EuroMoE-2.6B).

Et surtout c’est sous licence Apache 2.0. Donc l’usage commercial est autorisé, vous pouvez le fine-tuner sur vos données, et les modifications sont libres, sans redevance à payer. Ce n’est pas la première fois qu’il y a des LLM européens mais ils étaient soit sous licence trop restrictives ou un peu trop lourd pour être utilisé localement par les gens normaux comme vous et moi.

Maintenant comment l’installer ?

La méthode la plus simple, c’est via Ollama :

ollama run hf.co/bartowski/EuroLLM-9B-Instruct-GGUF

Ollama télécharge le modèle en version GGUF (format optimisé CPU/GPU), et vous pouvez commencer à discuter. Il existe aussi une version pré-packagée alibayram/erurollm-9b-instruct (attention, erurollm avec un “u”), quantized en Q4_K_M pour réduire la taille à 5,6 GB.

Si vous préférez Python et Hugging Face Transformers :

from transformers import AutoTokenizer, AutoModelForCausalLM

model_name = "utter-project/EuroLLM-9B-Instruct"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)

inputs = tokenizer("Explique-moi ce qu'est un LLM en français simple", return_tensors="pt")
outputs = model.generate(**inputs, max_length=200)
print(tokenizer.decode(outputs[0]))

Une fois téléchargé, le modèle reste en cache local. Vous pouvez alors l’utiliser offline, sans connexion internet. Et pour les machines avec moins de RAM, la version 1.7B tourne même sur des Raspberry Pi :

ollama run cas/eurollm-1.7b-instruct-q8

Alors pourquoi c’est important ?

EuroLLM ouvre l’IA européenne à des cas d’usage impossibles avec des API cloud. Par exemple une administration publique ne peut pas envoyer ses documents dans le cloud d’OpenAI… ce serait tout livrer aux américains. Elle peut donc fine-tuner EuroLLM localement. Un journaliste en zone sensible sans connexion fiable peut aussi embarquer le modèle sur son ordi portable. Même un chercheur qui manipule des données médicales confidentielles peut le faire en toute confiance avec EuroLLM puisque tout reste sur sa machine.

C’est cool quand même que l’Europe nous file un modèle gratuit qu’on peut installer chez soi et utiliser sans limite. Après c’est vrai que EuroLLM ne bat pas GPT-4 (pas encore) mais il est suffisamment bon pour 80% des cas d’utilisation réels tels que des résumés, de la traduction, des questions-réponses simples, de la génération de code basique.

La roadmap prévoit d’ajouter de la vision et de la voix aux modèles. D’ailleurs, comme je vous le disais, EuroVLM-9B est déjà en preview sur Hugging Face , ce qui ouvre la voie à de l’OCR multilingue, de l’analyse de documents visuels, ou encore à la création d’assistants vocaux dans n’importe quelle langue…

Voilà j’ai trouvé ça cool à tester et un grand merci à Letsar pour le partage !

❌