Was ist verteilte Inferenz?

URL kopieren

Verteilte Inferenz sorgt dafür, dass KI-Modelle Workloads effizienter verarbeiten können, indem die Inferenzarbeit innerhalb einer Gruppe miteinander verbundener Geräte verteilt wird. Stellen Sie sich dies als Äquivalent zum Sprichwort „Viele Hände machen ein schnelles Ende“ für den Softwarebereich vor. 

Die verteilte Inferenz unterstützt ein System, das Anfragen über eine ganze Flotte von Hardware-Komponenten verteilt, darunter physische und Cloud-Server. Von dort aus verarbeiten die einzelnen Inferenzserver ihren zugewiesenen Teil parallel, um eine Ausgabe zu erstellen. Das Ergebnis ist ein resilientes und beobachtbares System zum Bereitstellen konsistenter und skalierbarer KI-gestützter Services.

Mehr über Red Hat AI erfahren

Analogie zu einer Dinnerparty

Nehmen wir an, Sie veranstalten eine Dinnerparty für 10 Personen. Sie möchten Ihren Gästen ein 4-Gänge-Menü servieren: eine Vorspeise, einen Salat, ein Hauptgericht und ein Dessert. Aber Sie haben nur 2 Stunden Zeit, um das Essen zuzubereiten. Dies alleine zu schaffen, ist nahezu unmöglich – entweder leidet darunter die Qualität des Endprodukts (Essensqualität) oder das Tempo verlangsamt sich. 

Zur Lösung dieses Problems bitten Sie einige Freunde um Hilfe und weisen den einzelnen Personen entsprechend ihrer Fachkenntnisse einen Menügang zu. Beispielsweise bereitet eine Person, die nicht oft kocht, den Salat zu, während eine andere Person, die eine Ausbildung zum Koch absolviert hat, das komplexe Hauptgericht übernimmt. Durch die Nutzung der Fähigkeiten der einzelnen Personen und die gleichzeitige Arbeit an individuellen Aufgaben wird das Abendessen pünktlich serviert und schmeckt fantastisch.

In der Analogie der Dinnerparty entspricht die Zusammenarbeit der Freunde einer verteilten Inferenz, wobei die einzelnen Gänge Anfragen darstellen und die einzelnen Freunde verschiedene Arten von Inferenzservern sind. 

Geschwindigkeit, Skalierbarkeit und Kostenersparnis durch verteilte Inferenz

Mit der zunehmenden Perfektionierung von KI-Modellen nehmen diese auch an Umfang zu. So kann beispielsweise ein LLM (Large Language Model) mehrere hundert Milliarden Parameter enthalten. Parameter bestimmen das Sprachverständnis eines LLM. Je mehr Parameter ein Modell aufweist, desto komplexer und genauer sind die Aufgaben, die es ausführen kann. 

Manche KI-Modelle (wie DeepSeek mit 671 Milliarden Parametern) sind einfach zu groß, um auf eine einzige GPU (Graphic Processing Unit) zu passen. Damit diese Modelle funktionieren, ist ein Eingriff wie die verteilte Inferenz erforderlich. 

Mit zunehmender Anzahl von Parametern in einem Modell steigt auch der Bedarf an Hardwareressourcen.

Das Speichern dieser riesigen Modelle und das Ausführen der Inferenzberechnungen erfordern viel Speicher und Rechenleistung. Zur Bewältigung dieser Herausforderungen haben Sie mehrere Möglichkeiten:

  • Steigern der Leistungsfähigkeit Ihrer vorhandenen Rechner durch Hinzufügen weiterer GPUs zu einem Server:  Mehr GPUs bedeuten mehr Rechenleistung, oder? GPUs sind jedoch teuer. Außerdem riskieren Sie die Entstehung eines Single Point of Failure, durch den das gesamte System beeinträchtigt werden kann, wenn eine Instanz (Kopie Ihrer Inferenzanwendung) ausfällt.
  • Verschlanken der Modelle durch Modellquantisierung: Bei dieser Optimierungstechnik werden die Parameter eines Modells vereinfacht. Dabei wird die numerische Präzision der Parameter verringert, um die Modellgröße insgesamt zu verkleinern. Die Modellquantisierung ist die erste Strategie, die wir für die optimierte Verarbeitung großer Modelle empfehlen, da sie weniger komplex zu implementieren ist als die verteilte Inferenz.
  • Steigern der Effizienz Ihrer vorhandenen Hardware durch Fördern einer gemeinschaftlichen Workload-Verteilung mit verteilter Inferenz: Dieser Ansatz bietet die Geschwindigkeit, Zuverlässigkeit und Skalierbarkeit, die für Unternehmensanforderungen nötig sind. Die verteilte Inferenz kann als Strategie zusätzlich zur Modellquantisierung verwendet werden. 

Ein Inferenzserver ist die grundlegende Software, mit der ein KI-Modell auf der Basis seines vorherigen Trainings neue Rückschlüsse ziehen kann. Inferenzserver leiten die Eingabeanfragen (wie eine Suchanfrage oder eine Eingabeaufforderung) durch ein Machine Learning-Modell und generieren eine entsprechende Ausgabe.

Inferieren bedeutet, Rückschlüsse zu ziehen, die auf Evidenz basieren. Stellen Sie sich vor, dass im Wohnzimmer einer befreundeten Person das Licht brennt, aber Sie sehen sie nicht. Sie können zwar darauf schließen, dass sie zuhause ist, aber Sie haben keine eindeutigen Beweise dafür.

Ein Sprachmodell verfügt auch nicht über eindeutige Beweise für die Bedeutung eines Wortes oder einer Formulierung – da es sich um eine Software handelt – sodass es sich auf sein Training stützt. Das Modell generiert mithilfe datengestützter Berechnungen einen Rückschluss. 

4 wichtige Überlegungen zur Implementierung von KI-Technologie

Die verteilte Inferenz basiert darauf, dass KI-Modelle einen einzigen intelligenten Koordinator erhalten, der als Gehirn für Ihre KI-Workloads fungiert. Wenn eine neue Anfrage eingeht, trägt verteilte Inferenz dazu bei, die Anfrage zu analysieren und sie an den für diese Aufgabe am besten geeigneten Teil Ihres Hardwaresystems weiterzuleiten (erinnern Sie sich an die Analogie mit der Dinnerparty?). 

Große Modelle, zu viele Nutzende oder Latenzprobleme können die Performance beeinträchtigen. Entsprechend den Ursachen für den Engpass werden bei der verteilten Inferenz verschiedene Strategien angewendet:

  • Aufteilung des Modells: Ist das Modell zu groß für 1 GPU, verwendet die verteilte Inferenz Modellparallelität, um das Modell auf mehrere GPUs aufzuteilen.
  • Aufteilung der Daten: Zur gleichzeitigen Verwaltung vieler Nutzender werden Datenparallelität und intelligentes Load Balancing verwendet, um die Eingabedaten auf die Server zu verteilen. Dadurch werden gleichzeitige Anforderungen effizient verwaltet.
  • Aufteilung des Inferenzprozesses: Für die Optimierung des gesamten Workflows wird die Disaggregation von Prozessen genutzt. Dabei werden die 2 Berechnungsphasen, die eine Inferenzantwort erstellen (Prefill und Decode), getrennt und in separaten Umgebungen ausgeführt.

Intelligentes Inferenz-Scheduling

Verteilte Inferenz erfordert eine Control Plane oder einen Scheduler, der Informationen koordinieren und übertragen kann, um Aufgaben zu erledigen. Intelligentes Scheduling ist ein Prozess, der innerhalb verteilter Inferenzsysteme kontinuierlich ausgeführt wird, um diese Koordination zu erreichen. 

Stellen Sie sich intelligentes Scheduling als einen Projektmanager vor. Anstatt eine Anfrage an den nächsten Server zu senden, wird beim intelligenten Scheduling Folgendes berücksichtigt:

  • welche Server bereits über relevante zwischengespeicherte Informationen zu Ihrer Anfrage verfügen
  • welche Server über die Kapazität verfügen, Ihre Anforderung zu verarbeiten
  • welche Server am besten geeignet sind, die von Ihnen angeforderte Aufgabe auszuführen

Intelligentes Scheduling wird durch Softwarealgorithmen implementiert und optimiert während der Inferenz den Datenfluss.

Prefill- und Decode-Disaggregation

Das Generieren einer Antwort auf eine Abfrage erfordert 2 Phasen: Prefill und Decode. Durch die Unterteilung einer Nutzeranfrage in diese Phasen können verteilte Systeme die einzelnen Teile der jeweils am besten geeigneten Hardware zuweisen und so die Effizienz steigern. 

  • Prefill (oder Vorabfüllen des KV-Cache) bezieht sich auf den anfänglichen, rechenintensiven Schritt, in dem das Modell den Prompt des Nutzenden verarbeitet. Stellen Sie sich diese Phase als eine Phase vor, in der das Modell „liest“ und ein „Verstehen“ Ihrer Anfrage entwickelt. 

  • Unter Decode versteht man den nachfolgenden, speicherintensiven Schritt, bei dem das Modell die Antwort Token für Token generiert. In dieser Phase greift das Modell auf den KV-Cache zu, um gespeicherte Informationen zu erfassen, die für die Abfrage relevant sind. 

Durch die Trennung der Prefill-Phase von der Decode-Phase kann das System seine Ressourcen effizienter planen. Das Zusammensetzen der einzelnen Teile erfordert einen sogenannten KV-Cache.

Was ist ein KV-Cache?

KV steht für „Key Value“ (Schlüsselwert). Der Key Value bezieht sich auf die Art und Weise, wie ein LLM die Bedeutung eines Wortes oder einer Phrase formuliert. Angenommen, Sie verarbeiten den Key Value für einen Artikel auf einer Speisekarte. Eine Bestellung von Pommes frites (Key) kostet 3,99 US-Dollar (Value). Wenn also eine Kassenkraft eine Bestellung von Pommes frites verbucht, beträgt der berechnete „Value“ für diesen „Key“ 3,99 US-Dollar. LLMs verarbeiten KVs auf ähnliche Weise, indem sie den entsprechenden Value für den jeweiligen Key (oder das jeweilige Token) in ihrem Cache speichern.

Cache bezeichnet einen Kurzzeitspeicher. Denken Sie an Ihren PC: Wenn er langsam läuft, leeren Sie möglicherweise seinen Cache, um Platz für eine bessere, schnellere Verarbeitung zu schaffen.

Mit dem KV-Cache speichert das Modell das zuvor generierte Wort und hilft dabei, einen Kontext für das nächste Wort zu erstellen, was letztlich die Verarbeitung beschleunigt. Ohne den KV-Cache müsste das Modell Ihre Abfrage Wort für Wort erneut verarbeiten. 

Die Hauptaufgabe von vLLM besteht darin, für Effizienz innerhalb des KV-Cache zu sorgen. 

vLLM ist das „Gehirn“ der Software, das GPUs dabei unterstützt, Aufgaben zu verteilen und parallel zusammenzuarbeiten. Das vLLM fungiert als Satz von Anweisungen, die den KV-Cache dazu bringen, durch kontinuierliches Batching von Nutzerantworten Verknüpfungen zu erstellen.

Modellparallelität mit vLLM

Wenn Ihr Modell zu groß für Ihre GPU ist, können Sie Tensorparallelität, Pipeline-Parallelität, Mixture of Experts (MoE) oder eine Kombination aus allen 3 verwenden:

Tensorparallelität: Ein GPU-Team erledigt eine Aufgabe, indem es eine große Aufgabe in kleinere, identische Teile aufteilt. In diesem Fall fungiert vLLM als Koordinator und orchestriert die ständige Kommunikation, die erforderlich ist, um die Systemteile zu synchronisieren. 

Pipeline-Parallelität: Wie bei einem Fließband wird bei der Pipeline-Parallelität eine Aufgabe in aufeinanderfolgende Phasen unterteilt. Die Verarbeitung erfolgt so lange von einer Phase zur anderen, bis die Aufgabe abgeschlossen ist. Durch die Pipeline-Parallelität können mehrere Server zur Ausführung eines einzigen Modells verkettet werden, das ansonsten zu groß wäre, um es in einen Speicher zu laden. In diesem Fall verwaltet vLLM das hypothetische Fließband, analysiert die Schritte und stellt sicher, dass die Aufgabe nach Abschluss einer Phase von einem Server zum nächsten weitergereicht wird.

Mixture of Experts (MoE): Hier sind „Experts“ spezialisierte Teile des Modells, die darauf trainiert werden, bestimmte Arten von Eingaben zu verarbeiten. Innerhalb dieser Architektur leitet ein sogenanntes Gating-Netzwerk Aufgaben an den leistungsfähigsten Teil des Modells weiter, um schnellere und genauere Ergebnisse zu erzielen. Das in vLLM integrierte Gating-Netzwerk koordiniert dies, indem es sämtliche eingehende Anfragen liest und den Teil des Modells aktiviert, der die Anfrage verarbeiten kann. 

Datenparallelität mit vLLM

Wenn Sie viele Nutzende gleichzeitig bedienen müssen, können Sie Techniken zur Datenparallelität einsetzen. Bei der Datenparallelität geht es um das Aufteilen der Eingabedaten (Workload-Anforderungen) anstelle des Modells. 

Datenparallelität ist eine Rechentechnik, bei der die Bearbeitung einer großen Anzahl an Aufgaben auf ein Team von Servern verteilt wird. Bei dieser Technik wird eine Kopie des Modells auf die einzelnen GPUs verteilt, und die Aufgaben werden auf das Serverteam aufgeteilt, um die Anfragen parallel auszuführen.

Stellen Sie sich vor, bei einer KI-Anwendung fragen 1.000 Nutzende gleichzeitig Ihr LLM ab. Durch Datenparallelität lassen sich Kopien Ihres LLM auf 10 Server verteilen, wobei pro Server 100 Anfragen verarbeitet werden. Durch Aufteilen des Workloads in kleinere Batches kann Ihre Anwendung mehr Anforderungen mit minimaler Verzögerung verarbeiten. 

vLLM kann dazu beitragen, die Performance zu verbessern und eine Umgebung für eine noch schnellere und effizientere Verarbeitung zu schaffen. 

Mehr über vLLM erfahren

Was ist llm-d?

llm-d ist ein Open Source Framework für verteilte Large Language Models. Ein Open Source Framework ist eine Sammlung von öffentlich verfügbarem, vorgefertigtem Code und Tools, die Entwicklungsteams frei verwenden, ändern und verteilen können.

llm-d standardisiert einen klar definierten Weg – ein Blueprint für den Aufbau verteilter Inferenz in großem Umfang. Das Framework enthält ein Layout, Kommunikationstechniken und ein Trainingshandbuch sowie eine Schritt-für-Schritt-Anleitung für Organisationen beim Aufbau einer verteilten Architektur.

Durch den Ersatz manueller, fragmentierter Prozesse durch integrierte, klar definierte Abläufe können Unternehmen schneller implementieren und skalieren und so die Zeit vom Pilotprojekt bis zur Produktion verkürzen. 

Die Installation basiert auf Helm Charts und bietet ein vertrautes und anpassbares Verfahren. Eine Quickstart-Befehlszeile (CLI) ermöglicht ein unkompliziertes Deployment, einschließlich Abhängigkeiten, Voraussetzungen und Beobachtbarkeitsfunktionen.

llm-d wurde für die Erweiterung und Interoperabilität mit vLLM entwickelt und kann auf verschiedenen Kubernetes-Clustern ausgeführt werden, darunter auch Red Hat® OpenShift®. 

Erste Schritte mit llm-d

Verteilte Inferenz sorgt für eine schnellere Verarbeitung und größere Skalierbarkeit von KI-Systemen, doch die erforderliche Koordination zur Aufgabenerfüllung ist komplex. Zu den wichtigsten Herausforderungen gehören:

Latenz und Bandbreite 

Verteilte Inferenz verteilt Ihr Modell und verarbeitet Anfragen über mehrere Server und Geräte an verschiedenen Standorten. Das bedeutet, dass Informationen und Daten einen weiten Weg zurücklegen müssen, bevor sie für Nutzende eine Ausgabe generieren. Wenn die Netzwerkverbindungen zwischen Servern langsam oder überlastet sind, wird der Prozess langsamer, wie ein Auto, das im Stau steht. 

Ineffiziente Ressourcenzuweisung 

Die Verteilung der Inferenzaufgaben auf die Server muss ausgewogen sein, damit nicht einige Server überlastet sind, während andere ungenutzt bleiben.

Wiederherstellung nach Fehlern 

Wie eine Zweitbesetzung in einem Theaterstück bedarf es eines Backup-Plans. In verteilten Systemen können Verbindungen unterbrochen werden, Server ausfallen und Rechenzentren offline gehen. Stellen Sie sicher, dass bei Ausfall eines Teils Ihres Systems ein anderer Teil einspringen kann. 

Komplexität bei Debugging und Fehlerbehebung 

In verteilten Inferenzsystemen verwendete, miteinander verbundene Server können schneller und effizienter arbeiten als nicht miteinander verbundene Server. Allerdings erschwert ihre Verbindung untereinander die Suche nach der Ursache eines Problems – ähnlich wie bei der Diagnose einer Kopfschmerzursache.

Synchronisierungs-Overhead 

Stellen Sie sich vor, Sie führen eine Telefonkonferenz mit 300 Personen. Die Systeme müssen mehr leisten als sonst, um Video und Ton in Echtzeit wiederzugeben. Manchmal friert das Video einer Person ein oder ihre Stimme wird verzögert übertragen. Die synchronisierte Koordination kann sehr aufwendig sein und erfordert eine leistungsfähige Infrastruktur.

Modellmanagement und -Deployment 

Sind Sie bereit für das Update Ihres Modells? Die Einführung verteilter Inferenz erfordert eine Strategie und sorgfältige Koordination durch Fachkräfte, was mitunter komplex und zeitaufwendig sein kann.

Kostenmanagement 

Verteilte Systeme haben eine komplexere Kostenarchitektur als einzelne Computer. Diese Kosten können je nach Nutzungsmuster, Datenübertragungen zwischen Standorten und Skalierungsanforderungen schwanken. Für optimale Performance, Resilienz und effektives Kostenmanagement ist es wichtig, einen auf Metriken basierenden Ansatz zu etablieren.

Sicherheit 

Server über mehrere Standorte zu verteilen bedeutet, Maßnahmen zum Schutz mehrerer Standorte zu ergreifen. Sie müssen Kommunikation verschlüsseln, Zugriffskontrollen verwalten und vor Angriffen schützen. All dies erfordert Fachwissen. 

Was ist KI-Sicherheit?

Mit verteilter Inferenz können Sie LLMs für eine Vielzahl von Anwendungen einsetzen. Dies liegt daran, dass dadurch die Größen- und Geschwindigkeitsbeschränkungen beim Ausführen von Modellen auf einer einzelnen Hardware reduziert werden. Dadurch lassen sich mit verteilter Inferenz Latenzzeiten (Verzögerungen) reduzieren und die Bandbreite (Kapazität) erhöhen, um vielfältige Use Cases auf der bestehenden Infrastruktur zu unterstützen. 

Konsistente und vorhersehbare Performance

Herkömmliche KI-Inferenz ist oft eine „Blackbox“, die zu unvorhersehbaren Antwortzeiten und einem schlechten Benutzererlebnis führen kann. Bei der verteilten Inferenz werden eingehende Anfragen durch intelligentes Scheduling analysiert und an die optimale Hardware weitergeleitet. Dies sorgt für ein zuverlässigeres und stabileres Benutzererlebnis.

Kostenmanagement

Die Kosten können bei der verteilten Inferenz zwar eine Herausforderung darstellen, aber auch einen Vorteil bieten. Je größer die Modelle werden, desto größer wird der Bedarf an teuren Hardwarebeschleunigern wie GPUs. Bei ordnungsgemäßer Verwaltung können Sie mit verteilter Inferenz Kosten reduzieren, indem Sie Ihre Hardware so effizient wie möglich nutzen. 

Verbesserte Beobachtbarkeitstools

Wenn generative KI-Modelle von der Pilotphase in die Produktion übergehen, wird die Überwachung des Zustands, der Performance und der Kosten Ihrer KI-Services zu einer neuen Herausforderung. Verteilte Inferenz bietet ein hochgradig beobachtbares System, mit dem Sie Ihre KI-Workloads proaktiv überwachen können – von der Token-Verarbeitung bis zu Latenzzeiten und Durchsatz. Anhand dieser Transparenz können Sie Engpässe erkennen und Probleme beheben und so für eine vorhersehbare Performance und Kostenkontrolle sorgen. 

Datenschutzbestimmungen 

Datenschutzgesetze wie die DSGVO (Datenschutz-Grundverordnung) und der CCPA (California Consumer Privacy Act) stellen strenge Regeln für die Erfassung und Übermittlung personenbezogener Daten auf. Die verteilte Inferenz entspricht diesen Bestimmungen, da Daten lokal verarbeitet und nur nicht-sensible Teile der Daten an einen zentralen Server gesendet werden. So werden personenbezogene Daten innerhalb bestimmter geografischer Gerichtsbarkeiten geschützt und die Datensouveränität unterstützt. 

Datenlokalität  

Bei der verteilten Inferenz wird der Inferenzprozess (die eigentliche Berechnung) an zahlreiche Server gesendet, die Daten bleiben jedoch lokal. Anwendungen arbeiten schneller, wenn Daten direkt an ihrem Erfassungsort verarbeitet werden und nicht an einen entfernten Server gesendet werden müssen. 

Red Hat AI ist eine Produktplattform, die auf Open Source-Technologie basiert, um den Herausforderungen einer umfassenden Unternehmens-KI zu begegnen. Verteilte Inferenz ist ein wichtiges Tool in unserem Toolkit.

Mit Red Hat OpenShift AI, einer Komponente von Red Hat AI, lassen sich die Kosten für die Inferenz mit verteilten Services über eine unternehmensgerechte Version von vLLM verwalten. Zur Reduktion operativer Komplexität bietet die Lösung fortschrittliche Tools zum Automatisieren von Deployments und zum Self Service-Zugriff auf Modelle, Tools und Ressourcen.

Sämtliche Produkte von Red Hat AI bieten Flexibilität und Konsistenz, damit Sie KI-Modelle auf verschiedenen Hardwareplattformen und in Hybrid Cloud-Umgebungen in großem Umfang entwickeln, bereitstellen und ausführen können.

Mehr über Red Hat AI erfahren

Artikel

Was ist KI-Inferenz?

KI-Inferenz bezieht sich auf den Vorgang, bei dem ein KI-Modell eine auf Daten basierende Antwort gibt. Es handelt sich dabei um den letzten Schritt in einem komplexen Prozess der ML-Technologie (Machine Learning).

Erfolgreiche KI-Einführung mit Red Hat: Fachwissen, Training und Support für den KI-Prozess

Lernen Sie das KI-Portfolio von Red Hat kennen. Red Hat AI kann Sie beim Erreichen Ihrer Geschäfts- und IT-Ziele mit KI (Künstlicher Intelligenz) unterstützen.

Weiterlesen

RAG im Vergleich zu Fine Tuning: LLMs optimal anpassen

RAG (Retrieval-Augmented Generation) oder Fine Tuning? Erfahren Sie, welche LLM-Methode für die Anpassung an Ihre Unternehmensdaten am besten geeignet ist.

Was sind Granite-Modelle? Large Language Models für KI

Granite sind LLMs von IBM für Unternehmensanwendungen. Granite-Modelle unterstützen Use Cases für gen KI, die Sprache und Code enthalten. Einsatz und Vorteile

Was ist MCP (Model Context Protocol)?

Erfahren Sie, wie Sie mit MCP (Model Context Protocol) KI-Anwendungen mit externen Datenquellen verbinden und so intelligentere Workflows entwickeln können.

Ressourcen zu KI/ML

Verwandte Artikel