HENK0O.
MODÈLES DE LANGAGE & SYSTÈMES

Comprendre.Construire.Aller au fond.

Je construis des modèles de langage et les systèmes qui les font tourner. Du corpus au dernier token.

Explorer mes projets
PORTFOLIO / 2026PYTHON · C++ · MACHINE LEARNING
01 / PROJETS CHOISISQuatre projets. Du modèle au réseau.
02 MOTEUR D’INFÉRENCE

Local-llm

Ouvrir la boîte noire
de l’inférence.

Un runtime Llama lisible en NumPy, accéléré en C++ sur CPU. Du chargement des poids aux kernels NEON, chaque optimisation est confrontée à une référence numérique.

01 / DÉBIT CPUSmolLM2 · 360M
~80tokens / secondeQ8_0 · C++ NEON

Mesures documentées sur Apple M5. Animation illustrative, pas un benchmark en direct.

C++ NEON : environ 80 tokens par seconde.

NumPyC++ / NEONGGUF
Voir le travail technique

SafeTensors, GGUF et quantification Q8/Q4. Cache KV préalloué, génération en streaming et API HTTP locale.

Sur MacBook Air M5 avec SmolLM2-360M-Instruct Q8_0 : environ 80 tokens/s en C++ NEON, contre 5 tokens/s sur le chemin NumPy. Les tokens gloutons restent identiques sur les mesures documentées.

Mesures issues du README local ; elles dépendent du modèle, du prompt et de la machine. Dépôt public non disponible à ce jour.

03 EXPÉRIMENTATION

Baguette SpecDec

Proposer plusieurs tokens.
Vérifier, puis mesurer.

Un modèle brouillon de 16,6 M de paramètres propose la suite ; Baguette la vérifie. Une exploration du décodage spéculatif, de la distillation aux benchmarks reproductibles.

02 / DÉCODAGE SPÉCULATIFPrêt
Lemodèleapprendvite.

Un brouillon propose. Le modèle cible décide.

Séquence pédagogique : les tokens et leur acceptation sont illustratifs.

PyTorchDistillationKV cache
Résultats & enseignements

Échantillonnage avec correction exacte et mode déterministe pour vérifier l’identité des sorties. Tests de correction, d’alignement des logits et de cache.

Les premiers essais sur Apple MPS restent plus lents que la cible seule : 40,18 tokens/s par blocs de 2, contre 63,81 tokens/s en génération classique. Le taux d’acceptation du brouillon ne compense pas encore le coût de vérification.

Explorer le code et les benchmarks
04 SYSTÈMES DISTRIBUÉS

Nexa

Une messagerie décentralisée.
Des échanges chiffrés.

Une application de messagerie pair à pair qui sépare la découverte du réseau, le relais des messages et les clients. Les nœuds transmettent les messages et les conservent temporairement lorsque le destinataire est hors ligne.

PythonNode.jsReact NativeWebSockets
Explorer le dépôt
03 / ÉCHANGE ENTRE DEUX CLIENTSSimulation interactive
TERMINAL 1 / CLIENT A

> Connecté au réseau Nexa

> Écrivez un message pour le terminal 2.

TERMINAL 2 / CLIENT B

> Connecté au réseau Nexa

> Écrivez un message pour le terminal 1.

Les deux terminaux sont connectés. Essayez d’envoyer un message dans chaque sens.

Échange simulé dans cette page. Les messages ne quittent pas votre navigateur et ne sont pas réellement chiffrés.

Explorer l’architecture

Un serveur de découverte en Node.js fournit la liste des pairs disponibles. Les nœuds relais en Python acheminent les messages via WebSockets, avec un stockage temporaire pour les destinataires déconnectés.

Le client bureau Tkinter implémente le chiffrement de bout en bout ECIES : les relais transmettent des messages chiffrés. Un client mobile est développé avec React Native et Expo. SQLite complète la stack pour le stockage.

02 / APPROCHE

Du code.
Des mesures.
De la compréhension.

01

Construire pour comprendre

Implémenter le modèle et son moteur pour comprendre ce qui se passe entre les données et la réponse.

02

Mesurer avant de conclure

Comparer aux baselines, vérifier les logits et conserver des expériences reproductibles.

03

Documenter aussi les limites

Un benchmark qui résiste ou une optimisation qui ralentit : des résultats utiles pour décider de la suite.

POUR CONTINUER

Le code raconte
la suite.

Retrouvons-nous sur GitHub