Ich wollte schon immer mal ein Llama Modell von META ausprobieren und mit der Veröffentlichung von Llama 2 war es dann soweit das ich mich auf die Suche begeben habe wie ich dieses auf meinem Rechner lokal einrichten kann. Es gibt verschiedene Anleitungen aber das beste Framework das ich finden konnte war oobabooga welches auch noch Opensource ist. Nach dem ich mich für das Framework entschieden hatte war noch die Frage welches Llama 2 Modell ich testen soll. Ich habe mich dafür entschieden das Modell Llama-2-13B-Cha zu verwenden, da dieses in den Speicher meiner NVIDIA A6000 Grafikkarte passt. Ich habe mich bei META angemeldet um Zugang zu den aktuellen Llama 2 Modellen zu erhalten. Denn so konnte ich diese dann bei Hugging Face herunter laden. Am Ende habe ich mich dann für das Modell TheBloke_Llama-2-13B-Chat-fp16
entschieden das ich einfach über das Web-Interface von dem oobabooga Framework herunter laden konnte.
Jetzt aber genug Einleitung und los geht es mit der Beschreibung der Installation der notwendigen Komponenten.
Installation oobabooga
Ich habe das oobabooga Framework auf einem Ubuntu System installiert und verwende wie eingangs geschrieben eine NVIDIA A6000 Grafikkarte in die ich das Llama 2 Modell laden kann.
Hier die GitHub Seite die euch zu dem Framework führt.
GitHub: https://github.com/oobabooga/text-generation-webui
Anaconda Umgebung anlegen
Die Installation des Frameworks oobabooga erfolgt in einer eigenen Anaconda Umgebung. So können wir diese Installation und die dafür notwendigen Pakete von den anderen Installationen trennen. Bitte jetzt die beiden nachfolgenden Befehle ausführen.
Befehl: conda create -n Llama_2_textgen python=3.10.9
Jetzt ist die Anaconda Umgebung mit dem Namen Llama_2_textgen
angelegt und kann wie nachfolgenden gezeigt gestartet werden.
Befehl: conda activate Llama_2_textgen
Hinweis: Sollte Anaconda noch nicht auf eurem System installiert sein das könnt ihr hier nachlesen wie ihr Anaconda unter Ubuntu installiert.
Install Pytorch
Damit alles rund läuft muss noch torch und ein paar Pakete installiert werden. Das macht ihr mit dem folgenden Befehl.
Befehl: pip3 install torch torchvision torchaudio
Herunterladen des oobabooga Frameworks
Befehl: git clone https://github.com/oobabooga/text-generation-webui
Befehl: cd text-generation-webui
Befehl: pip install -r requirements.txt
bitsandbytes installieren
Befehl: pip install bitsandbytes==0.38.1
Ich musste zusätlich noch in meiner CONDA Umgebung die folgenden zusätzlichen Module installieren.
Befehl: pip install idna
Befehl: pip install certifi
Befehl: pip install pytz
Befehl: pip install six
Befehl: pip install pyyaml
Befehl: pip install pyparsing
Befehl: pip install click
Anschließend konnte ich tatsächlich die Anwendung also das Web-UI starten.
Starten des Web-Interfaces von oobabooga
Befehl: conda activate Llama_2_textgen
Befehl: cd text-generation-webui
Befehl: python server.py
LLM Modelle herunterladen
Auf der Web-Oberfläche von oobabooga könnt ihr im Reiter Model den Namen rechts im Punkt Download custom model or LoRA eintragen und auf download tippen. Jetzt wird das entsprechende Modell von Hugging Face herunter geladen und eingerichtet. Das nachfolgende Modell TheBloke/Llama-2-13B-Chat-fp16 konnte ich mit meiner NVIDIA A6000 ohne Probleme lokal laden.
Model Name: TheBloke/Llama-2-13B-Chat-fp16
Das Modell belegt ca. 29 GB Speicher auf der Grafikkarte. Was aber wohl auch bedeutet, dass das 30B Modell wenn es verfügbar ist wohl nicht mehr ohne weiteres geladen werden kann.
Llama 2 – GPU Speicherplatz Berechnung
Wenn ihr berechnen wollt welches Modell maximal in den Speicher von eurer Grafikkarte passt dann möchte ich nachfolgend einaml kurz erklären wie diese Berechnung funktioniert am Beispiel eines 70B Modelles.
Anzahl Parameter = 70.000.000.000
32 Bit an Informationen = 32 bit
1 Byte = 8 Bit
Berechnung: (70.000.000.000 * 32) / 8 = 280.000.000.000 Byte = 280 GB
Damit würden wir einen Video RAM von einer Größe von 280GB GPU RAM benötigen um das 70B Modell zu laden.
Wer nicht selber rechnen möchte kann mit der Hilfe dieses Parameter-Rechners ganz einfach die Berechnung vornehmen..
URL: https://kdcreer.com/parameter_calculator
Ich hatte versucht das 70B Modell teils in den Video-RAM meiner Grafikkarte zu laden und teils auf eine schnelle M2 SSD auszulagern aber die Reaktionszeit des Netzes war unerträglich langsam für einen Menschen.
Das deutlich größere Modell mit TheBloke/Llama-2-70B-Chat-fp16 passte wie zu erwarten nicht in den Speicher meiner NVIDIA A6000 der mit 48GB RAM einfach zu klein ist.
Model Name: TheBloke/Llama-2-70B-Chat-fp16
Starten des Web-Interfaces – erweiterter Aufruf
Möchtet ihr das oobabooga automatisch startet und gleich mit ein paar voreingestellten Parametern wie z. B. dem zu ladenden Modell startet dann sieht der Befehl wie folgt aus. Wie ihr das Ganze dann als Cron-Job startet habe ich auf meinem Blog hier schon ein paar Mal erklärt und hier findet ihr dazu eine Erklärung die ihr vom Prinzip her verwenden könnt.
Befehl: python server.py --chat --multi-user --share --model TheBloke_Llama-2-13B-Chat-fp16 --gradio-auth <User-Name>:<Password>
Video
Ich habe auch ein kleines Video aufgenommen das zeigt wie schnell das Modell antwortet auf meinem Rechner. Ich fande das sehr beeindruckend und war begeistert.
Aktualisieren der Intallation
Solltet ihr eure Installation von oobabooga auf den neuesten Stand bringen wollen dann müsst ihr die folgenden Befehle ausführen.
Befehl: conda activate Llama_2_textgen
Befehl: cd text-generation-webui
Befehl: pip install -r requirements.txt --upgrade
Zusammenfassung
Ich dachte ja das es schwieriger ist Llama 2 auf meinem Rechner lokal zum Laufen zu bekommen. Aber das oobabooga Framework nimmt einen hier sehr viel Arbeit ab. Etwas Schwierigkeiten hatte ich natürlich das Framework selber installiert zu bekommen. Aber am Ende hat es dann doch alles geklappt und jetzt läuft es einfach wunderbar und ich kann das Modell etwas testen und mir überlegen für welchen Einsatzweck ich es verwenden könnte. Im Großen und Ganzen bin ich sehr zufrieden und werde tiefer in das Thema der großen Sprachenmodelle einsteigen.
Hallo Anton, die Meldung besagt das in meinem Beisiel Methoden verwendet werden die veraltet (deprecated) sind. Also müsstest Du die…
Danke für das Tool! Ich habe erst kürzlich angefangen mich mit der Thematik zu beschäftigen und bin für meine Erwartungen…
Hallo, ich habe ihre Anleitung befolgt und bekomme im letzten Schritt leider immer folgende Meldung im Terminal: bash <(wget -qO-…
Hi Dennis, vielen Dank für den Hinweis, ich habe die URLs angepasst so das diese wieder gehen. Ich bin gespannt…
Ich weiss, es ist noch im Aufbau. Aber hier ist ein Broken Link: https://www.ai-box.eu/smurf_training_data_small.zip Freue mich drauf, die ganze Serie…