ChatGPT ist mittlerweile ja sehr gut bekannt. Weniger bekannt ist, dass man sehr einfach ein LLM (Large Language Model = großes Sprachmodell) lokal auf dem eigenen Rechner laufen lassen kann.
Die Rede ist hier von Ollama, eine Software von META (Facebook), welche unter MIT-Lizenz frei verfügbar ist.
Die Hardware-Anforderungen für das heutige Türchen sind mittel bis hoch. Ein einigermaßen aktueller Rechner und ein paar Gigabyte freier Speicher sollten ausreichen. Eine schnelle CPU, oder noch besser eine gute Grafikkarte, sind natürlich von Vorteil.
Installation
Die Installation ist wirklich einfach. Hierzu müssen wir ein Bash-Skript herunterladen und als Root ausführen, welches die Installation durchführt.
Bei einem fremden Shell-Skript sollte man generell immer vorsichtig sein, gerade wenn man es als Root ausführt!
Wer mag kann sich das Skript gerne herunterladen und ansehen.
Bei der Installation werden etwa folgende Schritte durchgeführt:
- den Server nachladen und unter /usr/local/bin/ollama speichern
- Ein paar Libs nach /usr/local/lib/ollama verlinken
- Einen Service anlegen und starten
Code: Alles auswählen
curl -fsSL https://ollama.com/install.sh | sh
Nun benötigen wir noch ein geeignetes Sprachmodell. Da es bei Ollama mittlerweile um die 100 Modelle gibt, hier noch ein paar Informationen.
Modell-Zweck
Es hängt viel davon ab, mit welchen Daten und für welchen Zweck ein Modell trainiert wurde.
Hier gibt es vor allem zwei große Bereiche:
- Allzweck-Modelle
- Coder, welche Quellcode generieren oder analysieren können.
Anekdote: Ein Modell behauptete ernsthaft, ein B-Tree sei eine "Art von Bäumelichung"!
Größe
Manche Sprachmodelle gibt es in mehreren Ausführungen. Diese nennen sich dann z.B. 3b, 7b oder 15b.
Ein "7b-Modell" hat etwa eine Dateigröße von 4 bis 5 GB und benötigt circa 8 GB an Arbeitsspeicher oder Speicher auf der Grafikkarte. Ein "27b-Modell" ist somit für etwa 32 GB freien Speicher ausgelegt und hat eine Dateigröße von ca. 15 GB. Zudem benötigt ein "27b-Modell" gerne mehr Rechenleistung als ein "3b-Modell".
Somit sollte bereits klar sein, dass man ein "405b-Modell" meist eher nicht herunterladen braucht.
Weiter kann man grob sagen, dass größere Modelle einfach mehr können (wissen), als kleinere Modelle.
Zensiert
Ein weiterer Punkt ist, wie stark ein Modell zensiert ist.
Manche Modelle sagen z.B., dass sie zwar diesen oder jenen Songtext kennen, jedoch nicht ausgeben dürfen. Andere Modelle geben die Lyrics ohne murren aus, verweisen aber vielleicht auf das Copyright.
Als Beispiel: "Gemma2" (Google) ist zwar sehr gut, aber auch stark zensiert.
Welches Modell nun?
Ein Sprachmodell sollte hierzulande gutes Deutsch können und sinnvolle, sowie (meist) korrekte Antworten liefern.
Ansonsten ist das alles irgendwie den Aufwand nicht wert.
Meiner Erfahrung nach fallen hier alle Modelle mit weniger als "3b" durch. Ein "7b" liefert hingegen meist brauchbare Ergebnisse und ein 27b weiß einfach mehr.
Auf der folgenden Seite sind alle verfügbaren Modelle und Größen aufgelistet:
https://ollama.com/search
Generell empfehlen kann ich:
- openhermes
- openchat
- gemma2 (Google, gut aber stark zensiert)
Ein Modell kann bequem als normaler User (nicht Root) wie folgt installiert werden:
Code: Alles auswählen
ollama pull <modell>:<größe>
Für den Einstieg installieren wir "openhermes", ein 7b-Modell welches meist gut Deutsch spricht.
Code: Alles auswählen
ollama pull openhermes
Code: Alles auswählen
ollama list
Sobald das Modell fertig geladen ist, können wir es starten:
Code: Alles auswählen
ollama run openhermes
Der nun gestartete Client ist relativ einfach gehalten, unterstützt aber ein paar gängige Tastenkürzel wie:
- Strg+A und Strg+E (Anfang/Ende)
- Strg+F und Strg+B (vor/zurück)
- Strg+U und Strg+K (löschen nach links/rechts)
Mit "Strg+D" lässt sich der Client beenden.
Wozu das Ganze?
Wer noch keine Erfahrung mit LLM's hat, hier ein paar Aufgabengebiete:
- Fragen beantworten
- Rechtschreibung prüfen
- Texte verfassen
- Texte übersetzen
- Texte oder Programme analysieren
Grund: LLM's können einerseits beim Training in irgendeine Richtung beeinflusst werden, andererseits neigen sie zum halluzinieren wenn nicht genug Informationen vorhanden sind.
Hier muss man auch klar sagen, dass die heutzutage verfügbaren LLM's nur eine schwache künstliche Intelligenz sind.
Ich betrachte sie mehr wie eine große Datenbank, welche mit eigenen Worten befragt werden kann.
Programmieren
Sehr nützlich können LLM's beim Programmieren sein. Eine kurz beschriebene Aufgabenstellung kann so sehr schnell in der gewünschten Programmiersprache umgesetzt werden.
Hier sind aus meiner Sicht folgende Modelle einen Blick wert:
- deepseek-coder-v2:16b (sehr flott)
- qwen2.5-coder:7b
- codellama:7b
- codeqwen:7b
- starcoder2:7b
Übrigens, ein Modell lässt sich bequem wieder entfernen:
Code: Alles auswählen
ollama rm <modell>
LLM's sind definitiv nicht perfekt!
Aber bewusst eingesetzt können sie ein gutes Werkzeug sein. Gerade im Bereich der Programmierung haben sie aus meiner Sicht sehr viel Potential.
Zu Ollama gibt es übrigens noch unzählige Bibliotheken, Oberflächen und Tools.
https://github.com/ollama/ollama (Unten in der Projekt-Beschreibung)
Wie denkt Ihr über LLM's?
Was sind Eure favorisierten Modelle?
Wie schnell laufen die Modelle bei Euch?