In diesem Artikel erfahren Sie, wie Sie lokal gehostete Sprachmodelle über Ollama verwenden, um Textklassifizierungsaufgaben durchzuführen, ohne einen Cent für API-Aufrufe auszugeben.
Zu den Themen, die wir behandeln werden, gehören:
- So installieren Sie Ollama und laden Open-Supply-Modelle wie Llama 3, Mistral und Gemma herunter, um sie lokal auf Ihrem Pc auszuführen.
- So konfigurieren Sie die Scikit-LLM-Bibliothek so, dass Anfragen an einen lokalen Ollama-Endpunkt statt an eine kostenpflichtige Cloud-API weitergeleitet werden.
- So erstellen Sie einen Zero-Shot-Textklassifizierer mithilfe eines lokalen Modells für große Sprachen und scikit-LLM in einem vertrauten Workflow im Scikit-Be taught-Stil.
Verwendung von Scikit-LLM mit Open-Supply-LLMs
Einführung
In diesem Artikel erfahren Sie, wie Sie eine Sprachaufgabe wie die Textklassifizierung durch die Integration lokal gehosteter großer Sprachmodelle (LLMs) überschaubarer Größe wie Mistral, Gemma und Llama 3 durchführen: alles kostenlos dank Ollama – ein kostenloses Repository für lokale LLMs – und das Scikit-LLM Python-Bibliothek.
Voraussetzung: Ollama installieren
Es wird empfohlen, zum Ausführen dieses Tutorials eine IDE zu verwenden, da wir von dort aus mit Ihrer lokal installierten Model von Ollama interagieren müssen. Neu in Ollama? Dann empfehle ich Ihnen, dies zu überprüfen dieser Artikel zuerst raus. Dennoch finden Sie hier eine Zusammenfassung dessen, was Sie im lokalen Befehlszeilenterminal tun müssen, um nach der Set up ein lokales LLM herunterzuladen Ollama auf Ihrem Pc.
# Pulling Llama 3 (eines der beliebtesten herunterladbaren Modelle von Ollama) olama run llama3 # Alternativ können Sie auch versuchen, Mistral zu ziehen
|
# Pulling Llama 3 (eines der beliebtesten herunterladbaren Modelle von Ollama) Ollama laufen Lama3 # Oder versuchen Sie alternativ, Mistral zu ziehen Ollama laufen Mistral # Oder, wenn Sie heute wählerisch sind, rufen Sie einfach Gemma von Google auf Ollama laufen Gemma |
Sobald Sie das Modellinteraktionsfenster im Terminal sehen, können Sie „/bye“ eingeben, damit es im Hintergrund weiterläuft und auf API-Aufrufe wartet. In der Zwischenzeit müssen in einem neu erstellten Projekt in Ihrer Python-IDE die folgenden Bibliotheken installiert sein:
pip set up scikit-learn pandas scikit-llm
|
Pip installieren Scikit–lernen Pandas Scikit–llm |
Wenn beim Ausführen des Python-Codes der Fehler „Modul nicht gefunden“ auftritt, versuchen Sie, die oben genannten Abhängigkeiten nacheinander zu installieren.
Okay! Es ist Zeit, unsere Python-Codedatei Schritt für Schritt auszufüllen (benennen Sie sie nach Ihren Wünschen!). Zuerst kommen natürlich die Importe. Einer davon ist die Klasse ZeroShotGPTClassifier. Ähnlich wie beim klassischen Scikit-Be taught handelt es sich hierbei um eine spezielle Klasse für das Coaching und die Verwendung eines Modells für die Zero-Shot-Klassifizierung: konkret ein LLM von Ollama.
Pandas als PD aus sklearn.model_selection importieren, train_test_split aus skllm.config importieren, SKLLMConfig aus skllm.fashions.gpt.classification.zero_shot importieren, ZeroShotGPTClassifier importieren
|
Import Pandas als pd aus sklearn.model_selection Import train_test_split aus skllm.config Import SKLLMConfig aus skllm.Modelle.gpt.Einstufung.null_schuss Import ZeroShotGPTClassifier |
Als nächstes müssen wir einige spezifische Konfigurationen anwenden, um mit Ollama kommunizieren zu können.
# Verwenden Sie dies, um Scikit-LLM anzuweisen, Cloud-Anfragen an Ihren standardmäßigen lokalen Ollama-Port weiterzuleiten. SKLLMConfig.set_gpt_url(„http://localhost:11434/v1“) # Scikit-LLM benötigt standardmäßig einen Schlüssel, um interne Validierungsprüfungen zu bestehen. # Da Ollama jedoch lokal und kostenlos ist, wird diese Zeichenfolge in der Praxis ignoriert. SKLLMConfig.set_openai_key(„local-ollama-is-free“)
|
# Verwenden Sie dies, um Scikit-LLM anzuweisen, Cloud-Anfragen an Ihren standardmäßigen lokalen Ollama-Port weiterzuleiten SKLLMConfig.set_gpt_url(„http://localhost:11434/v1“) # Scikit-LLM benötigt standardmäßig einen Schlüssel, um interne Validierungsprüfungen zu bestehen. # Da Ollama jedoch lokal und kostenlos ist, wird diese Zeichenfolge in der Praxis ignoriert. SKLLMConfig.set_openai_key(„local-ollama-is-free“) |
Anschließend erstellen wir einen kleinen Datensatz und bereiten ihn für die Klassifizierung vor. Da wir in diesem Tutorial nicht die Klassifizierungsleistung des Modells bewerten werden – unser Hauptziel besteht darin, zu lernen, wie man Scikit-LLM lokal mit Open-Supply-Modellen wie den über Ollama verfügbaren verwendet –, benötigen wir keine große Anzahl von Datenbeispielen.
information = { „overview“: („Das neue macOS-Replace ist fantastisch und läuft reibungslos.“, „Mein Akku ist nach dem Patch unglaublich schnell leer.“, „Ich brauche Hilfe beim Zurücksetzen meines Kontopassworts.“, „Die Anzeige auf diesem Monitor ist atemberaubend scharf.“, „Der Kundensupport hat aufgelegt, sehr enttäuschend. ), „class“: („Positives Suggestions“, „Technisches Drawback“, „Supportanfrage“, „Positives Suggestions“, „Negatives Suggestions“) ) } df = pd.DataFrame(information) X = df(„overview“) y = df(„class“) # Daten in Zug-/Testsätze aufteilen X_train,
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
Daten = { „Rezension“: ( „Das neue macOS-Replace ist fantastisch und läuft reibungslos.“, „Mein Akku entlädt sich nach dem Patch unglaublich schnell.“, „Ich brauche Hilfe beim Zurücksetzen meines Kontopassworts.“, „Die Anzeige auf diesem Monitor ist atemberaubend scharf.“, „Der Kundensupport hat aufgelegt, sehr enttäuschend.“ ), „Kategorie“: ( „Positives Suggestions“, „Technisches Drawback“, „Supportanfrage“, „Positives Suggestions“, „Negatives Suggestions“ ) } df = pd.Datenrahmen(Daten) X = df(„Rezension“) j = df(„Kategorie“) # Daten in Zug-/Testsätze aufteilen X_train, X_test, y_train, y_test = train_test_split(X, j, test_size=0,4, random_state=42) |
Der Datensatz enthält Benutzerbewertungen und die entsprechenden Kategorien, z. B. Arten von Kundenanfragen oder Suggestions. Wir haben auch wie üblich eine Schulungs-/Testaufteilung mit maschineller Lernmodellierung durchgeführt.
Im nächsten Teil des Codes fügen wir die notwendigen Anweisungen zum Initialisieren und Ausführen unseres Klassifikators hinzu, der im Kern eine aufgabenangepasste laufende Instanz eines unserer installierten Ollama-Modelle wie Llama 3 sein wird:
print(„ZeroShotGPTClassifier mit lokalem Llama 3 initialisieren…“) # Verwenden des Präfixes ‚custom_url::‘, um dem System mitzuteilen, dass es Ihren Endpunkt „set_gpt_url“ verwenden soll (siehe oben) clf = ZeroShotGPTClassifier(mannequin=“custom_url::llama3″) # Anpassen des Modells clf.match(X_train, y_train) print(„Senden von Daten an Ollama für lokale Inferenz…n“) Vorhersagen = clf.predict(X_test)
|
drucken(„ZeroShotGPTClassifier wird mit lokalem Llama 3 initialisiert …“) # Verwenden des Präfixes „custom_url::“, um dem System mitzuteilen, dass es Ihren „set_gpt_url“-Endpunkt verwenden soll (siehe oben) clf = ZeroShotGPTClassifier(Modell=„custom_url::llama3“) # Anpassen des Modells clf.match(X_train, y_train) drucken(„Daten werden zur lokalen Schlussfolgerung an Ollama gesendet…n“) Vorhersagen = clf.vorhersagen(X_test) |
Zum Abschluss drucken wir einige Ausgaben aus, die aus einigen Modellinferenzergebnissen (Klassifizierungsvorhersagen) für die beiden im Testsatz enthaltenen Beispiele bestehen. Dies ist ein sehr kleiner Datensatz, aber das Ziel hier ist es zu zeigen, wie wir es geschafft haben, Scikit-LLM mit einem lokalen, kostenlosen Ollama-Modell zu verknüpfen, um ein LLM elegant und kostenlos für eine bestimmte Aufgabe zu nutzen!
zur Überprüfung, Vorhersage in zip(X_test, Vorhersagen): print(f“Assessment Textual content: ‚{overview}'“) print(f“Predicted Tag: {prediction}“) print(„-“ * 50)
|
für Rezension, Vorhersage In Reißverschluss(X_test, Vorhersagen): drucken(F„Rezensionstext: ‚{overview}‘“) drucken(F„Vorhergesagtes Tag: {prediction}“) drucken(„-“ * 50) |
Das Ergebnis (es kann je nach Ihren Testbeispielen variieren):
Daten werden zur lokalen Schlussfolgerung an Ollama gesendet … 100%|███████████████████████████ ████████████████████████████████| 2/2 (00:12<00:00, 6,36 s/it) Rezensionstext: „Mein Akku entlädt sich nach dem Patch unglaublich schnell.“ Voraussichtlicher Tag: Supportanfrage -------------------------------------------------- Bewertungstext: „Der Kundensupport hat aufgelegt, sehr enttäuschend.“ Vorhergesagtes Tag: Supportanfrage --------------------------------------------------
|
Senden Daten Zu Ollama für lokal Schlussfolgerung... 100%|█████████████████████████████ ██████████████████████████████| 2/2 (00:12<00:00, 6,36 Sekunden/Es) Rezension Textual content: „Mein Akku entlädt sich nach dem Patch unglaublich schnell.“ Vorhergesagt Etikett: Unterstützung Anfrage ————————————————————————— Rezension Textual content: „Der Kundensupport hat aufgelegt, sehr enttäuschend.“ Vorhergesagt Etikett: Unterstützung Anfrage ————————————————————————— |
Alternativ können Sie Ihr Python-Skript auch von Ihrem Terminal aus ausführen. Zum Beispiel, wenn Sie es benannt haben local_classification.pyführen Sie diesen Befehl aus:
python local_classification.py
|
Python local_classification.py |
So oder so, wenn Sie alle Schritte befolgt haben, sollte es funktionieren. Intestine gemacht!
Zusammenfassung
In diesem Artikel wurde erläutert, wie Sie kostenlose, lokal ausgeführte Modelle, die über Ollama bereitgestellt werden, wie Llama, Mistral oder Gemma, austauschen können – alles kostenlos und in wenigen einfachen Schritten – dank der Scikit-LLM-Bibliothek von Python, die die Verwendung modernster LLMs innerhalb eines vertrauten klassischen maschinellen Lernworkflows ermöglicht.
