Stummel Vollständiger Anfängerleitfaden für Hugging Face LLM-Tools – Unite.AI
Vernetzen Sie sich mit uns

KI-Tools 101

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

mm
Aktualisiert on
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 Transformer und LLMs vor und zeigen, wie die Hugging Face-Bibliothek eine wichtige Rolle bei der Förderung einer Open-Source-KI-Community spielt. Außerdem werden wir anhand praktischer Python-Beispiele die wesentlichen Funktionen von Hugging Face erläutern, darunter Pipelines, Datensätze, Modelle und mehr.

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 Schuss) – eine Reihe von Fragen rund um den Lehrplan für Grundwissenschaften.
  • HellaSwag (10-Schuss) – ein vernünftiger Inferenztest, der besagt, dass diese Metrik, obwohl sie für Menschen einfach ist, eine erhebliche Herausforderung für hochmoderne Modelle darstellt.
  • MMLU (5-Schuss) – eine vielschichtige Bewertung, die die Kompetenz eines Textmodells in 57 verschiedenen Bereichen berührt, darunter unter anderem grundlegende Mathematik, Rechtswissenschaften und Informatik.
  • WahrhaftigQA (0-shot) – ein Tool zur Ermittlung der Tendenz eines Modells, häufig auftretende Fehlinformationen im Internet 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, eine Funktion, die bei der einfachen Nutzung vorab trainierter Modelle hilft, die im Hugging Face-Repository verfügbar sind. Es bietet eine intuitive API für eine Reihe von Aufgaben, darunter Stimmungsanalyse, Beantwortung von Fragen, maskierte Sprachmodellierung, Erkennung benannter Entitäten 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, die mit der Stimmungsanalyse beginnen, bei der Texte in positive oder negative Stimmungen kategorisiert werden. Die leistungsstarke Funktion „pipeline()“ der Bibliothek dient als Knotenpunkt, der andere Pipelines umfasst und aufgabenspezifische Anwendungen in den Bereichen Audio, Bildverarbeitung und multimodale Domänen ermöglicht.

Praktische Anwendungen

Textklassifizierung

Mit der Funktion „pipe()“ von Hugging Face wird die Textklassifizierung zum Kinderspiel. So können Sie eine Textklassifizierungspipeline initiieren:

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")

Output

Result 1: 
Label: POSITIVE 
Score: 1.0 
Result 2: 
Label: POSITIVE 
Score: 0.996 

Anerkennung benannter Entitäten (NER)

NER spielt eine entscheidende Rolle bei der Extraktion realer Objekte, die als „benannte Entitäten“ bezeichnet werden, 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)

Output

 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)

Output

 {'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 Teilmenge der verfügbaren Aufgaben:

Tabelle: Aufgaben der Hugging-Face-Pipeline

AufgabeBeschreibungPipeline-ID
TextgenerierungGenerieren Sie Text basierend auf einer bestimmten EingabeaufforderungPipeline(task=“text-generierung“)
ZusammenfassungFassen Sie einen längeren Text oder ein Dokument zusammenPipeline(task=“summarization“)
BildklassifizierungBeschriften Sie ein EingabebildPipeline(task=“image-classification“)
Audio-KlassifizierungAudiodaten kategorisierenPipeline(task=“audio-classification“)
Visuelle Beantwortung von FragenBeantworten Sie eine Anfrage mit einem Bild und einer FragePipeline(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 weitaus beliebter wird als Python.

  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 aufgrund seines Global Interpreter Lock (GIL) manchmal verlangsamt werden, aber Rust hat dieses Problem nicht und verspricht eine schnellere Ausführung von Aufgaben und in der Folge eine verbesserte Leistung in Projekten, in denen es implementiert ist.
  2. Sicherheit – 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. Bei Safetensors handelt es sich um die Manipulation von Tensoren, einer komplexen mathematischen Einheit, und Rust stellt sicher, dass die Vorgänge nicht nur schnell, sondern auch sicher sind, wodurch häufige Fehler und Sicherheitsprobleme vermieden werden, die durch fehlerhafte Speicherverwaltung entstehen könnten.

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.

Das Herzstück des Tokenizers von Hugging Face ist das Konzept der Unterwort-Tokenisierung, das ein empfindliches Gleichgewicht zwischen der Tokenisierung auf Wort- und Zeichenebene schafft, um die Informationsspeicherung und die Wortschatzgröße zu optimieren. Es funktioniert durch die Erstellung von Untertokens wie „##ing“ und „##ed“, wobei der semantische Reichtum erhalten bleibt und gleichzeitig ein aufgeblähtes Vokabular vermieden 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, von denen jeder einen bestimmten Aspekt der Tokenisierung behandelt. Schauen 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 Rust die die syntaktische Ähnlichkeit von C++ übernimmt und gleichzeitig neue Konzepte in das Design von Programmiersprachen einführt. In Verbindung mit Python-Bindungen stellt es sicher, dass Sie bei der Arbeit in einer Python-Umgebung die Leistung einer niedrigeren Sprache genießen können.

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 Textabsatz haben und daraus eine bestimmte 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 vorab trainierte 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, mit a praktisch zu experimentieren Google Colab-Notizbuch.

Zusammenfassung

Durch sein umfangreiches Angebot an Open-Source-Tools, vorab trainierten 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 hochentwickelten 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 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.