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

oobabooga model download

oobabooga model download

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.

oobabooga Video llama 2

oobabooga Video llama 2

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.