StarCoder: Ihr lokaler Assistent für die Programmierung

Microsoft CoPilot hat eine Revolution im Bereich der Softwareentwicklung ausgelöst. Dieser KI-Assistent hilft Entwicklern bei verschiedenen Codierungsaufgaben und macht ihnen das Leben leichter. Ein Nachteil ist jedoch, dass es sich nicht um eine eigenständige Anwendung, sondern um einen cloudbasierten Dienst handelt. Das bedeutet, dass die Nutzer den Nutzungsbedingungen zustimmen und für ein Abonnement bezahlen müssen.
Zum Glück gibt es in der Welt der Open-Source-Software zahlreiche Alternativen. Zum Zeitpunkt der Erstellung dieses Artikels ist die bemerkenswerteste Alternative zu CoPilot StarCoder, das vom BigCode-Projekt entwickelt wurde. StarCoder ist ein umfangreiches neuronales Netzmodell mit 15,5 B Parametern, das auf über 80 Programmiersprachen trainiert wurde.
Dieses Modell wird auf Hugging Face (HF) unter Verwendung eines Gated Models unter der BigCode OpenRAIL-M v1 Lizenzvereinbarung vertrieben. Sie können dieses Modell kostenlos herunterladen und verwenden, benötigen aber ein HF-Konto mit einem verknüpften SSH-Schlüssel. Bevor Sie das Modell herunterladen können, müssen Sie einige zusätzliche Schritte unternehmen.
SSH-Schlüssel zu HF hinzufügen
Bevor Sie beginnen, müssen Sie in Ihrem SSH-Client eine Portweiterleitung einrichten (Remote-Port 7860 auf 127.0.0.1:7860). Weitere Informationen finden Sie in den folgenden Artikeln:
Aktualisieren Sie das Paket-Cache-Repository und die installierten Pakete:
sudo apt update && sudo apt -y upgrade
Installieren Sie den System-Paketmanager von Python (PIP):
sudo apt install python3-pip
Erzeugen und fügen Sie einen SSH-Schlüssel hinzu, den Sie in Hugging Face verwenden können:
cd ~/.ssh && ssh-keygen
Wenn das Schlüsselpaar generiert ist, können Sie den öffentlichen Schlüssel im Terminalemulator anzeigen:
cat id_rsa.pub
Kopieren Sie alle Informationen, die mit ssh-rsa beginnen und mit usergpu@gpuserver enden, wie im folgenden Screenshot gezeigt:

Öffnen Sie einen Webbrowser, geben Sie https://huggingface.co/ in die Adresszeile ein und drücken Sie Enter. Loggen Sie sich in Ihren HF-Account ein und öffnen Sie die Profileinstellungen. Wählen Sie dann SSH and GPG Keys und klicken Sie auf die Schaltfläche Add SSH Key:

Füllen Sie Key name aus und fügen Sie den kopierten SSH Public key aus dem Terminal ein. Speichern Sie den Schlüssel, indem Sie Add key drücken:

Jetzt ist Ihr HF-Konto mit dem öffentlichen SSH-Schlüssel verknüpft. Der zweite Teil (privater Schlüssel) ist auf dem Server gespeichert. Der nächste Schritt ist die Installation einer speziellen Git LFS-Erweiterung (Large File Storage), die für das Herunterladen großer Dateien wie z. B. Modelle neuronaler Netze verwendet wird. Öffnen Sie Ihr Home-Verzeichnis:
cd ~/
Laden Sie das Shell-Skript herunter und führen Sie es aus. Dieses Skript installiert ein neues Drittanbieter-Repository mit git-lfs:
curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash
Nun können Sie es mit dem Standard-Paketmanager installieren:
sudo apt-get install git-lfs
Lassen Sie uns git so konfigurieren, dass es unseren HF-Nickname verwendet:
git config --global user.name "John"
Und mit dem HF-E-Mail-Konto verknüpft:
git config --global user.email "john.doe@example.com"
Das Modell herunterladen
Bitte beachten Sie, dass StarCoder im Binärformat eine beträchtliche Menge an Festplattenspeicher beanspruchen kann (>75 GB). Vergessen Sie nicht, diesen Artikel zu lesen, um sicherzustellen, dass Sie die richtige gemountete Partition verwenden.
Alles ist bereit für den Download des Modells. Öffnen Sie das Zielverzeichnis:
cd /mnt/fastdisk
Und starten Sie den Download des Repositorys:
git clone git@hf.co:bigcode/starcoder
Dieser Vorgang dauert bis zu 15 Minuten. Bitte haben Sie Geduld. Sie können dies überwachen, indem Sie den folgenden Befehl in einer anderen SSH-Konsole ausführen:
watch -n 0.5 df -h
Hier sehen Sie, wie der freie Speicherplatz auf dem gemounteten Datenträger verringert wird, um sicherzustellen, dass der Download fortschreitet und die Daten gespeichert werden. Der Status wird jede halbe Sekunde aktualisiert. Um die Anzeige manuell zu beenden, drücken Sie die Tastenkombination Ctrl + C.
Ausführen des vollständigen Modells mit WebUI
Klonen Sie das Repository des Projekts:
git clone https://github.com/oobabooga/text-generation-webui.git
Öffnen Sie das heruntergeladene Verzeichnis:
cd text-generation-webui
Führen Sie das Startskript aus:
./start_linux.sh --model-dir /mnt/fastdisk
Das Skript prüft, ob die notwendigen Abhängigkeiten auf dem Server vorhanden sind. Eventuell fehlende Abhängigkeiten werden automatisch installiert. Wenn die Anwendung startet, öffnen Sie Ihren Webbrowser und geben Sie die folgende Adresse ein:
http://127.0.0.1:7860
Öffnen Sie die Registerkarte Model und wählen Sie in der Dropdown-Liste das heruntergeladene Modell starcoder aus. Klicken Sie auf die Liste Model loader und wählen Sie Transformers. Stellen Sie den Schieberegler für den maximalen GPU-Speicher für jede installierte GPU ein. Dies ist sehr wichtig, da ein Wert von 0 die Verwendung von VRAM einschränkt und verhindert, dass das Modell korrekt geladen wird. Sie müssen auch die maximale RAM-Nutzung einstellen. Klicken Sie nun auf die Schaltfläche Load und warten Sie, bis der Ladevorgang abgeschlossen ist:

Wechseln Sie auf die Registerkarte Chat und testen Sie die Konversation mit dem Modell. Bitte beachte, dass Starcoder nicht für Dialoge wie ChatGPT gedacht ist. Es kann jedoch nützlich sein, um den Code auf Fehler zu überprüfen und Lösungen vorzuschlagen.

Wenn du ein vollwertiges Dialogmodell haben möchtest, kannst du zwei andere Modelle ausprobieren: starchat-alpha und starchat-beta. Diese Modelle wurden so angepasst, dass sie genau wie ChatGPT einen Dialog führen. Die folgenden Befehle helfen, diese Modelle herunterzuladen und auszuführen:
Für starchat-alpha:
git clone git@hf.co:HuggingFaceH4/starchat-alpha
Für starchat-beta:
git clone git@hf.co:HuggingFaceH4/starchat-beta
Das Ladeverfahren ist das gleiche wie oben beschrieben. Außerdem können Sie eine C++-Implementierung von starcoder finden, die für die CPU-Inferenz effektiv sein wird.
Siehe auch:
Aktualisiert: 13.03.2025
Veröffentlicht: 17.01.2025