Wie hoste ich ein Large Language Modell in 5 Minuten mit Kubernetes mit Data Science Deep Dive.
Im Engineering Kiosk Adventskalender 2024 sprechen befreundete Podcaster⋅innen und wir selbst, Andy und Wolfi, jeden Tag kurz & knackig innerhalb von wenigen Minuten über ein interessantes Tech-Thema.
Unsere aktuellen Werbepartner findest du auf https://engineeringkiosk.dev/partners
Das schnelle Feedback zur Episode:
Links
- Data Science Deep Dive Podcast: https://inwt.podbean.com/
- In Numbers We Trust: https://www.inwt-statistics.de/
- Kubernetes: https://kubernetes.io/
- Hugging Face: https://huggingface.co/
- Databricks: https://www.databricks.com/de
- Tabby: https://github.com/TabbyML/tabby
- Gradio: https://www.gradio.app/
- Ollama: https://ollama.com/
- vLLM: https://github.com/vllm-project/vllm
- NVIDIA device plugin for Kubernetes: https://github.com/NVIDIA/k8s-device-plugin#quick-start
Sprungmarken
Hosts
- Wolfgang Gassler (https://mastodon.social/@woolf)
- Andy Grunwald (https://andygrunwald.com/)
Feedback
- EngKiosk Community: https://engineeringkiosk.dev/join-discord
- Buy us a coffee: https://engineeringkiosk.dev/kaffee
- Email: stehtisch@engineeringkiosk.dev
- LinkedIn: https://www.linkedin.com/company/engineering-kiosk/
- Mastodon: https://podcasts.social/@engkiosk
- Bluesky: https://bsky.app/profile/engineeringkiosk.bsky.social
- Twitter: https://twitter.com/EngKiosk
Transkript
Andy Grunwald (00:00:05 - 00:00:35)
Willkommen zum zweiten Türchen des Engineering Kiosk Adventskalenders. Dieses Türchen ist nicht mit Wolfgang oder mir, sondern mit einem Beitrag aus der deutschsprachigen Podcast Community, diesmal aus dem Bereich Data Science. Aber bevor es losgeht, erstmal ein Witz zur Einstimmung auf das Thema. Was ein Knaller, kann ich nur sagen. Aber nun zum Thema. Viel Spaß mit dem Community Beitrag vom Data Science Deep Dive Podcast.
Michelle Golchert (00:00:35 - 00:00:49)
Hallo und herzlich willkommen zum Adventskalender vom Engineering Kiosk. Wir sind Michelle und Sebastian vom Data Science Deep Dive und wir starten direkt ins Wie hoste ich ein LL M in 5 Minuten mit Kubernetes? Sebastian, erzähl doch mal, was sind denn LLMs?
Dr. Sebastian Warnholz (00:00:49 - 00:01:16)
LLMs stehen für Large language Models und können vor allen Dingen Text generieren. Und das machen sie, indem sie versuchen, die nächsten Worte mit der höchsten Wahrscheinlichkeit zurückzugeben, gegeben aller bisher zurückgegebenen Wörter. Trainiert werden solche Modelle auf wirklich sehr, sehr großen Mengen von Text. Wir sprechen jetzt in diesem Falle nicht über multimodale Modelle, die eben auch noch auf Bildern oder Videos trainiert werden, sondern beschränken uns wirklich auf die Sprachmodelle.
Michelle Golchert (00:01:16 - 00:01:19)
Und welche Möglichkeiten habe ich denn jetzt, LLMs zu hosten?
Dr. Sebastian Warnholz (00:01:19 - 00:02:54)
Ja, wenn ich das ganze nicht selbst machen möchte, dann habe ich diverse Möglichkeiten. Vor allen Dingen greife ich darauf auf Plattformen zweitausendein zurück, die mir das ganze eben als Service anbieten. Ganz vorne mit dabei sind wahrscheinlich Hugging Face. Hugging Face ist eigentlich eher bekannt als Plattform für Entwicklerinnen und Unternehmer oder Unternehmen, die ihre eigenen Modelle veröffentlichen wollen und bereitstellen unter einer bestimmten Lizenz zur Nutzung für euch oder innerhalb von Anwendungen für andere Unternehmen. Dort drauf kann ich dann zurückgreifen. Hugging Face macht aber deutlich mehr als nur eine Plattform, also ein Repository zu sein für Modelle. Sie bieten eben auch als Service an, dort diese Modelle zu hosten und ja, dann als Service tatsächlich darauf zuzugreifen. Man kann natürlich auch auf Services zurückgreifen, wie sie von open Air angeboten werden. Auch Plattformen wie Databricks haben entsprechende Module, um das Hosten von LLMs vor allen Dingen leichter zu machen. Nvidia ist ganz vorne mit dabei und bietet Services an. Was diese Services alle mit abdecken, ist tatsächlich, dass wir die Möglichkeit haben, auch Modelle fein zu tunen. Ein Feintuning von Sprachmodellen ist vor allen Dingen wichtig, wenn wir das Modell auf einen spezifischen Use Case anpassen möchten. Das bedeutet, wir reichern das Ganze eben noch mal mit zusätzlichen Trainingsdaten an und erreichen so typischerweise bessere Performance oder bessere Eigenschaften von dem Modell. Eben zugeschnitten auf unseren Use Case. Und auch solche Modelle kann ich dann dort tatsächlich hosten. Und ich kann sie eben nicht nur hosten, sondern ich kann auch diesen Plattformen das Training überlassen, um dort eben das Ganze eben als kompletten Service auch nutzbar zu machen.
Michelle Golchert (00:02:54 - 00:03:00)
Und wenn es jetzt all diese Plattformen und Services gibt, warum sollte ich denn überhaupt ein LLM lokal hosten?
Dr. Sebastian Warnholz (00:03:00 - 00:04:37)
Ich glaube, der wichtigste Grund wird für viele Unternehmen sein, der Datenschutz oder eben der Schutz von sensiblen Informationen. Was man sich natürlich bei einem Sprachmodell immer fragen muss, gerade wenn es eben extern gehostet wird, ich habe es oder ich nutze es vielleicht einfach als autocomplete Falle von von der Softwareentwicklung, dann muss ich mir eben vorstellen, jede einzelne Zeile und jede Korrektur wird gesendet an einen Server, der betrieben und kontrolliert wird durch ein anderes Unternehmen. Und nicht jedes Unternehmen ist ist mit diesem Verleihen verstanden, dass ich alle Textinformationen meines Unternehmens preisgebe, ohne zu wissen und Kontrolle darüber zu haben, was mit dieser Information eigentlich genau passiert. Andere Gründe können aber auch sein, dass ich eben beim Fine tuning von den Modellen mehr Kontrolle brauche, dass ich vielleicht im Bereich der Inferenz mehr Kontrolle haben möchte, dass ich im Bereich der Evaluierung und der Performance mehr Kontrolle und mehr Einblicke haben möchte. Gründe wie Kosten spielen sicherlich auch eine Rolle. Und zuletzt noch ein technischer Grund, tatsächlich die Latenz. Im lokalen Netzwerk habe ich eben deutlich bessere Performance Eigenschaften, gerade wenn es um Latenz geht. Ich habe weniger Netzwerk und kann, wenn ich denn das Hosting zumindest vernünftig mache, dort eine hochperformante Anwendung haben, die wirklich dann sofort reagieren kann. Wenn ich das ganze nur als Autocomplete nutzen möchte für meine innerhalb meiner IDE, dann bietet sich vielleicht auch noch mal ein Projekt wie Tabby an, was mir ermöglicht, ein lokales Sprachmodell vor allen Dingen zum Coden dann eben zu verwenden. So, jetzt haben wir eine ganze Reihe von Punkten schon abgehakt. Wie mache ich das denn jetzt aber, wenn ich ein bestimmtes Large language Model vielleicht in meiner lokalen Anwendung haben möchte? Wie gehe ich denn da vor?
Michelle Golchert (00:04:37 - 00:05:28)
Michelle also als ersten Schritt überlege ich noch mal kurz, was möchte ich denn hosten? Also ich habe auf der einen Seite das LLM, das ist das im Prinzip, worüber du gerade die ganze Zeit gesprochen hast, Sebastian, also das Modell selber. Was ich dann dazu noch brauche, ist eine GUI. Also ich muss die Möglichkeit haben, mit diesem L interagieren zu können. Für dieses Hosten des LLMs an sich ist es wichtig, Nvidia oder Cuda Docker Images zu nutzen, weil dieser Container dann einen entsprechenden GPU Support braucht. Bei der GUI kann man z.B. gradio benutzen. Das ist ein Python Paket oder ein Framework für ML Web Apps. Und diese GUI spricht im Hintergrund das LLM an, also die Python Funktion, die ich geschrieben habe, z.B. mit pyTorch, um mit dem LLM interagieren zu können. Und das ist sieht dann so aus, dass ich mit diesem lm chatte. Das heißt, ich stelle ihm eine Frage und das lm antwortet darauf.
Dr. Sebastian Warnholz (00:05:28 - 00:05:37)
Das bedeutet, so bekomme ich meine Anwendung in einen Docker Container und habe dort dann Zugriff auf ein Chat Interface. Und kann man das dann so ohne weiteres nach Kubernetes bringen?
Michelle Golchert (00:05:37 - 00:06:05)
Noch nicht ganz. Man muss da noch eine Sache machen, und zwar muss ich die VM, auf der das läuft, entsprechend vorbereiten. Denn auch hier ist es wichtig, um mit der GPU interagieren zu können, dass wir entsprechende Treiber installieren. Auch hier ist das Stichwort wieder Nvidia oder CUDA und es gibt das sogenannte Nvidia Toolkit, was sich da anbietet, was man dann auf der VM im Voraus installiert. Und erst im Anschluss kann ich dann damit beginnen, das eigentliche Deployment mit Kubernetes umzusetzen.
Dr. Sebastian Warnholz (00:06:05 - 00:06:12)
Okay, das bedeutet, ich habe meine VM, ich habe einen Container und dann habe ich eigentlich nur noch einen Service in Kubernetes.
Michelle Golchert (00:06:12 - 00:06:46)
Das stimmt. Allerdings musst du noch eine Sache vorher tun. Du musst nämlich Kubernetes beibringen, dass es diese GPU überhaupt gibt und dass Kubernetes diese GPU nutzen kann. Zweitausendein standardmäßig ist es nämlich nicht möglich, in der kubernetes Konfiguration die GPU anzusprechen. Und wie bringe ich Kubernetes das bei? Ich mache das, indem ich das Nvidia Device Plugin über Helm deploye. Das ist eine einfache Helm Installation und im Anspruch ist es dann möglich, in der kubernetes Konfiguration neben den anderen Standard Ressourcen auch die GPU anzusprechen und zu sagen Hey, es gibt diese GPU und nutzt sie doch bitte für mein Deployment.
Dr. Sebastian Warnholz (00:06:46 - 00:07:12)
Cool. Das heißt, wenn ihr mit einem Docker Service und GPU Support das ganze nach Kubernetes bringen wollt, dauert das wahrscheinlich ein bisschen mehr als 5 Minuten, aber zumindest erklären lässt es sich in 5 Minuten. Wenn ihr mehr darüber erfahren möchtet, dann hört doch bitte bei uns im Podcast rein, wo wir über Themen wie tatsächlich kubernetes Model Surving, den Operationsteil von AI Modellen sprechen, aber auch andere Themen zum Bereich Data Science wie Personalentwicklung oder predictive analytics ansprechen.
Michelle Golchert (00:07:12 - 00:07:29)
Und unser Podcast ist der Data Science Deep Dive. Das ist der Unternehmens Podcast von Inwt. Wir bei Inwt setzen Data Science Projekte um, von der ersten Idee bis zum fertigen Produkt. Und in unserem Podcast sprechen wir genau darüber. Hört doch gern mal rein. Wir wünschen euch schöne Feiertage und bedanken uns fürs Zuhören.
Andy Grunwald (00:07:30 - 00:07:52)
Vielen lieben Dank an Michelle und Sebastian vom Data Science Deep Dive Podcast. Wenn ihr noch mehr von den beiden hören wollt, die entsprechenden Links findet ihr natürlich in den Shownotes. Dort findet ihr auch unsere Discord Community, falls ihr Lust auf weitere Engineering Gespräche habt. Ansonsten wünschen wir euch viel Spaß beim Einrichten des eigenen Large language Models auf Kubernetes und natürlich schöne Feiertage. Bis bald.