ikuyamada commited on
Commit
f0fb49b
·
verified ·
1 Parent(s): 47aa3d7

Upload model

Browse files
Files changed (3) hide show
  1. README.md +199 -0
  2. config.json +1 -2
  3. modeling.py +17 -10
README.md ADDED
@@ -0,0 +1,199 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ library_name: transformers
3
+ tags: []
4
+ ---
5
+
6
+ # Model Card for Model ID
7
+
8
+ <!-- Provide a quick summary of what the model is/does. -->
9
+
10
+
11
+
12
+ ## Model Details
13
+
14
+ ### Model Description
15
+
16
+ <!-- Provide a longer summary of what this model is. -->
17
+
18
+ This is the model card of a 🤗 transformers model that has been pushed on the Hub. This model card has been automatically generated.
19
+
20
+ - **Developed by:** [More Information Needed]
21
+ - **Funded by [optional]:** [More Information Needed]
22
+ - **Shared by [optional]:** [More Information Needed]
23
+ - **Model type:** [More Information Needed]
24
+ - **Language(s) (NLP):** [More Information Needed]
25
+ - **License:** [More Information Needed]
26
+ - **Finetuned from model [optional]:** [More Information Needed]
27
+
28
+ ### Model Sources [optional]
29
+
30
+ <!-- Provide the basic links for the model. -->
31
+
32
+ - **Repository:** [More Information Needed]
33
+ - **Paper [optional]:** [More Information Needed]
34
+ - **Demo [optional]:** [More Information Needed]
35
+
36
+ ## Uses
37
+
38
+ <!-- Address questions around how the model is intended to be used, including the foreseeable users of the model and those affected by the model. -->
39
+
40
+ ### Direct Use
41
+
42
+ <!-- This section is for the model use without fine-tuning or plugging into a larger ecosystem/app. -->
43
+
44
+ [More Information Needed]
45
+
46
+ ### Downstream Use [optional]
47
+
48
+ <!-- This section is for the model use when fine-tuned for a task, or when plugged into a larger ecosystem/app -->
49
+
50
+ [More Information Needed]
51
+
52
+ ### Out-of-Scope Use
53
+
54
+ <!-- This section addresses misuse, malicious use, and uses that the model will not work well for. -->
55
+
56
+ [More Information Needed]
57
+
58
+ ## Bias, Risks, and Limitations
59
+
60
+ <!-- This section is meant to convey both technical and sociotechnical limitations. -->
61
+
62
+ [More Information Needed]
63
+
64
+ ### Recommendations
65
+
66
+ <!-- This section is meant to convey recommendations with respect to the bias, risk, and technical limitations. -->
67
+
68
+ Users (both direct and downstream) should be made aware of the risks, biases and limitations of the model. More information needed for further recommendations.
69
+
70
+ ## How to Get Started with the Model
71
+
72
+ Use the code below to get started with the model.
73
+
74
+ [More Information Needed]
75
+
76
+ ## Training Details
77
+
78
+ ### Training Data
79
+
80
+ <!-- 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. -->
81
+
82
+ [More Information Needed]
83
+
84
+ ### Training Procedure
85
+
86
+ <!-- This relates heavily to the Technical Specifications. Content here should link to that section when it is relevant to the training procedure. -->
87
+
88
+ #### Preprocessing [optional]
89
+
90
+ [More Information Needed]
91
+
92
+
93
+ #### Training Hyperparameters
94
+
95
+ - **Training regime:** [More Information Needed] <!--fp32, fp16 mixed precision, bf16 mixed precision, bf16 non-mixed precision, fp16 non-mixed precision, fp8 mixed precision -->
96
+
97
+ #### Speeds, Sizes, Times [optional]
98
+
99
+ <!-- This section provides information about throughput, start/end time, checkpoint size if relevant, etc. -->
100
+
101
+ [More Information Needed]
102
+
103
+ ## Evaluation
104
+
105
+ <!-- This section describes the evaluation protocols and provides the results. -->
106
+
107
+ ### Testing Data, Factors & Metrics
108
+
109
+ #### Testing Data
110
+
111
+ <!-- This should link to a Dataset Card if possible. -->
112
+
113
+ [More Information Needed]
114
+
115
+ #### Factors
116
+
117
+ <!-- These are the things the evaluation is disaggregating by, e.g., subpopulations or domains. -->
118
+
119
+ [More Information Needed]
120
+
121
+ #### Metrics
122
+
123
+ <!-- These are the evaluation metrics being used, ideally with a description of why. -->
124
+
125
+ [More Information Needed]
126
+
127
+ ### Results
128
+
129
+ [More Information Needed]
130
+
131
+ #### Summary
132
+
133
+
134
+
135
+ ## Model Examination [optional]
136
+
137
+ <!-- Relevant interpretability work for the model goes here -->
138
+
139
+ [More Information Needed]
140
+
141
+ ## Environmental Impact
142
+
143
+ <!-- Total emissions (in grams of CO2eq) and additional considerations, such as electricity usage, go here. Edit the suggested text below accordingly -->
144
+
145
+ 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).
146
+
147
+ - **Hardware Type:** [More Information Needed]
148
+ - **Hours used:** [More Information Needed]
149
+ - **Cloud Provider:** [More Information Needed]
150
+ - **Compute Region:** [More Information Needed]
151
+ - **Carbon Emitted:** [More Information Needed]
152
+
153
+ ## Technical Specifications [optional]
154
+
155
+ ### Model Architecture and Objective
156
+
157
+ [More Information Needed]
158
+
159
+ ### Compute Infrastructure
160
+
161
+ [More Information Needed]
162
+
163
+ #### Hardware
164
+
165
+ [More Information Needed]
166
+
167
+ #### Software
168
+
169
+ [More Information Needed]
170
+
171
+ ## Citation [optional]
172
+
173
+ <!-- If there is a paper or blog post introducing the model, the APA and Bibtex information for that should go in this section. -->
174
+
175
+ **BibTeX:**
176
+
177
+ [More Information Needed]
178
+
179
+ **APA:**
180
+
181
+ [More Information Needed]
182
+
183
+ ## Glossary [optional]
184
+
185
+ <!-- If relevant, include terms and calculations in this section that can help readers understand the model or model card. -->
186
+
187
+ [More Information Needed]
188
+
189
+ ## More Information [optional]
190
+
191
+ [More Information Needed]
192
+
193
+ ## Model Card Authors [optional]
194
+
195
+ [More Information Needed]
196
+
197
+ ## Model Card Contact
198
+
199
+ [More Information Needed]
config.json CHANGED
@@ -1,5 +1,4 @@
1
  {
2
- "_name_or_path": "models/qa_multi_4_retromae_diclp0.05pp0.3_min1",
3
  "architectures": [
4
  "KPRModelForBert"
5
  ],
@@ -30,7 +29,7 @@
30
  "similarity_function": "dot",
31
  "similarity_temperature": 1.0,
32
  "torch_dtype": "float32",
33
- "transformers_version": "4.35.2",
34
  "type_vocab_size": 2,
35
  "use_cache": true,
36
  "use_entity_position_embeddings": true,
 
1
  {
 
2
  "architectures": [
3
  "KPRModelForBert"
4
  ],
 
29
  "similarity_function": "dot",
30
  "similarity_temperature": 1.0,
31
  "torch_dtype": "float32",
32
+ "transformers_version": "4.55.2",
33
  "type_vocab_size": 2,
34
  "use_cache": true,
35
  "use_entity_position_embeddings": true,
modeling.py CHANGED
@@ -155,10 +155,12 @@ class EntityFusionLayer(nn.Module):
155
 
156
 
157
  class KPRMixin:
158
- def _forward(self, **inputs: Tensor | dict[str, Tensor]) -> Tensor:
 
 
159
  if self.training:
160
- query_embeddings = self._encode(inputs["queries"])
161
- passage_embeddings = self._encode(inputs["passages"])
162
 
163
  query_embeddings = self._dist_gather_tensor(query_embeddings)
164
  passage_embeddings = self._dist_gather_tensor(passage_embeddings)
@@ -171,12 +173,19 @@ class KPRMixin:
171
  ce_target = ce_target * (passage_embeddings.size(0) // query_embeddings.size(0))
172
  loss = torch.nn.CrossEntropyLoss(reduction="mean")(scores, ce_target)
173
 
174
- return ModelOutput(loss=loss, scores=scores)
 
 
 
175
 
176
  else:
177
- return self._encode(inputs)
 
 
 
 
178
 
179
- def _encode(self, inputs: dict[str, Tensor]) -> Tensor:
180
  entity_ids = inputs.pop("entity_ids", None)
181
  entity_position_ids = inputs.pop("entity_position_ids", None)
182
  entity_embeds = inputs.pop("entity_embeds", None)
@@ -191,6 +200,8 @@ class KPRMixin:
191
  entity_position_ids=entity_position_ids,
192
  cls_embeddings=output_embeddings,
193
  )
 
 
194
 
195
  return output_embeddings
196
 
@@ -205,10 +216,6 @@ class KPRMixin:
205
  return gathered_tensor
206
 
207
  def _compute_similarity(self, query_embeddings: Tensor, passage_embeddings: Tensor) -> Tensor:
208
- if self.config.similarity_function == "cosine":
209
- query_embeddings = F.normalize(query_embeddings, p=2, dim=-1)
210
- passage_embeddings = F.normalize(passage_embeddings, p=2, dim=-1)
211
-
212
  return torch.matmul(query_embeddings, passage_embeddings.transpose(-2, -1))
213
 
214
 
 
155
 
156
 
157
  class KPRMixin:
158
+ def _forward(self, **inputs: Tensor | dict[str, Tensor]) -> tuple[Tensor] | tuple[Tensor, Tensor] | ModelOutput:
159
+ return_dict = inputs.pop("return_dict", True)
160
+
161
  if self.training:
162
+ query_embeddings = self.encode(inputs["queries"])
163
+ passage_embeddings = self.encode(inputs["passages"])
164
 
165
  query_embeddings = self._dist_gather_tensor(query_embeddings)
166
  passage_embeddings = self._dist_gather_tensor(passage_embeddings)
 
173
  ce_target = ce_target * (passage_embeddings.size(0) // query_embeddings.size(0))
174
  loss = torch.nn.CrossEntropyLoss(reduction="mean")(scores, ce_target)
175
 
176
+ if return_dict:
177
+ return ModelOutput(loss=loss, scores=scores)
178
+ else:
179
+ return (loss, scores)
180
 
181
  else:
182
+ sentence_embeddings = self.encode(inputs).unsqueeze(1)
183
+ if return_dict:
184
+ return ModelOutput(sentence_embeddings=sentence_embeddings)
185
+ else:
186
+ return (sentence_embeddings,)
187
 
188
+ def encode(self, inputs: dict[str, Tensor]) -> Tensor:
189
  entity_ids = inputs.pop("entity_ids", None)
190
  entity_position_ids = inputs.pop("entity_position_ids", None)
191
  entity_embeds = inputs.pop("entity_embeds", None)
 
200
  entity_position_ids=entity_position_ids,
201
  cls_embeddings=output_embeddings,
202
  )
203
+ if self.config.similarity_function == "cosine":
204
+ output_embeddings = F.normalize(output_embeddings, p=2, dim=-1)
205
 
206
  return output_embeddings
207
 
 
216
  return gathered_tensor
217
 
218
  def _compute_similarity(self, query_embeddings: Tensor, passage_embeddings: Tensor) -> Tensor:
 
 
 
 
219
  return torch.matmul(query_embeddings, passage_embeddings.transpose(-2, -1))
220
 
221