StarCoder : votre assistant de codage local

Microsoft CoPilot a révolutionné le domaine du développement logiciel. Cet assistant IA aide grandement les développeurs à effectuer diverses tâches de codage, leur facilitant ainsi la vie. Cependant, l'un des inconvénients est qu'il ne s'agit pas d'une application autonome, mais plutôt d'un service basé sur le cloud. Cela signifie que les utilisateurs doivent accepter les conditions générales du service et payer un abonnement.
Heureusement, le monde des logiciels libres nous offre de nombreuses alternatives. Au moment de la rédaction de cet article, l'alternative la plus notable à CoPilot est StarCoder, développé par le projet BigCode. StarCoder est un modèle de réseau neuronal étendu avec 15,5 milliards de paramètres, entraîné sur plus de 80 langages de programmation.
Ce modèle est distribué sur Hugging Face (HF) à l'aide d'un modèle gated sous l'accord de licence BigCode OpenRAIL-M v1. Vous pouvez télécharger et utiliser ce modèle gratuitement, mais vous devez avoir un compte HF avec une clé SSH associée. Avant de pouvoir télécharger, vous devez suivre quelques étapes supplémentaires.
Ajouter une clé SSH à HF
Avant de commencer, vous devez configurer le transfert de port (port distant 7860 vers 127.0.0.1:7860) dans votre client SSH. Vous trouverez des informations supplémentaires dans les articles suivants :
Mettre à jour le dépôt de cache des paquets et les paquets installés :
sudo apt update && sudo apt -y upgrade
Installons le gestionnaire de paquets du système Python (PIP) :
sudo apt install python3-pip
Générer et ajouter une clé SSH que vous pouvez utiliser dans Hugging Face :
cd ~/.ssh && ssh-keygen
Lorsque la paire de clés est générée, vous pouvez afficher la clé publique dans l'émulateur de terminal :
cat id_rsa.pub
Copiez toutes les informations commençant par ssh-rsa et se terminant par usergpu@gpuserver comme indiqué dans la capture d'écran suivante :

Ouvrez un navigateur web, tapez https://huggingface.co/ dans la barre d'adresse et appuyez sur Enter. Connectez-vous à votre compte HF et ouvrez les paramètres du profil. Choisissez ensuite SSH and GPG Keys et cliquez sur le bouton Add SSH Key:

Remplissez le Key name et collez le SSH Public key copié depuis le terminal. Sauvegardez la clé en appuyant sur Add key:

Maintenant, votre compte HF est lié à la clé SSH publique. La seconde partie (clé privée) est stockée sur le serveur. L'étape suivante consiste à installer une extension Git LFS (Large File Storage) spécifique, qui est utilisée pour télécharger des fichiers volumineux tels que des modèles de réseaux neuronaux. Ouvrez votre répertoire personnel :
cd ~/
Téléchargez et exécutez le script shell. Ce script installe un nouveau dépôt tiers avec git-lfs :
curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash
Vous pouvez maintenant l'installer à l'aide du gestionnaire de paquets standard :
sudo apt-get install git-lfs
Configurons git pour qu'il utilise notre pseudo HF :
git config --global user.name "John"
Et lié au compte email HF :
git config --global user.email "john.doe@example.com"
Télécharger le modèle
Veuillez noter que StarCoder au format binaire peut prendre beaucoup d'espace disque (>75 GB). N'oubliez pas de vous référer à cet article pour vous assurer que vous utilisez la bonne partition montée.
Tout est prêt pour le téléchargement du modèle. Ouvrez le répertoire cible :
cd /mnt/fastdisk
et commencez à télécharger le référentiel :
git clone git@hf.co:bigcode/starcoder
Ce processus peut prendre jusqu'à 15 minutes. Soyez patient. Vous pouvez surveiller ce processus en exécutant la commande suivante dans une autre console SSH :
watch -n 0.5 df -h
Vous verrez alors que l'espace libre sur le disque monté se réduit, ce qui garantit que le téléchargement progresse et que les données sont sauvegardées. L'état est actualisé toutes les demi-secondes. Pour arrêter manuellement la visualisation, appuyez sur le raccourci Ctrl + C.
Exécuter le modèle complet avec l'interface WebUI
Clonez le dépôt du projet :
git clone https://github.com/oobabooga/text-generation-webui.git
Ouvrir le répertoire téléchargé :
cd text-generation-webui
Exécuter le script de démarrage :
./start_linux.sh --model-dir /mnt/fastdisk
Le script vérifiera la présence des dépendances nécessaires sur le serveur. Toute dépendance manquante sera installée automatiquement. Lorsque l'application démarre, ouvrez votre navigateur web et tapez l'adresse suivante :
http://127.0.0.1:7860
Ouvrez l'onglet Model et sélectionnez le modèle téléchargé starcoder dans la liste déroulante. Cliquez sur la liste Model loader et choisissez Transformers. Réglez le curseur de mémoire maximale du GPU pour chaque GPU installé. Ce paramètre est très important, car s'il est fixé à 0, l'utilisation de la VRAM est limitée et le modèle ne peut pas se charger correctement. Vous devez également définir l'utilisation maximale de la mémoire vive. Cliquez maintenant sur le bouton Load et attendez la fin du processus de chargement :

Passez à l'onglet Chat et testez la conversation avec le modèle. Veuillez noter que Starcoder n'est pas destiné à des dialogues comme ChatGPT. Cependant, il peut être utile pour vérifier les erreurs dans le code et suggérer des solutions.

Si vous souhaitez obtenir un modèle de dialogue complet, vous pouvez essayer deux autres modèles : starchat-alpha et starchat-beta. Ces modèles ont été mis au point pour conduire un dialogue comme le fait ChatGPT. Les commandes suivantes permettent de télécharger et d'exécuter ces modèles :
Pour starchat-alpha :
git clone git@hf.co:HuggingFaceH4/starchat-alpha
Pour starchat-beta :
git clone git@hf.co:HuggingFaceH4/starchat-beta
La procédure de chargement est la même que celle décrite ci-dessus. Vous trouverez également une implémentation C++ de starcoder, qui sera efficace pour l'inférence CPU.
Voir aussi:
Mis à jour: 13.03.2025
Publié: 17.01.2025