J’ai découvert dernièrement un assistant de codage basé sur une IA, qu’on peut auto-héberger chez soi, qui n’envoie aucune requête sur internet ou besoin de service cloud, gratuit et open-source. Cet assistant s’appelle TabbyML.
Sur le site de tabbyML (cf. sources) on peut découvrir que l’outil peut s’installer de façon rapide aussi bien sur Linux/Mac/Windows. Il gère plus d’une dizaine de langages (C / C++ / C# / Java / Go / Rust / Python / PHP…) ce qui est bien pratique. On peut voir aussi qu’il s’intègre avec Visual Studio Code, Intellij platform (PyCharm, GoLand, CLion…) et VIM pour les plus puristes d’entres-nous.
Parti de là, et ayant reçu mon nouveau Raspberry PI, j’ai décidé de tester ! 😁
Fonctionnement de Tabby
Pour utiliser Tabby, il suffit de l’installer et de le lancer. Lors du lancement, on peut choisir à partir de quel model il doit se baser. On peux aussi le démarrer en CPU ou bien en CUDA pour ceux qui possèdent une carte graphique Nvidia compatible. Il est possible de le lancer via Docker mais pour ma part, dans mes tests, j’ai préféré l’avoir directement sur ma machine.
Test sur un Raspberry PI 5 (8GB)
1. Installation de Tabby
L’installation sur un Raspberry PI n’est pas documenté mais le source est en Rust, il est donc compilable.
J’ai dû m’y reprendre à plusieurs fois pour que ça fonctionne car il me manquait des librairies. Pour les curieux qui souhaiteraient refaire l’expérience, je vous mets les commandes que j’ai du effectuer en ssh sur le Pi.
# rust install
curl https://sh.rustup.rs -sSf | sh
# select choice '1'
# Needed to compile Tabby
sudo apt install -y protobuf-compiler libopenblas-dev \
libssl-dev cmake
# compile
cargo build -r
La compilation a pris un certain temps… ☕

La compilation ayant fonctionné, j’étais très content de pouvoir le tester ! 👌😊
2. Lancement de Tabby
Une fois compilé, il a fallu le lancer. En me basant sur la documentation, j’ai décidé de le lancer avec le model le plus simpliste (n’oublions pas que nous sommes sur un raspberry).
La liste des models est disponible depuis le site de Tabby ici
./tabby serve --model StarCoder-1B
Au premier lancement, il va télécharger automatiquement le modèle

Puis lancer le serveur. On notera qu’il se lance par défaut sur le port 8080 en localhost.

3. Préparation du client
Tabby fonctionnant via Visual Studio Code, j’ai décidé de l’utiliser comme client pour tester Tabby. L’installation a été assez simple, un plugin Tabby étant disponible. La configuration a aussi été simple puisque dans les paramètres, j’ai simplement défini l’ip de mon Raspberry et le port.


Une fois installé, on peut voir en bas de l’éditeur une petite zone pour Tabby apparaître

4. Test
Pour faire ce test, j’ai repris mon code d’un Kata que j’avais crée il y a quelques temps de ça et je l’ai donc utilisé pour tester Tabby. Cela a fonctionné mais les performances n’étaient pas au rendez-vous, ce qui ne me surprend pas puisqu’un raspberry pi pour faire tourner de l’IA n’est pas vraiment adapté.
Test sur un PC classique
J’ai voulu tester sur mon PC pour voir ce que cela donnerait. en ce qui concerne l’installation, Tabby propose de télécharger le binaire directement pour Windows, ce qui a été bien plus simple que depuis mon Pi.
Lien vers les release de Tabby
J’ai effectué un test en mode CPU et CUDA, voici quelques informations sur la configuration pour vous donner du contexte:
- CPU : i7-12700k
- CG : RTX-2070-super
- Disque : SSD Crucial MX500
Résultats
Test d’une suggestion de création d’un test unitaire :
Suggestion attendue (je n’ai pas eu toujours la même réponse, ce qui est normal via une IA génératrice)

| Configuration | Temps moyen |
|---|---|
| PI 5 | ~28-35s |
| X64 CPU | ~2-5s |
| CUDA GPU | Quasi-instantané |
Note:
Lors des essais avec le PI et en mode CPU, j’ai pu constater que l’icône Tabby en dans la barre d’état de Visual Studio code passait au jaune. En cliquant dessus, j’ai pu obtenir le message suivant :

Il est cependant possible de lui dire de ne plus afficher l’erreur pour résoudre le problème
Conclusion
Tabby est un outil assez efficace pour de la complétion de code par IA. Il est très utile pour les développeurs qui souhaitent développer rapidement. Même s’il n’est pas aussi pertinent que des solutions payantes comme Copilot, il reste cependant accessible et gratuit, ce qui lui permet d’être une solution alternative intéressante.
J’ai pu expérimenter d’autres profils avec un meilleur jeu de données. J’ai pu constater une complétion plus efficiente mais l’utilisation du GPU est dans ce cas obligatoire. Dans le cas contraire, on risque de se retrouver à attendre très régulièrement le traitement ce qui est gênant.
Je ne l’ai pas précisé plus tôt mais il est possible de le passer en mode manuel. Dans ce mode, il est possible de faire une combinaison de touches pour le lancer, ce qui évite que le CPU/GPU tourne quasi constamment lorsqu’on rédige du code.
Durant la rédaction de cet article, j’ai aussi constaté qu’il pouvait aider à de la rédaction de texte, ce qui en fait aussi un assistant pour de la documentation. C’est une belle découverte et j’ignorais qu’il pouvait le faire.
Il existe une version payante plus complète ainsi qu’une interface d’administration pour les entreprises. Je ne l’ai pas testé car j’en ai pas senti le besoin mais c’est intéressant de le savoir.
Je pense que son utilisation via un mini-ordinateur externe ou via son propre CPU n’est pas très efficace. Je le recommanderais plus aux personnes ayant une carte graphique ou un serveur dédié. Pour une petite entreprise ou pour un indépendant qui souhaiterait avoir de l’IA en aide de code, je pense que c’est un outil qui peut être intéressant.
