{"id":3847,"date":"2024-06-03T07:00:00","date_gmt":"2024-06-03T05:00:00","guid":{"rendered":"https:\/\/www.my-it-brain.de\/wordpress\/?p=3847"},"modified":"2024-05-31T07:00:00","modified_gmt":"2024-05-31T05:00:00","slug":"mit-instructlab-zu-large-language-models-beitragen","status":"publish","type":"post","link":"https:\/\/www.my-it-brain.de\/wordpress\/mit-instructlab-zu-large-language-models-beitragen\/","title":{"rendered":"Mit InstructLab zu Large Language Models beitragen"},"content":{"rendered":"\n<p>Dies ist mein Erfahrungsbericht zu den ersten Schritten mit InstructLab. Ich gehe darauf ein, warum ich mich \u00fcber die Existenz dieses Open Source-Projekts freue, was ich damit mache und was ich mir von Large Language Models (kurz: LLMs, zu Deutsch: gro\u00dfe Sprachmodelle) erhoffe. Der Text enth\u00e4lt Links zu tiefergehenden Informationen, die euch mit Hintergrundwissen versorgen und einen Einstieg in das Thema erm\u00f6glichen.<\/p>\n\n\n\n<p>Dieser Text ist <strong>keine<\/strong> Schritt-f\u00fcr-Schritt-Anleitung f\u00fcr:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>die Installation von InstructLab CLI,<\/li>\n\n\n\n<li>die Installation und das Training von LLMs<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Terminologie und Abk\u00fcrzungen in diesem Text<\/h2>\n\n\n\n<p>Die Begriffe <a href=\"https:\/\/de.wikipedia.org\/wiki\/K%C3%BCnstliche_Intelligenz\">K\u00fcnstliche Intelligenz (KI) oder englisch <em>artificial intelligence<\/em> (AI)<\/a> werden in diesem Text synonym verwendet und zumeist einheitlich durch KI abgek\u00fcrzt.<\/p>\n\n\n\n<p>Beim Bezug auf <a href=\"https:\/\/de.wikipedia.org\/wiki\/Large_Language_Model\">gro\u00dfe Sprachmodelle<\/a> bediene ich mich der englischen Abk\u00fcrzung LLM oder bezeichne diese als KI-ChatBot bzw. nur ChatBot.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Was ist InstructLab?<\/h2>\n\n\n\n<p>InstructLab ist ein von IBM und Red Hat ins Leben gerufenes Open Source-Projekt, mit dem die Gemeinschaft zur Verbesserung von LLMs beitragen kann. Jeder<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>mit einem Linux-Notebook oder<\/li>\n\n\n\n<li>MacBook und <\/li>\n\n\n\n<li>der F\u00e4higkeit Anleitungen zu folgen und <\/li>\n\n\n\n<li>wer <a href=\"https:\/\/de.wikipedia.org\/wiki\/YAML\">YAML<\/a>-Dateien schreiben kann,<\/li>\n<\/ul>\n\n\n\n<p>der kann nun teilhaben und ausgew\u00e4hlte LLMs lokal auf seinem Endger\u00e4t ausf\u00fchren, testen und verbessern. F\u00fcr eine ausf\u00fchrliche Beschreibung siehe:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/www.redhat.com\/de\/topics\/ai\/what-is-instructlab\">Was ist InstructLab?<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/developers.redhat.com\/articles\/2024\/05\/07\/instructlab-open-source-generative-ai\">InstructLab: Advancing generative AI through open source<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/github.com\/instructlab\">Welcome to the \ud83d\udc36 InstructLab Project<\/a><\/li>\n<\/ul>\n\n\n\n<p>Informationen zu Open Source LLMs und Basismodellen f\u00fcr InstructLab bieten diese Links:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/www.iese.fraunhofer.de\/blog\/open-source-large-language-models-selbst-betreiben\/\">Open Source Large Language Models selbst betreiben<\/a>. <a href=\"https:\/\/www.iese.fraunhofer.de\/blog\/author\/thorsten-honroth\/\">Thorsten Honroth<\/a>, <a href=\"https:\/\/www.iese.fraunhofer.de\/blog\/author\/julien-siebert\/\">Dr. Julien Siebert<\/a> und <a href=\"https:\/\/www.iese.fraunhofer.de\/blog\/author\/patricia-kelbert\/\">Patricia Kelbert<\/a>. Blog des Frauenhofer-Institut f\u00fcr Experimentelles Software Engineering. 2024-01-19.<\/li>\n\n\n\n<li><a href=\"https:\/\/www.ibm.com\/blog\/open-source-large-language-models-benefits-risks-and-types\/\">Open source large language models: Benefits, risks and types<\/a>. <a href=\"https:\/\/www.ibm.com\/blog\/author\/ibm-data-and-ai\/\">IBM Data and AI Team<\/a>. IBM Blog. 2023-09-27.<\/li>\n\n\n\n<li><a href=\"https:\/\/research.ibm.com\/blog\/granite-code-models-open-source\">Open sourcing IBM\u2019s Granite code models<\/a>. <a href=\"http:\/\/Open sourcing IBM\u2019s Granite code models\">Mike Murphy<\/a>. IBM Research Blog. 2024-05-06.<\/li>\n\n\n\n<li><a href=\"https:\/\/dataplatform.cloud.ibm.com\/docs\/content\/wsj\/analyze-data\/fm-instructlab.html?context=wx&amp;locale=de\">InstructLab-kompatible Basismodelle<\/a>. IBM watsonx Docs.<\/li>\n\n\n\n<li>Hugging Face. The AI community building the future. The platform where the machine learning community collaborates on models, datasets, and applications. URL: <a href=\"https:\/\/huggingface.co\/\">https:\/\/huggingface.co\/<\/a><\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Meine Einstellung gegen\u00fcber KI-ChatBots<\/h2>\n\n\n\n<p>Gegen\u00fcber KI-Produkten im Allgemeinen und KI-ChatBots im Speziellen bin ich stets kritisch, was nicht bedeutet, dass ich diese Technologien und auf ihnen basierende Produkte und Services ablehne. Ich versuche mir lediglich eine gesunde Skepsis zu bewahren.<\/p>\n\n\n\n<p>Was Spielereien mit ChatBots betrifft, bin ich sicherlich sp\u00e4t dran. Ich habe schlicht keine Lust, mich irgendwo zu registrieren und unn\u00f6tig Informationen \u00fcber mich preiszugeben, nur um anschlie\u00dfend mit einer B\u00fcchse chatten und ihr Fragen stellen zu k\u00f6nnen, um den Wahrheitsgehalt der Antworten anschlie\u00dfend noch verifizieren zu m\u00fcssen.<\/p>\n\n\n\n<p>Mittlerweile gibt es LLMs, welche ohne spezielle Hardware auch lokal ausgef\u00fchrt werden k\u00f6nnen. Diese sprechen meine Neugier und meinen Spieltrieb schon eher an, weswegen ich mich nun doch mit einem ChatBot unterhalten m\u00f6chte.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Mein InstructLab-Setup<\/h2>\n\n\n\n<p>F\u00fcr meine ersten Versuche nutze ich mein <a href=\"https:\/\/www.my-it-brain.de\/wordpress\/es-ist-in-2021-ein-lenovo-thinkpad-t14s-amd-geworden\/\">Lenovo ThinkPad T14s (AMD) in der Ausstattung von 2021<\/a>. Aktuell installiert ist Fedora 40 Workstation, welches zu den <a href=\"https:\/\/github.com\/instructlab\/instructlab\/blob\/main\/README.md#-requirements\">getesteten Betriebssystemen<\/a> von InstructLab z\u00e4hlt.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Die Einrichtung des InstructLab-CLI und der erste Chat<\/h3>\n\n\n\n<p>F\u00fcr die Einrichtung halte ich mich an den <a href=\"https:\/\/github.com\/instructlab\/instructlab\/blob\/main\/README.md#-getting-started\">Getting Started Guide<\/a>. Es sind folgende Befehle auszuf\u00fchren, bis das erste LLM gestartet werden kann:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo dnf install gcc-c++ gcc make pip python3 python3-devel python3-GitPython\nmkdir instructlab\ncd instructlab\npython3 -m venv --upgrade-deps venv\nsource venv\/bin\/activate\npip cache remove llama_cpp_python\npip install git+https:\/\/github.com\/instructlab\/instructlab.git@stable --extra-index-url=https:\/\/download.pytorch.org\/whl\/cpu\neval \"$(_ILAB_COMPLETE=bash_source ilab)\"\nilab init\nilab download\nilab serve<\/code><\/pre>\n\n\n\n<p>Der lokale LLM-Server wird mit dem Befehl <code>ilab serve<\/code> gestartet. Mit dem Befehl <code>ilab chat<\/code> wird die Unterhaltung mit dem Modell eingeleitet.<\/p>\n\n\n\n<p>Im folgenden Video sende ich zwei Anweisungen an das LLM <code>merlinite-7b-lab-Q4_K_M<\/code>. Den Chatverlauf seht ihr in der rechten Bildh\u00e4lfte. In der linken Bildh\u00e4lfte seht ihr die Ressourcenauslastung meines Laptops.<\/p>\n\n\n\n<figure class=\"wp-block-video aligncenter\"><video height=\"1080\" style=\"aspect-ratio: 1920 \/ 1080;\" width=\"1920\" controls src=\"https:\/\/www.my-it-brain.de\/wordpress\/wp-content\/uploads\/2024\/05\/ilab_chat_json.webm\"><\/video><figcaption class=\"wp-element-caption\">Screencast eines Chats mit <code>merlinite-7b-lab-Q4_K_M<\/code><\/figcaption><\/figure>\n\n\n\n<p>Wie ihr seht, sind die Antwortzeiten des LLM auf meinem Laptop nicht gerade schnell, aber auch nicht so langsam, dass ich w\u00e4hrenddessen einschlafe oder das Interesse an der Antwort verliere. An der CPU-Auslastung im <a href=\"https:\/\/cockpit-project.org\/\">Cockpit<\/a> auf der linken Seite l\u00e4sst sich erkennen, dass das LLM durchaus Leistung abruft und die CPU fordert.<\/p>\n\n\n\n<p><em>Exkurs<\/em>: Die Studie <a href=\"https:\/\/green-web-project.de\/studie-energieverbrauch-index-basierter-und-ki-basierter-websuchmaschinen\/\">Energieverbrauch Index-basierter und KI-basierter Websuchmaschinen<\/a> gibt einen interessanten Einblick in den Ressourcenverbrauch. Leider war ich nicht in der Lage, diese Studie als PDF aufzutreiben.<\/p>\n\n\n\n<p>Mit den Antworten des LLM bin ich zufrieden. Sie decken sich mit meiner Erinnerung und ein kurzer Blick auf die Seite <a href=\"https:\/\/www.json.org\/json-de.html\">https:\/\/www.json.org\/json-de.html<\/a> best\u00e4tigt, dass die Aussagen des LLM korrekt sind.<\/p>\n\n\n\n<p><em>Anmerkung<\/em>: Der direkte Aufruf der Seite <a href=\"https:\/\/json.org\">https:\/\/json.org<\/a>, der mich mittels Redirect zu obiger URL f\u00fchrte, hat sicher deutlich weniger Energie verbraucht als das LLM oder eine Suchanfrage in irgendeiner Suchmaschine. Ich merke dies nur an, da ich den Eindruck habe, dass es aus der Mode zu geraten scheint, URLs einfach direkt in die Adresszeile eines Webbrowsers einzugeben, statt den Seitennamen in eine Suchmaske zu tippen.<\/p>\n\n\n\n<p>Ich halte an dieser Stelle fest, der erste kleine Test wird zufriedenstellend absolviert.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">KI-Halluzinationen<\/h3>\n\n\n\n<p>Da ich einige Zeit im Hochschulrechenzentrum der Universit\u00e4t Bielefeld gearbeitet habe, interessiert mich, was das LLM \u00fcber meine ehemalige Dienststelle wei\u00df. Im n\u00e4chsten Video frage ich, wer der Kanzler der Universit\u00e4t Bielefeld ist.<\/p>\n\n\n\n<figure class=\"wp-block-video aligncenter\"><video height=\"1080\" style=\"aspect-ratio: 1920 \/ 1080;\" width=\"1920\" controls src=\"https:\/\/www.my-it-brain.de\/wordpress\/wp-content\/uploads\/2024\/05\/ilab_chat_chancellor_unibi.webm\"><\/video><figcaption class=\"wp-element-caption\">Frage an das LLM: &#8222;Who is the chancellor of the Bielefeld University?&#8220;<\/figcaption><\/figure>\n\n\n\n<p>Da ich bis M\u00e4rz 2023 selbst an der Universit\u00e4t Bielefeld besch\u00e4ftigt war, kann ich mit hinreichender Sicherheit sagen, dass diese Antwort falsch ist und das Amt des Kanzlers nicht von Prof. Dr. Karin Vollmerd bekleidet wird. Im <a href=\"https:\/\/www.uni-bielefeld.de\/pevz\">Personen- und Einrichtungsverzeichnis (PEVZ)<\/a> findet sich f\u00fcr Prof. Dr. Vollmerd keinerlei Eintrag. F\u00fcr den aktuellen Kanzler Dr. Stephan Becker hingegen schon.<\/p>\n\n\n\n<p>Da eine kurze Recherche in der Suchmaschine meines geringsten Misstrauens keine Treffer zu Frau Vollmerd brachte, bezweifle ich, dass diese Person \u00fcberhaupt existiert. Es kann allerdings auch in meinen unzureichenden F\u00e4higkeiten der Internetsuche begr\u00fcndet liegen.<\/p>\n\n\n\n<p>Bei der vorliegenden Antwort handelt es sich um eine Halluzination der K\u00fcnstlichen Intelligenz.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>Im Bereich der <a href=\"https:\/\/de.wikipedia.org\/wiki\/K%C3%BCnstliche_Intelligenz\"><strong>K\u00fcnstlichen Intelligenz<\/strong> (KI)<\/a> ist eine <strong>Halluzination<\/strong> (alternativ auch <a href=\"https:\/\/de.wikipedia.org\/wiki\/Konfabulation\">Konfabulation<\/a> genannt) ein \u00fcberzeugend formuliertes Resultat einer KI, das nicht durch Trainingsdaten gerechtfertigt zu sein scheint und objektiv falsch sein kann.<\/p>\n\n\n\n<p>Solche Ph\u00e4nomene werden in Analogie zum Ph\u00e4nomen der <a href=\"https:\/\/de.wikipedia.org\/wiki\/Halluzination\">Halluzination<\/a> in der menschlichen Psychologie als von <a href=\"https:\/\/de.wikipedia.org\/wiki\/Chatbot\">Chatbots<\/a> erzeugte <em>KI-Halluzinationen<\/em> bezeichnet. Ein wichtiger Unterschied ist, dass menschliche Halluzinationen meist auf falschen Wahrnehmungen der menschlichen Sinne beruhen, w\u00e4hrend eine KI-Halluzination ungerechtfertigte Resultate als Text oder Bild erzeugt. Prabhakar Raghavan, Leiter von Google Search, beschrieb Halluzinationen von Chatbots als \u00fcberzeugend formulierte, aber weitgehend erfundene Resultate.<sup><a href=\"https:\/\/de.wikipedia.org\/wiki\/Halluzination_(K%C3%BCnstliche_Intelligenz)#cite_note-2\"><\/a><\/sup><\/p>\n<cite>Quelle: <a href=\"https:\/\/de.wikipedia.org\/wiki\/Halluzination_(K%C3%BCnstliche_Intelligenz)\">https:\/\/de.wikipedia.org\/wiki\/Halluzination_(K%C3%BCnstliche_Intelligenz)<\/a><\/cite><\/blockquote>\n\n\n\n<p>Oder wie ich es umschreiben m\u00f6chte: \u201eDer KI-ChatBot demonstriert sichereres Auftreten bei v\u00f6lliger Ahnungslosigkeit.\u201c<\/p>\n\n\n\n<p>Wenn ihr selbst schon mit ChatBots experimentiert habt, werdet ihr sicher selbst schon auf Halluzinationen gesto\u00dfen sein. Wenn ihr m\u00f6gt, teilt doch eure Erfahrungen, besonders jene, die euch fast aufs Glatteis gef\u00fchrt haben, in den Kommentaren mit uns.<\/p>\n\n\n\n<p>Welche Auswirkungen \u00fcberzeugend vorgetragene Falschmeldungen auf Nutzer haben, welche nicht \u00fcber das Wissen verf\u00fcgen, diese Halluzinationen sofort als solche zu entlarven, m\u00f6chte ich f\u00fcr den Moment eurer Fantasie \u00fcberlassen.<\/p>\n\n\n\n<p>Ich denke an Fahrplanausk\u00fcnfte, medizinische Diagnosen, Rezepturen, Risikoeinsch\u00e4tzungen, etc. und bin pl\u00f6tzlich doch ganz froh, dass sich die EU-Staaten auf ein erstes <a href=\"https:\/\/www.tagesschau.de\/ausland\/europa\/ki-gesetz-eu-102.html\">KI-Gesetz<\/a> einigen konnten, um KI zu regulieren. Es wird sicher nicht das letzte sein.<\/p>\n\n\n\n<p>Um das Beispiel noch etwas auszuf\u00fchren, frage ich das LLM erneut nach dem Kanzler der Universit\u00e4t und weise es auf seine Falschaussagen hin. Der Chatverlauf ist in diesem Video zu sehen:<\/p>\n\n\n\n<figure class=\"wp-block-video aligncenter\"><video height=\"1080\" style=\"aspect-ratio: 1920 \/ 1080;\" width=\"1920\" controls src=\"https:\/\/www.my-it-brain.de\/wordpress\/wp-content\/uploads\/2024\/05\/ilab_chat_chancellor_unibi_wrong_again.webm\"><\/video><figcaption class=\"wp-element-caption\">ChatBot wird auf Falschaussage hingewiesen<\/figcaption><\/figure>\n\n\n\n<p>Die Antworten des LLM enthalten folgende Fehler:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Professor Dr. Ulrich Heidt ist nicht der Kanzler der Universit\u00e4t Bielefeld<\/li>\n\n\n\n<li>Die URL &#8218;https:\/\/www.uni-bielefeld.de\/english\/staff\/&#8216; existiert nicht<\/li>\n\n\n\n<li>Die URL &#8218;http:\/\/www.universitaet-bielefeld.de\/en\/&#8216; existiert ebenfalls nicht<\/li>\n\n\n\n<li>Die Universit\u00e4t hie\u00df niemals \u201eTechnische Universitaet Braunschweig\u201c<\/li>\n\n\n\n<li>Sie wurde 2009 auch nicht umbenannt<\/li>\n\n\n\n<li>Es gibt nicht 8, sondern <a href=\"https:\/\/www.uni-bielefeld.de\/fakultaeten\/#\">14 Fakult\u00e4ten<\/a><\/li>\n<\/ul>\n\n\n\n<p>Der Chatverlauf erweckt den Eindruck, dass der ChatBot sich zu rechtfertigen versucht und nach Erkl\u00e4rungen und Ausfl\u00fcchten sucht. Hier wird nach meinem Eindruck menschliches Verhalten nachgeahmt. Dabei sollten wir Dinge nicht vermenschlichen. Denn unser Chatpartner ist kein Mensch. Er ist eine leblose Blechb\u00fcchse. Das LLM bel\u00fcgt uns auch nicht in b\u00f6ser Absicht, es ist schlicht nicht in der Lage, uns eine korrekte Antwort zu liefern, da ihm dazu das n\u00f6tige Wissen bzw. der notwendige Datensatz fehlt. Daher versuche ich im n\u00e4chsten Schritt, dem LLM mit InstructLab das notwendige Wissen zu vermitteln.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Wissen und F\u00e4higkeiten hinzuf\u00fcgen und das Modell anlernen<\/h3>\n\n\n\n<p>Das <code><a href=\"https:\/\/github.com\/instructlab\/taxonomy\/blob\/main\/README.md\">README.md<\/a><\/code> im Repository <code><a href=\"https:\/\/github.com\/instructlab\/taxonomy\">instructlab\/taxonomy<\/a><\/code> enth\u00e4lt die Beschreibung, wie man dem LLM Wissen (englisch: knowledge) hinzuf\u00fcgt. Weitere Hinweise finden sich in folgenden Dateien:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/github.com\/instructlab\/taxonomy\/blob\/main\/README.md#getting-started-with-knowledge-contributions\">https:\/\/github.com\/instructlab\/taxonomy\/blob\/main\/README.md#getting-started-with-knowledge-contributions<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/github.com\/instructlab\/taxonomy\/blob\/main\/docs\/knowledge-contribution-guide.md\">https:\/\/github.com\/instructlab\/taxonomy\/blob\/main\/docs\/knowledge-contribution-guide.md<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/github.com\/instructlab\/instructlab\/blob\/main\/README.md#-creating-new-knowledge-or-skills-and-training-the-model\">https:\/\/github.com\/instructlab\/instructlab\/blob\/main\/README.md#-creating-new-knowledge-or-skills-and-training-the-model<\/a><\/li>\n<\/ul>\n\n\n\n<p>Diese Dateien befinden sich auch in dem lokalen Repository unterhalb von <code>~\/instructlab\/taxonomy\/<\/code>. Ich hangel mich an den Leitf\u00e4den entlang, um zu sehen, wie weit ich damit komme.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Wissen erschaffen<\/h3>\n\n\n\n<p>Die \u00dcberschrift ist nat\u00fcrlich ma\u00dflos \u00fcbertrieben. Ich stelle lediglich existierende Informationen in erwarteten Dateiformaten bereit, um das LLM damit trainieren zu k\u00f6nnen.<\/p>\n\n\n\n<p>Da aktuell nur Wissensbeitr\u00e4ge von Wikipedia-Artikeln akzeptiert werden, gehe ich wie folgt vor:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Erstelle das Repository <a href=\"https:\/\/github.com\/Tronde\/instructlab_knowledge_contributions_unibi\" data-type=\"link\" data-id=\"https:\/\/github.com\/Tronde\/instructlab_knowledge_contributions_unibi\">https:\/\/github.com\/Tronde\/instructlab_knowledge_contributions_unibi<\/a> mit einer <code>README.md<\/code>, ohne <code>.gitignore<\/code> und <code>LICENCE<\/code><\/li>\n\n\n\n<li>Konvertiere den Wikipedia-Artikel Bielefeld University ohne Bilder und Tabellen in eine Markdown-Datei und f\u00fcge sie dem in Schritt 1 erstellten Repository unter dem Namen <code>unibi.md<\/code> hinzu<\/li>\n\n\n\n<li>F\u00fcge dem lokalen Taxonomy-Repository neue Verzeichnisse hinzu: <code>mkdir -p university\/germany\/bielefeld_university<\/code><\/li>\n\n\n\n<li>Erstelle in dem neuen Verzeichnis eine <code>qna.yaml<\/code> und eine <code>attribution.txt<\/code> Datei<\/li>\n\n\n\n<li>F\u00fchre <code>ilab diff<\/code> aus, um die Daten zu validieren<\/li>\n<\/ol>\n\n\n\n<p>Der folgende Code-Block zeigt den Inhalt der Dateien <code>qna.yaml<\/code> und eine <code>attribution.txt<\/code> sowie die Ausgabe des Kommandos <code>ilab diff<\/code>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>(venv) &#91;tronde@t14s instructlab]$ cat \/home\/tronde\/src\/instructlab\/taxonomy\/knowledge\/university\/germany\/bielefeld_university\/qna.yaml\nversion: 2\ntask_description: 'Teach the model the who facts about Bielefeld University'\ncreated_by: tronde\ndomain: university\nseed_examples:\n - question: Who is the chancellor of Bielefeld Universtiy?\n   answer: Dr. Stephan Becker is the chancellor of the Bielefeld University.\n - question: When was the University founded?\n   answer: |\n     The Bielefeld Universtiy was founded in 1969.\n - question: How many students study at Bielefeld University?\n   answer: |\n     In 2017 there were 24,255 students encrolled at Bielefeld Universtity?\n - question: Do you know something about the Administrative staff?\n   answer: |\n     Yes, in 2017 the number for Administrative saff was published as 1,100.\n - question: What is the number for Academic staff?\n   answer: |\n     In 2017 the number for Academic staff was 1,387.\ndocument:\n repo: https:\/\/github.com\/Tronde\/instructlab_knowledge_contributions_unibi.git\n commit: c2d9117\n patterns:\n  - unibi.md\n(venv) &#91;tronde@t14s instructlab]$ \n(venv) &#91;tronde@t14s instructlab]$ \n(venv) &#91;tronde@t14s instructlab]$ cat \/home\/tronde\/src\/instructlab\/taxonomy\/knowledge\/university\/germany\/bielefeld_university\/attribution.txt \nTitle of work: Bielefeld University\nLink to work: https:\/\/en.wikipedia.org\/wiki\/Bielefeld_University\nLicense of the work: CC-BY-SA-4.0\nCreator names: Wikipedia Authors\n(venv) &#91;tronde@t14s instructlab]$ \n(venv) &#91;tronde@t14s instructlab]$ \n(venv) &#91;tronde@t14s instructlab]$ ilab diff\nknowledge\/university\/germany\/bielefeld_university\/qna.yaml\nTaxonomy in \/taxonomy\/ is valid :)\n(venv) &#91;tronde@t14s instructlab]$<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Synthetische Daten generieren<\/h3>\n\n\n\n<p>Aus der im vorherigen Abschnitt erstellten Taxonomie generiere ich im n\u00e4chsten Schritt synthetische Daten, welche in einem folgenden Schritt f\u00fcr das Training des LLM genutzt werden.<\/p>\n\n\n\n<p><a href=\"https:\/\/github.com\/instructlab\/instructlab\/blob\/main\/README.md#-generate-a-synthetic-dataset\">Dazu wird der Befehl <code>ilab generate<\/code> aufgerufen, w\u00e4hrend sich das LLM noch in Ausf\u00fchrung befindet<\/a>. Dieser endet bei mir erfolgreich mit folgendem Ergebnis:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>(venv) &#91;tronde@t14s instructlab]$ ilab generate\n&#91;\u2026]\nINFO 2024-05-28 12:46:34,249 generate_data.py:565 101 instructions generated, 62 discarded due to format (see generated\/discarded_merlinite-7b-lab-Q4_K_M_2024-05-28T09_12_33.log), 4 discarded due to rouge score\nINFO 2024-05-28 12:46:34,249 generate_data.py:569 Generation took 12841.62s\n(venv) &#91;tronde@t14s instructlab]$ ls generated\/\ndiscarded_merlinite-7b-lab-Q4_K_M_2024-05-28T09_12_33.log\ngenerated_merlinite-7b-lab-Q4_K_M_2024-05-28T09_12_33.json\ntest_merlinite-7b-lab-Q4_K_M_2024-05-28T09_12_33.jsonl\ntrain_merlinite-7b-lab-Q4_K_M_2024-05-28T09_12_33.jsonl<\/code><\/pre>\n\n\n\n<p>Zur Laufzeit werden alle CPU-Threads voll ausgelastet. Auf <a href=\"https:\/\/www.my-it-brain.de\/wordpress\/es-ist-in-2021-ein-lenovo-thinkpad-t14s-amd-geworden\/\" data-type=\"post\" data-id=\"2839\">meinem Laptop<\/a> dauerte dieser Vorgang knapp 4 Stunden.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Das Training beginnt<\/h3>\n\n\n\n<p>Jetzt wird es Zeit, das LLM mit den synthetischen Daten anzulernen bzw. zu <a href=\"https:\/\/github.com\/instructlab\/instructlab\/blob\/main\/README.md#train-the-model-locally-on-linux\">trainieren<\/a>. Dieser Vorgang wird mehrere Stunden in Anspruch nehmen und ich verplane mein Laptop in dieser Zeit f\u00fcr keine weiteren Arbeiten.<\/p>\n\n\n\n<p>Um m\u00f6glichst viele Ressourcen freizugeben, beende ich das LLM (<code>ilab serve<\/code> und <code>ilab chat<\/code>). Das Training beginnt mit dem Befehl <code>ilab train<\/code>\u2026 und dauert wirklich lange.<\/p>\n\n\n\n<p>Nach 2 von 101 Durchl\u00e4ufen wird die gesch\u00e4tzte Restlaufzeit mit 183 Stunden angegeben. Das Ergebnis spare ich mir dann wohl f\u00fcr einen Folgeartikel auf und gehe zum Fazit \u00fcber.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Fazit<\/h2>\n\n\n\n<p>Mit dem <em>InstructLab Getting Started Guide<\/em> gelingt es in kurzer Zeit, das Projekt auf einem lokalen Linux-Rechner einzurichten, ein LLM auszuf\u00fchren und mit diesem zu chatten.<\/p>\n\n\n\n<p>KI-Halluzinationen stellen in meinen Augen ein Problem dar. Da LLMs \u00fcberzeugend argumentieren, kann es Nutzern schwerfallen oder gar misslingen, die Falschaussagen als solche zu erkennen. Im schlimmsten Fall lernen Nutzer somit dummen Unfug und verbreiten diesen ggf. weiter. Dies ist allerdings kein Problem bzw. Fehler des InstructLab-Projekts, da alle LLMs in unterschiedlicher Auspr\u00e4gung von KI-Halluzinationen betroffen sind.<\/p>\n\n\n\n<p>Wie <em>Knowledge<\/em> und <em>Skills<\/em> hinzugef\u00fcgt werden k\u00f6nnen, musste ich mir aus drei Guides anlesen. Dies ist kein Problem, doch kann der Leitfaden evtl. noch etwas verbessert werden.<\/p>\n\n\n\n<p><em>Knowledge Contributions<\/em> werden aktuell nur <a href=\"https:\/\/github.com\/instructlab\/taxonomy\/blob\/main\/README.md#getting-started-with-knowledge-contributions\">nach vorheriger Genehmigung und nur von Wikipedia-Quellen akzeptiert<\/a>. Der Grund wird nicht klar kommuniziert, doch ich vermute, dass dies etwas mit geistigem Eigentum und Lizenzen zu tun hat. Wikipedia-Artikel stehen unter einer <a href=\"https:\/\/en.wikipedia.org\/wiki\/Wikipedia:Text_of_the_Creative_Commons_Attribution-ShareAlike_4.0_International_License\">Creative Commons Attribution-ShareAlike 4.0 International License<\/a> und k\u00f6nnen daher unkompliziert als Quelle verwendet werden. Da sich das Projekt in einem fr\u00fchen Stadium befindet, kann ich diese Limitierung nachvollziehen. Ich w\u00fcnsche mir, dass grunds\u00e4tzlich auch Prim\u00e4rquellen wie Herstellerwebseiten und Publikationen zugelassen werden, wenn Rechteinhaber dies autorisieren.<\/p>\n\n\n\n<p>Der von mir herangezogene <a href=\"https:\/\/en.wikipedia.org\/wiki\/Bielefeld_University\">Wikipedia-Artikel<\/a> ist leider nicht ganz aktuell. Nutze ich ihn als Quelle f\u00fcr das Training eines LLM, bringe ich dem LLM damit veraltetes und nicht mehr g\u00fcltiges Wissen bei. Das ist f\u00fcr meinen ersten Test unerheblich, f\u00fcr Beitr\u00e4ge zum Projekt jedoch nicht sinnvoll.<\/p>\n\n\n\n<p>Die Generierung synthetischer Daten dauert auf Alltagshardware schon entsprechend lange, das anschlie\u00dfende Training jedoch nochmals bedeutend l\u00e4nger. Dies ist meiner Ansicht nach nichts, was man nebenbei auf seinem Laptop ausf\u00fchrt. Daher habe ich den Test auf meinem Laptop abgebrochen und lasse das Training aktuell auf einem Fedora 40 Server mit 32 GB RAM und 10 CPU-Kernen ausf\u00fchren. \u00dcber das Ergebnis und einen Test des verbesserten Modells werde ich in einem folgenden Artikel berichten.<\/p>\n\n\n\n<p>Was ist mit euch? Kennt ihr das Projekt InstructLab und habt evtl. schon damit gearbeitet? Wie sind eure Erfahrungen?<\/p>\n\n\n\n<p>Arbeitet ihr mit LLMs? Wenn ja, nutzt ihr diese nur oder trainiert ihr sie auch? Was nutzt ihr f\u00fcr Hardware?<\/p>\n\n\n\n<p>Ich freue mich, wenn ihr eure Erfahrungen hier mit uns teilt.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Dies ist mein Erfahrungsbericht zu den ersten Schritten mit InstructLab. Ich gehe darauf ein, warum ich mich \u00fcber die Existenz dieses Open Source-Projekts freue, was ich damit mache und was ich mir von Large Language Models (kurz: LLMs, zu Deutsch: gro\u00dfe Sprachmodelle) erhoffe. Der Text enth\u00e4lt Links zu tiefergehenden Informationen, die euch mit Hintergrundwissen versorgen<span class=\"continue-reading\"> <a href=\"https:\/\/www.my-it-brain.de\/wordpress\/mit-instructlab-zu-large-language-models-beitragen\/\">[Weiterlesen&#8230;]<\/a><\/span><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_metis_text_type":"","_metis_text_length":0,"_post_count":0,"footnotes":""},"categories":[51],"tags":[836,837,833,835,834],"class_list":["post-3847","post","type-post","status-publish","format-standard","hentry","category-linux","tag-ai","tag-grosse-sprachmodelle","tag-instructlab","tag-ki","tag-llm"],"_links":{"self":[{"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/posts\/3847","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/comments?post=3847"}],"version-history":[{"count":13,"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/posts\/3847\/revisions"}],"predecessor-version":[{"id":3865,"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/posts\/3847\/revisions\/3865"}],"wp:attachment":[{"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/media?parent=3847"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/categories?post=3847"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/tags?post=3847"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}