Wenn Sie vom Generative-AI-Hype überfordert sind, hat Amazon Web Services (AWS) etwas für Sie: Bedrock. Dieser Browser-basierte Managed Service ergänzt die knapp 30 anderen verfügbaren Dienstleistungsangebote von AWS im Bereich Machine Learning.
Was ist Amazon Bedrock?
Bei Amazon Bedrock handelt es sich um einen vollständig gemanagten Service, um Generative-AI-Anwendungen zu entwickeln, bereitzustellen und zu erweitern. Dazu bietet Bedrock einen Katalog mit verschiedenen KI-Basismodellen diverser Anbieter, implementiert Retrieval Augmented Generation (RAG) sowie Vektoreinbettungen, hostet Wissensdatenbanken und ermöglicht fortlaufende Pretraining-Sessions - unter anderem. Aktuell verfügt Amazon Bedrock über sechs Hauptfunktionen:
Mit verschiedenen KI-Modellen experimentieren.
Externe Datenquellen integrieren.
Kundensupport-Anwendungen entwickeln.
Modelle anpassen.
Anwendungseffizienz optimieren.
Das jeweils optimale KI-Modell finden.
Zu den wichtigsten Konkurrenzangeboten zu Bedrock gehören:
Azure AI Studio (derzeit in der Preview),
Poe,
GPT Builder und
LangChain (mit Abstrichen, denn hier ist Coding-Aufwand nötig).
Amazon Bedrock einrichten
Was das Setup angeht, gibt es Handlungsbedarf in zwei Bereichen - den KI-Modellen und der Bedrock-API.
KI-Modelle: Bevor Sie die Modelle in Bedrock verwenden können, müssen Sie den Zugriff darauf (jeweils einzeln) beantragen. Wenn Sie das AWS-Kommandozeilen-Interface oder eines der -SDKs verwenden möchten, müssen Sie auch diese installieren und entsprechend konfigurieren. Das Formular für den Modellzugriff auszufüllen, gestaltete sich im Test simpler als erwartet, die Wartezeit auf den Zugriff blieb in den meisten Fällen sehr überschaubar.
Bedrock-API: Da wir uns in unserem Test auf die Konsolennutzung fokussieren, haben wir uns nicht mit diesem Punkt befasst. Eine zielführende Anleitung zum API-Setup-Prozess finden Sie hier.
Bedrocks Modell-Inferenz-Parameter
Um die Antworten der KI-Modelle zu steuern, nutzt Amazon Bedrock etwas andere Parameter als beispielsweise OpenAI. Der Service steuert Randomness und Diversity über die "Temperature" der Wahrscheinlichkeitsverteilung sowie "Top K" und "Top P" - die Länge des Outputs über die Antwortlänge, Penalties und Stop-Sequenzen. Im Folgenden gehen wir auf die einzelnen Elemente näher ein.
Die Temperature moduliert die Wahrscheinlichkeit für das nächste Token. Eine niedrigere Temperatur führt zu mehr deterministischen Antworten, eine höhere zu mehr zufälligen. Eine hohe Temperatur würde beispielsweise ermöglichen, dass bei der Vervollständigung des Satzes "Ich höre den Hufschlag von…" auch unwahrscheinliche Antworten wie "Einhörner" eingeschlossen sind. Eine niedrigere Temperatur würde hingegen den Fokus auf wahrscheinlichere Antworten wie "Pferde" verlagern.
Top K ist die Anzahl der wahrscheinlichsten "Kandidaten", die das Modell für das nächste Token berücksichtigt.
Top P ist der Prozentsatz der wahrscheinlichsten Kandidaten, die das Modell für das nächste Token in Betracht zieht.
Die Antwortlänge steuert die Anzahl der Token in der generierten Antwort.
Penalties (Strafen) können für die Länge, wiederholte Token, die Häufigkeit von Token und die Art der Token in einer Antwort gelten.
Stop-Sequenzen sind Zeichenfolgen, die das Modell daran hindern, weitere Token zu erzeugen.
Amazon-Bedrock-Prompts, -Beispiele und -Playgrounds
Amazon Bedrock wartet zum Zeitpunkt dieses Tests mit 33 Beispielen für die Nutzung von GenAI-Modellen auf und stellt drei verschiedene Playgrounds zur Verfügung. Letztgenannte bieten eine Konsolenumgebung für Experimente mit Inferenzen auf unterschiedlichen Modellen und unter verschiedenen Konfigurationen. Sie haben die Wahl:
eEntweder mit einem der Playground (Chat, Text oder Bild) loszulegen, ein Modell auszuwählen, einen Prompt zu erstellen und die Metaparameter festlegen.
oder mit einem Beispiel zu beginnen und dieses im entsprechenden Playground öffnen. Dann sind Modell und Metaparameter bereits vorausgewählt, das Prompt-Feld bereits befüllt.
Die Bedrock-Beispiele veranschaulichen Prompts und Parameter für diverse unterstützte Modelle und Aufgaben. Diese Tasks decken folgende Bereiche ab:
Zusammenfassungen anfertigen,
Fragen beantworten,
Probleme lösen,
Code generieren,
Texte erstellen, sowie
Bilder erzeugen.
Jedes dieser Beispiele demonstriert ein Modell, einen Prompt, ein Parameter sowie eine Antwort und enthält eine klickbare Schaltfläche, die das jeweilige Beispiel direkt in einem Playground öffnet. Die Ergebnisse, die Sie dort erhalten, können mit den im Beispiel gezeigten übereinstimmen oder auch nicht - vor allem, wenn die Parameter weniger wahrscheinliche Token zulassen. Im Folgenden sehen wir uns drei der Beispiele genauer an.
1. Beispiel: Chain of Thought
Unser erstes Beispiel demonstriert die Lösung eines arithmetischen Wortproblems in Amazon Bedrock mit einem Chain-of-Thought-Prompt und dem Llama-2-Modell Chat 70B v1.
An diesem Beispiel sind mehrere Aspekte interessant: Zum einen funktioniert es mit einem relativ kleinen Open-Source-Modell. Zum anderen wird die Chain-of-Thought-Aktion durch einen simplen Prompt-Zusatz getriggert: "Let's think step by step". Wenn Sie diesen entfernen, dürfen Sie dabei zusehen, wie das Modell regelmäßig aus den Fugen gerät und falsche Antworten generiert.
2. Beispiel: Contract Entity Extraction
Dieses Example veranschaulicht die Informationsextraktion aus Verträgen mit Coheres KI-Modell Command.
3. Beispiel: Image Inpainting
Unser letztes Beispiel beschäftigt sich mit Bildbearbeitung - genauer gesagt "Image Inpainting" (Bildelemente ersetzen beziehungsweise modifizieren) mit Amazons KI-Modell "Titan Image Generator G1". Hierbei wird über ein Referenzbild, eine Maske und einen Prompt ein neues Bild erzeugt.
Mit Amazon Bedrock orchestrieren
In Sachen Orchestrierung bietet Amazon Bedrock derzeit folgende Optionen:
Datenquellen in Wissensdatenbanken ("Knowledge Bases") importieren, die dann verwendet werden können, um RAG einzurichten.
Agenten kreieren, die Aktionen ausführen können.
Dabei handelt es sich um zwei der wichtigsten Methoden, um generative KI-Anwendungen aufzubauen. Sie liegen irgendwo zwischen simplem Prompt Engineering und teurem sowie zeitaufwändigem Modell-Pretraining und Feintuning.
Um Wissensdatenbanken zu verwenden, gehen Sie bei Amazon Bedrock schrittweise vor:
Importieren Sie Ihre Datenquellen in ein Amazon S3-Bucket.
Legen Sie das "Chunking" für Ihre Daten fest. Der Standardwert liegt bei circa 300 Token pro Chunk, Sie können jedoch auch maßgeschneiderte Größen festlegen.
Richten Sie Ihren Vector Store und Ihr Embeddings-Modell in der von Ihnen bevorzugten Datenbank ein - oder gestatten Sie AWS, die Default-Einstelllungen von Amazon OpenSearch Serverless zu verwenden.
Erstellen Sie Ihre Wissensdatenbank über die Bedrock-Konsole, verbinden Sie sie mit Datenquellen und testen sie.
Schließlich kann die Knowledge Base mit einem RAG-Modell oder mit einem Agenten verbunden werden. Ein Videobeitrag von der AWS re:Invent 2023 widmet sich diesem Thema eingehend.
Agenten orchestrieren Interaktionen zwischen KI-Basismodellen, Datenquellen, Softwareanwendungen und Prompts. Zudem rufen sie APIs auf, um Aktionen auszuführen. Zusätzlich zu den RAG-Komponenten sind Agenten in der Lage:
Anweisungen zu befolgen,
ein OpenAPI-Schema zu verwenden, um abrufbare APIs zu definieren und/oder
eine Lambda-Funktion aufzurufen.
Modelle bewerten und bereitstellen mit Amazon Bedrock
Der Bereich "Assessment and Deployment" in Amazon Bedrock enthält Funktionen,
Um KI-Modelle zu evaluieren und
Durchsatz bereitzustellen ("Provisioned Throughput").
Die Modellbewertung unterstützt die automatische Bewertung eines einzelnen Modells, die manuelle Bewertung von bis zu zwei Modellen (durch Ihr eigenes Team) sowie die manuelle Bewertung von beliebig vielen Modellen durch AWS-Experten. Dabei werden empfohlene Metriken verwendet, die je nach Art der Evaluierungsaufgabe variieren. Dabei können entweder eigene oder kuratierte Prompt-Datensätze genutzt werden.
Provisioned Throughput ermöglicht Ihnen, dedizierte Kapazität zu erwerben, um Ihre KI-Modelle bereitzustellen. Die Kosten dafür variieren je nach gewähltem Modell und dem Grad der Verpflichtung, den Sie bereit sind einzugehen.
KI-Modelle anpassen in Amazon Bedrock
An dieser Stelle macht es Sinn, einen detaillierten Blick auf die Möglichkeiten zu werfen, die Amazon Bedrock bietet, um KI-Modelle anzupassen. Folgende Customization-Methoden sind implementiert:
Prompt Engineering ist eine der einfachsten Möglichkeiten, um ein GenAI-Modell anzupassen. Typischerweise akzeptieren Modelle zwei Arten von Prompts: die des Benutzers und System-, respektive Instruktions-Prompts. Während sich ersterer ständig ändert, definiert letzteres die allgemeinen Merkmale, die das Modell übernehmen soll. Prompt Engineering ist oft ausreichend, um zu definieren, wie ein Modell auf eine genau definierte Aufgabe reagieren soll.
Retrieval Augmented Generation (RAG) hilft dabei, Large Language Models (LLMs) mit spezifischen Datenquellen zu "erden". Dabei handelt es sich oft um Informationen, die nicht im ursprünglichen Trainingsdatensatz der Modelle enthalten waren. RAG läuft in drei Schritten ab: 1. Daten werden aus einer spezifischen Quelle (der Knowledge Base im Bedrock-Jargon) "gezogen"; 2. Der Prompt wird um den aus der Quelle abgerufenen Kontext erweitert; 3. Anschließend wird mit diesen "Zutaten" der Output generiert;
Embeddings kommen oft in RAG-Prozessen zum Einsatz, um die Länge und Relevanz des abgerufenen Kontexts zu optimieren. Im Wesentlichen nimmt eine Einbettungsfunktion ein Wort oder eine Phrase und ordnet sie einem Vektor von Fließkommazahlen zu. Diese werden normalerweise in einer Datenbank gespeichert, die einen Vektorsuchindex unterstützt. Im "Retrieval"-Schritt wird dann eine semantische Ähnlichkeitssuche durchgeführt, bei der in der Regel der Kosinus des Winkels zwischen der Einbettung der Anfrage und den gespeicherten Vektoren verwendet wird, um "naheliegende" Informationen zu finden. Suchmaschinen gehen normalerweise genauso vor, um ihre Antworten zu finden.
Conversational Retrieval Agents oder Agenten, erweitern die Idee der Conversational LLMs mit einer Kombination aus Tools, laufendem Code, Embeddings und Vector Stores. Man könnte sie auch als "RAG mit Zusatzleistungen" bezeichnen. Agenten können dazu beitragen, große Sprachmodelle auf bestimmte Domains zu spezialisieren und maßgeschneiderte Outputs zu produzieren. LangChain und LangSmith können es vereinfachen, RAG-Pipelines und -Agenten aufzubauen.
LLM-Feintuning ist ein Supervised-Learning-Prozess, bei dem die Parameter des Modells auf einen bestimmten Task abgestimmt werden. Dazu wird das Modell auf einem kleineren, aufgabenspezifischen Datensatz trainiert, der mit für die Zielaufgabe relevanten Beispielen gelabelt ist. Der Prozess der Feinabstimmung dauert oft mehrere Stunden oder Tage und erfordert Hunderte oder Tausende von getaggten Beispielen auf Serverebene. Trotzdem ist Feintuning deutlich schneller als erweitertes Pretraining.
LLM-Pretraining stellt einen Unsupervised-Learning-Prozess dar. Dabei werden dem LLM Sprachgrundlagen "beigebracht" und ein generisches Basismodell erstellt. Erweitertes oder fortgesetztes Pretraining erweitert dieses Basismodell um ungelabelte, domänen- oder aufgabenspezifische Datensätze. Das trägt dazu bei, das KI-Modell zu spezialisieren. Auf das fortgesetzte Pretraining folgt oft eine Feinabstimmung.
Sowohl Feinabstimmung als auch fortgesetztes Pretraining sind im Regelfall teure und langwierige Prozesse. Dabei kann es auch eine Herausforderung darstellen, die Daten für diese Prozesse vorzubereiten. Beim Feintuning besteht die Challenge darin, das Tagging im Rahmen des Budgets zu bewerkstelligen. Die Herausforderung beim fortlaufenden Pretraining ist es dagegen, einen Datensatz für den gewählten, spezifischen Bereich zu finden, der keine Verzerrungen oder Ähnliches enthält.
PartyRock als Low-Code-Addon für Bedrock
Begleitend zu Bedrock hat AWS mit PartyRock eine in weiten Teilen kostenlose Low-Code-Plattform veröffentlicht. Die soll Anwender beim Einstieg ins Thema Generative AI begleiten und sie dabei unterstützen, erste, kleine KI-Applikationen zu bauen. Wie Sie PartyRock nutzen, erklärt AWS-Chefevangelist Jeff Barr in einem Blogbeitrag.
Amazon Bedrock - Testfazit
Amazon Bedrock ist ein ernstzunehmender Konkurrent - in erster Linie für Microsofts Azure KI-Studio. Insbesondere, wenn Sie bereits AWS-Kunde sind, ist Bedrock eine gute Wahl, um GenAI-Anwendungen zu erstellen und zu skalieren. Zwar bietet der Amazon-Service weniger Basismodelle als Azure AI Studio und bietet auch keinen Zugang zu den Modellen von OpenAI. Auch was Inhaltsfilter angeht, fällt Bedrock (noch) ein wenig hinter Azure AI Studio zurück. Für die allermeisten generativen KI-Anwendungen ist das Gebotene jedoch mehr als ausreichend.
Was die Kostenseite angeht: Amazon Bedrock für Prompt Engineering und RAG-Apps zu nutzen, ist in der Regel kostengünstig (Personalkosten außenvorgelassen). Auch die Kosten, um diese Anwendungen in den Bedrock-Playgrounds zu testen sind normalerweise vernachlässigbar. Geht es hingegen um Feinabstimmung und (fortgesetztes) Pretraining von KI-Modellen, könnten kleine bis mittelgroße Unternehmen mit Blick auf die Kosten (modellabhängig) bereits zögerlich werden. Diese dürfte eine Anwendung, die einem großen Publikum mit geringer Latenz kontinuierlich Mehrwert bietet, allerdings schnell wieder amortisieren.
Wenn Sie dennoch unsicher sind, sollten Sie einen Blick auf die kostenlose, interaktive Demo zu Amazon Bedrock werfen. (fm)
Dieser Beitrag basiert auf einem Artikel unserer US-Schwesterpublikation Infoworld.