KI-Tools 101

Kompletter Anfänger-Leitfaden für Hugging Face LLM-Tools

mm
Unite.AI zu deinen bevorzugten Quellen auf Google hinzufügen
HUGGING FACE - COMPLETE GUIDE

Hugging Face ist ein AI-Forschungslabor und ein Hub, der eine Gemeinschaft von Wissenschaftlern, Forschern und Enthusiasten aufgebaut hat. In kurzer Zeit hat Hugging Face eine erhebliche Präsenz im AI-Bereich erlangt. Tech-Giganten wie Google (GOOGL ), Amazon (AMZN ) und Nvidia (NVDA ) haben den AI-Startup Hugging Face mit erheblichen Investitionen unterstützt, was seine Bewertung auf $4,5 Milliarden bringt.

In diesem Leitfaden werden wir Transformator-Modelle, LLMs und die Rolle der Hugging Face-Bibliothek bei der Förderung einer Open-Source-AI-Gemeinschaft vorstellen. Wir werden auch die wesentlichen Funktionen von Hugging Face erläutern, einschließlich Pipelines, Datensätzen, Modellen und mehr, mit praktischen Python-Beispielen.

Transformator-Modelle in der NLP

Im Jahr 2017 veröffentlichte die Cornell University eine einflussreiche Arbeit, die Transformator-Modelle vorstellte. Diese sind tiefere Lernmodelle, die in der NLP verwendet werden. Diese Entdeckung förderte die Entwicklung von großen Sprachmodellen wie ChatGPT.

Große Sprachmodelle oder LLMs sind KI-Systeme, die Transformator-Modelle verwenden, um menschliche Texte zu verstehen und zu erstellen. Die Erstellung dieser Modelle ist jedoch teuer und erfordert oft Millionen von Dollar, was ihre Zugänglichkeit auf große Unternehmen beschränkt.

Hugging Face, gegründet im Jahr 2016, zielt darauf ab, NLP-Modelle für jeden zugänglich zu machen. Trotzdem es sich um ein kommerzielles Unternehmen handelt, bietet es eine Reihe von Open-Source-Ressourcen an, um Menschen und Organisationen dabei zu helfen, Transformer-Modelle kostengünstig zu erstellen und zu verwenden. Maschinelles Lernen besteht darin, Computern beizubringen, Aufgaben durch Mustererkennung auszuführen, während tiefes Lernen, ein Teilbereich des maschinellen Lernens, ein Netzwerk erstellt, das unabhängig lernt. Transformator-Modelle sind eine Art tiefes Lernarchitektur, die die Eingabedaten effektiv und flexibel nutzt, was sie zu einer beliebten Wahl für die Erstellung großer Sprachmodelle macht, da sie weniger Trainingszeit erfordern.

Wie Hugging NLP- und LLM-Projekte erleichtert

Hugging Face-Ökosystem - Modelle, Datensätze, Metriken, Transformator-Modelle, Accelerate, Tokenizer

Hugging Face hat die Arbeit mit LLMs vereinfacht, indem es Folgendes anbietet:

  1. Eine Reihe von vorgefertigten Modellen zur Auswahl.
  2. Werkzeuge und Beispiele, um diese Modelle an Ihre spezifischen Bedürfnisse anzupassen.
  3. Leichte Bereitstellungsoptionen für verschiedene Umgebungen.

Eine großartige Ressource, die über Hugging Face verfügbar ist, ist die Open LLM Leaderboard. Als umfassende Plattform überwacht, bewertet und analysiert sie systematisch die Effizienz einer Reihe von Large Language Models (LLMs) und Chatbots, wodurch eine differenzierte Analyse der Fortschritte im Open-Source-Bereich möglich ist.

LLM-Benchmarks misst Modelle anhand von vier Metriken:

  • AI2 Reasoning Challenge (25-Shot) – eine Reihe von Fragen zu Grundlagen der Naturwissenschaft.
  • HellaSwag (10-Shot) – ein Test für Alltagsverständnis, der für Menschen einfach, aber für fortschrittliche Modelle eine Herausforderung darstellt.
  • MMLU (5-Shot) – eine umfassende Bewertung, die die Fähigkeiten eines Textmodells in 57 verschiedenen Bereichen, einschließlich Grundlagen der Mathematik, Recht und Informatik, berücksichtigt.
  • TruthfulQA (0-Shot) – ein Werkzeug, um die Neigung eines Modells zu überprüfen, häufig im Internet vorkommende Fehlinformationen zu verbreiten.

Die Benchmarks, die mit Begriffen wie “25-Shot”, “10-Shot”, “5-Shot” und “0-Shot” bezeichnet werden, geben die Anzahl der Prompt-Beispiele an, die einem Modell während des Bewertungsprozesses gegeben werden, um seine Leistung und seine Fähigkeit zur Argumentation in verschiedenen Bereichen zu bewerten. Im “Few-Shot”-Paradigma werden Modelle mit einer kleinen Anzahl von Beispielen versehen, um ihre Antworten zu leiten, während im “0-Shot”-Szenario Modelle keine Beispiele erhalten und sich ausschließlich auf ihr vorheriges Wissen verlassen müssen, um angemessen zu antworten.

Komponenten von Hugging

Pipelines

‘Pipelines’ sind Teil der Hugging Face-Transformator-Bibliothek – eine Funktion, die die einfache Verwendung von vorgefertigten Modellen im Hugging Face-Repository ermöglicht. Sie bietet eine intuitive API für eine Reihe von Aufgaben, einschließlich Sentiment-Analyse, Fragebeantwortung, Masked Language Modeling, Named Entity Recognition und Zusammenfassung.

Pipelines integrieren drei zentrale Hugging Face-Komponenten:

  1. Tokenizer: Bereitet Ihren Text für das Modell vor, indem es ihn in ein Format umwandelt, das das Modell verstehen kann.
  2. Modell: Dies ist das Herzstück der Pipeline, in dem die tatsächlichen Vorhersagen auf der Grundlage der vorverarbeiteten Eingabe gemacht werden.
  3. Post-Processor: Wandelt die rohen Vorhersagen des Modells in eine für Menschen lesbare Form um.

Diese Pipelines reduzieren nicht nur umfangreiches Codieren, sondern bieten auch eine benutzerfreundliche Schnittstelle, um verschiedene NLP-Aufgaben auszuführen.

Transformator-Anwendungen mit der Hugging Face-Bibliothek

Ein Highlight der Hugging Face-Bibliothek ist die Transformator-Bibliothek, die NLP-Aufgaben vereinfacht, indem sie ein Modell mit notwendigen Vor- und Nachverarbeitungsstufen verbindet, wodurch der Analyseprozess gestreamt wird. Um die Bibliothek zu installieren und zu importieren, verwenden Sie die folgenden Befehle:

pip install -q transformers
from transformers import pipeline

Nachdem Sie dies getan haben, können Sie NLP-Aufgaben starten, beginnend mit der Sentiment-Analyse, die Text in positive oder negative Sentiments einordnet. Die leistungsstarke pipeline()-Funktion dient als zentrale Schnittstelle, die andere Pipelines umfasst und task-spezifische Anwendungen in Audio-, Bild- und multimodalen Bereichen ermöglicht.

Praktische Anwendungen

Text-Klassifizierung

Text-Klassifizierung wird mit der pipeline()-Funktion von Hugging Face zum Kinderspiel. Hier erfahren Sie, wie Sie eine Text-Klassifizierungs-Pipeline initiieren:

classifier = pipeline("text-classification")

Um eine praktische Erfahrung zu sammeln, füttern Sie eine Zeichenfolge oder eine Liste von Zeichenfolgen in Ihre Pipeline, um Vorhersagen zu erhalten, die mit Python’s Pandas-Bibliothek elegant visualisiert werden können. Hier ist ein Python-Snippet, das dies demonstriert:

sentences = ["Ich bin begeistert, Ihnen die wunderbare Welt der KI vorzustellen.",
"Hoffentlich wird es Sie nicht enttäuschen."]

<p># Klassifizierungsergebnisse für jeden Satz in der Liste abrufen
results = classifier(sentences)</p>

<p># Durchlaufen Sie jedes Ergebnis und drucken Sie das Label und den Score
for i, result in enumerate(results):
print(f&amp;amp;amp;quot;Ergebnis {i + 1}:&amp;amp;amp;quot;)
print(f&amp;amp;amp;quot; Label: {result[&amp;amp;#039;label&amp;amp;#039;]}&amp;amp;amp;quot;)
print(f&amp;amp;amp;quot; Score: {round(result[&amp;amp;#039;score&amp;amp;#039;], 3)}\n&amp;amp;amp;quot;)

Ausgabe

Ergebnis 1:
Label: POSITIV
Score: 1.0

<p>Ergebnis 2:
Label: POSITIV
Score: 0.996

Named Entity Recognition (NER)

NER ist entscheidend für die Extraktion von realen Objekten, sogenannten “Named Entities”, aus dem Text. Verwenden Sie die NER-Pipeline, um diese Entitäten effektiv zu identifizieren:

ner_tagger = pipeline(&amp;amp;amp;quot;ner&amp;amp;amp;quot;, aggregation_strategy=&amp;amp;amp;quot;simple&amp;amp;amp;quot;)
text = &amp;amp;amp;quot;Elon Musk ist der CEO von SpaceX.&amp;amp;amp;quot;
outputs = ner_tagger(text)
print(outputs)

Ausgabe

 Elon Musk: PER, SpaceX: ORG 

Fragebeantwortung

Fragebeantwortung beinhaltet die Extraktion präziser Antworten auf spezifische Fragen aus einem gegebenen Kontext. Initialisieren Sie eine Fragebeantwortungs-Pipeline und geben Sie Ihre Frage und den Kontext ein, um die gewünschte Antwort zu erhalten:

reader = pipeline(&amp;amp;amp;quot;question-answering&amp;amp;amp;quot;)
text = &amp;amp;amp;quot;Hugging Face ist ein Unternehmen, das Tools für die NLP erstellt. Es hat seinen Sitz in New York und wurde 2016 gegründet.&amp;amp;amp;quot;
question = &amp;amp;amp;quot;Wo hat Hugging Face seinen Sitz?&amp;amp;amp;quot;
outputs = reader(question=question, context=text)
print(outputs)

Ausgabe

 {&amp;amp;#039;score&amp;amp;#039;: 0.998, &amp;amp;#039;start&amp;amp;#039;: 51, &amp;amp;#039;end&amp;amp;#039;: 60, &amp;amp;#039;answer&amp;amp;#039;: &amp;amp;#039;New York&amp;amp;#039;} 

Die pipeline()-Funktion von Hugging Face bietet eine Reihe von vorgefertigten Pipelines für verschiedene Aufgaben, neben Text-Klassifizierung, NER und Fragebeantwortung. Hier sind Details zu einem Teil der verfügbaren Aufgaben:

Tabelle: Hugging Face-Pipeline-Aufgaben

Aufgabe Beschreibung Pipeline-Bezeichner
Texterstellung Erstellt Text basierend auf einem gegebenen Prompt pipeline(task=”text-generation”)
Zusammenfassung Zusammenfasst einen langen Text oder ein Dokument pipeline(task=”summarization”)
Bildklassifizierung Klassifiziert ein Eingabebild pipeline(task=”image-classification”)
Audio-Klassifizierung Kategorisiert Audio-Daten pipeline(task=”audio-classification”)
Visuelle Fragebeantwortung Beantwortet eine Frage mithilfe eines Bildes und einer Frage pipeline(task=”vqa”)

 

Für detaillierte Beschreibungen und weitere Aufgaben siehe die Pipeline-Dokumentation auf der Hugging Face-Website.

Warum Hugging den Fokus auf Rust legt

Hugging Face-Safetensors und Tokenizer Rust

Hugging Face-Safetensors und Tokenizer GitHub-Seite

Das Hugging Face-Ökosystem (HF) hat begonnen, Rust in seinen Bibliotheken wie Safetensors und Tokenizern zu verwenden.

Hugging Face hat vor Kurzem auch ein neues maschinelles Lern-Framework namens Candle veröffentlicht. Im Gegensatz zu herkömmlichen Frameworks, die Python verwenden, ist Candle in Rust aufgebaut. Das Ziel hinter der Verwendung von Rust ist es, die Leistung zu verbessern und die Benutzeroberfläche zu vereinfachen, während die Unterstützung von GPU-Operationen erhalten bleibt.

Das Hauptziel von Candle ist es, serverlose Inferenz zu ermöglichen, wodurch die Bereitstellung von leichten Binärdateien möglich wird und Python aus den Produktionsworkloads entfernt wird, was manchmal die Prozesse aufgrund seiner Overhead verlangsamen kann. Dieses Framework ist als Lösung für die Probleme konzipiert, die mit vollständigen maschinellen Lern-Frameworks wie PyTorch auftreten, die groß und langsam sind, wenn Instanzen in einem Cluster erstellt werden.

Lassen Sie uns erkunden, warum Rust immer mehr die bevorzugte Wahl ist, viel mehr als Python.

  1. Geschwindigkeit und Leistung – Rust ist für seine unglaubliche Geschwindigkeit bekannt, wobei es Python, das traditionell in maschinellen Lern-Frameworks verwendet wird, übertrifft. Pythons Leistung kann manchmal aufgrund seines Global Interpreter Lock (GIL) verlangsamt werden, aber Rust hat dieses Problem nicht, was eine schnellere Ausführung von Aufgaben und damit eine verbesserte Leistung in Projekten, in denen es implementiert wird, verspricht.
  2. Sicherheit – Rust bietet Garantien für die Speichersicherheit ohne einen Garbage Collector, was in Bereichen wie Safetensors, in denen die Sicherheit bei der Handhabung von Datenstrukturen von entscheidender Bedeutung ist, von entscheidender Bedeutung ist.

Safetensors

Safetensors profitieren von Rusts Geschwindigkeits- und Sicherheitsfunktionen. Safetensors beinhaltet die Manipulation von Tensoren, einer komplexen mathematischen Entität, und die Verwendung von Rust stellt sicher, dass die Operationen nicht nur schnell, sondern auch sicher sind, wodurch häufige Fehler und Sicherheitsprobleme, die durch eine falsche Handhabung von Speicher entstehen können, vermieden werden.

Tokenizer

Tokenizers sind für die Aufteilung von Sätzen oder Phrasen in kleinere Einheiten wie Wörter oder Terme verantwortlich. Rust beschleunigt diesen Prozess, indem es die Ausführungszeit verkürzt, wodurch die Tokenisierung nicht nur genau, sondern auch schnell ist, was die Effizienz von NLP-Aufgaben verbessert.

Im Kern von Hugging Faces Tokenizer steht das Konzept der Subword-Tokenisierung, das ein feines Gleichgewicht zwischen Wort- und Zeichenebene-Tokenisierung schafft, um die Informationsretention zu optimieren und die Vokabulargröße zu minimieren. Es funktioniert durch die Erstellung von Subtokens wie “##ing” und “##ed”, wodurch semantische Reichhaltigkeit erhalten bleibt, während ein aufgeblähtes Vokabular vermieden wird.

Die Subword-Tokenisierung umfasst eine Trainingsphase, um die effektivste Balance zwischen Zeichen- und Worteinheit-Tokenisierung zu ermitteln. Sie geht über einfache Präfix- und Suffixregeln hinaus und erfordert eine umfassende Analyse von Sprachmustern in umfangreichen Textkorpora, um einen effizienten Subword-Tokenizer zu entwerfen. Der generierte Tokenizer ist in der Lage, neue Wörter zu handhaben, indem er sie in bekannte Subwörter aufteilt, wodurch ein hohes Maß an semantischer Verständlichkeit erhalten bleibt.

Tokenisierungskomponenten

Die Tokenizers-Bibliothek teilt den Tokenisierungsprozess in mehrere Schritte auf, von denen jeder einen unterschiedlichen Aspekt der Tokenisierung anspricht. Lassen Sie uns diese Komponenten erkunden:

  • Normalizer: Führt anfängliche Transformationen auf der Eingabezeichenfolge aus, wobei notwendige Anpassungen wie Umwandlung in Kleinbuchstaben, Unicode-Normalisierung und Entfernen von Leerzeichen vorgenommen werden.
  • Pre-Tokenizer: Verantwortlich für die Aufteilung der Eingabezeichenfolge in Vorsegmente, wobei die Trennungen auf der Grundlage vordefinierter Regeln wie Leerzeichen bestimmt werden.
  • Modell: Überwacht die Entdeckung und Erstellung von Subtokens, wobei es sich an die spezifischen Details Ihrer Eingabedaten anpasst und Trainingsfähigkeiten bietet.
  • Post-Processor: Verbessert Konstruktionsfunktionen, um die Kompatibilität mit vielen transformer-basierten 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 sie in Ihre Python-Umgebung. Die Bibliothek kann große Mengen an Text in sehr kurzer Zeit tokenisieren, wodurch wertvolle Rechenressourcen für intensivere Aufgaben wie Modelltraining gespart werden.

Datensätze

Datensätze sind die Grundlage von KI-Projekten. Hugging Face bietet eine breite Palette von Datensätzen, die für eine Vielzahl von NLP-Aufgaben geeignet sind. Um sie effizient zu nutzen, ist es wichtig, den Prozess des Ladens und Analysierens zu verstehen. Hier ist ein gut kommentierter Python-Code, der zeigt, wie man Datensätze von Hugging Face erkundet:

from datasets import load_dataset
# Laden Sie einen Datensatz
dataset = load_dataset(&amp;amp;#039;squad&amp;amp;#039;)
# Anzeigen des ersten Eintrags
print(dataset[0])

Dieser Code verwendet die load_dataset-Funktion, um den SQuAD-Datensatz zu laden, der eine beliebte Wahl für Fragebeantwortungsaufgaben ist.

Nutzen von vorgefertigten Modellen und Zusammenführung

Vorgefertigte Modelle bilden das Rückgrat vieler Deep-Learning-Projekte, wodurch Forscher und Entwickler ihre Initiativen ohne Neuanfang starten können. Hugging Face ermöglicht die Erkundung einer Vielzahl von vorgefertigten Modellen, wie im folgenden Code gezeigt:

from transformers import AutoModelForQuestionAnswering, AutoTokenizer

<p># Laden Sie das vorgefertigte Modell und den Tokenizer
model = AutoModelForQuestionAnswering.from_pretrained(&amp;amp;#039;bert-large-uncased-whole-word-masking-finetuned-squad&amp;amp;#039;)
tokenizer = AutoTokenizer.from_pretrained(&amp;amp;#039;bert-large-uncased-whole-word-masking-finetuned-squad&amp;amp;#039;)</p>

<p># Anzeigen der Modellarchitektur
print(model)</p>

Mit dem Modell und dem Tokenizer geladen, können wir nun eine Funktion erstellen, die einen Text und eine Frage als Eingabe annimmt und die Antwort aus dem Text extrahiert. Wir werden den Tokenizer verwenden, um den Eingabetext und die Frage in ein Format umzuwandeln, das mit dem Modell kompatibel ist, und dann diesen verarbeiteten Eingabe in das Modell einfügen, um die Antwort zu erhalten:


<p>def get_answer(text, question):
# Tokenisieren Sie den Eingabetext und die Frage
inputs = tokenizer(question, text, return_tensors=&amp;amp;#039;pt&amp;amp;#039;, max_length=512, truncation=True)
outputs = model(**inputs)</p>

<p># Abrufen der Start- und Endpunkte für die Antwort
answer_start = torch.argmax(outputs.start_logits)
answer_end = torch.argmax(outputs.end_logits) + 1</p>

<p>answer = tokenizer.convert_tokens_to_string(tokenizer.convert_ids_to_tokens(inputs[&amp;amp;#039;input_ids&amp;amp;#039;][0][answer_start:answer_end]))
return answer</p>

In diesem Codebeispiel importieren wir die notwendigen Module aus dem transformers-Paket, laden dann ein vorgefertigtes Modell und seinen entsprechenden Tokenizer mithilfe der from_pretrained-Methode. Wir wählen ein BERT-Modell, das auf dem SQuAD-Datensatz fein abgestimmt wurde.

Lassen Sie uns ein Beispiel für die Verwendung dieser Funktion betrachten, in dem wir einen Textabschnitt und eine Frage haben und die spezifische Antwort auf die Frage aus dem Text extrahieren möchten:


<p>text = &amp;amp;amp;quot;&amp;amp;amp;quot;&amp;amp;amp;quot;
Der Eiffelturm, der sich in Paris, Frankreich, befindet, ist eines der ikonischsten Wahrzeichen der Welt. Er wurde von Gustave Eiffel entworfen und 1889 fertiggestellt. Der Turm ist 324 Meter hoch und war zum Zeitpunkt seiner Fertigstellung das höchste von Menschen erstellte Bauwerk der Welt.
&amp;amp;amp;quot;&amp;amp;amp;quot;&amp;amp;amp;quot;</p>

<p>question = &amp;amp;amp;quot;Wer hat den Eiffelturm entworfen?&amp;amp;amp;quot;</p>

<p># Abrufen der Antwort auf die Frage
answer = get_answer(text, question)
print(f&amp;amp;amp;quot;Die Antwort auf die Frage ist: {answer}&amp;amp;amp;quot;)
# Ausgabe: Die Antwort auf die Frage ist: Gustave Eiffel</p>

In diesem Skript erstellen wir eine get_answer-Funktion, die einen Text und eine Frage annimmt, den Tokenizer verwendet, um den Eingabetext und die Frage zu verarbeiten, und dann das vorgefertigte BERT-Modell nutzt, um die Antwort aus dem Text zu extrahieren. Es zeigt eine praktische Anwendung der Hugging Face-Transformator-Bibliothek, um ein einfaches, aber leistungsfähiges Fragebeantwortungssystem zu erstellen. Um die Konzepte gut zu verstehen, wird empfohlen, praktische Experimente mit einem Google Colab-Notebook durchzuführen.

Schlussfolgerung

Durch sein umfangreiches Angebot an Open-Source-Tools, vorgefertigten Modellen und benutzerfreundlichen Pipelines ermöglicht Hugging Face sowohl erfahrenen Fachleuten als auch Neulingen, sich mühelos in die weite Welt der KI zu begeben. Darüber hinaus unterstreicht die Initiative, Rust aufgrund seiner Geschwindigkeits- und Sicherheitsmerkmale zu integrieren, Hugging Faces Engagement für die Förderung von Innovation bei gleichzeitiger Gewährleistung von Effizienz und Sicherheit in KI-Anwendungen. Die bahnbrechende Arbeit von Hugging Face demokratisiert nicht nur den Zugang zu hochentwickelten KI-Tools, sondern schafft auch eine kooperative Umgebung für Lernen und Entwicklung im KI-Bereich, wodurch eine Zukunft ermöglicht wird, in der KI für alle zugänglich ist.

Ich habe die letzten fünf Jahre damit verbracht, mich in die faszinierende Welt des Machine Learning und Deep Learning zu vertiefen. Mein Engagement und meine Expertise haben mich dazu geführt, an über 50 verschiedenen Software-Entwicklungsprojekten mit einem besonderen Fokus auf AI/ML beizutragen. Meine anhaltende Neugier hat mich auch zum Bereich der Natural Language Processing hingezogen, einem Feld, das ich weiter erforschen möchte.