J’ai créé mon IA en local sur mon MAC (partie 2)
L’Odyssée technique : comment j’ai boosté mon IA locale de 25 à 127 tokens/seconde sur Mac (partie 2)
Note de l’auteur : Afin de rendre cet article technique accessible au plus grand nombre, j’ai intégré de nombreux encadrés de vulgarisation (les boîtes grises). Cela peut donner l’impression que l’article est très long, mais rassurez-vous : il se lit plus vite qu’il n’y paraît ! Ces explications sont là pour que personne ne soit laissé sur le bord de la route numérique.
IMPORTANT: Dans cet article, on parle d’un usage intensif de l’ia (analyse de code, gros volumes de données, requêtes fréquentes, etc.). pour de simples usages conversationnels ou des tâches légères, une infrastructure beaucoup plus modeste aurait largement suffi et une partie de la complexité décrite ici ne serait pas nécessaire.
Imaginez la scène : vous venez d’investir dans une machine de guerre, un Mac M3 Max (ok je sais ce n’est pas le plus récent), persuadé qu’il va pulvériser n’importe quelle tâche d’intelligence artificielle. Vous lancez votre première requête à votre IA locale, le cœur battant, et là… le curseur clignote. Une fois. Deux fois. Une réponse s’affiche, lettre par lettre, à la vitesse d’un modem 56k (oups, ça vous donne une idée de mon âge) en fin de vie. C’est le mur de la réalité que j’ai percuté en octobre 2025. Ce n’était pas un problème de matériel, mais une erreur d’architecture logicielle fondamentale.
Nexus Neural : Et si la perfection vous coûtait votre humanité ?
L'augmentation technologique n'est plus une fiction. Pour Étienne Marchant, c'est une arme contre l'impuissance.
Plongez dans un thriller psychologique où la frontière entre l'homme et la machine s'efface. Serez-vous prêt à en payer le prix ?
Commencer la lecture — Tome 1 à 0,99 $Si vous avez lu la première partie de cette série sur la souveraineté numérique, vous savez pourquoi j’ai décidé de rapatrier mon intelligence artificielle à la maison. Aujourd’hui, nous soulevons le capot. Je vais vous expliquer comment je suis passé d’un système lent et instable sous Ollama à un outil de production fluide et efficace grâce à MLX, le framework méconnu d’Apple. Préparez-vous, nous allons parler technique, optimisation et choix déchirants, mais ne vous inquiétez pas, je vais tout décoder pour vous au fur et à mesure.
Dans cet article, le deuxième de notre trilogie, nous explorerons :
- L’échec initial de ma stack technique « standard » et les leçons tirées.
- Pourquoi la gestion de la mémoire unifiée est le nerf de la guerre.
- La migration vers MLX qui a quintuplé la vitesse de génération.
- Le choix stratégique du modèle Qwen 2.5 Coder 14B face aux géants.
Le mirage de la stack parfaite : quand la théorie s’effondre
En mars 2025, sur le papier, mon plan était impeccable. Pour MEMORA solutions, je voulais bâtir une infrastructure robuste. J’avais choisi des technologies éprouvées : Laravel 12 Octane pour le backend (ma zone de confort), React 19 pour l’interface, et surtout Ollama pour gérer l’inférence des modèles d’IA. Ollama était le standard de facto, l’outil que tout le monde recommandait pour sa simplicité.
Ensemble des technologies (logiciels, langages de programmation, outils) empilées les unes sur les autres pour construire une application complète. C’est comme la liste des matériaux et outils pour construire une maison.
Laravel est un cadre de travail (framework) très populaire pour créer des sites web robustes avec le langage PHP. « Octane » est son mode « turbo », conçu pour la vitesse et la performance maximale. Chez MEMORA solutions, nous utilisons très souvent cette technologie pour la création de plateformes performantes.
Une technologie créée par Facebook (Meta) pour construire des interfaces utilisateur modernes et interactives, comme celles que vous voyez sur Netflix ou Instagram.
Un logiciel gratuit qui permet de télécharger et faire « tourner » des intelligences artificielles sur votre propre ordinateur aussi facilement qu’on installe une application. C’est le « lecteur » qui permet de lire le « fichier » de l’IA.
Ollama agit comme un « serveur » qui charge le modèle d’IA et expose une API facile à utiliser. C’est génial pour débuter, mais comme je l’ai découvert, cela cache une complexité de gestion mémoire qui peut être fatale sur Mac.
Les premières semaines ont été un rêve, tant que je restais sur de petits modèles. Mais dès que j’ai voulu charger des modèles sérieux pour le codage, comme le Llama 3.1 70B, mon Mac s’est transformé en radiateur soufflant.
Cas concret : En octobre 2025, lors d’un test avec un modèle 70B, ma RAM de 48 Go a été saturée instantanément. Le système a basculé sur le « Swap » (mémoire sur disque), écrivant 150 Go de données sur mon SSD. Résultat ? Une latence de 4 à 5 secondes par mot généré. Inutilisable pour du travail réel.
Le problème n’était pas seulement la lenteur. C’était l’instabilité. Mon IA locale, ANNY, dévorait les ressources avec un « workolisme » effrayant. Si je ne surveillais pas son appétit via mon moniteur d’activité, elle monopolisait le CPU et le GPU jusqu’à faire planter l’interface de macOS. J’avais une Ferrari, mais je roulais avec le frein à main serré.
Diagnostiquer l’invisible : création d’un moniteur sur mesure
Face à ces ralentissements inexpliqués, les outils standards de macOS ne suffisaient plus. J’avais besoin de voir exactement ce que mon IA consommait en temps réel, directement dans ma barre de menu, sans ouvrir des fenêtres complexes.
J’ai donc dû créer mon propre outil : un « moniteur d’activité » dédié à ANNY. Pour ce faire, j’ai utilisé Python avec la bibliothèque rumps (Ridiculously Uncomplicated macOS Python Statusbar apps), qui permet de créer très simplement des applications pour la barre de menu du Mac. Mais un simple script ne suffisait pas ; je voulais une vraie application Mac autonome.
C’est là que je me suis heurté à un mur technique : comment transformer mon script de surveillance en une vraie application .app installable ?
- Rumps : Une boîte à outils qui permet de créer facilement des petites applications qui vivent dans la barre de menu de votre Mac (là où il y a l’heure et le WiFi), sans avoir à apprendre le langage complexe d’Apple.
- Psutil : Un outil qui permet à un programme de « prendre le pouls » de l’ordinateur : il mesure la température, la vitesse du processeur et la mémoire utilisée en temps réel.
Imaginez que vous avez écrit une recette de cuisine (le script Python). Pour que n’importe qui puisse la « goûter » sans avoir à cuisiner, vous devez la transformer en un plat fini et emballé (l’application .app). C’est ce que fait l’outil py2app : il prend votre code, ajoute tous les ingrédients nécessaires (dépendances), et emballe le tout dans une boîte prête à l’emploi que votre Mac reconnaît comme une vraie application.
Voici comment j’ai résolu ce défi :
- Le Script : J’ai codé la logique avec
rumpspour l’interface etpsutilpour lire les données du système (CPU, RAM). - L’Échec : Au début, le script fonctionnait mais affichait une icône générique « Python Launcher » dans le dock, ce qui n’est pas pro.
- La Solution : J’ai utilisé
py2app, un « bundler » (empaqueteur). Il a non seulement créé un exécutable natif, mais m’a permis de définirLSUIElement=Truepour rendre l’app invisible dans le Dock (elle vit uniquement dans la barre de menu, discrète et efficace) et d’ajouter ma propre icône.icns.
Grâce à cet outil maison, j’ai pu identifier précisément quand et pourquoi ANNY saturait ma mémoire, me guidant vers la véritable solution : changer d’architecture.
Nexus Neural : Et si la perfection vous coûtait votre humanité ?
Plongez dans un thriller psychologique où la frontière entre l'homme et la machine s'efface.
Commencer la lecture — Tome 1 à 0,99 $L’architecture de la contrainte : comprendre la mémoire unifiée
Pour résoudre ce problème, il a fallu redescendre au niveau du matériel. L’architecture Apple Silicon (M1, M2, M3, M4) repose sur la Mémoire Unifiée (UMA). Contrairement à un PC où le processeur (CPU) et la carte graphique (GPU) ont chacun leur territoire, ici, ils partagent la même assiette.
Imaginez que le processeur logique (CPU) et le processeur graphique (GPU) partagent le même bureau immense, au lieu d’être dans deux pièces séparées. Sur un Mac, toute la mémoire est accessible instantanément aux deux. C’est très efficace, mais cela veut dire qu’ils puisent dans la même réserve limitée.
C’est une force immense (pas de copie de données), mais c’est aussi un piège. Si votre modèle d’IA prend 40 Go de RAM, il ne reste que 8 Go pour tout le reste : le système d’exploitation, vos navigateurs, votre environnement de développement (IDE) et Docker.
Imaginez que votre bureau (RAM) est plein de dossiers. Pour travailler sur un nouveau document, vous devez poser un dossier par terre (Disque Dur/SSD). C’est le Swap. C’est beaucoup plus lent de ramasser un dossier par terre que de le prendre sur le bureau. Quand votre Mac « swap », il passe son temps à se baisser et se relever.
J’ai réalisé que l’approche « brute » d’Ollama, qui tend à pré-allouer beaucoup de mémoire, entrait en conflit avec la gestion fine nécessaire sur une machine de travail polyvalente. Il me fallait quelque chose de plus chirurgical.
La révélation MLX : parler le langage natif d’Apple
C’est en décembre 2025, au détour d’un forum de développeurs Apple, que j’ai eu le déclic. Une équipe de recherche chez Apple avait publié MLX, un framework open-source conçu spécifiquement pour leurs puces. Une discussion passionnante sur le sujet a achevé de me convaincre.C’est une boîte à outils logicielle qui fournit aux développeurs une base de code standardisée pour construire des applications. MLX est la boîte à outils spécifique d’Apple pour l’intelligence artificielle.
J’ai migré le cœur d’ANNY de Ollama vers une implémentation Python pure utilisant MLX. Le défi n’était pas mince : mon code était truffé d’appels à Ollama. J’ai donc demandé à ANNY elle-même, ainsi qu’à Claude Code en mode CLI, de scanner l’intégralité de mes fichiers .py pour débusquer chaque référence. Si j’en oubliais une seule, ANNY continuait de chercher désespérément le serveur Ollama, bloquant tout le système. Le nettoyage devait être chirurgical. Le résultat a été stupéfiant.
En passant à MLX, la vitesse de génération est passée de 25 tokens/seconde (poussif) à 127 tokens/seconde (instantané). C’est 5 fois plus rapide, avec une empreinte mémoire divisée par deux au repos.
C’était le jour et la nuit. Soudainement, ANNY ne se contentait plus de répondre ; elle anticipait presque ma lecture. L’utilisation d’agents MCP (Model Context Protocol) a permis à MLX de s’interfacer directement avec mes outils de développement, libérant suffisamment de ressources pour faire tourner mon environnement complet (Docker, VS Code, Chrome) en parallèle sans que le Mac ne montre de signes de fatigue. C’est une illustration concrète de la révolution technologique qui redéfinit notre futur économique, où l’efficacité locale prime sur la puissance brute distante.
C’est comme un « câble USB universel » pour les intelligences artificielles. Au lieu de devoir créer une connexion unique pour chaque outil (Google Drive, Slack, GitHub), MCP permet à l’IA de se brancher et de dialoguer avec n’importe quelle application compatible, instantanément et de manière standardisée.
Le choix du cerveau : pourquoi David a battu Goliath
Avec une autoroute technique dégagée, il restait à choisir le véhicule : quel modèle d’IA utiliser ? La tentation est toujours de prendre le plus gros modèle possible (70 milliards de paramètres ou plus), en pensant qu’il sera plus intelligent.
J’ai testé sept modèles différents, tous conçus spécifiquement pour le codage : Llama 3, Mistral, DeepSeek, et plusieurs versions de Qwen.
- Les modèles 70B étaient brillants mais trop lents et gourmands pour une machine de 48 Go de RAM.
- Les modèles 7B étaient rapides mais manquaient de nuance pour le code complexe.
C’est une technique de compression mathématique pour réduire la taille d’un modèle d’IA sans trop perdre en qualité. Imaginez que vous remplacez des nombres très précis (ex: 3.14159265…) par des nombres arrondis (ex: 3.14). Le fichier devient beaucoup plus léger et rapide à lire, mais l’IA reste presque aussi intelligente.
Il est crucial d’être réaliste : ANNY n’arrive pas à la cheville de géants comme Claude 4.5 Opus ou Gemini Code, qui tournent sur des infrastructures serveurs immenses aux ressources quasi illimitées. Cependant, la force d’ANNY réside ailleurs. Elle permet d’exécuter en parallèle des tâches chronophages et coûteuses en tokens (comme l’analyse de logs, la rédaction de tests unitaires ou le refactoring de code) sans dépenser un sou et sans aucune latence réseau. C’est le copilote idéal pour le travail de fond, et une façon concrète de rendre vos compétences humaines surpuissantes grâce à l’IA.
Ne cherchez pas à utiliser un seul modèle « bon à tout faire » pour tous vos besoins. Les familles modernes de modèles, comme Qwen2.5, proposent au contraire des variantes spécialisées : par exemple Qwen2.5-Coder est un modèle spécifiquement entraîné sur plusieurs billions de tokens de code pour la génération, le raisonnement et la correction de programmes, tout en conservant des compétences générales et en mathématiques. Pour le développement logiciel, il est donc préférable d’employer un modèle optimisé pour le code (comme Qwen2.5-Coder-14B) et de réserver un autre modèle, plus généraliste ou orienté écriture, pour la rédaction de contenu.
Ce modèle de « seulement » 14 milliards de paramètres s’est révélé être le point d’équilibre parfait. Il est assez léger (environ 9 Go de RAM) pour laisser respirer le système, mais il est spécialisé dans le code, surpassant souvent des modèles généralistes cinq fois plus gros sur des tâches de développement Laravel ou React.
Nexus Neural : Et si la perfection vous coûtait votre humanité ?
Plongez dans un thriller psychologique où la frontière entre l'homme et la machine s'efface.
Commencer la lecture — Tome 1 à 0,99 $L’hybridation : la clé de la réussite
Il est important de noter que même avec cette performance locale incroyable, je ne suis pas un puriste aveugle. Mon système ANNY travaille encore aujourd’hui en collaboration avec des outils comme Claude CODE en mode CLI.
Interface en ligne de commande. C’est l’écran noir un peu minimaliste où l’on tape du texte pour parler directement à l’ordinateur (le « Terminal » sur Mac, ou « Windows Terminal » / « PowerShell » sur PC), par opposition aux interfaces graphiques avec des boutons et des fenêtres.
Pour des tâches d’architecture très complexes ou du raisonnement créatif de haut vol, je bascule parfois vers le cloud. Mais 95% du « brouillon », du refactoring et des tests unitaires sont gérés par Qwen en local, gratuitement et en toute confidentialité.
- L’outil fait la différence : Passer d’un outil générique (Ollama) à un outil natif (MLX) peut multiplier vos performances par 5.
- Le « Right-Sizing » : Choisir un modèle adapté à votre RAM (comme le 14B) vaut mieux que de forcer un modèle géant qui fera ramer votre machine.
- L’hybride : Le but n’est pas de couper Internet, mais de déléguer ce qui peut l’être à votre machine locale.
Vers la performance ultime
Malgré toutes ces optimisations, je dois être honnête : ma configuration actuelle avec le Mac M3 Max et ses 48 Go de RAM atteint ses limites. Pour éviter les plantages, je suis encore obligé de forcer ANNY à prendre de nombreuses pauses entre les tâches lourdes, comme un marathonien qui doit reprendre son souffle. C’est fonctionnel, mais pas encore idéal.
C’est pourquoi j’ai franchi le pas et commandé un nouveau Mac M4 Max équipé de 128 Go de RAM. Cet investissement a un but précis : donner à ANNY l’espace dont elle a besoin pour respirer et, surtout, me permettre de faire tourner des versions plus intelligentes et plus massives du modèle Qwen (les versions 32B ou 70B quantifiées) sans faire suffoquer le système.
Si je reçois la bête avant la publication du prochain article, je vous partagerai les résultats en direct. Sinon, préparez-vous : il y aura probablement un quatrième volet à cette série, dédié à un comparatif sans pitié entre le M3 Max 48 Go et le M4 Max 128 Go. Le match promet d’être intéressant.
Maintenant que nous avons le moteur (le Mac), le carburant (MLX) et le pilote (Qwen), il reste à construire la voiture autour. Dans le troisième et dernier article de cette série, nous verrons comment j’ai transformé cette brique technologique en un véritable assistant proactif grâce aux agents autonomes et à l’intégration dans mon flux de travail quotidien.
Sources
Evaluating the Apple Silicon M-Series SoCs for HPC Performance – arXiv
Exploring LLMs with MLX and the Neural Accelerators – Apple Research
Performance of llama.cpp on Apple Silicon M-series – GitHub
7 Fastest Open Source LLMs You Can Run Locally in 2025 – Medium
Optimizing LLMs Using Quantization For Mobile Execution – arXiv
The 7 Essential Tools for Local LLM Development on macOS – HackerNoon
Local vs cloud for model inference in 2025 – Reddit
Building Local AI Agents: A Guide to LangGraph – DigitalOcean
How to Choose a Local AI in DEVONthink – DEVONtechnologies
Apple Intelligence Foundation Language Models Tech Report 2025 – Apple Research
Mise à jour : la troisième partie est disponible. Je raconte dans le virage MCP comment je suis passé au M4 Max 128 Go et comment j'ai bâti 8 serveurs MCP pour rendre mon IA locale vraiment utile.
Commentaires (0)
Aucun commentaire pour le moment. Soyez le premier !