- 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
Commentaires sur Hacker News