Llamafile – Bereitstellung und Ausführung von LLMs als einzelne Datei
(github.com/Mozilla-Ocho)Zusammenfassung des llamafile-Projekts
- Entwicklung eines Frameworks, das
llama.cppund Cosmopolitan Libc kombiniert, um den Traum zu verwirklichen, dass AI-Entwickler überall bauen und ausführen können llamafilekann auf verschiedenen CPU-Mikroarchitekturen und CPU-Architekturen laufen und unterstützt die Ausführung von Code mit einem einzigen Build auf mehreren Betriebssystemen- Die Gewichte des LLM können in
llamafileeingebettet werden, was durch direktes Memory-Mapping eine schnelle Ausführung ermöglicht
Verwendung der Binärdateien
- Bereitstellung von Beispiel-Binärdateien für mehrere Modelle, die über Hugging Face heruntergeladen werden können
- Die Kommandozeilen-Binärdatei wird so ausgeführt, als würde die Funktion "main" von
llama.cppmanuell aufgerufen - Die Server-Binärdatei startet einen lokalen Webserver und stellt einen webbasierten Chatbot bereit
Hinweise
- Bei Verwendung von Apple Silicon unter macOS ist die Installation von Xcode erforderlich
- Unter Windows muss der Dateiname in
llamafile.exegeändert werden, damit die Ausführung möglich ist - Wenn Ausführungsprobleme in zsh, Python
subprocess, Fish usw. auftreten, wird die Verwendung alternativer Befehle empfohlen - Für Probleme mit
binfmt_miscunter Linux wird eine Lösung bereitgestellt
GPU-Unterstützung
- Auf Apple Silicon funktioniert es nach der Installation von Xcode automatisch
- Unter Linux sind für die Nvidia-cuBLAS-GPU-Unterstützung die Installation eines Compilers und das Setzen von Flags erforderlich
- Unter Windows ist nach dem ersten Start über die MSVC-x64-Native-Command-Prompt das Einrichten des CUDA-Pfads erforderlich
So wird der Quellcode gebaut
- Anleitung zum Bauen des
llamafile-Quellcodes mit dercosmocc-Toolchain - Beispiele für die Codegenerierung von libc-Funktionen und das Ausführen eines HTTP-Servers
zipalign-Dokumentation
- Erklärung der Verwendung des
zipalign-Tools zum Hinzufügen ausgerichteter, unkomprimierter Dateien zu PKZIP-Archiven - Schnellere Ausführung als bestehende ZIP-Archiv-Tools und Erfüllung der Anforderungen an die Speicherausrichtung
Technische Details
llamafilenutzt die Funktionmmap(), um Shell-Skripte und Gewichte zu kombinieren und so eine schnelle Ausführung zu ermöglichen- Vorstellung technischer Lösungsansätze für eingebettete ZIP-Gewichte, Mikroarchitektur- und Architektur-Portabilität sowie GPU-Unterstützung
Lizenz
- Das
llamafile-Projekt verwendet die Apache-2.0-Lizenz, Änderungen anllama.cppstehen unter der MIT-Lizenz
Bekannte Probleme
- Unter 64-Bit-Windows gilt eine Dateigrößenbeschränkung von 4 GB, daher müssen Gewichte als separate Datei verwendet werden
Meinung von GN⁺
Das Wichtigste an diesem Beitrag ist der innovative Ansatz des llamafile-Projekts, mit dem AI-Entwickler LLMs überall einfach bauen und ausführen können. Das Projekt bietet Kompatibilität über verschiedene Plattformen und Architekturen hinweg und verbessert den Nutzungskomfort erheblich, indem es die Verteilung als einzelne Datei einschließlich der Gewichte ermöglicht. Dieser technische Fortschritt hat das Potenzial, AI-Forschung und -Entwicklung weiter zu beschleunigen, und ist daher für alle, die sich für dieses Feld interessieren, äußerst spannend.
1 Kommentare
Hacker-News-Kommentare
So verwendet man das LLaVA-Modell
llamafile-server-0.1-llava-v1.5-7b-q4von Hugging Face herunterladenhttp://127.0.0.1:8080/aufrufen, ein Bild hochladen und das Gespräch mit dem Modell beginnenErfahrungen mit der Entwicklung einer macOS-App
llama.cppmit einem SwiftUI-Frontend ausführt.llama.cppmöchten; zugleich wird gefragt, ob es Fälle gibt, in denen dieses Problem nicht wichtig ist.Empfehlung für einen verwandten Beitrag von Simon Willison
Teilen verwandter Links
Vorschlag des Namens Llaminate
Bewunderung für CUDA-Unterstützung mit Cosmopolitan
Hinweis auf Größenbeschränkungen von ausführbaren Dateien unter Windows
Teilen einer Methode zum Experimentieren mit verschiedenen Modellen in
llama.cppllama.cppvon GitHub klont, die benötigten Modelle herunterlädt und den Server startet.Hinweis auf die Einschränkung eines Binärprogramms, das nur mit einem einzelnen Modell und einem einzigen Gewichtssatz arbeitet
Hinweis auf Justines erstaunliches Tempo beim Erschaffen beeindruckender Projekte