Vernetzen Sie sich mit uns

KI-Tools 101

Vollständiger Anfängerleitfaden für Hugging Face LLM-Tools

mm
UMARMENDES GESICHT – KOMPLETTE ANLEITUNG

Hugging Face ist ein KI-Forschungslabor und -Zentrum, das eine Gemeinschaft von Wissenschaftlern, Forschern und Enthusiasten aufgebaut hat. In kurzer Zeit hat Hugging Face eine beachtliche Präsenz im KI-Bereich erlangt. Tech-Riesen darunter Google, Amazon und Nvidia haben das KI-Startup Hugging Face mit erheblichen Investitionen gestärkt und seine Bewertung erhöht 4.5 Milliarden Dollar.

In diesem Leitfaden stellen wir Transformatoren und LLMs vor und zeigen, wie die Hugging Face-Bibliothek eine wichtige Rolle bei der Förderung einer Open-Source-KI-Community spielt. Wir gehen außerdem die wesentlichen Funktionen von Hugging Face durch, darunter Pipelines, Datensätze, Modelle und mehr, und zwar anhand praktischer Python-Beispiele.

Transformatoren im NLP

Im Jahr 2017 veröffentlichte die Cornell University ein einflussreiches Papier, das Folgendes vorstellte Transformer. Dies sind Deep-Learning-Modelle, die im NLP verwendet werden. Diese Entdeckung trieb die Entwicklung großer Sprachmodelle wie an ChatGPT.

Große Sprachmodelle oder LLMs sind KI-Systeme, die Transformatoren verwenden, um menschenähnliche Texte zu verstehen und zu erstellen. Die Erstellung dieser Modelle ist jedoch kostspielig und kostet oft Millionen von Dollar, was ihre Zugänglichkeit für große Unternehmen einschränkt.

Gesicht umarmenDas 2016 gestartete Unternehmen zielt darauf ab, NLP-Modelle für jedermann zugänglich zu machen. Obwohl es sich um ein kommerzielles Unternehmen handelt, bietet es eine Reihe von Open-Source-Ressourcen, die Menschen und Organisationen dabei helfen, Transformatormodelle kostengünstig zu bauen und zu nutzen. Beim maschinellen Lernen geht es darum, Computern beizubringen, Aufgaben durch das Erkennen von Mustern auszuführen, während Deep Learning, eine Teilmenge des maschinellen Lernens, ein Netzwerk schafft, das unabhängig lernt. Transformer sind eine Art Deep-Learning-Architektur, die Eingabedaten effektiv und flexibel nutzt, was sie aufgrund des geringeren Trainingszeitaufwands zu einer beliebten Wahl für die Erstellung großer Sprachmodelle macht.

Wie Hugging Face NLP- und LLM-Projekte erleichtert

Hugging Face-Ökosystem – Modelle, Datensätze, Metriken, Transformatoren, Beschleunigung, Tokenizer

Hugging Face hat die Arbeit mit LLMs einfacher gemacht, indem es Folgendes bietet:

  1. Eine Reihe vorab trainierter Modelle zur Auswahl.
  2. Tools und Beispiele zur Feinabstimmung dieser Modelle an Ihre spezifischen Anforderungen.
  3. Einfache Bereitstellungsoptionen fĂĽr verschiedene Umgebungen.

Eine groĂźartige Ressource, die ĂĽber Hugging Face verfĂĽgbar ist, ist die Ă–ffnen Sie die LLM-Bestenliste. Als umfassende Plattform ĂĽberwacht, bewertet und bewertet es systematisch die Effizienz eines Spektrums von Large Language Models (LLMs) und Chatbots und bietet eine anspruchsvolle Analyse der Fortschritte im Open-Source-Bereich

LLM Benchmarks misst Modelle anhand von vier Metriken:

  • AI2 Reasoning Challenge (25-Schläge) – eine Reihe von Fragen zum Lehrplan fĂĽr Naturwissenschaften in der Grundschule.
  • HellaSwag (10-Schuss) – ein Inferenztest auf Basis des gesunden Menschenverstands, dessen Metrik zwar fĂĽr Menschen einfach ist, fĂĽr hochmoderne Modelle jedoch eine erhebliche Herausforderung darstellt.
  • MMLU (5-Schuss) – eine vielschichtige Bewertung, die die Kompetenz eines Textmodells in 57 verschiedenen Bereichen untersucht, darunter unter anderem Grundlagen der Mathematik, des Rechts und der Informatik.
  • TruthfulQA (0-shot) – ein Tool zur Feststellung der Tendenz eines Modells, häufig vorkommende Online-Fehlinformationen wiederzugeben.

Die Benchmarks, die mit Begriffen wie „25-Schuss“, „10-Schuss“, „5-Schuss“ und „0-Schuss“ beschrieben werden, geben die Anzahl der prompten Beispiele an, die einem Modell während des Bewertungsprozesses gegeben werden um seine Leistung und sein Denkvermögen in verschiedenen Bereichen zu messen. In „Few-Shot“-Paradigmen erhalten Modelle eine kleine Anzahl von Beispielen, die sie bei ihren Reaktionen unterstützen, wohingegen Modelle in einer „0-Shot“-Einstellung keine Beispiele erhalten und sich ausschließlich auf ihr bereits vorhandenes Wissen verlassen müssen, um angemessen zu reagieren .

Komponenten von Hugging Face

Pipelines

'Pipelines„“ sind Teil der Transformers-Bibliothek von Hugging Face, einer Funktion, die die einfache Nutzung vortrainierter Modelle aus dem Hugging Face-Repository ermöglicht. Sie bietet eine intuitive API für eine Reihe von Aufgaben, darunter Stimmungsanalyse, Fragenbeantwortung, maskierte Sprachmodellierung, Named-Entity-Erkennung und Zusammenfassung.

Pipelines integrieren drei zentrale Hugging Face-Komponenten:

  1. Tokenisierer: Bereitet Ihren Text fĂĽr das Modell vor, indem er ihn in ein Format konvertiert, das das Modell verstehen kann.
  2. Modell: Dies ist das Herzstück der Pipeline, in dem die tatsächlichen Vorhersagen basierend auf der vorverarbeiteten Eingabe getroffen werden.
  3. Postprozessor: Wandelt die Rohvorhersagen des Modells in eine fĂĽr Menschen lesbare Form um.

Diese Pipelines reduzieren nicht nur den Programmieraufwand, sondern bieten auch eine benutzerfreundliche Schnittstelle zur AusfĂĽhrung verschiedener NLP-Aufgaben.

Transformer-Anwendungen, die die Hugging Face-Bibliothek verwenden

Ein Highlight der Hugging Face-Bibliothek ist die Transformers-Bibliothek, die NLP-Aufgaben vereinfacht, indem sie ein Modell mit den notwendigen Vor- und Nachbearbeitungsstufen verbindet und so den Analyseprozess rationalisiert. Um die Bibliothek zu installieren und zu importieren, verwenden Sie die folgenden Befehle:

pip install -q transformers
from transformers import pipeline

Anschließend können Sie NLP-Aufgaben ausführen, beginnend mit der Sentimentanalyse, die Text in positive oder negative Stimmungen kategorisiert. Die leistungsstarke Funktion pipeline() der Bibliothek dient als Hub, der andere Pipelines umfasst und aufgabenspezifische Anwendungen in den Bereichen Audio, Vision und Multimodalität ermöglicht.

Praktische Anwendungen

Textklassifizierung

Mit der pipeline()-Funktion von Hugging Face wird die Textklassifizierung zum Kinderspiel. So starten Sie eine Textklassifizierungs-Pipeline:

classifier = pipeline("text-classification")

Für eine praktische Erfahrung können Sie einen String oder eine Liste von Strings in Ihre Pipeline einspeisen, um Vorhersagen zu erhalten, die mithilfe der Pandas-Bibliothek von Python übersichtlich visualisiert werden können. Unten ist ein Python-Snippet, das dies demonstriert:

sentences = ["I am thrilled to introduce you to the wonderful world of AI.",
"Hopefully, it won't disappoint you."]

# Get classification results for each sentence in the list
results = classifier(sentences)

# Loop through each result and print the label and score
for i, result in enumerate(results):
print(f"Result {i + 1}:")
print(f" Label: {result['label']}")
print(f" Score: {round(result['score'], 3)}\n")

Ausgang

Result 1: 
Label: POSITIVE 
Score: 1.0 

Result 2: 
Label: POSITIVE 
Score: 0.996 

Anerkennung benannter Entitäten (NER)

NER ist entscheidend für die Extraktion realer Objekte, sogenannter „benannter Entitäten“, aus dem Text. Nutzen Sie die NER-Pipeline, um diese Entitäten effektiv zu identifizieren:

ner_tagger = pipeline("ner", aggregation_strategy="simple")
text = "Elon Musk is the CEO of SpaceX."
outputs = ner_tagger(text)
print(outputs)

Ausgang

 Elon Musk: PER, SpaceX: ORG 

Frage beantworten

Bei der Beantwortung von Fragen geht es darum, präzise Antworten auf bestimmte Fragen aus einem bestimmten Kontext zu extrahieren. Initialisieren Sie eine Frage-Antwort-Pipeline und geben Sie Ihre Frage und den Kontext ein, um die gewünschte Antwort zu erhalten:

reader = pipeline("question-answering")
text = "Hugging Face is a company creating tools for NLP. It is based in New York and was founded in 2016."
question = "Where is Hugging Face based?"
outputs = reader(question=question, context=text)
print(outputs)

Ausgang

 {'score': 0.998, 'start': 51, 'end': 60, 'answer': 'New York'} 

Die Pipeline-Funktion von Hugging Face bietet neben Textklassifizierung, NER und Fragenbeantwortung eine Reihe vorgefertigter Pipelines fĂĽr verschiedene Aufgaben. Nachfolgend finden Sie Details zu einer Auswahl der verfĂĽgbaren Aufgaben:

Tabelle: Aufgaben der Hugging-Face-Pipeline

Aufgabe Beschreibung Pipeline-ID
Textgenerierung Generieren Sie Text basierend auf einer bestimmten Eingabeaufforderung Pipeline(task=“text-generierung“)
Zusammenfassung Fassen Sie einen längeren Text oder ein Dokument zusammen Pipeline(task=“summarization“)
Bildklassifizierung Beschriften Sie ein Eingabebild Pipeline(task=“image-classification“)
Audio-Klassifizierung Audiodaten kategorisieren Pipeline(task=“audio-classification“)
Visuelle Beantwortung von Fragen Beantworten Sie eine Anfrage mit einem Bild und einer Frage Pipeline(task=“vqa“)

 

AusfĂĽhrliche Beschreibungen und weitere Aufgaben finden Sie im Pipeline-Dokumentation auf der Website von Hugging Face.

Warum Hugging Face seinen Fokus auf Rust verlagert

Umarmendes Gesicht Safetensors und Tokenizer Rust

Umarmendes Gesicht Safetensors und Tokenizer GitHub-Seite

Das Hugging Face (HF)-Ă–kosystem begann, Rust in seinen Bibliotheken wie Safesensors und Tokenizern zu verwenden.

Hugging Face hat vor kurzem auch ein neues Framework für maschinelles Lernen namens veröffentlicht Duftkerze. Im Gegensatz zu herkömmlichen Frameworks, die Python verwenden, wird Candle mit Rust erstellt. Das Ziel hinter der Verwendung von Rust besteht darin, die Leistung zu verbessern und das Benutzererlebnis zu vereinfachen und gleichzeitig GPU-Vorgänge zu unterstützen.

Das Hauptziel von Candle besteht darin, serverlose Inferenz zu ermöglichen, die Bereitstellung leichter Binärdateien zu ermöglichen und Python aus den Produktions-Workloads zu entfernen, was aufgrund seines Overheads manchmal Prozesse verlangsamen kann. Dieses Framework stellt eine Lösung dar, um die Probleme zu überwinden, die bei vollständigen Frameworks für maschinelles Lernen wie PyTorch auftreten, die beim Erstellen von Instanzen in einem Cluster groß und langsam sind.

Lassen Sie uns untersuchen, warum Rust gegenĂĽber Python immer beliebter wird.

  1. Geschwindigkeit und Leistung – Rust ist für seine unglaubliche Geschwindigkeit bekannt und übertrifft Python, das traditionell in Frameworks für maschinelles Lernen verwendet wird. Die Leistung von Python kann manchmal durch den Global Interpreter Lock (GIL) beeinträchtigt werden. Rust hingegen hat dieses Problem nicht und verspricht eine schnellere Ausführung von Aufgaben und damit eine verbesserte Leistung in Projekten, in denen es implementiert ist.
  2. Schutz vor Bedrohungen – Rust bietet Speichersicherheitsgarantien ohne Garbage Collector, ein Aspekt, der für die Gewährleistung der Sicherheit gleichzeitiger Systeme unerlässlich ist. Dies spielt eine entscheidende Rolle in Bereichen wie Safetensoren, in denen die Sicherheit im Umgang mit Datenstrukturen Priorität hat.

Safetensoren

Safetensoren Profitieren Sie von den Geschwindigkeits- und Sicherheitsfunktionen von Rust. Safetensoren beinhalten die Manipulation von Tensoren, einer komplexen mathematischen Einheit. Rust stellt sicher, dass die Operationen nicht nur schnell, sondern auch sicher sind und häufige Fehler und Sicherheitsprobleme vermieden werden, die durch falsche Speicherverwaltung entstehen können.

Tokenisierer

Tokenizer Bewältigen Sie die Zerlegung von Sätzen oder Phrasen in kleinere Einheiten wie Wörter oder Begriffe. Rust unterstützt diesen Prozess, indem es die Ausführungszeit beschleunigt und so sicherstellt, dass der Tokenisierungsprozess nicht nur genau, sondern auch schnell erfolgt, wodurch die Effizienz von Aufgaben zur Verarbeitung natürlicher Sprache erhöht wird.

Der Kern des Tokenizers von Hugging Face ist das Konzept der Subword-Tokenisierung. Dabei wird ein ausgewogenes Verhältnis zwischen der Tokenisierung auf Wort- und Zeichenebene hergestellt, um die Informationsspeicherung und den Wortschatzumfang zu optimieren. Dies funktioniert durch die Erstellung von Subtokens wie „##ing“ und „##ed“. Dadurch bleibt die semantische Vielfalt erhalten, ohne dass der Wortschatz aufgebläht wird.

Die Unterwort-Tokenisierung umfasst eine Trainingsphase, um das wirksamste Gleichgewicht zwischen der Tokenisierung auf Zeichen- und Wortebene zu ermitteln. Es geht über bloße Präfix- und Suffixregeln hinaus und erfordert eine umfassende Analyse von Sprachmustern in umfangreichen Textkorpora, um einen effizienten Unterwort-Tokenizer zu entwerfen. Der generierte Tokenizer kann mit neuartigen Wörtern umgehen, indem er sie in bekannte Unterwörter zerlegt und so ein hohes Maß an semantischem Verständnis aufrechterhält.

Tokenisierungskomponenten

Die Tokenizer-Bibliothek unterteilt den Tokenisierungsprozess in mehrere Schritte, die jeweils einen bestimmten Aspekt der Tokenisierung behandeln. Sehen wir uns diese Komponenten genauer an:

  • Normalizer: Nimmt erste Transformationen der Eingabezeichenfolge vor und wendet notwendige Anpassungen wie Kleinbuchstabenkonvertierung, Unicode-Normalisierung und Stripping an.
  • PreTokenizer: Verantwortlich fĂĽr die Fragmentierung der Eingabezeichenfolge in Vorsegmente und die Bestimmung der Aufteilungen basierend auf vordefinierten Regeln, wie z. B. Raumabgrenzungen.
  • Modell: Ăśberwacht die Entdeckung und Erstellung von Subtokens, passt sich den Besonderheiten Ihrer Eingabedaten an und bietet Schulungsmöglichkeiten.
  • Postprozessor: Verbessert die Konstruktionsfunktionen, um die Kompatibilität mit vielen transformatorbasierten Modellen wie BERT zu erleichtern, indem Token wie [CLS] und [SEP] hinzugefĂĽgt werden.

Um mit Hugging Face-Tokenizern zu beginnen, installieren Sie die Bibliothek mit dem Befehl pip install tokenizers und importieren Sie es in Ihre Python-Umgebung. Die Bibliothek kann groĂźe Textmengen in sehr kurzer Zeit tokenisieren und spart so wertvolle Rechenressourcen fĂĽr intensivere Aufgaben wie das Modelltraining.

Die Tokenizer-Bibliothek verwendet Rest Es übernimmt die syntaktische Ähnlichkeit von C++ und führt gleichzeitig neue Konzepte im Programmiersprachendesign ein. In Verbindung mit Python-Bindungen gewährleistet es, dass Sie beim Arbeiten in einer Python-Umgebung die Leistung einer Sprache auf niedrigerer Ebene genießen.

Datensätze

Datensätze sind das Fundament von KI-Projekten. Hugging Face bietet eine große Auswahl an Datensätzen, die für eine Reihe von NLP-Aufgaben und mehr geeignet sind. Um sie effizient nutzen zu können, ist es wichtig, den Prozess des Ladens und Analysierens zu verstehen. Unten finden Sie ein gut kommentiertes Python-Skript, das zeigt, wie Sie auf Hugging Face verfügbare Datensätze erkunden können:

from datasets import load_dataset
# Load a dataset
dataset = load_dataset('squad')
# Display the first entry
print(dataset[0])

Dieses Skript verwendet die Funktion „load_dataset“, um den SQuAD-Datensatz zu laden, der eine beliebte Wahl für Aufgaben zur Beantwortung von Fragen ist.

Nutzen Sie vorab trainierte Modelle und fĂĽhren Sie alles zusammen

Vorab trainierte Modelle bilden das Rückgrat vieler Deep-Learning-Projekte und ermöglichen es Forschern und Entwicklern, ihre Initiativen voranzutreiben, ohne bei Null anfangen zu müssen. Hugging Face erleichtert die Erkundung einer Vielzahl vorab trainierter Modelle, wie im folgenden Code gezeigt:

from transformers import AutoModelForQuestionAnswering, AutoTokenizer

# Load the pre-trained model and tokenizer
model = AutoModelForQuestionAnswering.from_pretrained('bert-large-uncased-whole-word-masking-finetuned-squad')
tokenizer = AutoTokenizer.from_pretrained('bert-large-uncased-whole-word-masking-finetuned-squad')

# Display the model's architecture
print(model)

Nachdem das Modell und der Tokenizer geladen sind, können wir nun mit der Erstellung einer Funktion fortfahren, die einen Textabschnitt und eine Frage als Eingaben verwendet und die aus dem Text extrahierte Antwort zurückgibt. Wir werden den Tokenizer verwenden, um den Eingabetext und die Frage in ein Format zu verarbeiten, das mit dem Modell kompatibel ist, und dann werden wir diese verarbeitete Eingabe in das Modell einspeisen, um die Antwort zu erhalten:

def get_answer(text, question):
    # Tokenize the input text and question
    inputs = tokenizer(question, text, return_tensors='pt', max_length=512, truncation=True)
    outputs = model(**inputs)

    # Get the start and end scores for the answer
    answer_start = torch.argmax(outputs.start_logits)
    answer_end = torch.argmax(outputs.end_logits) + 1

    answer = tokenizer.convert_tokens_to_string(tokenizer.convert_ids_to_tokens(inputs['input_ids'][0][answer_start:answer_end]))
    return answer

Im Codeausschnitt importieren wir die erforderlichen Module aus dem Transformers-Paket und laden dann ein vorab trainiertes Modell und den entsprechenden Tokenizer mithilfe der Methode from_pretrained. Wir wählen ein BERT-Modell, das auf den SQuAD-Datensatz abgestimmt ist.

Sehen wir uns einen Beispielanwendungsfall dieser Funktion an, bei dem wir einen Textabschnitt haben und daraus eine spezifische Antwort auf eine Frage extrahieren möchten:

text = """
The Eiffel Tower, located in Paris, France, is one of the most iconic landmarks in the world. It was designed by Gustave Eiffel and completed in 1889. The tower stands at a height of 324 meters and was the tallest man-made structure in the world at the time of its completion.
"""

question = "Who designed the Eiffel Tower?"

# Get the answer to the question
answer = get_answer(text, question)
print(f"The answer to the question is: {answer}")
# Output: The answer to the question is: Gustave Eiffel


In diesem Skript erstellen wir eine get_answer-Funktion, die einen Text und eine Frage entgegennimmt, diese entsprechend tokenisiert und das vortrainierte BERT-Modell nutzt, um die Antwort aus dem Text zu extrahieren. Es demonstriert eine praktische Anwendung der Transformers-Bibliothek von Hugging Face zum Aufbau eines einfachen, aber leistungsstarken Frage-Antwort-Systems. Um die Konzepte gut zu verstehen, empfiehlt es sich, praktische Experimente mit einem Google Colab-Notizbuch.

Fazit

Dank seiner umfangreichen Open-Source-Tools, vortrainierten Modellen und benutzerfreundlichen Pipelines ermöglicht es sowohl erfahrenen Profis als auch Neueinsteigern, mühelos und verständlich in die weitläufige Welt der KI einzutauchen. Darüber hinaus unterstreicht die Initiative zur Integration von Rust aufgrund seiner Geschwindigkeits- und Sicherheitsfunktionen das Engagement von Hugging Face, Innovationen zu fördern und gleichzeitig Effizienz und Sicherheit in KI-Anwendungen zu gewährleisten. Die transformative Arbeit von Hugging Face demokratisiert nicht nur den Zugang zu hochrangigen KI-Tools, sondern fördert auch eine kollaborative Umgebung für Lernen und Entwicklung im KI-Bereich und ermöglicht so eine Zukunft, in der KI für alle zugänglich ist.

Ich habe die letzten fünf Jahre damit verbracht, in die faszinierende Welt des maschinellen Lernens und des Deep Learning einzutauchen. Meine Leidenschaft und mein Fachwissen haben dazu geführt, dass ich an über 50 verschiedenen Software-Engineering-Projekten mitgewirkt habe, mit besonderem Schwerpunkt auf KI/ML. Meine anhaltende Neugier hat mich auch zur Verarbeitung natürlicher Sprache geführt, einem Bereich, den ich gerne weiter erforschen möchte.