raj26000 commited on
Commit
704d11b
·
verified ·
1 Parent(s): 0a8e064

Update README.md

Browse files
Files changed (1) hide show
  1. README.md +94 -98
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:** [More Information Needed]
24
- - **Funded by [optional]:** [More Information Needed]
25
- - **Shared by [optional]:** [More Information Needed]
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
- [More Information Needed]
48
-
49
- ### Downstream Use [optional]
50
-
51
- <!-- This section is for the model use when fine-tuned for a task, or when plugged into a larger ecosystem/app -->
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
- [More Information Needed]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
- [More Information Needed]
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
- [More Information Needed]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
94
 
95
 
96
  #### Training Hyperparameters
97
 
98
- - **Training regime:** [More Information Needed] <!--fp32, fp16 mixed precision, bf16 mixed precision, bf16 non-mixed precision, fp16 non-mixed precision, fp8 mixed precision -->
 
 
 
99
 
100
  #### Speeds, Sizes, Times [optional]
101
 
102
  <!-- This section provides information about throughput, start/end time, checkpoint size if relevant, etc. -->
103
 
104
- [More Information Needed]
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
- [More Information Needed]
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
- [More Information Needed]
129
 
130
  ### Results
131
 
132
- [More Information Needed]
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
- [More Information Needed]
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
- [More Information Needed]
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)