Es gibt keine künstliche Intelligenz! Was heute als KI verkauft wird ist wenig mehr als eine Mustererkennung, welche in ihrer generalisierten Form bereits an Grenzen des Machbaren gerät. Der korrekte Name wäre Large Language Model (LLM), wobei das erst einmal mehr mit Vektoren zu tun hat, als mit Sprache. Aktuelle, große Modelle stoßen heute an Grenzen, das noch mehr Parameter keine Verbesserung der erzielten Arbeitsergebnisse mehr zeitigen. Es hilft nicht immer mehr Trainingsdaten zu bemühen, es ist unumgänglich bessere Trainingsdaten an die Hand zu bekommen. Das soll aber hier nicht mein Thema sein.
Zu Begin ging es fast ausschließlich darum immer mehr Daten für das Training der Modelle zu nutzen. So sind heute die großen Modelle bereits über die 600 Milliarden Parameter hinaus. Allerdings werden die nicht im späteren Betrieb des Modells genutzt - da muss man die Anzahl der trainierten von den aktiven Parametern unterscheiden. Du kannst dir ja ausrechnen was es kosten würde über 600 mrd. 32bit Fließkommazahlen im Speicher teurer Beschleuniger zu halten und wie sinnvoll das wohl wäre. Es gibt schon bei der Bereitstellung zwei grundsätzliche Stellschrauben das Modell für den Betrieb kleiner zu gestallten:
Für bessere Ergebnisse ist es sehr viel besser gleich die Trainingsdaten in den Themen einzuschränken und so spezialisierte LLMs zu trainieren wo generalisierte an Grenzen stoßen. Tumore erkennen oder Proteine falten zu können ist für einen Agenten der beim programmieren unterstützen soll wenig zielführend.
Um ein LLM gewinnbringend einzusetzen ist also zu vorderst wichtig das eigentliche Ziel zu definieren. Ein LLM wird dir die Arbeit nicht abnehmen, kann aber bei der richtigen Definition der Ziele und entsprechender Auswahl des LLMs auf unzählige Arten unterstützen. Es kann die eigene Perspektive erweitern oder beim Fokussieren auf einen Kernpunkt helfen, diametral entgegengesetzte Eigenschaften ausspielen. Ein Arbeitsauftrag oder Projekt hat üblicherweise viele Schritte die sich in ihrer Zielsetzung sehr stark unterscheiden können: Du musst nicht bei einem LLM bleiben. Jeder Schritt kann andere Anforderungen stellen, die ein anderes Modell vermutlich viel besser abdeckt. Es gibt kein bestes Modell! Bei einer ersten Recherche zu einem neuen Thema kann ein generalisiertes, großes Modell natürlich seine Stärken ausspielen. Ein kleines Modell mit einem angeschlossenen Suchmodul wird aber bei einem klar umrissenen Ziel nicht sehr weit zurückfallen, wenn denn deine Suchanfrage gut durchdacht ist.
Schon bei der Auswahl eines LLMs kommt es oft nicht nur auf die gesteckten Ziele an. Welche Daten soll das LLM bearbeiten und unter welcher Jurisdiktion arbeitet es? Darfst du die zu bearbeitenden Daten überhaupt übergeben? Datenschutz und Datensicherheit müssen gleich zu begin mitgedacht werden. Wie viel Aufwand musst du betreiben Daten vorzubereiten um solchen Gesetzen nachzukommen und rechnet sich das überhaupt? Soll das LLM mit einem Agenten in der Lage sein Daten zu verändern oder lediglich lesend zugreifen und Kommandos erzeugen, die nach einem Review durch einen Administrator angewendet werden können?
Abseits des Hypes um die großen Modelle, welche eigene Rechenzentren benötigen, ist es natürlich möglich optimierte LLMs selbst auszuführen. Werkzeuge wie Ollama, vLLM oder LM Studio z.B. erlauben es mit wenigen Handgriffen unzählige Modelle lokal auszuführen. Um sich in der täglichen Nutzung aber nicht mit einer Befehlszeile auseinadersetzen zu müssen oder gar eine ähnliche Nutzererfahrung wie mit einer App der großen Spieler zu erhalten, ist etwas mehr Vorarbeit notwendig. Grundsätzlich kann man ein LLM auf einer CPU laufen lassen, allerdings ist die Verarbeitungsgeschwindigkeit auf einer GPU ca 10-12 Faktoren größer und die wandelt auch weniger Energie in Hitze um (wenngleich das immernoch ziemlich viel ist). Das funktioniert aber nur wenn die gewünschten Modelle auch in den Grafikspeicher (VRam) passen. Es ist auch nicht damit getan sich auszurechnen welches Modell so gerade im VRam Platz findet, denn die zu verarbeitenden Daten und alles was als Kontext bezeichnet wird, muss da auch mit hinein. Ich möchte mich hier aber nicht in Einzelheiten verlieren und werde stattdessen ein Setup beschreiben, welches ich zum Testen verschiedener Q4 quantisierter Modelle verwendet habe.
Ich verwende in diesem Beispiel mein Notebook mit dedizierter NVidia GForce RTX 3070 Grafikkarte, die über 8 GB VRam verfügt, was viele Grafikkarten im Desktopbereich erfüllen dürften. Ein Q4 quantisiertes 7B Modell (7 mrd. Parameter) benötigt ca. 4-5 GB und so ist genug Platz im Grafikspeicher für Kontext und Daten. Wenn deine Grafikkarte mehr Grafikspeicher mitbringt, kannst du entsprechend größere Modelle ausführen.
Ich verwende in meinem Setup unter Windows 11 als Backend Ollama, welches innerhalb des Benutzerprofiles ausgeführt wird und als Frontend Qdysseus, welches mit ein paar zusätzlichen Werkzeugen im Docker Container läuft. Eine funktionierende Dockerinstallation setze ich also vorraus und verwende selbst den Docker Desktop. Außerdem wird Python und ein Git Client benötigt. Prüfen kannst du die Vorraussetzungen in einer Powershell, die wir dann auch für die Installation nutzen.
python --version
git --version
winget install Ollama.Ollama
Die Installation benötigt eine Weile und ist abgeschlossen wenn das Ollama Symbol in der Taskleiste erscheint bzw. sich das Programmfenster öffnet. Möchtest du die Modelle nicht in deinem Profil speichern, kannst du eine Umgebungsvariable OLLAMA_MODELS mit einem existierenden Verzeichnispfad als Wert erzeugen, welce durch Ollama verwendet wird. Achtung: eine bereits geöffnete Powershell übernimmt die Variable nicht, öffne eine neue! Ob die Variable gesetzt ist und mit welchem Wert kannst du mit dem Kommando echo $Env:OLLAMA_MODELS feststellen. Um die Einrichtung von Odysseus zu erleichtern lade gleich ein kleines (aktuell 2,2 GB) LLM herunter und starte es:
ollama run Phi3:latest
Ollama bietet für das eigene Modell Repository auch eine Suchseite an. ollama ps zeigt dir laufende Modelle an und ollama list installierte, aber schau mit ollama /? einfach selbst welche Optionen verfügbar sind. Jetzt können wir uns der Installation von Odysseus widmen:
git clone https://github.com/pewdiepie-archdaemon/odysseus.git
cd odysseus
copy .env.example .env
Öffne die .env Datei in einem Texteditor deiner Wahl und passe sie ggf. nach deinen Erfordernissen an. Erst dann starten wir den Buildprozess (solltest du den Docker Desktop verwenden, muss der bereits gestartet sein):
docker compose up -d --build
Der Prozess ist komplex und erzeugt einen Container aus mehreren Images, die einige Werkzeuge (ntfy, searxng und chromadb) mit einbauen. So sind Benachrichtigungen eine Websuche und die Kontexterweiterung mit Dateien und Voreinstellungen schon eingebaut und die Benutzererfahrung kommt in die Nähe der Apps der großen Anbieter. Wenn der Buildprozess abgeschlossen ist, kannst du Odysseus im Browser aufrufen: http://localhost:7000/. Für die Anmeldung benötigst du aber noch die Credentials, welche beim Build erzeugt wurden. Die findest du in den Logs:
docker compose logs odysseus
Du hast jetzt alles an der Hand selbst einige Tests durchzuführen und wirst nach und nach in der Lage sein die richtigen Fragen zu stellen. Zuletzt läuft es doch immer darauf hinaus in der Lage zu sein eine weitere Frage formulieren zu können statt eine abschließende Antwort zu haben?!
Ich weiß, dass ich nicht weiß
(Sokrates)
Die eigentliche Antwort steht bereits im ersten Absatz: Ein LLM kann Vektoren vergleichen - sehr viele und sehr schnell. Nicht mehr und nicht weniger. Es bearbeitet selbst keine Daten, es kann mit der Ausgabe aber Werkzeuge steuern die das dann erledigen. Alles wofür es ein Werkzeug gibt welches durch einen Algorythmus gesteuert werden kann, kann auch durch ein LLM bedient werden. Es ist eine Frage von Schnittstellen und so funktionieren sogenannte KI-Agenten. Sollte Skynet also einmal die Welt an sich reißen, hat irgendjemand ohne die Folgen zu bedenken eine Schnittstelle kreiert, die es besser nicht gegeben hätte. Die eigentlich zu führende Diskussion kann sich nicht darum drehen was LLMs können werden, sondern was wir als Gesellschaft für Richtig erachten durch solche Werkzeuge erledigen zu lassen. Wenn immer mehr Texte durch LLMs geschrieben, Bilder und Videos erstellt werden, womit werden sie dann zukünftig trainiert? Am Ende wird Wissen, Kunst und Kreativität immer durch Intellekt und Gefühl erzeugt und das kann kein LLM nachvollziehen. Ein LLM vergleicht, sortiert, fasst zusammen oder kombiniert Inhalte die Menschen zuvor erstellt haben.
Diskutiere das Thema mit mir im Fediverse.