StarCoder: uw lokale codeerhulp

Microsoft CoPilot heeft een revolutie teweeggebracht op het gebied van softwareontwikkeling. Deze AI-assistent helpt ontwikkelaars enorm met verschillende coderingstaken, waardoor hun leven eenvoudiger wordt. Een nadeel is echter dat het geen standalone applicatie is, maar een cloud-gebaseerde service. Dit betekent dat gebruikers akkoord moeten gaan met de servicevoorwaarden en moeten betalen voor een abonnement.
Gelukkig biedt de wereld van open-source software ons tal van alternatieven. Op het moment van schrijven van dit artikel is het meest opvallende alternatief voor CoPilot StarCoder, ontwikkeld door het BigCode project. StarCoder is een uitgebreid neuraal netwerkmodel met 15,5B parameters, getraind op meer dan 80 programmeertalen.
Dit model wordt gedistribueerd op Hugging Face (HF) met een gated model onder de BigCode OpenRAIL-M v1 licentieovereenkomst. Je kunt dit model gratis downloaden en gebruiken, maar je moet wel een HF-account hebben met een gekoppelde SSH-sleutel. Voordat je kunt downloaden, zijn er een paar extra stappen die je moet nemen.
SSH-sleutel toevoegen aan HF
Voordat je begint, moet je port forwarding (externe poort 7860 naar 127.0.0.1:7860) instellen in je SSH-client. Aanvullende informatie is te vinden in de volgende artikelen:
Werk de pakketcache-repository en geïnstalleerde pakketten bij:
sudo apt update && sudo apt -y upgrade
Laten we de systeempakketbeheerder van Python (PIP) installeren:
sudo apt install python3-pip
Genereer en voeg een SSH-sleutel toe die je kunt gebruiken in Hugging Face:
cd ~/.ssh && ssh-keygen
Wanneer het sleutelpaar is gegenereerd, kun je de publieke sleutel weergeven in de terminal emulator:
cat id_rsa.pub
Kopieer alle informatie beginnend bij ssh-rsa en eindigend met usergpu@gpuserver zoals weergegeven in de volgende schermafbeelding:

Open een webbrowser, typ https://huggingface.co/ in de adresbalk en druk op Enter. Log in op je HF-account en open Profielinstellingen. Kies dan SSH and GPG Keys en klik op de knop Add SSH Key:

Vul de Key name in en plak de gekopieerde SSH Public key van de terminal. Sla de sleutel op door op Add key te drukken:

Nu is je HF-account gekoppeld aan de publieke SSH-sleutel. Het tweede deel (privésleutel) wordt opgeslagen op de server. De volgende stap is het installeren van een specifieke Git LFS (Large File Storage) extensie, die gebruikt wordt voor het downloaden van grote bestanden zoals neurale netwerkmodellen. Open je home directory:
cd ~/
Download en voer het shell script uit. Dit script installeert een nieuwe repository van derden met git-lfs:
curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash
Nu kun je het installeren met de standaard pakketbeheerder:
sudo apt-get install git-lfs
Laten we git configureren om onze HF nickname te gebruiken:
git config --global user.name "John"
En gekoppeld aan het HF e-mailaccount:
git config --global user.email "john.doe@example.com"
Het model downloaden
Houd er rekening mee dat StarCoder in binair formaat een aanzienlijke hoeveelheid schijfruimte in beslag kan nemen (>75 GB). Vergeet niet dit artikel te raadplegen om er zeker van te zijn dat je de juiste partitie gebruikt.
Alles is klaar voor het downloaden van het model. Open de doelmap:
cd /mnt/fastdisk
En begin met het downloaden van de repository:
git clone git@hf.co:bigcode/starcoder
Dit proces duurt maximaal 15 minuten. Wees geduldig. Je kunt dit controleren door het volgende commando in een andere SSH-console uit te voeren:
watch -n 0.5 df -h
Hier zie je hoe de vrije schijfruimte op de gemounte schijf afneemt, wat ervoor zorgt dat de download vordert en de gegevens worden opgeslagen. De status wordt elke halve seconde vernieuwd. Om het bekijken handmatig te stoppen, druk je op de snelkoppeling Ctrl + C.
Het volledige model uitvoeren met WebUI
Kloon de repository van het project:
git clone https://github.com/oobabooga/text-generation-webui.git
Open de gedownloade map:
cd text-generation-webui
Voer het startscript uit:
./start_linux.sh --model-dir /mnt/fastdisk
Het script controleert of de nodige afhankelijkheden op de server aanwezig zijn. Eventuele ontbrekende afhankelijkheden worden automatisch geïnstalleerd. Wanneer de toepassing start, opent u uw webbrowser en typt u het volgende adres in:
http://127.0.0.1:7860
Open het tabblad Model en selecteer het gedownloade model starcoder in de vervolgkeuzelijst. Klik op de lijst Model loader en kies Transformers. Stel de maximale GPU-geheugenschuif in voor elke geïnstalleerde GPU. Dit is heel belangrijk, want als je deze op 0 zet, wordt het gebruik van VRAM beperkt en kan het model niet correct laden. Je moet ook het maximale RAM-gebruik instellen. Klik nu op de knop Load en wacht tot het laden is voltooid:

Ga naar het tabblad Chat en test de conversatie met het model. Houd er rekening mee dat Starcoder niet bedoeld is voor dialogen zoals ChatGPT. Het kan echter wel handig zijn om code te controleren op fouten en oplossingen aan te dragen.

Als je een volwaardig dialoogmodel wilt, kun je twee andere modellen proberen: starchat-alpha en starchat-beta. Deze modellen zijn verfijnd om een dialoog te voeren zoals ChatGPT dat doet. De volgende commando's helpen om deze modellen te downloaden en uit te voeren:
Voor starchat-alpha:
git clone git@hf.co:HuggingFaceH4/starchat-alpha
Voor starchat-beta:
git clone git@hf.co:HuggingFaceH4/starchat-beta
De laadprocedure is hetzelfde als hierboven beschreven. Je kunt ook de C++ implementatie van starcoder vinden, die effectief zal zijn voor CPU-inferentie.
Zie ook:
Bijgewerkt: 13.03.2025
Gepubliceerd: 17.01.2025