Sie fragen - wir antworten!

Apps & Leitfäden

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:

Copy RSA key

Ö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:

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:

Paste the key

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:

Load StarCoder model

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.

Run the StarCoder

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