In den letzten Jahren haben wir einen großen Anstieg in der Größe großer Sprachmodelle (LLMs) gesehen, die verwendet werden, um natürliche Sprachverarbeitungsaufgaben wie Fragebeantwortung und Textzusammenfassung zu lösen. Größere Modelle mit mehr Parametern, die zum Zeitpunkt des Schreibens in der Größenordnung von Hunderten von Milliarden liegen, neigen dazu, bessere Ergebnisse zu liefern. Zum Beispiel erzielt Llama-3-70B bessere Ergebnisse als seine kleinere Version mit 8B Parametern bei Metriken wie Leseverständnis (SQuAD 85,6 im Vergleich zu 76,4). Daher experimentieren Kunden oft mit größeren und neueren Modellen, um ML-basierte Produkte zu entwickeln, die einen Mehrwert bieten.
Je größer das Modell ist, desto rechenintensiver ist es und desto höher sind die Kosten für den Einsatz. Kunden müssen die Leistung berücksichtigen, um sicherzustellen, dass sie die Bedürfnisse ihrer Benutzer erfüllen. In diesem Blogbeitrag werden wir untersuchen, wie spekulatives Sampling dazu beitragen kann, die Inferenz großer Sprachmodelle auf AWS Inferentia und Trainium effizienter und kostengünstiger zu gestalten. Diese Technik verbessert die Inferenzdurchsatzrate und die Token-Ausgabe-Latenz (TPOT) von LLMs.
Moderne Sprachmodelle basieren auf der Transformer-Architektur. Die Eingabeaufforderungen werden zuerst mittels einer Technik namens Kontext-Codierung verarbeitet, die schnell abläuft, weil sie parallelisierbar ist. Anschließend führen wir die autoregressive Token-Generierung durch, bei der die Ausgabetoken sequenziell generiert werden. Beachten Sie, dass wir das nächste Token nicht generieren können, bevor wir das vorherige kennen, wie in Abbildung 1 dargestellt. Daher benötigen wir für die Generierung von N Ausgabetoken N sequentielle Durchläufe durch den Decoder. Ein Durchlauf dauert durch ein größeres Modell wie Llama-3-70B länger als durch ein kleineres Modell wie Llama-3-8B.
Vom Rechenaufwand her ist die Token-Generierung in LLMs ein Prozess, der an den Speicher-Datentransfer gebunden ist. Je größer das Modell ist, desto wahrscheinlicher ist es, dass wir auf Speichertransfers warten müssen. Dies führt dazu, dass die Recheneinheiten untergenutzt werden und nicht vollständig von den verfügbaren Gleitkommaoperationen (FLOPS) profitieren. Spekulatives Sampling ist eine Technik, die die rechnerische Effizienz bei der Ausführung von Inferenz mit LLMs verbessert, während die Genauigkeit beibehalten wird. Es funktioniert, indem ein kleineres, schnelleres Entwurfsmodell verwendet wird, um mehrere Tokens zu generieren, die dann von einem größeren, langsameren Zielmodell überprüft werden. Diese Überprüfungsphase verarbeitet mehrere Tokens in einem einzigen Durchgang anstatt sequenziell und ist rechnerisch effizienter als die sequenzielle Verarbeitung von Tokens.
Die spekulative Sampling-Technik beinhaltet ein anpassbares Fenster k, in dem das Zielmodell ein garantiert korrektes Token bereitstellt und das Entwurfsmodell die nächsten k-1 Tokens spekuliert. Wenn die Tokens des Entwurfsmodells akzeptiert werden, beschleunigt sich der Prozess. Andernfalls übernimmt das Zielmodell und sorgt für die Genauigkeit. Abbildung 2 veranschaulicht einen Fall, in dem alle spekulierten Tokens akzeptiert werden, was zu einer schnelleren Verarbeitung führt. Das Zielmodell stellt ein garantiertes Ausgabetoken bereit, und das Entwurfsmodell wird mehrmals ausgeführt, um eine Sequenz möglicher Ausgabetoken zu produzieren.
Abbildung 3 zeigt andererseits einen Fall, in dem einige der Tokens abgelehnt werden. Die Zeit für die Ausführung dieser spekulativen Sampling-Schleife ist in etwa dieselbe wie in Abbildung 2, jedoch erhalten wir weniger Ausgabetoken. Dies bedeutet, dass wir diesen Prozess mehrmals wiederholen müssen, um die Antwort abzuschließen, was zu einer insgesamt langsameren Verarbeitung führt. Durch die Anpassung der Fenstergröße k und das Verständnis, wann die Entwurfs- und Zielmodelle wahrscheinlich ähnliche Ergebnisse produzieren, können wir die Vorteile des spekulativen Samplings maximieren.
In diesem Blogbeitrag haben wir gezeigt, wie wir die Inferenz großer Modelle wie Llama-2-70B beschleunigen können, indem wir eine neue Funktion namens spekulatives Sampling verwenden. Entdecken Sie das spekulative Sampling-Beispiel und passen Sie die Eingabeaufforderung und den k-Parameter an, um die Ergebnisse zu sehen. Für fortgeschrittenere Anwendungsfälle können Sie Ihre eigene Token Acceptor-Implementierung entwickeln. Besuchen Sie die AWS Neuron-Dokumentation, um mehr darüber zu erfahren, wie Sie Ihre Modelle auf Inferentia- und Trainium-Instanzen ausführen können.
Hinterlasse eine Antwort