1 points par GN⁺ 2023-07-23 | 1 commentaires | Partager sur WhatsApp
  • Cet article présente l’ajout, dans la nouvelle API de llama.cpp, d’un échantillonnage basé sur une grammaire afin de guider et de contraindre la génération.
  • L’API llama reçoit une structure de données représentant une grammaire hors contexte, ce qui permet un échantillonnage fondé sur des règles grammaticales.
  • Le code d’échantillonnage grammatical modélise un automate à pile non déterministe et maintient plusieurs piles pour les états d’analyse.
  • L’article fournit des exemples d’utilisation de l’API de grammaire pour divers scénarios comme les échecs, l’arithmétique, JSON et le japonais.
  • Des optimisations potentielles sont mentionnées, comme la compilation de la grammaire en tenseur de transition d’état et son exécution sur GPU.
  • Les contributeurs discutent de l’ajout de la prise en charge des fichiers de grammaire, de l’amélioration du parseur de grammaire et de l’optimisation de l’évaluation des tokens.
  • L’utilité de cette contribution est soulignée, avec une proposition de séparer l’API d’échantillonnage dans un module distinct.
  • D’autres projets utilisant une approche similaire de génération basée sur une grammaire sont mentionnés, comme lmql.ai et jsonformer.
  • Il est proposé de pouvoir référencer des tokens complets dans la grammaire et d’inclure le parseur dans l’API llama.cpp afin d’en améliorer l’ergonomie.
  • Les contributeurs relisent le code, donnent leur avis, discutent d’améliorations possibles et partagent leur expérience de cette fonctionnalité.
  • Un ingénieur logiciel participe à un projet lié à l’échantillonnage grammatical et rencontre des problèmes sur ARM64+CUDA.
  • L’éditeur suggère que le problème pourrait être lié à une combinaison de paquets dans la toolchain et propose son aide.
  • Une pull request vise à ajouter des fonctions LocalAI, et il est proposé d’utiliser une syntaxe BNF plus standard dans le projet.
  • Enfreindre la grammaire est considéré comme le pire résultat possible, et le backtracking est proposé comme piste pour de futures évolutions.
  • Une discussion est en cours sur l’implémentation de l’EBNF et sur le format à suivre.
  • Dans la mise à jour la plus récente, l’échantillonnage a été limité à des correspondances complètes de tokens, et d’autres améliorations ont été proposées pour gérer les cas où les tokens sont découpés de manière inappropriée.
  • Les changements apportés au projet ont été approuvés et sont prêts à être fusionnés, et l’éditeur dit avoir hâte d’expérimenter avec la version mise à jour du projet.
  • Un problème similaire traité dans un autre projet est mentionné, avec une suggestion de précalculer la distribution des tokens du vocabulaire.
  • L’ingénieur logiciel se dit intéressé par cette approche et prêt à partager son avis.
  • La discussion sur GitHub se poursuit avec plusieurs participants.

1 commentaires

 
GN⁺ 2023-07-23
Commentaires sur Hacker News
  • Les modèles de langage génèrent les tokens un par un, ce qui permet un contrôle fin.
  • L’échantillonnage guidé par une grammaire peut être utilisé pour imposer des contraintes grammaticales au texte généré.
  • L’échantillonnage guidé par une grammaire pourrait ne pas résoudre les problèmes d’alignement ni garantir un étiquetage correct.
  • Il existe un dépôt GitHub pour implémenter l’échantillonnage guidé par une grammaire dans PyTorch.
  • En prenant en compte les probabilités conjointes, il est possible de mieux choisir les options dans une énumération de chaînes à choix multiples.
  • Une bibliothèque de grammaires a été citée comme exemple de ce à quoi le format peut ressembler.
  • Certains utilisateurs s’intéressent à ce concept, mais s’interrogent sur ses effets à long terme.
  • L’échantillonnage guidé par une grammaire peut être utile pour des domaines spécifiques et des DSL internes.
  • Du prompt engineering reste nécessaire pour obtenir la sortie souhaitée.
  • Il existe aussi d’autres méthodes et outils similaires.
  • Demande de recommandations sur les méthodes de décodage à l’ère des réseaux neuronaux.