- llamafile est un projet qui réduit le déploiement et l’exécution des LLM à un exécutable unique, permettant une exécution locale sans installation sur la plupart des systèmes d’exploitation et architectures CPU
- L’implémentation combine llama.cpp et Cosmopolitan Libc pour replier la complexité d’exécution des LLM dans un unique exécutable « llamafile », et le projet a été remanié par Mozilla.ai
- whisperfile, inclus avec l’ensemble, est un outil de transcription vocale en fichier unique basé sur le même empaquetage Cosmopolitan que whisper.cpp, avec prise en charge de la transcription et de la traduction de fichiers audio
- Depuis la v0.10.0, le projet utilise un nouveau système de build pour suivre plus facilement les versions récentes de llama.cpp, ce qui permet de prendre en charge des modèles et fonctionnalités plus récents, mais certaines fonctions familières ont pu disparaître
- Sous Windows, il faut ajouter l’extension
.exe avant l’exécution et, les exécutables de plus de 4 Go ne pouvant pas être lancés sous Windows, il faut utiliser un binaire llamafile séparé avec des poids/modèles GGUF externes
Exécuter un LLM dans un fichier unique
- llamafile est un projet qui permet de distribuer et d’exécuter un LLM dans un seul fichier
- Son objectif est d’améliorer l’accessibilité aux LLM ouverts pour les développeurs comme pour les utilisateurs finaux
- Il combine llama.cpp et Cosmopolitan Libc dans un même framework
- Le résultat est un exécutable en fichier unique appelé « llamafile », lancé en local sans installation
- La prise en charge couvre la plupart des systèmes d’exploitation et architectures CPU
Remaniement par Mozilla.ai et projets associés
- llamafile est un projet Mozilla Builders, désormais remanié par Mozilla.ai
- La présentation du projet renvoie vers l’announcement blog post
- L’équipe recueille des retours sur ce que les utilisateurs jugent utile et sur ce qui rendrait l’outil plus intéressant
whisperfile inclus
- whisperfile est un outil de transcription vocale en fichier unique inclus dans llamafile
- Il repose sur le même empaquetage Cosmopolitan que whisper.cpp
- Il prend en charge la transcription et la traduction des fichiers audio
- Il peut être utilisé sans installation sur la même plage de plateformes que llamafile
- La documentation est disponible ici : Whisperfile
Changement du système de build dans la v0.10.x
- À partir de la 0.10.0, llamafile utilise un nouveau système de build
- L’objectif de ce nouveau système est de faciliter l’alignement du code sur les versions récentes de llama.cpp
- Ce changement permet de prendre en charge des modèles et fonctionnalités plus récents
- En contrepartie, certaines fonctions auxquelles les utilisateurs étaient habitués ont pu disparaître
- Une explication de haut niveau du changement est disponible dans README_0.10.0.md
- Les utilisateurs qui préfèrent la « classic experience » peuvent accéder aux versions précédentes sur la page releases
- Les llamafile précompilés indiquent avec quelle version serveur ils sont fournis
Démarrage rapide et limitations sous Windows
- Le modèle d’exemple est Qwen3.5 0.8B, et le README présente un flux de téléchargement et d’exécution en quelques minutes
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
- Ce modèle a été choisi parce que c’est le plus petit parmi ceux que le projet a construits en llamafile, donc celui qui a le plus de chances de fonctionner immédiatement
- Avec un matériel plus puissant ou un GPU, il est possible de choisir des modèles plus grands et plus expressifs, capables de fournir des réponses plus précises
- Les utilisateurs de Windows doivent ajouter l’extension
.exe au nom du fichier avant l’exécution
- Sous Windows, seuls les exécutables de moins de 4 Go peuvent être lancés
Documentation et licence
- La documentation complète est disponible sur docs.mozilla.ai/llamafile
- Principales rubriques de la documentation :
- Le projet llamafile est sous licence Apache 2.0
- Les modifications apportées à llama.cpp et whisper.cpp sont sous la même licence MIT que les projets d’origine, afin de conserver la possibilité d’un futur envoi en amont si souhaité
1 commentaires
Avis de Hacker News
Le mieux semble être de tester avec un modèle texte+image comme LLaVA. La procédure ci-dessous est pour macOS, mais cela devrait fonctionner de façon similaire sur d’autres plateformes
llamafile-server-0.1-llava-v1.5-7b-q4depuis https://huggingface.co/jartine/llava-v1.5-7B-GGUF/blob/main/...wget https://huggingface.co/jartine/llava-v1.5-7B-GGUF/…chmod 755 llamafile-server-0.1-llava-v1.5-7b-q4./llamafile-server-0.1-llava-v1.5-7b-q4: un serveur web démarre sur le port 8080La capture d’écran est disponible sur https://simonwillison.net/2023/Nov/29/llamafile/
Si vous n’avez pas essayé chatgpt-web, je le recommande. Avec le nouveau modèle GPT-4, les conversations coûtent bien moins cher que ChatGPT Plus, et on peut encore basculer vers l’ancien modèle GPT-4, moins restreint, qui reste vraiment bon pour coder
[0]: https://github.com/Niek/chatgpt-web
llamafile-server-0.1-llava-v1.5-7b-q4sur les tests nécessaires à mon projet, et il les a tous passés, y compris les requêtes de vision. Stratégiquement, je pense que cela va changer pas mal de choses pour beaucoup de mondeUser: What is the third planet from the sun?Llama: The third planet from the sun is called Mars.Le travail de portabilité de Justine Tunney / jart est impressionnant et vraiment brillant, mais je ne vois pas encore très bien le cas d’usage de cet outil
Je développe une petite app macOS https://www.freechat.run qui fait tourner
llama.cppavec une interface SwiftUI. Dans la première version, j’étais obsédé par l’idée d’avoir un téléchargement unique, puis une utilisation immédiate du chat et zéro connexion réseau. En intégrant le modèle à l’app, c’était simple : télécharger, ouvrir, utiliser. Mais quand j’ai voulu distribuer une mise à jour de l’UI aux bêta-testeurs TestFlight, je leur ai fait télécharger à nouveau 3 Go, et les trois s’en sont plaintsDepuis, j’ai séparé le téléchargement du modèle par défaut et l’UI, de sorte que les mises à jour de l’app ne font plus qu’environ 5 Mo. J’ai l’impression que cet outil rencontrera assez vite le même problème dès qu’on voudra récupérer les dernières mises à jour de
llama.cpp. Il y a sans doute des cas où ce n’est pas gênant, mais je me demande où ce sera utilehttps://justine.lol/cosmopolitan/, https://github.com/ggerganov/llama.cpp
Les modèles sont déjà téléchargés, rangés et prêts à l’emploi, mais les apps ne demandent même pas où ils sont et traitent l’utilisateur comme un idiot en les retéléchargeant
Makeayo s’en sort un peu mieux maintenant parce qu’il demande l’emplacement des modèles, et devoir utiliser des liens symboliques dans comfy/automatic est déplaisant. Il suffirait de demander l’emplacement des fichiers au premier lancement et de permettre de le modifier dans les réglages ; ce n’est pas difficile
cosmopolitan libcest vraiment un tour de force brillant, digne d’éloges, et il a sûrement des cas d’usage réels, mais pour la plupart des besoins, cela ne me paraît pas très pratiqueSi nous avions eu un format façon ELF très volumineux capable de prendre en charge autant d’architectures et de systèmes d’exploitation qu’on le souhaite, l’aurions-nous utilisé ? Probablement pas
Cela dit, après avoir utilisé
zig ccpendant quelque temps, je me dis qu’une approche consistant à compiler une fois pour produire un très gros binaire universel peut aussi être raisonnable. Le dispatch par microarchitecture est également un bon point ; à force d’y réfléchir, j’ai l’impression d’être en train de me convaincre moi-même de l’alternativeQuelle que soit l’image envoyée, il ne semble pas la voir correctement. Mais cette réponse m’a quand même fait rire
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.Quand je lui ai demandé si c’était un carré blanc, il a dit que ce n’était pas un simple carré blanc et que cela ressemblait à une peinture abstraite avec aussi du gris et du brun jaunâtre
Le billet connexe de Simon Willison est excellent : https://simonwillison.net/2023/Nov/29/llamafile/
La manière dont ce modèle hallucine est intéressante. Quand on lui a montré « In the Mountains » d’Albert Bierstadt (https://www.wikiart.org/en/albert-bierstadt/in-the-mountains...), il a insisté en disant qu’il y avait des vaches dispersées un peu partout dans la scène
Même quand on lui a dit qu’il n’y avait pas de vaches et qu’il avait peut-être pris des rochers pour des vaches, il a répondu que non ; puis, quand on lui a répété « il n’y a pas de vaches », il a enfin décrit une scène paisible avec des montagnes, un lac, des arbres, des oiseaux et un bateau
Ressources associées : https://hacks.mozilla.org/2023/11/introducing-llamafile/ et https://twitter.com/justinetunney/status/1729940628098969799
Le fil vient de https://news.ycombinator.com/item?id=38463456 et https://news.ycombinator.com/item?id=38464759, mais les commentaires ont été fusionnés ici
Je fais tourner plusieurs modèles au format GGUF de
llama.cppde cette façongit 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 pourrait aussi être un bon nom pour ce genre de chose. On pourrait même l’employer comme verbe générique pour emballer un modèle compatible llama dans un bloc directement utilisable
C’est impressionnant qu’il y ait une prise en charge de CUDA alors que c’est compilé avec Cosmopolitan. Il semble que Cosmopolitan ait ajouté ce mois-ci une partie du support de l’édition de liens dynamique pour permettre l’usage du GPU : https://github.com/jart/cosmopolitan/commit/5e8c928f1a37349a...
Dommage qu’il faille installer le toolkit de développement CUDA. Il est tout à fait possible de distribuer des applis CUDA qui s’exécutent avec seulement le pilote Nvidia, sans dépendances supplémentaires ; si cette partie était réglée aussi, ce serait un vrai game changer
J’aime bien la formule : « mettez le fichier sur une clé USB et rangez-la dans un tiroir, ce sera une assurance pour l’apocalypse future. Vous ne serez plus jamais privé de modèles de langage »