Beherrschung des Text-Generation-Inference-Toolkits für LLMs auf Hugging Face

Beherrschung des Text-Generation-Inference-Toolkits für LLMs auf Hugging Face

Einleitung

Die Textgenerierung hat sich zu einer revolutionären Fähigkeit entwickelt, die die Art und Weise verändert, wie Maschinen menschenähnlichen Text interpretieren und erzeugen. Dieser Popularitätsschub hat zur Entwicklung zahlreicher Werkzeuge geführt, die die Arbeit mit LLMs optimieren und verbessern sollen.

Die rapide Ausweitung großer Sprachmodelle (Large Language Models), von denen fast wöchentlich neue Versionen erscheinen, hat einen entsprechenden Anstieg an Hosting-Optionen zur Unterstützung dieser Technologie mit sich gebracht. Unter den vielen verfügbaren Tools sticht das Text Generation Inference (TGI) von Hugging Face hervor, das es uns ermöglicht, ein LLM als Dienst auf unseren lokalen Maschinen auszuführen.

Dieser Leitfaden wird darauf eingehen, warum Hugging Face TGI eine bedeutende Innovation ist und wie Sie es nutzen können, um hochentwickelte KI-Modelle zu entwickeln, die Texte erzeugen, die immer schwerer von menschlichen Texten zu unterscheiden sind.

Was ist Hugging Face Text Generation Inference?

Hugging Face Text Generation Inference (TGI) ist ein in Rust und Python geschriebenes Framework zur Bereitstellung und zum Betrieb großer Sprachmodelle. Es ist ein produktionsreifes Toolkit, das genau für diesen Zweck entwickelt wurde.

Hugging Face entwickelt und vertreibt TGI unter der HFOILv1.0-Lizenz. Die kommerzielle Nutzung ist erlaubt, solange TGI als Hilfswerkzeug innerhalb des Produkts oder Dienstes fungiert und nicht die Hauptfunktion darstellt. Die Hauptherausforderungen, die es adressiert, sind:

Hauptmerkmale von Hugging Face Text Generation Inference (TGI)

  1. Hochleistungs-Textgenerierung
    — TGI verwendet Techniken wie Tensor Parallelism, das große Modelle auf mehrere GPUs verteilt, und dynamisches Batching, das Prompts serverseitig spontan gruppiert, um die Leistung beliebter Open-Source-LLMs wie StarCoder, BLOOM, GPT-NeoX, Llama und T5 zu optimieren.

  2. Effiziente Ressourcennutzung
    — TGI verwendet kontinuierliches Batching, optimierten Code und Tensor Parallelism, um mehrere Anfragen gleichzeitig zu verarbeiten und gleichzeitig die Ressourcennutzung zu minimieren.

  3. Flexibilität und Sicherheit
    — TGI unterstützt verschiedene Sicherheitsfunktionen wie Watermarking, Logit Warping (Modifikation der Logits bestimmter Tokens durch Hinzufügen eines Bias-Werts) und Stopp-Sequenzen, um eine verantwortungsvolle und kontrollierte Nutzung von LLMs zu gewährleisten.

Hugging Face hat die Architektur einiger LLMs optimiert, um sie mit TGI schneller auszuführen, darunter beliebte Modelle wie LLaMA, Falcon7B und Mistral. Eine vollständige Liste der unterstützten Modelle finden Sie in der Dokumentation.

Warum Hugging Face TGI verwenden?

Hugging Face hat sich zur bevorzugten Plattform für die Entwicklung von KI mit natürlichen Sprachfähigkeiten entwickelt. Es beherbergt eine Vielzahl führender Open-Source-Modelle und ist damit ein Kraftpaket für NLP-Innovationen. Traditionell waren diese Modelle zu groß, um lokal ausgeführt zu werden, sodass man auf Cloud-basierte Dienste angewiesen war.

Jüngste Fortschritte bei Quantisierungstechniken wie QLoRa und GPTQ haben jedoch einige LLMs auf alltäglichen Geräten, einschließlich lokaler Computer, handhabbar gemacht.

Hugging Face TGI wurde speziell entwickelt, um LLMs als Dienst auf lokalen Maschinen zu ermöglichen. Dieser Ansatz adressiert die Herausforderung, ein LLM hochzufahren, indem das Modell im Hintergrund bereit gehalten wird, um schnelle Antworten zu liefern und lange Wartezeiten für jeden Prompt zu vermeiden. Stellen Sie sich einen Endpunkt vor, der eine Sammlung erstklassiger Sprachmodelle bereithält, um auf Abruf Text zu generieren.

Was TGI auszeichnet, ist seine unkomplizierte Implementierung. Es unterstützt verschiedene optimierte Modellarchitekturen, was die Bereitstellung schnell und einfach macht.

Darüber hinaus wird TGI bereits in mehreren Live-Projekten eingesetzt. Einige Beispiele sind:

  • Hugging Chat, eine Open-Source-Oberfläche für Open-Access-Modelle.
  • OpenAssistant, eine Open-Source-Community-Initiative zum Training von LLMs.
  • nat.dev, eine Plattform zum Erkunden und Vergleichen von LLMs.

Es gibt jedoch eine bemerkenswerte Einschränkung: TGI ist noch nicht mit ARM-basierten GPU-Macs kompatibel, einschließlich der M1-Serie und neuerer Modelle.

Einrichtung von Hugging Face TGI

Richten Sie zunächst den Hugging Face TGI-Endpunkt ein.

Um Hugging Face TGI lokal zu installieren und auszuführen, beginnen Sie mit der Installation von Rust. Richten Sie anschließend eine Python-Virtual-Umgebung mit Python Version 3.9 oder höher ein, beispielsweise mit conda:

Rust installieren

curl --proto ‘=https’ --tlsv1.2 -sSf https://sh.rustup.rs | sh

Python-Virtual-Umgebung erstellen

conda create -n text-generation-inference python=3.9 conda activate text-generation-inference

Darüber hinaus ist es wichtig, Protoc zu installieren. Hugging Face empfiehlt Version 21.12 für beste Kompatibilität. Bitte beachten Sie, dass Sie sudo-Rechte für diese Installation benötigen.

PROTOC_ZIP=protoc-21.12-linux-x86_64.zip curl -OL https://github.com/protocolbuffers/protobuf/releases/download/v21.12/$PROTOC_ZIP sudo unzip -o $PROTOC_ZIP -d /usr/local bin/protoc sudo unzip -o $PROTOC_ZIP -d /usr/local ‘include/*’ rm -f $PROTOC_ZIP

Zunächst werde ich den Prozess der Installation von Grund auf beschreiben, der möglicherweise nicht ganz einfach ist. Wenn Sie dabei auf Probleme stoßen, können Sie überspringen und direkt ein Docker-Image verwenden, was einfacher ist. Beide Szenarien werden behandelt.

Sobald alle Voraussetzungen erfüllt sind, können wir mit der Einrichtung von TGI fortfahren. Klonen Sie zunächst das GitHub-Repository:

git clone https://github.com/huggingface/text-generation-inference.git

Navigieren Sie als Nächstes auf Ihrem lokalen Rechner in das TGI-Verzeichnis und installieren Sie es mit den folgenden Befehlen:

cd text-generation-inference/ BUILD_EXTENSIONS=False make install

Lassen Sie uns nun erkunden, wie Sie TGI sowohl mit als auch ohne Docker nutzen können. Zur Demonstration verwende ich das Falcon-7B-Modell, das unter der Apache 2.0-Lizenz lizenziert ist.

Starten eines Modells ohne Docker

Der Installationsprozess hat einen neuen Befehl generiert, “text-generation-launcher”, der den TGI-Server startet. Um einen Endpunkt mit dem Falcon-7B-Modell zu aktivieren, führen Sie einfach den folgenden Befehl aus:

text-generation-launcher --model-id tiiuae/falcon-7b-instruct --num-shard 1 --port 8080 --quantize bitsandbytes

Hier ist eine Aufschlüsselung der einzelnen Eingabeparameter:

  • model-id: Dies bezieht sich auf den spezifischen Namen des Modells, wie er im Hugging Face Hub aufgeführt ist. In unserem Fall für Falcon-7B ist es “tiiuae/falcon-7b-instruct”.
  • num-shard: Passen Sie diesen Parameter an die Anzahl der verfügbaren GPUs an. Der Standardwert ist 1.
  • port: Dies gibt den Port an, auf dem der Server auf Anfragen wartet. Der Standardport ist 8080.
  • quantize: Für Benutzer mit GPUs mit weniger als 24 GB VRAM ist eine Modellquantisierung erforderlich, um eine Speicherüberlastung zu vermeiden. In den vorherigen Befehlen wurde “bitsandbytes” für die sofortige Quantisierung ausgewählt. Eine andere Option, “GPTQ” (“gptq”), ist ebenfalls verfügbar, auch wenn ihre Funktionsweise möglicherweise weniger vertraut ist.

TGI-Anwendungen

Es gibt mehrere Möglichkeiten, den Text Generation Inference (TGI)-Server in Ihre Anwendungen zu integrieren. Sobald er läuft, können Sie durch Senden einer POST-Anfrage an den Endpunkt /generate mit ihm interagieren, um Ergebnisse zu erhalten.

Wenn Sie sich für kontinuierliches Token-Streaming mit TGI entscheiden, verwenden Sie stattdessen den Endpunkt, wie im folgenden Abschnitt gezeigt. Diese Anfragen können mit Ihrem bevorzugten Tool wie curl, Python oder TypeScript gestellt werden. Um das von TGI bereitgestellte Modell mit einem Python-Skript abzufragen, müssen Sie die folgende Text-Generierungsbibliothek installieren. Sie können dies ganz einfach mit dem folgenden pip-Befehl tun:

pip install text-generation

Starten Sie nach dem Starten des TGI-Servers eine Instanz von InferenceClient() mit der URL, die auf den Modell-Serving-Endpunkt zeigt. Dann können Sie text_generation() aufrufen, um Anfragen an den Endpunkt zu senden, indem Sie Python verwenden.

from text_generation import Client client = Client(“http://127.0.0.1:8080”) client.text_generation(prompt=“Your prompt here!”)

Um Streaming mit dem InferenceClient zu aktivieren, setzen Sie einfach stream=True. Dadurch können Sie Tokens in Echtzeit empfangen, während sie auf dem Server generiert werden. Hier ist, wie Sie Streaming nutzen können:

for token in client.text_generation(“Your prompt here!”, max_new_tokens=12, stream=True): print(token)

Ein Modell über TGI prompten

Denken Sie daran, dass Sie mit dem bereitgestellten Modell auf Ihrem Endpunkt interagieren, in unserem Fall Falcon-7B. Über TGI richten wir einen Live-Endpunkt ein, der das Abrufen von Antworten vom ausgewählten LLM erleichtert.

Folglich können mit Python Prompts direkt über den lokal auf Ihrem Gerät gehosteten Client, der über Port 8080 zugänglich ist, an das LLM gesendet werden. Das entsprechende Python-Skript würde daher wie folgt aussehen:

from text_generation import Client client = Client(“http://127.0.0.1:8080”) print(client.generate(“Translate the following sentence into spanish: ‘What does Large Language Model mean?’”, max_new_tokens=500).generated_text)

Wir erhalten eine Antwort vom Modell, ohne es in unserer Umgebung installieren zu müssen. Anstatt Python zu verwenden, können wir das LLM auch mit CURL abfragen, wie im folgenden Beispiel gezeigt:

curl 127.0.0.1:8080/generate
-X POST
-d ‘{“inputs”:“Code in Javascript a function to remove all spaces in a string and then print the string twice.”,“parameters”:{“max_new_tokens”:500}}’
-H ‘Content-Type: application/json’

Nach dem Experimentieren mit TGI zeigt sich beeindruckende Geschwindigkeit. Mit Falcon-7B (mit einem Token-Limit von 500) dauert es nur wenige Sekunden. Im Gegensatz dazu benötigt der übliche Inferenzansatz mit der Transformers-Bibliothek etwa 30 Sekunden.

Integration mit novita.ai unter Verwendung des LLM von novita.ai

Ab Version 1.4.0 hat TGI eine API eingeführt, die mit der LLM-API von novita.ai kompatibel ist. Diese neue Messages-API ermöglicht einen nahtlosen Übergang für Kunden und Benutzer von novita.ai-Modellen zu Open-Source-LLMs. Die API ist für die direkte Integration mit den Client-Bibliotheken von novita.ai oder mit Drittanbieter-Tools wie LangChain oder LlamaIndex ausgelegt.

TGIs Unterstützung für Messages stellt sicher, dass seine Inference Endpoints vollständig mit der novita.ai LLM-API kompatibel sind. Diese Kompatibilität ermöglicht es Benutzern, vorhandene Skripte, die novita.ai-Modelle verwenden, problemlos durch offene LLMs zu ersetzen, die auf TGI-Endpunkten gehostet werden, ohne Aufwand.

Dieses Upgrade erleichtert das mühelose Umschalten und gewährt sofortigen Zugriff auf die umfangreichen Vorteile von Open-Source-Modellen, darunter:

  • Vollständige Kontrolle und Transparenz über Modelle und Daten.
  • Wegfall von Bedenken hinsichtlich Ratenbegrenzungen.
  • Flexibilität, Systeme an spezifische Anforderungen anzupassen.

Ein Beispiel für die Integration von TGI in das Chat-Completion-Protokoll von novita.ai ist unten angegeben:

from openai import OpenAI

client = OpenAI( base_url=“https://api.novita.ai/v3/openai”, # Holen Sie sich den NovitaAI-API-Schlüssel, indem Sie auf verweisen: https://novita.ai/get-started/Quick_Start.html#_3-create-an-api-key api_key=“”, )

model = “meta-llama/llama-3-8b-instruct” stream = True # or False max_tokens = 512

chat_completion_res = client.chat.completions.create( model=model, messages=[ { “role”: “system”, “content”: “Act like you are a helpful assistant.”, }, { “role”: “user”, “content”: “Hi there!”, } ], stream=stream, max_tokens=max_tokens, )

if stream: for chunk in chat_completion_res: print(chunk.choices[0].delta.content or “”, end=“”) else: print(chat_completion_res.choices[0].message.content)

Wie ersichtlich, kann die novita.ai-Bibliothek verwendet werden, um unseren ENDPOINT und unser Hugging Face-Passwort anzugeben. Für weitere Einblicke in diese Integration verweisen wir auf die Hugging Face TGI-Dokumentation.

Praktische Tipps bei der Verwendung von TGI

Grundkonzepte von LLMs

Bevor Sie in HuggingFace TGI eintauchen, ist es wichtig, ein gutes Verständnis großer Sprachmodelle zu haben. Machen Sie sich mit Schlüsselkonzepten wie Tokenisierung, Aufmerksamkeitsmechanismen und der Transformer-Architektur vertraut. Diese Grundlagen sind unerlässlich, um Modelle anzupassen und Ergebnisse der Textgenerierung zu verbessern.

Modellvorbereitung und -optimierung – Hugging Face verstehen

Lernen Sie, wie Sie Modelle für Ihre spezifischen Anforderungen vorbereiten und optimieren. Dies umfasst die Auswahl des geeigneten Modells, die Anpassung von Tokenizern und die Anwendung von Techniken zur Leistungsverbesserung ohne Qualitätseinbußen.

Machen Sie sich mit der Funktionsweise von HuggingFace und der Nutzung des HuggingFace Hub für die NLP-Entwicklung vertraut. Ein guter Ausgangspunkt ist das Tutorial “An Introduction to Using Transformers and Hugging Face”.

Das Verständnis des Konzepts des Fine-Tunings ist ebenfalls unerlässlich, da Modelle oft für spezifische Ziele optimiert werden müssen. Sie können lernen, wie Sie ein Modell mit dem Leitfaden “An Introductory Guide to Fine-Tuning LLMs” feinabstimmen.

Generierungsstrategien

Untersuchen Sie verschiedene Ansätze zur Textgenerierung, einschließlich Greedy Search, Beam Search und Top-k-Sampling. Jede Methode hat ihre Vor- und Nachteile, die sich auf Kohärenz, Kreativität und Relevanz des generierten Textes auswirken.

Fazit

Das TGI-Toolkit von Hugging Face ermöglicht es Einzelpersonen, in die KI-Textgenerierung einzutauchen. Es bietet ein benutzerfreundliches Toolkit für die Bereitstellung und das Hosting von LLMs für anspruchsvolle NLP-Anwendungen, die menschenähnlichen Text erfordern.

Obwohl das Selbst-Hosten großer Sprachmodelle Datenschutz und Kostenkontrolle bietet, erfordert es leistungsstarke Hardware. Dennoch ermöglichen jüngste Fortschritte auf diesem Gebiet, kleinere Modelle direkt auf unseren lokalen Maschinen zu nutzen.

novita.ai, die Komplettplattform für grenzenlose Kreativität, die Ihnen Zugang zu über 100 APIs bietet. Von Bildgenerierung und Sprachverarbeitung bis hin zu Audio-Verbesserung und Videobearbeitung – günstig und nutzungsabhängig bezahlen – sie befreit Sie von der GPU-Wartung, während Sie Ihre eigenen Produkte entwickeln. Testen Sie es kostenlos.

Empfohlene Lektüre

Was ist der Unterschied zwischen LLM und GPT

LLM Leaderboard 2024: Vorhersagen enthüllt

Novita AI LLM Inference Engine: der höchste Durchsatz und die günstigste Inferenz verfügbar