Dies ist ein Gastbeitrag, der gemeinsam mit Antony Vance von Intel verfasst wurde.
Kunden sind immer auf der Suche nach Möglichkeiten, die Leistung und Reaktionszeiten ihrer Inferenz-Workloads für maschinelles Lernen (ML) zu verbessern, ohne die Kosten pro Transaktion zu erhöhen und ohne die Genauigkeit der Ergebnisse zu beeinträchtigen. Ausführen von ML-Workloads auf Amazon Sage Maker Laufen Amazon Elastic Compute-Cloud (Amazon EC2) C6i Instanzen mit Intels Die INT8-Inferenzbereitstellung kann dazu beitragen, die Gesamtleistung um das bis zu Vierfache pro ausgegebenem Dollar zu steigern, während der Verlust an Inferenzgenauigkeit weniger als 1 % im Vergleich zu FP32 beträgt, wenn es auf bestimmte ML-Workloads angewendet wird. Wenn es darum geht, die Modelle in eingebetteten Geräten auszuführen, bei denen Formfaktor und Größe des Modells wichtig sind, kann die Quantisierung hilfreich sein.
Quantisierung ist eine Technik zur Reduzierung der Rechen- und Speicherkosten für die Ausführung von Inferenzen, indem die Gewichtungen und Aktivierungen mit Datentypen mit niedriger Genauigkeit wie 8-Bit-Integer (INT8) anstelle der üblichen 32-Bit-Gleitkommazahl (FP32) dargestellt werden. In der folgenden Beispielabbildung zeigen wir die INT8-Inferenzleistung in C6i für ein BERT-Basismodell.
Die BERT-Basis wurde mit SQuAD v1.1 verfeinert, wobei PyTorch (v1.11) das ML-Framework ist, das mit der Intel® Erweiterung für PyTorch verwendet wird. Für den Vergleich wurde eine Chargengröße von 1 verwendet. Höhere Batchgrößen führen zu unterschiedlichen Kosten pro 1 Million Inferenzen.
In diesem Beitrag zeigen wir Ihnen, wie Sie INT8-Inferenz mit Ihrem erstellen und bereitstellen eigener Verarbeitungsbehälter für PyTorch. Wir verwenden Intel-Erweiterungen für PyTorch für einen effektiven INT8-Bereitstellungsworkflow.
Überblick über die Technik
EC2 C6i-Instances werden von Intel Xeon Scalable-Prozessoren der dritten Generation (auch Ice Lake genannt) mit einer All-Core-Turbofrequenz von 3.5 GHz angetrieben.
Im Zusammenhang mit Deep Learning war das vorherrschende numerische Format, das für Forschung und Bereitstellung verwendet wurde, bisher 32-Bit-Gleitkomma oder FP32. Der Bedarf an reduzierten Bandbreiten- und Rechenanforderungen von Deep-Learning-Modellen hat jedoch die Forschung dazu veranlasst, numerische Formate mit geringerer Genauigkeit zu verwenden. Es wurde gezeigt, dass Gewichtungen und Aktivierungen mit 8-Bit-Ganzzahlen (oder INT8) dargestellt werden können, ohne dass es zu einem signifikanten Genauigkeitsverlust kommt.
EC2 C6i-Instances bieten viele neue Funktionen, die zu Leistungsverbesserungen für KI- und ML-Workloads führen. C6i-Instances bieten Leistungsvorteile in Bereitstellungen von FP32- und INT8-Modellen. Die FP32-Inferenz wird mit AVX-512-Verbesserungen aktiviert, und die INT8-Inferenz wird durch AVX-512-VNNI-Befehle aktiviert.
C6i ist jetzt auf SageMaker-Endpunkten verfügbar, und Entwickler sollten davon ausgehen, dass es im Vergleich zur FP8-Inferenz der C32-Instanz eine mehr als doppelt so große Preis-Leistungs-Verbesserung für die INT5-Inferenz gegenüber der FP32-Inferenz und eine bis zu vierfache Leistungsverbesserung bietet. Einzelheiten zu Instanzen und Benchmark-Daten finden Sie im Anhang.
Die Bereitstellung von Deep Learning am Edge für Echtzeit-Inferenz ist der Schlüssel für viele Anwendungsbereiche. Es reduziert die Kosten für die Kommunikation mit der Cloud in Bezug auf Netzwerkbandbreite, Netzwerklatenz und Stromverbrauch erheblich. Edge-Geräte haben jedoch begrenzten Speicher, Rechenressourcen und Leistung. Das bedeutet, dass ein Deep-Learning-Netzwerk für den eingebetteten Einsatz optimiert werden muss. Die INT8-Quantisierung ist zu einem beliebten Ansatz für solche Optimierungen für ML-Frameworks wie TensorFlow und PyTorch geworden. SageMaker bietet Ihnen einen BYOC-Ansatz (Bring Your Own Container) und integrierte Tools, damit Sie die Quantisierung durchführen können.
Weitere Informationen finden Sie unter Deep-Learning-Inferenz und -Training mit geringerer numerischer Genauigkeit.
Lösungsüberblick
Die Schritte zum Implementieren der Lösung lauten wie folgt:
- Stellen Sie eine EC2 C6i-Instance bereit, um das ML-Modell zu quantisieren und zu erstellen.
- Verwenden Sie die mitgelieferten Python-Skripte für die Quantisierung.
- Erstellen Sie ein Docker-Image, um das Modell in SageMaker mithilfe des BYOC-Ansatzes bereitzustellen.
- Benutze ein Amazon Simple Storage-Service (Amazon S3)-Bucket, um das Modell und den Code für den Zugriff auf SageMaker zu kopieren.
- Verwenden Sie die Amazon Elastic Container-Registrierung (Amazon ECR), um das Docker-Image zu hosten.
- Verwenden Sie das AWS-Befehlszeilenschnittstelle (AWS CLI), um einen Inferenzendpunkt in SageMaker zu erstellen.
- Führen Sie die bereitgestellten Python-Testskripts aus, um den SageMaker-Endpunkt sowohl für die INT8- als auch für die FP32-Version aufzurufen.
Dieses Inferenz-Bereitstellungs-Setup verwendet ein BERT-Basismodell aus dem Transformer-Repository von Hugging Face (csarron/bert-base-uncased-squad-v1).
Voraussetzungen:
Folgendes sind Voraussetzungen für die Erstellung des Bereitstellungs-Setups:
- Ein Linux-Shell-Terminal mit installierter AWS CLI
- Ein AWS-Konto mit Zugriff auf die EC2-Instance-Erstellung (C6i-Instance-Typ)
- SageMaker-Zugriff zum Bereitstellen eines SageMaker-Modells, Endpunktkonfiguration, Endpunkt
- AWS Identity and Access Management and (IAM)-Zugriff zum Konfigurieren einer IAM-Rolle und -Richtlinie
- Zugriff auf Amazon ECR
- SageMaker-Zugriff zum Erstellen eines Notizbuchs mit Anweisungen zum Starten eines Endpunkts
Generieren und implementieren Sie ein quantisiertes INT8-Modell auf SageMaker
Öffnen Sie eine EC2-Instance zum Erstellen Ihres quantisierten Modells und übertragen Sie die Modellartefakte an Amazon S3. Erstellen Sie für die Endpunktbereitstellung einen benutzerdefinierten Container mit PyTorch und Intel® Extension for PyTorch, um das optimierte INT8-Modell bereitzustellen. Der Container wird in Amazon ECR gepusht und ein C6i-basierter Endpunkt wird erstellt, um FP32- und INT8-Modelle zu bedienen.
Das folgende Diagramm veranschaulicht den Ablauf auf hoher Ebene.
Um auf den Code und die Dokumentation zuzugreifen, beziehen Sie sich auf die GitHub Repo.
Beispielanwendungsfall
Das Stanford Question Answering Dataset (SQuAD) ist ein Leseverständnis-Dataset, das aus Fragen besteht, die von Crowdworkern zu einer Reihe von Wikipedia-Artikeln gestellt werden, wobei die Antwort auf jede Frage ein Textsegment ist, oder Spannweite, aus der entsprechenden Lesepassage, oder die Frage ist unbeantwortbar.
Das folgende Beispiel ist ein Frage-Antwort-Algorithmus, der ein BERT-Basismodell verwendet. Bei einem Dokument als Eingabe beantwortet das Modell einfache Fragen basierend auf dem Lernen und den Kontexten aus dem Eingabedokument.
Das Folgende ist ein Beispiel für ein Eingabedokument:
Der Amazonas-Regenwald (portugiesisch: Floresta Amazônica oder Amazônia; spanisch: Selva Amazónica, Amazonía oder gewöhnlich Amazonia; französisch: Forêt amazonienne; niederländisch: Amazoneregenwoud), im Englischen auch als Amazonia oder Amazonas-Dschungel bekannt, ist ein feuchter Laubwald, der den größten Teil bedeckt des Amazonasbeckens in Südamerika. Dieses Becken umfasst 7,000,000 Quadratkilometer (2,700,000 Quadratmeilen), von denen 5,500,000 Quadratkilometer (2,100,000 Quadratmeilen) vom Regenwald bedeckt sind.
Für die Frage „Welcher Name wird auch verwendet, um den Amazonas-Regenwald auf Englisch zu beschreiben?“ wir bekommen die antwort:
Für die Frage „Wie viele Quadratkilometer Regenwald sind im Becken bedeckt?“ wir bekommen die antwort:
Quantisierung des Modells in PyTorch
Dieser Abschnitt gibt einen schnellen Überblick über die Modellquantisierungsschritte mit PyTorch- und Intel-Erweiterungen.
Die Codeschnipsel stammen aus einem SageMaker-Beispiel.
Gehen wir die Änderungen im Detail für die Funktion IPEX_quantize in der Datei quantize.py durch.
- Importieren Sie Intel-Erweiterungen für PyTorch, um bei der Quantisierung und Optimierung zu helfen, und importieren Sie Torch für Array-Manipulationen:
- Wenden Sie die Modellkalibrierung für 100 Iterationen an. In diesem Fall kalibrieren Sie das Modell mit dem SQuAD-Datensatz:
- Beispieleingaben vorbereiten:
- Konvertieren Sie das Modell mit der folgenden Konfiguration in ein INT8-Modell:
- Führen Sie zwei Vorwärtspass-Iterationen aus, um Fusionen zu ermöglichen:
- Speichern Sie als letzten Schritt das TorchScript-Modell:
Aufräumen
Siehe die Github Repo für Schritte zum Bereinigen der erstellten AWS-Ressourcen.
Zusammenfassung
Neue EC2 C6i-Instances in einem SageMaker-Endpunkt können die Inferenzbereitstellung mit INT2.5-Quantisierung um das bis zu 8-fache beschleunigen. Die Quantisierung des Modells in PyTorch ist mit einigen APIs von Intel PyTorch-Erweiterungen möglich. Es wird empfohlen, das Modell in C6i-Instances zu quantisieren, damit die Modellgenauigkeit bei der Endpunktbereitstellung beibehalten wird. Die SageMaker-Beispiele GitHub Repo bietet jetzt eine End-to-End-Bereitstellungsbeispielpipeline zum Quantisieren und Hosten von INT8-Modellen.
Wir empfehlen Ihnen, ein neues Modell zu erstellen oder ein vorhandenes Modell mit INT8-Quantisierung unter Verwendung des EC2 C6i-Instance-Typs zu migrieren und sich selbst von den Leistungssteigerungen zu überzeugen.
Hinweis und Haftungsausschluss
Durch dieses Dokument wird keine Lizenz (ausdrücklich oder stillschweigend, durch Rechtsverwirkung oder anderweitig) an geistigen Eigentumsrechten gewährt, mit der einzigen Ausnahme, dass der in diesem Dokument enthaltene Code vorbehaltlich der lizenziert ist Zero-Clause-BSD-Open-Source-Lizenz (0BSD)
Anhang
Neue AWS-Instanzen in SageMaker mit INT8-Bereitstellungsunterstützung
Die folgende Tabelle listet SageMaker-Instanzen mit und ohne auf DL-Boost unterstützen.
Instanzname | Codename der Xeon-Generation | INT8 aktiviert? | DL-Boost aktiviert? |
ml.c5. xlarge – ml.c5.9xlarge | Himmelsee/1st | Ja | Nein |
ml.c5.18xgroß | Himmelsee/1st | Ja | Nein |
ml.c6i.1x – 32xgroß | Eissee/3rd | Ja | Ja |
Zusammenfassend lässt sich sagen, dass INT8 aktiviert den INT8-Datentyp und die Berechnung unterstützt; DL Boost aktiviert unterstützt Deep Learning Boost.
Benchmarkdaten
Die folgende Tabelle vergleicht die Kosten und die relative Leistung zwischen c5- und c6-Instanzen.
Latenz und Durchsatz gemessen mit 10000 Inferenzabfragen an Sage Maker-Endpunkte.
E2E-Latenz des Inferenzendpunkts und Kostenanalyse | |||||
P50 (ms) | P90 (ms) | Abfragen/Sek | $/1M Abfragen | Relative $/Leistung | |
C5.2xLarge-FP32 | 76.6 | 125.3 | 11.5 | $10.2 | 1.0x |
c6i.2xLarge-FP32 | 70 | 110.8 | 13 | $9.0 | 1.1x |
c6i.2xLarge-INT8 | 35.7 | 48.9 | 25.56 | $4.5 | 2.3x |
Von INT8-Modellen wird erwartet, dass sie bei den meisten Modellen eine 2- bis 4-fache praktische Leistungsverbesserung mit weniger als 1 % Genauigkeitsverlust bieten. Die obige Tabelle deckt die Overhead-Latenz ab (NW und Demo-Anwendung)
Genauigkeit für BERT-Basismodell
Die folgende Tabelle fasst die Genauigkeit für das INT8-Modell mit dem SQUAD v1.1-Datensatz zusammen.
Metrisch | FP32 | INT8 |
Exact Match | 85.8751 | 85.5061 |
F1 | 92.0807 | 91.8728 |
Das GitHub Repo wird mit den Skripten geliefert, um die Genauigkeit des SQuAD-Datensatzes zu überprüfen. Beziehen auf Aufruf-INT8.py und Aufruf-FP32.py Skripte zum Testen.
Intel-Erweiterung für PyTorch
Intel® Extension for PyTorch* (ein Open-Source-Projekt auf GitHub) erweitert PyTorch mit Optimierungen für zusätzliche Leistungssteigerungen auf Intel-Hardware. Die meisten Optimierungen werden irgendwann in den Standardversionen von PyTorch enthalten sein, und die Absicht der Erweiterung ist es, aktuelle Funktionen und Optimierungen für PyTorch auf Intel-Hardware bereitzustellen. Beispiele sind AVX-512 Vector Neural Network Instructions (AVX512 VNNI) und Intel® Advanced Matrix Extensions (Intel® AMX).
Die folgende Abbildung veranschaulicht die Intel-Erweiterung für die PyTorch-Architektur.
Eine ausführlichere Benutzerführung (Funktionen, Leistungsoptimierung und mehr) für Intel® Extension for PyTorch finden Sie unter Intel® Erweiterung für PyTorch* Benutzerführung.
Über die Autoren
Rohit Chowdhary ist Senior Solutions Architect im Strategic Accounts Team bei AWS.
Aniruddha Kappagantu ist Software Development Engineer im AI Platforms-Team bei AWS.
Antony Vance ist KI-Architekt bei Intel mit 19 Jahren Erfahrung in den Bereichen Computer Vision, maschinelles Lernen, Deep Learning, eingebettete Software, GPU und FPGA.
- SEO-gestützte Content- und PR-Distribution. Holen Sie sich noch heute Verstärkung.
- Platoblockkette. Web3-Metaverse-Intelligenz. Wissen verstärkt. Hier zugreifen.
- Quelle: https://aws.amazon.com/blogs/machine-learning/accelerate-amazon-sagemaker-inference-with-c6i-intel-based-amazon-ec2-instances/
- :Ist
- $UP
- 000
- 1
- 100
- 11
- 7
- 8
- 9
- a
- oben
- beschleunigen
- Zugang
- Konto
- Trading Konten
- Genauigkeit
- Aktivierungen
- advanced
- Vorteilen
- AI
- Algorithmus
- immer
- Amazon
- Amazon EC2
- Amazon Sage Maker
- Amerika
- und
- beantworten
- APIs
- Anwendung
- angewandt
- Ansatz
- Architektur
- SIND
- Bereiche
- Feld
- Artikel
- AS
- At
- verfügbar
- AWS
- Bandbreite
- basierend
- BE
- werden
- Sein
- Benchmark
- zwischen
- Auftrieb
- bringen
- bauen
- by
- namens
- CAN
- Fähigkeiten
- Häuser
- sicher
- Änderungen
- aus der Ferne überprüfen
- Cloud
- Code
- Kommunizieren
- verglichen
- Vergleich
- Berechnung
- Berechnen
- Computer
- Computer Vision
- Computing
- Konfiguration
- Bestehend
- Verbrauch
- Container
- Kontext
- Kontexte
- Dazugehörigen
- Kosten
- Kosten
- bedeckt
- Covers
- erstellen
- erstellt
- Erstellen
- Schaffung
- Original
- technische Daten
- tief
- tiefe Lernen
- Übergeben
- Synergie
- einsetzen
- Einsatz
- Implementierungen
- Abgeleitet
- beschreiben
- Detail
- detailliert
- Details
- Entwickler
- Entwicklung
- Geräte
- anders
- Docker
- Dokument
- Dokumentation
- Dabei
- Dollar
- angetrieben
- Niederländisch
- Edge
- Effektiv
- eingebettet
- ermöglichen
- freigegeben
- umfasst
- ermutigen
- End-to-End
- Endpunkt
- Ingenieur
- Englisch
- schließlich
- Jedes
- Beispiel
- Beispiele
- Ausnahme
- vorhandenen
- erwarten
- erwartet
- ERFAHRUNGEN
- express
- Erweiterung
- Erweiterungen
- extra
- Gesicht
- Eigenschaften
- wenige
- Abbildung
- Reichen Sie das
- schweben
- Fluss
- Folgende
- folgt
- Aussichten für
- Wald
- unten stehende Formular
- Format
- vorwärts
- FPGA
- Unser Ansatz
- Gerüste
- Französisch
- Frequenz
- für
- Funktion
- Gewinne
- Jan
- bekommen
- GitHub
- gegeben
- gibt
- Go
- GPU
- erteilt
- mehr
- GUEST
- Guest Post
- die Vermittlung von Kompetenzen,
- Hardware
- Haben
- Hilfe
- High-Level
- höher
- Gastgeber
- Hosting
- Ultraschall
- Hilfe
- aber
- HTML
- http
- HTTPS
- EIS
- Identitätsschutz
- Image
- implementieren
- impliziert
- importieren
- wichtig
- zu unterstützen,
- Verbesserung
- Verbesserungen
- in
- das
- inklusive
- zunehmend
- Information
- Varianten des Eingangssignals:
- Instanz
- beantragen müssen
- Anleitung
- integriert
- Intel
- geistigen
- geistiges Eigentum
- Absicht
- IT
- Iterationen
- jpg
- Aufbewahrung
- Wesentliche
- bekannt
- See
- Nachname
- Latency
- starten
- lernen
- Lizenz
- Zugelassen
- Gefällt mir
- Limitiert
- Line
- linux
- Listen
- suchen
- Verlust
- Maschine
- Maschinelles Lernen
- Hersteller
- viele
- Matrix
- Mittel
- Memory
- könnte
- migriert
- Million
- ML
- Modell
- für
- mehr
- vor allem warme
- MS
- Name
- Need
- Netzwerk
- neuronale Netzwerk
- Neu
- Notizbuch
- of
- bieten
- on
- XNUMXh geöffnet
- Open-Source-
- Optimierung
- optimiert
- OS
- Andernfalls
- Gesamt-
- Überblick
- besitzen
- Weg
- Leistung
- Pipeline
- Plattformen
- Plato
- Datenintelligenz von Plato
- PlatoData
- Points
- Beliebt
- Portugiesisch
- möglich
- Post
- Werkzeuge
- angetriebene
- Praktisch
- Präzision
- Voraussetzungen
- Verarbeitung
- Prozessoren
- Projekt
- Resorts
- Eigentumsrechte
- die
- vorausgesetzt
- bietet
- Push
- geschoben
- Python
- Pytorch
- Frage
- Fragen
- Direkt
- Lesebrillen
- Echtzeit
- empfohlen
- Veteran
- Reduziert
- reduziert
- Mitteilungen
- Quelle
- vertreten
- Darstellen
- Voraussetzungen:
- Forschungsprojekte
- Downloads
- Antwort
- Folge
- Die Ergebnisse
- Rechte
- Rollen
- Führen Sie
- Laufen
- opfern
- sagemaker
- SageMaker-Inferenz
- Speichern
- skalierbaren
- Skripte
- Abschnitt
- Segment
- brauchen
- kompensieren
- Setup
- Schale
- sollte
- erklären
- signifikant
- bedeutend
- Einfacher
- Größe
- Größen
- So
- bis jetzt
- Software
- Software-Entwicklung
- Lösung
- Lösungen
- Quelle
- Süd
- Südamerika
- Spanisch
- verbrachte
- SQ
- quadratisch
- Schritt
- Shritte
- -bestands-
- Lagerung
- Strategisch
- Fach
- so
- zusammenfassen
- geliefert
- Support
- Unterstützt
- Tabelle
- Team
- Tensorfluss
- Terminal
- AGB
- Test
- Testen
- zur Verbesserung der Gesundheitsgerechtigkeit
- Das
- ihr
- Durchsatz
- mal
- zu
- Werkzeuge
- Fackel
- Transaktion
- Transformer
- Typen
- auf dem neusten Stand
- -
- Mitglied
- gewöhnlich
- Seh-
- Wege
- welche
- während
- Wikipedia
- werden wir
- mit
- ohne
- Jahr
- Du
- Ihr
- sich selbst
- Zephyrnet