Integration von LLMs mit Scikit-Learn mithilfe von Scikit-LLMIntegration von LLMs mit Scikit-Learn mithilfe von Scikit-LLM
Bild vom Autor

Wir alle kennen das beliebte Scikit-Be taught-Paket, das in Python verfügbar ist. Das Basispaket für maschinelles Lernen wird immer noch häufig zum Erstellen von Modellen und Klassifikatoren für industrielle Anwendungsfälle verwendet. Allerdings fehlte dem Paket die Fähigkeit zum Sprachverständnis und es battle immer noch auf die TF-IDF und frequenzbasierte Methoden für Aufgaben in natürlicher Sprache angewiesen. Mit der zunehmenden Beliebtheit von LLMs ist die Scikit-LLM Die Bibliothek möchte diese Lücke schließen. Es kombiniert große Sprachmodelle, um Klassifikatoren für textbasierte Eingaben zu erstellen, wobei es dieselbe funktionale API wie die herkömmlichen Scikit-Be taught-Modelle verwendet.

In diesem Artikel erkunden wir die Scikit-LLM-Bibliothek und implementieren einen Zero-Shot-Textklassifikator für einen Demodatensatz.

Einrichtung und Set up

Das Scikit-LLM-Paket ist als PyPI-Paket verfügbar und lässt sich daher einfach mit pip installieren. Führen Sie den folgenden Befehl aus, um das Paket zu installieren.

Backend-LLM-Unterstützung
Das Scikit-LLM unterstützt derzeit API-Integrationen und lokal unterstützte große Sprachmodelle. Wir können auch benutzerdefinierte APIs integrieren, die vor Ort oder auf Cloud-Plattformen gehostet werden. In den nächsten Abschnitten erfahren Sie, wie Sie die einzelnen Elemente einrichten.

&nbsp

OpenAI

Die GPT-Modelle sind die am weitesten verbreiteten Sprachmodelle weltweit und verfügen über zahlreiche darauf aufbauende Anwendungen. Um ein OpenAI-Modell mit dem Scikit-LLM-Paket einzurichten, müssen wir die API-Anmeldeinformationen konfigurieren und den Modellnamen festlegen, den wir verwenden möchten.

from skllm.config import SKLLMConfig

SKLLMConfig.set_openai_key("")
SKLLMConfig.set_openai_org("")

Sobald die API-Anmeldeinformationen konfiguriert sind, können wir den Zero-Shot-Klassifikator aus dem Scikit-LLM-Paket verwenden, der standardmäßig das OpenAI-Modell verwendet.

from skllm.fashions.gpt.classification.zero_shot import ZeroShotGPTClassifier
clf = ZeroShotGPTClassifier(mannequin="gpt-4")

&nbsp

LlamaCPP- und GGUF-Modelle

Obwohl OpenAI sehr beliebt ist, kann seine Verwendung in manchen Fällen teuer und unpraktisch sein. Daher bietet das Scikit-LLM-Paket integrierte Unterstützung für die lokale Ausführung quantisierter GGUF- oder GGML-Modelle. Wir müssen unterstützende Pakete installieren, die bei der Verwendung des llama-cpp-Pakets zum Ausführen der Sprachmodelle helfen.

Führen Sie die folgenden Befehle aus, um die erforderlichen Pakete zu installieren:

pip set up 'scikit-llm(gguf)' --extra-index-url https://abetlen.github.io/llama-cpp-python/whl/cpu --no-cache-dir
pip set up 'scikit-llm(llama-cpp)'

Jetzt können wir dasselbe Zero-Shot-Klassifikatormodell von Scikit-LLM verwenden, um GGUF-Modelle zu laden. Beachten Sie, dass derzeit nur wenige Modelle unterstützt werden. Hier finden Sie die Liste der unterstützten Modelle Hier.

Für unseren Zweck verwenden wir die GGUF-quantisierte Model von Gemma-2B. Die allgemeine Syntax folgt gguf:: um ein gguf-quantisiertes Modell in Scikit-LLM zu laden.

Verwenden Sie den folgenden Code, um das Modell zu laden:

from skllm.fashions.gpt.classification.zero_shot import ZeroShotGPTClassifier
clf = ZeroShotGPTClassifier(mannequin="gguf::gemma2-2b-q6")

&nbsp

Externe Modelle

Schließlich können wir selbst gehostete Modelle verwenden, die dem OpenAI-API-Normal folgen. Es kann lokal ausgeführt oder in der Cloud gehostet werden. Wir müssen lediglich die API-URL für das Modell angeben.

Laden Sie das Modell mit dem angegebenen Code von einer benutzerdefinierten URL:

from skllm.config import SKLLMConfig
SKLLMConfig.set_gpt_url("http://localhost:8000/")
clf = ZeroShotGPTClassifier(mannequin="custom_url::")

Modell und Inferenz mit der Fundamental Scikit-Be taught API

Wir können das Modell jetzt mithilfe der Scikit-Be taught-API anhand eines Klassifizierungsdatensatzes trainieren. Wir werden eine grundlegende Implementierung anhand eines Demodatensatzes von Stimmungsvorhersagen zu Filmkritiken sehen.

&nbsp

Datensatz

Der Datensatz wird vom scikit-llm-Paket bereitgestellt. Es enthält 100 Beispiele von Filmkritiken und die dazugehörigen Bezeichnungen als constructive, neutrale oder unfavorable Stimmung. Wir werden den Datensatz laden und ihn für unsere Demo in Trainings- und Testdatensätze aufteilen.

Wir können die herkömmlichen Scikit-Be taught-Methoden verwenden, um den Datensatz zu laden und aufzuteilen.

from skllm.datasets import get_classification_dataset
X, y = get_classification_dataset()
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=42)

Anpassen und vorhersagen

Das Coaching und die Vorhersage mithilfe des großen Sprachmodells folgen derselben Scikit-Be taught-API. Zuerst passen wir das Modell an unseren Trainingsdatensatz an und können es dann verwenden, um Vorhersagen zu ungesehenen Testdaten zu treffen.

clf.match(X_train, y_train)
predictions = clf.predict(X_test)

Auf dem Testset erhalten wir 100 % Genauigkeit mit dem Gemma2-2B-Modell da es sich um einen relativ einfachen Datensatz handelt.

Beispiele finden Sie in den folgenden Beispielen für Testmuster:

Pattern Assessment: "Below the Similar Sky was an okay film. The plot was respectable, and the performances have been fantastic, but it surely lacked depth and originality. It isn't a film I might watch once more."
Predicted Sentiment: ('impartial')

Pattern Assessment: "The cinematography in Awakening was nothing wanting spectacular. The visuals alone are well worth the ticket worth. The storyline was distinctive and the performances have been strong. An general improbable movie."
Predicted Sentiment: ('constructive')

Pattern Assessment: "I discovered Hole Echoes to be an entire mess. The plot was non-existent, the performances have been overdone, and the pacing was all over. Not well worth the hype."
Predicted Sentiment: ('unfavorable')

Zusammenfassung

Das scikit-llm-Paket erfreut sich aufgrund seiner vertrauten API immer größerer Beliebtheit und lässt sich leicht in bestehende Pipelines integrieren. Es bietet verbesserte Antworten für textbasierte Modelle und verbessert die ursprünglich verwendeten grundlegenden frequenzbasierten Methoden. Durch die Integration von Sprachmodellen werden Argumente und Verständnis für die Texteingabe hinzugefügt, was die Leistung von Standardmodellen steigern kann.

Darüber hinaus bietet es Optionen zum Trainieren von Wenig-Schuss- und Gedankenketten-Klassifikatoren neben anderen Textmodellierungsaufgaben wie der Zusammenfassung. Entdecken Sie das auf der offiziellen Web site verfügbare Paket und die Dokumentation, um herauszufinden, was für Ihren Zweck geeignet ist.

Kanwal Mehreen Kanwal ist Ingenieur für maschinelles Lernen und technischer Redakteur mit einer großen Leidenschaft für Datenwissenschaft und die Schnittstelle zwischen KI und Medizin. Sie ist Mitautorin des E-Books „Maximizing Productiveness with ChatGPT“. Als Google Technology Scholar 2022 für APAC setzt sie sich für Vielfalt und akademische Exzellenz ein. Sie ist außerdem als Teradata Variety in Tech Scholar, Mitacs Globalink Analysis Scholar und Harvard WeCode Scholar anerkannt. Kanwal ist ein leidenschaftlicher Verfechter von Veränderungen und hat FEMCodes gegründet, um Frauen in MINT-Bereichen zu stärken.

Unsere High 3 Partnerempfehlungen

1. Bestes VPN für Ingenieure – 3 Monate kostenlos – Bleiben Sie on-line sicher mit einer kostenlosen Testversion

2. Bestes Projektmanagement-Device für Tech-Groups – Steigern Sie noch heute die Effizienz Ihres Groups

4. Bestes Passwortverwaltungstool für Tech-Groups – Zero-Belief- und Zero-Information-Sicherheit

Von admin

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert