Mit diesem Beitrag möchte ich euch helfen lokal unter Ubuntu 22.04 Llama 2 in der 70B Version auf einer NVIDIA A6000 laufen zu lassen. Natürlich geht das nicht ohne weiteres da das klassische Llama 2 70B Modell einen GPU Speicher von ca. 280GB benötigt in der Float32 Bit Version. Aber quantisiert man das Modell auf INT4 bit dann passt es in den Speicher der NVIDIA A6000 mit ihren 48GB GPU Ram. Das Modell belegt dann ca. 40GB Ram und läuft in einer annehmlichen Geschwindigkeit.

Ich bin der Video Anleitung von James Briggs auf YouTube gefolgt die sehr gut erklärt wie man das Modell zum Laufen bekommt. Allerdings fehlt dieser Anleitung das Aufsetzen der Umgebung unter Ubuntu in der alles eingerichtet wird. Genau hier hatte ich so meine kleineren Herausforderungen bis alles lieg. Daher startet meine Anleitung damit die Laufzeitumgebung einzurichten. Anschließend funktioniert alles ohne Probleme.

Hier noch der Link zu dem YouTube Video von James Briggs: Llama 2 in LangChain — FIRST Open Source Conversational Agent!

Hinweis Hardware: Damit ihr auf eurem Rechner das Llama 2 70B Modell wie in dieser Anleitung beschrieben einrichten könnt braucht ihr ca. 200GB freien Speicher und eine Grafikkarte mit 48GB Video RAM / GPU RAM.

Laufzeitumgebung einrichten:

Als erstes habe ich eine conda Umgebung angelegt mit dem Namen Llama_2_70B und Python 3.10.9. In dieser Umgebung hatte ich das Problem das ich immer wieder Fehlermeldungen betreffend CUDA erhalten habe. So habe ich in der aktiven conda Umgebung Llama_2_70B noch CUDA installiert.

Befehl: conda create -n Llama_2_70B python=3.10.9

Befehl: conda activate Llama_2_70B

CUDA Installation:

Bei der Installation von CUDA bin ich der nachfolgend verlinkten Anleitung gefolgt und habe die Befehle einfach copy & paste einen nach dem anderen ausgeführt.

Link: CUDA Installation-Anleitung

Anschließend nach dem CUDA installiert war musste ich noch click installieren. Ein Neustart hatte ich jetzt noch ausgeführt danach der CUDA Installation mein Rechner mich dazu aufgefordert hatte.

Befehl: conda install -c conda-forge click

Anschließend nach dem mein Rechner wieder hochgefahren war und ich in der aktiven conda Umgebung Llama_2_70B im Terminal Fenster angemeldet war habe ich noch Jupyter in installiert. Jupyter braucht ihr um das Jypyter Notebook das James Briggs online gestellt hat ausführen zu können.

Befehl: pip install jupyter

Hier der Link zu dem Jupyter Notebook das ihr noch braucht.

Link zum Jupyter Notebook: llama-2-70b-chat-agent.ipynb

Jetzt ist eigentlich alles soweit eingerichtet und Jupyter kann mit dem folgenden Befehl gestartet werden. Bevor ihr den Befehl ausführt wechselt ihr in den Ordner in dem ihr das Notebook zuvor abgelegt habt. Dann seht ihr dieses gleich und könnt es ausführen.

Befehl: jupyter notebook

Denkt daran wenn ihr das Jupyter Notebook ausführt das ihr ein Hugging Face token braucht um das Llama 2 Modell herunter laden zu können. Das geht nur wenn ihr von META die Lizenzbestimmungen angenommen habt und für die Registrierung bei META die gleiche E-Mailadresse verwendet habt die ihr auch bei Hugging Face nutzt. Dann steht dem Download des Llama 2 70B Modell nichts mehr im Wege.

Bei mir sah der Download des Modelles im Notebook wie im folgenden Bild gezeigt aus.

Downloading llama 2 hugging face

Downloading llama 2 hugging face

Wenn ihr jetzt den Speicherort des herunter geladenen Llama 2 Modell sucht dann findet ihr das Modell im Ordner .cache in eurem Homeverzeichnis unter dem folgenden Pfad.

Pfad: ~/.cache/huggingface/hub/models--meta-llama--Llama-2-70b-chat-hf/blobs

Hugging Face HUB cache folder

Hugging Face HUB cache folder

Hinweis: Startet ihr die virtuelle Conda Umgebung neu bzw. den Rechner und führt das Notebook erneut aus, dann wird das Llama 2 Modell nicht erneut herunter geladen. Denn es liegt bereits im .cache Ordner auf eurem Rechner und wird von dort aus wieder in den Speicher der GPU geladen.

Ab jetzt folgt ihr am Besten dem Video von James Briggs da ihr über den folgenden Link aufrufen könnt: Llama 2 in LangChain — FIRST Open Source Conversational Agent!

Video – Llama 2 70B lokal

Hier das kleine Video von mir das meinen Rechner und das leicht angepasst Notebook zeigt. In dem Video ist die Performance des Modelles auf meinem Rechner zu sehen. Ich gebe jeweils die Startzeit und Endzeit aus sowie der Laufzeit die das Modell für die Generierung der Antwort gebraucht hat.

Llama 2 70B Model local runtime

Llama 2 70B Model local runtime

Zusammenfassung

Ich bin begeistert wie gut alles funktioniert hat und wie einfach alles war nach dem ich die Laufzeitumgebung richtig konfiguriert hatte. Die meiste Zeit hatte ich gebraucht die Laufzeitumgebung einzurichten. Denn ich hatte eine etwas langwierige Fehlermeldung die erst beseitigt war als ich die passende CUDA Version in der Conda Umgebung installiert hatte. Nach dem dann alles soweit eingerichtet war hatte ich meine Freude mit LangChain, Hugging Face und dem Llama 2 70B Modell. Es ist wirklich beeindruckend wie gut alles funktioniert und vor allem wie einfach. Schön ist auch, dass ich nach einem Neustart das Llama 2 Modell nicht erneut herunter laden muss. So dauert es nur ein paar Minuten bis alles in den Speicher der GPU geladen ist.