Llamafile - Déployer et exécuter des LLM dans un seul fichier
(github.com/Mozilla-Ocho)Résumé du projet llamafile
- Développement d’un framework combinant llama.cpp et Cosmopolitan Libc pour concrétiser le rêve des développeurs IA de pouvoir compiler et exécuter partout
- llamafile peut s’exécuter sur diverses microarchitectures et architectures CPU, et permet d’exécuter du code avec une seule compilation sur plusieurs systèmes d’exploitation
- Les poids des LLM peuvent être inclus dans le llamafile, ce qui permet une exécution rapide via un mappage mémoire direct
Utilisation des binaires
- Fournit des binaires d’exemple de plusieurs modèles téléchargeables via Hugging Face
- Le binaire en ligne de commande s’exécute comme lorsqu’on appelle manuellement la fonction "main" de llama.cpp
- Le binaire serveur lance un serveur web local afin de fournir un chatbot basé sur le web
Précautions
- Sur macOS avec Apple Silicon, l’installation de Xcode est nécessaire
- Sous Windows, il faut renommer le fichier en
llamafile.exepour pouvoir l’exécuter - En cas de problèmes d’exécution avec zsh, Python
subprocess, Fish, etc., il est recommandé d’utiliser des commandes alternatives - En cas de problème avec
binfmt_miscsous Linux, une méthode de résolution est fournie
Prise en charge GPU
- Sur Apple Silicon, cela fonctionne automatiquement si Xcode est installé
- Sous Linux, il faut installer un compilateur et définir des flags pour la prise en charge GPU Nvidia cuBLAS
- Sous Windows, il faut effectuer un premier lancement via l’invite de commandes native MSVC x64 puis configurer le chemin CUDA
Méthode de compilation du code source
- Guide expliquant comment compiler le code source de llamafile avec la toolchain cosmocc
- Fournit des exemples de génération de code de fonctions libc et d’exécution d’un serveur HTTP
Documentation zipalign
- Explique l’utilisation de l’outil zipalign pour ajouter des fichiers non compressés alignés dans une archive PKZIP
- Offre une exécution plus rapide que les outils d’archives ZIP existants et satisfait les exigences d’alignement mémoire
Détails techniques
- llamafile exploite la fonction
mmap()pour combiner un script shell et des poids afin de permettre une exécution rapide - Présente des solutions techniques pour l’inclusion des poids dans le ZIP, la portabilité entre microarchitectures et architectures, et la prise en charge GPU
Licence
- Le projet llamafile utilise la licence Apache 2.0, et les modifications apportées à llama.cpp sont sous licence MIT
Problèmes connus
- Sous Windows 64 bits, la limite de taille de fichier est de 4 Go, il faut donc utiliser les poids dans un fichier séparé
Avis de GN⁺
Le point le plus important ici est l’approche innovante du projet llamafile, qui vise à permettre aux développeurs IA de compiler et d’exécuter facilement des LLM partout. Ce projet offre une compatibilité entre diverses plateformes et architectures, et améliore considérablement la facilité d’utilisation grâce à une distribution sous forme d’un fichier unique incluant les poids. Ces avancées techniques ont le potentiel d’accélérer encore davantage la recherche et le développement en IA, ce qui en fait un sujet très intéressant pour les personnes qui s’intéressent à ce domaine.
1 commentaires
Avis sur Hacker News
Comment utiliser le modèle LLaVA
llamafile-server-0.1-llava-v1.5-7b-q4de 4,26 Gohttp://127.0.0.1:8080/pour téléverser une image et commencer à discuter avec le modèleRetour d’expérience sur le développement d’une application macOS
Recommandation du billet connexe de Simon Willison
Partage de liens connexes
Proposition du nom Llaminate
Admiration pour le support CUDA avec Cosmopolitan
Mention de la limite de taille des exécutables sous Windows
Partage d’une méthode pour tester différents modèles avec llama.cpp
Remarque sur la limitation d’un binaire ne fonctionnant qu’avec un seul modèle et un seul jeu de poids
Mention du rythme impressionnant auquel Justine crée des projets remarquables