1 points par GN⁺ 2024-10-12 | 1 commentaires | Partager sur WhatsApp

lm.rs : exécuter l’inférence de modèles de langage en local sur CPU avec Rust

  • Présentation

    • lm.rs est un projet qui permet d’exécuter l’inférence de modèles de langage sur CPU avec Rust.
    • Inspiré par llama2.c et llm.c de Karpathy, il est conçu pour faire tourner des modèles de langage avec un minimum de code, sans bibliothèque de ML.
    • Il ne prenait en charge que le modèle Gemma 2 de Google, mais prend désormais aussi en charge les modèles Llama 3.2 et le modèle d’image PHI-3.5.
  • Modèles prêts à l’emploi

    • Fournit des benchmarks et des liens de téléchargement pour différents modèles et tokenizers.
    • Les modèles quantifiés Q8_0 et Q4_0 sont recommandés.
    • La vitesse a été mesurée sur un AMD Epyc 16 cœurs.
  • Conversion des modèles

    • Possibilité de convertir les modèles de Google/Meta au format lmrs.
    • Après avoir installé les dépendances Python, il est possible de convertir le modèle et le tokenizer à l’aide des scripts export.py et tokenizer.py.
  • Build

    • Le code Rust peut être compilé et exécuté avec cargo.
    • Pour activer les fonctionnalités multimodales, il faut inclure la fonctionnalité multimodal.
  • TODOs

    • Ajouter des méthodes d’échantillonnage.
    • Tester les modèles 9B et 27B.
    • Paralléliser la boucle d’attention multi-tête.
    • Ajouter des métriques de performance.
    • Ajouter une fonctionnalité pour fournir un prompt système.
    • Ajouter la prise en charge de la quantification (int8, int4).

# Le récapitulatif de GN⁺

  • lm.rs propose une méthode efficace pour exécuter des modèles de langage sur CPU avec Rust. Cela reste possible sans bibliothèque de ML, ce qui le rend utile dans des environnements légers.
  • Il convient aussi aux développeurs qui découvrent Rust, tout en offrant une bonne extensibilité grâce à la prise en charge de plusieurs modèles.
  • La prise en charge de modèles multimodaux comme PHI-3.5 inclut également des capacités de traitement d’image.
  • Parmi les projets offrant des fonctions similaires, on peut citer la bibliothèque Transformers de Hugging Face.

1 commentaires

 
GN⁺ 2024-10-12
Commentaires sur Hacker News
  • Sur un MacBook M2 64GB, l’exécution de 1.2G llama3.2-1b-it-q80.lmrs était rapide, avec une utilisation CPU de 1000 % sur 13 threads
  • Cela semble utile pour expliquer le fonctionnement d’un Transformer à l’aide d’exemples de code
    • Il faudrait améliorer la bibliothèque pour qu’elle n’écrive pas sur stdout
    • On se demande s’il est possible de l’implémenter sans unsafe
  • Il est possible d’utiliser divers outils Rust pour le chargement de modèles et d’autres tâches liées aux LLM
    • Cela pourrait aider à réduire les dépendances à Python
    • On se demande s’il est prévu de prendre en charge la grammaire
  • Le titre n’est pas clair
    • L’expression « no dependency » peut prêter à confusion
  • Un travail similaire avait déjà été fait par le passé, mais les performances n’étaient pas satisfaisantes
    • Un benchmark de l’implémentation Rust est nécessaire
    • L’implémentation de l’inférence LLM pourrait devenir le nouveau « hello world! » des programmeurs
  • La prise en charge de Metal/Cuda est indispensable
  • L’enthousiasme de la communauté Rust est très apprécié
  • On se demande si toutes ces implémentations reposent uniquement sur le CPU
  • Une comparaison avec d’autres projets est nécessaire
    • Si les modèles de vision sont pris en charge, certains seraient prêts à l’essayer