2 points par GN⁺ 2023-11-30 | 1 commentaires | Partager sur WhatsApp

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.exe pour 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_misc sous 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

 
GN⁺ 2023-11-30
Avis sur Hacker News
  • Comment utiliser le modèle LLaVA

    • La meilleure façon d’essayer le modèle LLaVA sur macOS est d’utiliser un modèle combinant texte et images, similaire à GPT-4 Vision.
    • Explication étape par étape de la manière de l’exécuter sur macOS, avec l’idée que cela devrait fonctionner de façon similaire sur d’autres plateformes également, bien que cela n’ait pas encore été testé.
      1. Télécharger depuis Hugging Face le fichier llamafile-server-0.1-llava-v1.5-7b-q4 de 4,26 Go
      2. Donner les droits d’exécution dans le terminal
      3. Lancer l’exécutable pour démarrer un serveur web sur le port 8080
      4. Aller dans le navigateur sur http://127.0.0.1:8080/ pour téléverser une image et commencer à discuter avec le modèle
  • Retour d’expérience sur le développement d’une application macOS

    • Tout en saluant l’impressionnant travail de portabilité de Justine Tunney / jart, le développeur explique qu’il exécute llama.cpp dans sa propre application macOS avec une interface SwiftUI.
    • Dans la première version de l’application, l’objectif était de privilégier un téléchargement unique, puis un flux de discussion sans connexion réseau.
    • Le modèle était fourni directement dans l’application, ce qui permettait de l’utiliser immédiatement après le téléchargement, mais à chaque déploiement d’une mise à jour de l’interface, les utilisateurs devaient retélécharger 3 Go.
    • Après les plaintes des utilisateurs, le téléchargement du modèle par défaut a été séparé de l’interface, de sorte qu’une mise à jour de l’application ne représente plus qu’environ 5 Mo à distribuer.
    • Il s’attend à ce que les utilisateurs de cet outil rencontrent un problème similaire lorsqu’ils voudront mettre à jour llama.cpp, et se demande dans quels cas ce problème pourrait ne pas être important.
  • Recommandation du billet connexe de Simon Willison

    • Partage d’un lien recommandant le billet connexe de Simon Willison.
  • Partage de liens connexes

    • Partage de liens vers la présentation de llamafile par Mozilla et vers un tweet de Justine Tunney.
  • Proposition du nom Llaminate

    • Proposition du nom « Llaminate » pour l’opération générique consistant à encapsuler des modèles compatibles Llama dans un blob prêt à l’emploi.
  • Admiration pour le support CUDA avec Cosmopolitan

    • Admiration pour le fait que Cosmopolitan a ajouté ce mois-ci le support du dynamic linking afin d’activer le GPU.
    • Intérêt pour la possibilité de déployer des applications CUDA sans autre dépendance que le pilote Nvidia, même si l’installation du kit d’outils de développement CUDA reste nécessaire.
  • Mention de la limite de taille des exécutables sous Windows

    • Partage d’une expérience indiquant qu’un exécutable de 4 Go fonctionne bien sur un système Windows 10 64 bits.
  • Partage d’une méthode pour tester différents modèles avec llama.cpp

    • Partage, avec du code, de la manière de cloner llama.cpp depuis GitHub, de télécharger les modèles nécessaires et de lancer le serveur.
  • Remarque sur la limitation d’un binaire ne fonctionnant qu’avec un seul modèle et un seul jeu de poids

    • Avis selon lequel un binaire qui n’exécute qu’un seul modèle avec un seul ensemble de poids est limitant.
  • Mention du rythme impressionnant auquel Justine crée des projets remarquables

    • Mention du fait que Justine produit des projets impressionnants à une vitesse remarquable.