InviteSource est une boîte à outils pour créer, partager et utiliser des invites en langage naturel.
Des travaux récents ont montré que les modèles de grands langues présentent la capacité d'effectuer une généralisation raisonnable de zéro à de nouvelles tâches. Par exemple, GPT-3 a démontré que les modèles de grands langues ont de fortes capacités de zéro et peu de coups. Flan et T0 ont ensuite démontré que les modèles de langue pré-formés ont réglé dans une mode massivement multitâche un rendement encore plus solide. Un dénominateur commun dans ces travaux est l'utilisation d'invites qui ont suscité des intérêts parmi les chercheurs et les ingénieurs de la PNL. Cela souligne la nécessité de nouveaux outils pour créer, partager et utiliser des invites en langage naturel.
Les invites sont des fonctions qui mappent un exemple d'un ensemble de données vers une entrée en langage naturel et une sortie cible. InviteSource contient une collection croissante d'invites (que nous appelons P3 : P ublic P ool of P Rompts). Au 20 janvier 2022, il y a ~ 2 000 invites en anglais pour plus de 170 ensembles de données d'anglais en P3.

InviteSource fournit les outils pour créer et partager des invites de langage naturel (voir comment créer des invites, puis utiliser les milliers d'invites existantes et nouvellement créées via une API simple (voir comment utiliser les invites). Les invites sont enregistrées dans des fichiers structurés autonomes et sont écrits dans un langage de modèles simple appelé Jinja.
{{premise}}
Question: Does this imply that "{{hypothesis}}"? Yes, no, or maybe? ||| {{answer_choices[labe l] }}Vous pouvez parcourir les invites existantes sur la version hébergée d'Invitsource.
Si vous n'avez pas l'intention de créer de nouvelles invites, vous pouvez simplement s'exécuter:
pip install promptsourceSinon, vous devez installer le repo localement:
pip install -e . Pour installer le module promptsource Remarque: Pour des raisons de stabilité, vous aurez actuellement besoin d'un environnement Python 3.7 pour exécuter la dernière étape. Cependant, si vous avez seulement l'intention d'utiliser les invites et de ne pas créer de nouvelles invites via l'interface, vous pouvez supprimer cette contrainte dans le setup.py et installer le package localement.
Vous pouvez appliquer des invites aux exemples à partir de jeux de données de la bibliothèque de jeux de données FACE HUGGING.
# Load an example from the datasets ag_news
> >> from datasets import load_dataset
> >> dataset = load_dataset ( "ag_news" , split = "train" )
> >> example = dataset [ 1 ]
# Load prompts for this dataset
> >> from promptsource . templates import DatasetTemplates
> >> ag_news_prompts = DatasetTemplates ( 'ag_news' )
# Print all the prompts available for this dataset. The keys of the dict are the UUIDs the uniquely identify each of the prompt, and the values are instances of `Template` which wraps prompts
> >> print ( ag_news_prompts . templates )
{ '24e44a81-a18a-42dd-a71c-5b31b2d2cb39' : < promptsource . templates . Template object at 0x7fa7aeb20350 > , '8fdc1056-1029-41a1-9c67-354fc2b8ceaf' : < promptsource . templates . Template object at 0x7fa7aeb17c10 > , '918267e0-af68-4117-892d-2dbe66a58ce9' : < promptsource . templates . Template object at 0x7fa7ac7a2310 > , '9345df33-4f23-4944-a33c-eef94e626862' : < promptsource . templates . Template object at 0x7fa7ac7a2050 > , '98534347-fff7-4c39-a795-4e69a44791f7' : < promptsource . templates . Template object at 0x7fa7ac7a1310 > , 'b401b0ee-6ffe-4a91-8e15-77ee073cd858' : < promptsource . templates . Template object at 0x7fa7ac7a12d0 > , 'cb355f33-7e8c-4455-a72b-48d315bd4f60' : < promptsource . templates . Template object at 0x7fa7ac7a1110 > }
# Select a prompt by its name
>> > prompt = ag_news_prompts [ "classify_question_first" ]
# Apply the prompt to the example
>> > result = prompt . apply ( example )
>> > print ( "INPUT: " , result [ 0 ])
INPUT : What label best describes this news article ?
Carlyle Looks Toward Commercial Aerospace ( Reuters ) Reuters - Private investment firm Carlyle Group , which has a reputation for making well - timed and occasionally controversial plays in the defense industry , has quietly placed its bets on another part of the market .
> >> print ( "TARGET: " , result [ 1 ])
TARGET : BusinessDans le cas où vous recherchez les invites disponibles pour un sous-ensemble particulier d'un ensemble de données, vous devez utiliser la syntaxe suivante:
dataset_name , subset_name = "super_glue" , "rte"
dataset = load_dataset ( f" { dataset_name } / { subset_name } " , split = "train" )
example = dataset [ 0 ]
prompts = DatasetTemplates ( f" { dataset_name } / { subset_name } " )Vous pouvez également collecter toutes les invites disponibles pour leurs ensembles de données associés:
> >> from promptsource . templates import TemplateCollection
# Get all the prompts available in PromptSource
> >> collection = TemplateCollection ()
# Print a dict where the key is the pair (dataset name, subset name)
# and the value is an instance of DatasetTemplates
> >> print ( collection . datasets_templates )
{( 'poem_sentiment' , None ): < promptsource . templates . DatasetTemplates object at 0x7fa7ac7939d0 > , ( 'common_gen' , None ): < promptsource . templates . DatasetTemplates object at 0x7fa7ac795410 > , ( 'anli' , None ): < promptsource . templates . DatasetTemplates object at 0x7fa7ac794590 > , ( 'cc_news' , None ): < promptsource . templates . DatasetTemplates object at 0x7fa7ac798a90 > , ( 'craigslist_bargains' , None ): < promptsource . templates . DatasetTemplates object at 0x7fa7ac7a2c10 > ,...}Vous pouvez en savoir plus sur l'API d'Imptetsource pour stocker, manipuler et utiliser des invites dans la documentation.
Invitsource fournit une interface graphique basée sur le Web qui permet aux développeurs d'écrire des invites dans un langage de modèles et de visualiser immédiatement leurs sorties sur différents exemples.
Il y a 3 modes dans l'application:

Pour lancer l'application localement, veuillez d'abord vous assurer que vous avez suivi les étapes de la configuration, et à partir du répertoire racine du repo, exécutez:
streamlit run promptsource/app.py Vous pouvez également parcourir les invites existantes sur la version hébergée d'Inmptsource. Remarque La version hébergée désactive le mode d'approvisionnement ( streamlit run promptsource/app.py -- --read-only ).
Avant de créer de nouvelles invites, vous devez lire les directives de contribution qui donnent une description étape par étape de la façon de contribuer à la collection d'invites.
Certains ensembles de données ne sont pas gérés automatiquement par datasets et obligent les utilisateurs à télécharger l'ensemble de données manuellement ( story_cloze par exemple).
Pour gérer également ces ensembles de données, nous exigeons que les utilisateurs téléchargent l'ensemble de données et le mettent dans ~/.cache/promptsource . Il s'agit du répertoire racine contenant tous les ensembles de données téléchargés manuellement.
Vous pouvez remplacer ce chemin par défaut à l'aide de la variable d'environnement PROMPTSOURCE_MANUAL_DATASET_DIR . Cela devrait pointer vers le répertoire racine.
InsideSource et P3 ont été initialement développés dans le cadre du projet BigScience pour une recherche ouverte ?, Une initiative d'un an ciblant l'étude des grands modèles et ensembles de données. L'objectif du projet est de rechercher des modèles de langage dans un environnement public en dehors des grandes entreprises technologiques. Le projet compte 600 chercheurs de 50 pays et plus de 250 institutions.
En particulier, InterSource et P3 ont été les premières étapes de la formation Paper multitâche PROPIDE Permet une généralisation des tâches zéro-shot.
Vous trouverez le référentiel officiel pour reproduire les résultats du document ici: https://github.com/bigscience-workshop/t-zero. Nous avons également publié T0 * (prononcer "t zero"), une série de modèles formés sur P3 et présentés dans l'article. Des points de contrôle sont disponibles ici.
Avertissement ou erreur à propos de Darwin sur OS X: essayez de rétrograder Pyarrow à 3.0.0.
ConnectionRefusedError: [Errno 61] Connexion refusée: se produit occasionnellement. Essayez de redémarrer l'application.
Si vous trouvez P3 ou InviteSource utile, veuillez citer la référence suivante:
@misc { bach2022promptsource ,
title = { PromptSource: An Integrated Development Environment and Repository for Natural Language Prompts } ,
author = { Stephen H. Bach and Victor Sanh and Zheng-Xin Yong and Albert Webson and Colin Raffel and Nihal V. Nayak and Abheesht Sharma and Taewoon Kim and M Saiful Bari and Thibault Fevry and Zaid Alyafeai and Manan Dey and Andrea Santilli and Zhiqing Sun and Srulik Ben-David and Canwen Xu and Gunjan Chhablani and Han Wang and Jason Alan Fries and Maged S. Al-shaibani and Shanya Sharma and Urmish Thakker and Khalid Almubarak and Xiangru Tang and Xiangru Tang and Mike Tian-Jian Jiang and Alexander M. Rush } ,
year = { 2022 } ,
eprint = { 2202.01279 } ,
archivePrefix = { arXiv } ,
primaryClass = { cs.LG }
}