NOPE LinkedIn

Articles dans Blog...

Déclarer ses outils : comment un 1,5B passe de 6 % à 94,5 %
Agents-outils sous 2B · N°1

Déclarer ses outils : comment un 1,5B passe de 6 % à 94,5 %

Déclarer ses outils : comment un 1,5B passe de 6 % à 94,5 % Résumé exécutif Mes agents-outils tournent sur Qwen 2.5 3B + LoRA, sur CPU, sans GPU. En voulant réévaluer si ce socle était encore le bon en 2026, j’ai construit un banc d’exactitude d’appel d’outil : 214 cas figés, 40 fonctions OPNsense, plus 14 cas où la bonne réponse est de ne rien appeler. Le premier chiffre m’a arrêté net.

Le refus : ce qu'aucun palmarès ne mesure
Agents-outils sous 2B · N°2

Le refus : ce qu'aucun palmarès ne mesure

Le refus : ce qu’aucun palmarès ne mesure Résumé exécutif Tous les bancs d’appel d’outil que j’ai croisés mesurent la même chose : le modèle appelle-t-il la bonne fonction avec les bons arguments ? Aucun ne mesure l’inverse — sait-il ne PAS appeler ? Mon propre corpus d’entraînement ne le mesurait pas davantage : 1978 exemples, zéro sans appel d’outil. J’ai donc construit 14 cas où la bonne réponse est de se taire, répartis en quatre genres.

Entraîner le refus : 43 % → 93 %, et ce que ça coûte ailleurs
Agents-outils sous 2B · N°3

Entraîner le refus : 43 % → 93 %, et ce que ça coûte ailleurs

Entraîner le refus : 43 % → 93 %, et ce que ça coûte ailleurs Résumé exécutif Les deux premiers articles de cette série se terminaient sur la même réserve : « aucun LoRA n’a été mesuré ». Le second poussait plus loin — le refus ne se corrige pas par l’invite, il faut l’entraîner — en le présentant comme une hypothèse à éprouver. Elle est éprouvée. 228 exemples de refus et vingt-deux minutes de GPU font passer le taux de refus correct de 42,9 % à 92,9 %, et les demandes dangereuses de 0/6 à 6/6, sans rien coûter à la sélection de fonction.

Détection réseau par IA — du pipeline au dimensionnement selon le débit
Détection réseau par IA · N°1

Détection réseau par IA — du pipeline au dimensionnement selon le débit

La détection d’intrusion réseau par intelligence artificielle est souvent présentée comme une boîte magique : « on branche l’IA sur le réseau et elle trouve les attaques ». La réalité est plus terre à terre — et bien plus intéressante pour qui doit la mettre en œuvre. Derrière le buzzword, il y a un pipeline parfaitement classique, et un maillon qui décide de tout : le prétraitement. C’est aussi lui dont le coût matériel explose dès qu’on monte en débit.

Benchmarker llama.cpp sur CPU : ce qu'on apprend en 50 runs
Inférence LLM CPU · N°1

Benchmarker llama.cpp sur CPU : ce qu'on apprend en 50 runs

Benchmarker llama.cpp sur CPU : ce qu’on apprend en 50 runs Résumé Exécutif Pour les besoins d’un PoC SOC agentique CPU-only, j’ai fait tourner ~50 benchmarks llama-bench sur 4 plateformes différentes (un Ryzen 5 3600 bare-metal, sa contrepartie FreeBSD, un EPYC Milan dedicated chez Hetzner, un Xeon Skylake shared chez Hetzner). Modèle de référence : Qwen 2.5 3B Q4_K_M et son grand frère 7B. Builds comparés : llama.cpp (tag b3813 et b9165) et son fork agressif ik_llama.

tg/s = MB/s : la formule empirique pour planifier la capacité d'un cluster LLM CPU
Inférence LLM CPU · N°2

tg/s = MB/s : la formule empirique pour planifier la capacité d'un cluster LLM CPU

tg/s = MB/s : la formule empirique pour planifier la capacité d’un cluster LLM CPU TL;DR Sur 5 plateformes CPU (x86 AMD, x86 Intel, ARM Ampere Altra), la bande passante mémoire (mesurée par mbw) prédit le throughput de génération LLM (tg64 sur Qwen 3B Q4_K_M) à ±10 % près sur x86 et à ±25 % près si on inclut ARM. Le ratio empirique est ~470 MB par token/s sur x86, et ~650 MB par token/s sur ARM Ampere Altra — l’ARM est moins efficient par MB de BW pour des raisons développées plus loin.

FreeBSD pour l'inférence LLM embarquée : un non-sujet
Inférence LLM CPU · N°3

FreeBSD pour l'inférence LLM embarquée : un non-sujet

FreeBSD pour l’inférence LLM embarquée : un non-sujet TL;DR Sur le même CPU (AMD Ryzen 5 3600, Zen 2), le même tag llama.cpp, le même modèle (Qwen 2.5 3B Q4_K_M), le même nombre de threads — Linux Debian 12 et FreeBSD 14.4 produisent des t/s quasi identiques : OS tag llama.cpp t=6 pp256 t=6 tg64 Linux Debian 12 b9165 90.6 17.1 FreeBSD 14.4 b9000 90.5 16.7 Différence < 1 % sur le pp, ~2 % sur le tg — dans la marge d’erreur des mesures successives.

Quatre challengers pour llama.cpp sur CPU : ce qui passe et ce qui casse
Inférence LLM CPU · N°4

Quatre challengers pour llama.cpp sur CPU : ce qui passe et ce qui casse

Quatre challengers pour llama.cpp sur CPU : ce qui passe et ce qui casse TL;DR Après les 50 benchs de llama.cpp et ik_llama.cpp du premier article de cette série, une question logique : est-ce qu’un autre moteur CPU pourrait faire mieux que llama.cpp HEAD sur mon Ryzen 5 3600 ? J’ai testé quatre candidats régulièrement cités : Moteur Promesse Résultat sur Ryzen Zen 2 Verdict vLLM CPU Continuous batching multi-request Échec d’install (3 tentatives) À reprendre via Docker CTranslate2 Mature, INT8 historique -46 % vs llama.

asp-forge (1/3) — Pourquoi un SOC agentique self-hosted ? Architecture et choix techniques
SOC Agentique — asp-forge · N°1

asp-forge (1/3) — Pourquoi un SOC agentique self-hosted ? Architecture et choix techniques

Cet article ouvre une série de trois consacrée à asp-forge, un lab de Security Operations Center agentique entièrement auto-hébergé, conçu comme banc d’essai pour évaluer l’apport concret des modèles de langage dans le triage d’alertes. Cible : DevSecOps et analystes SOC qui s’interrogent sur l’industrialisation des LLM dans une chaîne de réponse aux incidents, sans dépendre d’un fournisseur cloud. Le problème : la fatigue d’alertes ne se résout pas par plus d’analystes Tout SOC un peu sérieux remonte plusieurs centaines à plusieurs milliers d’événements par jour depuis ses outils — Wazuh sur les serveurs, T-Pot sur les honeypots exposés, les EDR sur les postes, les WAF en bordure.

asp-forge (2/3) — Le pipeline agentique : cascade Triage → SOC → CERT
SOC Agentique — asp-forge · N°2

asp-forge (2/3) — Le pipeline agentique : cascade Triage → SOC → CERT

Deuxième volet de la série asp-forge. Après les choix structurants posés dans le premier article, on entre dans le cœur du système : comment plusieurs agents LLM collaborent sur une même alerte, et pourquoi cette collaboration est organisée en cascade plutôt qu’en agent unique. Pourquoi une cascade et pas un seul agent ? L’instinct premier, quand on dispose d’un LLM 3 milliards de paramètres qui raisonne correctement, est de lui confier l’intégralité de la décision : alerte en entrée, verdict en sortie.

asp-forge (3/3) — Leçons d'un SOC agentique en lab : ce qui surprend, ce qu'on garde
SOC Agentique — asp-forge · N°3

asp-forge (3/3) — Leçons d'un SOC agentique en lab : ce qui surprend, ce qu'on garde

Troisième et dernier volet de la série asp-forge. Après l’architecture (article 1) et le pipeline cascade (article 2), il reste la question qui intéresse vraiment l’ingénieur : qu’est-ce qui s’est mal passé, qu’est-ce qui a surpris, et qu’est-ce qu’on garde pour la suite ? Pas de success story édulcorée — on partage les pièges réels. Bug LoRA dynamique : une discipline de version pinning Premier piège qui a coûté plusieurs jours de débogage.

Changer de Base : Migrer ses Agents LoRA de Phi-3.5 vers Qwen2.5-3B
Agents en Production · N°1

Changer de Base : Migrer ses Agents LoRA de Phi-3.5 vers Qwen2.5-3B

Dans la série LoRA Factory, nous avons construit une usine à agents spécialisés sur Phi-3.5-mini-instruct. Trois agents (OPNsense, WireGuard, CrowdSec), trois adapters LoRA, un pipeline d’entraînement automatisé. Tout fonctionnait — jusqu’à ce que les limites du modèle de base se manifestent en production. Ce premier article de la série Agents en Production documente pourquoi et comment nous avons migré vers Qwen2.5-3B-Instruct. Pourquoi changer de modèle de base ? Phi-3.5-mini est un excellent modèle compact.