| # Cosmos QA (gpt2) | |
| > This is part of the | |
| [Flax/Jax Community Week](https://discuss.huggingface.co/t/train-a-gpt2-model-for-contextual-common-sense-reasoning-using-the-cosmos-qa-dataset/7463), organized by [HuggingFace](https://huggingface.co/) and TPU usage sponsored by Google. | |
| ## Team Members | |
| -Rohan V Kashyap ([Rohan](https://huggingface.co/Rohan)) | |
| -Vivek V Kashyap ([Vivek](https://huggingface.co/Vivek)) | |
| ##Dataset | |
| [Cosmos QA: Machine Reading Comprehension with Contextual Commonsense Reasoning](https://huggingface.co/datasets/cosmos_qa).This dataset contains a set of 35,600 problems that require commonsense-based reading comprehension, formulated as multiple-choice questions.Understanding narratives requires reading between the lines, which in turn, requires interpreting the likely causes and effects of events, even when they are not mentioned explicitly. | |
| ###Example | |
| ```json | |
| {"Context":["It's a very humbling experience when you need someone | |
| to dress you every morning, tie your shoes, and put your hair | |
| up. Every menial task takes an unprecedented amount of effort. | |
| It made me appreciate Dan even more. But anyway I shan't | |
| dwell on this (I'm not dying after all) and not let it detract from | |
| my lovely 5 days with my friends visiting from Jersey."], | |
| "Question":["What's a possible reason the writer needed someone to | |
| dress him every morning?"], | |
| "Multiple Choice":["A: The writer doesn't like putting effort into these tasks.", | |
| "B: The writer has a physical disability.", | |
| "C: The writer is bad at doing his own hair.", | |
| "D: None of the above choices."] | |
| "link":"https://arxiv.org/pdf/1909.00277.pdf" | |
| } | |
| ``` | |
| ##How to use | |
| ```bash | |
| # Installing requirements | |
| pip install transformers | |
| pip install datasets | |
| ``` | |
| ```python | |
| from model_file import FlaxGPT2ForMultipleChoice | |
| from datasets import Dataset | |
| model_path="flax-community/gpt2-Cosmos" | |
| model = FlaxGPT2ForMultipleChoice.from_pretrained(model_path,input_shape=(1,4,1)) | |
| dataset=Dataset.from_csv('./') | |
| def preprocess(example): | |
| example['context&question']=example['context']+example['question'] | |
| example['first_sentence']=[example['context&question'],example['context&question'],example['context&question'],example['context&question']] | |
| example['second_sentence']=example['answer0'],example['answer1'],example['answer2'],example['answer3'] | |
| return example | |
| dataset=dataset.map(preprocess) | |
| def tokenize(examples): | |
| a=tokenizer(examples['first_sentence'],examples['second_sentence'],padding='max_length',truncation=True,max_length=256,return_tensors='jax') | |
| a['labels']=examples['label'] | |
| return a | |
| dataset=dataset.map(tokenize) | |
| input_id=jnp.array(dataset['input_ids']) | |
| att_mask=jnp.array(dataset['attention_mask']) | |
| outputs=model(input_id,att_mask) | |
| final_output=jnp.argmax(outputs,axis=-1) | |
| print(f"the predction of the dataset : {final_output}") | |
| ``` | |
| ``` | |
| The Correct answer:-Option 1 | |
| ``` | |
| ## Evaluation | |
| The following tables summarize the scores obtained by the **GPT2-CosmosQA**. | |
| | Model | Dev Acc | Test Acc | | |
| |:---------------:|:-----:|:-----:| | |
| | GPT-FT | 54.0 | 54.4. | | |
| | GPT2-CosmosQA | 54.3 | 50.3 | | |