Künstliche Intelligenz und dessen Subkategorie Machine Learning haben sich rasant von den Entwicklungslaboren in Richtung unserer IDEs verlagert. Inzwischen bieten Tools wie die Azure Cognitive Services API-basierten Zugang zu vortrainierten Modellen. Dabei gibt es viele verschiedene Ansätze, um KI-Services bereitzustellen. Einer der vielversprechendsten: Generative Pretrained Transformer (GPT), um große Textmengen zu verarbeiten. Mit GPT hat OpenAI Pionierarbeit geleistet - und im Jahr 2018 eine grundlegende Untersuchung zum Thema veröffentlicht. Das verwendete Modell hat mehrere Iterationen durchlaufen:
GPT-2 (unsupervised) nutzte ungetaggte Daten, um Menschen zu imitieren. Es wurde auf der Grundlage von 40 Gigabyte öffentlich verfügbaren Daten trainiert, um ein Modell mit 1,5 Milliarden Parametern zu erstellen.
Der Nachfolger kann wesentlich mehr und erstellt Modelle mit 175 Milliarden Parametern: GPT-3 wurde exklusiv an Microsoft lizenziert und bildet die Grundlage für Tools wie GitHub Copilot, ChatGPT oder DALL-E.
Startup meme: day 31/100 ??#100DaysMemeChallenge
— saad ?? (@SaadBencherif10) January 12, 2023
GPT-3, tell me a "Yo mama so fat" joke
GPT-3: pic.twitter.com/A3MlqwaRQ2
Azure trifft OpenAI
Weil ein Modell wie GPT-3 beträchtliche Mengen an Rechenleistung in der Größenordnung von Tausenden von Petaflop/s-day benötigt, ist es optimal für Cloud-basiertes High-Performance-Computing auf spezialisierter Supercomputer-Hardware geeignet. Microsoft hat in diesem Bereich seine eigenen (Nvidia-basierten) Azure-Server aufgebaut, deren Cloud-Instanzen auch im Supercomputer-Top500-Ranking geführt werden. Die KI-Server von Azure basieren auf Nvidia Ampere A12000 Tensor Core GPUs, die über ein InfiniBand-Hochgeschwindigkeitsnetzwerk miteinander verbunden sind.
Die Generative-AI-Tools von OpenAI wurden auf den Azure-Servern trainiert und entwickelt. Im Rahmen einer langfristigen Kooperation zwischen OpenAI und Microsoft sind die Tools inzwischen als Azure OpenAI Service öffentlich verfügbar - inklusive Unterstützung für GPT-3-Textgenerierung und das Codex-Modell. Support für DALL-E soll laut Microsoft in Form eines zukünftigen Updates folgen.
Öffentlich verfügbar heißt jedoch nicht frei zugänglich: Microsoft schränkt den Zugang immer noch ein, um sicherzustellen, dass die Projekte den ethischen Richtlinien für die KI-Nutzung entsprechen und eng auf bestimmte Use Cases beschränkt sind. Zudem bekommen nur direkte Microsoft-Kunden Zugang. Ganz ähnlich verfährt Microsoft auch, wenn es um seine Cognitive Services geht. Die Richtlinien die der Konzern dabei anlegt, werden voraussichtlich auch in Zukunft nicht laxer werden. Der Zugang zu einigen Bereichen - etwa Health Services - könnten aus regulatorischen Gründen noch mit zusätzlichen Schutzmaßnahmen ausgestattet werden.
Just in—new AI models on Azure OpenAI Service empower your business to deliver results at scale. Explore the possibilities ? https://t.co/en6EecesvA #AzureOpenAI pic.twitter.com/y7RNc4P2qr
— Microsoft Azure (@Azure) January 17, 2023
Azure OpenAI Studio erkunden
Sobald Ihr Konto für die Nutzung von Azure OpenAI zugelassen wurde, können Sie damit beginnen, Code zu erstellen, der die API-Endpunkte verwendet. Die entsprechenden Azure-Ressourcen können erstellt werden über:
das Azure-Portal,
die Azure-CLI oder
Arm-Templates.
Wenn Sie das Azure-Portal verwenden, erstellen Sie eine Ressource, die Sie für Ihre Anwendung und alle zugehörigen Azure-Dienste und -Infrastrukturen verwenden möchten. Sobald diese Ihrem Account und der Ressourcengruppe zugewiesen ist, können Sie sie benennen und eine Preisstufe auswählen (derzeit gibt es nur eine - das dürfte sich demnächst ändern).
Ist das erledigt, können Sie nun ein Modell mit Azure OpenAI Studio bereitstellen. Hier werden Sie den Großteil Ihrer Arbeit mit OpenAI erledigen. Zur Zeit können Sie dabei aus drei Modellfamilien wählen:
GPT-3 (Natural Language),
Codex (Code), und
Embeddings.
Innerhalb dieser Familien stehen eine Reihe verschiedener Modelle zur Verfügung. Im Fall von GPT-3 ist "Ada" das kostengünstigste, aber auch limitierteste - am oberen Ende der Skala steht "Davinci". Jedes dieser Modelle ist dabei ein Superset des anderen. Das hat den Vorteil, dass Sie im Fall komplexerer Tasks nicht den Code ändern müssen, sondern einfach ein anderes Modell wählen können.
Microsoft empfiehlt, OpenAI-gestützte Applikationen mit dem leistungsfähigsten Modell zu entwickeln, weil das eine Feinabstimmung von Preis und Performance ermöglicht, wenn die Anwendung in Produktion geht.
GPT-3-Modelle anpassen
Auch wenn die Funktionen von GPT-3 zur Textvervollständigung viral gegangen sind: In der Praxis muss Ihre Anwendung wesentlich stärker auf Ihren speziellen Use Case ausgerichtet sein. Schließlich liegt es nicht in Ihrem Interesse, einen Support-Service auf GPT-3-Basis zu betreiben, der regelmäßig irrelevante Ratschläge erteilt. Deshalb sollten Sie ein benutzerdefiniertes Modell anhand von Trainingsbeispielen mit Inputs und gewünschten Outputs erstellen. Bei Azure OpenAI nennt sich das "Completions". Dabei ist es essenziell, über einen großen Trainingsdatensatz zu verfügen (Microsoft empfiehlt mehrere hundert Beispiele). Um das Management der Trainingsdaten zu vereinfachen, können Sie all Ihre Prompts und Completions in einem JSON-File ablegen.
Mit einem fertigen, angepassten Modell können Sie nun mit Azure OpenAI Studio testen, wie gut (oder schlecht) GPT-3 für Ihren Anwendungsfall funktioniert. Dabei vermittelt ein simpler Playground in Form einer Konsolenanwendung Einblicke darüber, welche Completions das Modell für bestimmte Prompts ausgibt. Microsoft empfiehlt, die Prompts dabei so explizit wie möglich zu gestalten, um optimale Outputs zu generieren. Der Playground unterstützt Sie zudem dabei, Ihre Modelle zu trainieren.
Eine weitere nützliche Funktion ist die Möglichkeit, Intent und erwartetes Verhalten frühzeitig festzulegen. Wenn Sie die OpenAI Services für ein Helpdesk-Triage-Tool einsetzen, können Sie festlegen, dass der Output höflich und in ruhigem Ton geliefert wird. Dieselben Tools können auch mit dem Codex-Modell verwendet werden. So können Sie überprüfen, wie sich dieses als Werkzeug zur Code-Vervollständigung oder dynamischer Assistent macht.
Code für Azure OpenAI schreiben
Sobald Sie bereit sind zu programmieren, können Sie die REST-Endpunkte Ihres Deployments entweder direkt oder mit den OpenAI-Python-Bibliotheken verwenden. Letzteres ist wahrscheinlich der schnellste Weg zu Live Code. Dazu benötigen Sie:
die URL des Endpunkts,
einen Authentifizierungsschlüssel und
den Namen Ihres Deployments.
Anschließend setzen Sie die entsprechenden Umgebungsvariablen für Ihren Code. Wie gewohnt empfiehlt es sich in Sachen Produktion, Keys nicht fest zu kodieren und Tools wie Azure Key Vault zu verwenden, um sie zu managen.
Einen Endpoint aufzurufen, ist denkbar einfach:
Nutzen Sie die
openai.Completion.create
-Methode, um eine Antwort zu erhalten und legen Sie die maximale Anzahl von Token fest, die benötigt werden, um Ihren Prompt und die zugehörige Antwort zu enthalten.Das von der API zurückgegebene Antwortobjekt enthält den von Ihrem Modell generierten Text. Dieser kann extrahiert, formatiert und dann vom Rest Ihres Codes verwendet werden.
Die grundlegenden Calls sind simpel und Ihnen stehen zusätzliche Parameter zur Verfügung, den Ihr Code nutzen kann, um die Antwort zu managen. Besagte Parameter können außerdem eingesetzt werden, um sicherzustellen, dass die Antworten ehrlich und akkurat sind.
Wenn Sie eine andere Programmiersprache verwenden, nutzen Sie deren REST- und JSON-Parsing-Tools. Eine API-Referenz finden Sie in der Azure-OpenAI-Dokumentation. Auf GitHub sind zudem Swagger-Spezifikationen gehostet, die Sie nutzen können, um API-Aufrufe zu generieren und mit den zurückgegebenen Daten zu arbeiten. Dieser Ansatz funktioniert gut mit IDEs wie Visual Studio.
Azure OpenAI - Preise
Ein Schlüsselelement der OpenAI-Modelle ist ihr tokenbasiertes Preismodell. Bei diesen Token handelt es sich nicht um Authentifizierungs-Token, sondern um tokenisierte Abschnitte von Strings, die mithilfe eines internen statistischen Modells erstellt werden. OpenAI stellt auf seiner Website ein Tool zur Verfügung, das Aufschluss darüber gibt, wie Strings tokenisiert werden.
Sie können davon ausgehen, dass ein Token etwa vier Zeichen Text umfasst - es können aber auch weniger oder mehr sein. Unter dem Strich sollten 75 Wörter (etwa ein Absatz normalen Textes) circa 100 Token verbrauchen. Je komplexer dabei das Modell, desto teurer die Token:
Das Basismodell Ada kostet etwa 0,0003 Euro pro 1.000 Token,
das High-End-Modell Davinci 0,018 Euro.
Wenn Sie Ihr eigenes Tuning vornehmen wollen, fallen zusätzliche Storage-Kosten an. Im Fall von Embeddings können die Kosten aufgrund des erhöhten Rechenbedarfs ungleich höher ausfallen. Auch das Feinabstimmungstraining kostet zusätzlich: Die Preise hierfür beginnen bei etwas mehr als 18 Euro pro Rechenstunde. Das tatsächliche Preisgefüge kann - je nach Beziehung Ihres Unternehmens zu Microsoft - variieren. (fm)
Dieser Beitrag basiert auf einem Artikel unserer US-Schwesterpublikation Infoworld.