In letzter Zeit häufen sich im Web Beiträge und Anleitungen, wie man "Sprachassistenten" (landläufig als KI bezeichnet) selber lokal hosten kann, wahlweise auf Windows, MacOS oder Linux.
Was in den ganzen Beiträgen aber nie erwähnt oder erklärt wird, ist die Frage, ob das "Ding", wenn es denn einmal läuft, seine Wissensbasis selbstständig erweitern kann. Kann man es dazu bringen, z.B. sich lokal vorhandene Dokumente, Texte, Bücher, Datenbank-Inhalte "einzuverleiben" und die enthaltenen Fakten fortan in seinen Antworten zu berücksichtigen?
Welche wären das denn?! Die die ich so kenne bassieren alle darauf, das man ein Konto bei "großen" hat und die Dienste im Endeffekt dennoch über deren Server laufen.
Welche wären das denn?! Die die ich so kenne bassieren alle
darauf, das
man ein Konto bei "großen" hat und die Dienste im Endeffekt dennoch über
deren Server laufen.
Da gibst seit kurzem so einige, nennt sich z.B. "PrivateGPT", oder "GPTforAll". Bei Heise war jüngst ein Artikel dazu:
Allerdings können die bisher nur Englisch und auch nicht sprechen, nur Text.
Inzwischen schiessen die Varianten und Forks wie Pilze aus dem Boden.
Zm Thema: Ich habe mal ChatGPT danach befragt. Der/Die/Das meinte, das mitgelieferte Sprachmodell sei die Wissensbasis und man könne es nicht (selbst) erweitern. Die Entwickler schrecken wohl davor zurück, diese Möglichkeit quasi jedem zu geben (obwohl technisch kein Problem), weil sich die KI daraufhin "problematisch" entwicklen könnte ...
Was in den ganzen Beiträgen aber nie erwähnt oder erklärt wird, ist die
Frage, ob das "Ding", wenn es denn einmal läuft, seine Wissensbasis
selbstständig erweitern kann.
Typischerweise haben die Netze eine Lernphase (Training) und eine Benutzungsphase (Inference). Sie lernen im Gegensatz zum Menschen nicht ständig dazu.
Die Entwickler schrecken wohl davor zurück, diese
Möglichkeit quasi jedem zu geben (obwohl technisch kein Problem), weil
sich die KI daraufhin "problematisch" entwicklen könnte ...
Zum einen braucht man fürs Training eher mehr Leistung/RAM als für das Ausführen und zum anderen muss man ein bisschen darauf achten, dass die Daten ausgewogen sind. Wenn sie das nicht sind, dann wird die Leistung des Netzes schlechter.
Kann man es dazu bringen, z.B. sich lokal
vorhandene Dokumente, Texte, Bücher, Datenbank-Inhalte "einzuverleiben"
und die enthaltenen Fakten fortan in seinen Antworten zu
berücksichtigen?
Typischerweise haben die Netze eine Lernphase (Training) und eine
Benutzungsphase (Inference). Sie lernen im Gegensatz zum Menschen nicht
ständig dazu.
Was in den ganzen Beiträgen aber nie erwähnt oder erklärt wird, ist die
Frage, ob das "Ding", wenn es denn einmal läuft, seine Wissensbasis
selbstständig erweitern kann. Kann man es dazu bringen, z.B. sich lokal
vorhandene Dokumente, Texte, Bücher, Datenbank-Inhalte "einzuverleiben"
und die enthaltenen Fakten fortan in seinen Antworten zu
berücksichtigen?
Ja, natürlich. Du mußt Deine "Dokumente, Texte, Bücher, Datenbank-Inhalte" dazu zunächst in ein Format wandeln, die Dein KI-Modell "verstehen" kann, dazu gibt es verschiedene Verfahren für unterschiedliche Formate. Danach wird Dein Datensatz üblicherweise in einen Trainings- und Testdatensatz aufgesplittet, zudem häufig auch noch einen für die Validierung. Um Dich einzulesen, findest Du beim Tensorflow-Projekt ein Tutorial zur Erzeugung von Shakespeare-Texten: [1], das mit Gated Recurrent Units (GRU), mithin einem Rekurrenten Neuronalen Netzwerk (RNN) arbeitet.
Danach trainierst Du Dein Modell mit Deinem Trainingsdatensatz, meistens über mehrere Epochen und mit verschiedenen Hyperparametern, und überprüfst das trainierte Modell mit Deinem Testdatensatz. Diese Schritte werden so lange wiederholt, bis Du ein möglichst gutes Ergebnis erreichst -- wobei "gut" in diesem Zusammenhang in der Regel ein Kompromiß aus der Güte der Testergebnisse und der Laufzeit von Training und / oder Vorhersage ist.
Du kannst für einige Teile des Prozesses auch bereits vortrainierte Modelle herunterladen und sie entweder unverändert nutzen, oder nochmals mit Deinen eigenen Daten "nachtrainieren". Hier bietet insbesondere das Huggingface-Projekt [2] viele vortrainierte Modelle an. Das Projekt Spacy [3] bietet Sprachmodelle und Embeddings für das Natural Language Processing an.
Hier bei Mikrocontroller.net hat ein User ein Projekt zur Übersetzung von deutscher in bairische Sprache [4] vorgestellt. Das Projekt ist zwar noch nicht fertig, seine Dokumentation aber schon sehr lesenswert.
Um brauchbare Ergebnisse zu erhalten, brauchst Du allerdings viele Daten, viel Rechenleistung (besonders gerne auch mit einer aktuellen Grafikkarte von NVidia), und viel Zeit... das wirst Du schon bemerken, wenn Du nur das winzige Modell aus [1] ausprobierst. Dennoch: viel Spaß und Erfolg!
Wahrscheinlich musst du warten, bis die Euphorie verflogen ist. Bis alle Leute zu der Einschätzung kommen, ein GPT plappert nur Unfug daher. Erst danach werden Systeme entwickelt, die sich auf Ein-Ausgabe beschränken und eine verlässliche Datenbasis benutzen.
Ja, natürlich. Du mußt Deine "Dokumente, Texte, Bücher,
Datenbank-Inhalte" dazu zunächst in ein Format wandeln, die Dein
KI-Modell "verstehen" kann
Warum? Das Konzept hinter Wolfram Alpha funktioniert doch einwandfrei. Das einzige Problem - du musst erst mal Mathematik studieren, damit du die Frage formulieren kannst.
Danach wird Dein Datensatz üblicherweise in
einen Trainings- und Testdatensatz aufgesplittet, zudem häufig auch noch
einen für die Validierung.
Ja, so macht man das typischerweise, aber für einen Assistenten ist das doch extrem unpraktisch. Man würde ja eher z.B. in der Nacht einen Scan auf neue Dokumente und dann ein automatisches Nachtraining wollen. Man braucht aber im Prinzip für neue Trainingsdaten auch neue Testdaten. Bei so einem Assistenten also neue Fragen, die sich auf die neuen Textdokumente beziehen. Ich kann mir gerade nicht vorstellen, wie man sowas automatisieren könnte. Man will ja nicht jeden Tag das System manuell updaten.
Ja, so macht man das typischerweise, aber für einen Assistenten ist das
doch extrem unpraktisch. Man würde ja eher z.B. in der Nacht einen Scan
auf neue Dokumente und dann ein automatisches Nachtraining wollen.
Oder, je nach Modell, ein Neutraining. Manche Modelle können nach dem Ende der Trainingsphase nicht mehr trainiert werden, bei RNN-Modellen wie LSTMs oder GRUs soll das aber möglich sein.
Man
braucht aber im Prinzip für neue Trainingsdaten auch neue Testdaten.
Das sehe ich jetzt nicht, aber das ist ja easy, denn das Splitting der Daten erfolgt ja ohnehin zufallsbasiert.
Bei
so einem Assistenten also neue Fragen, die sich auf die neuen
Textdokumente beziehen. Ich kann mir gerade nicht vorstellen, wie man
sowas automatisieren könnte. Man will ja nicht jeden Tag das System
manuell updaten.
Ich verstehe nicht ganz, wo siehst Du denn da eine Schwierigkeit?
Ja, so macht man das typischerweise, aber für einen Assistenten ist das
doch extrem unpraktisch. Man würde ja eher z.B. in der Nacht einen Scan
auf neue Dokumente und dann ein automatisches Nachtraining wollen.
Oder, je nach Modell, ein Neutraining.
Stimmt. ich bin einfach davon ausgegangen, dass man ein vortrainiertes Netz nimmt, aber das muss natürlich nicht so sein.
Man
braucht aber im Prinzip für neue Trainingsdaten auch neue Testdaten.
Das sehe ich jetzt nicht, aber das ist ja easy, denn das Splitting der
Daten erfolgt ja ohnehin zufallsbasiert.
Ich kenn das so: Man hat gelabelte Daten, die man teilweise fürs Training und teilweise für den Test benutzt. Wenn das automatisch laufen soll, dann gibts keine weiteren Labels.
Ich hatte allerdings noch nie mit unsupervised learning zu tun. Ist das da anders?
Ja, so macht man das typischerweise, aber für einen Assistenten ist das
doch extrem unpraktisch. Man würde ja eher z.B. in der Nacht einen Scan
auf neue Dokumente und dann ein automatisches Nachtraining wollen.
Oder, je nach Modell, ein Neutraining.
Stimmt. ich bin einfach davon ausgegangen, dass man ein vortrainiertes
Netz nimmt, aber das muss natürlich nicht so sein.
Vortrainierte Netze für NLP sind ja meistens Transformermodelle, die man dann in der Regel aber noch nachtrainieren kann.
Ich kenn das so: Man hat gelabelte Daten, die man teilweise fürs
Training und teilweise für den Test benutzt. Wenn das automatisch laufen
soll, dann gibts keine weiteren Labels.
Ist halt die Frage, was für eine Aufgabe zu hast. Bei NLP-Modellen sind RNNs und Transformermodelle heute state-of-the-art, da brauchst Du keine gelabelten Daten, quasi weil die Reihenfolge der Token das Target sind.
Ich hatte allerdings noch nie mit unsupervised learning zu tun. Ist das
da anders?
Ja, deswegen "unsupervised". Dabei gibt es keine Labels, sondern es geht darum, Cluster von ähnlichen Datenpunkten zu finden. Labels brauchst Du, wenn Du eine kategorische Vorhersage machen möchtest, also: ist dieser Beitrag Spam oder Ham, oder: welche Abteilung soll diese E-Mail erhalten? Für solche Fragen muß das Modell natürlich lernen, welche Beiträge oder E-Mails wie zu klassifizieren sind, es braucht Labels.
In diesem Thread hier geht es aber streng genommen nicht um Unsupervised Learning, aber für einen Sprachassistenten wie ChatGPT braucht es auch keine Labels -- oder, anders gesagt: die Labels sind bereits in unseren Rohdaten vorhanden, sie sind nämlich die Reihenfolgen der Token in den Rohdaten. Im Grunde ist das eine Art Time Series Forecast, also die Vorhersage einer Zeitserie bzw. einer Abfolge von Ereignissen, basierend auf der vorher gelernten Abfolge von Ereignissen.
Wo ist denn da die Orgie? Python installieren, virtualenv einrichten und aktivieren, requirements.txt einspielen, loslegen... Das ist doch alles wirklich absolut easy peasy. Und wenn Du Dich ernsthaft mit diesem Thema beschäftigen willst, mußt Du Dir das Klickibunti wohl abschminken.
Ich habe inzwischen mal ein Experiment gewagt! Auf einem zufällig vorhanden
Dell-Rackserver R380
CPU Xeon E5-2403 V2
96GB Ram
512GB SSD
Windows 2022 Server
wurde GPT4All installiert. Die Installation ging tatsächlich so einfach wie auf der Webseite beschrieben: Herunterladen, Klick und etwas Konfig ... fertig!
GPT4All ist nzwischen in der Lage, auch eigene Dokumente (PDF, TXT, DOC ...) in seine Wissensbasis aufzunehmen, kann also tatsächlich "Lernen". Als Sprachmodell habe ich Wizzard gewählt, weil der (angeblich) am Besten Deutsch kann.
Allerdings: Auf der genannten Maschine völlig unbauchbar. Alleine die Antwort auf ein "Hallo!" dauert ca. 5 Minuten. In der GUI steht was von "0.1 ... 0.2 Token/s".
Das liegt sicher auch daran, dass GPT4All primär für die Nutzung mit CPU statt GPU gemnacht ist, um die Einstiegsschwelle niedrig zu halten. Allerdings habe ich auch schon ein Youtube-Video gesehen, wo jemand auf einem MacMini M2 die Antworten innerhalb weniger Sekunden erhält. Die Möglichkeit der Nutzung von GPU-Karten ist aber demnächst auch vorgesehen ...