- llamafile ist ein Mozilla-Builders-Projekt, das die Bereitstellung und Ausführung von LLMs auf eine einzelne ausführbare Datei reduziert, sodass sie sich ohne Installation lokal auf den meisten Betriebssystemen und CPU-Architekturen ausführen lassen
- Die Implementierung kombiniert llama.cpp mit Cosmopolitan Libc und kapselt die Komplexität der LLM-Ausführung in einer einzigen ausführbaren „llamafile“-Datei; Mozilla.ai hat das Projekt überarbeitet
- Das mitgelieferte whisperfile ist ein Einzeldatei-Sprach-zu-Text-Tool auf Basis von whisper.cpp mit demselben Cosmopolitan-Paketierungsansatz und unterstützt die Transkription und Übersetzung von Audiodateien
- Seit v0.10.0 wird ein neues Build-System verwendet, um leichter mit den neuesten Versionen von llama.cpp Schritt zu halten; dadurch werden neuere Modelle und Funktionen unterstützt, auch wenn einige vertraute Funktionen aus früheren Versionen fehlen könnten
- Unter Windows muss vor der Ausführung die Erweiterung
.exe hinzugefügt werden, und ausführbare Dateien über 4 GB können unter Windows nicht ausgeführt werden, sodass ein separates llamafile-Binary und externe GGUF-Gewichte/Modelle nötig sind
LLMs als einzelne Datei ausführen
- llamafile ist ein Projekt, mit dem sich LLMs als eine einzige Datei bereitstellen und ausführen lassen
- Das Ziel ist, die Zugänglichkeit offener LLMs sowohl für Entwickler als auch für Endnutzer zu erhöhen
- Es kombiniert llama.cpp und Cosmopolitan Libc zu einem Framework
- Das Ergebnis ist eine einzelne ausführbare Datei namens „llamafile“, die lokal ohne Installation läuft
- Unterstützt werden die meisten Betriebssysteme und CPU-Architekturen
Überarbeitung durch Mozilla.ai und verwandte Projekte
- llamafile ist ein Projekt von Mozilla Builders und wird derzeit von Mozilla.ai überarbeitet
- Die Projektvorstellung ist im announcement blog post verlinkt
- Gesucht wird Feedback dazu, was Nutzer daran besonders wertvoll finden und was es noch nützlicher machen würde
whisperfile enthalten
- whisperfile ist ein in llamafile enthaltenes Einzeldatei-Sprach-zu-Text-Tool
- Es basiert auf derselben Cosmopolitan-Paketierung wie whisper.cpp
- Es unterstützt die Transkription und Übersetzung von Audiodateien
- Es lässt sich auf derselben Plattformbreite wie llamafile ohne Installation verwenden
- Die Dokumentation steht unter Whisperfile
Änderungen am Build-System in v0.10.x
- Ab 0.10.0 verwendet llamafile ein neues Build-System
- Das Ziel des neuen Build-Systems ist es, den Code leichter an die neuesten Versionen von llama.cpp anzupassen
- Diese Änderung bringt Unterstützung für neuere Modelle und Funktionen
- Gleichzeitig könnten einige Funktionen fehlen, an die Nutzer aus früheren Versionen gewöhnt waren
- Eine allgemeine Beschreibung der Änderungen steht in README_0.10.0.md
- Nutzer, die die „classic experience“ bevorzugen, können auf der releases-Seite auf frühere Versionen zugreifen
- Vorgefertigte llamafiles zeigen an, mit welcher Server-Version sie gebündelt wurden
Schnellstart und Windows-Beschränkungen
- Das Beispielmodell ist Qwen3.5 0.8B, und die README zeigt einen Ablauf zum Herunterladen und Ausführen in wenigen Minuten
curl -LO https://huggingface.co/mozilla-ai/llamafile_0.10/…
chmod +x Qwen3.5-0.8B-Q8_0.llamafile
./Qwen3.5-0.8B-Q8_0.llamafile
- Dieses Modell wurde ausgewählt, weil es das kleinste vom Projekt als llamafile gebaute Modell ist und daher mit hoher Wahrscheinlichkeit sofort funktioniert
- Wer leistungsfähigere Hardware oder eine GPU hat, kann größere und ausdrucksstärkere Modelle wählen, die genauere Antworten liefern können
- Windows-Nutzer müssen vor der Ausführung die Erweiterung
.exe zum Dateinamen hinzufügen
- Unter Windows sind nur ausführbare Dateien unter 4 GB lauffähig
Dokumentation und Lizenz
- Die vollständige Dokumentation steht unter docs.mozilla.ai/llamafile
- Wichtige Dokumentationspunkte:
- Das llamafile-Projekt steht unter der Apache-2.0-Lizenz
- Änderungen an llama.cpp und whisper.cpp stehen unter derselben MIT-Lizenz wie die ursprünglichen Projekte, um die Möglichkeit einer späteren Übernahme ins Upstream-Projekt offenzuhalten
1 Kommentare
Meinungen auf Hacker News
Am besten scheint es, das mit einem Text+Bild-Modell wie LLaVA auszuprobieren. Die Anleitung ist für macOS, dürfte aber auf anderen Plattformen ähnlich funktionieren
llamafile-server-0.1-llava-v1.5-7b-q4von https://huggingface.co/jartine/llava-v1.5-7B-GGUF/blob/main/... herunterladenwget https://huggingface.co/jartine/llava-v1.5-7B-GGUF/…chmod 755 llamafile-server-0.1-llava-v1.5-7b-q4ausführbar machen./llamafile-server-0.1-llava-v1.5-7b-q4ausführen; dann startet ein Webserver auf Port 8080Screenshots gibt es unter https://simonwillison.net/2023/Nov/29/llamafile/
Falls ihr chatgpt-web noch nicht ausprobiert habt: Empfehlung. Mit dem neuen GPT-4-Modell kann man deutlich günstiger chatten als mit ChatGPT Plus, und man kann immer noch auf das ältere, weniger eingeschränkte GPT-4-Modell wechseln, das beim Coden tatsächlich gut ist
[0]: https://github.com/Niek/chatgpt-web
llamafile-server-0.1-llava-v1.5-7b-q4für die Tests laufen lassen, die ich für ein Projekt brauche, und es hat alles bestanden, sogar Vision-Queries. Strategisch dürfte das für ziemlich viele Leute einiges verändernUser: What is the third planet from the sun?Llama: The third planet from the sun is called Mars.Die Portabilitätsarbeit von Justine Tunney / jart ist beeindruckend und wirklich cool, aber beim Use Case dieses Tools bin ich mir noch nicht sicher
Ich baue gerade eine kleine macOS-App https://www.freechat.run, die
llama.cppmit einem SwiftUI-Frontend ausführt. Bei der ersten Version war ich darauf fixiert, dass man sie einmal herunterlädt, sofort chatten kann und sie 0 Netzwerkverbindungen aufbaut. Das Modell in die App zu bündeln machte es einfach: herunterladen, öffnen, direkt nutzen. Als ich dann aber UI-Updates an TestFlight-Beta-Nutzer ausrollen wollte, mussten sie wieder 3 GB herunterladen, und alle drei haben sich beschwertDanach habe ich den Download des Standardmodells von der UI getrennt, sodass App-Updates nur noch etwa 5 MB groß sind. Ich vermute, dieses Tool wird ziemlich schnell auf dasselbe Problem stoßen, sobald man aktuelle
llama.cpp-Updates haben möchte. In manchen Fällen ist das egal, aber ich frage mich, wofür es wirklich nützlich isthttps://justine.lol/cosmopolitan/, https://github.com/ggerganov/llama.cpp
Die Modelle hat man schon heruntergeladen, organisiert und einsatzbereit, aber die Apps fragen nicht einmal danach und behandeln die Nutzer wie Idioten, indem sie alles erneut herunterladen
Makeayo ist inzwischen etwas besser, weil es nach dem Speicherort der Modelle fragt; dass man bei comfy/automatic Symlinks verwenden muss, ist unangenehm. Beim ersten Start einfach nach dem Dateispeicherort fragen und ihn in den Einstellungen änderbar machen – das ist nicht schwer
cosmopolitan libcist wirklich ein cooler Trick, verdient Lob und hat sicher echte Use Cases, wirkt aber für die meisten Zwecke nicht besonders praktischWenn es ein Format wie ein sehr fettes ELF gäbe, das beliebig viele Architekturen und Betriebssysteme unterstützt – würden wir es benutzen? Vermutlich eher nicht
Nachdem ich aber eine Weile
zig ccgenutzt habe, kommt mir der Ansatz, einmal zu bauen und ein riesiges universelles Binary zu erzeugen, doch ziemlich vernünftig vor. Dispatch nach Mikroarchitektur ist ebenfalls ein Pluspunkt; während ich das schreibe, überzeuge ich mich offenbar gerade selbst vom GegenteilEgal welches Bild ich hochlade, es scheint es nicht richtig zu erkennen. Diese Antwort war trotzdem witzig
User: Describe the image in the most detailed way possibleLlama: The image is a close-up of an empty, dark room with no visible objects or people...User: is it just a black square?Llama: Yes, it is just a black square.Als ich fragte, ob es ein weißes Quadrat sei, meinte es, es sei kein einfaches weißes Quadrat, sondern sehe wie abstrakte Kunst mit Grau und Gelbbraun aus
Der zugehörige Beitrag von Simon Willison ist gut: https://simonwillison.net/2023/Nov/29/llamafile/
Interessant ist, wie dieses Modell halluziniert. Als ihm Albert Bierstadts „In the Mountains“ (https://www.wikiart.org/en/albert-bierstadt/in-the-mountains...) gezeigt wurde, beharrte es darauf, dass überall in der Szene Kühe verstreut seien.
Selbst als gesagt wurde, es gebe keine Kühe und es habe wohl Felsen mit Kühen verwechselt, antwortete es mit Nein; erst als erneut gesagt wurde: „Es gibt keine Kühe“, beschrieb es die Szene als friedliche Landschaft mit Bergen und See, Bäumen, Vögeln und einem Boot.
Zugehörige Materialien: https://hacks.mozilla.org/2023/11/introducing-llamafile/ und https://twitter.com/justinetunney/status/1729940628098969799
Der Verlauf stammt aus https://news.ycombinator.com/item?id=38463456 und https://news.ycombinator.com/item?id=38464759, aber die Kommentare wurden hier zusammengeführt.
Ich probiere gerade mehrere Modelle im GGUF-Format von
llama.cppauf diese Weise aus.git clone https://github.com/ggerganov/llama.cppcd llama.cppmake# M2 Max - 16 GB RAMwget -P ./models https://huggingface.co/TheBloke/OpenHermes-2.5-Mistral-7B-16k-GGUF/…./server -m models/openhermes-2.5-mistral-7b-16k.Q8_0.gguf -c 16000 -ngl 32# M1 - 8 GB RAMwget -P ./models https://huggingface.co/TheBloke/OpenHermes-2.5-Mistral-7B-16k-GGUF/…./server -m models/openhermes-2.5-mistral-7b.Q4_K_M.gguf -c 2000 -ngl 32Llaminate wäre als Name für so etwas auch ganz passend. Es ließe sich auch als allgemeines Verb dafür verwenden, ein llama-kompatibles Modell in ein direkt nutzbares Paket einzuhüllen.
Cool, dass es trotz Build mit Cosmopolitan CUDA-Unterstützung gibt. Es sieht so aus, als hätte Cosmopolitan diesen Monat teilweise Unterstützung für dynamisches Linking hinzugefügt, um GPUs zu ermöglichen: https://github.com/jart/cosmopolitan/commit/5e8c928f1a37349a...
Leider ist die Installation des CUDA Developer Toolkit nötig. CUDA-Apps, die allein mit dem Nvidia-Treiber ohne zusätzliche Abhängigkeiten laufen, lassen sich durchaus ausliefern; wenn auch das gelöst wird, könnte es ein Game Changer werden.
Mir gefällt die Formulierung: „Wenn man die Datei auf einen USB-Stick packt und in der Schublade aufbewahrt, ist das eine Versicherung gegen die Apokalypse der Zukunft. Man muss nie wieder ohne Sprachmodell auskommen.“