Verwendung von Llamafiles zur Vereinfachung der LLM-Ausführung

Verwendung von Llamafiles zur Vereinfachung der LLM-Ausführung

Quellknoten: 3068075

Einleitung

Das Ausführen großer Sprachmodelle war schon immer ein langwieriger Prozess. Man muss eine Reihe von Drittanbietersoftware herunterladen, um diese LLMs zu laden, oder Python herunterladen und eine Umgebung erstellen, indem man viele Pytorch- und HuggingFace-Bibliotheken herunterlädt. Beim Pythonic-Ansatz muss man Code schreiben, um das Modell herunterzuladen und auszuführen. In diesem Leitfaden wird ein einfacherer Ansatz für die Ausführung dieser LLMs beschrieben.

Lernziele

  • Verstehen Sie die Herausforderungen der traditionellen LLM-Ausführung
  • Erfassen Sie das innovative Konzept von Llamafiles
  • Erfahren Sie, wie Sie ganz einfach Ihre eigenen ausführbaren Llamafile-Dateien herunterladen und ausführen
  • Lernen, Llamfiles aus quantisierten LLMs zu erstellen
  • Identifizieren Sie die Einschränkungen dieses Ansatzes

Dieser Artikel wurde als Teil des veröffentlicht Data Science-Blogathon.

Inhaltsverzeichnis

Probleme mit großen Sprachmodellen

Large Language Models (LLMs) haben die Art und Weise revolutioniert, wie wir mit Computern interagieren, Texte generieren, Sprachen übersetzen, verschiedene Arten kreativer Inhalte schreiben und sogar Ihre Fragen auf informative Weise beantworten. Allerdings war die Ausführung dieser leistungsstarken Modelle auf Ihrem Computer oft eine Herausforderung.

Um die LLMs auszuführen, müssen wir Python und viele KI-Abhängigkeiten herunterladen und darüber hinaus sogar Code schreiben, um sie herunterzuladen und auszuführen. Selbst bei der Installation der gebrauchsfertigen Benutzeroberflächen für große Sprachmodelle sind viele Setups erforderlich, die leicht schief gehen können. Sie wie eine ausführbare Datei zu installieren und auszuführen, war kein einfacher Vorgang.

Was sind Lamafiles?

Llamafiles werden so erstellt, dass sie problemlos mit beliebten Open-Source-Modellen für große Sprachen funktionieren. Dabei handelt es sich um ausführbare Einzeldateidateien. Es ist so, als würde man ein LLM herunterladen und es wie eine ausführbare Datei ausführen. Eine Erstinstallation von Bibliotheken ist nicht erforderlich. Möglich wurde dies alles durch llama.cpp und die cosmopolitan libc, die dafür sorgt, dass die LLMs auf unterschiedlichen Betriebssystemen laufen.

Die Datei „llama.cpp“ wurde von Georgi Gerganov entwickelt, um große Sprachmodelle im quantisierten Format auszuführen, damit sie auf einer CPU ausgeführt werden können. Die llama.cpp ist eine C-Bibliothek, mit der wir quantisierte LLMs auf Consumer-Hardware ausführen können. Andererseits ist die kosmopolitische libc eine weitere C-Bibliothek, die eine Binärdatei erstellt, die auf jedem Betriebssystem (Windows, Mac, Ubuntu) ausgeführt werden kann, ohne dass ein Interpreter erforderlich ist. Die Llamafile baut also auf diesen Bibliotheken auf und ermöglicht so die Erstellung von ausführbaren Einzeldatei-LLMs

Die verfügbaren Modelle liegen im quantisierten GGUF-Format vor. GGUF ist ein Dateiformat für Large Language Models, das von Georgi Gerganov, dem Erfinder von llama.cpp, entwickelt wurde. GGUF ist ein Format zum effektiven und effizienten Speichern, Teilen und Laden großer Sprachmodelle auf CPUs und GPUs. Der GGUF verwendet eine Quantisierungstechnik, um die Modelle von ihrem ursprünglichen 16-Bit-Gleitkommaformat in ein 4-Bit- oder 8-Bit-Ganzzahlformat zu komprimieren. Die Gewichte dieses quantisierten Modells können in diesem GGUF-Format gespeichert werden

Dies erleichtert die Ausführung von 7 Billion Parameter-Modellen auf einem Computer mit 16 GB VRAM. Wir können die Large Language Models ausführen, ohne dass eine GPU erforderlich ist (obwohl Llamafile es uns sogar ermöglicht, die LLMs auf einer GPU auszuführen). Derzeit stehen die Lamadateien beliebter Open-Source-Großsprachenmodelle wie LlaVa, Mistral und WizardCoder zum Herunterladen und Ausführen zur Verfügung

One-Shot-ausführbare Dateien

In diesem Abschnitt werden wir eine multimodale LlaVa-Llamadatei herunterladen und versuchen, sie auszuführen. Hier werden wir nicht mit der GPU arbeiten und das Modell auf der CPU ausführen. Gehen Sie zum offiziellen Llamafile GitHub Repository, indem Sie auf klicken hier und Herunterladen des LlaVa 1.5-Modells.

One-Shot-ausführbare Dateien | Lamafiles

Laden Sie das Modell herunter

Das Bild oben zeigt alle verfügbaren Modelle mit ihren Namen, Größen und herunterladbaren Links. Das LlaVa 1.5 ist nur etwa 4 GB groß und ein leistungsstarkes Multimodell, das Bilder verstehen kann. Das heruntergeladene Modell ist ein 7-Milliarden-Parameter-Modell, das auf 4 Bit quantisiert ist. Wechseln Sie nach dem Herunterladen des Modells zu dem Ordner, in den es heruntergeladen wurde.

"

Öffnen Sie dann das CMD, navigieren Sie zu dem Ordner, in den dieses Modell heruntergeladen wird, geben Sie den Namen der heruntergeladenen Datei ein und drücken Sie die Eingabetaste.

llava-v1.5-7b-q4.llamafile
"

Für Mac- und Linux-Benutzer

Für Mac und Linux ist die Ausführungsberechtigung für diese Datei standardmäßig deaktiviert. Daher müssen wir die Ausführungsberechtigung für die Lamadatei erteilen, was wir tun können, indem wir den folgenden Befehl ausführen.

chmod +x llava-v1.5-7b-q4.llamafile

Hiermit wird die Ausführungsberechtigung für die Datei llava-v1.5-7b-q4.llama aktiviert. Fügen Sie außerdem „./“ vor dem Dateinamen hinzu, um die Datei auf Mac und Linux auszuführen. Nachdem Sie das Schlüsselwort Enter gedrückt haben, wird das Modell in den System-RAM verschoben und zeigt die folgende Ausgabe an.

Für Mac- und Linux-Benutzer | Lamafiles

Dann öffnet sich der Browser und das Modell wird unter der URL http://127.0.0.1:8080/ ausgeführt.

"
"

Das Bild oben zeigt die Standard-Eingabeaufforderung, den Benutzernamen, den LLM-Namen, die Eingabeaufforderungsvorlage und die Chat-Verlaufsvorlage. Diese können konfiguriert werden, aber vorerst bleiben wir bei den Standardwerten.

Unten können wir sogar die konfigurierbaren LLM-Hyperparameter wie Top P, Top K, Temperatur und andere überprüfen. Auch diese werden wir vorerst als Standard belassen. Geben wir nun etwas ein und klicken auf Senden.

"

Auf dem Bild oben können wir sehen, dass wir eine Nachricht eingegeben und sogar eine Antwort erhalten haben. Darunter können wir überprüfen, dass wir etwa 6 Token pro Sekunde erhalten, was ein guter Token pro Sekunde ist, wenn man bedenkt, dass wir es vollständig auf der CPU ausführen. Versuchen wir es dieses Mal mit einem Bild.

CPU | TinyLlama

Obwohl es nicht zu 100 % stimmte, konnte das Modell die meisten Dinge auf dem Bild fast richtig hinbekommen. Lassen Sie uns nun ein mehrstufiges Gespräch mit LlaVa führen, um zu testen, ob es sich an den Chatverlauf erinnert.

Auf dem Bild oben können wir sehen, dass LlaVa LLM die Convo gut mithalten konnte. Es könnte die Verlaufskonversation aufnehmen und dann die Antworten generieren. Obwohl die zuletzt generierte Antwort nicht ganz wahr ist, wurde die vorherige Konvo gesammelt, um sie zu generieren. Auf diese Weise können wir eine Lama-Datei herunterladen und sie einfach wie Software ausführen und mit den heruntergeladenen Modellen arbeiten.

Lamadateien erstellen

Wir haben eine Demo von Llamafile gesehen, die bereits auf dem offiziellen GitHub vorhanden war. Oftmals wollen wir mit diesen Modellen nicht arbeiten. Stattdessen möchten wir einzelne ausführbare Dateien unserer großen Sprachmodelle erstellen. In diesem Abschnitt werden wir den Prozess der Erstellung einzelner ausführbarer Dateien, dh Lama-Dateien aus quantisierten LLMs, durchgehen.

Wählen Sie ein LLM aus

Wir beginnen zunächst mit der Auswahl eines großen Sprachmodells. Für diese Demo wählen wir eine quantisierte Version von TinyLlama. Hier laden wir das 8-Bit-quantisierte GGUF-Modell von TinyLlama herunter (Sie können klicken hier um zu HuggingFace zu gehen und das Modell herunterzuladen)

TinyLlama

Laden Sie die neueste Lamadatei herunter

Die neueste Lamafile-ZIP-Datei kann über den offiziellen GitHub-Link heruntergeladen werden. Laden Sie außerdem die Zip-Datei herunter und extrahieren Sie die Zip-Datei. Die aktuelle Version dieses Artikels ist Lama-Datei-0.6. Nach dem Extrahieren von Lama enthält der Bin-Ordner mit dem Dateiordner die Dateien wie im Bild unten.

"

Verschieben Sie nun das heruntergeladene quantisierte 8-Bit-Modell von TinyLlama in diesen bin-Ordner. Um die ausführbaren Einzeldateidateien zu erstellen, müssen wir eine .args-Datei im bin-Ordner von llamafile erstellen. Zu dieser Datei müssen wir den folgenden Inhalt hinzufügen:

-m
tinyllama-1.1b-chat-v0.3.Q8_0.gguf
--host
0.0.0.0
...
  • Die erste Zeile gibt das Flag -m an. Dies teilt der Lamadatei mit, dass wir die Gewichte eines Modells laden.
  • In der zweiten Zeile geben wir den Modellnamen an, den wir heruntergeladen haben, der sich im selben Verzeichnis befindet, in dem sich die .args-Datei befindet, also im bin-Ordner der Lamadatei.
  • In der dritten Zeile fügen wir das Host-Flag hinzu, das angibt, dass wir die ausführbare Datei ausführen und sie auf einem Webserver hosten möchten.
  • Schließlich erwähnen wir in der letzten Zeile die Adresse, an der wir hosten möchten, die „localhost“ entspricht. Darauf folgen die drei Punkte, die angeben, dass wir Argumente an unsere Lamadatei übergeben können, sobald sie erstellt wurde.
  • Fügen Sie diese Zeilen zur .args-Datei hinzu und speichern Sie sie.

Für Windows-Anwender

Nun ist der nächste Schritt für die Windows-Benutzer. Wenn wir unter Windows arbeiten, mussten wir Linux über die WSL installiert haben. Wenn nicht, klicken Sie hier um die Schritte zur Installation von Linux über die WSL durchzugehen. Unter Mac und Linux sind keine zusätzlichen Schritte erforderlich. Öffnen Sie nun den bin-Ordner des llamafile-Ordners im Terminal (wenn Sie unter Windows arbeiten, öffnen Sie dieses Verzeichnis in der WSL) und geben Sie die folgenden Befehle ein.

cp llamafile tinyllama-1.1b-chat-v0.3.Q8_0.llamafile

Hier erstellen wir eine neue Datei namens tinyllama-1.1b-chat-v0.3.Q3_0.llamafile; Das heißt, wir erstellen eine Datei mit der Erweiterung .llamafile und verschieben die Datei llamafile in diese neue Datei. Anschließend geben wir den nächsten Befehl ein.

./zipalign -j0 tinyllama-1.1b-chat-v0.3.Q8_0.llamafile tinyllama-1.1b-chat-v0.3.Q8_0.gguf .args

Hier arbeiten wir mit der Zipalign-Datei, die wir erhalten haben, als wir die Lamafile-Zip-Datei von GitHub heruntergeladen haben. Wir arbeiten mit diesem Befehl, um die Lamadatei für unser quantisiertes TinyLlama zu erstellen. An diesen Zipalign-Befehl übergeben wir die Datei tinyllama-1.1b-chat-v0.3.Q8_0.llama, die wir im vorherigen Schritt erstellt haben, und übergeben dann die Datei tinyllama-1.1b-chat-v0.3.Q8_0.llama Modell, das wir im Ordner „bin“ haben, und übergeben schließlich die .args-Datei, die wir zuvor erstellt haben.

Dadurch wird schließlich unsere einzelne ausführbare Datei tinyllama-1.1b-chat-v0.3.Q8_0.llamafile erstellt. Um sicherzustellen, dass wir auf dem gleichen Stand sind, enthält der bin-Ordner jetzt die folgenden Dateien.

Ausführbare Dateien | Lamafiles

Jetzt können wir die Datei tinyllama-1.1b-chat-v0.3.Q8_0.llama auf die gleiche Weise wie zuvor ausführen. Unter Windows können Sie die .llama-Datei sogar in .exe umbenennen und durch Doppelklicken ausführen.

OpenAI-kompatibler Server

In diesem Abschnitt wird erläutert, wie LLMs über die Llamfile-Datei verwaltet werden. Wir haben festgestellt, dass beim Ausführen der Lama-Datei der Browser geöffnet wird und wir über die WebUI mit LLM interagieren können. Dies ist im Grunde das, was wir als Hosting des Large Language Model bezeichnen.

Sobald wir das Llamafile ausführen, können wir mit dem jeweiligen LLM als Endpunkt interagieren, da das Modell auf dem lokalen Host am PORT 8080 bereitgestellt wird. Der Server folgt dem OpenAI API-Protokoll, also ähnlich dem OpenAI GPT-Endpunkt, und macht somit Es ist einfach, zwischen dem OpenAI-GPT-Modell und dem mit Llamafile ausgeführten LLM zu wechseln.

Hier führen wir die zuvor erstellte TinyLlama-Lamadatei aus. Dies muss nun auf localhost 8080 ausgeführt werden. Wir werden es jetzt über die OpenAI-API selbst in Python testen

from openai import OpenAI
client = OpenAI(
    base_url="http://localhost:8080/v1", 
    api_key = "sk-no-key-required"
)
completion = client.chat.completions.create(
    model="TinyLlama",
    messages=[
        {"role": "system", "content": "You are a usefull AI 
        Assistant who helps answering user questions"},
        {"role": "user", "content": "Distance between earth to moon?"}
    ]
)
print(completion.choices[0].message.content)
  • Hier arbeiten wir mit der OpenAI-Bibliothek. Aber anstatt den OpenAI-Endpunkt anzugeben, geben wir die URL an, unter der unser TinyLlama gehostet wird, und geben die an „sk-no-token-required“ für den api_key
  • Anschließend wird der Client mit unserem TinyLlama-Endpunkt verbunden
  • Jetzt können wir, ähnlich wie wir mit OpenAI arbeiten, den Code verwenden, um mit unserem TinyLlama zu chatten.
  • Dafür arbeiten wir mit der Abschlüsse Klasse der OpenAI. Wir schaffen Neues Abschlüsse an. Nach der Installation können Sie HEIC-Dateien mit der .erstellen() Objekt und übergeben Sie die Details wie den Modellnamen und die Nachrichten.
  • Die Nachrichten haben die Form einer Liste von Wörterbüchern, wobei wir die Rolle haben, die System, Benutzer oder Assistent sein kann, und wir den Inhalt haben.
  • Schließlich können wir die durch die obige print-Anweisung generierten Informationen abrufen.

Die Ausgabe für das Obige ist unten zu sehen.

Lamadateien | Ausgabe

Auf diese Weise können wir die Lamadateien nutzen und die OpenAI-API problemlos durch die Lamadatei ersetzen, die wir ausführen möchten.

Einschränkungen bei Lamafiles

Lamafiles sind zwar revolutionär, befinden sich aber noch in der Entwicklung. Zu den Einschränkungen gehören:

  • Eingeschränkte Modellauswahl: Derzeit sind nicht alle LLMs in Form von Lamafiles verfügbar. Die aktuelle Auswahl an vorgefertigten Llamafiles wächst immer noch. Derzeit sind Llamafiles für Llama 2, LlaVa, Mistral und Wizard Coder verfügbar.
  • Hardwareanforderungen: Das Ausführen von LLMs, selbst über Llamafiles, erfordert immer noch viele Rechenressourcen. Obwohl sie einfacher auszuführen sind als herkömmliche Methoden, benötigen ältere oder leistungsschwächere Computer möglicherweise Hilfe, damit sie reibungslos funktionieren.
  • Sicherheitsbedenken: Das Herunterladen und Ausführen ausführbarer Dateien aus nicht vertrauenswürdigen Quellen birgt Risiken. Es muss also eine vertrauenswürdige Plattform geben, auf der wir diese Lamadateien herunterladen können.

Lamafiles gegen den Rest

Vor Llamafiles gab es verschiedene Möglichkeiten, große Sprachmodelle auszuführen. Einer war durch den llama_cpp_python. Dies ist die Python-Version von llama.cpp, mit der wir quantisierte Large Language Models auf Consumer-Hardware wie Laptops und Desktop-PCs ausführen können. Aber um es auszuführen, müssen wir Python und sogar Deep-Learning-Bibliotheken wie Torch, Huggingface, Transformers und viele mehr herunterladen und installieren. Danach mussten viele Codezeilen geschrieben werden, um das Modell auszuführen.

Selbst dann kann es manchmal zu Problemen aufgrund von Abhängigkeitsproblemen kommen (das heißt, einige Bibliotheken haben niedrigere oder höhere Versionen als nötig). Und es gibt auch die CTransformers Bibliothek, mit der wir quantisierte LLMs ausführen können. Auch hierfür ist derselbe Prozess erforderlich, den wir für llama_cpp_python besprochen haben

Und dann ist da noch etwas Ollama. Ollama ist in der KI-Community aufgrund seiner Benutzerfreundlichkeit beim einfachen Laden und Ausführen großer Sprachmodelle, insbesondere der quantisierten, äußerst erfolgreich. Ollama ist eine Art TUI (Terminal User Interface) für LLMs. Der einzige Unterschied zwischen dem Ollama und dem Llamafile besteht in der Teilbarkeit. Das heißt, wenn ich möchte, kann ich meine model.llama-Datei mit jedem teilen und er kann sie ausführen, ohne zusätzliche Software herunterladen zu müssen. Aber im Fall von Ollama muss ich die Datei model.gguf freigeben, die die andere Person nur ausführen kann, wenn sie die Ollama-Software oder über die oben genannten Python-Bibliotheken installiert.

In Bezug auf die Ressourcen benötigen alle die gleiche Menge an Ressourcen, da alle diese Methoden die darunter liegende Datei „llama.cpp“ verwenden, um die quantisierten Modelle auszuführen. Es geht nur um die Benutzerfreundlichkeit, bei denen es Unterschiede gibt.

Zusammenfassung

Lamafiles stellen einen entscheidenden Schritt vorwärts dar, um LLMs leicht lauffähig zu machen. Ihre Benutzerfreundlichkeit und Portabilität eröffnen eine Welt voller Möglichkeiten für Entwickler, Forscher und Gelegenheitsbenutzer. Obwohl es Einschränkungen gibt, ist das Potenzial von Lamafiles zur Demokratisierung des LLM-Zugriffs offensichtlich. Egal, ob Sie ein erfahrener Entwickler oder ein neugieriger Neuling sind, Llamafiles eröffnet spannende Möglichkeiten, die Welt der LLMs zu erkunden. In diesem Leitfaden haben wir einen Blick darauf geworfen, wie man Llamafiles herunterlädt und sogar wie man mit unseren quantisierten Modellen eigene Llamafiles erstellt . Wir haben uns sogar den OpenAI-kompatiblen Server angesehen, der beim Ausführen von Llamafiles erstellt wird.

Key Take Away

  • Lamafiles sind ausführbare Einzeldateidateien, die die Ausführung großer Sprachmodelle (LLMs) einfacher und leichter verfügbar machen.
  • Sie machen komplexe Setups und Konfigurationen überflüssig und ermöglichen Benutzern das direkte Herunterladen und Ausführen von LLMs ohne Python- oder GPU-Anforderungen.
  • Llamafiles sind derzeit für eine begrenzte Auswahl an Open-Source-LLMs verfügbar, darunter LlaVa, Mistral und WizardCoder.
  • Llamafiles sind zwar praktisch, weisen jedoch dennoch Einschränkungen auf, wie z. B. die Hardwareanforderungen und Sicherheitsbedenken, die mit dem Herunterladen ausführbarer Dateien aus nicht vertrauenswürdigen Quellen verbunden sind.
  • Trotz dieser Einschränkungen stellt Llamafiles einen wichtigen Schritt zur Demokratisierung des LLM-Zugriffs für Entwickler, Forscher und sogar Gelegenheitsbenutzer dar.

Häufig gestellte Fragen

Q1. Welche Vorteile bietet die Verwendung von Llamafiles?

A: Llamafiles bieten mehrere Vorteile gegenüber herkömmlichen LLM-Konfigurationsmethoden. Sie machen die Einrichtung und Ausführung von LLMs einfacher und schneller, da Sie weder Python installieren noch über eine GPU verfügen müssen. Dadurch werden LLMs einem breiteren Publikum leichter zugänglich. Darüber hinaus können Llamafiles auf verschiedenen Betriebssystemen ausgeführt werden.

Q2. Welche Einschränkungen gibt es bei Llamafiles?

A. Während Llamafiles viele Vorteile bieten, weisen sie auch einige Einschränkungen auf. Die Auswahl an LLMs, die in Llamafiles verfügbar sind, ist im Vergleich zu herkömmlichen Methoden begrenzt. Darüber hinaus erfordert die Ausführung von LLMs über Llamafiles immer noch eine beträchtliche Menge an Hardwareressourcen, und ältere oder weniger leistungsstarke Computer unterstützen dies möglicherweise nicht. Schließlich sind Sicherheitsbedenken mit dem Herunterladen und Ausführen ausführbarer Dateien aus nicht vertrauenswürdigen Quellen verbunden.

Q3. Wie kann ich mit Llamafiles beginnen?

A. Um mit Llamafiles zu beginnen, können Sie das offizielle Llamafile-GitHub-Repository besuchen. Dort können Sie die Llamafile für das LLM-Modell herunterladen, das Sie verwenden möchten. Sobald Sie die Datei heruntergeladen haben, können Sie sie direkt wie eine ausführbare Datei ausführen.

Q4. Kann ich mein eigenes LLM-Modell mit Llamafiles verwenden?

A. Nein. Derzeit unterstützt Llamafiles nur bestimmte vorgefertigte Modelle. Für zukünftige Versionen ist die Erstellung eigener Lamafiles geplant.

F5. Wie sind die Aussichten von Llamafiles?

A: Die Entwickler von Llamafiles arbeiten daran, die Auswahl verfügbarer LLM-Modelle zu erweitern, sie effizienter auszuführen und Sicherheitsmaßnahmen zu implementieren. Diese Fortschritte zielen darauf ab, Llamafiles für mehr Menschen mit wenig technischem Hintergrund noch verfügbarer und sicherer zu machen.

Die in diesem Artikel gezeigten Medien sind nicht Eigentum von Analytics Vidhya und werden nach Ermessen des Autors verwendet.

Zeitstempel:

Mehr von Analytics-Vidhya