From 5d820f3ca61f55962dc3b604c24e24f1f07b406b Mon Sep 17 00:00:00 2001 From: Tom Grek Date: Tue, 1 Sep 2020 14:52:32 -0700 Subject: [PATCH] Model card for primer/BART-Squad2 (#6801) --- model_cards/Primer/bart-squad2/README.md | 63 ++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 model_cards/Primer/bart-squad2/README.md diff --git a/model_cards/Primer/bart-squad2/README.md b/model_cards/Primer/bart-squad2/README.md new file mode 100644 index 0000000000..df58603999 --- /dev/null +++ b/model_cards/Primer/bart-squad2/README.md @@ -0,0 +1,63 @@ +--- +language: "en" +--- + +# BART-Squad2 + +## Model description + +BART for extractive (span-based) question answering, trained on Squad 2.0. + +F1 score of 87.4. + +## Intended uses & limitations + +Unfortunately, the Huggingface auto-inference API won't run this model, so if you're attempting to try it through the input box above and it complains, don't be discouraged! + +#### How to use + +Here's a quick way to get question answering running locally: + +```python +from transformers import AutoTokenizer, AutoModelForQuestionAnswering + +tokenizer = AutoTokenizer.from_pretrained("Primer/bart-squad2") +model = AutoModelForQuestionAnswering.from_pretrained("Primer/bart-squad2") +model.to('cuda'); model.eval() + +def answer(question, text): + seq = '' + question + ' ' + text + ' ' + tokens = tokenizer.encode_plus(seq, return_tensors='pt', padding='max_length', max_length=1024) + input_ids = tokens['input_ids'].to('cuda') + attention_mask = tokens['attention_mask'].to('cuda') + start, end, _ = model(input_ids, attention_mask=attention_mask) + start_idx = int(start.argmax().int()) + end_idx = int(end.argmax().int()) + print(tokenizer.decode(input_ids[0, start_idx:end_idx]).strip()) + # ^^ it will be an empty string if the model decided "unanswerable" + +>>> question = "Where does Tom live?" +>>> context = "Tom is an engineer in San Francisco." +>>> answer(question, context) +San Francisco +``` + +(Just drop the `.to('cuda')` stuff if running on CPU). + +#### Limitations and bias + +Unknown, no further evaluation has been performed. In a technical sense one big limitation is that it's 1.6G 😬 + +## Training procedure + +`run_squad.py` with: + +|param|value| +|---|---| +|batch size|8| +|max_seq_length|1024| +|learning rate|1e-5| +|epochs|2| + +Modified to freeze shared parameters and encoder embeddings. +