1. Hintergrund
Kürzlich haben wir dedizierte Inferenzcluster für große Modelle stapelweise in der Produktionsumgebung bereitgestellt und die Inferenzgeschwindigkeit großer Modelle, einschließlich 70B, erfolgreich um 50 % erhöht, wodurch die Bereitstellungskosten erheblich gesenkt und stabil auf Produktionsumgebungen angewendet wurden. Dieser Artikel basiert auf einigen unserer Erfahrungen bei der Bereitstellung großer Modellinferenzcluster und stellt einige Methoden zur effektiven Verbesserung der Inferenzgeschwindigkeit großer Modelle vor. Abschließend empfehlen wir mehrere große Modellinferenz-Frameworks, die wir evaluiert haben und die eine gute Leistung erbringen. Ich hoffe, dass diese Vorschläge den Lesern dabei helfen werden, den geeigneten Argumentationsrahmen für ihre Projekte auszuwählen.
Hyung Won Chung, ein Wissenschaftler bei OpenAI, wies in seinem öffentlichen Vortrag „Große Sprachmodelle“ [8] darauf hin, dass bestimmte Fähigkeiten großer Modelle nur dann sichtbar werden können, wenn sie einen bestimmten Maßstab erreichen Die Anzahl der großen Modelle wird in Zukunft definitiv zunehmen. Dies ist auch der Entwicklungstrend großer Modelle. Mit zunehmender Anzahl von Parametern werden die Anforderungen an die Inferenzgeschwindigkeit großer Modelle immer höher. Welche Methoden können verwendet werden, um die Inferenzgeschwindigkeit oder den Durchsatz großer Modelle zu verbessern?
Zuerst werden wir die Richtung der Beschleunigungsoptimierung für große Modelle diskutieren. Anschließend werden in dem Artikel einige der klassischeren und praktischeren Beschleunigungstechnologien für große Modelle in der Branche vorgestellt, einschließlich, aber nicht beschränkt auf Technologien wie „FlashAttention“. [1]“ und „PageAttention[3]“ .
Im Folgenden werden einige klassische Technologien zur Inferenzbeschleunigung für große Modelle in der Branche in chronologischer Reihenfolge aufgeführt. Dieser Artikel versucht, den Lesern einen Überblick über Methoden zur Beschleunigung großer Modelle in chronologischer Reihenfolge zu geben.
Zusätzlich zu den oben genannten Technologien gibt es auch Quantifizierungstechnologien für große Modelle, die die Inferenzgeschwindigkeit großer Modelle verbessern können. Wir werden sie hier vorerst nicht diskutieren. Wir werden sie später in einem separaten Artikel vorstellen .
2. Herausforderungen bei der Entwicklung großer Modelle
In Zukunft wird die Anzahl der Parameter großer Modelle definitiv immer größer. Dies ist auch der Entwicklungstrend großer Modelle, und die Anforderungen an die Inferenzbeschleunigung werden immer höher.
OpenAI hat in seinem Artikel „Scaling Laws for Neural Language Models“ [7] Erweiterungsregeln für große Modelle eingeführt. Diese Regeln veranschaulichen den Zusammenhang zwischen den Fähigkeiten des Modells und seiner Größe. Insbesondere hängen die Fähigkeiten eines Modells stark von seiner Größe ab, einschließlich der Anzahl der Modellparameter, der Größe des Datensatzes und dem während des Trainings erforderlichen Rechenaufwands. Darüber hinaus wies der OpenAI-Wissenschaftler Hyung Won Chung in seinem öffentlichen Vortrag „Large Language Models“ [8] im Jahr 2023 darauf hin, dass bestimmte Fähigkeiten großer Modelle erst ab einem bestimmten Maßstab offengelegt werden können.
Das Bild oben stammt aus dem ppt[8] in Hyung Won Chungs Rede. Die Abbildung drückt hauptsächlich einen Standpunkt aus. Mit zunehmender Größe des Modells, beispielsweise von GPT3 auf GPT4, werden die Fähigkeiten des Modells immer stärker und es werden sogar neue Fähigkeiten auftauchen.
Mit zunehmender Größe des Modells nimmt jedoch die Inferenzgeschwindigkeit großer Modelle allmählich ab, da mehr Parameter mehr GPU-Berechnungen erfordern. Die Verringerung der Inferenzgeschwindigkeit führt außerdem zu einer schlechteren Benutzererfahrung, sodass die Frage, wie die Inferenz großer Modelle beschleunigt werden kann, immer wichtiger wird.
3. Optimierungsrichtungen für die Beschleunigung großer Modellinferenzen
Struktur des Llama2-Modells
Werfen wir zunächst einen kurzen Blick auf den Aufbau der Llama 2-Modellreihe und beziehen uns dabei auf das Llama 2-Papier [9]. Derzeit verwenden die meisten generativen Sprachmodelle wie die Llama-Serie hauptsächlich das Decoder-Modul in der Transformer-Architektur. Auf der Huggingface-Plattform wird diese Art von Modellstruktur normalerweise als CausalLM bezeichnet, bei dem es sich um ein kausales Sprachmodell handelt.
Das Bild oben zeigt die Struktur des großen Llama2-Modells, dessen Kern die Aufmerksamkeitsberechnung (Llama Attention) ist. Dies ist auch das zeitaufwändigste Modul im gesamten Argumentationsprozess. Die meisten nachfolgenden Optimierungen werden basierend auf Aufmerksamkeit implementiert. Um die Struktur des Llama-2-Modells besser zu verstehen, analysieren wir zunächst kurz den gesamten Argumentationsprozess des Llama-2-Modells. Studierende, die kein Interesse daran haben, können es direkt überspringen.
- Nachdem der Benutzer eine Eingabeaufforderung an das Modell gesendet hat, besteht die erste vom Modell ausgeführte Operation darin, das nächste Zeichen (Token) vorherzusagen und das vorhergesagte Zeichen zur Eingabe hinzuzufügen, um die Vorhersage fortzusetzen. Dieser Vorgang wird fortgesetzt, bis das Modell ein STOP-Token ausgibt. Zu diesem Zeitpunkt stoppt die Vorhersage und das Modell gibt das Endergebnis aus.
- Beim Generieren des nächsten Zeichens (Token) muss das Modell N-fache Berechnungen der Llama-Decoder-Schicht durchführen. Konkret führt das Modell Llama-2-7B 32 Berechnungen durch, während das Modell Llama-2-13B 40 Berechnungen durchführt.
- Der kritischste Berechnungslink in der Llama-Decoder-Schicht ist die Berechnung der Aufmerksamkeit (Llama Attention). Der größte Teil der Inferenzzeit wird für die Berechnung der Aufmerksamkeit benötigt. Daher wurden verschiedene Optimierungstechniken entwickelt, um die Effizienz der Aufmerksamkeitsberechnung zu verbessern.
Was sind die Beschleunigungsrichtungen für die Inferenz großer Modelle?
Aus der Strukturanalyse des Llama 2-Modells können wir schließen, dass das große Modell während des Inferenzberechnungsprozesses die folgenden Merkmale aufweist:
- Im gesamten Argumentationsprozess ist die Aufmerksamkeitsberechnung der zeitaufwändigste Teil. Die Geschwindigkeitsoptimierung für Aufmerksamkeitsberechnungen kann die allgemeine Argumentationsleistung erheblich verbessern.
- Während des Aufmerksamkeitsberechnungsprozesses belegt der Schlüsselwert-Cache (KV-Cache) eine große Menge an Videospeicherressourcen. Am Beispiel des 13B-Modells erfordert die Verarbeitung einer Eingabeaufforderungssequenz etwa 3 GB zusätzlichen Videospeicher, und dieser Teil des Videospeichers wird häufig zugewiesen und freigegeben, was zu einer großen Anzahl von Fragmenten führt, wenn die Videospeicherfragmente reduziert werden können , kann auch der Durchsatz großer Modelle verbessert werden.
- Während des Inferenzprozesses muss die GPU eine große Anzahl von Parametern verarbeiten und berechnen. Das 7B-Modell verfügt über 7 Milliarden Parameter, während das 13B-Modell 13 Milliarden Parameter enthält. Das neueste und leistungsstärkste Modell DBRX der Welt verfügt über 130 Milliarden Parameter, was eine effiziente Verarbeitung dieser Parameter erfordert. Auch hier kann es Raum für Optimierungen geben.
Als Reaktion auf die oben genannten drei Merkmale hat die Industrie derzeit eine Reihe effektiver Optimierungsmethoden vorgeschlagen, typischerweise wie folgt:
1. Optimierung der FlashAttention-Attention-Berechnungsgeschwindigkeit
FlashAttention[1] verbessert die Berechnungsgeschwindigkeit des Attention-Operators, ohne das Berechnungsergebnis des Attention-Operators zu ändern. FlashAttention zeigt erhebliche Leistungsverbesserungen bei einer Vielzahl von Modellen und Aufgaben. Beispielsweise kann FlashAttention bei Modellen wie BERT-large und GPT-2 im Vergleich zu Basisimplementierungen eine End-to-End-Beschleunigung von 15 % bis zum Dreifachen erreichen.
2. Optimierung der PageAttention-KV-Cache-Speicherverwaltung
Das Ziel von PageAttention[3] besteht darin, die Fragmentierung des Videospeichers zu reduzieren. Das auf PageAttention basierende VLLM-System kann den Durchsatz des beliebten Large Language Model (LLM) auf mehr als das Zehnfache steigern und gleichzeitig eine gleichmäßige Verteilung des Zeitverbrauchs gewährleisten.
3. MOE-Reduzierung der Modellparameter während der Inferenz
Das Ziel von MOE (Mixture of Experts) [4] besteht darin, die Anzahl der in die Berechnung einbezogenen Parameter während der Modellinferenz zu reduzieren.
Experimentelle Ergebnisse: Das Mixtral-Modell übertrifft das Llama 2 70B-Modell in den meisten Benchmark-Tests und seine Inferenzgeschwindigkeit ist sechsmal schneller als letzteres. Das Modell unterstützt mehrere Sprachen, verfügt über starke Fähigkeiten zur Codegenerierung und kann fein konfiguriert werden, um bestimmten Anweisungen zu folgen, was zu hohen Ergebnissen im MT-Bench-Benchmark führt.
Wir werden jede der oben genannten Richtungen später im Detail vorstellen.
4. Optimierung der Berechnung des FlashAttention-Attention-Operators
FlashAttention hat zwei Artikel veröffentlicht, die die Optimierung des Attention-Operators beschreiben, darunter FlashAttention-1[1] und FlashAttention-2[2]. Nehmen wir FlashAttention-1[1] als Beispiel, um sein Optimierungsprinzip zu verstehen.
Lassen Sie uns zunächst die Speicherhierarchiestruktur der GPU verstehen. Sehen Sie sich die Abbildung unten an. Das Bild stammt aus dem Artikel FlashAttention-1[1].
Die Speicherhierarchie der GPU besteht aus drei Hauptteilen: SRAM, HBM und DRAM. Das Folgende ist die Referenzkonfiguration der A100GPU.
SRAM (Static Random Access Memory) hat die schnellste Zugriffsgeschwindigkeit (19 TB/s), aber seine Kapazität ist relativ gering (nur 20 MB).
HBM (High Bandwidth Memory) bietet großen Speicherplatz (40 GB) und schnellen Datenzugriff (1,5 TB/s).
DRAM (Dynamic Random Access Memory), hier speziell der Hauptspeicher außerhalb der GPU, hat die größte Kapazität (mehr als 1 TB), aber die langsamste Zugriffsgeschwindigkeit (12,8 GB/s).
Wie aus der obigen Konfiguration ersichtlich ist, ist die Verarbeitungsgeschwindigkeit umso höher, je kleiner die Speicherkapazität ist.
Beim herkömmlichen Aufmerksamkeitsberechnungsprozess wird eine große Anzahl von Eingabe-/Ausgabevorgängen durch Zugriff auf HBM abgeschlossen. Der FlashAttention-Algorithmus reduziert die Anzahl der Zugriffe auf HBM, indem er den Attention-Berechnungsprozess optimiert, um die Berechnungseffizienz zu verbessern. Es handelt sich also um einen IO-bewussten Optimierungsalgorithmus.
Die folgende Abbildung zeigt die Beschleunigungsmethode von FlashAttention aus dem Artikel FlashAttention-1[1]
FlashAttention nutzt einen cleveren Trick, um den Aufmerksamkeitsmechanismus schnell und speichereffizient zu berechnen: Es vermeidet die gleichzeitige Verarbeitung der gesamten riesigen Aufmerksamkeitsmatrix durch Kacheln der Eingabedaten, was normalerweise viel Speicher und Rechenressourcen erfordert. Stellen Sie sich vor, wir haben eine riesige Bibliothek (Matrix) und die FlashAttention-Methode ist so, als würden wir die Bücher in der Bibliothek in mehrere kleine Stapel aufteilen und dann jeweils nur einen Stapel Bücher verarbeiten. Auf diese Weise müssen wir nicht alle Bücher auf einmal herausnehmen und auf den Tisch legen (was einen großen Tisch und viel Zeit erfordert).
Insbesondere bei Matrixberechnungen reduziert FlashAttention effektiv den Bedarf an langsamem Speicher mit großer Kapazität (HBM), indem die Daten in Blöcke aufgeteilt werden und der schnelle Speicher mit geringer Kapazität (SRAM) auf der GPU für den Berechnungszugriff verwendet wird. Dies beschleunigt nicht nur die Berechnungen, sondern reduziert auch den Bedarf an Videospeicher erheblich.
Durch die Reduzierung der Abhängigkeit von langsamer Speicherung kann FlashAttention die Geschwindigkeit des Modelltrainings deutlich erhöhen und gleichzeitig die Modellleistung beibehalten oder sogar verbessern. Beispielsweise ist das Training von BERT-large 15 % schneller als der Rekord von MLPerf 1.1, die Trainingsgeschwindigkeit von GPT-2 ist dreimal so hoch wie die der HuggingFace- und Megatron-LM-Basislinien und die Trainingsgeschwindigkeit von Feldern mit langer Sequenz ist erhöht bis 2,4-fach.
Das Bild unten stammt aus dem von Huggingface eingeführten Blog [14] über Flash Attention, der die Art und Weise, wie Flash Attention die Matrix aufteilt, besser verstehen kann.
Welche Frameworks unterstützen Flash Attention-Berechnungen, da Flash Attention Berechnungen beschleunigen kann? Wir werden in der zweiten Hälfte des Artikels einige hervorragende Inferenz-Frameworks empfehlen.
5. Optimierung der PageAttention-Videospeicherverwaltung
Das Konzept von PageAttention[3] wurde ursprünglich von Woosuk Kwon, dem Autor von VLLM, vorgeschlagen und ist auch die wichtigste Optimierungsstrategie des VLLM-Argumentationsrahmens. In seinem Artikel stellte Woosuk Kwon vor, wie man mit PageAttention ein Schlüsselproblem bei LLM-Diensten (Large Language Model) löst – die effektive Verwaltung des Speichers, um den Durchsatz zu verbessern, ohne die Latenz zu erhöhen.
Lassen Sie uns zunächst die Speicherstrukturverteilung des großen Modells im Fall der Inferenz verstehen. Die folgende Abbildung stammt aus dem Artikel [3].
Dies ist ein Speicherlayout für die Bereitstellung eines großen Sprachmodells mit 13B LLM-Inferenzspeicher. Die Parameter von 13B LLM belegen 26G-Videospeicher. Für jede Anfrage belegt der KV-Cache 12G-Videospeicher Der KVCache nimmt schnell zu, er wird häufig zugewiesen und freigegeben und das System generiert eine große Anzahl von Videospeicherfragmenten. Wenn er nicht verarbeitet wird, bricht das System langsam zusammen.
Wie löst VLLM das Problem der Fragmentierung des Videospeichers durch PageAttention? Das folgende Bild stammt aus dem Artikel [14], in dem es um die Videospeicherverwaltungstechnologie von VLLM geht.
PageAttention funktioniert, indem es den Schlüsselwert-Cache (KV-Cache) in Blöcke (oder „Seiten“) fester Größe aufteilt und ermöglicht, dass diese Blöcke nicht zusammenhängend im Speicher gespeichert werden. Diese Methode ist von der virtuellen Speicher- und Paging-Technologie des Betriebssystems inspiriert, um Speicherressourcen flexibler und effizienter zu verwalten.
Beim herkömmlichen Aufmerksamkeitsmechanismus muss ein angeforderter KV-Cache kontinuierlich im Speicher gespeichert werden, was zu zwei Hauptproblemen führt: Speicherfragmentierung und Unfähigkeit, Speicher effizient zu teilen. Durch die Speicherfragmentierung wird die Größe der Stapel begrenzt, während die Unfähigkeit, den Speicher gemeinsam zu nutzen, zu doppelten Daten führt und wertvolle Speicherressourcen verschwendet.
PageAttention führt die folgenden Schritte aus, um diese Probleme zu beheben:
- Teilen Sie den KV-Cache auf: Teilen Sie den KV-Cache für jede Anfrage in mehrere kleinere Blöcke auf, deren Größe festgelegt ist und die an die spezifischen Anforderungen des Modells und der Hardware angepasst werden können.
- Nicht zusammenhängende Speicherung: Im Gegensatz zu herkömmlichen KV-Cache-Blöcken, die zusammenhängend im Speicher gespeichert werden, ermöglicht PageAttention die nicht zusammenhängende Verteilung dieser Blöcke im physischen Speicher. Auf diese Weise können Speicherblöcke je nach tatsächlichem Bedarf dynamisch zugewiesen und recycelt werden, wodurch die Speicherverschwendung reduziert wird.
- Dynamische Verwaltung: PageAttention verwaltet diese Speicherblöcke dynamisch, ähnlich wie die virtuelle Speicherverwaltung im Betriebssystem. Das System kann die Speichernutzung optimieren, indem es KV-Cache-Blöcke bei Bedarf basierend auf der aktuellen Speichernutzung zuweist oder freigibt.
- Speicherfreigabe: PageAttention unterstützt auch die gemeinsame Nutzung von KV-Cache-Blöcken zwischen verschiedenen Anfragen oder zwischen verschiedenen Sequenzen in derselben Anfrage. Diese gemeinsame Nutzung ist flexibel und kann auf Blockebene erfolgen, wodurch die Speichernutzung weiter reduziert und die Effizienz gesteigert wird.
Auf diese Weise ermöglicht PageAttention dem LLM-Bereitstellungssystem, den Durchsatz der Verarbeitungsanforderungen erheblich zu verbessern, indem es die Speicherverschwendung reduziert und die gemeinsame Nutzung des Speichers bei gleichbleibender Latenz verbessert.
Durch die Optimierung von PageAttention hat VLLM den Durchsatz von LLaMA 7B und 13B um mehr als das Zehnfache erhöht. Die folgende Abbildung stammt aus dem Artikel [11].
6. MOE-Reduzierung der Modellparameter während der Inferenz
Das kürzlich veröffentlichte DBRX, das weltweit leistungsstärkste Open-Source-Großmodell mit 130 Milliarden Parametern, und das 8x7B Open-Source-Großmodell von Mistral basieren beide auf der MOE-Architektur. Warum müssen Modelle mit einer größeren Anzahl von Parametern die MOE-Architektur verwenden? Wir nehmen das 8x7B Open-Source-Großmodell von Mistral als Beispiel, um die Leistungsvorteile der MOE-Architektur vorzustellen.
Apropos große MOE-Modelle: Vergleichen wir zunächst die strukturellen Unterschiede zwischen gewöhnlichen großen Modellen und großen MOE-Modellen (siehe Abbildung oben). Im MOE-Großmodell sind die Parameter des Großmodells in 8 Gruppen plus Router unterteilt. Jede Gruppe wird als Expertengruppe bezeichnet. Wenn die Anfrage eintrifft, lässt der Router beim MOE-Großmodell zunächst zwei der acht Expertengruppen auswählen, und nur diese beiden Expertengruppen nehmen an der Berechnung teil. Im Vergleich zu gewöhnlichen großen Modellen müssen alle Parameter an der GPU-Berechnung beteiligt sein.
Daher ist die Inferenzgeschwindigkeit des großen MOE-Modells etwa viermal schneller als die des gewöhnlichen großen Modells desselben Niveaus.
Werfen wir einen Blick auf die Implementierung von Mistral MOE, einem 8 * 7B großen Modell, das von mistral.ai veröffentlicht wurde. Die folgende Abbildung stammt aus dem Artikel [12] und zeigt die Struktur seiner Expertenschicht 8*7B großes Modell.
Mixtral 8x7B ist ein Sparse Mixture of Experts (SMoE)-Sprachmodell. Es basiert auf der Architektur von Mistral 7B, aber jede Schicht besteht aus 8 Feedforward-Blöcken (d. h. Experten). Während jedes Token verarbeitet wird, wählt ein Routing-Netzwerk auf jeder Ebene zwei Experten aus, die den aktuellen Status verarbeiten und ihre Ausgaben kombinieren. Obwohl jeder Token nur mit zwei Experten interagiert, können die in jedem Zeitschritt ausgewählten Experten unterschiedlich sein, sodass jeder Token Zugriff auf 47B Parameter hat, aber nur 13B aktive Parameter während der Inferenz verwendet werden.
Mixtral demonstriert seine überlegene Leistung bei mehreren Benchmarks, insbesondere in den Bereichen Mathematik, Codegenerierung und Mehrsprachenverständnis. Im Vergleich zu Llama 2 70B und GPT-3.5 zeigt Mixtral bei den meisten Bewertungsmetriken eine ähnliche oder bessere Leistung. Konkret verwendet Mixtral 5x weniger aktive Parameter (13B) als Llama 2 70B (70B), schneidet aber in fast allen Kategorien besser oder gleich ab.
Das MOE-Großmodell kann die Anzahl der Parameter erhöhen, ohne die Inferenzgeschwindigkeit zu verringern, was der Entwicklungstrend großer Modelle in der Zukunft ist.
7. Tensorparallelisierung – Tensorparallelität
Wenn Sie über mehrere GPU-Karten verfügen, können Sie die Tensorparallelität nutzen, um die Inferenzgeschwindigkeit großer Modelle weiter zu beschleunigen.
Stellen Sie sich vor, Sie haben ein sehr dickes Buch und möchten das gesamte Buch auf einmal kopieren, Ihr Kopierer kann jedoch nur wenige Seiten auf einmal kopieren. Zu diesem Zeitpunkt können Sie das Buch in mehrere Teile aufteilen, jeden Teil einzeln kopieren und schließlich alle kopierten Teile der Reihe nach zusammenfügen und so die Kopie des gesamten Buches vervollständigen.
Bei der Tensorparallelität ist das große Modell, mit dem wir es zu tun haben, wie ein dickes Buch, und die GPU ist wie ein Kopiergerät. Da eine einzelne GPU nicht das gesamte große Modell auf einmal verarbeiten kann, müssen wir das Modell (in diesem Fall den Gewichtungstensor) in mehrere Teile aufteilen und diese von verschiedenen GPUs separat verarbeiten lassen (entspricht verschiedenen Teilen eines fotokopierten Buches). Bei der Verarbeitung von Eingabedaten ist es so, als würde man jede Seite des Buches einzeln kopieren und dann die kopierten Teile zusammenfügen, um ein vollständiges Ausgabeergebnis zu erhalten.
Auf diese Weise arbeiten mehrere GPUs durch die gemeinsame Arbeit zusammen, um eine große Aufgabe zu erledigen, die von einer einzelnen GPU nicht erledigt werden kann. So funktioniert Tensorparallelität und sie ermöglicht uns die Handhabung dieser sehr großen Modelle.
Bild aus Artikel[13]
Die Tensor-Parallelitätstechnologie wird verwendet, um große Modelle verteilt auf mehreren GPUs bereitzustellen. Nehmen Sie als Beispiel die Matrixmultiplikation, wenn der Eingabetensor mit dem ersten Gewichtungstensor multipliziert wird. Diese Operation kann so betrachtet werden, als würde man zuerst den Gewichtungstensor durch Spalten dividieren und dann jede Spalte mit der Eingabe multiplizieren die Ergebnisse dieser Produkte. Diese kombinierten Ausgaben werden von der GPU exportiert und zum endgültigen Ausgabeergebnis aggregiert. Der Vorgang ist in der Abbildung oben dargestellt, siehe Artikel [13].
8. Empfohlener Argumentationsrahmen
Im vorherigen Artikel haben wir verschiedene Beschleunigungs- und Optimierungstechnologien besprochen, z. B. Flash Attention, Page Attention, MOE und Tensor-Parallel-Technologie. Als Nächstes empfehlen wir Ihnen auf der Grundlage unserer eigenen tatsächlichen Abläufe und Bewertungen einige Inferenz-Frameworks, die derzeit eine gute Leistung erbringen.
9. Zusammenfassung und Ausblick
In diesem Artikel beschäftigen wir uns eingehend mit einer Reihe von Technologien und Methoden, die darauf ausgelegt sind, die Geschwindigkeit der Inferenz großer Modelle zu verbessern, einschließlich, aber nicht beschränkt auf Flash Attention, Page Attention, MOE und Tensor-Parallel-Technologie. Durch den stapelweisen Einsatz dedizierter großer Modellinferenzcluster in der Produktionsumgebung konnten wir die Inferenzgeschwindigkeit erfolgreich um 50 % reduzieren, einschließlich Modellen im Maßstab 70B, und diese Technologien stabil auf die Produktionsumgebung anwenden und so die Wirksamkeit und Effektivität dieser Optimierungsmethoden beweisen. Praktikabilität.
Da große Modelle zunehmend in verschiedenen Bereichen eingesetzt werden, ist es zu einer Herausforderung geworden, die Inferenzgeschwindigkeit effektiv zu verbessern und die Inferenzkosten zu senken. Unsere Praxis demonstriert nicht nur einige derzeit verfügbare Beschleunigungstechnologien, sondern empfiehlt auch mehrere große Modellinferenz-Frameworks, die nach der Evaluierung basierend auf unserer Erfahrung eine hervorragende Leistung aufweisen. Diese Vorschläge sollen den Lesern bei der Auswahl des Argumentationsrahmens helfen, der ihren Bedürfnissen am besten entspricht, wenn sie vor vielen Entscheidungen stehen.
Mit Blick auf die Zukunft glauben wir, dass angesichts der kontinuierlichen Weiterentwicklung der Technologie und der Entstehung neuer Algorithmen weitere Beschleunigungsoptimierungstechnologien entwickelt werden, um die Effizienz großer Modellinferenzen weiter zu verbessern. Abschließend freuen wir uns auch auf die Gelegenheit, weitere neue Technologien und Methoden intensiv zu diskutieren und einzuführen, um die Geschwindigkeit der Inferenz großer Modelle in Zukunft zu verbessern.
Verweise
[1] FlashAttention: Schnelle und speichereffiziente exakte Aufmerksamkeit mit IO-Awareness (https://arxiv.org/abs/2205.14135)
[2] FlashAttention-2: Schnellere Aufmerksamkeit mit besserer Parallelität und Arbeitspartitionierung (https://arxiv.org/abs/2307.08691)
[3] Effiziente Speicherverwaltung für die Bereitstellung großer Sprachmodelle mit PagedAttention (https://arxiv.org/abs/2309.06180)
[4] mixtral-of-experts(https://mistral.ai/news/mixtral-of-experts/)
[5] Mixtral of Experts (https://arxiv.org/abs/2401.04088)
[6] MEDUSA: Einfaches LLM-Inferenzbeschleunigungs-Framework mit mehreren Dekodierungsköpfen (https://arxiv.org/pdf/2401.10774.pdf)
[7] Skalierungsgesetze für neuronale Sprachmodelle (https://arxiv.org/pdf/2001.08361.pdf)
[8] Hyung Won Chung (OpenAI), Large Language Models (im Jahr 2023), hielt einen Vortrag an der Seoul National University
[9] Lama 2: Open Foundation und fein abgestimmte Chat-Modelle (https://arxiv.org/abs/2307.09288)
[10] Aufmerksamkeit ist alles, was Sie brauchen (https://arxiv.org/pdf/1706.03762.pdf)
[11] https://blog.vllm.ai/2023/06/20/vllm.html
[12] https://arxiv.org/pdf/2401.04088.pdf
[13] https://huggingface.co/docs/text-generation-inference/en/conceptual/tensor_parallelism
[14] https://huggingface.co/docs/text-generation-inference/en/conceptual/flash_attention
[15] https://blog.vllm.ai/2023/06/20/vllm.html
* Text/ Linggong
Dieser Artikel stammt ursprünglich von Dewu Technology. Weitere spannende Artikel finden Sie unter: Dewu Technology
Ein Nachdruck ohne die Genehmigung von Dewu Technology ist strengstens untersagt, andernfalls wird eine rechtliche Haftung gemäß dem Gesetz verfolgt!
Die Raubkopien von „Qing Yu Nian 2“ wurden auf npmror hochgeladen, was dazu führte, dass npmmirror den Unpkg-Dienst einstellen musste: Es bleibt nicht mehr viel Zeit für Google. Ich schlage vor, dass alle Produkte Open Source sind . time.sleep(6) spielt hier eine Rolle. Linus ist am aktivsten beim „Hundefutter fressen“! Das neue iPad Pro verwendet 12 GB Speicherchips, behauptet jedoch, über 8 GB Speicher zu verfügen. People’s Daily Online bewertet die Aufladung im Matroschka-Stil: Nur durch aktives Lösen des „Sets“ können wir eine Zukunft haben Neues Entwicklungsparadigma für Vue3, ohne die Notwendigkeit von „ref/reactive“ und ohne die Notwendigkeit von „ref.value“. MySQL 8.4 LTS Chinesisches Handbuch veröffentlicht: Hilft Ihnen, den neuen Bereich der Datenbankverwaltung zu meistern Tongyi Qianwen GPT-4-Level-Hauptmodellpreis reduziert um 97 %, 1 Yuan und 2 Millionen Token