Un filtre anti-spam IA qui ne quitte jamais le Mac.
Klar, en production sur l'App Store. Le problème, ce que j'ai construit, le résultat.
Le problème : filtrer le spam avec un vrai modèle de langue, sans qu'aucun mail ne parte vers un serveur.
1Le schéma
ce que voit l'utilisateurle moteur, sur le Macle modèlel'entraînement
2Ce que j'ai construit
-
Le modèle : une tête de classification entraînée en Python (PyTorch) sur un encodeur XLM-RoBERTa-large figé.
- 550 M de paramètres, quantifié en q4_k_m : 219 Mo.
- Quatre étiquettes : spam, marketing, normal, charabia.
- Un jeu privé d'environ 1 million de mails.
-
Le moteur : C++17 sur llama.cpp et ggml.
- 24 000 lignes, dont des tables de marques générées depuis des listes.
- Deux API C (30 et 11 fonctions), liaisons Swift et Node.
- Réentraînement sur l'appareil, de deux modèles : FTRL, et la tête du modèle BERT (XLM-RoBERTa), tenue près de ses poids d'origine pour ne pas oublier.
-
L'app : Swift, une extension d'Apple Mail.
-
Le laboratoire :
model-lab, l'entraînement et l'évaluation.- 313 fichiers Python, 72 500 lignes, 49 fichiers de tests.
- NumPy et scikit-learn au quotidien.
3Le résultat
-
Moins de 50 ms par message, sur le Mac de l'utilisateur.
-
En production sur l'App Store, une centaine d'utilisateurs.
4Mon rôle
-
Seul, de bout en bout : le modèle, le moteur, l'app, la publication sur l'App Store.
- L'infrastructure aussi : OpenTofu sur Scaleway, déploiements blue-green.
-
Et hors du code : le produit, les données et le commerce.
- Le produit et l'analyse du marché ; le design system de l'app et du site.
- La collecte et le nettoyage des mails qui ont servi à l'entraînement.
- La prospection, et la recherche de partenaires commerciaux.