In diesem Beitrag stellen wir die Feinabstimmung eines Llama 2-Modells mithilfe einer PEFT-Methode (Parameter-Efficient Fine-Tuning) vor und stellen das feinabgestimmte Modell bereit AWS Inferentia2. Wir benutzen das AWS-Neuron Software Development Kit (SDK), um auf das AWS Inferentia2-Gerät zuzugreifen und von seiner hohen Leistung zu profitieren. Anschließend verwenden wir einen großen Modellinferenzcontainer, der von betrieben wird Tiefe Java-Bibliothek (DJLServing) als unsere vorbildliche Serving-Lösung.
Lösungsüberblick
Effiziente Feinabstimmung von Llama2 mit QLoRa
Die Llama 2-Familie großer Sprachmodelle (LLMs) ist eine Sammlung vorab trainierter und fein abgestimmter generativer Textmodelle mit einer Größenordnung von 7 bis 70 Milliarden Parametern. Llama 2 wurde mit 2 Billionen Daten-Tokens aus öffentlich zugänglichen Quellen vorab trainiert. AWS-Kunden entscheiden sich manchmal für die Feinabstimmung von Llama 2-Modellen mithilfe kundeneigener Daten, um eine bessere Leistung für nachgelagerte Aufgaben zu erzielen. Aufgrund der großen Anzahl an Parametern des Llama-2-Modells könnte eine vollständige Feinabstimmung jedoch unerschwinglich teuer und zeitaufwändig sein. Der Ansatz der Parametereffizienten Feinabstimmung (PEFT) kann dieses Problem lösen, indem nur eine kleine Anzahl zusätzlicher Modellparameter feinabgestimmt wird, während die meisten Parameter des vorab trainierten Modells eingefroren werden. Weitere Informationen zu PEFT finden Sie hier Post. In diesem Beitrag verwenden wir QLoRa zur Feinabstimmung eines Llama 2 7B-Modells.
Stellen Sie mit Amazon SageMaker ein fein abgestimmtes Modell auf Inf2 bereit
AWS Inferentia2 ist ein speziell entwickelter Beschleuniger für maschinelles Lernen (ML), der für Inferenz-Workloads entwickelt wurde und im Vergleich zu anderen inferenzoptimierten Instanzen auf AWS hohe Leistung bei bis zu 40 % geringeren Kosten für generative KI- und LLM-Workloads bietet. In diesem Beitrag verwenden wir Amazon Elastic Compute Cloud (Amazon EC2) Inf2-Instanz mit AWS Inferentia2, den Inferentia2-Beschleunigern der zweiten Generation, die jeweils zwei enthalten NeuronCores-v2. Jeder NeuronCore-v2 ist eine unabhängige, heterogene Recheneinheit mit vier Haupt-Engines: Tensor-, Vector-, Scalar- und GPSIMD-Engines. Es enthält einen On-Chip-Software-verwalteten SRAM-Speicher zur Maximierung der Datenlokalität. Da mehrere Blogs zu Inf2 veröffentlicht wurden, kann der Leser hierauf verweisen Post und unseren Dokumentation Weitere Informationen zu Inf2.
Um Modelle auf Inf2 bereitzustellen, benötigen wir AWS Neuron SDK als Softwareschicht, die auf der Inf2-Hardware läuft. AWS Neuron ist das SDK, das zum Ausführen von Deep-Learning-Workloads auf AWS Inferentia und verwendet wird AWS-Training basierte Instanzen. Es ermöglicht einen durchgängigen ML-Entwicklungslebenszyklus, um neue Modelle zu erstellen, diese Modelle zu trainieren und zu optimieren und sie für die Produktion bereitzustellen. AWS Neuron beinhaltet ein Deep Learning Compiler, Laufzeit und Werkzeuge die nativ in beliebte Frameworks wie TensorFlow und PyTorch integriert sind. In diesem Blog werden wir verwenden transformers-neuronx
, das Teil des AWS Neuron SDK für Transformer-Decoder-Inferenz-Workflows ist. Es unterstützt eine Reihe beliebter Modelle, darunter Llama 2.
Zum Bereitstellen von Modellen auf Amazon Sage MakerNormalerweise verwenden wir einen Container, der die erforderlichen Bibliotheken enthält, z. B. Neuron SDK und transformers-neuronx
sowie die Modelldienstkomponente. Amazon SageMaker pflegt Deep-Learning-Container (DLCs) mit beliebten Open-Source-Bibliotheken zum Hosten großer Modelle. In diesem Beitrag verwenden wir die Großer Modellinferenzcontainer für Neuronen. Dieser Container enthält alles, was Sie zum Einsatz Ihres Llama 2-Modells auf Inf2 benötigen. Ressourcen für den Einstieg in LMI auf Amazon SageMaker finden Sie in vielen unserer vorhandenen Beiträge (Blog 1, Blog 2, Blog 3) Zu diesem Thema. Kurz gesagt: Sie können den Container ausführen, ohne zusätzlichen Code schreiben zu müssen. Du kannst den ... benutzen Standardhandler Für ein nahtloses Benutzererlebnis geben Sie einen der unterstützten Modellnamen und alle konfigurierbaren Parameter für die Ladezeit ein. Dadurch wird ein LLM kompiliert und auf einer Inf2-Instanz bereitgestellt. Zum Beispiel zum Bereitstellen OpenAssistant/llama2-13b-orca-8k-3319
, können Sie die folgende Konfiguration bereitstellen (als serving.properties
Datei). In serving.properties
, geben wir den Modelltyp an als llama2-13b-orca-8k-3319
, die Batch-Größe beträgt 4, der Tensor-Parallelitätsgrad beträgt 2, und das ist alles. Die vollständige Liste der konfigurierbaren Parameter finden Sie unter Alle DJL-Konfigurationsoptionen.
Alternativ können Sie wie hier gezeigt Ihre eigene Modellhandlerdatei schreiben BeispielDies erfordert jedoch die Implementierung der Modelllade- und Inferenzmethoden, die als Brücke zwischen den DJLServing-APIs dienen.
Voraussetzungen:
In der folgenden Liste werden die Voraussetzungen für die Bereitstellung des in diesem Blogbeitrag beschriebenen Modells aufgeführt. Sie können beides über das implementieren AWS-Managementkonsole oder verwenden Sie die neueste Version von AWS-Befehlszeilenschnittstelle (AWS-CLI).
Lösungsweg
Im folgenden Abschnitt gehen wir den Code in zwei Teilen durch:
- Feinabstimmung eines Llama2-7b-Modells und Hochladen der Modellartefakte an einen angegebenen Amazon S3-Bucket-Speicherort.
- Stellen Sie das Modell mithilfe eines in Amazon SageMaker gehosteten DJL-Serving-Containers in Inferentia2 bereit.
Die vollständigen Codebeispiele mit Anleitung finden Sie hier GitHub Repository.
Teil 1: Feinabstimmung eines Llama2-7b-Modells mit PEFT
Wir werden die kürzlich in der Arbeit eingeführte Methode verwenden QLoRA: Quantisierungsbewusstes Low-Rank-Adapter-Tuning für die Sprachgenerierung von Tim Dettmers et al. QLoRA ist eine neue Technik, um den Speicherbedarf großer Sprachmodelle während der Feinabstimmung zu reduzieren, ohne die Leistung zu beeinträchtigen.
Hinweis: Die im Folgenden gezeigte Feinabstimmung des Modells llama2-7b wurde auf einem Amazon getestet SageMaker Studio-Notizbuch mit Python 2.0 GPU-optimiertem Kernel unter Verwendung eines ml.g5.2xgroß Instanztyp. Als Best Practice empfehlen wir die Verwendung eines Amazon SageMaker-Studio Integrierte Entwicklungsumgebung (IDE), die in Ihrem eigenen Unternehmen gestartet wird Amazon Virtual Private Cloud (Amazon VPC). Auf diese Weise können Sie den Netzwerkverkehr innerhalb und außerhalb Ihrer VPC mithilfe der standardmäßigen AWS-Netzwerk- und Sicherheitsfunktionen steuern, überwachen und überprüfen. Weitere Informationen finden Sie unter Sichern der Amazon SageMaker Studio-Konnektivität mithilfe einer privaten VPC.
Quantisieren Sie das Basismodell
Wir laden zunächst ein quantisiertes Modell mit 4-Bit-Quantisierung mit Huggingface-Transformatoren Bibliothek wie folgt:
Trainingsdatensatz laden
Als nächstes laden wir den Datensatz, um das Modell für den Feinabstimmungsschritt wie folgt zu füttern:
Bringen Sie eine Adapterschicht an
Hier fügen wir eine kleine, trainierbare Adapterschicht hinzu, konfiguriert als LoraConfig definiert in den Hugging Face's peft Bibliothek.
Trainiere ein Modell
Mithilfe der oben gezeigten LoRA-Konfiguration optimieren wir das Llama2-Modell zusammen mit den Hyperparametern. Ein Codeausschnitt zum Trainieren des Modells ist im Folgenden dargestellt:
Modellgewicht zusammenführen
Das oben ausgeführte feinabgestimmte Modell erstellte ein neues Modell, das die trainierten LoRA-Adaptergewichte enthält. Im folgenden Codeausschnitt führen wir den Adapter mit dem Basismodell zusammen, damit wir das fein abgestimmte Modell für die Inferenz verwenden können.
Modellgewicht auf Amazon S3 hochladen
Im letzten Schritt von Teil 1 speichern wir die zusammengeführten Modellgewichte an einem angegebenen Amazon S3-Speicherort. Die Modellgewichtung wird von einem Modellbereitstellungscontainer in Amazon SageMaker verwendet, um das Modell mithilfe einer Inferentia2-Instanz zu hosten.
Teil 2: Hosten Sie das QLoRA-Modell für die Inferenz mit AWS Inf2 unter Verwendung des SageMaker LMI Containers
In diesem Abschnitt gehen wir die Schritte zur Bereitstellung eines QLoRA-optimierten Modells in einer Amazon SageMaker-Hostingumgebung durch. Wir verwenden a DJL serviert Container von SageMaker DLC, die sich in die integriert transformatoren-neuronx Bibliothek zum Hosten dieses Modells. Das Setup erleichtert das Laden von Modellen auf AWS Inferentia2-Beschleuniger, parallelisiert das Modell über mehrere NeuronCores hinweg und ermöglicht die Bereitstellung über HTTP-Endpunkte.
Bereiten Sie Modellartefakte vor
DJL unterstützt viele Deep-Learning-Optimierungsbibliotheken, darunter Tiefgeschwindigkeit, Schneller Transformator und mehr. Für modellspezifische Konfigurationen bieten wir a serving.properties
mit Schlüsselparametern, wie z tensor_parallel_degree
und model_id
um die Modellladeoptionen zu definieren. Der model_id
könnte eine Hugging Face-Modell-ID oder ein Amazon S3-Pfad sein, in dem die Modellgewichte gespeichert sind. In unserem Beispiel geben wir den Amazon S3-Standort unseres fein abgestimmten Modells an. Der folgende Codeausschnitt zeigt die Eigenschaften, die für die Modellbereitstellung verwendet werden:
Bitte beziehen Sie sich darauf Dokumentation Weitere Informationen zu den konfigurierbaren Optionen finden Sie unter serving.properties
. Bitte beachten Sie, dass wir verwenden option.n_position=512
in diesem Blog für eine schnellere AWS Neuron-Kompilierung. Wenn Sie eine größere Eingabe-Token-Länge ausprobieren möchten, empfehlen wir dem Leser, das Modell vorab vorzukompilieren (siehe AOT-Vorkompilierungsmodell auf EC2). Andernfalls kann es zu einem Timeout-Fehler kommen, wenn die Kompilierungszeit zu lang ist.
Nach dem serving.properties
Wenn die Datei definiert ist, packen wir die Datei in eine tar.gz
formatieren, wie folgt:
Anschließend laden wir die tar.gz-Datei in einen Amazon S3-Bucket-Speicherort hoch:
Erstellen Sie einen Amazon SageMaker-Modellendpunkt
Um eine Inf2-Instanz für die Bereitstellung zu verwenden, verwenden wir eine Amazon SageMaker LMI-Container mit DJL neuronX-Unterstützung. Bitte beziehen Sie sich hierauf Post Weitere Informationen zur Verwendung eines DJL NeuronX-Containers für Inferenzen finden Sie hier. Der folgende Code zeigt, wie ein Modell mit dem Amazon SageMaker Python SDK bereitgestellt wird:
Endpunkt des Testmodells
Nachdem das Modell erfolgreich bereitgestellt wurde, können wir den Endpunkt validieren, indem wir eine Beispielanforderung an den Prädiktor senden:
Die Beispielausgabe wird wie folgt angezeigt:
Im Kontext der Datenanalyse bezieht sich maschinelles Lernen (ML) auf eine statistische Technik, die in der Lage ist, aus einem Datensatz mit zunehmender Komplexität und Genauigkeit Vorhersagekraft zu extrahieren, indem der Umfang einer Statistik iterativ eingegrenzt wird.
Maschinelles Lernen ist keine neue statistische Technik, sondern eine Kombination bestehender Techniken. Darüber hinaus ist es nicht dafür konzipiert, mit einem bestimmten Datensatz verwendet zu werden oder ein bestimmtes Ergebnis zu erzielen. Vielmehr wurde es so konzipiert, dass es flexibel genug ist, um sich an jeden Datensatz anzupassen und Vorhersagen über jedes Ergebnis zu treffen.
Aufräumen
Wenn Sie entscheiden, dass Sie den SageMaker-Endpunkt nicht mehr laufen lassen möchten, können Sie ihn mit löschen AWS SDK für Python (boto3), AWS CLI oder Amazon SageMaker Console. Darüber hinaus können Sie auch Herunterfahren der Amazon SageMaker Studio-Ressourcen die nicht mehr benötigt werden.
Zusammenfassung
In diesem Beitrag haben wir Ihnen gezeigt, wie Sie ein Llama2-7b-Modell mithilfe eines LoRA-Adapters mit 4-Bit-Quantisierung und einer einzelnen GPU-Instanz optimieren. Anschließend haben wir das Modell mithilfe eines DJL-Bereitstellungscontainers auf einer in Amazon SageMaker gehosteten Inf2-Instanz bereitgestellt. Abschließend haben wir den Endpunkt des Amazon SageMaker-Modells mit einer Textgenerierungsvorhersage mithilfe des SageMaker Python SDK validiert. Probieren Sie es einfach aus, wir freuen uns über Ihr Feedback. Bleiben Sie auf dem Laufenden für Updates zu weiteren Funktionen und neuen Innovationen mit AWS Inferentia.
Weitere Beispiele zu AWS Neuron finden Sie unter aws-neuron-Beispiele.
Über die Autoren
Wei Teh ist Senior AI/ML Specialist Solutions Architect bei AWS. Es ist ihm eine Leidenschaft, Kunden dabei zu helfen, ihre AWS-Reise voranzutreiben, wobei er sich auf Amazon Machine Learning-Services und auf maschinellem Lernen basierende Lösungen konzentriert. Außerhalb der Arbeit genießt er Outdoor-Aktivitäten wie Camping, Angeln und Wandern mit seiner Familie.
Qingweich Li ist Spezialist für maschinelles Lernen bei Amazon Web Services. Er erhielt seinen Ph.D. in Operations Research, nachdem er das Konto seines Beraters für Forschungsstipendien aufgelöst und den versprochenen Nobelpreis nicht geliefert hatte. Derzeit hilft er Kunden in der Finanzdienstleistungs- und Versicherungsbranche beim Aufbau von Lösungen für maschinelles Lernen auf AWS. In seiner Freizeit liest und unterrichtet er gerne.
- SEO-gestützte Content- und PR-Distribution. Holen Sie sich noch heute Verstärkung.
- PlatoData.Network Vertikale generative KI. Motiviere dich selbst. Hier zugreifen.
- PlatoAiStream. Web3-Intelligenz. Wissen verstärkt. Hier zugreifen.
- PlatoESG. Kohlenstoff, CleanTech, Energie, Umwelt, Solar, Abfallwirtschaft. Hier zugreifen.
- PlatoHealth. Informationen zu Biotechnologie und klinischen Studien. Hier zugreifen.
- Quelle: https://aws.amazon.com/blogs/machine-learning/fine-tune-llama-2-using-qlora-and-deploy-it-on-amazon-sagemaker-with-aws-inferentia2/
- :hast
- :Ist
- :nicht
- :Wo
- $UP
- 1
- 10
- 100
- 11
- 15%
- 16
- 19
- 24
- 300
- 7
- 70
- 8
- a
- LiveBuzz
- oben
- Beschleuniger
- Beschleuniger
- Zugang
- Konto
- Genauigkeit
- Erreichen
- über
- Aktivitäten
- automatisch
- Zusätzliche
- zusätzlich
- Adresse
- vorantreiben
- Nach der
- voraus
- AI
- AI / ML
- AL
- erlaubt
- entlang
- Aftershave
- ebenfalls
- Amazon
- Amazon Machine Learning
- Amazon Sage Maker
- Amazon SageMaker-Studio
- Amazon Web Services
- an
- Analyse
- und
- jedem
- APIs
- Bewerben
- Ansatz
- SIND
- AS
- At
- anhängen
- Auto
- verfügbar
- AWS
- AWS-Inferenz
- Ball
- Base
- basierend
- Dosierung
- BE
- war
- Nutzen
- BESTE
- Besser
- zwischen
- Milliarde
- Blog
- Blogs
- BRIDGE
- Pleite
- bauen
- aber
- by
- CAN
- Fähigkeiten
- fähig
- Auswählen
- Cloud
- Code
- Sammlung
- Kombination
- abschließen
- Komplexität
- Komponente
- Berechnen
- Konfiguration
- konfiguriert
- Konnektivität
- Konsul (Console)
- verbrauchenden
- Container
- enthält
- Kontext
- Smartgeräte App
- Kosten
- könnte
- erstellt
- Zur Zeit
- Kunden
- technische Daten
- Datenanalyse
- entscheidet
- tief
- tiefe Lernen
- Standard
- definieren
- definiert
- Grad
- Übergeben
- liefert
- einsetzen
- Einsatz
- Bereitstellen
- beschrieben
- entworfen
- Entwicklung
- Gerät
- Docker
- nach unten
- zwei
- im
- dynamisch
- E & T
- jeder
- entweder
- ermöglicht
- End-to-End
- Endpunkt
- Motor
- Motor (en)
- genug
- Arbeitsumfeld
- Fehler
- etc
- alles
- Beispiel
- Beispiele
- ausgeführt
- vorhandenen
- teuer
- ERFAHRUNGEN
- extra
- Gesicht
- erleichtert
- Gescheitert
- falsch
- Familie
- beschleunigt
- Einzigartige
- Feedback
- Reichen Sie das
- Finale
- Endlich
- Revolution
- Finanzdienstleistung
- Vorname
- Fischen
- flexibel
- Fokussierung
- folgen
- gefolgt
- Folgende
- folgt
- Fußabdruck
- Aussichten für
- Format
- gefunden
- vier
- Gerüste
- Einfrieren
- für
- voller
- Außerdem
- Generation
- generativ
- Generative KI
- bekommen
- ABSICHT
- Go
- gehen
- GPU
- gewähren
- Hardware
- he
- hören
- Unternehmen
- hilft
- hier
- GUTE
- Hohe Leistungsfähigkeit
- seine
- Gastgeber
- gehostet
- Hosting
- Häuser
- Ultraschall
- Hilfe
- aber
- HTML
- http
- HTTPS
- ID
- if
- Image
- implementieren
- Umsetzung
- in
- das
- Dazu gehören
- Einschließlich
- zunehmend
- unabhängig
- Energiegewinnung
- Information
- Innovationen
- Varianten des Eingangssignals:
- Eingänge
- Instanz
- Anleitung
- Versicherung
- integriert
- Integriert
- in
- eingeführt
- IT
- Iteration
- SEINE
- Javac
- Reise
- jpg
- JSON
- Behalten
- Wesentliche
- Bausatz (SDK)
- Sprache
- grosse
- größer
- neueste
- ins Leben gerufen
- Schicht
- Lagen
- lernen
- Länge
- Niveau
- Bibliotheken
- Bibliothek
- Lebenszyklus
- Gefällt mir
- Gleichen
- Line
- Liste
- Lama
- LLM
- Belastung
- Laden
- Standorte
- länger
- ich liebe
- senken
- Maschine
- Maschinelles Lernen
- Main
- unterhält
- um
- Management
- viele
- Maximierung
- Memory
- Merge
- Methode
- Methoden
- könnte
- ML
- Modell
- für
- Module
- Überwachen
- mehr
- vor allem warme
- viel
- mehrere
- Namen
- am
- Need
- Netzwerk
- Netzwerktraffic
- Vernetzung
- Neu
- nicht
- nobel outlet
- Andere
- beachten
- Anzahl
- of
- on
- EINEM
- einzige
- auf zu
- XNUMXh geöffnet
- Open-Source-
- Einkauf & Prozesse
- Optimierung
- Optimieren
- optimiert
- Option
- Optionen
- or
- Andere
- Andernfalls
- UNSERE
- Ergebnis
- Umrissen
- Möglichkeiten für das Ausgangssignal:
- aussen
- übrig
- besitzen
- Paket
- Papier
- Parallel
- Parameter
- Parameter
- Teil
- Teile
- passieren
- leidenschaftlich
- Weg
- Leistung
- durchgeführt
- Plan
- Plato
- Datenintelligenz von Plato
- PlatoData
- Bitte
- Beliebt
- Post
- BLOG-POSTS
- Werkzeuge
- angetriebene
- Praxis
- Präzision
- Prognose
- Prognosen
- Predictor
- Voraussetzungen
- privat
- Preis
- Aufgabenstellung:
- Prozessdefinierung
- produziert
- Produktion
- versprochen
- immobilien
- die
- öffentlich
- veröffentlicht
- Python
- Pytorch
- Angebot
- Bereich
- lieber
- Lesen Sie mehr
- Leser
- Lesebrillen
- Received
- kürzlich
- empfehlen
- Veteran
- siehe
- bezieht sich
- Quelle
- Anforderung
- Zugriffe
- falls angefordert
- erfordert
- Forschungsprojekte
- Downloads
- Antwort
- Antworten
- Recht
- Führen Sie
- Laufen
- opfern
- sagemaker
- Speichern
- Skalieren
- Skalierung
- Umfang
- Sdk
- nahtlos
- Zweite
- Zweite Generation
- Abschnitt
- Sicherheitdienst
- sehen
- Sendung
- Senior
- Reihenfolge
- brauchen
- Lösungen
- Dienst
- kompensieren
- Einstellung
- Setup
- mehrere
- Short
- Vitrine
- zeigte
- gezeigt
- Konzerte
- da
- Single
- Größe
- klein
- Schnipsel
- So
- Software
- Software-Entwicklung
- Software-Entwicklungskit
- Lösung
- Lösungen
- manchmal
- Quelle
- Quellen
- Spezialist
- spezifisch
- angegeben
- Standard
- begonnen
- statistisch
- bleiben
- Schritt
- Shritte
- gelagert
- Studio Adressen
- Erfolgreich
- so
- Support
- Unterstützte
- Unterstützt
- und Aufgaben
- Einführungen
- Technik
- Techniken
- Tensorfluss
- getestet
- Text
- zur Verbesserung der Gesundheitsgerechtigkeit
- Das
- ihr
- Sie
- dann
- Diese
- fehlen uns die Worte.
- Durch
- Tim
- Zeit
- zu
- Zeichen
- Tokens
- auch
- Top
- Thema
- Fackel
- der Verkehr
- Training
- trainiert
- Ausbildung
- Transformator
- Billion
- was immer dies auch sein sollte.
- versuchen
- abgestimmt
- Abstimmung
- XNUMX
- tippe
- Updates
- hochgeladen
- URL
- -
- benutzt
- Mitglied
- Benutzererfahrung
- Verwendung von
- gewöhnlich
- BESTÄTIGEN
- validiert
- Version
- Assistent
- Spaziergang
- Walkthrough
- wollen
- wurde
- we
- Netz
- Web-Services
- Gewicht
- GUT
- Was
- Was ist
- welche
- während
- werden wir
- mit
- .
- ohne
- Arbeiten
- Arbeiter
- Workflows
- schreiben
- Schreiben
- Du
- Ihr
- Zephyrnet