Connect with us

KI-Tools 101

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

mm
HUGGING FACE - COMPLETE GUIDE

Hugging Face ist ein KI-Forschungslabor und ein Zentrum, das eine Gemeinschaft von Gelehrten, Forschern und Enthusiasten aufgebaut hat. In kurzer Zeit hat Hugging Face eine erhebliche Präsenz im KI-Bereich gewonnen. Tech-Giganten wie Google, Amazon und Nvidia haben den KI-Startup Hugging Face mit erheblichen Investitionen unterstützt, was seine Bewertung auf 4,5 Milliarden Dollar bringt.

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

Transformations in NLP

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

Große Sprachmodelle oder LLMs sind KI-Systeme, die Transformations 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, das 2016 gegründet wurde, 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, die es Menschen und Organisationen ermöglichen, Transformer-Modelle zu bauen und zu verwenden. Maschinelles Lernen besteht darin, Computern Aufgaben beizubringen, indem Muster erkannt werden, während tiefes Lernen, ein Teilbereich des maschinellen Lernens, ein Netzwerk erstellt, das unabhängig lernt. Transformations sind eine Art tiefes Lernalgorithmus, der die Eingabedaten effektiv und flexibel verwendet, was sie zu einer beliebten Wahl für die Erstellung großer Sprachmodelle macht, da sie weniger Trainingszeit erfordern.

Wie Hugging Face NLP- und LLM-Projekte erleichtert

Hugging Face-Ökosystem - Modelle, Datensatz, Metriken, Transformations, Accelerate, Tokenizer

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

  1. Eine Reihe von vorgefertigten Modellen zur Auswahl bietet.
  2. Werkzeuge und Beispiele zur Feinabstimmung dieser Modelle für spezifische Bedürfnisse anbietet.
  3. Leichte Bereitstellungsoptionen für verschiedene Umgebungen bietet.

Eine großartige Ressource, die über Hugging Face verfügbar ist, ist die Open LLM Leaderboard. Als umfassende Plattform überwacht, bewertet und misst 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 zum Grundschulcurriculum.
  • HellaSwag (10-Shot) – ein Test zur Alltagsinferenz, der für Menschen einfach, aber für Spitzenmodelle eine Herausforderung darstellt.
  • MMLU (5-Shot) – eine multifacettierte Bewertung, die die Fähigkeiten eines Textmodells in 57 verschiedenen Bereichen umfasst, darunter Grundrechenarten, Recht und Informatik.
  • TruthfulQA (0-Shot) – ein Tool, um die Neigung eines Modells zu bestimmen, häufig im Internet verbreitete Fehlinformationen zu wiederholen.

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

Komponenten von Hugging Face

Pipelines

‘Strong>Pipelines’ sind Teil der Hugging Face-Transformationsbibliothek, eine Funktion, die die einfache Nutzung von vorgefertigten Modellen im Hugging Face-Repository ermöglicht. Sie bietet eine intuitive API für eine Reihe von Aufgaben, darunter Sentiment-Analyse, Fragebeantwortung, maskierte Sprachmodellierung, benannte Entitätenerkennung 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: Hier werden die tatsächlichen Vorhersagen auf der Grundlage der vorverarbeiteten Eingabe gemacht.
  3. Post-Processor: Wandelt die rohen Vorhersagen des Modells in eine für Menschen lesbare Form um.

Diese Pipelines reduzieren nicht nur den umfangreichen Code, sondern bieten auch eine benutzerfreundliche Schnittstelle, um verschiedene NLP-Aufgaben zu erledigen.

Transformer-Anwendungen mit der Hugging Face-Bibliothek

Ein Highlight der Hugging Face-Bibliothek ist die Transformers-Bibliothek, die NLP-Aufgaben vereinfacht, indem sie ein Modell mit den 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 Zentrum, das andere Pipelines umfasst und anwendungsspezifische Anwendungen in Audio-, Bild- und multimodalen Bereichen ermöglicht.

Praktische Anwendungen

Textklassifizierung

Die Textklassifizierung wird mit der pipeline()-Funktion von Hugging Face zu einem Kinderspiel. Hier erfahren Sie, wie Sie eine Textklassifizierungs-Pipeline initiieren:

classifier = pipeline("text-classification")

Für eine praktische Erfahrung können Sie einen String oder eine Liste von Strings in Ihre Pipeline einfügen, um Vorhersagen zu erhalten, die mit Pythons Pandas-Bibliothek schön visualisiert werden können. Im Folgenden finden Sie ein Python-Snippet, das dies demonstriert:

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

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

# Durchlaufen Sie jedes Ergebnis und drucken Sie das Label und den Score
for i, result in enumerate(results):
print(f"Ergebnis {i + 1}:")
print(f" Label: {result['label']}")
print(f" Score: {round(result['score'], 3)}\n")

Ausgabe

1.0
0.996

Benannte Entitätenerkennung (NER)

NER ist von entscheidender Bedeutung für die Extraktion von realen Objekten, die als “benannte Entitäten” aus dem Text bezeichnet werden. Nutzen Sie die NER-Pipeline, um diese Entitäten effektiv zu identifizieren:

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

Ausgabe

 Elon Musk: PER, SpaceX: ORG 

Fragebeantwortung

Die 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("question-answering")
text = "Hugging Face ist ein Unternehmen, das Tools für NLP erstellt. Es hat seinen Sitz in New York und wurde 2016 gegründet."
question = "Wo hat Hugging Face seinen Sitz?"
outputs = reader(question=question, context=text)
print(outputs)

Ausgabe

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

Die pipeline()-Funktion von Hugging Face bietet eine Reihe von vorgefertigten Pipelines für verschiedene Aufgaben, neben der Textklassifizierung, NER und Fragebeantwortung. Im Folgenden finden Sie Details zu einer Teilmenge der verfügbaren Aufgaben:

Tabelle: Hugging Face-Pipeline-Aufgaben

Aufgabe Beschreibung Pipeline-Bezeichner
Texterzeugung Erzeugen von Text basierend auf einem gegebenen Prompt pipeline(task=”text-generation”)
Zusammenfassung Zusammenfassung eines langen Textes oder Dokuments pipeline(task=”summarization”)
Bildklassifizierung Bild mit einer Bezeichnung versehen pipeline(task=”image-classification”)
Audio-Klassifizierung Audio-Daten klassifizieren pipeline(task=”audio-classification”)
Visuelle Fragebeantwortung Beantworten einer Frage unter Verwendung eines Bildes und einer Frage pipeline(task=”vqa”)

 

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

Warum Hugging Face den Fokus auf Rust legt

Hugging Face-Safetensors und Tokenizer Rust

Hugging Face-Safetensors und Tokenizer GitHub-Seite

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

Hugging Face hat kürzlich ein neues maschinelles Lern-Framework namens Candle veröffentlicht. Im Gegensatz zu herkömmlichen Frameworks, die Python verwenden, ist Candle mit 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 gewährleistet ist.

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 aufgrund seiner Overhead manchmal Prozesse verlangsamen kann. Dieses Framework kommt als Lösung für die mit vollständigen maschinellen Lern-Frameworks wie PyTorch verbundenen Probleme, die groß und langsam sind, wenn Instanzen in einem Cluster erstellt werden.
Lassen Sie uns erkunden, warum Rust eine bevorzugte Wahl ist, viel mehr als Python.

  1. Geschwindigkeit und Leistung – Rust ist für seine unglaubliche Geschwindigkeit bekannt, die 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 bessere Leistung in Projekten, in denen es implementiert wird, verspricht.
  2. Sicherheit – Rust bietet Speicher-Sicherheitsgarantien ohne einen Garbage Collector, was in Bereichen wie Safetensors, in denen die Sicherheit bei der Handhabung von Datenstrukturen von entscheidender Bedeutung ist, eine wichtige Rolle spielt.

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 Speicherfehler verursacht werden könnten, vermieden werden.

Tokenizer

Tokenizers behandeln die Aufteilung von Sätzen oder Phrasen in kleinere Einheiten, wie Wörter oder Begriffe. 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 eine feine Balance zwischen Wort- und Zeichenebene-Tokenisierung schafft, um die Beibehaltung von Informationen zu optimieren und die Vokabulargröße zu minimieren. Es funktioniert durch die Erstellung von Subtokens, wie “##ing” und “##ed”, die semantische Reichhaltigkeit beibehalten, während ein aufgeblähtes Vokabular vermieden wird.

Die Subword-Tokenisierung beinhaltet eine Trainingsphase, um die effektivste Balance zwischen Zeichen- und Wortebebene-Tokenisierung zu finden. 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 behandeln, indem er sie in bekannte Subwords aufteilt, wodurch ein hohes Maß an semantischer Verständlichkeit beibehalten wird.

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 betrachten:

  • Normalizer: Führt anfängliche Transformationen auf der Eingabezeichenfolge aus, wobei notwendige Anpassungen wie Konvertierung in Kleinbuchstaben, Unicode-Normalisierung und Entfernen von Leerzeichen vorgenommen werden.
  • Vor-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, indem es sich an die Besonderheiten der Eingabedaten anpasst und Trainingsfähigkeiten bietet.
  • Nachverarbeiter: Verbessert Konstruktionsmerkmale, um die Kompatibilität mit vielen transformerbasierten Modellen wie BERT zu ermöglichen, 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 anspruchsvollere Aufgaben wie Modelltraining gespart werden.
Die Tokenizers-Bibliothek verwendet Rust, das die syntaktische Ähnlichkeit mit C++ geerbt hat, während es neue Konzepte in der Programmiersprachendesign einführt. In Kombination mit Python-Bindings stellt es sicher, dass Sie die Leistung einer niedrigeren Sprache genießen, während Sie in einer Python-Umgebung arbeiten.

Datensätze

Datensätze sind die Grundlage von KI-Projekten. Hugging Face bietet eine Vielzahl von Datensätzen, die für eine Reihe von NLP-Aufgaben und mehr geeignet sind. Um sie effizient zu nutzen, ist es wichtig, den Prozess des Ladens und Analysierens zu verstehen. Im Folgenden finden Sie ein Python-Skript, das demonstriert, wie Sie Datensätze auf Hugging Face erkunden:

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

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

Nutzen von vorgefertigten Modellen und Zusammenfassung

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

from transformers import AutoModelForQuestionAnswering, AutoTokenizer

# Laden Sie das vorgefertigte Modell und den 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')

# Anzeigen der Modellarchitektur
print(model)

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


def get_answer(text, question):
# Tokenisieren Sie den Eingabetext und die Frage
inputs = tokenizer(question, text, return_tensors='pt', max_length=512, truncation=True)
outputs = model(**inputs)

# Abrufen der Start- und Endpunkte für die Antwort
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

In diesem Code importieren wir notwendige Module aus dem Transformers-Paket, laden dann ein vorgefertigtes Modell und seinen entsprechenden Tokenizer mit der from_pretrained-Methode. Wir wählen ein BERT-Modell aus, das auf dem SQuAD-Datensatz fein abgestimmt wurde.

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


text = """
Die Eiffelturm, der sich in Paris, Frankreich, befindet, ist eines der bekanntesten 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 erbaute Bauwerk der Welt.
"""

question = "Wer entwarf den Eiffelturm?"

# Abrufen der Antwort auf die Frage
answer = get_answer(text, question)
print(f"Die Antwort auf die Frage ist: {answer}")
# Ausgabe: Die Antwort auf die Frage ist: Gustave Eiffel

In diesem Skript erstellen wir eine get_answer-Funktion, die einen Text und eine Frage nimmt, sie entsprechend tokenisiert und das vorgefertigte BERT-Modell verwendet, um die Antwort aus dem Text zu extrahieren. Es demonstriert eine praktische Anwendung der Hugging Face-Transformers-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.

Zusammenfassung

Durch seine umfangreiche Palette an Open-Source-Tools, vorgefertigten Modellen und benutzerfreundlichen Pipelines ermöglicht Hugging Face es sowohl erfahrenen Profis 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 Sicherheitsfunktionen 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 hochwertigen 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 jeden 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. Meine Leidenschaft und mein Fachwissen haben mich dazu geführt, an über 50 verschiedenen Software-Entwicklungsprojekten mitzuwirken, mit einem besonderen Fokus auf KI/ML. Meine anhaltende Neugier hat mich auch zum Natural Language Processing hingezogen, ein Feld, das ich weiter erforschen möchte.