Upload model
Browse files- config.json +4 -4
- generation_config.json +1 -1
- modelling_longitudinal.py +10 -4
- pytorch_model.bin +2 -2
config.json
CHANGED
@@ -1,10 +1,10 @@
|
|
1 |
{
|
2 |
"_commit_hash": null,
|
3 |
"architectures": [
|
4 |
-
"
|
5 |
],
|
6 |
"auto_map": {
|
7 |
-
"AutoModel": "modelling_longitudinal.
|
8 |
},
|
9 |
"decoder": {
|
10 |
"_name_or_path": "",
|
@@ -78,7 +78,7 @@
|
|
78 |
"top_p": 1.0,
|
79 |
"torch_dtype": null,
|
80 |
"torchscript": false,
|
81 |
-
"transformers_version": "4.
|
82 |
"type_vocab_size": 2,
|
83 |
"typical_p": 1.0,
|
84 |
"use_bfloat16": false,
|
@@ -2243,7 +2243,7 @@
|
|
2243 |
"top_p": 1.0,
|
2244 |
"torch_dtype": "float32",
|
2245 |
"torchscript": false,
|
2246 |
-
"transformers_version": "4.
|
2247 |
"typical_p": 1.0,
|
2248 |
"use_bfloat16": false
|
2249 |
},
|
|
|
1 |
{
|
2 |
"_commit_hash": null,
|
3 |
"architectures": [
|
4 |
+
"LongitudinalPromptMultiCXREncoderDecoderModel"
|
5 |
],
|
6 |
"auto_map": {
|
7 |
+
"AutoModel": "modelling_longitudinal.LongitudinalPromptMultiCXREncoderDecoderModel"
|
8 |
},
|
9 |
"decoder": {
|
10 |
"_name_or_path": "",
|
|
|
78 |
"top_p": 1.0,
|
79 |
"torch_dtype": null,
|
80 |
"torchscript": false,
|
81 |
+
"transformers_version": "4.31.0",
|
82 |
"type_vocab_size": 2,
|
83 |
"typical_p": 1.0,
|
84 |
"use_bfloat16": false,
|
|
|
2243 |
"top_p": 1.0,
|
2244 |
"torch_dtype": "float32",
|
2245 |
"torchscript": false,
|
2246 |
+
"transformers_version": "4.31.0",
|
2247 |
"typical_p": 1.0,
|
2248 |
"use_bfloat16": false
|
2249 |
},
|
generation_config.json
CHANGED
@@ -1,5 +1,5 @@
|
|
1 |
{
|
2 |
"_from_model_config": true,
|
3 |
"pad_token_id": 0,
|
4 |
-
"transformers_version": "4.
|
5 |
}
|
|
|
1 |
{
|
2 |
"_from_model_config": true,
|
3 |
"pad_token_id": 0,
|
4 |
+
"transformers_version": "4.31.0"
|
5 |
}
|
modelling_longitudinal.py
CHANGED
@@ -47,7 +47,7 @@ class CvtProjectionHead(torch.nn.Module):
|
|
47 |
return x
|
48 |
|
49 |
|
50 |
-
class
|
51 |
def __init__(self, config):
|
52 |
super().__init__(config)
|
53 |
|
@@ -93,7 +93,7 @@ class VariableCvtWithProjectionHead(transformers.CvtPreTrainedModel):
|
|
93 |
)
|
94 |
|
95 |
|
96 |
-
class
|
97 |
|
98 |
config_class = VisionEncoderDecoderConfig
|
99 |
base_model_prefix = "vision_encoder_decoder"
|
@@ -127,7 +127,7 @@ class LongitudinalPromptVariableCXREncoderDecoderModel(VisionEncoderDecoderModel
|
|
127 |
|
128 |
# Encoder:
|
129 |
if encoder is None:
|
130 |
-
encoder =
|
131 |
|
132 |
# Decoder:
|
133 |
if decoder is None:
|
@@ -150,7 +150,7 @@ class LongitudinalPromptVariableCXREncoderDecoderModel(VisionEncoderDecoderModel
|
|
150 |
self.encoder.config = self.config.encoder
|
151 |
self.decoder.config = self.config.decoder
|
152 |
|
153 |
-
# Load
|
154 |
if encoder_decoder_ckpt_name:
|
155 |
encoder_decoder = AutoModel.from_pretrained(encoder_decoder_ckpt_name, trust_remote_code=True)
|
156 |
self.load_state_dict(encoder_decoder.state_dict())
|
@@ -266,6 +266,12 @@ class LongitudinalPromptVariableCXREncoderDecoderModel(VisionEncoderDecoderModel
|
|
266 |
https://github.com/huggingface/transformers/blob/main/src/transformers/models/encoder_decoder/modeling_encoder_decoder.py#L660
|
267 |
"""
|
268 |
|
|
|
|
|
|
|
|
|
|
|
|
|
269 |
decoder_inputs = self.decoder.prepare_inputs_for_generation(input_ids, past_key_values=past_key_values)
|
270 |
decoder_attention_mask = (input_ids != mask_token_id).int()
|
271 |
decoder_position_ids = torch.nn.functional.relu(
|
|
|
47 |
return x
|
48 |
|
49 |
|
50 |
+
class MultiCvtWithProjectionHead(transformers.CvtPreTrainedModel):
|
51 |
def __init__(self, config):
|
52 |
super().__init__(config)
|
53 |
|
|
|
93 |
)
|
94 |
|
95 |
|
96 |
+
class LongitudinalPromptMultiCXREncoderDecoderModel(VisionEncoderDecoderModel):
|
97 |
|
98 |
config_class = VisionEncoderDecoderConfig
|
99 |
base_model_prefix = "vision_encoder_decoder"
|
|
|
127 |
|
128 |
# Encoder:
|
129 |
if encoder is None:
|
130 |
+
encoder = MultiCvtWithProjectionHead(config=config.encoder)
|
131 |
|
132 |
# Decoder:
|
133 |
if decoder is None:
|
|
|
150 |
self.encoder.config = self.config.encoder
|
151 |
self.decoder.config = self.config.decoder
|
152 |
|
153 |
+
# Load multi checkpoint:
|
154 |
if encoder_decoder_ckpt_name:
|
155 |
encoder_decoder = AutoModel.from_pretrained(encoder_decoder_ckpt_name, trust_remote_code=True)
|
156 |
self.load_state_dict(encoder_decoder.state_dict())
|
|
|
266 |
https://github.com/huggingface/transformers/blob/main/src/transformers/models/encoder_decoder/modeling_encoder_decoder.py#L660
|
267 |
"""
|
268 |
|
269 |
+
# An update to generate() now prepends bos_token_id to each sequence if it does not exist at the start of the input:
|
270 |
+
# https://github.com/huggingface/transformers/blob/d533465150532b0c5de167b574e59f64c68b1154/src/transformers/generation/utils.py#L699C13-L699C30
|
271 |
+
# Hence, we remove the prepended bos_token_id from each sequence if it is there:
|
272 |
+
if torch.all(input_ids[:, 0] == 1):
|
273 |
+
input_ids = input_ids[:, 1:]
|
274 |
+
|
275 |
decoder_inputs = self.decoder.prepare_inputs_for_generation(input_ids, past_key_values=past_key_values)
|
276 |
decoder_attention_mask = (input_ids != mask_token_id).int()
|
277 |
decoder_position_ids = torch.nn.functional.relu(
|
pytorch_model.bin
CHANGED
@@ -1,3 +1,3 @@
|
|
1 |
version https://git-lfs.github.com/spec/v1
|
2 |
-
oid sha256:
|
3 |
-
size
|
|
|
1 |
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:f1c18b94af309415cfd3c6169cfb5a5261a1c50d8707413bd56b1426a1cc0fcf
|
3 |
+
size 450311021
|