Update README.md
Browse files
README.md
CHANGED
@@ -7,7 +7,7 @@ datasets:
|
|
7 |
---
|
8 |
|
9 |
# Model Card for Model ID
|
10 |
-
Finetuned Phi2 model on the Cosmos QA dataset for commonsense-based MCQ reading comprehension.
|
11 |
<!-- Provide a quick summary of what the model is/does. -->
|
12 |
|
13 |
|
@@ -20,21 +20,11 @@ Finetuned Phi2 model on the Cosmos QA dataset for commonsense-based MCQ reading
|
|
20 |
|
21 |
This is the model card of a 🤗 transformers model that has been pushed on the Hub. This model card has been automatically generated.
|
22 |
|
23 |
-
- **Developed by:**
|
24 |
-
- **
|
25 |
-
- **
|
26 |
-
- **Model type:** [More Information Needed]
|
27 |
-
- **Language(s) (NLP):** [More Information Needed]
|
28 |
-
- **License:** [More Information Needed]
|
29 |
-
- **Finetuned from model [optional]:** [More Information Needed]
|
30 |
|
31 |
-
### Model Sources [optional]
|
32 |
|
33 |
-
<!-- Provide the basic links for the model. -->
|
34 |
-
|
35 |
-
- **Repository:** [More Information Needed]
|
36 |
-
- **Paper [optional]:** [More Information Needed]
|
37 |
-
- **Demo [optional]:** [More Information Needed]
|
38 |
|
39 |
## Uses
|
40 |
|
@@ -43,38 +33,72 @@ This is the model card of a 🤗 transformers model that has been pushed on the
|
|
43 |
### Direct Use
|
44 |
|
45 |
<!-- This section is for the model use without fine-tuning or plugging into a larger ecosystem/app. -->
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
[More Information Needed]
|
54 |
-
|
55 |
-
### Out-of-Scope Use
|
56 |
-
|
57 |
-
<!-- This section addresses misuse, malicious use, and uses that the model will not work well for. -->
|
58 |
-
|
59 |
-
[More Information Needed]
|
60 |
-
|
61 |
-
## Bias, Risks, and Limitations
|
62 |
-
|
63 |
-
<!-- This section is meant to convey both technical and sociotechnical limitations. -->
|
64 |
-
|
65 |
-
[More Information Needed]
|
66 |
-
|
67 |
-
### Recommendations
|
68 |
-
|
69 |
-
<!-- This section is meant to convey recommendations with respect to the bias, risk, and technical limitations. -->
|
70 |
-
|
71 |
-
Users (both direct and downstream) should be made aware of the risks, biases and limitations of the model. More information needed for further recommendations.
|
72 |
|
73 |
## How to Get Started with the Model
|
74 |
|
75 |
Use the code below to get started with the model.
|
76 |
|
77 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
78 |
|
79 |
## Training Details
|
80 |
|
@@ -82,26 +106,46 @@ Use the code below to get started with the model.
|
|
82 |
|
83 |
<!-- This should link to a Dataset Card, perhaps with a short stub of information on what the training data is all about as well as documentation related to data pre-processing or additional filtering. -->
|
84 |
|
85 |
-
|
86 |
|
87 |
### Training Procedure
|
88 |
|
89 |
<!-- This relates heavily to the Technical Specifications. Content here should link to that section when it is relevant to the training procedure. -->
|
|
|
90 |
|
91 |
#### Preprocessing [optional]
|
92 |
|
93 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
94 |
|
95 |
|
96 |
#### Training Hyperparameters
|
97 |
|
98 |
-
- **Training regime:**
|
|
|
|
|
|
|
99 |
|
100 |
#### Speeds, Sizes, Times [optional]
|
101 |
|
102 |
<!-- This section provides information about throughput, start/end time, checkpoint size if relevant, etc. -->
|
103 |
|
104 |
-
|
105 |
|
106 |
## Evaluation
|
107 |
|
@@ -113,45 +157,30 @@ Use the code below to get started with the model.
|
|
113 |
|
114 |
<!-- This should link to a Dataset Card if possible. -->
|
115 |
|
116 |
-
|
117 |
|
118 |
-
#### Factors
|
119 |
|
120 |
-
<!-- These are the things the evaluation is disaggregating by, e.g., subpopulations or domains. -->
|
121 |
-
|
122 |
-
[More Information Needed]
|
123 |
|
124 |
#### Metrics
|
125 |
|
126 |
<!-- These are the evaluation metrics being used, ideally with a description of why. -->
|
127 |
|
128 |
-
|
129 |
|
130 |
### Results
|
131 |
|
132 |
-
|
133 |
-
|
134 |
-
#### Summary
|
135 |
-
|
136 |
|
137 |
|
138 |
## Model Examination [optional]
|
139 |
|
140 |
<!-- Relevant interpretability work for the model goes here -->
|
141 |
|
142 |
-
[More Information Needed]
|
143 |
-
|
144 |
## Environmental Impact
|
145 |
|
146 |
<!-- Total emissions (in grams of CO2eq) and additional considerations, such as electricity usage, go here. Edit the suggested text below accordingly -->
|
147 |
|
148 |
-
Carbon emissions can be estimated using the [Machine Learning Impact calculator](https://mlco2.github.io/impact#compute) presented in [Lacoste et al. (2019)](https://arxiv.org/abs/1910.09700).
|
149 |
|
150 |
-
- **Hardware Type:** [More Information Needed]
|
151 |
-
- **Hours used:** [More Information Needed]
|
152 |
-
- **Cloud Provider:** [More Information Needed]
|
153 |
-
- **Compute Region:** [More Information Needed]
|
154 |
-
- **Carbon Emitted:** [More Information Needed]
|
155 |
|
156 |
## Technical Specifications [optional]
|
157 |
|
@@ -161,42 +190,9 @@ Carbon emissions can be estimated using the [Machine Learning Impact calculator]
|
|
161 |
|
162 |
### Compute Infrastructure
|
163 |
|
164 |
-
|
165 |
-
|
166 |
-
#### Hardware
|
167 |
-
|
168 |
-
[More Information Needed]
|
169 |
-
|
170 |
-
#### Software
|
171 |
-
|
172 |
-
[More Information Needed]
|
173 |
-
|
174 |
-
## Citation [optional]
|
175 |
-
|
176 |
-
<!-- If there is a paper or blog post introducing the model, the APA and Bibtex information for that should go in this section. -->
|
177 |
-
|
178 |
-
**BibTeX:**
|
179 |
|
180 |
-
[More Information Needed]
|
181 |
-
|
182 |
-
**APA:**
|
183 |
-
|
184 |
-
[More Information Needed]
|
185 |
-
|
186 |
-
## Glossary [optional]
|
187 |
-
|
188 |
-
<!-- If relevant, include terms and calculations in this section that can help readers understand the model or model card. -->
|
189 |
-
|
190 |
-
[More Information Needed]
|
191 |
-
|
192 |
-
## More Information [optional]
|
193 |
-
|
194 |
-
[More Information Needed]
|
195 |
|
196 |
## Model Card Authors [optional]
|
197 |
|
198 |
-
|
199 |
-
|
200 |
-
## Model Card Contact
|
201 |
-
|
202 |
-
[More Information Needed]
|
|
|
7 |
---
|
8 |
|
9 |
# Model Card for Model ID
|
10 |
+
Finetuned Phi2 model on the Cosmos QA dataset using PEFT and QLoRA for commonsense-based MCQ reading comprehension.
|
11 |
<!-- Provide a quick summary of what the model is/does. -->
|
12 |
|
13 |
|
|
|
20 |
|
21 |
This is the model card of a 🤗 transformers model that has been pushed on the Hub. This model card has been automatically generated.
|
22 |
|
23 |
+
- **Developed by:** Rajdeep Agrawal (https://huggingface.co/raj26000)
|
24 |
+
- **Model type:** Causal Language Model for Text Generation (https://huggingface.co/microsoft/phi-2)
|
25 |
+
- **Finetuned from model [optional]:** https://huggingface.co/microsoft/phi-2
|
|
|
|
|
|
|
|
|
26 |
|
|
|
27 |
|
|
|
|
|
|
|
|
|
|
|
28 |
|
29 |
## Uses
|
30 |
|
|
|
33 |
### Direct Use
|
34 |
|
35 |
<!-- This section is for the model use without fine-tuning or plugging into a larger ecosystem/app. -->
|
36 |
+
The following code loads the finetuned adapter weights and merges them with the original frozen parameters to create the full model version.
|
37 |
+
```
|
38 |
+
lora_model = AutoPeftModelForCausalLM.from_pretrained('raj26000/phi2-instruct-cosmosqa-qlora', device_map='auto', trust_remote_code=True)
|
39 |
+
tokenizer = AutoTokenizer.from_pretrained('raj26000/phi2-instruct-cosmosqa-qlora', trust_remote_code=True)
|
40 |
+
model = lora_model.merge_and_unload()
|
41 |
+
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
42 |
|
43 |
## How to Get Started with the Model
|
44 |
|
45 |
Use the code below to get started with the model.
|
46 |
|
47 |
+
```
|
48 |
+
from datasets import load_dataset
|
49 |
+
from transformers import BitsAndBytesConfig, AutoTokenizer, AutoModelForCausalLM, TrainingArguments
|
50 |
+
from peft import AutoPeftModelForCausalLM
|
51 |
+
from tqdm import tqdm
|
52 |
+
|
53 |
+
class Inference:
|
54 |
+
def __init__(self):
|
55 |
+
self.data = load_dataset('cosmos_qa')
|
56 |
+
self.lora_model = AutoPeftModelForCausalLM.from_pretrained('raj26000/phi2-instruct-cosmosqa-qlora', trust_remote_code=True)
|
57 |
+
self.tokenizer = AutoTokenizer.from_pretrained('raj26000/phi2-instruct-cosmosqa-qlora', trust_remote_code=True)
|
58 |
+
self.model = self.lora_model.merge_and_unload()
|
59 |
+
self.test_data = self.data['test'].map(self.instruction_prompt_test)
|
60 |
+
|
61 |
+
|
62 |
+
def instruction_prompt_test(self, example):
|
63 |
+
instruction = f"""
|
64 |
+
Given a context and a question asked based on it, select the best answer from among the four provided choices deonted by 0. , 1. , 2. , 3.
|
65 |
+
Note that this would require reading between the lines over people's everyday narratives. The question could be based on the likely causes or effects of events and may require reasoning beyond the exact text spans in the context.\n
|
66 |
+
CONTEXT: {example['context']}\n
|
67 |
+
QUESTION: {example['question']}\n
|
68 |
+
CHOICES:
|
69 |
+
0. {example['answer0']}\n
|
70 |
+
1. {example['answer1']}\n
|
71 |
+
2. {example['answer2']}\n
|
72 |
+
3. {example['answer3']}\n
|
73 |
+
Answer:
|
74 |
+
"""
|
75 |
+
return {'text': instruction}
|
76 |
+
|
77 |
+
def instruct_predict(self, prompt):
|
78 |
+
tokenized_text = self.tokenizer(prompt, return_tensors='pt')
|
79 |
+
output = self.model(input_ids=tokenized_text['input_ids'].cuda(), attention_mask=tokenized_text['attention_mask'].cuda())
|
80 |
+
logits = output.logits[0][-1]
|
81 |
+
choices = [' 0', ' 1', ' 2', ' 3']
|
82 |
+
ans_logits = sorted([(logits[self.tokenizer(ans)['input_ids'][0]], ans.strip()) for ans in choices], key=lambda x: x[0], reverse=True)
|
83 |
+
pred_choice = ans_logits[0][1]
|
84 |
+
return pred_choice
|
85 |
+
|
86 |
+
def predict_sample(self, context, question, answer0, answer1, answer2, answer3):
|
87 |
+
example = {'context': context, 'question': question, 'answer0': answer0, 'answer1': answer1, 'answer2': answer2, 'answer3': answer3}
|
88 |
+
instruction = self.instruction_prompt_test(example)['text']
|
89 |
+
pred_choice = self.instruct_predict(instruction)
|
90 |
+
return pred_choice
|
91 |
+
|
92 |
+
|
93 |
+
infer = Inference()
|
94 |
+
infer.predict_sample(context='I posted a moment ago regarding a girl i 'd asked out at work and got some good advice . Basically , I asked this girl out at work and she said she would like to do something , but work made it difficult , although she did reinterate that she wanted to do something . This was a couple of weeks back now .',
|
95 |
+
question='Why do I keep saying that she reiterated that she wanted to do something ?',
|
96 |
+
answer0='Because I wanted to show off that she wanted me .',
|
97 |
+
answer1='I wanted to let people know she loved me .',
|
98 |
+
answer2='To let them know that she actually showed interest in me .',
|
99 |
+
answer3='To make sure people knew that she was mine .'
|
100 |
+
)
|
101 |
+
```
|
102 |
|
103 |
## Training Details
|
104 |
|
|
|
106 |
|
107 |
<!-- This should link to a Dataset Card, perhaps with a short stub of information on what the training data is all about as well as documentation related to data pre-processing or additional filtering. -->
|
108 |
|
109 |
+
https://huggingface.co/datasets/cosmos_qa
|
110 |
|
111 |
### Training Procedure
|
112 |
|
113 |
<!-- This relates heavily to the Technical Specifications. Content here should link to that section when it is relevant to the training procedure. -->
|
114 |
+
The model was trained using the HuggingFace Supervised Finetuning Trainer (SFT) with LoRA and 4-bit quantization offered by BitsAndBytes. An instructional prompt was created for each datapoint in the dataset and the model was trained over 2 epochs.
|
115 |
|
116 |
#### Preprocessing [optional]
|
117 |
|
118 |
+
The following instruction prompt was used to format the dataset before training:
|
119 |
+
```
|
120 |
+
def instruction_prompt(example):
|
121 |
+
instruction = f"""
|
122 |
+
Given a context and a question asked based on it, select the best answer from among the four provided choices deonted by 0. , 1. , 2. , 3.
|
123 |
+
Note that this would require reading between the lines over people's everyday narratives. The question could be based on the likely causes or effects of events and may require reasoning beyond the exact text spans in the context.\n
|
124 |
+
CONTEXT: {example['context']}\n
|
125 |
+
QUESTION: {example['question']}\n
|
126 |
+
CHOICES:
|
127 |
+
0. {example['answer0']}\n
|
128 |
+
1. {example['answer1']}\n
|
129 |
+
2. {example['answer2']}\n
|
130 |
+
3. {example['answer3']}\n
|
131 |
+
Answer: {example['label']}
|
132 |
+
"""
|
133 |
+
return {'text': instruction}
|
134 |
+
```
|
135 |
|
136 |
|
137 |
#### Training Hyperparameters
|
138 |
|
139 |
+
- **Training regime:**
|
140 |
+
- LoRA hyperparameters: r=16, lora_alpha=32, lora_dropout=0.05, target_modules=all-linear, bias=none, task_type=CAUSAL_LM
|
141 |
+
- Quantization: 4-bit Normal Float (nf4) quantization, double quantization, compute_dtype=torch.float16
|
142 |
+
- Training Args: learning_rate=3e-4, weight_decay=0.01, num_epochs=2, fp16=True, optim=adamw_torch_fused, gradient_accumulation_steps=2, gradient_checkpointing=True, neftune_noise_alpha=5
|
143 |
|
144 |
#### Speeds, Sizes, Times [optional]
|
145 |
|
146 |
<!-- This section provides information about throughput, start/end time, checkpoint size if relevant, etc. -->
|
147 |
|
148 |
+
|
149 |
|
150 |
## Evaluation
|
151 |
|
|
|
157 |
|
158 |
<!-- This should link to a Dataset Card if possible. -->
|
159 |
|
160 |
+
https://huggingface.co/datasets/cosmos_qa/viewer/default/test
|
161 |
|
|
|
162 |
|
|
|
|
|
|
|
163 |
|
164 |
#### Metrics
|
165 |
|
166 |
<!-- These are the evaluation metrics being used, ideally with a description of why. -->
|
167 |
|
168 |
+
Accuracy metric on the Cosmos QA test dataset.
|
169 |
|
170 |
### Results
|
171 |
|
172 |
+
85.85 %, ranked 18/88 on the Allen AI CosmosQA leaderboard.
|
|
|
|
|
|
|
173 |
|
174 |
|
175 |
## Model Examination [optional]
|
176 |
|
177 |
<!-- Relevant interpretability work for the model goes here -->
|
178 |
|
|
|
|
|
179 |
## Environmental Impact
|
180 |
|
181 |
<!-- Total emissions (in grams of CO2eq) and additional considerations, such as electricity usage, go here. Edit the suggested text below accordingly -->
|
182 |
|
|
|
183 |
|
|
|
|
|
|
|
|
|
|
|
184 |
|
185 |
## Technical Specifications [optional]
|
186 |
|
|
|
190 |
|
191 |
### Compute Infrastructure
|
192 |
|
193 |
+
One 16GB P-100 GPU in a Kaggle environment.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
194 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
195 |
|
196 |
## Model Card Authors [optional]
|
197 |
|
198 |
+
Rajdeep Agrawal (https://huggingface.co/raj26000)
|
|
|
|
|
|
|
|