November 8, 2023

00 Min. Lesezeit

Die Entwicklung und Gestaltung einer skalierbaren, kostengünstigen, effizienten und gut verwalteten Infrastruktur zur Bewältigung des Machine-Learning-Lebenszyklus ist entscheidend für den Erfolg von Gen AI-basierten Lösungen. Dieser Blog schlägt vor, MLOps um LLMOps auf der AWS-Plattform zu erweitern. Der Schwerpunkt liegt auf den Anpassungen und Verbesserungen, die erforderlich sind, um unser MLOps-Framework für LLM-Projekte geeignet zu machen.

Beispiel-Lösungsarchitektur

Datenaufbereitung

Um zu lernen, wie der nächste Token generiert wird, werden LLMs normalerweise mit riesigen Mengen an Textdaten trainiert. Um bessere Modelle zu erhalten, bereiten Sie zunächst den relevanten Text und alle Labels oder Anmerkungen vor, um ihn für nachgelagerte Operationen wie die Textkategorisierung anzupassen. ML-Dienste wie Amazon Textract und Amazon Comprehend können unter anderem verwendet werden, um Entitäten aus Fotos oder Dokumenten zu extrahieren oder Dokumente zu klassifizieren, um Daten für das Training oder Fine-Tuning von LLMs vorzubereiten. Darüber hinaus können Sie den Glue Job verwenden, wenn Sie Ihre eigene Logik erstellen müssen. Schließlich können Sie menschliche Annotationen oder Active-Learning-Workflows nutzen, um Textdaten mit Amazon SageMaker Ground Truth zu klassifizieren oder zu annotieren.

Datenladen

Ein durchschnittlicher LLM-Datensatz besteht aus einigen hundert GB oder Hunderten von Millionen Text-Tokens. Sagemaker-verwaltete Cluster von ml.p4d.24xlarge-Instanzen bieten viele Alternativen zum Speichern und Laden von Datensätzen:

On-Node NVMe SSD

ml.P4d.24xlarge-Instanzen verfügen über 8 TB NVMe-Speicher, der unter /tmp und, bei Verwendung des SageMaker-Dateimodus, unter /opt/ml/input/data/ zu finden ist. Die Daten können auf die NVMe-SSD kopiert werden, wenn Sie die Benutzerfreundlichkeit und Geschwindigkeit eines lokalen Lesevorgangs wünschen. Der SageMaker-Dateimodus oder eigener Code, wie z. B. mehrprozessuales Boto3 oder S3 CLI, können zum Kopieren verwendet werden.

FSx für Lustre

Aufgrund ihrer Größenbeschränkung müssen On-Node-NVMe-SSDs bei jeder Aufgabe oder beim Aufbau eines warmen Clusters von S3 eingelesen werden. FSx für Lustre kann verwendet werden, um größere Datensätze zu verwalten und gleichzeitig einen zufälligen Zugriff mit geringer Latenz zu gewährleisten. HPC nutzt das quelloffene parallele Dateisystem Amazon FSx ausgiebig, um hohe IOPS zu erreichen.

SageMaker FastFile-Modus

Der SageMaker-exklusive FastFile Mode (FFM) stellt entfernte S3-Objekte in von SageMaker verwalteten Compute-Instanzen über eine POSIX-konforme Schnittstelle bereit und streamt sie nur, wenn sie über FUSE gelesen werden. S3-Aufrufe, die entfernte Dateien Block für Block streamen, sind das Ergebnis von FFM-Lesevorgängen. 

Selbstverwaltetes Laden von Daten

Man kann proprietären oder quelloffenen Code verwenden, um eine eigene, einzigartige Datenladelogik zu implementieren. Selbstverwaltetes Laden von Daten kann verwendet werden, um benutzerdefinierte Fehlerbehandlungslogik zu implementieren, Migrationen durch Wiederverwendung zuvor entwickelten Codes zu erleichtern oder mehr Kontrolle über Sharding und die zugrunde liegende Leistung zu erlangen. Bibliotheken, die für das selbstverwaltete Laden von Daten verwendet werden können, sind Webdataset und torchdata (datapipes). Benutzerdefinierter Datenladecode kann auch durch die Kombination des AWS Python SDK Boto3 mit Klassen aus dem Torch Dataset erstellt werden. Heterogene SageMaker-Trainingscluster können auch kreativ mit benutzerdefinierten Datenladeklassen verwendet werden, wodurch das CPU- und GPU-Gleichgewicht präzise an eine bestimmte Arbeitslast angepasst werden kann.

Praxis des Datenladens von S3

  • Versuchen Sie, von mehreren S3-Präfixen und Buckets zu lesen und zu schreiben. Teilen Sie beispielsweise Checkpoints und Trainingsdaten auf mehrere Präfixe auf.
  • Um Anfrageraten zu überwachen, sehen Sie sich die S3-Metriken in Amazon CloudWatch an.
  • Die Anzahl der gleichzeitig stattfindenden PUT/GET-Operationen begrenzen.
  • Die Anzahl der Prozesse reduzieren, die S3 gleichzeitig nutzen. Hierarchisches Checkpointing – zuerst innerhalb des Knotens, dann vom Knoten zu S3 – kann den PUT-Traffic um das Achtfache reduzieren. Zum Beispiel, wenn jeder Knoten einen Checkpoint zu S3 benötigt.
  • Anstatt für jeden Trainingsdatensatz einen S3 GET zu verwenden, lesen Sie mehrere Trainingsdatensätze aus einer einzigen Datei oder einem S3 GET.
  • Wenn SageMaker FFM in Verbindung mit Amazon S3 verwendet wird, ruft SageMaker FFM S3 auf, um Dateien stückweise abzurufen. Es wird empfohlen, Dateien sequenziell zu lesen und die Anzahl der parallel geöffneten Dateien zu begrenzen, um das von FFM erzeugte S3-Traffic-Volumen zu reduzieren.

LLM-Training

LLMs sind zu groß, um auf eine einzelne GPU zu passen, da sie Dutzende bis Hunderte von Milliarden Parametern haben. FSDP, DeepSpeed und Megatron sind nur einige der Open-Source-Bibliotheken, die von LLM-Praktikern entwickelt wurden, um bei der verteilten Berechnung des LLM-Trainings zu helfen. Die für die AWS Cloud optimierten SageMaker-Bibliotheken für verteiltes Training bieten eine einfachere Entwicklererfahrung. Verteilte Bibliotheken oder selbstverwaltet sind die beiden Optionen, die für das verteilte Training ihres LLM auf SageMaker verfügbar sind.

SageMaker-Bibliotheken für verteiltes Training

SageMaker Training schlägt mehrere proprietäre Erweiterungen vor, um TensorFlow- und PyTorch-Trainingscode zu skalieren. LLM-Training wird oft in einer 3D-Parallelität durchgeführt:

  • Datenparallelität teilt die Trainings-Mini-Batches auf und speist sie in mehrere identische Repliken des Modells ein, um die Verarbeitungsgeschwindigkeit zu erhöhen.
  • Pipeline-Parallelität weist verschiedene Schichten des Modells unterschiedlichen GPUs oder sogar Instanzen zu, um die Modellgröße über eine einzelne GPU und einen einzelnen Server hinaus zu skalieren.
  • Tensor-Parallelität teilt eine einzelne Schicht in mehrere GPUs auf, normalerweise innerhalb desselben Servers, um einzelne Schichten auf Größen zu skalieren, die eine einzelne GPU überschreiten.

Selbstverwaltetes Training

Um verteiltes Training selbst zu verwalten, gibt es zwei Optionen, um benutzerdefinierten Code zu schreiben:

  • AWS Deep Learning Container (DLC) – AWS entwickelt und wartet DLCs, die AWS-optimierte Docker-basierte Umgebungen für Open-Source-ML-Frameworks bereitstellen. SageMaker Training verfügt über eine einzigartige Integration, die es ermöglicht, AWS DLCs mit externen, benutzerdefinierten Einstiegspunkten zu ziehen und auszuführen. Insbesondere für das LLM-Training sind AWS DLCs für TensorFlow, PyTorch, Hugging Face und MXNet besonders relevant. Die Verwendung eines Framework-DLCs ermöglicht es Ihnen, Framework-native Parallelität, wie PyTorch Distributed, zu nutzen, ohne eigene Docker-Images entwickeln und verwalten zu müssen. Darüber hinaus verfügen unsere DLCs über eine MPI-Integration, die es Ihnen ermöglicht, parallelen Code einfach zu starten.
  • Erstellen Sie ein benutzerdefiniertes SageMaker-kompatibles Docker-Image – Bringen Sie Ihr Image entweder von Grund auf neu oder erweitern Sie ein bestehendes DLC-Image. Bei der Verwendung eines benutzerdefinierten Images für das LLM-Training auf SageMaker ist es besonders wichtig, Folgendes zu überprüfen: 1. Ihr Image enthält EFA mit den entsprechenden Einstellungen. 2. Ihr Image enthält eine NVIDIA NCCL-Kommunikationsbibliothek, die mit GPUDirectRDMA aktiviert ist.

LLM-Feinabstimmung

Prompt Engineering ist vergleichsweise einfacher zu verwenden, hat aber die Einschränkung, dass es dem Modell nur grundlegende Anweisungen geben kann. Darüber hinaus können die Gesamtbetriebskosten (TCO) eines kostenpflichtigen Dienstes durch die Verwendung eines langen Prompts erhöht werden, da alle LLMs durch die Anzahl der Token begrenzt sind, die ihnen zum Zeitpunkt der Inferenz übergeben werden können. Ein LLM durch Feinabstimmung auf einem sorgfältig ausgewählten Datensatz domänenspezifischer zu machen, ist der nächste logische Schritt. 

Es gibt zwei Optionen: 

  • Parameter-effizientes Fine-Tuning
  • Vollständiges Fine-Tuning

Je nach Verfügbarkeit von gelabelten Daten und CPU. Um alle Gewichte und Biases des gewählten Modells vollständig zu optimieren (Fine-Tuning), sind Tausende von Beispielen erforderlich, die eine hohe Rechenleistung benötigen. PEFT ist jedoch eine wirtschaftlichere Wahl, da es bereits mit Dutzenden von Beispielen und deutlich weniger Rechenleistung durchgeführt werden kann. Einige gängige PEFT-Methoden sind:

  • Low-Rank Adaptation (LoRA) friert die Gewichte des vortrainierten Modells ein, um die Anzahl der trainierbaren Parameter für nachgelagerte Aufgaben zu minimieren. Bei dieser Methode werden nach jeder Transformer-Subschicht Adapter hinzugefügt.
  • QLoRA Um den Speicherverbrauch zu reduzieren, erweitert QLoRA LoRA, indem es ursprüngliche Gewichtswerte von hochauflösenden Datentypen wie Float32 auf niedrigauflösende Datentypen wie int4 quantisiert.
  • Prompt Tuning Durch das Hinzufügen eines „Soft Prompts“ zur obersten Embedding-Schicht am Anfang der Transformer-Schichten und das Training nur der zusätzlichen Prompt-Tokens, während das trainierte LLM eingefroren bleibt, wird diese Technik als Prompt-Tuning oder Prefix-Tuning bezeichnet.
  • LLaMa-Adapter Um eine „Korruption“ des ursprünglichen Wissens von LLaMa zu verhindern, ist LLaMa-Adapter eine modifizierte Version des Prefix-Tunings, bei der Soft Prompts an den N obersten Transformer-Schichten hinzugefügt werden und die Parameter nahe dem Aufmerksamkeitsmechanismus auf Null statt zufällig initialisiert werden.

RAG

RAG ist die Lösung, wenn ein LLM eine Antwort generieren soll, die zusätzlichen Kontext aus proprietären Daten nutzen kann. Mithilfe der semantischen Suche kann diese Methode schnell und relevant Kontext abrufen, um die Antworten des LLM zu verbessern und genauere Ergebnisse zu erzielen. In der Regel beinhaltet dies die Einrichtung von Vektorspeichern und Embeddings. 

In AWS stehen mehrere Vektorspeicheroptionen zur Verfügung, wie Amazon OpenSearch Serverless Vector Store, Amazon Kendra und pgvector in Amazon RDS für PostgreSQL oder Amazon Aurora PostgreSQL. Ein Vorteil der Verwendung von Amazon Kendra ist jedoch, dass es sowohl für die semantische Suche als auch für die Erstellung von Embeddings genutzt werden kann, sodass Sie sich nicht auf ein anderes FM-Modell für Embeddings verlassen müssen. Dies vereinfacht und modularisiert das Design Ihrer Gen AI-Anwendung erheblich. Es ist auch wichtig zu bedenken, dass RAG kostengünstiger ist und eine größere Flexibilität bietet als Fine-Tuning. RAG und Fine-Tuning werden oft gemeinsam eingesetzt.

Modellbewertung

Man kann weiterhin traditionelle ML-Leistungsmetriken wie Genauigkeit (Accuracy), Präzision (Precision) und Recall verwenden, wenn LLMs für traditionelle ML-Probleme wie Sentiment-Analyse oder allgemeine Klassifizierung eingesetzt werden. Wir können jedoch verschiedene Metriken einsetzen, um die Leistung des LLM je nach der Aufgabe, für die es verwendet wird, zu bewerten.

  • BLEU ist ein Algorithmus für die maschinelle Übersetzung, der die Differenz in der N-Gramm-Präzision zwischen der Quelle und der generierten Ausgabe bewertet.
  • METEOR, ein Algorithmus für die maschinelle Übersetzung, der den Recall gegenüber der Präzision priorisiert und aus dem harmonischen Mittel von Unigramm-Präzision und Recall abgeleitet wird.
  • ROUGE für die Zusammenfassung, der F1-Score, Recall und Präzision über eine Sequenz hinweg berücksichtigt.
  • Die Perplexität bei der Textgenerierung dient als Maß dafür, wie gut das trainierte Modell die Textverteilung erfasst hat.
  • BERTScore für die Embedding-Ähnlichkeit bei der Textgenerierung
  • CIDEr berechnet, wie nah die generierte Bildunterschrift eines Bildes an den Referenzunterschriften ist.
  • SPICE priorisiert das Erfassen von Informationen über Objekte, Attribute und Beziehungen (semantische Propositionen) bei der Bewertung einer für ein Bild generierten Bildunterschrift
  • Bewertung der Ausgabe von kleineren Sprachmodellen mithilfe größerer Modelle mit mehr Parametern
  • Gängige Benchmarks für eine Vielzahl von Anwendungen umfassen Fragenbeantwortung, natürliche Sprachgenerierung, Zusammenfassung, maschinelle Übersetzung und mehr. Einige bekannte Benchmarks sind Mostly Basic Python Programming (MBPP), HumanEval, GLUE, SuperGLUE, MMLU, LAMBADA und Big Bench Collaboration Benchmarks. Zusätzlich gibt es Human in the Loop (HITL), wo menschliche Gutachter Feedback zur Qualität des vom Modell erzeugten Textes geben.

Hosting

Herkömmliche Hosting-Lösungen für kleinere Modelle verfügen nicht über die notwendigen Optimierungsfunktionen, um LLM-Modelle mit dem bestmöglichen Durchsatz und der geringsten Inferenzlatenz zu hosten. SageMaker unterstützt LLM-Modell-Inferenz-Container-Images mit Deep Java Library (DJL) Serving. Zu den von SageMaker unterstützten Bibliotheken für Modellparallelität und Inferenzoptimierung gehören:

  • Eine Open-Source-Bibliothek zur Inferenzoptimierung namens DeepSpeed
  • Hugging Face: Eine Bibliothek für modellparallele Inferenz 
  • Eine Open-Source-Bibliothek von Nvidia namens FasterTransformer ermöglicht einen reibungsloseren Betrieb der Inferenz von transformatorbasierten neuronalen Netzen.

Darüber hinaus ermöglicht das Hugging Face LLM Deep Learning Container (DLC) Hosting für LLMs auf SageMaker eine hochleistungsfähige Textgenerierung durch Tensorparallelität, dynamisches Batching und Modellquantisierung.

Überwachung

Im Produktionsbetrieb müssen Prompts, generierte Antworten, RAG-Leistung, Datenqualität, Modellqualität, Infrastrukturauslastung, Endpunktlatenz und Durchsatz genau überwacht werden.

Um Abweichungen oder eine eventuelle Verschlechterung der Qualität in der generierten Antwort zu erkennen. Es ist auch entscheidend, ihre Fähigkeiten im Zeitverlauf mit einer Baseline zu vergleichen.

Kontext, Relevanz zum Prompt, Wiederholungsrate, Wiederholbarkeit, Lesbarkeit, Token-Größe, Injektion, Ablehnung, Stimmung, Toxizität und Antworthalluzinationen sind einige der vorgeschlagenen Metriken zur Verfolgung von Prompts und Antworten. Für RAG wird die Überwachung von Chunk-Größe, generierten Embeddings, Embedding-Geschwindigkeit und semantischen Suchergebnissen empfohlen. Um eine Prompt-Korrektur durch erneutes Training zu ermöglichen, muss jeder dieser Faktoren im Zeitverlauf sorgfältig beobachtet werden.

Eine Shadow-Testing- oder AB-Testing-Pipeline kann auch verwendet werden, um verschiedene Prompts, Embeddings und/oder LLMs im Zeitverlauf zu vergleichen und das am besten geeignete für verschiedene Anwendungsfälle auszuwählen. Diese Funktionen sind standardmäßig in SageMaker enthalten, und um ihr Potenzial zu maximieren, können sie auch mit anderen Open-Source-Tools wie MLflow gekoppelt werden.

Die Human-in-the-Loop-Funktionen von SageMaker durch SageMaker Augmented AI (A2I) zur Implementierung der menschlichen Überprüfung von LLM-Vorhersagen im Produktionsbetrieb in vielen Fällen, in denen eine automatisierte Überwachung nicht möglich ist oder kein relevanter Benchmark für Ihren spezifischen Bereich verfügbar ist.

AWS, LLMOps

Betrieb von großen Sprachmodellen (LLMOps) auf AWS

Betrieb von großen Sprachmodellen (LLMOps) auf AWS

Die Entwicklung und Gestaltung einer skalierbaren, kostengünstigen, effizienten und gut verwalteten Infrastruktur zur Bewältigung des Machine-Learning-Lebenszyklus ist entscheidend für den Erfolg von Gen AI-basierten Lösungen. Dieser Blog schlägt vor, MLOps um LLMOps auf der AWS-Plattform zu erweitern. Der Schwerpunkt liegt auf den Anpassungen und Verbesserungen, die erforderlich sind, um unser MLOps-Framework für LLM-Projekte geeignet zu machen.

Beispiel-Lösungsarchitektur

Datenaufbereitung

Um zu lernen, wie der nächste Token generiert wird, werden LLMs normalerweise mit riesigen Mengen an Textdaten trainiert. Um bessere Modelle zu erhalten, bereiten Sie zunächst den relevanten Text und alle Labels oder Anmerkungen vor, um ihn für nachgelagerte Operationen wie die Textkategorisierung anzupassen. ML-Dienste wie Amazon Textract und Amazon Comprehend können unter anderem verwendet werden, um Entitäten aus Fotos oder Dokumenten zu extrahieren oder Dokumente zu klassifizieren, um Daten für das Training oder Fine-Tuning von LLMs vorzubereiten. Darüber hinaus können Sie den Glue Job verwenden, wenn Sie Ihre eigene Logik erstellen müssen. Schließlich können Sie menschliche Annotationen oder Active-Learning-Workflows nutzen, um Textdaten mit Amazon SageMaker Ground Truth zu klassifizieren oder zu annotieren.

Datenladen

Ein durchschnittlicher LLM-Datensatz besteht aus einigen hundert GB oder Hunderten von Millionen Text-Tokens. Sagemaker-verwaltete Cluster von ml.p4d.24xlarge-Instanzen bieten viele Alternativen zum Speichern und Laden von Datensätzen:

On-Node NVMe SSD

ml.P4d.24xlarge-Instanzen verfügen über 8 TB NVMe-Speicher, der unter /tmp und, bei Verwendung des SageMaker-Dateimodus, unter /opt/ml/input/data/ zu finden ist. Die Daten können auf die NVMe-SSD kopiert werden, wenn Sie die Benutzerfreundlichkeit und Geschwindigkeit eines lokalen Lesevorgangs wünschen. Der SageMaker-Dateimodus oder eigener Code, wie z. B. mehrprozessuales Boto3 oder S3 CLI, können zum Kopieren verwendet werden.

FSx für Lustre

Aufgrund ihrer Größenbeschränkung müssen On-Node-NVMe-SSDs bei jeder Aufgabe oder beim Aufbau eines warmen Clusters von S3 eingelesen werden. FSx für Lustre kann verwendet werden, um größere Datensätze zu verwalten und gleichzeitig einen zufälligen Zugriff mit geringer Latenz zu gewährleisten. HPC nutzt das quelloffene parallele Dateisystem Amazon FSx ausgiebig, um hohe IOPS zu erreichen.

SageMaker FastFile-Modus

Der SageMaker-exklusive FastFile Mode (FFM) stellt entfernte S3-Objekte in von SageMaker verwalteten Compute-Instanzen über eine POSIX-konforme Schnittstelle bereit und streamt sie nur, wenn sie über FUSE gelesen werden. S3-Aufrufe, die entfernte Dateien Block für Block streamen, sind das Ergebnis von FFM-Lesevorgängen. 

Selbstverwaltetes Laden von Daten

Man kann proprietären oder quelloffenen Code verwenden, um eine eigene, einzigartige Datenladelogik zu implementieren. Selbstverwaltetes Laden von Daten kann verwendet werden, um benutzerdefinierte Fehlerbehandlungslogik zu implementieren, Migrationen durch Wiederverwendung zuvor entwickelten Codes zu erleichtern oder mehr Kontrolle über Sharding und die zugrunde liegende Leistung zu erlangen. Bibliotheken, die für das selbstverwaltete Laden von Daten verwendet werden können, sind Webdataset und torchdata (datapipes). Benutzerdefinierter Datenladecode kann auch durch die Kombination des AWS Python SDK Boto3 mit Klassen aus dem Torch Dataset erstellt werden. Heterogene SageMaker-Trainingscluster können auch kreativ mit benutzerdefinierten Datenladeklassen verwendet werden, wodurch das CPU- und GPU-Gleichgewicht präzise an eine bestimmte Arbeitslast angepasst werden kann.

Praxis des Datenladens von S3

  • Versuchen Sie, von mehreren S3-Präfixen und Buckets zu lesen und zu schreiben. Teilen Sie beispielsweise Checkpoints und Trainingsdaten auf mehrere Präfixe auf.
  • Um Anfrageraten zu überwachen, sehen Sie sich die S3-Metriken in Amazon CloudWatch an.
  • Die Anzahl der gleichzeitig stattfindenden PUT/GET-Operationen begrenzen.
  • Die Anzahl der Prozesse reduzieren, die S3 gleichzeitig nutzen. Hierarchisches Checkpointing – zuerst innerhalb des Knotens, dann vom Knoten zu S3 – kann den PUT-Traffic um das Achtfache reduzieren. Zum Beispiel, wenn jeder Knoten einen Checkpoint zu S3 benötigt.
  • Anstatt für jeden Trainingsdatensatz einen S3 GET zu verwenden, lesen Sie mehrere Trainingsdatensätze aus einer einzigen Datei oder einem S3 GET.
  • Wenn SageMaker FFM in Verbindung mit Amazon S3 verwendet wird, ruft SageMaker FFM S3 auf, um Dateien stückweise abzurufen. Es wird empfohlen, Dateien sequenziell zu lesen und die Anzahl der parallel geöffneten Dateien zu begrenzen, um das von FFM erzeugte S3-Traffic-Volumen zu reduzieren.

LLM-Training

LLMs sind zu groß, um auf eine einzelne GPU zu passen, da sie Dutzende bis Hunderte von Milliarden Parametern haben. FSDP, DeepSpeed und Megatron sind nur einige der Open-Source-Bibliotheken, die von LLM-Praktikern entwickelt wurden, um bei der verteilten Berechnung des LLM-Trainings zu helfen. Die für die AWS Cloud optimierten SageMaker-Bibliotheken für verteiltes Training bieten eine einfachere Entwicklererfahrung. Verteilte Bibliotheken oder selbstverwaltet sind die beiden Optionen, die für das verteilte Training ihres LLM auf SageMaker verfügbar sind.

SageMaker-Bibliotheken für verteiltes Training

SageMaker Training schlägt mehrere proprietäre Erweiterungen vor, um TensorFlow- und PyTorch-Trainingscode zu skalieren. LLM-Training wird oft in einer 3D-Parallelität durchgeführt:

  • Datenparallelität teilt die Trainings-Mini-Batches auf und speist sie in mehrere identische Repliken des Modells ein, um die Verarbeitungsgeschwindigkeit zu erhöhen.
  • Pipeline-Parallelität weist verschiedene Schichten des Modells unterschiedlichen GPUs oder sogar Instanzen zu, um die Modellgröße über eine einzelne GPU und einen einzelnen Server hinaus zu skalieren.
  • Tensor-Parallelität teilt eine einzelne Schicht in mehrere GPUs auf, normalerweise innerhalb desselben Servers, um einzelne Schichten auf Größen zu skalieren, die eine einzelne GPU überschreiten.

Selbstverwaltetes Training

Um verteiltes Training selbst zu verwalten, gibt es zwei Optionen, um benutzerdefinierten Code zu schreiben:

  • AWS Deep Learning Container (DLC) – AWS entwickelt und wartet DLCs, die AWS-optimierte Docker-basierte Umgebungen für Open-Source-ML-Frameworks bereitstellen. SageMaker Training verfügt über eine einzigartige Integration, die es ermöglicht, AWS DLCs mit externen, benutzerdefinierten Einstiegspunkten zu ziehen und auszuführen. Insbesondere für das LLM-Training sind AWS DLCs für TensorFlow, PyTorch, Hugging Face und MXNet besonders relevant. Die Verwendung eines Framework-DLCs ermöglicht es Ihnen, Framework-native Parallelität, wie PyTorch Distributed, zu nutzen, ohne eigene Docker-Images entwickeln und verwalten zu müssen. Darüber hinaus verfügen unsere DLCs über eine MPI-Integration, die es Ihnen ermöglicht, parallelen Code einfach zu starten.
  • Erstellen Sie ein benutzerdefiniertes SageMaker-kompatibles Docker-Image – Bringen Sie Ihr Image entweder von Grund auf neu oder erweitern Sie ein bestehendes DLC-Image. Bei der Verwendung eines benutzerdefinierten Images für das LLM-Training auf SageMaker ist es besonders wichtig, Folgendes zu überprüfen: 1. Ihr Image enthält EFA mit den entsprechenden Einstellungen. 2. Ihr Image enthält eine NVIDIA NCCL-Kommunikationsbibliothek, die mit GPUDirectRDMA aktiviert ist.

LLM-Feinabstimmung

Prompt Engineering ist vergleichsweise einfacher zu verwenden, hat aber die Einschränkung, dass es dem Modell nur grundlegende Anweisungen geben kann. Darüber hinaus können die Gesamtbetriebskosten (TCO) eines kostenpflichtigen Dienstes durch die Verwendung eines langen Prompts erhöht werden, da alle LLMs durch die Anzahl der Token begrenzt sind, die ihnen zum Zeitpunkt der Inferenz übergeben werden können. Ein LLM durch Feinabstimmung auf einem sorgfältig ausgewählten Datensatz domänenspezifischer zu machen, ist der nächste logische Schritt. 

Es gibt zwei Optionen: 

  • Parameter-effizientes Fine-Tuning
  • Vollständiges Fine-Tuning

Je nach Verfügbarkeit von gelabelten Daten und CPU. Um alle Gewichte und Biases des gewählten Modells vollständig zu optimieren (Fine-Tuning), sind Tausende von Beispielen erforderlich, die eine hohe Rechenleistung benötigen. PEFT ist jedoch eine wirtschaftlichere Wahl, da es bereits mit Dutzenden von Beispielen und deutlich weniger Rechenleistung durchgeführt werden kann. Einige gängige PEFT-Methoden sind:

  • Low-Rank Adaptation (LoRA) friert die Gewichte des vortrainierten Modells ein, um die Anzahl der trainierbaren Parameter für nachgelagerte Aufgaben zu minimieren. Bei dieser Methode werden nach jeder Transformer-Subschicht Adapter hinzugefügt.
  • QLoRA Um den Speicherverbrauch zu reduzieren, erweitert QLoRA LoRA, indem es ursprüngliche Gewichtswerte von hochauflösenden Datentypen wie Float32 auf niedrigauflösende Datentypen wie int4 quantisiert.
  • Prompt Tuning Durch das Hinzufügen eines „Soft Prompts“ zur obersten Embedding-Schicht am Anfang der Transformer-Schichten und das Training nur der zusätzlichen Prompt-Tokens, während das trainierte LLM eingefroren bleibt, wird diese Technik als Prompt-Tuning oder Prefix-Tuning bezeichnet.
  • LLaMa-Adapter Um eine „Korruption“ des ursprünglichen Wissens von LLaMa zu verhindern, ist LLaMa-Adapter eine modifizierte Version des Prefix-Tunings, bei der Soft Prompts an den N obersten Transformer-Schichten hinzugefügt werden und die Parameter nahe dem Aufmerksamkeitsmechanismus auf Null statt zufällig initialisiert werden.

RAG

RAG ist die Lösung, wenn ein LLM eine Antwort generieren soll, die zusätzlichen Kontext aus proprietären Daten nutzen kann. Mithilfe der semantischen Suche kann diese Methode schnell und relevant Kontext abrufen, um die Antworten des LLM zu verbessern und genauere Ergebnisse zu erzielen. In der Regel beinhaltet dies die Einrichtung von Vektorspeichern und Embeddings. 

In AWS stehen mehrere Vektorspeicheroptionen zur Verfügung, wie Amazon OpenSearch Serverless Vector Store, Amazon Kendra und pgvector in Amazon RDS für PostgreSQL oder Amazon Aurora PostgreSQL. Ein Vorteil der Verwendung von Amazon Kendra ist jedoch, dass es sowohl für die semantische Suche als auch für die Erstellung von Embeddings genutzt werden kann, sodass Sie sich nicht auf ein anderes FM-Modell für Embeddings verlassen müssen. Dies vereinfacht und modularisiert das Design Ihrer Gen AI-Anwendung erheblich. Es ist auch wichtig zu bedenken, dass RAG kostengünstiger ist und eine größere Flexibilität bietet als Fine-Tuning. RAG und Fine-Tuning werden oft gemeinsam eingesetzt.

Modellbewertung

Man kann weiterhin traditionelle ML-Leistungsmetriken wie Genauigkeit (Accuracy), Präzision (Precision) und Recall verwenden, wenn LLMs für traditionelle ML-Probleme wie Sentiment-Analyse oder allgemeine Klassifizierung eingesetzt werden. Wir können jedoch verschiedene Metriken einsetzen, um die Leistung des LLM je nach der Aufgabe, für die es verwendet wird, zu bewerten.

  • BLEU ist ein Algorithmus für die maschinelle Übersetzung, der die Differenz in der N-Gramm-Präzision zwischen der Quelle und der generierten Ausgabe bewertet.
  • METEOR, ein Algorithmus für die maschinelle Übersetzung, der den Recall gegenüber der Präzision priorisiert und aus dem harmonischen Mittel von Unigramm-Präzision und Recall abgeleitet wird.
  • ROUGE für die Zusammenfassung, der F1-Score, Recall und Präzision über eine Sequenz hinweg berücksichtigt.
  • Die Perplexität bei der Textgenerierung dient als Maß dafür, wie gut das trainierte Modell die Textverteilung erfasst hat.
  • BERTScore für die Embedding-Ähnlichkeit bei der Textgenerierung
  • CIDEr berechnet, wie nah die generierte Bildunterschrift eines Bildes an den Referenzunterschriften ist.
  • SPICE priorisiert das Erfassen von Informationen über Objekte, Attribute und Beziehungen (semantische Propositionen) bei der Bewertung einer für ein Bild generierten Bildunterschrift
  • Bewertung der Ausgabe von kleineren Sprachmodellen mithilfe größerer Modelle mit mehr Parametern
  • Gängige Benchmarks für eine Vielzahl von Anwendungen umfassen Fragenbeantwortung, natürliche Sprachgenerierung, Zusammenfassung, maschinelle Übersetzung und mehr. Einige bekannte Benchmarks sind Mostly Basic Python Programming (MBPP), HumanEval, GLUE, SuperGLUE, MMLU, LAMBADA und Big Bench Collaboration Benchmarks. Zusätzlich gibt es Human in the Loop (HITL), wo menschliche Gutachter Feedback zur Qualität des vom Modell erzeugten Textes geben.

Hosting

Herkömmliche Hosting-Lösungen für kleinere Modelle verfügen nicht über die notwendigen Optimierungsfunktionen, um LLM-Modelle mit dem bestmöglichen Durchsatz und der geringsten Inferenzlatenz zu hosten. SageMaker unterstützt LLM-Modell-Inferenz-Container-Images mit Deep Java Library (DJL) Serving. Zu den von SageMaker unterstützten Bibliotheken für Modellparallelität und Inferenzoptimierung gehören:

  • Eine Open-Source-Bibliothek zur Inferenzoptimierung namens DeepSpeed
  • Hugging Face: Eine Bibliothek für modellparallele Inferenz 
  • Eine Open-Source-Bibliothek von Nvidia namens FasterTransformer ermöglicht einen reibungsloseren Betrieb der Inferenz von transformatorbasierten neuronalen Netzen.

Darüber hinaus ermöglicht das Hugging Face LLM Deep Learning Container (DLC) Hosting für LLMs auf SageMaker eine hochleistungsfähige Textgenerierung durch Tensorparallelität, dynamisches Batching und Modellquantisierung.

Überwachung

Im Produktionsbetrieb müssen Prompts, generierte Antworten, RAG-Leistung, Datenqualität, Modellqualität, Infrastrukturauslastung, Endpunktlatenz und Durchsatz genau überwacht werden.

Um Abweichungen oder eine eventuelle Verschlechterung der Qualität in der generierten Antwort zu erkennen. Es ist auch entscheidend, ihre Fähigkeiten im Zeitverlauf mit einer Baseline zu vergleichen.

Kontext, Relevanz zum Prompt, Wiederholungsrate, Wiederholbarkeit, Lesbarkeit, Token-Größe, Injektion, Ablehnung, Stimmung, Toxizität und Antworthalluzinationen sind einige der vorgeschlagenen Metriken zur Verfolgung von Prompts und Antworten. Für RAG wird die Überwachung von Chunk-Größe, generierten Embeddings, Embedding-Geschwindigkeit und semantischen Suchergebnissen empfohlen. Um eine Prompt-Korrektur durch erneutes Training zu ermöglichen, muss jeder dieser Faktoren im Zeitverlauf sorgfältig beobachtet werden.

Eine Shadow-Testing- oder AB-Testing-Pipeline kann auch verwendet werden, um verschiedene Prompts, Embeddings und/oder LLMs im Zeitverlauf zu vergleichen und das am besten geeignete für verschiedene Anwendungsfälle auszuwählen. Diese Funktionen sind standardmäßig in SageMaker enthalten, und um ihr Potenzial zu maximieren, können sie auch mit anderen Open-Source-Tools wie MLflow gekoppelt werden.

Die Human-in-the-Loop-Funktionen von SageMaker durch SageMaker Augmented AI (A2I) zur Implementierung der menschlichen Überprüfung von LLM-Vorhersagen im Produktionsbetrieb in vielen Fällen, in denen eine automatisierte Überwachung nicht möglich ist oder kein relevanter Benchmark für Ihren spezifischen Bereich verfügbar ist.

Verwandte Blogbeiträge

Keine verwandten Blogbeiträge verfügbar

Das Ankercloud-Team hört Ihnen gerne zu