1 points par GN⁺ 2023-08-15 | 1 commentaires | Partager sur WhatsApp
  • Outlines est une bibliothèque de génération de texte par réseaux neuronaux, conçue pour remplacer de façon plus flexible la méthode generate de la bibliothèque transformers.
  • Elle aide les développeurs à créer des interfaces robustes en garantissant des sorties qui respectent des expressions régulières ou des schémas JSON.
  • Cette bibliothèque fournit des briques de prompting robustes qui séparent la logique de prompting de la logique d’exécution, afin de simplifier l’implémentation de la génération few-shot, de ReAct, du méta-prompting, des agents, etc.
  • Outlines a été conçue pour être compatible avec un écosystème plus large, en utilisant aussi peu d’abstractions que possible, et permet d’entrelacer la génération avec du contrôle de flux, des conditions, des fonctions Python personnalisées et des appels à d’autres bibliothèques.
  • Elle est compatible avec tous les modèles et fournit une interface avec eux via les logits du prochain token. Elle peut également être utilisée avec des modèles basés sur API.
  • La bibliothèque se distingue par des briques de prompting simples et puissantes basées sur le moteur de templates Jinja, une génération guidée, une génération guidée rapide par expressions régulières, une génération JSON rapide conforme à un schéma JSON ou à un modèle Pydantic, ainsi qu’une intégration avec les modèles transformers de HuggingFace.
  • Outlines est disponible sur PyPi et peut être installée avec la commande pip install outlines.
  • La bibliothèque permet d’arrêter la génération de manière anticipée après la détection d’une séquence donnée, de restreindre une complétion à un choix entre plusieurs possibilités, ou d’indiquer au modèle de ne renvoyer que des entiers ou des nombres réels.
  • Elle inclut également une génération guidée rapide par expressions régulières et une génération JSON efficace conforme à des modèles Pydantic.
  • Outlines facilite l’écriture et la gestion des prompts en séparant la logique des prompts de la logique générale du programme, grâce à l’encapsulation des templates dans des « fonctions de template ».
  • La bibliothèque permet aussi aux modèles de langage d’appeler des fonctions externes pour obtenir des informations supplémentaires ou accomplir des tâches, en encodant la description de ces fonctions dans le prompt.
  • Outlines est open source et distribué sous licence Apache License 2.0.

1 commentaires

 
GN⁺ 2023-08-15
Commentaire Hacker News
  • Article expliquant comment les bibliothèques de modèles de langage (Language Model Libraries, LLMs) peuvent générer du JSON valide à 100 % des cas
  • Les LLMs produisent une distribution de probabilités pour chaque token, et un parseur JSON fournit la liste des prochains tokens valides
  • Discussion autour de l’idée de masquer une partie de l’espace du vocabulaire et de bibliothèques qui effectuent des pas de temps efficaces
  • Interrogations sur l’efficacité de modèles de base comme Llama2 et sur la nécessité éventuelle d’un ajustement par instruction pour des cas d’usage spécifiques
  • Question sur l’existence de paramètres de température ou d’échantillonnage pour generate.regex
  • Mention d’un article affirmant que GPT4 peut renvoyer un JSON valide dans la plupart des cas en fournissant des exemples dans le message système
  • Le mécanisme de la bibliothèque est salué, avec de la curiosité quant à son usage potentiel pour des tâches nécessitant des entrées structurées autres que JSON
  • Intérêt pour le potentiel de ces bibliothèques dans la planification de trajectoire formelle
  • Mention d’un article indiquant que demander des formats de sortie complexes peut dégrader les performances sur la tâche de base, ce qui a été observé dans des benchmarks d’édition de code de GPT-3.5 et GPT-4
  • Mention d’un article indiquant que LLama.cpp a implémenté l’échantillonnage basé sur une grammaire le mois dernier
  • Processus consistant à mettre à jour un « masque » de biais sur les logits après chaque token généré par le LLM afin que le token suivant puisse être un token JSON valide