Simple Science

Hochmoderne Wissenschaft einfach erklärt

# Computerwissenschaften # Rechnen und Sprache # Künstliche Intelligenz

NITRO: Ein Game Changer für LLMs auf NPUs

NITRO schliesst die Lücke für den Betrieb von LLMs auf NPUs und verbessert die Leistung und Effizienz.

Anthony Fei, Mohamed S. Abdelfattah

― 8 min Lesedauer


NITRO verbessert LLMs auf NITRO verbessert LLMs auf NPUs NPUs für energieeffizientes Rechnen. NITRO verbessert die LLM-Leistung auf
Inhaltsverzeichnis

Grosse Sprachmodelle (LLMs) sind gerade die Superstars in der Tech-Welt. Sie helfen bei allem Möglichen, von Chatbots bis zu verschiedenen Forschungsaufgaben. Wenn du jemals mit einem virtuellen Assistenten gequatscht hast, hast du ein LLM getroffen. Ein aufregendes Thema in der Technologie ist derzeit die Entwicklung von Hardware, die perfekt mit diesen Modellen funktioniert. Eine solche Hardware nennt sich Neural Processing Unit (NPU).

2023 hat ein grosser Chiphersteller den Intel Core Ultra Prozessor vorgestellt, der Meteor Lake heisst. Dieser Prozessor hat drei Hauptbestandteile: eine zentrale Verarbeitungseinheit (CPU), eine Grafikverarbeitungseinheit (GPU) und eine NPU. Aber es gibt einen Haken: Die Software, die für diese NPUs verfügbar ist, unterstützt die dynamischen Bedürfnisse von LLMs nicht sofort. Deshalb haben Forscher nach einer Möglichkeit gesucht, das besser hinzubekommen. Hier kommt das Konzept von NITRO ins Spiel.

Was ist NITRO?

NITRO ist ein Framework, das dazu gedacht ist, LLMs auf NPUs zum Laufen zu bringen. Es ist mit Python entwickelt worden und arbeitet zusammen mit Intels OpenVINO-Framework. Man könnte sagen, es ist der freundliche Helfer, der dafür sorgt, dass LLMs effizient Texte generieren und Gespräche führen können auf dieser speziellen Hardware.

Was ist besonders an Meteor Lake?

Der Meteor Lake Prozessor ist wie ein Schweizer Taschenmesser und hat mehrere Tiles, die jeweils unterschiedliche Funktionen erfüllen. Diese Tiles umfassen Bereiche für Berechnungen, Grafik, Systemsteuerung und Eingabe/Ausgabe-Verarbeitung. Wenn du dir eine belebte Stadt mit verschiedenen Stadtteilen vorstellst, bist du gar nicht so weit daneben!

Unter diesen Tiles sticht die NPU hervor. Sie ist darauf spezialisiert, KI-Aufgaben auszuführen, und das mit niedrigem Energieverbrauch. Um das zu verdeutlichen: Die NPU kann eine unglaubliche Anzahl an Operationen pro Sekunde bewältigen, was für ein kleines Gerät ziemlich beeindruckend ist. Das macht sie gut geeignet für Aufgaben wie das Ausführen von LLMs. Allerdings hat sie auch ihre Herausforderungen, vor allem weil sie nur mit statischen Modellen arbeiten kann. Stell dir vor, du versuchst, ein Puzzle zusammenzusetzen, wo sich einige Teile ständig verändern, während du versuchst, sie einzufügen!

Die Herausforderung mit LLMs

LLMs arbeiten dynamisch; denk an sie wie an ein Rezept, bei dem du ständig Zutaten hinzufügst, während du kochst. Sie generieren während des Textgenerierungsprozesses ständig neue Daten. Leider passt die Anforderung an statische Modelle der meisten NPUs nicht zu diesem Prozess des Zutaten-Hinzufügens.

Also haben Forscher darüber gegrübelt, wie man diese dynamischen Modelle auf der Hardware, die sie unterstützt, zum Laufen bringt. Es ist ähnlich, als würdest du versuchen, einen quadratischen Pfosten in ein rundes Loch zu stecken – frustrierend und oft unmöglich.

Die Rolle von OpenVINO

Intels OpenVINO ist ein Toolkit, das Entwicklern hilft, Machine Learning-Modelle auf verschiedenen Intel-Geräten zu implementieren, einschliesslich CPUs, GPUs und NPUs. Es präsentiert Modelle in einem spezifischen Format. Wenn es darum geht, LLMs zu unterstützen, hat OpenVINO jedoch einige Einschränkungen.

Die Modelle, die es verarbeitet, sind hauptsächlich für statische Operationen gedacht, was bedeutet, dass jeder Teil des Modells eine definierte Form haben muss. Wenn du an die Transformer-Architektur denkst, die LLMs verwenden, wird das zu einer echten Herausforderung. Transformer funktionieren, indem sie ihre Struktur basierend auf den Eingaben anpassen, aber die statische Anforderung verhindert diese Flexibilität.

Ein Blick in OpenVINO

OpenVINO besteht aus spezifischen Modell-Dateien, die detailliert beschreiben, wie das Modell arbeitet. Jedes Modell ist wie ein Bauplan, wobei Knoten verschiedene Operationen (wie das Bewegen von Daten) repräsentieren und Kanten sie verbinden. Während diese Struktur für viele Anwendungen im Bereich Machine Learning gut funktioniert, ist sie für LLMs aufgrund ihrer dynamischen Natur weniger ideal.

Einfach gesagt, wenn OpenVINO ein Klassenzimmer wäre, würde jeder Knoten ein Kind repräsentieren, das darauf wartet, seinen Turn zu sprechen. Aber da LLMs ständig neue „Schüler“ (d.h. Daten) hinzufügen, ist die Situation ein bisschen chaotisch.

Wie NITRO funktioniert

Jetzt schauen wir uns an, wie NITRO diese Lücke schliesst. Das Framework hat ein paar Leitprinzipien, um effektiv zu sein. Zuerst will es dem Design von OpenVINO treu bleiben, was bedeutet, dass es OpenVINO die meiste schwere Arbeit machen lässt, während NITRO bei Aufgaben eingreift, die zusätzliche Hilfe brauchen.

Zweitens ist das Framework flexibel gestaltet. Bei so vielen Ideen, die in der Forschung herumgeistern, ist es wichtig, dass NITRO sich anpassen und verschiedene Aufgaben bewältigen kann. Schliesslich ist es eine Priorität, alles leicht verständlich und wartbar zu halten. Schliesslich will niemand mit einem verworrenen Code-Chaos zu tun haben, das ein Studium braucht, um es zu entschlüsseln.

PyTorch-Modelle umschreiben

Um LLMs gut mit NPUs arbeiten zu lassen, schreiben Forscher oft bestehende Modelle um. Stell dir vor, du nimmst einen Klassiker und passt ihn in ein leicht lesbares Comicbuch an. So läuft das hier. Durch das Überarbeiten dieser Modelle können sie in ein Format umgewandelt werden, das mit OpenVINO kompatibel ist.

Eine Veränderung besteht darin, die Eingaben in die Modelle zu vereinfachen. Viele bestehende Modelle verwenden komplexe Setups; das kann zu misslungenen Konvertierungen führen. Wenn man alles strafft, wird es viel einfacher, von einem PyTorch-Modell zum OpenVINO IR-Format zu wechseln.

Erweiterung der KV-Caches

Das Key-Value Cache-System in LLMs, das Daten für schnellen Zugriff speichert, kann knifflig werden, wenn wir statische Formen beibehalten müssen. NITRO löst das, indem es die Caches erweitert, um sicherzustellen, dass immer etwas zusätzlichen Platz vorhanden ist. Es ist ein bisschen wie wenn du ein paar zusätzliche Stühle auf einer Dinnerparty reservierst – man weiss ja nie, wann mehr Gäste vorbeischauen!

Bewegung von Rotary Embeddings

Eine weitere Änderung betrifft die rotary embeddings, mathematische Techniken, die LLMs helfen, den Kontext zu verstehen. NITRO verschiebt diese embeddings in den Hauptarbeitsbereich, anstatt sie separat zu behandeln. Diese Anpassung hilft, den Prozess zu straffen und alles besser zu organisieren.

Effiziente Modellkonvertierung

Sobald die Modelle umgeschrieben und richtig eingerichtet sind, sind sie bereit für die Konvertierung in OpenVINO IR. Aber es gibt einen Haken: Grössere Modelle können schnell die Speicherkapazitäten überschreiten, wie wenn man zu viele Bücher auf ein Regal stapelt. Um dem entgegenzuwirken, verwenden Forscher eine Methode namens „Chunking“.

Diese Technik besteht darin, das Modell in kleinere Stücke zu zerlegen, die nacheinander verarbeitet werden können, anstatt alles auf einmal zu versuchen. Das ist eine effiziente Möglichkeit, Ressourcen zu managen und sorgt für erfolgreiche Übergänge von PyTorch-Modellen zu OpenVINO.

Die Bedeutung der Benennung

Wenn Modelle konvertiert werden, ist das Benennen wichtig. So wie man einen gut organisierten Aktenschrank hat, macht es klare Namen für jedes Teil des Modells einfacher, alles im Auge zu behalten. Wenn Knoten beschreibende Namen haben, vereinfacht das den Prozess, Daten während des Betriebs des Modells zu finden und zu verwalten.

Die Modellverzeichnisstruktur

Nach der Konvertierung wird jedes Modell in einer ordentlichen Verzeichnisstruktur organisiert. Diese Organisation ist essentiell, um sicherzustellen, dass alles leicht zugänglich und gut definiert ist. Wenn du jemals versucht hast, dich in einem unordentlichen Schrank zurechtzufinden, wirst du den Wert eines aufgeräumten Setups zu schätzen wissen!

Alles für die Inferenz zusammenbringen

Sobald alles an Ort und Stelle ist, richtet NITRO eine Standardpipeline für die Texterzeugung ein. Hier läuft alles wie ein gut geölte Maschine, die Eingaben annimmt und kohärente Texte produziert. Das Framework abstrahiert die Komplexität, sodass Entwickler sich nicht um die kniffligen Details kümmern müssen.

Leistungsbenchmarking

Forscher haben fleissig getestet, wie gut diese Modelle auf der NPU im Vergleich zu anderer Hardware wie CPUs und GPUs laufen. Sie haben einen Laptop mit dem Meteor Lake Prozessor eingerichtet, um verschiedene Tests durchzuführen und zu verfolgen, wie schnell verschiedene Modelle Texte generieren können.

Während die GPU in Bezug auf rohe Geschwindigkeit vielleicht der Champion ist, zeigt die NPU vielversprechende Ergebnisse, besonders bei mittelgrossen Modellen. Die Ergebnisse zeigen, dass die NPU zwar generell langsamer als die GPU ist, aber immer noch Vorteile in der Energieeffizienz hat. Es ist wie die Wahl zwischen einem schillernden Sportwagen und einer zuverlässigen, kraftstoffeffizienten Limousine – es hängt davon ab, was du mehr schätzt!

Fehlerbehandlung und Herausforderungen

Trotz aller Fortschritte gibt es unterwegs einige Stolpersteine. Bei Tests verschiedener Konfigurationen stimmen die Ergebnisse nicht immer mit den Erwartungen überein. Insbesondere sind Probleme mit bestimmten Gewichtskompressionstechniken aufgetreten, und Fehler tauchen auf, wenn bestimmte Kombinationen verwendet werden.

Aber keine Sorge! Das ist Teil des Weges in der Technologieentwicklung. Genauso wie ein Koch manchmal sein Rezept anpassen muss, müssen Forscher ihre Methoden anpassen, um diese Herausforderungen zu überwinden.

NITRO vs. andere Bibliotheken

Beim Vergleich von NITRO mit anderen NPU-Beschleunigungsbibliotheken zeigen die Ergebnisse, dass NITRO deutlich bessere Leistungen liefert. Der Ansatz von NITRO führt zu schnelleren Inferenzzeiten und übertrifft Alternativen.

Es gibt jedoch noch Bereiche, in denen weitere Entwicklungen helfen

Originalquelle

Titel: NITRO: LLM Inference on Intel Laptop NPUs

Zusammenfassung: Large Language Models (LLMs) have become essential tools in natural language processing, finding large usage in chatbots such as ChatGPT and Gemini, and are a central area of research. A particular area of interest includes designing hardware specialized for these AI applications, with one such example being the neural processing unit (NPU). In 2023, Intel released the Intel Core Ultra processor with codename Meteor Lake, featuring a CPU, GPU, and NPU system-on-chip. However, official software support for the NPU through Intel's OpenVINO framework is limited to static model inference. The dynamic nature of autoregressive token generation in LLMs is therefore not supported out of the box. To address this shortcoming, we present NITRO (NPU Inference for Transformers Optimization), a Python-based framework built on top of OpenVINO to support text and chat generation on NPUs. In this paper, we discuss in detail the key modifications made to the transformer architecture to enable inference, some performance benchmarks, and future steps towards improving the package. The code repository for NITRO can be found here: https://github.com/abdelfattah-lab/nitro.

Autoren: Anthony Fei, Mohamed S. Abdelfattah

Letzte Aktualisierung: 2024-12-15 00:00:00

Sprache: English

Quell-URL: https://arxiv.org/abs/2412.11053

Quell-PDF: https://arxiv.org/pdf/2412.11053

Lizenz: https://creativecommons.org/licenses/by/4.0/

Änderungen: Diese Zusammenfassung wurde mit Unterstützung von AI erstellt und kann Ungenauigkeiten enthalten. Genaue Informationen entnehmen Sie bitte den hier verlinkten Originaldokumenten.

Vielen Dank an arxiv für die Nutzung seiner Open-Access-Interoperabilität.

Ähnliche Artikel