2 Punkte von GN⁺ 2023-11-30 | 1 Kommentare | Auf WhatsApp teilen

Zusammenfassung des llamafile-Projekts

  • Entwicklung eines Frameworks, das llama.cpp und Cosmopolitan Libc kombiniert, um den Traum zu verwirklichen, dass AI-Entwickler überall bauen und ausführen können
  • llamafile kann 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 llamafile eingebettet 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.cpp manuell 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.exe geä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_misc unter 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 der cosmocc-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

  • llamafile nutzt die Funktion mmap(), 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 an llama.cpp stehen 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

 
GN⁺ 2023-11-30
Hacker-News-Kommentare
  • So verwendet man das LLaVA-Modell

    • Die beste Möglichkeit, das LLaVA-Modell auf macOS auszuprobieren, ist die Nutzung eines Modells, das Text und Bilder kombiniert (ähnlich wie GPT-4 Vision).
    • Es wird Schritt für Schritt erklärt, wie man es auf macOS ausführt; auf anderen Plattformen dürfte es ähnlich funktionieren (wurde aber noch nicht ausprobiert).
      1. Die 4,26-GB-Datei llamafile-server-0.1-llava-v1.5-7b-q4 von Hugging Face herunterladen
      2. Im Terminal Ausführungsrechte vergeben
      3. Die ausführbare Datei starten, um einen Webserver auf Port 8080 zu starten
      4. Im Browser http://127.0.0.1:8080/ aufrufen, ein Bild hochladen und das Gespräch mit dem Modell beginnen
  • Erfahrungen mit der Entwicklung einer macOS-App

    • Mit Bewunderung für die hervorragende Portabilitätsarbeit von Justine Tunney / jart berichtet der Entwickler, dass er in seiner eigenen macOS-App llama.cpp mit einem SwiftUI-Frontend ausführt.
    • In der ersten Version der App lag der Fokus darauf, nach einem einzigen Download einen Chat-Ablauf ohne Netzwerkverbindung zu ermöglichen.
    • Das Modell wurde mit der App gebündelt und war dadurch direkt nach dem Download nutzbar, allerdings mussten Nutzer bei jedem UI-Update erneut 3 GB herunterladen.
    • Nach Beschwerden der Nutzer wurden der Download des Basismodells und die UI getrennt, sodass bei App-Updates nur noch etwa 5 MB ausgeliefert werden.
    • Es wird erwartet, dass Nutzer dieses Tools auf ein ähnliches Problem stoßen, wenn sie Updates für llama.cpp mö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

    • Es wird ein Empfehlungslink zu einem verwandten Beitrag von Simon Willison geteilt.
  • Teilen verwandter Links

    • Es werden Links zur Einführung von Mozilla in llamafile und zu einem Tweet von Justine Tunney geteilt.
  • Vorschlag des Namens Llaminate

    • Für die allgemeine Aufgabe, mit Llama kompatible Modelle in einsatzbereite Blobs zu verpacken, wird der Name „Llaminate“ vorgeschlagen.
  • Bewunderung für CUDA-Unterstützung mit Cosmopolitan

    • Es wird Bewunderung darüber geäußert, dass Cosmopolitan in diesem Monat Unterstützung für dynamisches Linken hinzugefügt hat, um GPUs zu aktivieren.
    • Spannend erscheint die Möglichkeit, CUDA-Apps außer dem Nvidia-Treiber ohne weitere Abhängigkeiten bereitzustellen, auch wenn die Installation des CUDA Developer Toolkit erforderlich ist.
  • Hinweis auf Größenbeschränkungen von ausführbaren Dateien unter Windows

    • Es wird die Erfahrung geteilt, dass 4-GB-Executable-Dateien auf einem 64-Bit-System mit Windows 10 problemlos funktionieren.
  • Teilen einer Methode zum Experimentieren mit verschiedenen Modellen in llama.cpp

    • Es wird mit Code erläutert, wie man llama.cpp von 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

    • Es wird die Meinung geäußert, dass ein Binärprogramm, das nur ein Modell und einen Gewichtssatz ausführt, eingeschränkt ist.
  • Hinweis auf Justines erstaunliches Tempo beim Erschaffen beeindruckender Projekte

    • Es wird erwähnt, dass Justine in erstaunlichem Tempo beeindruckende Projekte hervorbringt.