rynmurdock commited on
Commit
08a9c32
1 Parent(s): 20e20bb
.gitignore ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ .ipynb_checkpoints/
2
+ __pycache__/
3
+ inter-est*/
__init__.py ADDED
File without changes
app.py ADDED
@@ -0,0 +1,285 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import torch
2
+ from PIL import Image
3
+
4
+ import random
5
+ import pandas as pd
6
+ import gradio as gr
7
+ import numpy as np
8
+ from sklearn.linear_model import LogisticRegression
9
+ from sklearn.svm import SVC
10
+ from sklearn import preprocessing
11
+ import time
12
+ import torch
13
+ from matplotlib import pyplot as plt
14
+
15
+ from model import model, tokenizer, load_image
16
+
17
+ from diffusers import StableDiffusionXLPipeline, UNet2DConditionModel, EulerDiscreteScheduler
18
+ from huggingface_hub import hf_hub_download
19
+ from safetensors.torch import load_file
20
+
21
+ device = 'cuda'
22
+ dtype = torch.bfloat16
23
+
24
+ base = "stabilityai/stable-diffusion-xl-base-1.0"
25
+ repo = "ByteDance/SDXL-Lightning"
26
+ ckpt = "sdxl_lightning_8step_unet.safetensors" # Use the correct ckpt for your step setting!
27
+
28
+ # Load model.
29
+ unet = UNet2DConditionModel.from_config(base, subfolder="unet").to(device, dtype)
30
+ unet.load_state_dict(load_file(hf_hub_download(repo, ckpt), device=device))
31
+ pipe = StableDiffusionXLPipeline.from_pretrained(base, unet=unet, torch_dtype=dtype, variant="fp16").to(device)
32
+
33
+ # Ensure sampler uses "trailing" timesteps.
34
+ pipe.scheduler = EulerDiscreteScheduler.from_config(pipe.scheduler.config, timestep_spacing="trailing")
35
+
36
+
37
+
38
+
39
+
40
+ with torch.cuda.amp.autocast(True, dtype):
41
+ # extract eos/mean embedding
42
+ pixel_values = load_image(image_file='blank.png', max_num=1).to(device)
43
+ base_embed = model.extract_feature(pixel_values.to(dtype)).detach().float()
44
+
45
+
46
+
47
+ def get_text(embed):
48
+ with torch.cuda.amp.autocast(True, dtype):
49
+ generation_config = dict(max_new_tokens=32, do_sample=True,
50
+ temperature=.5, top_p=.92)
51
+
52
+ # single-image single-round conversation (单图单轮对话)
53
+ pixel_values = 0
54
+ question = '''''' # not really used # TODO & pixel_values as well
55
+ response = model.chat(tokenizer, pixel_values, question, generation_config, visual_features=embed.to(dtype))
56
+ print(response)
57
+ return response
58
+
59
+ def get_image(text):
60
+ return pipe(text, num_inference_steps=8, guidance_scale=0).images[0]
61
+
62
+ def get_embed(img):
63
+ with torch.cuda.amp.autocast(True, dtype):
64
+ # extract eos/mean embedding
65
+ pixel_values = load_image(image_file='', pil_image=img, max_num=1).to(device)
66
+ embed = model.extract_feature(pixel_values.to(dtype))
67
+ return embed.float()
68
+
69
+
70
+
71
+ prompt_list = [p for p in list(set(
72
+ pd.read_csv('/home/ryn_mote/Misc/twitter_prompts.csv').iloc[:, 1].tolist())) if type(p) == str]
73
+ random.shuffle(prompt_list)
74
+
75
+
76
+
77
+ NOT_calibrate_prompts = [
78
+ 'an abstract painting',
79
+ 'unique streetwear design that blends the old with the new. Combine bold, urban typography with retro graphics, taking inspiration from distressed signage and graffiti. Use a range of earthy tones to give the design a vintage aesthetic, while adding a modern twist with a stylistic rendering of the graphics',
80
+ 'a photo of hell',
81
+ ''
82
+ ]
83
+
84
+ calibrate_prompts = [
85
+ "4k photo",
86
+ 'surrealist art',
87
+ 'a psychedelic, fractal view',
88
+ 'a beautiful collage',
89
+ 'an intricate portrait',
90
+ 'an impressionist painting',
91
+ 'abstract art',
92
+ 'an eldritch image',
93
+ 'a sketch',
94
+ 'a city full of darkness and graffiti',
95
+ 'a black & white photo',
96
+ 'a brilliant, timeless tarot card of the world',
97
+ '''eternity: a timeless, vivid painted portrait by ryan murdock''',
98
+ '''a simple, timeless, & dark charcoal on canvas: death itself by ryan murdock''',
99
+ '''a painted image with gorgeous red gradients: Persephone by ryan murdock''',
100
+ '''a simple, timeless, & dark photo with gorgeous gradients: last night of my life by ryan murdock''',
101
+ '''the sunflower -- a dark, simple painted still life by ryan murdock''',
102
+ '''silence in the macrocosm -- a dark, intricate painting by ryan murdock''',
103
+ '''beauty here -- a photograph by ryan murdock''',
104
+ '''a timeless, haunting portrait: the necrotic jester''',
105
+ '''a simple, timeless, & dark art piece with gorgeous gradients: serenity''',
106
+ '''an elegant image of nature with gorgeous swirling gradients''',
107
+ '''simple, timeless digital art with gorgeous purple spirals''',
108
+ '''timeless digital art with gorgeous gradients: eternal slumber''',
109
+ '''a simple, timeless image with gorgeous gradients''',
110
+ '''a simple, timeless painted image of nature with beautiful gradients''',
111
+ 'a timeless, dark digital art piece with gorgeous gradients: the hanged man',
112
+ '',
113
+ ]
114
+
115
+
116
+
117
+ global_idx = 0
118
+ embs = []
119
+ ys = []
120
+
121
+ start_time = time.time()
122
+
123
+ def next_image():
124
+ with torch.no_grad():
125
+ if len(calibrate_prompts) > 0:
126
+ prompt = calibrate_prompts.pop(0)
127
+ print(f'######### Calibrating with sample: {prompt} #########')
128
+
129
+ image = get_image(prompt)
130
+
131
+
132
+ ####### optional step; we could take the prior output instead
133
+ with torch.cuda.amp.autocast():
134
+ embed = get_embed(image)
135
+ #######
136
+
137
+ embs.append(embed)
138
+ return image, prompt
139
+ else:
140
+ print('######### Roaming #########')
141
+
142
+ # sample only as many negatives as there are positives
143
+ indices = range(len(ys))
144
+ pos_indices = [i for i in indices if ys[i] > .5]
145
+ neg_indices = [i for i in indices if ys[i] <= .5]
146
+
147
+ mini = min(len(pos_indices), len(neg_indices))
148
+
149
+ if mini < 1:
150
+ feature_embs = torch.stack([torch.randn(1280), torch.randn(1280)])
151
+ ys_t = [0, 1]
152
+ print('Not enough ratings.')
153
+ else:
154
+ # indices = random.sample(pos_indices, mini) + random.sample(neg_indices, mini)
155
+ ys_t = [ys[i] for i in indices]
156
+ feature_embs = torch.stack([embs[e][0, 0].detach().cpu() for e in indices]).squeeze()
157
+
158
+ # # balance pos/negatives?
159
+ # for e in indices:
160
+ # nw = (len(indices) / len(neg_indices))
161
+ # w = (len(indices) / len(pos_indices))
162
+ # feature_embs[e] = feature_embs[e] * w if ys_t[e] > .5 else feature_embs[e] * nw
163
+
164
+ # if len(pos_indices) > 8:
165
+ # to_drop = pos_indices.pop(0)
166
+ # ys.pop(to_drop)
167
+ # embs.pop(to_drop)
168
+ # print('\n\n\ndropping\n\n\n')
169
+ # elif len(neg_indices) > 8:
170
+ # to_drop = neg_indices.pop(0)
171
+ # ys.pop(to_drop)
172
+ # embs.pop(to_drop)
173
+ # print('\n\n\ndropping\n\n\n')
174
+
175
+
176
+ # scaler = preprocessing.StandardScaler().fit(feature_embs)
177
+ # feature_embs = scaler.transform(feature_embs)
178
+ # ys_t = ys
179
+
180
+ print(np.array(feature_embs).shape, np.array(ys_t).shape)
181
+
182
+ # sol = LogisticRegression().fit(np.array(feature_embs), np.array(torch.tensor(ys_t).unsqueeze(1).float() * 2 - 1)).coef_
183
+ # sol = torch.linalg.lstsq(torch.tensor(ys_t).unsqueeze(1).float()*2-1, torch.tensor(feature_embs).float(),).solution
184
+ # neg_sol = torch.linalg.lstsq((torch.tensor(ys_t).unsqueeze(1).float() - 1) * -1, torch.tensor(feature_embs).float()).solution
185
+ # sol = torch.tensor(sol, dtype=dtype).to(device)
186
+
187
+
188
+ pos_sol = torch.stack([feature_embs[i] for i in range(len(ys_t)) if ys_t[i] > .5]).mean(0, keepdim=True).to(device, dtype)
189
+ neg_sol = torch.stack([feature_embs[i] for i in range(len(ys_t)) if ys_t[i] < .5]).mean(0, keepdim=True).to(device, dtype)
190
+
191
+ # could j have a base vector of a black image
192
+ latest_pos = (random.sample([feature_embs[i] for i in range(len(ys_t)) if ys_t[i] > .5], 1)[0]).to(device, dtype)
193
+
194
+ dif = pos_sol - neg_sol
195
+ sol = latest_pos + ((dif / dif.std()) * latest_pos.std())
196
+
197
+ print(sol.shape)
198
+
199
+
200
+ text = get_text(sol)
201
+ image = get_image(text)
202
+ embed = get_embed(image)
203
+
204
+ embs.append(embed)
205
+
206
+ plt.close()
207
+ plt.hist(sol.detach().cpu().float().flatten())
208
+ plt.savefig('sol.jpg')
209
+
210
+
211
+ plt.close()
212
+ plt.hist(embed.detach().cpu().float().flatten())
213
+ plt.savefig('embed.jpg')
214
+
215
+ # torch.save(sol, f'./{start_time}.pt')
216
+ return image, text
217
+
218
+
219
+
220
+
221
+
222
+
223
+
224
+ def start(_):
225
+ return [
226
+ gr.Button(value='Like', interactive=True),
227
+ gr.Button(value='Neither', interactive=True),
228
+ gr.Button(value='Dislike', interactive=True),
229
+ gr.Button(value='Start', interactive=False),
230
+ *next_image()
231
+ ]
232
+
233
+
234
+ def choose(choice):
235
+ global global_idx
236
+ global_idx += 1
237
+ if choice == 'Like':
238
+ choice = 1
239
+ elif choice == 'Neither':
240
+ _ = embs.pop(-1)
241
+ return next_image()
242
+ else:
243
+ choice = 0
244
+ ys.append(choice)
245
+ return next_image()
246
+
247
+ css = "div#output-image {height: 512px !important; width: 512px !important; margin:auto;}"
248
+ with gr.Blocks(css=css) as demo:
249
+ with gr.Row():
250
+ html = gr.HTML('''<div style='text-align:center; font-size:32'>You will callibrate for several prompts and then roam.</ div>''')
251
+ with gr.Row(elem_id='output-image'):
252
+ img = gr.Image(interactive=False, elem_id='output-image',)
253
+ with gr.Row(elem_id='output-txt'):
254
+ txt = gr.Textbox(interactive=False, elem_id='output-txt',)
255
+ with gr.Row(equal_height=True):
256
+ b3 = gr.Button(value='Dislike', interactive=False,)
257
+ b2 = gr.Button(value='Neither', interactive=False,)
258
+ b1 = gr.Button(value='Like', interactive=False,)
259
+ b1.click(
260
+ choose,
261
+ [b1],
262
+ [img, txt]
263
+ )
264
+ b2.click(
265
+ choose,
266
+ [b2],
267
+ [img, txt]
268
+ )
269
+ b3.click(
270
+ choose,
271
+ [b3],
272
+ [img, txt]
273
+ )
274
+ with gr.Row():
275
+ b4 = gr.Button(value='Start')
276
+ b4.click(start,
277
+ [b4],
278
+ [b1, b2, b3, b4, img, txt])
279
+
280
+ demo.launch(share=True) # Share your demo with just 1 extra parameter 🚀
281
+
282
+
283
+
284
+ # TODO use CLIP text encoder pooled & keep frozen
285
+
blank.png ADDED
config.py ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import torch
2
+
3
+ lr = 1e-5
4
+
5
+ path = '/home/ryn_mote/Misc/vlm_with_pooled_for_text_genrec/inter-est_CLIP_aesth_7000'
6
+ save_path = '/home/ryn_mote/Misc/vlm_with_pooled_for_text_genrec/inter-est_CLIP_aesth'
7
+
8
+ epochs = 1
9
+ batch_size = 16
10
+
11
+ device = 'cuda'
12
+ dtype = torch.bfloat16
13
+
14
+ max_tokens = 32
15
+
configuration_intern_vit.py ADDED
@@ -0,0 +1,119 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # --------------------------------------------------------
2
+ # InternVL
3
+ # Copyright (c) 2024 OpenGVLab
4
+ # Licensed under The MIT License [see LICENSE for details]
5
+ # --------------------------------------------------------
6
+ import os
7
+ from typing import Union
8
+
9
+ from transformers.configuration_utils import PretrainedConfig
10
+ from transformers.utils import logging
11
+
12
+ logger = logging.get_logger(__name__)
13
+
14
+
15
+ class InternVisionConfig(PretrainedConfig):
16
+ r"""
17
+ This is the configuration class to store the configuration of a [`InternVisionModel`]. It is used to
18
+ instantiate a vision encoder according to the specified arguments, defining the model architecture.
19
+
20
+ Configuration objects inherit from [`PretrainedConfig`] and can be used to control the model outputs. Read the
21
+ documentation from [`PretrainedConfig`] for more information.
22
+
23
+ Args:
24
+ num_channels (`int`, *optional*, defaults to 3):
25
+ Number of color channels in the input images (e.g., 3 for RGB).
26
+ patch_size (`int`, *optional*, defaults to 14):
27
+ The size (resolution) of each patch.
28
+ image_size (`int`, *optional*, defaults to 224):
29
+ The size (resolution) of each image.
30
+ qkv_bias (`bool`, *optional*, defaults to `False`):
31
+ Whether to add a bias to the queries and values in the self-attention layers.
32
+ hidden_size (`int`, *optional*, defaults to 3200):
33
+ Dimensionality of the encoder layers and the pooler layer.
34
+ num_attention_heads (`int`, *optional*, defaults to 25):
35
+ Number of attention heads for each attention layer in the Transformer encoder.
36
+ intermediate_size (`int`, *optional*, defaults to 12800):
37
+ Dimensionality of the "intermediate" (i.e., feed-forward) layer in the Transformer encoder.
38
+ qk_normalization (`bool`, *optional*, defaults to `True`):
39
+ Whether to normalize the queries and keys in the self-attention layers.
40
+ num_hidden_layers (`int`, *optional*, defaults to 48):
41
+ Number of hidden layers in the Transformer encoder.
42
+ use_flash_attn (`bool`, *optional*, defaults to `True`):
43
+ Whether to use flash attention mechanism.
44
+ hidden_act (`str` or `function`, *optional*, defaults to `"gelu"`):
45
+ The non-linear activation function (function or string) in the encoder and pooler. If string, `"gelu"`,
46
+ `"relu"`, `"selu"` and `"gelu_new"` ``"gelu"` are supported.
47
+ layer_norm_eps (`float`, *optional*, defaults to 1e-6):
48
+ The epsilon used by the layer normalization layers.
49
+ dropout (`float`, *optional*, defaults to 0.0):
50
+ The dropout probability for all fully connected layers in the embeddings, encoder, and pooler.
51
+ drop_path_rate (`float`, *optional*, defaults to 0.0):
52
+ Dropout rate for stochastic depth.
53
+ attention_dropout (`float`, *optional*, defaults to 0.0):
54
+ The dropout ratio for the attention probabilities.
55
+ initializer_range (`float`, *optional*, defaults to 0.02):
56
+ The standard deviation of the truncated_normal_initializer for initializing all weight matrices.
57
+ initializer_factor (`float`, *optional*, defaults to 0.1):
58
+ A factor for layer scale.
59
+ """
60
+
61
+ model_type = 'intern_vit_6b'
62
+
63
+ def __init__(
64
+ self,
65
+ num_channels=3,
66
+ patch_size=14,
67
+ image_size=224,
68
+ qkv_bias=False,
69
+ hidden_size=3200,
70
+ num_attention_heads=25,
71
+ intermediate_size=12800,
72
+ qk_normalization=True,
73
+ num_hidden_layers=48,
74
+ use_flash_attn=True,
75
+ hidden_act='gelu',
76
+ norm_type='rms_norm',
77
+ layer_norm_eps=1e-6,
78
+ dropout=0.0,
79
+ drop_path_rate=0.0,
80
+ attention_dropout=0.0,
81
+ initializer_range=0.02,
82
+ initializer_factor=0.1,
83
+ **kwargs,
84
+ ):
85
+ super().__init__(**kwargs)
86
+
87
+ self.hidden_size = hidden_size
88
+ self.intermediate_size = intermediate_size
89
+ self.dropout = dropout
90
+ self.drop_path_rate = drop_path_rate
91
+ self.num_hidden_layers = num_hidden_layers
92
+ self.num_attention_heads = num_attention_heads
93
+ self.num_channels = num_channels
94
+ self.patch_size = patch_size
95
+ self.image_size = image_size
96
+ self.initializer_range = initializer_range
97
+ self.initializer_factor = initializer_factor
98
+ self.attention_dropout = attention_dropout
99
+ self.layer_norm_eps = layer_norm_eps
100
+ self.hidden_act = hidden_act
101
+ self.norm_type = norm_type
102
+ self.qkv_bias = qkv_bias
103
+ self.qk_normalization = qk_normalization
104
+ self.use_flash_attn = use_flash_attn
105
+
106
+ @classmethod
107
+ def from_pretrained(cls, pretrained_model_name_or_path: Union[str, os.PathLike], **kwargs) -> 'PretrainedConfig':
108
+ config_dict, kwargs = cls.get_config_dict(pretrained_model_name_or_path, **kwargs)
109
+
110
+ if 'vision_config' in config_dict:
111
+ config_dict = config_dict['vision_config']
112
+
113
+ if 'model_type' in config_dict and hasattr(cls, 'model_type') and config_dict['model_type'] != cls.model_type:
114
+ logger.warning(
115
+ f"You are using a model of type {config_dict['model_type']} to instantiate a model of type "
116
+ f'{cls.model_type}. This is not supported for all configurations of models and can yield errors.'
117
+ )
118
+
119
+ return cls.from_dict(config_dict, **kwargs)
configuration_internvl_chat.py ADDED
@@ -0,0 +1,96 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # --------------------------------------------------------
2
+ # InternVL
3
+ # Copyright (c) 2024 OpenGVLab
4
+ # Licensed under The MIT License [see LICENSE for details]
5
+ # --------------------------------------------------------
6
+
7
+ import copy
8
+
9
+ from transformers import AutoConfig, LlamaConfig
10
+ from transformers.configuration_utils import PretrainedConfig
11
+ from transformers.utils import logging
12
+
13
+ from configuration_intern_vit import InternVisionConfig
14
+ from configuration_phi3 import Phi3Config
15
+
16
+ logger = logging.get_logger(__name__)
17
+
18
+
19
+ class InternVLChatConfig(PretrainedConfig):
20
+ model_type = 'internvl_chat'
21
+ is_composition = True
22
+
23
+ def __init__(
24
+ self,
25
+ vision_config=None,
26
+ llm_config=None,
27
+ use_backbone_lora=0,
28
+ use_llm_lora=0,
29
+ select_layer=-1,
30
+ force_image_size=None,
31
+ downsample_ratio=0.5,
32
+ template=None,
33
+ dynamic_image_size=False,
34
+ use_thumbnail=False,
35
+ ps_version='v1',
36
+ min_dynamic_patch=1,
37
+ max_dynamic_patch=6,
38
+ **kwargs):
39
+ super().__init__(**kwargs)
40
+
41
+ if vision_config is None:
42
+ vision_config = {}
43
+ logger.info('vision_config is None. Initializing the InternVisionConfig with default values.')
44
+
45
+ if llm_config is None:
46
+ llm_config = {}
47
+ logger.info('llm_config is None. Initializing the LlamaConfig config with default values (`LlamaConfig`).')
48
+
49
+ self.vision_config = InternVisionConfig(**vision_config)
50
+ if llm_config['architectures'][0] == 'LlamaForCausalLM':
51
+ self.llm_config = LlamaConfig(**llm_config)
52
+ elif llm_config['architectures'][0] == 'Phi3ForCausalLM':
53
+ self.llm_config = Phi3Config(**llm_config)
54
+ else:
55
+ raise ValueError('Unsupported architecture: {}'.format(llm_config['architectures'][0]))
56
+ self.use_backbone_lora = use_backbone_lora
57
+ self.use_llm_lora = use_llm_lora
58
+ self.select_layer = select_layer
59
+ self.force_image_size = force_image_size
60
+ self.downsample_ratio = downsample_ratio
61
+ self.template = template
62
+ self.dynamic_image_size = dynamic_image_size
63
+ self.use_thumbnail = use_thumbnail
64
+ self.ps_version = ps_version # pixel shuffle version
65
+ self.min_dynamic_patch = min_dynamic_patch
66
+ self.max_dynamic_patch = max_dynamic_patch
67
+
68
+ logger.info(f'vision_select_layer: {self.select_layer}')
69
+ logger.info(f'ps_version: {self.ps_version}')
70
+ logger.info(f'min_dynamic_patch: {self.min_dynamic_patch}')
71
+ logger.info(f'max_dynamic_patch: {self.max_dynamic_patch}')
72
+
73
+ def to_dict(self):
74
+ """
75
+ Serializes this instance to a Python dictionary. Override the default [`~PretrainedConfig.to_dict`].
76
+
77
+ Returns:
78
+ `Dict[str, any]`: Dictionary of all the attributes that make up this configuration instance,
79
+ """
80
+ output = copy.deepcopy(self.__dict__)
81
+ output['vision_config'] = self.vision_config.to_dict()
82
+ output['llm_config'] = self.llm_config.to_dict()
83
+ output['model_type'] = self.__class__.model_type
84
+ output['use_backbone_lora'] = self.use_backbone_lora
85
+ output['use_llm_lora'] = self.use_llm_lora
86
+ output['select_layer'] = self.select_layer
87
+ output['force_image_size'] = self.force_image_size
88
+ output['downsample_ratio'] = self.downsample_ratio
89
+ output['template'] = self.template
90
+ output['dynamic_image_size'] = self.dynamic_image_size
91
+ output['use_thumbnail'] = self.use_thumbnail
92
+ output['ps_version'] = self.ps_version
93
+ output['min_dynamic_patch'] = self.min_dynamic_patch
94
+ output['max_dynamic_patch'] = self.max_dynamic_patch
95
+
96
+ return output
configuration_phi3.py ADDED
@@ -0,0 +1,211 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Copyright 2024 Microsoft and the HuggingFace Inc. team. All rights reserved.
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License atd
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ """ Phi-3 model configuration"""
16
+
17
+
18
+ from transformers.configuration_utils import PretrainedConfig
19
+ from transformers.utils import logging
20
+
21
+ logger = logging.get_logger(__name__)
22
+
23
+ PHI3_PRETRAINED_CONFIG_ARCHIVE_MAP = {
24
+ 'microsoft/Phi-3-mini-4k-instruct': 'https://huggingface.co/microsoft/Phi-3-mini-4k-instruct/resolve/main/config.json',
25
+ 'microsoft/Phi-3-mini-128k-instruct': 'https://huggingface.co/microsoft/Phi-3-mini-128k-instruct/resolve/main/config.json',
26
+ }
27
+
28
+
29
+ class Phi3Config(PretrainedConfig):
30
+ r"""
31
+ This is the configuration class to store the configuration of a [`Phi3Model`]. It is used to instantiate a Phi-3
32
+ model according to the specified arguments, defining the model architecture. Instantiating a configuration with the
33
+ defaults will yield a similar configuration to that of the
34
+ [microsoft/Phi-3-mini-4k-instruct](https://huggingface.co/microsoft/Phi-3-mini-4k-instruct).
35
+
36
+ Configuration objects inherit from [`PretrainedConfig`] and can be used to control the model outputs. Read the
37
+ documentation from [`PretrainedConfig`] for more information.
38
+
39
+ Args:
40
+ vocab_size (`int`, *optional*, defaults to 32064):
41
+ Vocabulary size of the Phi-3 model. Defines the number of different tokens that can be represented by the
42
+ `inputs_ids` passed when calling [`Phi3Model`].
43
+ hidden_size (`int`, *optional*, defaults to 3072):
44
+ Dimension of the hidden representations.
45
+ intermediate_size (`int`, *optional*, defaults to 8192):
46
+ Dimension of the MLP representations.
47
+ num_hidden_layers (`int`, *optional*, defaults to 32):
48
+ Number of hidden layers in the Transformer decoder.
49
+ num_attention_heads (`int`, *optional*, defaults to 32):
50
+ Number of attention heads for each attention layer in the Transformer decoder.
51
+ num_key_value_heads (`int`, *optional*):
52
+ This is the number of key_value heads that should be used to implement Grouped Query Attention. If
53
+ `num_key_value_heads=num_attention_heads`, the model will use Multi Head Attention (MHA), if
54
+ `num_key_value_heads=1 the model will use Multi Query Attention (MQA) otherwise GQA is used. When
55
+ converting a multi-head checkpoint to a GQA checkpoint, each group key and value head should be constructed
56
+ by meanpooling all the original heads within that group. For more details checkout [this
57
+ paper](https://arxiv.org/pdf/2305.13245.pdf). If it is not specified, will default to
58
+ `num_attention_heads`.
59
+ resid_pdrop (`float`, *optional*, defaults to 0.0):
60
+ Dropout probability for mlp outputs.
61
+ embd_pdrop (`int`, *optional*, defaults to 0.0):
62
+ The dropout ratio for the embeddings.
63
+ attention_dropout (`float`, *optional*, defaults to 0.0):
64
+ The dropout ratio after computing the attention scores.
65
+ hidden_act (`str` or `function`, *optional*, defaults to `"silu"`):
66
+ The non-linear activation function (function or string) in the decoder.
67
+ max_position_embeddings (`int`, *optional*, defaults to 4096):
68
+ The maximum sequence length that this model might ever be used with.
69
+ original_max_position_embeddings (`int`, *optional*, defaults to 4096):
70
+ The maximum sequence length that this model was trained with. This is used to determine the size of the
71
+ original RoPE embeddings when using long scaling.
72
+ initializer_range (`float`, *optional*, defaults to 0.02):
73
+ The standard deviation of the truncated_normal_initializer for initializing all weight matrices.
74
+ rms_norm_eps (`float`, *optional*, defaults to 1e-05):
75
+ The epsilon value used for the RMSNorm.
76
+ use_cache (`bool`, *optional*, defaults to `True`):
77
+ Whether or not the model should return the last key/values attentions (not used by all models). Only
78
+ relevant if `config.is_decoder=True`. Whether to tie weight embeddings or not.
79
+ tie_word_embeddings (`bool`, *optional*, defaults to `False`):
80
+ Whether to tie weight embeddings
81
+ rope_theta (`float`, *optional*, defaults to 10000.0):
82
+ The base period of the RoPE embeddings.
83
+ rope_scaling (`dict`, *optional*):
84
+ The scaling strategy for the RoPE embeddings. If `None`, no scaling is applied. If a dictionary, it must
85
+ contain the following keys: `type`, `short_factor` and `long_factor`. The `type` must be either `su` or `yarn` and
86
+ the `short_factor` and `long_factor` must be lists of numbers with the same length as the hidden size
87
+ divided by the number of attention heads divided by 2.
88
+ bos_token_id (`int`, *optional*, defaults to 1):
89
+ The id of the "beginning-of-sequence" token.
90
+ eos_token_id (`int`, *optional*, defaults to 32000):
91
+ The id of the "end-of-sequence" token.
92
+ pad_token_id (`int`, *optional*, defaults to 32000):
93
+ The id of the padding token.
94
+ sliding_window (`int`, *optional*):
95
+ Sliding window attention window size. If `None`, no sliding window is applied.
96
+
97
+ Example:
98
+
99
+ ```python
100
+ >>> from transformers import Phi3Model, Phi3Config
101
+
102
+ >>> # Initializing a Phi-3 style configuration
103
+ >>> configuration = Phi3Config.from_pretrained("microsoft/Phi-3-mini-4k-instruct")
104
+
105
+ >>> # Initializing a model from the configuration
106
+ >>> model = Phi3Model(configuration)
107
+
108
+ >>> # Accessing the model configuration
109
+ >>> configuration = model.config
110
+ ```"""
111
+
112
+ model_type = 'phi3'
113
+ keys_to_ignore_at_inference = ['past_key_values']
114
+
115
+ def __init__(
116
+ self,
117
+ vocab_size=32064,
118
+ hidden_size=3072,
119
+ intermediate_size=8192,
120
+ num_hidden_layers=32,
121
+ num_attention_heads=32,
122
+ num_key_value_heads=None,
123
+ resid_pdrop=0.0,
124
+ embd_pdrop=0.0,
125
+ attention_dropout=0.0,
126
+ hidden_act='silu',
127
+ max_position_embeddings=4096,
128
+ original_max_position_embeddings=4096,
129
+ initializer_range=0.02,
130
+ rms_norm_eps=1e-5,
131
+ use_cache=True,
132
+ tie_word_embeddings=False,
133
+ rope_theta=10000.0,
134
+ rope_scaling=None,
135
+ bos_token_id=1,
136
+ eos_token_id=32000,
137
+ pad_token_id=32000,
138
+ sliding_window=None,
139
+ **kwargs,
140
+ ):
141
+ self.vocab_size = vocab_size
142
+ self.hidden_size = hidden_size
143
+ self.intermediate_size = intermediate_size
144
+ self.num_hidden_layers = num_hidden_layers
145
+ self.num_attention_heads = num_attention_heads
146
+
147
+ if num_key_value_heads is None:
148
+ num_key_value_heads = num_attention_heads
149
+
150
+ self.num_key_value_heads = num_key_value_heads
151
+ self.resid_pdrop = resid_pdrop
152
+ self.embd_pdrop = embd_pdrop
153
+ self.attention_dropout = attention_dropout
154
+ self.hidden_act = hidden_act
155
+ self.max_position_embeddings = max_position_embeddings
156
+ self.original_max_position_embeddings = original_max_position_embeddings
157
+ self.initializer_range = initializer_range
158
+ self.rms_norm_eps = rms_norm_eps
159
+ self.use_cache = use_cache
160
+ self.rope_theta = rope_theta
161
+ self.rope_scaling = rope_scaling
162
+ self._rope_scaling_validation()
163
+ self.sliding_window = sliding_window
164
+
165
+ super().__init__(
166
+ bos_token_id=bos_token_id,
167
+ eos_token_id=eos_token_id,
168
+ pad_token_id=pad_token_id,
169
+ tie_word_embeddings=tie_word_embeddings,
170
+ **kwargs,
171
+ )
172
+
173
+ def _rope_scaling_validation(self):
174
+ """
175
+ Validate the `rope_scaling` configuration.
176
+ """
177
+ if self.rope_scaling is None:
178
+ return
179
+
180
+ if not isinstance(self.rope_scaling, dict) or len(self.rope_scaling) != 3:
181
+ raise ValueError(
182
+ '`rope_scaling` must be a dictionary with three fields, `type`, `short_factor` and `long_factor`, '
183
+ f'got {self.rope_scaling}'
184
+ )
185
+ rope_scaling_type = self.rope_scaling.get('type', None)
186
+ rope_scaling_short_factor = self.rope_scaling.get('short_factor', None)
187
+ rope_scaling_long_factor = self.rope_scaling.get('long_factor', None)
188
+ if rope_scaling_type is None or rope_scaling_type not in ['su', 'yarn']:
189
+ raise ValueError(f"`rope_scaling`'s type field must be one of ['su', 'yarn'], got {rope_scaling_type}")
190
+ if not (
191
+ isinstance(rope_scaling_short_factor, list)
192
+ and all(isinstance(x, (int, float)) for x in rope_scaling_short_factor)
193
+ ):
194
+ raise ValueError(
195
+ f"`rope_scaling`'s short_factor field must be a list of numbers, got {rope_scaling_short_factor}"
196
+ )
197
+ if not len(rope_scaling_short_factor) == self.hidden_size // self.num_attention_heads // 2:
198
+ raise ValueError(
199
+ f"`rope_scaling`'s short_factor field must have length {self.hidden_size // self.num_attention_heads // 2}, got {len(rope_scaling_short_factor)}"
200
+ )
201
+ if not (
202
+ isinstance(rope_scaling_long_factor, list)
203
+ and all(isinstance(x, (int, float)) for x in rope_scaling_long_factor)
204
+ ):
205
+ raise ValueError(
206
+ f"`rope_scaling`'s long_factor field must be a list of numbers, got {rope_scaling_long_factor}"
207
+ )
208
+ if not len(rope_scaling_long_factor) == self.hidden_size // self.num_attention_heads // 2:
209
+ raise ValueError(
210
+ f"`rope_scaling`'s long_factor field must have length {self.hidden_size // self.num_attention_heads // 2}, got {len(rope_scaling_long_factor)}"
211
+ )
conversation.py ADDED
@@ -0,0 +1,393 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """
2
+ Conversation prompt templates.
3
+
4
+ We kindly request that you import fastchat instead of copying this file if you wish to use it.
5
+ If you have changes in mind, please contribute back so the community can benefit collectively and continue to maintain these valuable templates.
6
+ """
7
+
8
+ import dataclasses
9
+ from enum import IntEnum, auto
10
+ from typing import Any, Dict, List, Tuple, Union
11
+
12
+
13
+ class SeparatorStyle(IntEnum):
14
+ """Separator styles."""
15
+
16
+ ADD_COLON_SINGLE = auto()
17
+ ADD_COLON_TWO = auto()
18
+ ADD_COLON_SPACE_SINGLE = auto()
19
+ NO_COLON_SINGLE = auto()
20
+ NO_COLON_TWO = auto()
21
+ ADD_NEW_LINE_SINGLE = auto()
22
+ LLAMA2 = auto()
23
+ CHATGLM = auto()
24
+ CHATML = auto()
25
+ CHATINTERN = auto()
26
+ DOLLY = auto()
27
+ RWKV = auto()
28
+ PHOENIX = auto()
29
+ ROBIN = auto()
30
+ FALCON_CHAT = auto()
31
+ CHATGLM3 = auto()
32
+ INTERNVL_ZH = auto()
33
+ MPT = auto()
34
+
35
+
36
+ @dataclasses.dataclass
37
+ class Conversation:
38
+ """A class that manages prompt templates and keeps all conversation history."""
39
+
40
+ # The name of this template
41
+ name: str
42
+ # The template of the system prompt
43
+ system_template: str = '{system_message}'
44
+ # The system message
45
+ system_message: str = ''
46
+ # The names of two roles
47
+ roles: Tuple[str] = ('USER', 'ASSISTANT')
48
+ # All messages. Each item is (role, message).
49
+ messages: List[List[str]] = ()
50
+ # The number of few shot examples
51
+ offset: int = 0
52
+ # The separator style and configurations
53
+ sep_style: SeparatorStyle = SeparatorStyle.ADD_COLON_SINGLE
54
+ sep: str = '\n'
55
+ sep2: str = None
56
+ # Stop criteria (the default one is EOS token)
57
+ stop_str: Union[str, List[str]] = None
58
+ # Stops generation if meeting any token in this list
59
+ stop_token_ids: List[int] = None
60
+
61
+ def get_prompt(self) -> str:
62
+ """Get the prompt for generation."""
63
+ system_prompt = self.system_template.format(system_message=self.system_message)
64
+ if self.sep_style == SeparatorStyle.ADD_COLON_SINGLE:
65
+ ret = system_prompt + self.sep
66
+ for role, message in self.messages:
67
+ if message:
68
+ ret += role + ': ' + message + self.sep
69
+ else:
70
+ ret += role + ':'
71
+ return ret
72
+ elif self.sep_style == SeparatorStyle.ADD_COLON_TWO:
73
+ seps = [self.sep, self.sep2]
74
+ ret = system_prompt + seps[0]
75
+ for i, (role, message) in enumerate(self.messages):
76
+ if message:
77
+ ret += role + ': ' + message + seps[i % 2]
78
+ else:
79
+ ret += role + ':'
80
+ return ret
81
+ elif self.sep_style == SeparatorStyle.ADD_COLON_SPACE_SINGLE:
82
+ ret = system_prompt + self.sep
83
+ for role, message in self.messages:
84
+ if message:
85
+ ret += role + ': ' + message + self.sep
86
+ else:
87
+ ret += role + ': ' # must be end with a space
88
+ return ret
89
+ elif self.sep_style == SeparatorStyle.ADD_NEW_LINE_SINGLE:
90
+ ret = '' if system_prompt == '' else system_prompt + self.sep
91
+ for role, message in self.messages:
92
+ if message:
93
+ ret += role + '\n' + message + self.sep
94
+ else:
95
+ ret += role + '\n'
96
+ return ret
97
+ elif self.sep_style == SeparatorStyle.NO_COLON_SINGLE:
98
+ ret = system_prompt
99
+ for role, message in self.messages:
100
+ if message:
101
+ ret += role + message + self.sep
102
+ else:
103
+ ret += role
104
+ return ret
105
+ elif self.sep_style == SeparatorStyle.NO_COLON_TWO:
106
+ seps = [self.sep, self.sep2]
107
+ ret = system_prompt
108
+ for i, (role, message) in enumerate(self.messages):
109
+ if message:
110
+ ret += role + message + seps[i % 2]
111
+ else:
112
+ ret += role
113
+ return ret
114
+ elif self.sep_style == SeparatorStyle.RWKV:
115
+ ret = system_prompt
116
+ for i, (role, message) in enumerate(self.messages):
117
+ if message:
118
+ ret += (
119
+ role
120
+ + ': '
121
+ + message.replace('\r\n', '\n').replace('\n\n', '\n')
122
+ )
123
+ ret += '\n\n'
124
+ else:
125
+ ret += role + ':'
126
+ return ret
127
+ elif self.sep_style == SeparatorStyle.LLAMA2:
128
+ seps = [self.sep, self.sep2]
129
+ if self.system_message:
130
+ ret = system_prompt
131
+ else:
132
+ ret = '[INST] '
133
+ for i, (role, message) in enumerate(self.messages):
134
+ tag = self.roles[i % 2]
135
+ if message:
136
+ if i == 0:
137
+ ret += message + ' '
138
+ else:
139
+ ret += tag + ' ' + message + seps[i % 2]
140
+ else:
141
+ ret += tag
142
+ return ret
143
+ elif self.sep_style == SeparatorStyle.CHATGLM:
144
+ # source: https://huggingface.co/THUDM/chatglm-6b/blob/1d240ba371910e9282298d4592532d7f0f3e9f3e/modeling_chatglm.py#L1302-L1308
145
+ # source2: https://huggingface.co/THUDM/chatglm2-6b/blob/e186c891cf64310ac66ef10a87e6635fa6c2a579/modeling_chatglm.py#L926
146
+ round_add_n = 1 if self.name == 'chatglm2' else 0
147
+ if system_prompt:
148
+ ret = system_prompt + self.sep
149
+ else:
150
+ ret = ''
151
+
152
+ for i, (role, message) in enumerate(self.messages):
153
+ if i % 2 == 0:
154
+ ret += f'[Round {i//2 + round_add_n}]{self.sep}'
155
+
156
+ if message:
157
+ ret += f'{role}:{message}{self.sep}'
158
+ else:
159
+ ret += f'{role}:'
160
+ return ret
161
+ elif self.sep_style == SeparatorStyle.CHATML:
162
+ ret = '' if system_prompt == '' else system_prompt + self.sep + '\n'
163
+ for role, message in self.messages:
164
+ if message:
165
+ ret += role + '\n' + message + self.sep + '\n'
166
+ else:
167
+ ret += role + '\n'
168
+ return ret
169
+ elif self.sep_style == SeparatorStyle.CHATGLM3:
170
+ ret = ''
171
+ if self.system_message:
172
+ ret += system_prompt
173
+ for role, message in self.messages:
174
+ if message:
175
+ ret += role + '\n' + ' ' + message
176
+ else:
177
+ ret += role
178
+ return ret
179
+ elif self.sep_style == SeparatorStyle.CHATINTERN:
180
+ # source: https://huggingface.co/internlm/internlm-chat-7b-8k/blob/bd546fa984b4b0b86958f56bf37f94aa75ab8831/modeling_internlm.py#L771
181
+ seps = [self.sep, self.sep2]
182
+ ret = system_prompt
183
+ for i, (role, message) in enumerate(self.messages):
184
+ # if i % 2 == 0:
185
+ # ret += "<s>"
186
+ if message:
187
+ ret += role + ':' + message + seps[i % 2] + '\n'
188
+ else:
189
+ ret += role + ':'
190
+ return ret
191
+ elif self.sep_style == SeparatorStyle.DOLLY:
192
+ seps = [self.sep, self.sep2]
193
+ ret = system_prompt
194
+ for i, (role, message) in enumerate(self.messages):
195
+ if message:
196
+ ret += role + ':\n' + message + seps[i % 2]
197
+ if i % 2 == 1:
198
+ ret += '\n\n'
199
+ else:
200
+ ret += role + ':\n'
201
+ return ret
202
+ elif self.sep_style == SeparatorStyle.PHOENIX:
203
+ ret = system_prompt
204
+ for role, message in self.messages:
205
+ if message:
206
+ ret += role + ': ' + '<s>' + message + '</s>'
207
+ else:
208
+ ret += role + ': ' + '<s>'
209
+ return ret
210
+ elif self.sep_style == SeparatorStyle.ROBIN:
211
+ ret = system_prompt + self.sep
212
+ for role, message in self.messages:
213
+ if message:
214
+ ret += role + ':\n' + message + self.sep
215
+ else:
216
+ ret += role + ':\n'
217
+ return ret
218
+ elif self.sep_style == SeparatorStyle.FALCON_CHAT:
219
+ ret = ''
220
+ if self.system_message:
221
+ ret += system_prompt + self.sep
222
+ for role, message in self.messages:
223
+ if message:
224
+ ret += role + ': ' + message + self.sep
225
+ else:
226
+ ret += role + ':'
227
+
228
+ return ret
229
+ elif self.sep_style == SeparatorStyle.INTERNVL_ZH:
230
+ seps = [self.sep, self.sep2]
231
+ ret = self.system_message + seps[0]
232
+ for i, (role, message) in enumerate(self.messages):
233
+ if message:
234
+ ret += role + ': ' + message + seps[i % 2]
235
+ else:
236
+ ret += role + ':'
237
+ return ret
238
+ elif self.sep_style == SeparatorStyle.MPT:
239
+ ret = system_prompt + self.sep
240
+ for role, message in self.messages:
241
+ if message:
242
+ if type(message) is tuple:
243
+ message, _, _ = message
244
+ ret += role + message + self.sep
245
+ else:
246
+ ret += role
247
+ return ret
248
+ else:
249
+ raise ValueError(f'Invalid style: {self.sep_style}')
250
+
251
+ def set_system_message(self, system_message: str):
252
+ """Set the system message."""
253
+ self.system_message = system_message
254
+
255
+ def append_message(self, role: str, message: str):
256
+ """Append a new message."""
257
+ self.messages.append([role, message])
258
+
259
+ def update_last_message(self, message: str):
260
+ """Update the last output.
261
+
262
+ The last message is typically set to be None when constructing the prompt,
263
+ so we need to update it in-place after getting the response from a model.
264
+ """
265
+ self.messages[-1][1] = message
266
+
267
+ def to_gradio_chatbot(self):
268
+ """Convert the conversation to gradio chatbot format."""
269
+ ret = []
270
+ for i, (role, msg) in enumerate(self.messages[self.offset :]):
271
+ if i % 2 == 0:
272
+ ret.append([msg, None])
273
+ else:
274
+ ret[-1][-1] = msg
275
+ return ret
276
+
277
+ def to_openai_api_messages(self):
278
+ """Convert the conversation to OpenAI chat completion format."""
279
+ ret = [{'role': 'system', 'content': self.system_message}]
280
+
281
+ for i, (_, msg) in enumerate(self.messages[self.offset :]):
282
+ if i % 2 == 0:
283
+ ret.append({'role': 'user', 'content': msg})
284
+ else:
285
+ if msg is not None:
286
+ ret.append({'role': 'assistant', 'content': msg})
287
+ return ret
288
+
289
+ def copy(self):
290
+ return Conversation(
291
+ name=self.name,
292
+ system_template=self.system_template,
293
+ system_message=self.system_message,
294
+ roles=self.roles,
295
+ messages=[[x, y] for x, y in self.messages],
296
+ offset=self.offset,
297
+ sep_style=self.sep_style,
298
+ sep=self.sep,
299
+ sep2=self.sep2,
300
+ stop_str=self.stop_str,
301
+ stop_token_ids=self.stop_token_ids,
302
+ )
303
+
304
+ def dict(self):
305
+ return {
306
+ 'template_name': self.name,
307
+ 'system_message': self.system_message,
308
+ 'roles': self.roles,
309
+ 'messages': self.messages,
310
+ 'offset': self.offset,
311
+ }
312
+
313
+
314
+ # A global registry for all conversation templates
315
+ conv_templates: Dict[str, Conversation] = {}
316
+
317
+
318
+ def register_conv_template(template: Conversation, override: bool = False):
319
+ """Register a new conversation template."""
320
+ if not override:
321
+ assert (
322
+ template.name not in conv_templates
323
+ ), f'{template.name} has been registered.'
324
+
325
+ conv_templates[template.name] = template
326
+
327
+
328
+ def get_conv_template(name: str) -> Conversation:
329
+ """Get a conversation template."""
330
+ return conv_templates[name].copy()
331
+
332
+
333
+ # Both Hermes-2 and internlm2-chat are chatml-format conversation templates. The difference
334
+ # is that during training, the preprocessing function for the Hermes-2 template doesn't add
335
+ # <s> at the beginning of the tokenized sequence, while the internlm2-chat template does.
336
+ # Therefore, they are completely equivalent during inference.
337
+ register_conv_template(
338
+ Conversation(
339
+ name='Hermes-2',
340
+ system_template='<|im_start|>system\n{system_message}',
341
+ # note: The new system prompt was not used here to avoid changes in benchmark performance.
342
+ # system_message='我是书生·万象,英文名是InternVL,是由上海人工智能实验室、清华大学及多家合作单位联合开发的多模态大语言模型。',
343
+ system_message='你是由上海人工智能实验室联合商汤科技开发的书生多模态大模型,英文名叫InternVL, 是一个有用无害的人工智能助手。',
344
+ roles=('<|im_start|>user\n', '<|im_start|>assistant\n'),
345
+ sep_style=SeparatorStyle.MPT,
346
+ sep='<|im_end|>',
347
+ stop_token_ids=[
348
+ 2,
349
+ 6,
350
+ 7,
351
+ 8,
352
+ ],
353
+ stop_str='<|endoftext|>',
354
+ )
355
+ )
356
+
357
+
358
+ register_conv_template(
359
+ Conversation(
360
+ name='internlm2-chat',
361
+ system_template='<|im_start|>system\n{system_message}',
362
+ # note: The new system prompt was not used here to avoid changes in benchmark performance.
363
+ # system_message='我是书生·万象,英文名是InternVL,是由上海人工智能实验室、清华大学及多家合作单位联合开发的多模态大语言模型。',
364
+ system_message='你是由上海人工智能实验室联合商汤科技开发的书生多模态大模型,英文名叫InternVL, 是一个有用无害的人工智能助手。',
365
+ roles=('<|im_start|>user\n', '<|im_start|>assistant\n'),
366
+ sep_style=SeparatorStyle.MPT,
367
+ sep='<|im_end|>',
368
+ stop_token_ids=[
369
+ 2,
370
+ 92543,
371
+ 92542
372
+ ]
373
+ )
374
+ )
375
+
376
+
377
+ register_conv_template(
378
+ Conversation(
379
+ name='phi3-chat',
380
+ system_template='<|system|>\n{system_message}',
381
+ # note: The new system prompt was not used here to avoid changes in benchmark performance.
382
+ # system_message='我是书生·万象,英文名是InternVL,是由上海人工智能实验室、清华大学及多家合作单位联合开发的多模态大语言模型。',
383
+ system_message='你是由上海人工智能实验室联合商汤科技开发的书生多模态大模型,英文名叫InternVL, 是一个有用无害的人工智能助手。',
384
+ roles=('<|user|>\n', '<|assistant|>\n'),
385
+ sep_style=SeparatorStyle.MPT,
386
+ sep='<|end|>',
387
+ stop_token_ids=[
388
+ 2,
389
+ 32000,
390
+ 32007
391
+ ]
392
+ )
393
+ )
data.py ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from datasets import load_dataset
2
+ import torch
3
+ import config
4
+ from model import load_image
5
+
6
+ from diffusers.utils.loading_utils import load_image as dl_to_pil
7
+
8
+ def my_collate(batch):
9
+ try:
10
+ img = [item['image'] for item in batch]
11
+ img = torch.cat([load_image(pil_image=i, image_file=None) for i in img])
12
+ text = ['''<|user|><img><IMG_CONTEXT></img><|end|><|assistant|>'''+item['prompt'] for item in batch]
13
+ except Exception as e:
14
+ print(e)
15
+ return None
16
+ return {'image':img, 'text':text}
17
+
18
+ ds = load_dataset("stylebreeder/stylebreeder", split='2M_sample', streaming=True).shuffle(seed=7, buffer_size=1)
19
+ dataloader = torch.utils.data.DataLoader(ds, num_workers=32, collate_fn=my_collate, batch_size=config.batch_size)
inference.ipynb ADDED
@@ -0,0 +1,623 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "cells": [
3
+ {
4
+ "cell_type": "code",
5
+ "execution_count": null,
6
+ "metadata": {
7
+ "id": "ZJjAmplaD4FG"
8
+ },
9
+ "outputs": [],
10
+ "source": [
11
+ "\n"
12
+ ]
13
+ },
14
+ {
15
+ "cell_type": "code",
16
+ "execution_count": 1,
17
+ "metadata": {
18
+ "id": "At_60t8A92zP"
19
+ },
20
+ "outputs": [
21
+ {
22
+ "name": "stdout",
23
+ "output_type": "stream",
24
+ "text": [
25
+ "/home/ryn_mote/Misc/vlm_with_pooled_for_text_genrec\n"
26
+ ]
27
+ },
28
+ {
29
+ "name": "stderr",
30
+ "output_type": "stream",
31
+ "text": [
32
+ "/home/ryn_mote/anaconda3/lib/python3.10/site-packages/huggingface_hub/file_download.py:1132: FutureWarning: `resume_download` is deprecated and will be removed in version 1.0.0. Downloads always resume when possible. If you want to force a new download, use `force_download=True`.\n",
33
+ " warnings.warn(\n"
34
+ ]
35
+ },
36
+ {
37
+ "data": {
38
+ "application/vnd.jupyter.widget-view+json": {
39
+ "model_id": "e43c05fa9e374f2587356068d9343e08",
40
+ "version_major": 2,
41
+ "version_minor": 0
42
+ },
43
+ "text/plain": [
44
+ "Loading checkpoint shards: 0%| | 0/2 [00:00<?, ?it/s]"
45
+ ]
46
+ },
47
+ "metadata": {},
48
+ "output_type": "display_data"
49
+ },
50
+ {
51
+ "name": "stderr",
52
+ "output_type": "stream",
53
+ "text": [
54
+ "Some weights of the model checkpoint at OpenGVLab/InternVL2-4B were not used when initializing InternVLChatModel: ['vision_model.embeddings.class_embedding', 'vision_model.embeddings.patch_embedding.bias', 'vision_model.embeddings.patch_embedding.weight', 'vision_model.embeddings.position_embedding', 'vision_model.encoder.layers.0.attn.proj.bias', 'vision_model.encoder.layers.0.attn.proj.weight', 'vision_model.encoder.layers.0.attn.qkv.bias', 'vision_model.encoder.layers.0.attn.qkv.weight', 'vision_model.encoder.layers.0.ls1', 'vision_model.encoder.layers.0.ls2', 'vision_model.encoder.layers.0.mlp.fc1.bias', 'vision_model.encoder.layers.0.mlp.fc1.weight', 'vision_model.encoder.layers.0.mlp.fc2.bias', 'vision_model.encoder.layers.0.mlp.fc2.weight', 'vision_model.encoder.layers.0.norm1.bias', 'vision_model.encoder.layers.0.norm1.weight', 'vision_model.encoder.layers.0.norm2.bias', 'vision_model.encoder.layers.0.norm2.weight', 'vision_model.encoder.layers.1.attn.proj.bias', 'vision_model.encoder.layers.1.attn.proj.weight', 'vision_model.encoder.layers.1.attn.qkv.bias', 'vision_model.encoder.layers.1.attn.qkv.weight', 'vision_model.encoder.layers.1.ls1', 'vision_model.encoder.layers.1.ls2', 'vision_model.encoder.layers.1.mlp.fc1.bias', 'vision_model.encoder.layers.1.mlp.fc1.weight', 'vision_model.encoder.layers.1.mlp.fc2.bias', 'vision_model.encoder.layers.1.mlp.fc2.weight', 'vision_model.encoder.layers.1.norm1.bias', 'vision_model.encoder.layers.1.norm1.weight', 'vision_model.encoder.layers.1.norm2.bias', 'vision_model.encoder.layers.1.norm2.weight', 'vision_model.encoder.layers.10.attn.proj.bias', 'vision_model.encoder.layers.10.attn.proj.weight', 'vision_model.encoder.layers.10.attn.qkv.bias', 'vision_model.encoder.layers.10.attn.qkv.weight', 'vision_model.encoder.layers.10.ls1', 'vision_model.encoder.layers.10.ls2', 'vision_model.encoder.layers.10.mlp.fc1.bias', 'vision_model.encoder.layers.10.mlp.fc1.weight', 'vision_model.encoder.layers.10.mlp.fc2.bias', 'vision_model.encoder.layers.10.mlp.fc2.weight', 'vision_model.encoder.layers.10.norm1.bias', 'vision_model.encoder.layers.10.norm1.weight', 'vision_model.encoder.layers.10.norm2.bias', 'vision_model.encoder.layers.10.norm2.weight', 'vision_model.encoder.layers.11.attn.proj.bias', 'vision_model.encoder.layers.11.attn.proj.weight', 'vision_model.encoder.layers.11.attn.qkv.bias', 'vision_model.encoder.layers.11.attn.qkv.weight', 'vision_model.encoder.layers.11.ls1', 'vision_model.encoder.layers.11.ls2', 'vision_model.encoder.layers.11.mlp.fc1.bias', 'vision_model.encoder.layers.11.mlp.fc1.weight', 'vision_model.encoder.layers.11.mlp.fc2.bias', 'vision_model.encoder.layers.11.mlp.fc2.weight', 'vision_model.encoder.layers.11.norm1.bias', 'vision_model.encoder.layers.11.norm1.weight', 'vision_model.encoder.layers.11.norm2.bias', 'vision_model.encoder.layers.11.norm2.weight', 'vision_model.encoder.layers.12.attn.proj.bias', 'vision_model.encoder.layers.12.attn.proj.weight', 'vision_model.encoder.layers.12.attn.qkv.bias', 'vision_model.encoder.layers.12.attn.qkv.weight', 'vision_model.encoder.layers.12.ls1', 'vision_model.encoder.layers.12.ls2', 'vision_model.encoder.layers.12.mlp.fc1.bias', 'vision_model.encoder.layers.12.mlp.fc1.weight', 'vision_model.encoder.layers.12.mlp.fc2.bias', 'vision_model.encoder.layers.12.mlp.fc2.weight', 'vision_model.encoder.layers.12.norm1.bias', 'vision_model.encoder.layers.12.norm1.weight', 'vision_model.encoder.layers.12.norm2.bias', 'vision_model.encoder.layers.12.norm2.weight', 'vision_model.encoder.layers.13.attn.proj.bias', 'vision_model.encoder.layers.13.attn.proj.weight', 'vision_model.encoder.layers.13.attn.qkv.bias', 'vision_model.encoder.layers.13.attn.qkv.weight', 'vision_model.encoder.layers.13.ls1', 'vision_model.encoder.layers.13.ls2', 'vision_model.encoder.layers.13.mlp.fc1.bias', 'vision_model.encoder.layers.13.mlp.fc1.weight', 'vision_model.encoder.layers.13.mlp.fc2.bias', 'vision_model.encoder.layers.13.mlp.fc2.weight', 'vision_model.encoder.layers.13.norm1.bias', 'vision_model.encoder.layers.13.norm1.weight', 'vision_model.encoder.layers.13.norm2.bias', 'vision_model.encoder.layers.13.norm2.weight', 'vision_model.encoder.layers.14.attn.proj.bias', 'vision_model.encoder.layers.14.attn.proj.weight', 'vision_model.encoder.layers.14.attn.qkv.bias', 'vision_model.encoder.layers.14.attn.qkv.weight', 'vision_model.encoder.layers.14.ls1', 'vision_model.encoder.layers.14.ls2', 'vision_model.encoder.layers.14.mlp.fc1.bias', 'vision_model.encoder.layers.14.mlp.fc1.weight', 'vision_model.encoder.layers.14.mlp.fc2.bias', 'vision_model.encoder.layers.14.mlp.fc2.weight', 'vision_model.encoder.layers.14.norm1.bias', 'vision_model.encoder.layers.14.norm1.weight', 'vision_model.encoder.layers.14.norm2.bias', 'vision_model.encoder.layers.14.norm2.weight', 'vision_model.encoder.layers.15.attn.proj.bias', 'vision_model.encoder.layers.15.attn.proj.weight', 'vision_model.encoder.layers.15.attn.qkv.bias', 'vision_model.encoder.layers.15.attn.qkv.weight', 'vision_model.encoder.layers.15.ls1', 'vision_model.encoder.layers.15.ls2', 'vision_model.encoder.layers.15.mlp.fc1.bias', 'vision_model.encoder.layers.15.mlp.fc1.weight', 'vision_model.encoder.layers.15.mlp.fc2.bias', 'vision_model.encoder.layers.15.mlp.fc2.weight', 'vision_model.encoder.layers.15.norm1.bias', 'vision_model.encoder.layers.15.norm1.weight', 'vision_model.encoder.layers.15.norm2.bias', 'vision_model.encoder.layers.15.norm2.weight', 'vision_model.encoder.layers.16.attn.proj.bias', 'vision_model.encoder.layers.16.attn.proj.weight', 'vision_model.encoder.layers.16.attn.qkv.bias', 'vision_model.encoder.layers.16.attn.qkv.weight', 'vision_model.encoder.layers.16.ls1', 'vision_model.encoder.layers.16.ls2', 'vision_model.encoder.layers.16.mlp.fc1.bias', 'vision_model.encoder.layers.16.mlp.fc1.weight', 'vision_model.encoder.layers.16.mlp.fc2.bias', 'vision_model.encoder.layers.16.mlp.fc2.weight', 'vision_model.encoder.layers.16.norm1.bias', 'vision_model.encoder.layers.16.norm1.weight', 'vision_model.encoder.layers.16.norm2.bias', 'vision_model.encoder.layers.16.norm2.weight', 'vision_model.encoder.layers.17.attn.proj.bias', 'vision_model.encoder.layers.17.attn.proj.weight', 'vision_model.encoder.layers.17.attn.qkv.bias', 'vision_model.encoder.layers.17.attn.qkv.weight', 'vision_model.encoder.layers.17.ls1', 'vision_model.encoder.layers.17.ls2', 'vision_model.encoder.layers.17.mlp.fc1.bias', 'vision_model.encoder.layers.17.mlp.fc1.weight', 'vision_model.encoder.layers.17.mlp.fc2.bias', 'vision_model.encoder.layers.17.mlp.fc2.weight', 'vision_model.encoder.layers.17.norm1.bias', 'vision_model.encoder.layers.17.norm1.weight', 'vision_model.encoder.layers.17.norm2.bias', 'vision_model.encoder.layers.17.norm2.weight', 'vision_model.encoder.layers.18.attn.proj.bias', 'vision_model.encoder.layers.18.attn.proj.weight', 'vision_model.encoder.layers.18.attn.qkv.bias', 'vision_model.encoder.layers.18.attn.qkv.weight', 'vision_model.encoder.layers.18.ls1', 'vision_model.encoder.layers.18.ls2', 'vision_model.encoder.layers.18.mlp.fc1.bias', 'vision_model.encoder.layers.18.mlp.fc1.weight', 'vision_model.encoder.layers.18.mlp.fc2.bias', 'vision_model.encoder.layers.18.mlp.fc2.weight', 'vision_model.encoder.layers.18.norm1.bias', 'vision_model.encoder.layers.18.norm1.weight', 'vision_model.encoder.layers.18.norm2.bias', 'vision_model.encoder.layers.18.norm2.weight', 'vision_model.encoder.layers.19.attn.proj.bias', 'vision_model.encoder.layers.19.attn.proj.weight', 'vision_model.encoder.layers.19.attn.qkv.bias', 'vision_model.encoder.layers.19.attn.qkv.weight', 'vision_model.encoder.layers.19.ls1', 'vision_model.encoder.layers.19.ls2', 'vision_model.encoder.layers.19.mlp.fc1.bias', 'vision_model.encoder.layers.19.mlp.fc1.weight', 'vision_model.encoder.layers.19.mlp.fc2.bias', 'vision_model.encoder.layers.19.mlp.fc2.weight', 'vision_model.encoder.layers.19.norm1.bias', 'vision_model.encoder.layers.19.norm1.weight', 'vision_model.encoder.layers.19.norm2.bias', 'vision_model.encoder.layers.19.norm2.weight', 'vision_model.encoder.layers.2.attn.proj.bias', 'vision_model.encoder.layers.2.attn.proj.weight', 'vision_model.encoder.layers.2.attn.qkv.bias', 'vision_model.encoder.layers.2.attn.qkv.weight', 'vision_model.encoder.layers.2.ls1', 'vision_model.encoder.layers.2.ls2', 'vision_model.encoder.layers.2.mlp.fc1.bias', 'vision_model.encoder.layers.2.mlp.fc1.weight', 'vision_model.encoder.layers.2.mlp.fc2.bias', 'vision_model.encoder.layers.2.mlp.fc2.weight', 'vision_model.encoder.layers.2.norm1.bias', 'vision_model.encoder.layers.2.norm1.weight', 'vision_model.encoder.layers.2.norm2.bias', 'vision_model.encoder.layers.2.norm2.weight', 'vision_model.encoder.layers.20.attn.proj.bias', 'vision_model.encoder.layers.20.attn.proj.weight', 'vision_model.encoder.layers.20.attn.qkv.bias', 'vision_model.encoder.layers.20.attn.qkv.weight', 'vision_model.encoder.layers.20.ls1', 'vision_model.encoder.layers.20.ls2', 'vision_model.encoder.layers.20.mlp.fc1.bias', 'vision_model.encoder.layers.20.mlp.fc1.weight', 'vision_model.encoder.layers.20.mlp.fc2.bias', 'vision_model.encoder.layers.20.mlp.fc2.weight', 'vision_model.encoder.layers.20.norm1.bias', 'vision_model.encoder.layers.20.norm1.weight', 'vision_model.encoder.layers.20.norm2.bias', 'vision_model.encoder.layers.20.norm2.weight', 'vision_model.encoder.layers.21.attn.proj.bias', 'vision_model.encoder.layers.21.attn.proj.weight', 'vision_model.encoder.layers.21.attn.qkv.bias', 'vision_model.encoder.layers.21.attn.qkv.weight', 'vision_model.encoder.layers.21.ls1', 'vision_model.encoder.layers.21.ls2', 'vision_model.encoder.layers.21.mlp.fc1.bias', 'vision_model.encoder.layers.21.mlp.fc1.weight', 'vision_model.encoder.layers.21.mlp.fc2.bias', 'vision_model.encoder.layers.21.mlp.fc2.weight', 'vision_model.encoder.layers.21.norm1.bias', 'vision_model.encoder.layers.21.norm1.weight', 'vision_model.encoder.layers.21.norm2.bias', 'vision_model.encoder.layers.21.norm2.weight', 'vision_model.encoder.layers.22.attn.proj.bias', 'vision_model.encoder.layers.22.attn.proj.weight', 'vision_model.encoder.layers.22.attn.qkv.bias', 'vision_model.encoder.layers.22.attn.qkv.weight', 'vision_model.encoder.layers.22.ls1', 'vision_model.encoder.layers.22.ls2', 'vision_model.encoder.layers.22.mlp.fc1.bias', 'vision_model.encoder.layers.22.mlp.fc1.weight', 'vision_model.encoder.layers.22.mlp.fc2.bias', 'vision_model.encoder.layers.22.mlp.fc2.weight', 'vision_model.encoder.layers.22.norm1.bias', 'vision_model.encoder.layers.22.norm1.weight', 'vision_model.encoder.layers.22.norm2.bias', 'vision_model.encoder.layers.22.norm2.weight', 'vision_model.encoder.layers.23.attn.proj.bias', 'vision_model.encoder.layers.23.attn.proj.weight', 'vision_model.encoder.layers.23.attn.qkv.bias', 'vision_model.encoder.layers.23.attn.qkv.weight', 'vision_model.encoder.layers.23.ls1', 'vision_model.encoder.layers.23.ls2', 'vision_model.encoder.layers.23.mlp.fc1.bias', 'vision_model.encoder.layers.23.mlp.fc1.weight', 'vision_model.encoder.layers.23.mlp.fc2.bias', 'vision_model.encoder.layers.23.mlp.fc2.weight', 'vision_model.encoder.layers.23.norm1.bias', 'vision_model.encoder.layers.23.norm1.weight', 'vision_model.encoder.layers.23.norm2.bias', 'vision_model.encoder.layers.23.norm2.weight', 'vision_model.encoder.layers.3.attn.proj.bias', 'vision_model.encoder.layers.3.attn.proj.weight', 'vision_model.encoder.layers.3.attn.qkv.bias', 'vision_model.encoder.layers.3.attn.qkv.weight', 'vision_model.encoder.layers.3.ls1', 'vision_model.encoder.layers.3.ls2', 'vision_model.encoder.layers.3.mlp.fc1.bias', 'vision_model.encoder.layers.3.mlp.fc1.weight', 'vision_model.encoder.layers.3.mlp.fc2.bias', 'vision_model.encoder.layers.3.mlp.fc2.weight', 'vision_model.encoder.layers.3.norm1.bias', 'vision_model.encoder.layers.3.norm1.weight', 'vision_model.encoder.layers.3.norm2.bias', 'vision_model.encoder.layers.3.norm2.weight', 'vision_model.encoder.layers.4.attn.proj.bias', 'vision_model.encoder.layers.4.attn.proj.weight', 'vision_model.encoder.layers.4.attn.qkv.bias', 'vision_model.encoder.layers.4.attn.qkv.weight', 'vision_model.encoder.layers.4.ls1', 'vision_model.encoder.layers.4.ls2', 'vision_model.encoder.layers.4.mlp.fc1.bias', 'vision_model.encoder.layers.4.mlp.fc1.weight', 'vision_model.encoder.layers.4.mlp.fc2.bias', 'vision_model.encoder.layers.4.mlp.fc2.weight', 'vision_model.encoder.layers.4.norm1.bias', 'vision_model.encoder.layers.4.norm1.weight', 'vision_model.encoder.layers.4.norm2.bias', 'vision_model.encoder.layers.4.norm2.weight', 'vision_model.encoder.layers.5.attn.proj.bias', 'vision_model.encoder.layers.5.attn.proj.weight', 'vision_model.encoder.layers.5.attn.qkv.bias', 'vision_model.encoder.layers.5.attn.qkv.weight', 'vision_model.encoder.layers.5.ls1', 'vision_model.encoder.layers.5.ls2', 'vision_model.encoder.layers.5.mlp.fc1.bias', 'vision_model.encoder.layers.5.mlp.fc1.weight', 'vision_model.encoder.layers.5.mlp.fc2.bias', 'vision_model.encoder.layers.5.mlp.fc2.weight', 'vision_model.encoder.layers.5.norm1.bias', 'vision_model.encoder.layers.5.norm1.weight', 'vision_model.encoder.layers.5.norm2.bias', 'vision_model.encoder.layers.5.norm2.weight', 'vision_model.encoder.layers.6.attn.proj.bias', 'vision_model.encoder.layers.6.attn.proj.weight', 'vision_model.encoder.layers.6.attn.qkv.bias', 'vision_model.encoder.layers.6.attn.qkv.weight', 'vision_model.encoder.layers.6.ls1', 'vision_model.encoder.layers.6.ls2', 'vision_model.encoder.layers.6.mlp.fc1.bias', 'vision_model.encoder.layers.6.mlp.fc1.weight', 'vision_model.encoder.layers.6.mlp.fc2.bias', 'vision_model.encoder.layers.6.mlp.fc2.weight', 'vision_model.encoder.layers.6.norm1.bias', 'vision_model.encoder.layers.6.norm1.weight', 'vision_model.encoder.layers.6.norm2.bias', 'vision_model.encoder.layers.6.norm2.weight', 'vision_model.encoder.layers.7.attn.proj.bias', 'vision_model.encoder.layers.7.attn.proj.weight', 'vision_model.encoder.layers.7.attn.qkv.bias', 'vision_model.encoder.layers.7.attn.qkv.weight', 'vision_model.encoder.layers.7.ls1', 'vision_model.encoder.layers.7.ls2', 'vision_model.encoder.layers.7.mlp.fc1.bias', 'vision_model.encoder.layers.7.mlp.fc1.weight', 'vision_model.encoder.layers.7.mlp.fc2.bias', 'vision_model.encoder.layers.7.mlp.fc2.weight', 'vision_model.encoder.layers.7.norm1.bias', 'vision_model.encoder.layers.7.norm1.weight', 'vision_model.encoder.layers.7.norm2.bias', 'vision_model.encoder.layers.7.norm2.weight', 'vision_model.encoder.layers.8.attn.proj.bias', 'vision_model.encoder.layers.8.attn.proj.weight', 'vision_model.encoder.layers.8.attn.qkv.bias', 'vision_model.encoder.layers.8.attn.qkv.weight', 'vision_model.encoder.layers.8.ls1', 'vision_model.encoder.layers.8.ls2', 'vision_model.encoder.layers.8.mlp.fc1.bias', 'vision_model.encoder.layers.8.mlp.fc1.weight', 'vision_model.encoder.layers.8.mlp.fc2.bias', 'vision_model.encoder.layers.8.mlp.fc2.weight', 'vision_model.encoder.layers.8.norm1.bias', 'vision_model.encoder.layers.8.norm1.weight', 'vision_model.encoder.layers.8.norm2.bias', 'vision_model.encoder.layers.8.norm2.weight', 'vision_model.encoder.layers.9.attn.proj.bias', 'vision_model.encoder.layers.9.attn.proj.weight', 'vision_model.encoder.layers.9.attn.qkv.bias', 'vision_model.encoder.layers.9.attn.qkv.weight', 'vision_model.encoder.layers.9.ls1', 'vision_model.encoder.layers.9.ls2', 'vision_model.encoder.layers.9.mlp.fc1.bias', 'vision_model.encoder.layers.9.mlp.fc1.weight', 'vision_model.encoder.layers.9.mlp.fc2.bias', 'vision_model.encoder.layers.9.mlp.fc2.weight', 'vision_model.encoder.layers.9.norm1.bias', 'vision_model.encoder.layers.9.norm1.weight', 'vision_model.encoder.layers.9.norm2.bias', 'vision_model.encoder.layers.9.norm2.weight']\n",
55
+ "- This IS expected if you are initializing InternVLChatModel from the checkpoint of a model trained on another task or with another architecture (e.g. initializing a BertForSequenceClassification model from a BertForPreTraining model).\n",
56
+ "- This IS NOT expected if you are initializing InternVLChatModel from the checkpoint of a model that you expect to be exactly identical (initializing a BertForSequenceClassification model from a BertForSequenceClassification model).\n",
57
+ "Some weights of InternVLChatModel were not initialized from the model checkpoint at OpenGVLab/InternVL2-4B and are newly initialized: ['vision_model.logit_scale', 'vision_model.text_model.embeddings.position_embedding.weight', 'vision_model.text_model.embeddings.token_embedding.weight', 'vision_model.text_model.encoder.layers.0.layer_norm1.bias', 'vision_model.text_model.encoder.layers.0.layer_norm1.weight', 'vision_model.text_model.encoder.layers.0.layer_norm2.bias', 'vision_model.text_model.encoder.layers.0.layer_norm2.weight', 'vision_model.text_model.encoder.layers.0.mlp.fc1.bias', 'vision_model.text_model.encoder.layers.0.mlp.fc1.weight', 'vision_model.text_model.encoder.layers.0.mlp.fc2.bias', 'vision_model.text_model.encoder.layers.0.mlp.fc2.weight', 'vision_model.text_model.encoder.layers.0.self_attn.k_proj.bias', 'vision_model.text_model.encoder.layers.0.self_attn.k_proj.weight', 'vision_model.text_model.encoder.layers.0.self_attn.out_proj.bias', 'vision_model.text_model.encoder.layers.0.self_attn.out_proj.weight', 'vision_model.text_model.encoder.layers.0.self_attn.q_proj.bias', 'vision_model.text_model.encoder.layers.0.self_attn.q_proj.weight', 'vision_model.text_model.encoder.layers.0.self_attn.v_proj.bias', 'vision_model.text_model.encoder.layers.0.self_attn.v_proj.weight', 'vision_model.text_model.encoder.layers.1.layer_norm1.bias', 'vision_model.text_model.encoder.layers.1.layer_norm1.weight', 'vision_model.text_model.encoder.layers.1.layer_norm2.bias', 'vision_model.text_model.encoder.layers.1.layer_norm2.weight', 'vision_model.text_model.encoder.layers.1.mlp.fc1.bias', 'vision_model.text_model.encoder.layers.1.mlp.fc1.weight', 'vision_model.text_model.encoder.layers.1.mlp.fc2.bias', 'vision_model.text_model.encoder.layers.1.mlp.fc2.weight', 'vision_model.text_model.encoder.layers.1.self_attn.k_proj.bias', 'vision_model.text_model.encoder.layers.1.self_attn.k_proj.weight', 'vision_model.text_model.encoder.layers.1.self_attn.out_proj.bias', 'vision_model.text_model.encoder.layers.1.self_attn.out_proj.weight', 'vision_model.text_model.encoder.layers.1.self_attn.q_proj.bias', 'vision_model.text_model.encoder.layers.1.self_attn.q_proj.weight', 'vision_model.text_model.encoder.layers.1.self_attn.v_proj.bias', 'vision_model.text_model.encoder.layers.1.self_attn.v_proj.weight', 'vision_model.text_model.encoder.layers.10.layer_norm1.bias', 'vision_model.text_model.encoder.layers.10.layer_norm1.weight', 'vision_model.text_model.encoder.layers.10.layer_norm2.bias', 'vision_model.text_model.encoder.layers.10.layer_norm2.weight', 'vision_model.text_model.encoder.layers.10.mlp.fc1.bias', 'vision_model.text_model.encoder.layers.10.mlp.fc1.weight', 'vision_model.text_model.encoder.layers.10.mlp.fc2.bias', 'vision_model.text_model.encoder.layers.10.mlp.fc2.weight', 'vision_model.text_model.encoder.layers.10.self_attn.k_proj.bias', 'vision_model.text_model.encoder.layers.10.self_attn.k_proj.weight', 'vision_model.text_model.encoder.layers.10.self_attn.out_proj.bias', 'vision_model.text_model.encoder.layers.10.self_attn.out_proj.weight', 'vision_model.text_model.encoder.layers.10.self_attn.q_proj.bias', 'vision_model.text_model.encoder.layers.10.self_attn.q_proj.weight', 'vision_model.text_model.encoder.layers.10.self_attn.v_proj.bias', 'vision_model.text_model.encoder.layers.10.self_attn.v_proj.weight', 'vision_model.text_model.encoder.layers.11.layer_norm1.bias', 'vision_model.text_model.encoder.layers.11.layer_norm1.weight', 'vision_model.text_model.encoder.layers.11.layer_norm2.bias', 'vision_model.text_model.encoder.layers.11.layer_norm2.weight', 'vision_model.text_model.encoder.layers.11.mlp.fc1.bias', 'vision_model.text_model.encoder.layers.11.mlp.fc1.weight', 'vision_model.text_model.encoder.layers.11.mlp.fc2.bias', 'vision_model.text_model.encoder.layers.11.mlp.fc2.weight', 'vision_model.text_model.encoder.layers.11.self_attn.k_proj.bias', 'vision_model.text_model.encoder.layers.11.self_attn.k_proj.weight', 'vision_model.text_model.encoder.layers.11.self_attn.out_proj.bias', 'vision_model.text_model.encoder.layers.11.self_attn.out_proj.weight', 'vision_model.text_model.encoder.layers.11.self_attn.q_proj.bias', 'vision_model.text_model.encoder.layers.11.self_attn.q_proj.weight', 'vision_model.text_model.encoder.layers.11.self_attn.v_proj.bias', 'vision_model.text_model.encoder.layers.11.self_attn.v_proj.weight', 'vision_model.text_model.encoder.layers.2.layer_norm1.bias', 'vision_model.text_model.encoder.layers.2.layer_norm1.weight', 'vision_model.text_model.encoder.layers.2.layer_norm2.bias', 'vision_model.text_model.encoder.layers.2.layer_norm2.weight', 'vision_model.text_model.encoder.layers.2.mlp.fc1.bias', 'vision_model.text_model.encoder.layers.2.mlp.fc1.weight', 'vision_model.text_model.encoder.layers.2.mlp.fc2.bias', 'vision_model.text_model.encoder.layers.2.mlp.fc2.weight', 'vision_model.text_model.encoder.layers.2.self_attn.k_proj.bias', 'vision_model.text_model.encoder.layers.2.self_attn.k_proj.weight', 'vision_model.text_model.encoder.layers.2.self_attn.out_proj.bias', 'vision_model.text_model.encoder.layers.2.self_attn.out_proj.weight', 'vision_model.text_model.encoder.layers.2.self_attn.q_proj.bias', 'vision_model.text_model.encoder.layers.2.self_attn.q_proj.weight', 'vision_model.text_model.encoder.layers.2.self_attn.v_proj.bias', 'vision_model.text_model.encoder.layers.2.self_attn.v_proj.weight', 'vision_model.text_model.encoder.layers.3.layer_norm1.bias', 'vision_model.text_model.encoder.layers.3.layer_norm1.weight', 'vision_model.text_model.encoder.layers.3.layer_norm2.bias', 'vision_model.text_model.encoder.layers.3.layer_norm2.weight', 'vision_model.text_model.encoder.layers.3.mlp.fc1.bias', 'vision_model.text_model.encoder.layers.3.mlp.fc1.weight', 'vision_model.text_model.encoder.layers.3.mlp.fc2.bias', 'vision_model.text_model.encoder.layers.3.mlp.fc2.weight', 'vision_model.text_model.encoder.layers.3.self_attn.k_proj.bias', 'vision_model.text_model.encoder.layers.3.self_attn.k_proj.weight', 'vision_model.text_model.encoder.layers.3.self_attn.out_proj.bias', 'vision_model.text_model.encoder.layers.3.self_attn.out_proj.weight', 'vision_model.text_model.encoder.layers.3.self_attn.q_proj.bias', 'vision_model.text_model.encoder.layers.3.self_attn.q_proj.weight', 'vision_model.text_model.encoder.layers.3.self_attn.v_proj.bias', 'vision_model.text_model.encoder.layers.3.self_attn.v_proj.weight', 'vision_model.text_model.encoder.layers.4.layer_norm1.bias', 'vision_model.text_model.encoder.layers.4.layer_norm1.weight', 'vision_model.text_model.encoder.layers.4.layer_norm2.bias', 'vision_model.text_model.encoder.layers.4.layer_norm2.weight', 'vision_model.text_model.encoder.layers.4.mlp.fc1.bias', 'vision_model.text_model.encoder.layers.4.mlp.fc1.weight', 'vision_model.text_model.encoder.layers.4.mlp.fc2.bias', 'vision_model.text_model.encoder.layers.4.mlp.fc2.weight', 'vision_model.text_model.encoder.layers.4.self_attn.k_proj.bias', 'vision_model.text_model.encoder.layers.4.self_attn.k_proj.weight', 'vision_model.text_model.encoder.layers.4.self_attn.out_proj.bias', 'vision_model.text_model.encoder.layers.4.self_attn.out_proj.weight', 'vision_model.text_model.encoder.layers.4.self_attn.q_proj.bias', 'vision_model.text_model.encoder.layers.4.self_attn.q_proj.weight', 'vision_model.text_model.encoder.layers.4.self_attn.v_proj.bias', 'vision_model.text_model.encoder.layers.4.self_attn.v_proj.weight', 'vision_model.text_model.encoder.layers.5.layer_norm1.bias', 'vision_model.text_model.encoder.layers.5.layer_norm1.weight', 'vision_model.text_model.encoder.layers.5.layer_norm2.bias', 'vision_model.text_model.encoder.layers.5.layer_norm2.weight', 'vision_model.text_model.encoder.layers.5.mlp.fc1.bias', 'vision_model.text_model.encoder.layers.5.mlp.fc1.weight', 'vision_model.text_model.encoder.layers.5.mlp.fc2.bias', 'vision_model.text_model.encoder.layers.5.mlp.fc2.weight', 'vision_model.text_model.encoder.layers.5.self_attn.k_proj.bias', 'vision_model.text_model.encoder.layers.5.self_attn.k_proj.weight', 'vision_model.text_model.encoder.layers.5.self_attn.out_proj.bias', 'vision_model.text_model.encoder.layers.5.self_attn.out_proj.weight', 'vision_model.text_model.encoder.layers.5.self_attn.q_proj.bias', 'vision_model.text_model.encoder.layers.5.self_attn.q_proj.weight', 'vision_model.text_model.encoder.layers.5.self_attn.v_proj.bias', 'vision_model.text_model.encoder.layers.5.self_attn.v_proj.weight', 'vision_model.text_model.encoder.layers.6.layer_norm1.bias', 'vision_model.text_model.encoder.layers.6.layer_norm1.weight', 'vision_model.text_model.encoder.layers.6.layer_norm2.bias', 'vision_model.text_model.encoder.layers.6.layer_norm2.weight', 'vision_model.text_model.encoder.layers.6.mlp.fc1.bias', 'vision_model.text_model.encoder.layers.6.mlp.fc1.weight', 'vision_model.text_model.encoder.layers.6.mlp.fc2.bias', 'vision_model.text_model.encoder.layers.6.mlp.fc2.weight', 'vision_model.text_model.encoder.layers.6.self_attn.k_proj.bias', 'vision_model.text_model.encoder.layers.6.self_attn.k_proj.weight', 'vision_model.text_model.encoder.layers.6.self_attn.out_proj.bias', 'vision_model.text_model.encoder.layers.6.self_attn.out_proj.weight', 'vision_model.text_model.encoder.layers.6.self_attn.q_proj.bias', 'vision_model.text_model.encoder.layers.6.self_attn.q_proj.weight', 'vision_model.text_model.encoder.layers.6.self_attn.v_proj.bias', 'vision_model.text_model.encoder.layers.6.self_attn.v_proj.weight', 'vision_model.text_model.encoder.layers.7.layer_norm1.bias', 'vision_model.text_model.encoder.layers.7.layer_norm1.weight', 'vision_model.text_model.encoder.layers.7.layer_norm2.bias', 'vision_model.text_model.encoder.layers.7.layer_norm2.weight', 'vision_model.text_model.encoder.layers.7.mlp.fc1.bias', 'vision_model.text_model.encoder.layers.7.mlp.fc1.weight', 'vision_model.text_model.encoder.layers.7.mlp.fc2.bias', 'vision_model.text_model.encoder.layers.7.mlp.fc2.weight', 'vision_model.text_model.encoder.layers.7.self_attn.k_proj.bias', 'vision_model.text_model.encoder.layers.7.self_attn.k_proj.weight', 'vision_model.text_model.encoder.layers.7.self_attn.out_proj.bias', 'vision_model.text_model.encoder.layers.7.self_attn.out_proj.weight', 'vision_model.text_model.encoder.layers.7.self_attn.q_proj.bias', 'vision_model.text_model.encoder.layers.7.self_attn.q_proj.weight', 'vision_model.text_model.encoder.layers.7.self_attn.v_proj.bias', 'vision_model.text_model.encoder.layers.7.self_attn.v_proj.weight', 'vision_model.text_model.encoder.layers.8.layer_norm1.bias', 'vision_model.text_model.encoder.layers.8.layer_norm1.weight', 'vision_model.text_model.encoder.layers.8.layer_norm2.bias', 'vision_model.text_model.encoder.layers.8.layer_norm2.weight', 'vision_model.text_model.encoder.layers.8.mlp.fc1.bias', 'vision_model.text_model.encoder.layers.8.mlp.fc1.weight', 'vision_model.text_model.encoder.layers.8.mlp.fc2.bias', 'vision_model.text_model.encoder.layers.8.mlp.fc2.weight', 'vision_model.text_model.encoder.layers.8.self_attn.k_proj.bias', 'vision_model.text_model.encoder.layers.8.self_attn.k_proj.weight', 'vision_model.text_model.encoder.layers.8.self_attn.out_proj.bias', 'vision_model.text_model.encoder.layers.8.self_attn.out_proj.weight', 'vision_model.text_model.encoder.layers.8.self_attn.q_proj.bias', 'vision_model.text_model.encoder.layers.8.self_attn.q_proj.weight', 'vision_model.text_model.encoder.layers.8.self_attn.v_proj.bias', 'vision_model.text_model.encoder.layers.8.self_attn.v_proj.weight', 'vision_model.text_model.encoder.layers.9.layer_norm1.bias', 'vision_model.text_model.encoder.layers.9.layer_norm1.weight', 'vision_model.text_model.encoder.layers.9.layer_norm2.bias', 'vision_model.text_model.encoder.layers.9.layer_norm2.weight', 'vision_model.text_model.encoder.layers.9.mlp.fc1.bias', 'vision_model.text_model.encoder.layers.9.mlp.fc1.weight', 'vision_model.text_model.encoder.layers.9.mlp.fc2.bias', 'vision_model.text_model.encoder.layers.9.mlp.fc2.weight', 'vision_model.text_model.encoder.layers.9.self_attn.k_proj.bias', 'vision_model.text_model.encoder.layers.9.self_attn.k_proj.weight', 'vision_model.text_model.encoder.layers.9.self_attn.out_proj.bias', 'vision_model.text_model.encoder.layers.9.self_attn.out_proj.weight', 'vision_model.text_model.encoder.layers.9.self_attn.q_proj.bias', 'vision_model.text_model.encoder.layers.9.self_attn.q_proj.weight', 'vision_model.text_model.encoder.layers.9.self_attn.v_proj.bias', 'vision_model.text_model.encoder.layers.9.self_attn.v_proj.weight', 'vision_model.text_model.final_layer_norm.bias', 'vision_model.text_model.final_layer_norm.weight', 'vision_model.text_projection.weight', 'vision_model.vision_model.embeddings.class_embedding', 'vision_model.vision_model.embeddings.patch_embedding.weight', 'vision_model.vision_model.embeddings.position_embedding.weight', 'vision_model.vision_model.encoder.layers.0.layer_norm1.bias', 'vision_model.vision_model.encoder.layers.0.layer_norm1.weight', 'vision_model.vision_model.encoder.layers.0.layer_norm2.bias', 'vision_model.vision_model.encoder.layers.0.layer_norm2.weight', 'vision_model.vision_model.encoder.layers.0.mlp.fc1.bias', 'vision_model.vision_model.encoder.layers.0.mlp.fc1.weight', 'vision_model.vision_model.encoder.layers.0.mlp.fc2.bias', 'vision_model.vision_model.encoder.layers.0.mlp.fc2.weight', 'vision_model.vision_model.encoder.layers.0.self_attn.k_proj.bias', 'vision_model.vision_model.encoder.layers.0.self_attn.k_proj.weight', 'vision_model.vision_model.encoder.layers.0.self_attn.out_proj.bias', 'vision_model.vision_model.encoder.layers.0.self_attn.out_proj.weight', 'vision_model.vision_model.encoder.layers.0.self_attn.q_proj.bias', 'vision_model.vision_model.encoder.layers.0.self_attn.q_proj.weight', 'vision_model.vision_model.encoder.layers.0.self_attn.v_proj.bias', 'vision_model.vision_model.encoder.layers.0.self_attn.v_proj.weight', 'vision_model.vision_model.encoder.layers.1.layer_norm1.bias', 'vision_model.vision_model.encoder.layers.1.layer_norm1.weight', 'vision_model.vision_model.encoder.layers.1.layer_norm2.bias', 'vision_model.vision_model.encoder.layers.1.layer_norm2.weight', 'vision_model.vision_model.encoder.layers.1.mlp.fc1.bias', 'vision_model.vision_model.encoder.layers.1.mlp.fc1.weight', 'vision_model.vision_model.encoder.layers.1.mlp.fc2.bias', 'vision_model.vision_model.encoder.layers.1.mlp.fc2.weight', 'vision_model.vision_model.encoder.layers.1.self_attn.k_proj.bias', 'vision_model.vision_model.encoder.layers.1.self_attn.k_proj.weight', 'vision_model.vision_model.encoder.layers.1.self_attn.out_proj.bias', 'vision_model.vision_model.encoder.layers.1.self_attn.out_proj.weight', 'vision_model.vision_model.encoder.layers.1.self_attn.q_proj.bias', 'vision_model.vision_model.encoder.layers.1.self_attn.q_proj.weight', 'vision_model.vision_model.encoder.layers.1.self_attn.v_proj.bias', 'vision_model.vision_model.encoder.layers.1.self_attn.v_proj.weight', 'vision_model.vision_model.encoder.layers.10.layer_norm1.bias', 'vision_model.vision_model.encoder.layers.10.layer_norm1.weight', 'vision_model.vision_model.encoder.layers.10.layer_norm2.bias', 'vision_model.vision_model.encoder.layers.10.layer_norm2.weight', 'vision_model.vision_model.encoder.layers.10.mlp.fc1.bias', 'vision_model.vision_model.encoder.layers.10.mlp.fc1.weight', 'vision_model.vision_model.encoder.layers.10.mlp.fc2.bias', 'vision_model.vision_model.encoder.layers.10.mlp.fc2.weight', 'vision_model.vision_model.encoder.layers.10.self_attn.k_proj.bias', 'vision_model.vision_model.encoder.layers.10.self_attn.k_proj.weight', 'vision_model.vision_model.encoder.layers.10.self_attn.out_proj.bias', 'vision_model.vision_model.encoder.layers.10.self_attn.out_proj.weight', 'vision_model.vision_model.encoder.layers.10.self_attn.q_proj.bias', 'vision_model.vision_model.encoder.layers.10.self_attn.q_proj.weight', 'vision_model.vision_model.encoder.layers.10.self_attn.v_proj.bias', 'vision_model.vision_model.encoder.layers.10.self_attn.v_proj.weight', 'vision_model.vision_model.encoder.layers.11.layer_norm1.bias', 'vision_model.vision_model.encoder.layers.11.layer_norm1.weight', 'vision_model.vision_model.encoder.layers.11.layer_norm2.bias', 'vision_model.vision_model.encoder.layers.11.layer_norm2.weight', 'vision_model.vision_model.encoder.layers.11.mlp.fc1.bias', 'vision_model.vision_model.encoder.layers.11.mlp.fc1.weight', 'vision_model.vision_model.encoder.layers.11.mlp.fc2.bias', 'vision_model.vision_model.encoder.layers.11.mlp.fc2.weight', 'vision_model.vision_model.encoder.layers.11.self_attn.k_proj.bias', 'vision_model.vision_model.encoder.layers.11.self_attn.k_proj.weight', 'vision_model.vision_model.encoder.layers.11.self_attn.out_proj.bias', 'vision_model.vision_model.encoder.layers.11.self_attn.out_proj.weight', 'vision_model.vision_model.encoder.layers.11.self_attn.q_proj.bias', 'vision_model.vision_model.encoder.layers.11.self_attn.q_proj.weight', 'vision_model.vision_model.encoder.layers.11.self_attn.v_proj.bias', 'vision_model.vision_model.encoder.layers.11.self_attn.v_proj.weight', 'vision_model.vision_model.encoder.layers.2.layer_norm1.bias', 'vision_model.vision_model.encoder.layers.2.layer_norm1.weight', 'vision_model.vision_model.encoder.layers.2.layer_norm2.bias', 'vision_model.vision_model.encoder.layers.2.layer_norm2.weight', 'vision_model.vision_model.encoder.layers.2.mlp.fc1.bias', 'vision_model.vision_model.encoder.layers.2.mlp.fc1.weight', 'vision_model.vision_model.encoder.layers.2.mlp.fc2.bias', 'vision_model.vision_model.encoder.layers.2.mlp.fc2.weight', 'vision_model.vision_model.encoder.layers.2.self_attn.k_proj.bias', 'vision_model.vision_model.encoder.layers.2.self_attn.k_proj.weight', 'vision_model.vision_model.encoder.layers.2.self_attn.out_proj.bias', 'vision_model.vision_model.encoder.layers.2.self_attn.out_proj.weight', 'vision_model.vision_model.encoder.layers.2.self_attn.q_proj.bias', 'vision_model.vision_model.encoder.layers.2.self_attn.q_proj.weight', 'vision_model.vision_model.encoder.layers.2.self_attn.v_proj.bias', 'vision_model.vision_model.encoder.layers.2.self_attn.v_proj.weight', 'vision_model.vision_model.encoder.layers.3.layer_norm1.bias', 'vision_model.vision_model.encoder.layers.3.layer_norm1.weight', 'vision_model.vision_model.encoder.layers.3.layer_norm2.bias', 'vision_model.vision_model.encoder.layers.3.layer_norm2.weight', 'vision_model.vision_model.encoder.layers.3.mlp.fc1.bias', 'vision_model.vision_model.encoder.layers.3.mlp.fc1.weight', 'vision_model.vision_model.encoder.layers.3.mlp.fc2.bias', 'vision_model.vision_model.encoder.layers.3.mlp.fc2.weight', 'vision_model.vision_model.encoder.layers.3.self_attn.k_proj.bias', 'vision_model.vision_model.encoder.layers.3.self_attn.k_proj.weight', 'vision_model.vision_model.encoder.layers.3.self_attn.out_proj.bias', 'vision_model.vision_model.encoder.layers.3.self_attn.out_proj.weight', 'vision_model.vision_model.encoder.layers.3.self_attn.q_proj.bias', 'vision_model.vision_model.encoder.layers.3.self_attn.q_proj.weight', 'vision_model.vision_model.encoder.layers.3.self_attn.v_proj.bias', 'vision_model.vision_model.encoder.layers.3.self_attn.v_proj.weight', 'vision_model.vision_model.encoder.layers.4.layer_norm1.bias', 'vision_model.vision_model.encoder.layers.4.layer_norm1.weight', 'vision_model.vision_model.encoder.layers.4.layer_norm2.bias', 'vision_model.vision_model.encoder.layers.4.layer_norm2.weight', 'vision_model.vision_model.encoder.layers.4.mlp.fc1.bias', 'vision_model.vision_model.encoder.layers.4.mlp.fc1.weight', 'vision_model.vision_model.encoder.layers.4.mlp.fc2.bias', 'vision_model.vision_model.encoder.layers.4.mlp.fc2.weight', 'vision_model.vision_model.encoder.layers.4.self_attn.k_proj.bias', 'vision_model.vision_model.encoder.layers.4.self_attn.k_proj.weight', 'vision_model.vision_model.encoder.layers.4.self_attn.out_proj.bias', 'vision_model.vision_model.encoder.layers.4.self_attn.out_proj.weight', 'vision_model.vision_model.encoder.layers.4.self_attn.q_proj.bias', 'vision_model.vision_model.encoder.layers.4.self_attn.q_proj.weight', 'vision_model.vision_model.encoder.layers.4.self_attn.v_proj.bias', 'vision_model.vision_model.encoder.layers.4.self_attn.v_proj.weight', 'vision_model.vision_model.encoder.layers.5.layer_norm1.bias', 'vision_model.vision_model.encoder.layers.5.layer_norm1.weight', 'vision_model.vision_model.encoder.layers.5.layer_norm2.bias', 'vision_model.vision_model.encoder.layers.5.layer_norm2.weight', 'vision_model.vision_model.encoder.layers.5.mlp.fc1.bias', 'vision_model.vision_model.encoder.layers.5.mlp.fc1.weight', 'vision_model.vision_model.encoder.layers.5.mlp.fc2.bias', 'vision_model.vision_model.encoder.layers.5.mlp.fc2.weight', 'vision_model.vision_model.encoder.layers.5.self_attn.k_proj.bias', 'vision_model.vision_model.encoder.layers.5.self_attn.k_proj.weight', 'vision_model.vision_model.encoder.layers.5.self_attn.out_proj.bias', 'vision_model.vision_model.encoder.layers.5.self_attn.out_proj.weight', 'vision_model.vision_model.encoder.layers.5.self_attn.q_proj.bias', 'vision_model.vision_model.encoder.layers.5.self_attn.q_proj.weight', 'vision_model.vision_model.encoder.layers.5.self_attn.v_proj.bias', 'vision_model.vision_model.encoder.layers.5.self_attn.v_proj.weight', 'vision_model.vision_model.encoder.layers.6.layer_norm1.bias', 'vision_model.vision_model.encoder.layers.6.layer_norm1.weight', 'vision_model.vision_model.encoder.layers.6.layer_norm2.bias', 'vision_model.vision_model.encoder.layers.6.layer_norm2.weight', 'vision_model.vision_model.encoder.layers.6.mlp.fc1.bias', 'vision_model.vision_model.encoder.layers.6.mlp.fc1.weight', 'vision_model.vision_model.encoder.layers.6.mlp.fc2.bias', 'vision_model.vision_model.encoder.layers.6.mlp.fc2.weight', 'vision_model.vision_model.encoder.layers.6.self_attn.k_proj.bias', 'vision_model.vision_model.encoder.layers.6.self_attn.k_proj.weight', 'vision_model.vision_model.encoder.layers.6.self_attn.out_proj.bias', 'vision_model.vision_model.encoder.layers.6.self_attn.out_proj.weight', 'vision_model.vision_model.encoder.layers.6.self_attn.q_proj.bias', 'vision_model.vision_model.encoder.layers.6.self_attn.q_proj.weight', 'vision_model.vision_model.encoder.layers.6.self_attn.v_proj.bias', 'vision_model.vision_model.encoder.layers.6.self_attn.v_proj.weight', 'vision_model.vision_model.encoder.layers.7.layer_norm1.bias', 'vision_model.vision_model.encoder.layers.7.layer_norm1.weight', 'vision_model.vision_model.encoder.layers.7.layer_norm2.bias', 'vision_model.vision_model.encoder.layers.7.layer_norm2.weight', 'vision_model.vision_model.encoder.layers.7.mlp.fc1.bias', 'vision_model.vision_model.encoder.layers.7.mlp.fc1.weight', 'vision_model.vision_model.encoder.layers.7.mlp.fc2.bias', 'vision_model.vision_model.encoder.layers.7.mlp.fc2.weight', 'vision_model.vision_model.encoder.layers.7.self_attn.k_proj.bias', 'vision_model.vision_model.encoder.layers.7.self_attn.k_proj.weight', 'vision_model.vision_model.encoder.layers.7.self_attn.out_proj.bias', 'vision_model.vision_model.encoder.layers.7.self_attn.out_proj.weight', 'vision_model.vision_model.encoder.layers.7.self_attn.q_proj.bias', 'vision_model.vision_model.encoder.layers.7.self_attn.q_proj.weight', 'vision_model.vision_model.encoder.layers.7.self_attn.v_proj.bias', 'vision_model.vision_model.encoder.layers.7.self_attn.v_proj.weight', 'vision_model.vision_model.encoder.layers.8.layer_norm1.bias', 'vision_model.vision_model.encoder.layers.8.layer_norm1.weight', 'vision_model.vision_model.encoder.layers.8.layer_norm2.bias', 'vision_model.vision_model.encoder.layers.8.layer_norm2.weight', 'vision_model.vision_model.encoder.layers.8.mlp.fc1.bias', 'vision_model.vision_model.encoder.layers.8.mlp.fc1.weight', 'vision_model.vision_model.encoder.layers.8.mlp.fc2.bias', 'vision_model.vision_model.encoder.layers.8.mlp.fc2.weight', 'vision_model.vision_model.encoder.layers.8.self_attn.k_proj.bias', 'vision_model.vision_model.encoder.layers.8.self_attn.k_proj.weight', 'vision_model.vision_model.encoder.layers.8.self_attn.out_proj.bias', 'vision_model.vision_model.encoder.layers.8.self_attn.out_proj.weight', 'vision_model.vision_model.encoder.layers.8.self_attn.q_proj.bias', 'vision_model.vision_model.encoder.layers.8.self_attn.q_proj.weight', 'vision_model.vision_model.encoder.layers.8.self_attn.v_proj.bias', 'vision_model.vision_model.encoder.layers.8.self_attn.v_proj.weight', 'vision_model.vision_model.encoder.layers.9.layer_norm1.bias', 'vision_model.vision_model.encoder.layers.9.layer_norm1.weight', 'vision_model.vision_model.encoder.layers.9.layer_norm2.bias', 'vision_model.vision_model.encoder.layers.9.layer_norm2.weight', 'vision_model.vision_model.encoder.layers.9.mlp.fc1.bias', 'vision_model.vision_model.encoder.layers.9.mlp.fc1.weight', 'vision_model.vision_model.encoder.layers.9.mlp.fc2.bias', 'vision_model.vision_model.encoder.layers.9.mlp.fc2.weight', 'vision_model.vision_model.encoder.layers.9.self_attn.k_proj.bias', 'vision_model.vision_model.encoder.layers.9.self_attn.k_proj.weight', 'vision_model.vision_model.encoder.layers.9.self_attn.out_proj.bias', 'vision_model.vision_model.encoder.layers.9.self_attn.out_proj.weight', 'vision_model.vision_model.encoder.layers.9.self_attn.q_proj.bias', 'vision_model.vision_model.encoder.layers.9.self_attn.q_proj.weight', 'vision_model.vision_model.encoder.layers.9.self_attn.v_proj.bias', 'vision_model.vision_model.encoder.layers.9.self_attn.v_proj.weight', 'vision_model.vision_model.post_layernorm.bias', 'vision_model.vision_model.post_layernorm.weight', 'vision_model.vision_model.pre_layrnorm.bias', 'vision_model.vision_model.pre_layrnorm.weight', 'vision_model.visual_projection.weight']\n",
58
+ "You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.\n",
59
+ "Some weights of InternVLChatModel were not initialized from the model checkpoint at OpenGVLab/InternVL2-4B and are newly initialized because the shapes did not match:\n",
60
+ "- mlp1.0.bias: found shape torch.Size([4096]) in the checkpoint and torch.Size([512]) in the model instantiated\n",
61
+ "- mlp1.0.weight: found shape torch.Size([4096]) in the checkpoint and torch.Size([512]) in the model instantiated\n",
62
+ "- mlp1.1.weight: found shape torch.Size([3072, 4096]) in the checkpoint and torch.Size([3072, 512]) in the model instantiated\n",
63
+ "You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.\n",
64
+ "Special tokens have been added in the vocabulary, make sure the associated word embeddings are fine-tuned or trained.\n"
65
+ ]
66
+ },
67
+ {
68
+ "name": "stdout",
69
+ "output_type": "stream",
70
+ "text": [
71
+ "Sequential(\n",
72
+ " (0): LayerNorm((512,), eps=1e-05, elementwise_affine=True)\n",
73
+ " (1): Linear(in_features=512, out_features=3072, bias=True)\n",
74
+ " (2): GELU(approximate='none')\n",
75
+ " (3): Linear(in_features=3072, out_features=3072, bias=True)\n",
76
+ ")\n",
77
+ "Training: [Parameter containing:\n",
78
+ "tensor([1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n",
79
+ " 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n",
80
+ " 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n",
81
+ " 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n",
82
+ " 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n",
83
+ " 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n",
84
+ " 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n",
85
+ " 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n",
86
+ " 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n",
87
+ " 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n",
88
+ " 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n",
89
+ " 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n",
90
+ " 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n",
91
+ " 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n",
92
+ " 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n",
93
+ " 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n",
94
+ " 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n",
95
+ " 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n",
96
+ " 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n",
97
+ " 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n",
98
+ " 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n",
99
+ " 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n",
100
+ " 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n",
101
+ " 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n",
102
+ " 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n",
103
+ " 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n",
104
+ " 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n",
105
+ " 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n",
106
+ " 1., 1., 1., 1., 1., 1., 1., 1.], device='cuda:0', requires_grad=True), Parameter containing:\n",
107
+ "tensor([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
108
+ " 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
109
+ " 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
110
+ " 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
111
+ " 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
112
+ " 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
113
+ " 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
114
+ " 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
115
+ " 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
116
+ " 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
117
+ " 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
118
+ " 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
119
+ " 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
120
+ " 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
121
+ " 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
122
+ " 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
123
+ " 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
124
+ " 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
125
+ " 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
126
+ " 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
127
+ " 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n",
128
+ " 0., 0., 0., 0., 0., 0., 0., 0.], device='cuda:0', requires_grad=True), Parameter containing:\n",
129
+ "tensor([[ 0.0339, 0.0376, 0.0073, ..., -0.0339, 0.0238, 0.0062],\n",
130
+ " [-0.0052, -0.0187, 0.0059, ..., 0.0276, -0.0090, 0.0187],\n",
131
+ " [ 0.0234, -0.0322, 0.0179, ..., -0.0114, -0.0010, 0.0280],\n",
132
+ " ...,\n",
133
+ " [ 0.0104, -0.0007, 0.0242, ..., -0.0311, -0.0272, 0.0166],\n",
134
+ " [-0.0249, -0.0128, 0.0104, ..., -0.0432, -0.0334, 0.0048],\n",
135
+ " [-0.0300, -0.0374, 0.0021, ..., -0.0104, 0.0311, 0.0000]],\n",
136
+ " device='cuda:0', requires_grad=True), Parameter containing:\n",
137
+ "tensor([-0.0425, -0.0312, -0.0302, ..., -0.0107, -0.0334, -0.0184],\n",
138
+ " device='cuda:0', requires_grad=True), Parameter containing:\n",
139
+ "tensor([[ 0.0349, -0.0058, -0.0051, ..., -0.0162, -0.0181, -0.0238],\n",
140
+ " [-0.0034, -0.0095, -0.0264, ..., -0.0123, 0.0048, -0.0051],\n",
141
+ " [-0.0266, 0.0070, -0.0043, ..., 0.0015, 0.0116, 0.0056],\n",
142
+ " ...,\n",
143
+ " [-0.0108, -0.0024, -0.0011, ..., 0.0107, -0.0093, -0.0156],\n",
144
+ " [-0.0225, 0.0118, -0.0011, ..., 0.0048, 0.0154, 0.0074],\n",
145
+ " [-0.0044, -0.0165, 0.0197, ..., 0.0096, 0.0107, -0.0024]],\n",
146
+ " device='cuda:0', requires_grad=True), Parameter containing:\n",
147
+ "tensor([-0.0131, 0.0132, -0.0184, ..., -0.0135, -0.0006, 0.0028],\n",
148
+ " device='cuda:0', requires_grad=True)]\n"
149
+ ]
150
+ }
151
+ ],
152
+ "source": [
153
+ "\n",
154
+ "%cd /home/ryn_mote/Misc/vlm_with_pooled_for_text_genrec/\n",
155
+ "\n",
156
+ "import numpy as np\n",
157
+ "import torch\n",
158
+ "import torchvision.transforms as T\n",
159
+ "from PIL import Image\n",
160
+ "from torchvision.transforms.functional import InterpolationMode\n",
161
+ "from transformers import AutoModel, AutoTokenizer\n",
162
+ "\n",
163
+ "from model import model, tokenizer\n"
164
+ ]
165
+ },
166
+ {
167
+ "cell_type": "code",
168
+ "execution_count": null,
169
+ "metadata": {
170
+ "colab": {
171
+ "base_uri": "https://localhost:8080/",
172
+ "height": 243,
173
+ "referenced_widgets": [
174
+ "dda6bb6b93f446d59d72ff96ff7a853e",
175
+ "b44eba0bbe4c43a1b0f721e678b4d283",
176
+ "e437079090dc473982e44067232d5a8a",
177
+ "c8e975345e394d50835853f171d168b5",
178
+ "dce79a5e12054f3b81f81f75ae16e496",
179
+ "0a1c58f845d8401f803dc82650ec5067",
180
+ "be5c59d8ae394c148dcd0c6cf9103c6c",
181
+ "851538e4adf34b9a923d109af48bf10f",
182
+ "82f1095705fc42f1a0bd5c419efd5fb5",
183
+ "1e8b80093b474466a159d263385af6c6",
184
+ "bcd3745ef57746678408765d98eb4e05"
185
+ ]
186
+ },
187
+ "id": "Fjz_CIWCgHIN",
188
+ "outputId": "c64d772a-5df0-4f7e-e535-387777099423"
189
+ },
190
+ "outputs": [],
191
+ "source": []
192
+ },
193
+ {
194
+ "cell_type": "code",
195
+ "execution_count": null,
196
+ "metadata": {
197
+ "colab": {
198
+ "base_uri": "https://localhost:8080/"
199
+ },
200
+ "id": "A3ep4uzx80DJ",
201
+ "outputId": "012b5503-8950-4daf-b07f-cbf5c5da2e07"
202
+ },
203
+ "outputs": [],
204
+ "source": [
205
+ "\n",
206
+ "from model import load_image\n",
207
+ "\n",
208
+ "# set the max number of tiles in `max_num`\n",
209
+ "with torch.cuda.amp.autocast(True, torch.bfloat16):\n",
210
+ " pixel_values = load_image('/home/ryn_mote/Downloads/A polaroid of Silver Forgettings -- This flower does not exist.png', max_num=1).cuda()\n",
211
+ " emb1 = model.extract_feature(pixel_values.to(torch.bfloat16))\n",
212
+ "\n",
213
+ " pixel_values = load_image('/home/ryn_mote/Downloads/20230707_160218.jpg', max_num=1).cuda()\n",
214
+ " emb2 = model.extract_feature(pixel_values.to(torch.bfloat16))\n",
215
+ "\n",
216
+ " w = [3, 5]\n",
217
+ " embs = (emb1*w[0]+emb2*w[1]) / sum(w)\n",
218
+ "\n",
219
+ " generation_config = dict(max_new_tokens=32, do_sample=False,)\n",
220
+ "\n",
221
+ " # single-image single-round conversation (单图单轮对话)\n",
222
+ " question = '\\n '\n",
223
+ " response = model.chat(tokenizer, pixel_values, question, generation_config, visual_features=embs.to(torch.bfloat16))\n",
224
+ " print(f'User: {question}\\nAssistant: {response}')\n"
225
+ ]
226
+ },
227
+ {
228
+ "cell_type": "code",
229
+ "execution_count": null,
230
+ "metadata": {
231
+ "id": "ncu5qq0wEfKN"
232
+ },
233
+ "outputs": [],
234
+ "source": []
235
+ },
236
+ {
237
+ "cell_type": "code",
238
+ "execution_count": null,
239
+ "metadata": {
240
+ "colab": {
241
+ "base_uri": "https://localhost:8080/"
242
+ },
243
+ "id": "UgjhC95CDb26",
244
+ "outputId": "709bb3ad-fe29-41a3-dd4d-d3bab9fb21ed"
245
+ },
246
+ "outputs": [],
247
+ "source": []
248
+ }
249
+ ],
250
+ "metadata": {
251
+ "accelerator": "GPU",
252
+ "colab": {
253
+ "gpuType": "A100",
254
+ "machine_shape": "hm",
255
+ "provenance": []
256
+ },
257
+ "kernelspec": {
258
+ "display_name": "base",
259
+ "language": "python",
260
+ "name": "base"
261
+ },
262
+ "language_info": {
263
+ "codemirror_mode": {
264
+ "name": "ipython",
265
+ "version": 3
266
+ },
267
+ "file_extension": ".py",
268
+ "mimetype": "text/x-python",
269
+ "name": "python",
270
+ "nbconvert_exporter": "python",
271
+ "pygments_lexer": "ipython3",
272
+ "version": "3.10.8"
273
+ },
274
+ "widgets": {
275
+ "application/vnd.jupyter.widget-state+json": {
276
+ "0a1c58f845d8401f803dc82650ec5067": {
277
+ "model_module": "@jupyter-widgets/base",
278
+ "model_module_version": "1.2.0",
279
+ "model_name": "LayoutModel",
280
+ "state": {
281
+ "_model_module": "@jupyter-widgets/base",
282
+ "_model_module_version": "1.2.0",
283
+ "_model_name": "LayoutModel",
284
+ "_view_count": null,
285
+ "_view_module": "@jupyter-widgets/base",
286
+ "_view_module_version": "1.2.0",
287
+ "_view_name": "LayoutView",
288
+ "align_content": null,
289
+ "align_items": null,
290
+ "align_self": null,
291
+ "border": null,
292
+ "bottom": null,
293
+ "display": null,
294
+ "flex": null,
295
+ "flex_flow": null,
296
+ "grid_area": null,
297
+ "grid_auto_columns": null,
298
+ "grid_auto_flow": null,
299
+ "grid_auto_rows": null,
300
+ "grid_column": null,
301
+ "grid_gap": null,
302
+ "grid_row": null,
303
+ "grid_template_areas": null,
304
+ "grid_template_columns": null,
305
+ "grid_template_rows": null,
306
+ "height": null,
307
+ "justify_content": null,
308
+ "justify_items": null,
309
+ "left": null,
310
+ "margin": null,
311
+ "max_height": null,
312
+ "max_width": null,
313
+ "min_height": null,
314
+ "min_width": null,
315
+ "object_fit": null,
316
+ "object_position": null,
317
+ "order": null,
318
+ "overflow": null,
319
+ "overflow_x": null,
320
+ "overflow_y": null,
321
+ "padding": null,
322
+ "right": null,
323
+ "top": null,
324
+ "visibility": null,
325
+ "width": null
326
+ }
327
+ },
328
+ "1e8b80093b474466a159d263385af6c6": {
329
+ "model_module": "@jupyter-widgets/base",
330
+ "model_module_version": "1.2.0",
331
+ "model_name": "LayoutModel",
332
+ "state": {
333
+ "_model_module": "@jupyter-widgets/base",
334
+ "_model_module_version": "1.2.0",
335
+ "_model_name": "LayoutModel",
336
+ "_view_count": null,
337
+ "_view_module": "@jupyter-widgets/base",
338
+ "_view_module_version": "1.2.0",
339
+ "_view_name": "LayoutView",
340
+ "align_content": null,
341
+ "align_items": null,
342
+ "align_self": null,
343
+ "border": null,
344
+ "bottom": null,
345
+ "display": null,
346
+ "flex": null,
347
+ "flex_flow": null,
348
+ "grid_area": null,
349
+ "grid_auto_columns": null,
350
+ "grid_auto_flow": null,
351
+ "grid_auto_rows": null,
352
+ "grid_column": null,
353
+ "grid_gap": null,
354
+ "grid_row": null,
355
+ "grid_template_areas": null,
356
+ "grid_template_columns": null,
357
+ "grid_template_rows": null,
358
+ "height": null,
359
+ "justify_content": null,
360
+ "justify_items": null,
361
+ "left": null,
362
+ "margin": null,
363
+ "max_height": null,
364
+ "max_width": null,
365
+ "min_height": null,
366
+ "min_width": null,
367
+ "object_fit": null,
368
+ "object_position": null,
369
+ "order": null,
370
+ "overflow": null,
371
+ "overflow_x": null,
372
+ "overflow_y": null,
373
+ "padding": null,
374
+ "right": null,
375
+ "top": null,
376
+ "visibility": null,
377
+ "width": null
378
+ }
379
+ },
380
+ "82f1095705fc42f1a0bd5c419efd5fb5": {
381
+ "model_module": "@jupyter-widgets/controls",
382
+ "model_module_version": "1.5.0",
383
+ "model_name": "ProgressStyleModel",
384
+ "state": {
385
+ "_model_module": "@jupyter-widgets/controls",
386
+ "_model_module_version": "1.5.0",
387
+ "_model_name": "ProgressStyleModel",
388
+ "_view_count": null,
389
+ "_view_module": "@jupyter-widgets/base",
390
+ "_view_module_version": "1.2.0",
391
+ "_view_name": "StyleView",
392
+ "bar_color": null,
393
+ "description_width": ""
394
+ }
395
+ },
396
+ "851538e4adf34b9a923d109af48bf10f": {
397
+ "model_module": "@jupyter-widgets/base",
398
+ "model_module_version": "1.2.0",
399
+ "model_name": "LayoutModel",
400
+ "state": {
401
+ "_model_module": "@jupyter-widgets/base",
402
+ "_model_module_version": "1.2.0",
403
+ "_model_name": "LayoutModel",
404
+ "_view_count": null,
405
+ "_view_module": "@jupyter-widgets/base",
406
+ "_view_module_version": "1.2.0",
407
+ "_view_name": "LayoutView",
408
+ "align_content": null,
409
+ "align_items": null,
410
+ "align_self": null,
411
+ "border": null,
412
+ "bottom": null,
413
+ "display": null,
414
+ "flex": null,
415
+ "flex_flow": null,
416
+ "grid_area": null,
417
+ "grid_auto_columns": null,
418
+ "grid_auto_flow": null,
419
+ "grid_auto_rows": null,
420
+ "grid_column": null,
421
+ "grid_gap": null,
422
+ "grid_row": null,
423
+ "grid_template_areas": null,
424
+ "grid_template_columns": null,
425
+ "grid_template_rows": null,
426
+ "height": null,
427
+ "justify_content": null,
428
+ "justify_items": null,
429
+ "left": null,
430
+ "margin": null,
431
+ "max_height": null,
432
+ "max_width": null,
433
+ "min_height": null,
434
+ "min_width": null,
435
+ "object_fit": null,
436
+ "object_position": null,
437
+ "order": null,
438
+ "overflow": null,
439
+ "overflow_x": null,
440
+ "overflow_y": null,
441
+ "padding": null,
442
+ "right": null,
443
+ "top": null,
444
+ "visibility": null,
445
+ "width": null
446
+ }
447
+ },
448
+ "b44eba0bbe4c43a1b0f721e678b4d283": {
449
+ "model_module": "@jupyter-widgets/controls",
450
+ "model_module_version": "1.5.0",
451
+ "model_name": "HTMLModel",
452
+ "state": {
453
+ "_dom_classes": [],
454
+ "_model_module": "@jupyter-widgets/controls",
455
+ "_model_module_version": "1.5.0",
456
+ "_model_name": "HTMLModel",
457
+ "_view_count": null,
458
+ "_view_module": "@jupyter-widgets/controls",
459
+ "_view_module_version": "1.5.0",
460
+ "_view_name": "HTMLView",
461
+ "description": "",
462
+ "description_tooltip": null,
463
+ "layout": "IPY_MODEL_0a1c58f845d8401f803dc82650ec5067",
464
+ "placeholder": "​",
465
+ "style": "IPY_MODEL_be5c59d8ae394c148dcd0c6cf9103c6c",
466
+ "value": "Loading checkpoint shards: 100%"
467
+ }
468
+ },
469
+ "bcd3745ef57746678408765d98eb4e05": {
470
+ "model_module": "@jupyter-widgets/controls",
471
+ "model_module_version": "1.5.0",
472
+ "model_name": "DescriptionStyleModel",
473
+ "state": {
474
+ "_model_module": "@jupyter-widgets/controls",
475
+ "_model_module_version": "1.5.0",
476
+ "_model_name": "DescriptionStyleModel",
477
+ "_view_count": null,
478
+ "_view_module": "@jupyter-widgets/base",
479
+ "_view_module_version": "1.2.0",
480
+ "_view_name": "StyleView",
481
+ "description_width": ""
482
+ }
483
+ },
484
+ "be5c59d8ae394c148dcd0c6cf9103c6c": {
485
+ "model_module": "@jupyter-widgets/controls",
486
+ "model_module_version": "1.5.0",
487
+ "model_name": "DescriptionStyleModel",
488
+ "state": {
489
+ "_model_module": "@jupyter-widgets/controls",
490
+ "_model_module_version": "1.5.0",
491
+ "_model_name": "DescriptionStyleModel",
492
+ "_view_count": null,
493
+ "_view_module": "@jupyter-widgets/base",
494
+ "_view_module_version": "1.2.0",
495
+ "_view_name": "StyleView",
496
+ "description_width": ""
497
+ }
498
+ },
499
+ "c8e975345e394d50835853f171d168b5": {
500
+ "model_module": "@jupyter-widgets/controls",
501
+ "model_module_version": "1.5.0",
502
+ "model_name": "HTMLModel",
503
+ "state": {
504
+ "_dom_classes": [],
505
+ "_model_module": "@jupyter-widgets/controls",
506
+ "_model_module_version": "1.5.0",
507
+ "_model_name": "HTMLModel",
508
+ "_view_count": null,
509
+ "_view_module": "@jupyter-widgets/controls",
510
+ "_view_module_version": "1.5.0",
511
+ "_view_name": "HTMLView",
512
+ "description": "",
513
+ "description_tooltip": null,
514
+ "layout": "IPY_MODEL_1e8b80093b474466a159d263385af6c6",
515
+ "placeholder": "​",
516
+ "style": "IPY_MODEL_bcd3745ef57746678408765d98eb4e05",
517
+ "value": " 2/2 [00:00&lt;00:00,  4.98it/s]"
518
+ }
519
+ },
520
+ "dce79a5e12054f3b81f81f75ae16e496": {
521
+ "model_module": "@jupyter-widgets/base",
522
+ "model_module_version": "1.2.0",
523
+ "model_name": "LayoutModel",
524
+ "state": {
525
+ "_model_module": "@jupyter-widgets/base",
526
+ "_model_module_version": "1.2.0",
527
+ "_model_name": "LayoutModel",
528
+ "_view_count": null,
529
+ "_view_module": "@jupyter-widgets/base",
530
+ "_view_module_version": "1.2.0",
531
+ "_view_name": "LayoutView",
532
+ "align_content": null,
533
+ "align_items": null,
534
+ "align_self": null,
535
+ "border": null,
536
+ "bottom": null,
537
+ "display": null,
538
+ "flex": null,
539
+ "flex_flow": null,
540
+ "grid_area": null,
541
+ "grid_auto_columns": null,
542
+ "grid_auto_flow": null,
543
+ "grid_auto_rows": null,
544
+ "grid_column": null,
545
+ "grid_gap": null,
546
+ "grid_row": null,
547
+ "grid_template_areas": null,
548
+ "grid_template_columns": null,
549
+ "grid_template_rows": null,
550
+ "height": null,
551
+ "justify_content": null,
552
+ "justify_items": null,
553
+ "left": null,
554
+ "margin": null,
555
+ "max_height": null,
556
+ "max_width": null,
557
+ "min_height": null,
558
+ "min_width": null,
559
+ "object_fit": null,
560
+ "object_position": null,
561
+ "order": null,
562
+ "overflow": null,
563
+ "overflow_x": null,
564
+ "overflow_y": null,
565
+ "padding": null,
566
+ "right": null,
567
+ "top": null,
568
+ "visibility": null,
569
+ "width": null
570
+ }
571
+ },
572
+ "dda6bb6b93f446d59d72ff96ff7a853e": {
573
+ "model_module": "@jupyter-widgets/controls",
574
+ "model_module_version": "1.5.0",
575
+ "model_name": "HBoxModel",
576
+ "state": {
577
+ "_dom_classes": [],
578
+ "_model_module": "@jupyter-widgets/controls",
579
+ "_model_module_version": "1.5.0",
580
+ "_model_name": "HBoxModel",
581
+ "_view_count": null,
582
+ "_view_module": "@jupyter-widgets/controls",
583
+ "_view_module_version": "1.5.0",
584
+ "_view_name": "HBoxView",
585
+ "box_style": "",
586
+ "children": [
587
+ "IPY_MODEL_b44eba0bbe4c43a1b0f721e678b4d283",
588
+ "IPY_MODEL_e437079090dc473982e44067232d5a8a",
589
+ "IPY_MODEL_c8e975345e394d50835853f171d168b5"
590
+ ],
591
+ "layout": "IPY_MODEL_dce79a5e12054f3b81f81f75ae16e496"
592
+ }
593
+ },
594
+ "e437079090dc473982e44067232d5a8a": {
595
+ "model_module": "@jupyter-widgets/controls",
596
+ "model_module_version": "1.5.0",
597
+ "model_name": "FloatProgressModel",
598
+ "state": {
599
+ "_dom_classes": [],
600
+ "_model_module": "@jupyter-widgets/controls",
601
+ "_model_module_version": "1.5.0",
602
+ "_model_name": "FloatProgressModel",
603
+ "_view_count": null,
604
+ "_view_module": "@jupyter-widgets/controls",
605
+ "_view_module_version": "1.5.0",
606
+ "_view_name": "ProgressView",
607
+ "bar_style": "success",
608
+ "description": "",
609
+ "description_tooltip": null,
610
+ "layout": "IPY_MODEL_851538e4adf34b9a923d109af48bf10f",
611
+ "max": 2,
612
+ "min": 0,
613
+ "orientation": "horizontal",
614
+ "style": "IPY_MODEL_82f1095705fc42f1a0bd5c419efd5fb5",
615
+ "value": 2
616
+ }
617
+ }
618
+ }
619
+ }
620
+ },
621
+ "nbformat": 4,
622
+ "nbformat_minor": 1
623
+ }
internvl2_patches.py ADDED
@@ -0,0 +1,325 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # --------------------------------------------------------
2
+ # InternVL
3
+ # Copyright (c) 2024 OpenGVLab
4
+ # Licensed under The MIT License [see LICENSE for details]
5
+ # --------------------------------------------------------
6
+ import warnings
7
+ from typing import Any, List, Optional, Tuple, Union
8
+
9
+ import torch.utils.checkpoint
10
+ import transformers
11
+ from torch import nn
12
+ from torch.nn import CrossEntropyLoss
13
+ from transformers import (AutoModel, GenerationConfig, LlamaForCausalLM,
14
+ LlamaTokenizer)
15
+ from transformers.modeling_outputs import CausalLMOutputWithPast
16
+ from transformers.modeling_utils import PreTrainedModel
17
+ from transformers.utils import ModelOutput, logging
18
+
19
+ from configuration_internvl_chat import InternVLChatConfig
20
+ from conversation import get_conv_template
21
+ from modeling_intern_vit import InternVisionModel, has_flash_attn
22
+ from modeling_phi3 import Phi3ForCausalLM
23
+
24
+ from transformers import CLIPProcessor, CLIPModel
25
+
26
+
27
+ logger = logging.get_logger(__name__)
28
+
29
+
30
+ def version_cmp(v1, v2, op='eq'):
31
+ import operator
32
+
33
+ from packaging import version
34
+ op_func = getattr(operator, op)
35
+ return op_func(version.parse(v1), version.parse(v2))
36
+
37
+
38
+ class InternVLChatModel(PreTrainedModel):
39
+ config_class = InternVLChatConfig
40
+ main_input_name = 'pixel_values'
41
+ _supports_flash_attn_2 = True
42
+ _no_split_modules = ['InternVisionModel', 'LlamaDecoderLayer', 'Phi3DecoderLayer']
43
+
44
+ def __init__(self, config: InternVLChatConfig, vision_model=None, language_model=None, use_flash_attn=True):
45
+ super().__init__(config)
46
+
47
+ assert version_cmp(transformers.__version__, '4.36.2', 'ge')
48
+ image_size = config.force_image_size or config.vision_config.image_size
49
+ patch_size = config.vision_config.patch_size
50
+ self.patch_size = patch_size
51
+ self.select_layer = config.select_layer
52
+ self.template = config.template
53
+ self.num_image_token = 1#int((image_size // patch_size) ** 2 * (config.downsample_ratio ** 2))
54
+ self.downsample_ratio = config.downsample_ratio
55
+ self.ps_version = config.ps_version
56
+ use_flash_attn = use_flash_attn if has_flash_attn else False
57
+ config.vision_config.use_flash_attn = True if use_flash_attn else False
58
+ config.llm_config._attn_implementation = 'flash_attention_2' if use_flash_attn else 'eager'
59
+
60
+ logger.info(f'num_image_token: {self.num_image_token}')
61
+ logger.info(f'ps_version: {self.ps_version}')
62
+ if vision_model is not None:
63
+ self.vision_model = vision_model
64
+ else:
65
+ self.vision_model = CLIPModel.from_pretrained(
66
+ "openai/clip-vit-base-patch16",
67
+ # attn_implementation="flash_attention_2",
68
+ # device_map=device,
69
+ # torch_dtype=torch_dtype,
70
+ )
71
+ # self.processor = CLIPProcessor.from_pretrained("openai/clip-vit-base-patch32")
72
+
73
+ if language_model is not None:
74
+ self.language_model = language_model
75
+ else:
76
+ if config.llm_config.architectures[0] == 'LlamaForCausalLM':
77
+ self.language_model = LlamaForCausalLM(config.llm_config)
78
+ elif config.llm_config.architectures[0] == 'Phi3ForCausalLM':
79
+ self.language_model = Phi3ForCausalLM(config.llm_config)
80
+ else:
81
+ raise NotImplementedError(f'{config.llm_config.architectures[0]} is not implemented.')
82
+
83
+ vit_hidden_size = 512# config.vision_config.hidden_size
84
+ llm_hidden_size = config.llm_config.hidden_size
85
+
86
+ self.mlp1 = nn.Sequential(
87
+ nn.LayerNorm(vit_hidden_size),
88
+ nn.Linear(vit_hidden_size, llm_hidden_size),
89
+ nn.GELU(),
90
+ nn.Linear(llm_hidden_size, llm_hidden_size)
91
+ )
92
+
93
+ self.img_context_token_id = None
94
+ self.conv_template = get_conv_template(self.template)
95
+ self.system_message = self.conv_template.system_message
96
+
97
+ def forward(
98
+ self,
99
+ pixel_values: torch.FloatTensor,
100
+ input_ids: torch.LongTensor = None,
101
+ attention_mask: Optional[torch.Tensor] = None,
102
+ position_ids: Optional[torch.LongTensor] = None,
103
+ image_flags: Optional[torch.LongTensor] = None,
104
+ past_key_values: Optional[List[torch.FloatTensor]] = None,
105
+ labels: Optional[torch.LongTensor] = None,
106
+ use_cache: Optional[bool] = None,
107
+ output_attentions: Optional[bool] = None,
108
+ output_hidden_states: Optional[bool] = None,
109
+ return_dict: Optional[bool] = None,
110
+ ) -> Union[Tuple, CausalLMOutputWithPast]:
111
+ assert self.img_context_token_id
112
+
113
+ return_dict = return_dict if return_dict is not None else self.config.use_return_dict
114
+
115
+ input_embeds = self.language_model.get_input_embeddings()(input_ids)
116
+
117
+ vit_embeds = self.extract_feature(pixel_values)
118
+ vit_embeds = self.mlp1(vit_embeds)
119
+ vit_batch_size = pixel_values.shape[0]
120
+
121
+ B, N, C = input_embeds.shape
122
+ input_embeds = input_embeds.reshape(B * N, C)
123
+
124
+ # if torch.distributed.get_rank() == 0:
125
+ # print(f'dynamic ViT batch size: {vit_batch_size}, images per sample: {vit_batch_size / B}, dynamic token length: {N}')
126
+
127
+ input_ids = input_ids.reshape(B * N)
128
+ selected = (input_ids == self.img_context_token_id)
129
+ try:
130
+ input_embeds[selected] = input_embeds[selected] * 0.0 + vit_embeds.reshape(-1, C)
131
+ except Exception as e:
132
+ vit_embeds = vit_embeds.reshape(-1, C)
133
+ print(f'warning: {e}, input_embeds[selected].shape={input_embeds[selected].shape}, '
134
+ f'vit_embeds.shape={vit_embeds.shape}')
135
+ n_token = selected.sum()
136
+ input_embeds[selected] = input_embeds[selected] * 0.0 + vit_embeds[:n_token]
137
+
138
+ input_embeds = input_embeds.reshape(B, N, C)
139
+
140
+ outputs = self.language_model(
141
+ inputs_embeds=input_embeds,
142
+ attention_mask=attention_mask,
143
+ position_ids=position_ids,
144
+ past_key_values=past_key_values,
145
+ use_cache=use_cache,
146
+ output_attentions=output_attentions,
147
+ output_hidden_states=output_hidden_states,
148
+ return_dict=return_dict,
149
+ )
150
+ logits = outputs.logits
151
+
152
+ loss = None
153
+ if labels is not None:
154
+ # Shift so that tokens < n predict n
155
+ shift_logits = logits[..., :-1, :].contiguous()
156
+ shift_labels = labels[..., 1:].contiguous()
157
+ # Flatten the tokens
158
+ loss_fct = CrossEntropyLoss()
159
+ shift_logits = shift_logits.view(-1, self.language_model.config.vocab_size)
160
+ shift_labels = shift_labels.view(-1)
161
+ # Enable model parallelism
162
+ shift_labels = shift_labels.to(shift_logits.device)
163
+ loss = loss_fct(shift_logits, shift_labels)
164
+
165
+ if not return_dict:
166
+ output = (logits,) + outputs[1:]
167
+ return (loss,) + output if loss is not None else output
168
+
169
+ return CausalLMOutputWithPast(
170
+ loss=loss,
171
+ logits=logits,
172
+ past_key_values=outputs.past_key_values,
173
+ hidden_states=outputs.hidden_states,
174
+ attentions=outputs.attentions,
175
+ )
176
+
177
+ def pixel_shuffle(self, x, scale_factor=0.5):
178
+ n, w, h, c = x.size()
179
+ # N, W, H, C --> N, W, H * scale, C // scale
180
+ x = x.view(n, w, int(h * scale_factor), int(c / scale_factor))
181
+ # N, W, H * scale, C // scale --> N, H * scale, W, C // scale
182
+ x = x.permute(0, 2, 1, 3).contiguous()
183
+ # N, H * scale, W, C // scale --> N, H * scale, W * scale, C // (scale ** 2)
184
+ x = x.view(n, int(h * scale_factor), int(w * scale_factor),
185
+ int(c / (scale_factor * scale_factor)))
186
+ if self.ps_version == 'v1':
187
+ warnings.warn("In ps_version 'v1', the height and width have not been swapped back, "
188
+ 'which results in a transposed image.')
189
+ else:
190
+ x = x.permute(0, 2, 1, 3).contiguous()
191
+ return x
192
+
193
+ def extract_feature(self, pixel_values):
194
+ # inputs = self.processor(images=pixel_values,
195
+ # return_tensors="pt").to(self.vision_model.device, self.vision_model.dtype)
196
+ vit_embeds = self.vision_model.get_image_features(pixel_values,
197
+ return_dict=True)
198
+
199
+ vit_embeds = vit_embeds.reshape(pixel_values.shape[0], -1, vit_embeds.shape[-1])
200
+ return vit_embeds
201
+
202
+ def batch_chat(self, tokenizer, pixel_values, questions, generation_config, num_patches_list=None,
203
+ history=None, return_history=False, IMG_START_TOKEN='<img>', IMG_END_TOKEN='</img>',
204
+ IMG_CONTEXT_TOKEN='<IMG_CONTEXT>', verbose=False, image_counts=None):
205
+ if history is not None or return_history:
206
+ print('Now multi-turn chat is not supported in batch_chat.')
207
+ raise NotImplementedError
208
+
209
+ if image_counts is not None:
210
+ num_patches_list = image_counts
211
+ print('Warning: `image_counts` is deprecated. Please use `num_patches_list` instead.')
212
+
213
+ img_context_token_id = tokenizer.convert_tokens_to_ids(IMG_CONTEXT_TOKEN)
214
+ self.img_context_token_id = img_context_token_id
215
+
216
+ if verbose and pixel_values is not None:
217
+ image_bs = pixel_values.shape[0]
218
+ print(f'dynamic ViT batch size: {image_bs}')
219
+
220
+ queries = []
221
+ for idx, num_patches in enumerate(num_patches_list):
222
+ question = questions[idx]
223
+ if pixel_values is not None and '<image>' not in question:
224
+ question = '<image>\n' + question
225
+ template = get_conv_template(self.template)
226
+ template.system_message = self.system_message
227
+ template.append_message(template.roles[0], question)
228
+ template.append_message(template.roles[1], None)
229
+ query = template.get_prompt()
230
+
231
+ image_tokens = IMG_START_TOKEN + IMG_CONTEXT_TOKEN * self.num_image_token * num_patches + IMG_END_TOKEN
232
+ query = query.replace('<image>', image_tokens, 1)
233
+ queries.append(query)
234
+
235
+ tokenizer.padding_side = 'left'
236
+ model_inputs = tokenizer(queries, return_tensors='pt', padding=True)
237
+ input_ids = model_inputs['input_ids'].cuda()
238
+ attention_mask = model_inputs['attention_mask'].cuda()
239
+ eos_token_id = tokenizer.convert_tokens_to_ids(template.sep)
240
+ generation_config['eos_token_id'] = eos_token_id
241
+ generation_output = self.generate(
242
+ pixel_values=pixel_values,
243
+ input_ids=input_ids,
244
+ attention_mask=attention_mask,
245
+ **generation_config
246
+ )
247
+ responses = tokenizer.batch_decode(generation_output, skip_special_tokens=True)
248
+ responses = [response.split(template.sep)[0].strip() for response in responses]
249
+ return responses
250
+
251
+ def chat(self, tokenizer, pixel_values, question, generation_config, history=None, return_history=False,
252
+ num_patches_list=None, IMG_START_TOKEN='<img>', IMG_END_TOKEN='</img>', IMG_CONTEXT_TOKEN='<IMG_CONTEXT>',
253
+ verbose=False, visual_features=None):
254
+
255
+
256
+ img_context_token_id = tokenizer.convert_tokens_to_ids(IMG_CONTEXT_TOKEN)
257
+ self.img_context_token_id = img_context_token_id
258
+
259
+ template = get_conv_template(self.template)
260
+ # template.system_message = self.system_message
261
+ eos_token_id = tokenizer.convert_tokens_to_ids(template.sep)
262
+
263
+ query = '''<|user|><img><IMG_CONTEXT></img><|end|><|assistant|>'''
264
+
265
+ model_inputs = tokenizer(query, return_tensors='pt')
266
+ input_ids = model_inputs['input_ids'].cuda()
267
+ attention_mask = model_inputs['attention_mask'].cuda()
268
+ generation_config['eos_token_id'] = eos_token_id
269
+ generation_output = self.generate(
270
+ pixel_values=pixel_values,
271
+ input_ids=input_ids,
272
+ attention_mask=attention_mask,
273
+ visual_features=visual_features,
274
+ **generation_config
275
+ )
276
+ response = tokenizer.batch_decode(generation_output, skip_special_tokens=True)[0]
277
+
278
+ return response
279
+
280
+ @torch.no_grad()
281
+ def generate(
282
+ self,
283
+ pixel_values: Optional[torch.FloatTensor] = None,
284
+ input_ids: Optional[torch.FloatTensor] = None,
285
+ attention_mask: Optional[torch.LongTensor] = None,
286
+ visual_features: Optional[torch.FloatTensor] = None,
287
+ generation_config: Optional[GenerationConfig] = None,
288
+ output_hidden_states: Optional[bool] = None,
289
+ return_dict: Optional[bool] = None,
290
+ **generate_kwargs,
291
+ ) -> torch.LongTensor:
292
+
293
+ assert self.img_context_token_id is not None
294
+ if pixel_values is not None:
295
+ if visual_features is not None:
296
+ vit_embeds = visual_features
297
+ else:
298
+ vit_embeds = self.extract_feature(pixel_values)
299
+ vit_embeds = self.mlp1(vit_embeds)
300
+
301
+
302
+ input_embeds = self.language_model.get_input_embeddings()(input_ids)
303
+ B, N, C = input_embeds.shape
304
+ input_embeds = input_embeds.reshape(B * N, C)
305
+
306
+ input_ids = input_ids.reshape(B * N)
307
+ selected = (input_ids == self.img_context_token_id)
308
+ assert selected.sum() != 0
309
+ input_embeds[selected] = vit_embeds.reshape(-1, C).to(input_embeds.device)
310
+
311
+ input_embeds = input_embeds.reshape(B, N, C)
312
+ else:
313
+ input_embeds = self.language_model.get_input_embeddings()(input_ids)
314
+
315
+ outputs = self.language_model.generate(
316
+ inputs_embeds=input_embeds,
317
+ attention_mask=attention_mask,
318
+ generation_config=generation_config,
319
+ output_hidden_states=output_hidden_states,
320
+ return_dict=return_dict,
321
+ use_cache=True,
322
+ **generate_kwargs,
323
+ )
324
+
325
+ return outputs
model.py ADDED
@@ -0,0 +1,115 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import numpy as np
2
+ import torch
3
+ import torchvision.transforms as T
4
+ from PIL import Image
5
+ from torchvision.transforms.functional import InterpolationMode
6
+ from transformers import AutoModel, AutoTokenizer
7
+
8
+ from internvl2_patches import InternVLChatModel
9
+
10
+ import config
11
+
12
+
13
+ # If you want to load a model using multiple GPUs, please refer to the `Multiple GPUs` section.
14
+ path = config.path
15
+ model = InternVLChatModel.from_pretrained(
16
+ path,
17
+ torch_dtype=config.dtype,
18
+ # low_cpu_mem_usage=True,
19
+ use_flash_attn=True,
20
+ ignore_mismatched_sizes=True,
21
+ revision='7f49802f5bf1e6e3d20b6f69268701c7eb67e037').to(config.device)
22
+ tokenizer = AutoTokenizer.from_pretrained('OpenGVLab/InternVL2-4B', trust_remote_code=True, use_fast=False,
23
+ revision='7f49802f5bf1e6e3d20b6f69268701c7eb67e037')
24
+ tokenizer.padding_side = 'left'
25
+
26
+ img_context_token_id = tokenizer.convert_tokens_to_ids('<IMG_CONTEXT>')
27
+ model.img_context_token_id = img_context_token_id
28
+
29
+ model.mlp1 = model.mlp1.to(torch.float32)
30
+ # model.vision_model.encoder = model.vision_model.encoder.to(torch.float32)
31
+ print(model.mlp1,)
32
+
33
+ params = list(model.mlp1.parameters())# + list(model.vision_model.encoder.parameters())
34
+
35
+ print(f'Training: {params}')
36
+ # we will drop all but last patch & train mlp1; mlp1 will be where we do vector arythmetic and probes.
37
+ optimizer = torch.optim.AdamW(params, lr=config.lr)
38
+
39
+
40
+ IMAGENET_MEAN = (0.485, 0.456, 0.406)
41
+ IMAGENET_STD = (0.229, 0.224, 0.225)
42
+
43
+ def build_transform(input_size):
44
+ MEAN, STD = IMAGENET_MEAN, IMAGENET_STD
45
+ transform = T.Compose([
46
+ T.Lambda(lambda img: img.convert('RGB') if img.mode != 'RGB' else img),
47
+ T.Resize((input_size, input_size), interpolation=InterpolationMode.BICUBIC),
48
+ T.ToTensor(),
49
+ T.Normalize(mean=MEAN, std=STD)
50
+ ])
51
+ return transform
52
+
53
+ def find_closest_aspect_ratio(aspect_ratio, target_ratios, width, height, image_size):
54
+ best_ratio_diff = float('inf')
55
+ best_ratio = (1, 1)
56
+ area = width * height
57
+ for ratio in target_ratios:
58
+ target_aspect_ratio = ratio[0] / ratio[1]
59
+ ratio_diff = abs(aspect_ratio - target_aspect_ratio)
60
+ if ratio_diff < best_ratio_diff:
61
+ best_ratio_diff = ratio_diff
62
+ best_ratio = ratio
63
+ elif ratio_diff == best_ratio_diff:
64
+ if area > 0.5 * image_size * image_size * ratio[0] * ratio[1]:
65
+ best_ratio = ratio
66
+ return best_ratio
67
+
68
+ def dynamic_preprocess(image, min_num=1, max_num=12, image_size=448, use_thumbnail=False):
69
+ orig_width, orig_height = image.size
70
+ aspect_ratio = orig_width / orig_height
71
+
72
+ # calculate the existing image aspect ratio
73
+ target_ratios = set(
74
+ (i, j) for n in range(min_num, max_num + 1) for i in range(1, n + 1) for j in range(1, n + 1) if
75
+ i * j <= max_num and i * j >= min_num)
76
+ target_ratios = sorted(target_ratios, key=lambda x: x[0] * x[1])
77
+
78
+ # find the closest aspect ratio to the target
79
+ target_aspect_ratio = find_closest_aspect_ratio(
80
+ aspect_ratio, target_ratios, orig_width, orig_height, image_size)
81
+
82
+ # calculate the target width and height
83
+ target_width = image_size * target_aspect_ratio[0]
84
+ target_height = image_size * target_aspect_ratio[1]
85
+ blocks = target_aspect_ratio[0] * target_aspect_ratio[1]
86
+
87
+ # resize the image
88
+ resized_img = image.resize((target_width, target_height))
89
+ processed_images = []
90
+ for i in range(blocks):
91
+ box = (
92
+ (i % (target_width // image_size)) * image_size,
93
+ (i // (target_width // image_size)) * image_size,
94
+ ((i % (target_width // image_size)) + 1) * image_size,
95
+ ((i // (target_width // image_size)) + 1) * image_size
96
+ )
97
+ # split the image
98
+ split_img = resized_img.crop(box)
99
+ processed_images.append(split_img)
100
+ assert len(processed_images) == blocks
101
+ if use_thumbnail and len(processed_images) != 1:
102
+ thumbnail_img = image.resize((image_size, image_size))
103
+ processed_images.append(thumbnail_img)
104
+ return processed_images
105
+
106
+ # TODO can make a batch process within data pipeline
107
+ def load_image(image_file, pil_image=None, input_size=224, max_num=12):
108
+ if not pil_image:
109
+ pil_image = Image.open(image_file)
110
+ image = pil_image.convert('RGB')
111
+ transform = build_transform(input_size=input_size)
112
+ # images = dynamic_preprocess(image, image_size=input_size, use_thumbnail=True, max_num=max_num)
113
+ pixel_values = [transform(image) for image in [image]]
114
+ pixel_values = torch.stack(pixel_values)
115
+ return pixel_values
modeling_intern_vit.py ADDED
@@ -0,0 +1,429 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # --------------------------------------------------------
2
+ # InternVL
3
+ # Copyright (c) 2024 OpenGVLab
4
+ # Licensed under The MIT License [see LICENSE for details]
5
+ # --------------------------------------------------------
6
+ from typing import Optional, Tuple, Union
7
+
8
+ import torch
9
+ import torch.nn.functional as F
10
+ import torch.utils.checkpoint
11
+ from einops import rearrange
12
+ from timm.models.layers import DropPath
13
+ from torch import nn
14
+ from transformers.activations import ACT2FN
15
+ from transformers.modeling_outputs import (BaseModelOutput,
16
+ BaseModelOutputWithPooling)
17
+ from transformers.modeling_utils import PreTrainedModel
18
+ from transformers.utils import logging
19
+
20
+ from configuration_intern_vit import InternVisionConfig
21
+
22
+ try:
23
+ from flash_attn.bert_padding import pad_input, unpad_input
24
+ from flash_attn.flash_attn_interface import \
25
+ flash_attn_varlen_qkvpacked_func
26
+ has_flash_attn = True
27
+ except:
28
+ print('FlashAttention2 is not installed.')
29
+ has_flash_attn = False
30
+
31
+ logger = logging.get_logger(__name__)
32
+
33
+
34
+ class FlashAttention(nn.Module):
35
+ """Implement the scaled dot product attention with softmax.
36
+ Arguments
37
+ ---------
38
+ softmax_scale: The temperature to use for the softmax attention.
39
+ (default: 1/sqrt(d_keys) where d_keys is computed at
40
+ runtime)
41
+ attention_dropout: The dropout rate to apply to the attention
42
+ (default: 0.0)
43
+ """
44
+
45
+ def __init__(self, softmax_scale=None, attention_dropout=0.0, device=None, dtype=None):
46
+ super().__init__()
47
+ self.softmax_scale = softmax_scale
48
+ self.dropout_p = attention_dropout
49
+
50
+ def forward(self, qkv, key_padding_mask=None, causal=False, cu_seqlens=None,
51
+ max_s=None, need_weights=False):
52
+ """Implements the multihead softmax attention.
53
+ Arguments
54
+ ---------
55
+ qkv: The tensor containing the query, key, and value. (B, S, 3, H, D) if key_padding_mask is None
56
+ if unpadded: (nnz, 3, h, d)
57
+ key_padding_mask: a bool tensor of shape (B, S)
58
+ """
59
+ assert not need_weights
60
+ assert qkv.dtype in [torch.float16, torch.bfloat16]
61
+ assert qkv.is_cuda
62
+
63
+ if cu_seqlens is None:
64
+ batch_size = qkv.shape[0]
65
+ seqlen = qkv.shape[1]
66
+ if key_padding_mask is None:
67
+ qkv = rearrange(qkv, 'b s ... -> (b s) ...')
68
+ max_s = seqlen
69
+ cu_seqlens = torch.arange(0, (batch_size + 1) * seqlen, step=seqlen, dtype=torch.int32,
70
+ device=qkv.device)
71
+ output = flash_attn_varlen_qkvpacked_func(
72
+ qkv, cu_seqlens, max_s, self.dropout_p if self.training else 0.0,
73
+ softmax_scale=self.softmax_scale, causal=causal
74
+ )
75
+ output = rearrange(output, '(b s) ... -> b s ...', b=batch_size)
76
+ else:
77
+ nheads = qkv.shape[-2]
78
+ x = rearrange(qkv, 'b s three h d -> b s (three h d)')
79
+ x_unpad, indices, cu_seqlens, max_s = unpad_input(x, key_padding_mask)
80
+ x_unpad = rearrange(x_unpad, 'nnz (three h d) -> nnz three h d', three=3, h=nheads)
81
+ output_unpad = flash_attn_varlen_qkvpacked_func(
82
+ x_unpad, cu_seqlens, max_s, self.dropout_p if self.training else 0.0,
83
+ softmax_scale=self.softmax_scale, causal=causal
84
+ )
85
+ output = rearrange(pad_input(rearrange(output_unpad, 'nnz h d -> nnz (h d)'),
86
+ indices, batch_size, seqlen),
87
+ 'b s (h d) -> b s h d', h=nheads)
88
+ else:
89
+ assert max_s is not None
90
+ output = flash_attn_varlen_qkvpacked_func(
91
+ qkv, cu_seqlens, max_s, self.dropout_p if self.training else 0.0,
92
+ softmax_scale=self.softmax_scale, causal=causal
93
+ )
94
+
95
+ return output, None
96
+
97
+
98
+ class InternRMSNorm(nn.Module):
99
+ def __init__(self, hidden_size, eps=1e-6):
100
+ super().__init__()
101
+ self.weight = nn.Parameter(torch.ones(hidden_size))
102
+ self.variance_epsilon = eps
103
+
104
+ def forward(self, hidden_states):
105
+ input_dtype = hidden_states.dtype
106
+ hidden_states = hidden_states.to(torch.float32)
107
+ variance = hidden_states.pow(2).mean(-1, keepdim=True)
108
+ hidden_states = hidden_states * torch.rsqrt(variance + self.variance_epsilon)
109
+ return self.weight * hidden_states.to(input_dtype)
110
+
111
+
112
+ try:
113
+ from apex.normalization import FusedRMSNorm
114
+
115
+ InternRMSNorm = FusedRMSNorm # noqa
116
+
117
+ logger.info('Discovered apex.normalization.FusedRMSNorm - will use it instead of InternRMSNorm')
118
+ except ImportError:
119
+ # using the normal InternRMSNorm
120
+ pass
121
+ except Exception:
122
+ logger.warning('discovered apex but it failed to load, falling back to InternRMSNorm')
123
+ pass
124
+
125
+
126
+ NORM2FN = {
127
+ 'rms_norm': InternRMSNorm,
128
+ 'layer_norm': nn.LayerNorm,
129
+ }
130
+
131
+
132
+ class InternVisionEmbeddings(nn.Module):
133
+ def __init__(self, config: InternVisionConfig):
134
+ super().__init__()
135
+ self.config = config
136
+ self.embed_dim = config.hidden_size
137
+ self.image_size = config.image_size
138
+ self.patch_size = config.patch_size
139
+
140
+ self.class_embedding = nn.Parameter(
141
+ torch.randn(1, 1, self.embed_dim),
142
+ )
143
+
144
+ self.patch_embedding = nn.Conv2d(
145
+ in_channels=3, out_channels=self.embed_dim, kernel_size=self.patch_size, stride=self.patch_size
146
+ )
147
+
148
+ self.num_patches = (self.image_size // self.patch_size) ** 2
149
+ self.num_positions = self.num_patches + 1
150
+
151
+ self.position_embedding = nn.Parameter(torch.randn(1, self.num_positions, self.embed_dim))
152
+
153
+ def _get_pos_embed(self, pos_embed, H, W):
154
+ target_dtype = pos_embed.dtype
155
+ pos_embed = pos_embed.float().reshape(
156
+ 1, self.image_size // self.patch_size, self.image_size // self.patch_size, -1).permute(0, 3, 1, 2)
157
+ pos_embed = F.interpolate(pos_embed, size=(H, W), mode='bicubic', align_corners=False). \
158
+ reshape(1, -1, H * W).permute(0, 2, 1).to(target_dtype)
159
+ return pos_embed
160
+
161
+ def forward(self, pixel_values: torch.FloatTensor) -> torch.Tensor:
162
+ target_dtype = self.patch_embedding.weight.dtype
163
+ patch_embeds = self.patch_embedding(pixel_values) # shape = [*, channel, width, height]
164
+ batch_size, _, height, width = patch_embeds.shape
165
+ patch_embeds = patch_embeds.flatten(2).transpose(1, 2)
166
+ class_embeds = self.class_embedding.expand(batch_size, 1, -1).to(target_dtype)
167
+ embeddings = torch.cat([class_embeds, patch_embeds], dim=1)
168
+ position_embedding = torch.cat([
169
+ self.position_embedding[:, :1, :],
170
+ self._get_pos_embed(self.position_embedding[:, 1:, :], height, width)
171
+ ], dim=1)
172
+ embeddings = embeddings + position_embedding.to(target_dtype)
173
+ return embeddings
174
+
175
+
176
+ class InternAttention(nn.Module):
177
+ """Multi-headed attention from 'Attention Is All You Need' paper"""
178
+
179
+ def __init__(self, config: InternVisionConfig):
180
+ super().__init__()
181
+ self.config = config
182
+ self.embed_dim = config.hidden_size
183
+ self.num_heads = config.num_attention_heads
184
+ self.use_flash_attn = config.use_flash_attn and has_flash_attn
185
+ if config.use_flash_attn and not has_flash_attn:
186
+ print('Warning: Flash Attention is not available, use_flash_attn is set to False.')
187
+ self.head_dim = self.embed_dim // self.num_heads
188
+ if self.head_dim * self.num_heads != self.embed_dim:
189
+ raise ValueError(
190
+ f'embed_dim must be divisible by num_heads (got `embed_dim`: {self.embed_dim} and `num_heads`:'
191
+ f' {self.num_heads}).'
192
+ )
193
+
194
+ self.scale = self.head_dim ** -0.5
195
+ self.qkv = nn.Linear(self.embed_dim, 3 * self.embed_dim, bias=config.qkv_bias)
196
+ self.attn_drop = nn.Dropout(config.attention_dropout)
197
+ self.proj_drop = nn.Dropout(config.dropout)
198
+
199
+ self.qk_normalization = config.qk_normalization
200
+
201
+ if self.qk_normalization:
202
+ self.q_norm = InternRMSNorm(self.embed_dim, eps=config.layer_norm_eps)
203
+ self.k_norm = InternRMSNorm(self.embed_dim, eps=config.layer_norm_eps)
204
+
205
+ if self.use_flash_attn:
206
+ self.inner_attn = FlashAttention(attention_dropout=config.attention_dropout)
207
+ self.proj = nn.Linear(self.embed_dim, self.embed_dim)
208
+
209
+ def _naive_attn(self, x):
210
+ B, N, C = x.shape
211
+ qkv = self.qkv(x).reshape(B, N, 3, self.num_heads, C // self.num_heads).permute(2, 0, 3, 1, 4)
212
+ q, k, v = qkv.unbind(0) # make torchscript happy (cannot use tensor as tuple)
213
+
214
+ if self.qk_normalization:
215
+ B_, H_, N_, D_ = q.shape
216
+ q = self.q_norm(q.transpose(1, 2).flatten(-2, -1)).view(B_, N_, H_, D_).transpose(1, 2)
217
+ k = self.k_norm(k.transpose(1, 2).flatten(-2, -1)).view(B_, N_, H_, D_).transpose(1, 2)
218
+
219
+ attn = ((q * self.scale) @ k.transpose(-2, -1))
220
+ attn = attn.softmax(dim=-1)
221
+ attn = self.attn_drop(attn)
222
+
223
+ x = (attn @ v).transpose(1, 2).reshape(B, N, C)
224
+ x = self.proj(x)
225
+ x = self.proj_drop(x)
226
+ return x
227
+
228
+ def _flash_attn(self, x, key_padding_mask=None, need_weights=False):
229
+ qkv = self.qkv(x)
230
+ qkv = rearrange(qkv, 'b s (three h d) -> b s three h d', three=3, h=self.num_heads)
231
+
232
+ if self.qk_normalization:
233
+ q, k, v = qkv.unbind(2)
234
+ q = self.q_norm(q.flatten(-2, -1)).view(q.shape)
235
+ k = self.k_norm(k.flatten(-2, -1)).view(k.shape)
236
+ qkv = torch.stack([q, k, v], dim=2)
237
+
238
+ context, _ = self.inner_attn(
239
+ qkv, key_padding_mask=key_padding_mask, need_weights=need_weights, causal=False
240
+ )
241
+ outs = self.proj(rearrange(context, 'b s h d -> b s (h d)'))
242
+ outs = self.proj_drop(outs)
243
+ return outs
244
+
245
+ def forward(self, hidden_states: torch.Tensor) -> torch.Tensor:
246
+ x = self._naive_attn(hidden_states) if not self.use_flash_attn else self._flash_attn(hidden_states)
247
+ return x
248
+
249
+
250
+ class InternMLP(nn.Module):
251
+ def __init__(self, config: InternVisionConfig):
252
+ super().__init__()
253
+ self.config = config
254
+ self.act = ACT2FN[config.hidden_act]
255
+ self.fc1 = nn.Linear(config.hidden_size, config.intermediate_size)
256
+ self.fc2 = nn.Linear(config.intermediate_size, config.hidden_size)
257
+
258
+ def forward(self, hidden_states: torch.Tensor) -> torch.Tensor:
259
+ hidden_states = self.fc1(hidden_states)
260
+ hidden_states = self.act(hidden_states)
261
+ hidden_states = self.fc2(hidden_states)
262
+ return hidden_states
263
+
264
+
265
+ class InternVisionEncoderLayer(nn.Module):
266
+ def __init__(self, config: InternVisionConfig, drop_path_rate: float):
267
+ super().__init__()
268
+ self.embed_dim = config.hidden_size
269
+ self.intermediate_size = config.intermediate_size
270
+ self.norm_type = config.norm_type
271
+
272
+ self.attn = InternAttention(config)
273
+ self.mlp = InternMLP(config)
274
+ self.norm1 = NORM2FN[self.norm_type](self.embed_dim, eps=config.layer_norm_eps)
275
+ self.norm2 = NORM2FN[self.norm_type](self.embed_dim, eps=config.layer_norm_eps)
276
+
277
+ self.ls1 = nn.Parameter(config.initializer_factor * torch.ones(self.embed_dim))
278
+ self.ls2 = nn.Parameter(config.initializer_factor * torch.ones(self.embed_dim))
279
+ self.drop_path1 = DropPath(drop_path_rate) if drop_path_rate > 0. else nn.Identity()
280
+ self.drop_path2 = DropPath(drop_path_rate) if drop_path_rate > 0. else nn.Identity()
281
+
282
+ def forward(
283
+ self,
284
+ hidden_states: torch.Tensor,
285
+ ) -> Tuple[torch.FloatTensor, Optional[torch.FloatTensor], Optional[Tuple[torch.FloatTensor]]]:
286
+ """
287
+ Args:
288
+ hidden_states (`Tuple[torch.FloatTensor, Optional[torch.FloatTensor]]`): input to the layer of shape `(batch, seq_len, embed_dim)`
289
+ """
290
+ hidden_states = hidden_states + self.drop_path1(self.attn(self.norm1(hidden_states).to(hidden_states.dtype)) * self.ls1)
291
+
292
+ hidden_states = hidden_states + self.drop_path2(self.mlp(self.norm2(hidden_states).to(hidden_states.dtype)) * self.ls2)
293
+
294
+ return hidden_states
295
+
296
+
297
+ class InternVisionEncoder(nn.Module):
298
+ """
299
+ Transformer encoder consisting of `config.num_hidden_layers` self attention layers. Each layer is a
300
+ [`InternEncoderLayer`].
301
+
302
+ Args:
303
+ config (`InternConfig`):
304
+ The corresponding vision configuration for the `InternEncoder`.
305
+ """
306
+
307
+ def __init__(self, config: InternVisionConfig):
308
+ super().__init__()
309
+ self.config = config
310
+ # stochastic depth decay rule
311
+ dpr = [x.item() for x in torch.linspace(0, config.drop_path_rate, config.num_hidden_layers)]
312
+ self.layers = nn.ModuleList([
313
+ InternVisionEncoderLayer(config, dpr[idx]) for idx in range(config.num_hidden_layers)])
314
+ self.gradient_checkpointing = True
315
+
316
+ def forward(
317
+ self,
318
+ inputs_embeds,
319
+ output_hidden_states: Optional[bool] = None,
320
+ return_dict: Optional[bool] = None,
321
+ ) -> Union[Tuple, BaseModelOutput]:
322
+ r"""
323
+ Args:
324
+ inputs_embeds (`torch.FloatTensor` of shape `(batch_size, sequence_length, hidden_size)`):
325
+ Embedded representation of the inputs. Should be float, not int tokens.
326
+ output_hidden_states (`bool`, *optional*):
327
+ Whether or not to return the hidden states of all layers. See `hidden_states` under returned tensors
328
+ for more detail.
329
+ return_dict (`bool`, *optional*):
330
+ Whether or not to return a [`~utils.ModelOutput`] instead of a plain tuple.
331
+ """
332
+ output_hidden_states = (
333
+ output_hidden_states if output_hidden_states is not None else self.config.output_hidden_states
334
+ )
335
+ return_dict = return_dict if return_dict is not None else self.config.use_return_dict
336
+
337
+ encoder_states = () if output_hidden_states else None
338
+ hidden_states = inputs_embeds
339
+
340
+ for idx, encoder_layer in enumerate(self.layers):
341
+ if output_hidden_states:
342
+ encoder_states = encoder_states + (hidden_states,)
343
+ if self.gradient_checkpointing and self.training:
344
+ layer_outputs = torch.utils.checkpoint.checkpoint(
345
+ encoder_layer,
346
+ hidden_states)
347
+ else:
348
+ layer_outputs = encoder_layer(
349
+ hidden_states,
350
+ )
351
+ hidden_states = layer_outputs
352
+
353
+ if output_hidden_states:
354
+ encoder_states = encoder_states + (hidden_states,)
355
+
356
+ if not return_dict:
357
+ return tuple(v for v in [hidden_states, encoder_states] if v is not None)
358
+ return BaseModelOutput(
359
+ last_hidden_state=hidden_states, hidden_states=encoder_states
360
+ )
361
+
362
+
363
+ class InternVisionModel(PreTrainedModel):
364
+ main_input_name = 'pixel_values'
365
+ _supports_flash_attn_2 = True
366
+ config_class = InternVisionConfig
367
+ _no_split_modules = ['InternVisionEncoderLayer']
368
+
369
+ def __init__(self, config: InternVisionConfig):
370
+ super().__init__(config)
371
+ self.config = config
372
+
373
+ self.embeddings = InternVisionEmbeddings(config)
374
+ self.encoder = InternVisionEncoder(config)
375
+
376
+ def resize_pos_embeddings(self, old_size, new_size, patch_size):
377
+ pos_emb = self.embeddings.position_embedding
378
+ _, num_positions, embed_dim = pos_emb.shape
379
+ cls_emb = pos_emb[:, :1, :]
380
+ pos_emb = pos_emb[:, 1:, :].reshape(1, old_size // patch_size, old_size // patch_size, -1).permute(0, 3, 1, 2)
381
+ pos_emb = F.interpolate(pos_emb.float(), size=new_size // patch_size, mode='bicubic', align_corners=False)
382
+ pos_emb = pos_emb.to(cls_emb.dtype).reshape(1, embed_dim, -1).permute(0, 2, 1)
383
+ pos_emb = torch.cat([cls_emb, pos_emb], dim=1)
384
+ self.embeddings.position_embedding = nn.Parameter(pos_emb)
385
+ self.embeddings.image_size = new_size
386
+ logger.info('Resized position embeddings from {} to {}'.format(old_size, new_size))
387
+
388
+ def get_input_embeddings(self):
389
+ return self.embeddings
390
+
391
+ def forward(
392
+ self,
393
+ pixel_values: Optional[torch.FloatTensor] = None,
394
+ output_hidden_states: Optional[bool] = None,
395
+ return_dict: Optional[bool] = None,
396
+ pixel_embeds: Optional[torch.FloatTensor] = None,
397
+ ) -> Union[Tuple, BaseModelOutputWithPooling]:
398
+ output_hidden_states = (
399
+ output_hidden_states if output_hidden_states is not None else self.config.output_hidden_states
400
+ )
401
+ return_dict = return_dict if return_dict is not None else self.config.use_return_dict
402
+
403
+ if pixel_values is None and pixel_embeds is None:
404
+ raise ValueError('You have to specify pixel_values or pixel_embeds')
405
+
406
+ if pixel_embeds is not None:
407
+ hidden_states = pixel_embeds
408
+ else:
409
+ if len(pixel_values.shape) == 4:
410
+ hidden_states = self.embeddings(pixel_values)
411
+ else:
412
+ raise ValueError(f'wrong pixel_values size: {pixel_values.shape}')
413
+ encoder_outputs = self.encoder(
414
+ inputs_embeds=hidden_states,
415
+ output_hidden_states=output_hidden_states,
416
+ return_dict=return_dict,
417
+ )
418
+ last_hidden_state = encoder_outputs.last_hidden_state
419
+ pooled_output = last_hidden_state[:, :, :].mean(1)
420
+
421
+ if not return_dict:
422
+ return (last_hidden_state, pooled_output) + encoder_outputs[1:]
423
+
424
+ return BaseModelOutputWithPooling(
425
+ last_hidden_state=last_hidden_state,
426
+ pooler_output=pooled_output,
427
+ hidden_states=encoder_outputs.hidden_states,
428
+ attentions=encoder_outputs.attentions,
429
+ )
modeling_phi3.py ADDED
@@ -0,0 +1,1610 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Copyright 2024 Microsoft and the HuggingFace Inc. team. All rights reserved.
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ """ PyTorch Phi-3 model."""
16
+
17
+ import inspect
18
+ import math
19
+ import warnings
20
+ from typing import List, Optional, Tuple, Union
21
+
22
+ import torch
23
+ import torch.nn.functional as F
24
+ import torch.utils.checkpoint
25
+ from torch import nn
26
+ from torch.nn import BCEWithLogitsLoss, CrossEntropyLoss, MSELoss
27
+ from transformers.activations import ACT2FN
28
+ from transformers.cache_utils import Cache, DynamicCache
29
+ from transformers.modeling_attn_mask_utils import \
30
+ _prepare_4d_causal_attention_mask
31
+ from transformers.modeling_outputs import (BaseModelOutputWithPast,
32
+ CausalLMOutputWithPast,
33
+ SequenceClassifierOutputWithPast,
34
+ TokenClassifierOutput)
35
+ from transformers.modeling_utils import PreTrainedModel
36
+ from transformers.utils import (add_code_sample_docstrings,
37
+ add_start_docstrings,
38
+ add_start_docstrings_to_model_forward,
39
+ is_flash_attn_2_available,
40
+ is_flash_attn_greater_or_equal_2_10, logging,
41
+ replace_return_docstrings)
42
+
43
+ from configuration_phi3 import Phi3Config
44
+
45
+ logger = logging.get_logger(__name__)
46
+
47
+ # Transformers scans dependencies in the modeling file, causing issues on conditional loading. The regex only ignores try/catch blocks, but not if statements
48
+ # if is_flash_attn_2_available():
49
+ _flash_supports_window_size = False
50
+ try:
51
+ from flash_attn import flash_attn_func, flash_attn_varlen_func
52
+ from flash_attn.bert_padding import (index_first_axis, pad_input, # noqa
53
+ unpad_input)
54
+
55
+ _flash_supports_window_size = 'window_size' in list(inspect.signature(flash_attn_func).parameters)
56
+ has_flash_attn = True
57
+ except ImportError as error:
58
+ logger.warning(
59
+ f'`flash-attention` package not found, consider installing for better performance: {error}.'
60
+ )
61
+ if not _flash_supports_window_size:
62
+ logger.warning(
63
+ "Current `flash-attenton` does not support `window_size`. Either upgrade or use `attn_implementation='eager'`."
64
+ )
65
+ has_flash_attn = False
66
+
67
+ _CHECKPOINT_FOR_DOC = 'microsoft/Phi-3-mini-4k-instruct'
68
+ _CONFIG_FOR_DOC = 'Phi3Config'
69
+
70
+ PHI3_PRETRAINED_MODEL_ARCHIVE_LIST = [
71
+ 'microsoft/Phi-3-mini-4k-instruct',
72
+ 'microsoft/Phi-3-mini-128k-instruct',
73
+ # See all Phi-3 models at https://huggingface.co/models?filter=Phi-3
74
+ ]
75
+
76
+
77
+ # Copied from transformers.models.llama.modeling_llama.LlamaRMSNorm with Llama->Phi3
78
+ class Phi3RMSNorm(nn.Module):
79
+ def __init__(self, hidden_size, eps=1e-6):
80
+ """
81
+ Phi3RMSNorm is equivalent to T5LayerNorm
82
+ """
83
+ super().__init__()
84
+ self.weight = nn.Parameter(torch.ones(hidden_size))
85
+ self.variance_epsilon = eps
86
+
87
+ def forward(self, hidden_states):
88
+ input_dtype = hidden_states.dtype
89
+ hidden_states = hidden_states.to(torch.float32)
90
+ variance = hidden_states.pow(2).mean(-1, keepdim=True)
91
+ hidden_states = hidden_states * torch.rsqrt(variance + self.variance_epsilon)
92
+ return self.weight * hidden_states.to(input_dtype)
93
+
94
+
95
+ # Copied from transformers.models.llama.modeling_llama._get_unpad_data
96
+ def _get_unpad_data(attention_mask):
97
+ seqlens_in_batch = attention_mask.sum(dim=-1, dtype=torch.int32)
98
+ indices = torch.nonzero(attention_mask.flatten(), as_tuple=False).flatten()
99
+ max_seqlen_in_batch = seqlens_in_batch.max().item()
100
+ cu_seqlens = F.pad(torch.cumsum(seqlens_in_batch, dim=0, dtype=torch.int32), (1, 0))
101
+ return (
102
+ indices,
103
+ cu_seqlens,
104
+ max_seqlen_in_batch,
105
+ )
106
+
107
+
108
+ # Copied from transformers.models.gemma.modeling_gemma.GemmaRotaryEmbedding with gemma->phi3, Gemma->Phi3
109
+ class Phi3RotaryEmbedding(nn.Module):
110
+ def __init__(self, dim, max_position_embeddings=2048, base=10000, device=None):
111
+ super().__init__()
112
+
113
+ self.dim = dim
114
+ self.max_position_embeddings = max_position_embeddings
115
+ self.base = base
116
+ self.register_buffer('inv_freq', None, persistent=False)
117
+
118
+ @torch.no_grad()
119
+ def forward(self, x, position_ids, seq_len=None):
120
+ # x: [bs, num_attention_heads, seq_len, head_size]
121
+ if self.inv_freq is None:
122
+ self.inv_freq = 1.0 / (
123
+ self.base ** (torch.arange(0, self.dim, 2, dtype=torch.int64, device=x.device).float() / self.dim)
124
+ )
125
+ inv_freq_expanded = self.inv_freq[None, :, None].float().expand(position_ids.shape[0], -1, 1)
126
+ position_ids_expanded = position_ids[:, None, :].float()
127
+ # Force float32 since bfloat16 loses precision on long contexts
128
+ # See https://github.com/huggingface/transformers/pull/29285
129
+ device_type = x.device.type
130
+ device_type = device_type if isinstance(device_type, str) and device_type != 'mps' else 'cpu'
131
+ with torch.autocast(device_type=device_type, enabled=False):
132
+ freqs = (inv_freq_expanded.float() @ position_ids_expanded.float()).transpose(1, 2)
133
+ emb = torch.cat((freqs, freqs), dim=-1)
134
+ cos = emb.cos()
135
+ sin = emb.sin()
136
+ return cos.to(dtype=x.dtype), sin.to(dtype=x.dtype)
137
+
138
+
139
+ class Phi3SuScaledRotaryEmbedding(Phi3RotaryEmbedding):
140
+ def __init__(self, dim, config, device=None):
141
+ super().__init__(dim, config.max_position_embeddings, config.rope_theta, device)
142
+
143
+ self.short_factor = config.rope_scaling['short_factor']
144
+ self.long_factor = config.rope_scaling['long_factor']
145
+ self.original_max_position_embeddings = config.original_max_position_embeddings
146
+
147
+ @torch.no_grad()
148
+ def forward(self, x, position_ids, seq_len=None):
149
+ seq_len = torch.max(position_ids) + 1
150
+ if seq_len > self.original_max_position_embeddings:
151
+ ext_factors = torch.tensor(self.long_factor, dtype=torch.float32, device=x.device)
152
+ else:
153
+ ext_factors = torch.tensor(self.short_factor, dtype=torch.float32, device=x.device)
154
+
155
+ inv_freq_shape = torch.arange(0, self.dim, 2, dtype=torch.int64, device=x.device).float() / self.dim
156
+ self.inv_freq = 1.0 / (ext_factors * self.base**inv_freq_shape)
157
+
158
+ inv_freq_expanded = self.inv_freq[None, :, None].float().expand(position_ids.shape[0], -1, 1)
159
+ position_ids_expanded = position_ids[:, None, :].float()
160
+
161
+ # Force float32 since bfloat16 loses precision on long contexts
162
+ # See https://github.com/huggingface/transformers/pull/29285
163
+ device_type = x.device.type
164
+ device_type = device_type if isinstance(device_type, str) and device_type != 'mps' else 'cpu'
165
+ with torch.autocast(device_type=device_type, enabled=False):
166
+ freqs = (inv_freq_expanded.float() @ position_ids_expanded.float()).transpose(1, 2)
167
+ emb = torch.cat((freqs, freqs), dim=-1)
168
+
169
+ scale = self.max_position_embeddings / self.original_max_position_embeddings
170
+ if scale <= 1.0:
171
+ scaling_factor = 1.0
172
+ else:
173
+ scaling_factor = math.sqrt(1 + math.log(scale) / math.log(self.original_max_position_embeddings))
174
+
175
+ cos = emb.cos() * scaling_factor
176
+ sin = emb.sin() * scaling_factor
177
+ return cos.to(dtype=x.dtype), sin.to(dtype=x.dtype)
178
+
179
+
180
+ class Phi3YarnScaledRotaryEmbedding(Phi3RotaryEmbedding):
181
+ def __init__(self, dim, config, device=None):
182
+ super().__init__(dim, config.max_position_embeddings, config.rope_theta, device)
183
+
184
+ self.short_factor = config.rope_scaling['short_factor']
185
+ self.long_factor = config.rope_scaling['long_factor']
186
+ self.original_max_position_embeddings = config.original_max_position_embeddings
187
+
188
+ @torch.no_grad()
189
+ def forward(self, x, position_ids, seq_len=None):
190
+ seq_len = torch.max(position_ids) + 1
191
+ if seq_len > self.original_max_position_embeddings:
192
+ ext_factors = torch.tensor(self.long_factor, dtype=torch.float32, device=x.device)
193
+ else:
194
+ ext_factors = torch.tensor(self.short_factor, dtype=torch.float32, device=x.device)
195
+
196
+ inv_freq_shape = torch.arange(0, self.dim, 2, dtype=torch.int64, device=x.device).float() / self.dim
197
+ self.inv_freq = 1.0 / (ext_factors * self.base**inv_freq_shape)
198
+
199
+ inv_freq_expanded = self.inv_freq[None, :, None].float().expand(position_ids.shape[0], -1, 1)
200
+ position_ids_expanded = position_ids[:, None, :].float()
201
+
202
+ # Force float32 since bfloat16 loses precision on long contexts
203
+ # See https://github.com/huggingface/transformers/pull/29285
204
+ device_type = x.device.type
205
+ device_type = device_type if isinstance(device_type, str) and device_type != 'mps' else 'cpu'
206
+ with torch.autocast(device_type=device_type, enabled=False):
207
+ freqs = (inv_freq_expanded.float() @ position_ids_expanded.float()).transpose(1, 2)
208
+ emb = torch.cat((freqs, freqs), dim=-1)
209
+
210
+ scale = self.max_position_embeddings / self.original_max_position_embeddings
211
+ if scale <= 1.0:
212
+ scaling_factor = 1.0
213
+ else:
214
+ scaling_factor = 0.1 * math.log(scale) + 1.0
215
+
216
+ cos = emb.cos() * scaling_factor
217
+ sin = emb.sin() * scaling_factor
218
+ return cos.to(dtype=x.dtype), sin.to(dtype=x.dtype)
219
+
220
+
221
+ # Copied from transformers.models.llama.modeling_llama.rotate_half
222
+ def rotate_half(x):
223
+ """Rotates half the hidden dims of the input."""
224
+ x1 = x[..., : x.shape[-1] // 2]
225
+ x2 = x[..., x.shape[-1] // 2 :]
226
+ return torch.cat((-x2, x1), dim=-1)
227
+
228
+
229
+ # Copied from transformers.models.llama.modeling_llama.apply_rotary_pos_emb
230
+ def apply_rotary_pos_emb(q, k, cos, sin, position_ids=None, unsqueeze_dim=1):
231
+ """Applies Rotary Position Embedding to the query and key tensors.
232
+
233
+ Args:
234
+ q (`torch.Tensor`): The query tensor.
235
+ k (`torch.Tensor`): The key tensor.
236
+ cos (`torch.Tensor`): The cosine part of the rotary embedding.
237
+ sin (`torch.Tensor`): The sine part of the rotary embedding.
238
+ position_ids (`torch.Tensor`, *optional*):
239
+ Deprecated and unused.
240
+ unsqueeze_dim (`int`, *optional*, defaults to 1):
241
+ The 'unsqueeze_dim' argument specifies the dimension along which to unsqueeze cos[position_ids] and
242
+ sin[position_ids] so that they can be properly broadcasted to the dimensions of q and k. For example, note
243
+ that cos[position_ids] and sin[position_ids] have the shape [batch_size, seq_len, head_dim]. Then, if q and
244
+ k have the shape [batch_size, heads, seq_len, head_dim], then setting unsqueeze_dim=1 makes
245
+ cos[position_ids] and sin[position_ids] broadcastable to the shapes of q and k. Similarly, if q and k have
246
+ the shape [batch_size, seq_len, heads, head_dim], then set unsqueeze_dim=2.
247
+ Returns:
248
+ `tuple(torch.Tensor)` comprising of the query and key tensors rotated using the Rotary Position Embedding.
249
+ """
250
+ cos = cos.unsqueeze(unsqueeze_dim)
251
+ sin = sin.unsqueeze(unsqueeze_dim)
252
+ q_embed = (q * cos) + (rotate_half(q) * sin)
253
+ k_embed = (k * cos) + (rotate_half(k) * sin)
254
+ return q_embed, k_embed
255
+
256
+
257
+ class Phi3MLP(nn.Module):
258
+ def __init__(self, config):
259
+ super().__init__()
260
+
261
+ self.config = config
262
+ self.gate_up_proj = nn.Linear(config.hidden_size, 2 * config.intermediate_size, bias=False)
263
+ self.down_proj = nn.Linear(config.intermediate_size, config.hidden_size, bias=False)
264
+
265
+ self.activation_fn = ACT2FN[config.hidden_act]
266
+
267
+ def forward(self, hidden_states: torch.FloatTensor) -> torch.FloatTensor:
268
+ up_states = self.gate_up_proj(hidden_states)
269
+
270
+ gate, up_states = up_states.chunk(2, dim=-1)
271
+ up_states = up_states * self.activation_fn(gate)
272
+
273
+ return self.down_proj(up_states)
274
+
275
+
276
+ # Copied from transformers.models.llama.modeling_llama.repeat_kv with llama->phi
277
+ def repeat_kv(hidden_states: torch.Tensor, n_rep: int) -> torch.Tensor:
278
+ """
279
+ This is the equivalent of torch.repeat_interleave(x, dim=1, repeats=n_rep). The hidden states go from (batch,
280
+ num_key_value_heads, seqlen, head_dim) to (batch, num_attention_heads, seqlen, head_dim)
281
+ """
282
+ batch, num_key_value_heads, slen, head_dim = hidden_states.shape
283
+ if n_rep == 1:
284
+ return hidden_states
285
+ hidden_states = hidden_states[:, :, None, :, :].expand(batch, num_key_value_heads, n_rep, slen, head_dim)
286
+ return hidden_states.reshape(batch, num_key_value_heads * n_rep, slen, head_dim)
287
+
288
+
289
+ class Phi3Attention(nn.Module):
290
+ """Multi-headed attention from 'Attention Is All You Need' paper"""
291
+
292
+ def __init__(self, config: Phi3Config, layer_idx: Optional[int] = None):
293
+ super().__init__()
294
+ self.config = config
295
+ self.layer_idx = layer_idx
296
+ if layer_idx is None:
297
+ logger.warning_once(
298
+ f'Instantiating {self.__class__.__name__} without passing a `layer_idx` is not recommended and will '
299
+ 'lead to errors during the forward call if caching is used. Please make sure to provide a `layer_idx` '
300
+ 'when creating this class.'
301
+ )
302
+
303
+ self.attention_dropout = config.attention_dropout
304
+ self.hidden_size = config.hidden_size
305
+ self.num_heads = config.num_attention_heads
306
+ self.head_dim = self.hidden_size // self.num_heads
307
+ self.num_key_value_heads = config.num_key_value_heads
308
+ self.num_key_value_groups = self.num_heads // self.num_key_value_heads
309
+ self.max_position_embeddings = config.max_position_embeddings
310
+ self.original_max_position_embeddings = config.original_max_position_embeddings
311
+ self.rope_theta = config.rope_theta
312
+ self.rope_scaling = config.rope_scaling
313
+ self.is_causal = True
314
+
315
+ if (self.head_dim * self.num_heads) != self.hidden_size:
316
+ raise ValueError(
317
+ f'hidden_size must be divisible by num_heads (got `hidden_size`: {self.hidden_size}'
318
+ f' and `num_heads`: {self.num_heads}).'
319
+ )
320
+
321
+ op_size = self.num_heads * self.head_dim + 2 * (self.num_key_value_heads * self.head_dim)
322
+ self.o_proj = nn.Linear(self.num_heads * self.head_dim, self.hidden_size, bias=False)
323
+ self.qkv_proj = nn.Linear(self.hidden_size, op_size, bias=False)
324
+ self._init_rope()
325
+
326
+ def _init_rope(self):
327
+ if self.rope_scaling is None:
328
+ self.rotary_emb = Phi3RotaryEmbedding(
329
+ self.head_dim,
330
+ max_position_embeddings=self.max_position_embeddings,
331
+ base=self.rope_theta,
332
+ )
333
+ else:
334
+ scaling_type = self.config.rope_scaling['type']
335
+ if scaling_type == 'su':
336
+ self.rotary_emb = Phi3SuScaledRotaryEmbedding(self.head_dim, self.config)
337
+ elif scaling_type == 'yarn':
338
+ self.rotary_emb = Phi3YarnScaledRotaryEmbedding(self.head_dim, self.config)
339
+ else:
340
+ raise ValueError(f'Unknown RoPE scaling type {scaling_type}')
341
+
342
+ def forward(
343
+ self,
344
+ hidden_states: torch.Tensor,
345
+ attention_mask: Optional[torch.Tensor] = None,
346
+ position_ids: Optional[torch.LongTensor] = None,
347
+ past_key_value: Optional[Cache] = None,
348
+ output_attentions: bool = False,
349
+ use_cache: bool = False,
350
+ ) -> Tuple[torch.Tensor, Optional[torch.Tensor], Optional[Tuple[torch.Tensor]]]:
351
+ logger.warning_once('You are not running the flash-attention implementation, expect numerical differences.')
352
+
353
+ bsz, q_len, _ = hidden_states.size()
354
+
355
+ qkv = self.qkv_proj(hidden_states)
356
+ query_pos = self.num_heads * self.head_dim
357
+ query_states = qkv[..., :query_pos]
358
+ key_states = qkv[..., query_pos : query_pos + self.num_key_value_heads * self.head_dim]
359
+ value_states = qkv[..., query_pos + self.num_key_value_heads * self.head_dim :]
360
+
361
+ query_states = query_states.view(bsz, q_len, self.num_heads, self.head_dim).transpose(1, 2)
362
+ key_states = key_states.view(bsz, q_len, self.num_key_value_heads, self.head_dim).transpose(1, 2)
363
+ value_states = value_states.view(bsz, q_len, self.num_key_value_heads, self.head_dim).transpose(1, 2)
364
+
365
+ kv_seq_len = key_states.shape[-2]
366
+ if past_key_value is not None:
367
+ if self.layer_idx is None:
368
+ raise ValueError(
369
+ f'The cache structure has changed since version v4.36. If you are using {self.__class__.__name__} '
370
+ 'for auto-regressive decoding with k/v caching, please make sure to initialize the attention class '
371
+ 'with a layer index.'
372
+ )
373
+ kv_seq_len += past_key_value.get_usable_length(kv_seq_len, self.layer_idx)
374
+ cos, sin = self.rotary_emb(value_states, position_ids, seq_len=kv_seq_len)
375
+
376
+ query_states, key_states = apply_rotary_pos_emb(query_states, key_states, cos, sin, position_ids)
377
+
378
+ if past_key_value is not None:
379
+ cache_kwargs = {'sin': sin, 'cos': cos} # Specific to RoPE models
380
+ key_states, value_states = past_key_value.update(key_states, value_states, self.layer_idx, cache_kwargs)
381
+
382
+ # repeat k/v heads if n_kv_heads < n_heads
383
+ key_states = repeat_kv(key_states, self.num_key_value_groups)
384
+ value_states = repeat_kv(value_states, self.num_key_value_groups)
385
+
386
+ attn_weights = torch.matmul(query_states, key_states.transpose(2, 3)) / math.sqrt(self.head_dim)
387
+
388
+ if attn_weights.size() != (bsz, self.num_heads, q_len, kv_seq_len):
389
+ raise ValueError(
390
+ f'Attention weights should be of size {(bsz, self.num_heads, q_len, kv_seq_len)}, but is'
391
+ f' {attn_weights.size()}'
392
+ )
393
+
394
+ if attention_mask is not None:
395
+ if attention_mask.size() != (bsz, 1, q_len, kv_seq_len):
396
+ raise ValueError(
397
+ f'Attention mask should be of size {(bsz, 1, q_len, kv_seq_len)}, but is {attention_mask.size()}'
398
+ )
399
+ attn_weights = attn_weights + attention_mask
400
+
401
+ # upcast attention to fp32
402
+ attn_weights = nn.functional.softmax(attn_weights, dim=-1, dtype=torch.float32).to(value_states.dtype)
403
+ attn_weights = nn.functional.dropout(attn_weights, p=self.attention_dropout, training=self.training)
404
+
405
+ attn_output = torch.matmul(attn_weights, value_states)
406
+
407
+ if attn_output.size() != (bsz, self.num_heads, q_len, self.head_dim):
408
+ raise ValueError(
409
+ f'`attn_output` should be of size {(bsz, self.num_heads, q_len, self.head_dim)}, but is'
410
+ f' {attn_output.size()}'
411
+ )
412
+
413
+ attn_output = attn_output.transpose(1, 2).contiguous()
414
+ attn_output = attn_output.reshape(bsz, q_len, self.hidden_size)
415
+
416
+ attn_output = self.o_proj(attn_output)
417
+
418
+ if not output_attentions:
419
+ attn_weights = None
420
+
421
+ return attn_output, attn_weights, past_key_value
422
+
423
+
424
+ class Phi3FlashAttention2(Phi3Attention):
425
+ """
426
+ Phi-3 flash attention module. This module inherits from `Phi3Attention` as the weights of the module stays
427
+ untouched. The only required change would be on the forward pass where it needs to correctly call the public API of
428
+ flash attention and deal with padding tokens in case the input contains any of them.
429
+ """
430
+
431
+ # Copied from transformers.models.llama.modeling_llama.LlamaFlashAttention2.__init__
432
+ def __init__(self, *args, **kwargs):
433
+ super().__init__(*args, **kwargs)
434
+
435
+ # TODO: Should be removed once Flash Attention for RoCm is bumped to 2.1.
436
+ # flash_attn<2.1 generates top-left aligned causal mask, while what is needed here is bottom-right alignement, that was made default for flash_attn>=2.1. This attribute is used to handle this difference. Reference: https://github.com/Dao-AILab/flash-attention/releases/tag/v2.1.0.
437
+ # Beware that with flash_attn<2.1, using q_seqlen != k_seqlen (except for the case q_seqlen == 1) produces a wrong mask (top-left).
438
+ self._flash_attn_uses_top_left_mask = not is_flash_attn_greater_or_equal_2_10()
439
+
440
+ def forward(
441
+ self,
442
+ hidden_states: torch.Tensor,
443
+ attention_mask: Optional[torch.LongTensor] = None,
444
+ position_ids: Optional[torch.LongTensor] = None,
445
+ past_key_value: Optional[Cache] = None,
446
+ output_attentions: bool = False,
447
+ use_cache: bool = False,
448
+ **kwargs,
449
+ ) -> Tuple[torch.Tensor, Optional[torch.Tensor], Optional[Tuple[torch.Tensor]]]:
450
+ # Phi3FlashAttention2 attention does not support output_attentions
451
+
452
+ if not _flash_supports_window_size:
453
+ logger.warning_once(
454
+ "The current flash attention version does not support sliding window attention. Please use `attn_implementation='eager'` or upgrade flash-attn library."
455
+ )
456
+ raise ValueError('The current flash attention version does not support sliding window attention.')
457
+
458
+ output_attentions = False
459
+
460
+ if 'padding_mask' in kwargs:
461
+ warnings.warn(
462
+ 'Passing `padding_mask` is deprecated and will be removed in v4.37. Please make sure use `attention_mask` instead.`'
463
+ )
464
+
465
+ # overwrite attention_mask with padding_mask
466
+ attention_mask = kwargs.pop('padding_mask')
467
+
468
+ bsz, q_len, _ = hidden_states.size()
469
+
470
+ qkv = self.qkv_proj(hidden_states)
471
+ query_pos = self.num_heads * self.head_dim
472
+ query_states = qkv[..., :query_pos]
473
+ key_states = qkv[..., query_pos : query_pos + self.num_key_value_heads * self.head_dim]
474
+ value_states = qkv[..., query_pos + self.num_key_value_heads * self.head_dim :]
475
+
476
+ # Flash attention requires the input to have the shape
477
+ # batch_size x seq_length x head_dim x hidden_dim
478
+ # therefore we just need to keep the original shape
479
+ query_states = query_states.view(bsz, q_len, self.num_heads, self.head_dim).transpose(1, 2)
480
+ key_states = key_states.view(bsz, q_len, self.num_key_value_heads, self.head_dim).transpose(1, 2)
481
+ value_states = value_states.view(bsz, q_len, self.num_key_value_heads, self.head_dim).transpose(1, 2)
482
+
483
+ kv_seq_len = key_states.shape[-2]
484
+ if past_key_value is not None:
485
+ if self.layer_idx is None:
486
+ raise ValueError(
487
+ f'The cache structure has changed since version v4.36. If you are using {self.__class__.__name__} '
488
+ 'for auto-regressive decoding with k/v caching, please make sure to initialize the attention class '
489
+ 'with a layer index.'
490
+ )
491
+ kv_seq_len += past_key_value.get_usable_length(kv_seq_len, self.layer_idx)
492
+
493
+ # Because the input can be padded, the absolute sequence length depends on the max position id.
494
+ rotary_seq_len = max(kv_seq_len, position_ids[:, -1].max().item()) + 1
495
+ cos, sin = self.rotary_emb(value_states, position_ids, seq_len=rotary_seq_len)
496
+
497
+ query_states, key_states = apply_rotary_pos_emb(query_states, key_states, cos, sin, position_ids)
498
+
499
+ use_sliding_windows = (
500
+ _flash_supports_window_size
501
+ and getattr(self.config, 'sliding_window', None) is not None
502
+ and kv_seq_len > self.config.sliding_window
503
+ )
504
+
505
+ if past_key_value is not None:
506
+ # Activate slicing cache only if the config has a value `sliding_windows` attribute
507
+ cache_has_contents = past_key_value.get_seq_length(self.layer_idx) > 0
508
+ if (
509
+ getattr(self.config, 'sliding_window', None) is not None
510
+ and kv_seq_len > self.config.sliding_window
511
+ and cache_has_contents
512
+ ):
513
+ slicing_tokens = 1 - self.config.sliding_window
514
+
515
+ past_key = past_key_value[self.layer_idx][0]
516
+ past_value = past_key_value[self.layer_idx][1]
517
+
518
+ past_key = past_key[:, :, slicing_tokens:, :].contiguous()
519
+ past_value = past_value[:, :, slicing_tokens:, :].contiguous()
520
+
521
+ if past_key.shape[-2] != self.config.sliding_window - 1:
522
+ raise ValueError(
523
+ f'past key must have a shape of (`batch_size, num_heads, self.config.sliding_window-1, head_dim`), got'
524
+ f' {past_key.shape}'
525
+ )
526
+
527
+ if attention_mask is not None:
528
+ attention_mask = attention_mask[:, slicing_tokens:]
529
+ attention_mask = torch.cat([attention_mask, torch.ones_like(attention_mask[:, -1:])], dim=-1)
530
+
531
+ cache_kwargs = {'sin': sin, 'cos': cos} # Specific to RoPE models
532
+ key_states, value_states = past_key_value.update(key_states, value_states, self.layer_idx, cache_kwargs)
533
+
534
+ # repeat k/v heads if n_kv_heads < n_heads
535
+ key_states = repeat_kv(key_states, self.num_key_value_groups)
536
+ value_states = repeat_kv(value_states, self.num_key_value_groups)
537
+
538
+ attn_dropout = self.attention_dropout if self.training else 0.0
539
+
540
+ # In PEFT, usually we cast the layer norms in float32 for training stability reasons
541
+ # therefore the input hidden states gets silently casted in float32. Hence, we need
542
+ # cast them back in the correct dtype just to be sure everything works as expected.
543
+ # This might slowdown training & inference so it is recommended to not cast the LayerNorms
544
+ # in fp32.
545
+
546
+ if query_states.dtype == torch.float32:
547
+ if torch.is_autocast_enabled():
548
+ target_dtype = torch.get_autocast_gpu_dtype()
549
+ # Handle the case where the model is quantized
550
+ elif hasattr(self.config, '_pre_quantization_dtype'):
551
+ target_dtype = self.config._pre_quantization_dtype
552
+ else:
553
+ target_dtype = self.qkv_proj.weight.dtype
554
+
555
+ logger.warning_once(
556
+ f'The input hidden states seems to be silently casted in float32, this might be related to'
557
+ f' the fact you have upcasted embedding or layer norm layers in float32. We will cast back the input in'
558
+ f' {target_dtype}.'
559
+ )
560
+
561
+ query_states = query_states.to(target_dtype)
562
+ key_states = key_states.to(target_dtype)
563
+ value_states = value_states.to(target_dtype)
564
+
565
+ # Reashape to the expected shape for Flash Attention
566
+ query_states = query_states.transpose(1, 2)
567
+ key_states = key_states.transpose(1, 2)
568
+ value_states = value_states.transpose(1, 2)
569
+
570
+ attn_output = self._flash_attention_forward(
571
+ query_states,
572
+ key_states,
573
+ value_states,
574
+ attention_mask,
575
+ q_len,
576
+ dropout=attn_dropout,
577
+ use_sliding_windows=use_sliding_windows,
578
+ )
579
+
580
+ attn_output = attn_output.reshape(bsz, q_len, self.hidden_size).contiguous()
581
+ attn_output = self.o_proj(attn_output)
582
+
583
+ if not output_attentions:
584
+ attn_weights = None
585
+
586
+ return attn_output, attn_weights, past_key_value
587
+
588
+ # Copied from transformers.models.mistral.modeling_mistral.MistralFlashAttention2._flash_attention_forward
589
+ def _flash_attention_forward(
590
+ self,
591
+ query_states,
592
+ key_states,
593
+ value_states,
594
+ attention_mask,
595
+ query_length,
596
+ dropout=0.0,
597
+ softmax_scale=None,
598
+ use_sliding_windows=False,
599
+ ):
600
+ """
601
+ Calls the forward method of Flash Attention - if the input hidden states contain at least one padding token
602
+ first unpad the input, then computes the attention scores and pad the final attention scores.
603
+
604
+ Args:
605
+ query_states (`torch.Tensor`):
606
+ Input query states to be passed to Flash Attention API
607
+ key_states (`torch.Tensor`):
608
+ Input key states to be passed to Flash Attention API
609
+ value_states (`torch.Tensor`):
610
+ Input value states to be passed to Flash Attention API
611
+ attention_mask (`torch.Tensor`):
612
+ The padding mask - corresponds to a tensor of size `(batch_size, seq_len)` where 0 stands for the
613
+ position of padding tokens and 1 for the position of non-padding tokens.
614
+ dropout (`float`):
615
+ Attention dropout
616
+ softmax_scale (`float`, *optional*):
617
+ The scaling of QK^T before applying softmax. Default to 1 / sqrt(head_dim)
618
+ use_sliding_windows (`bool`, *optional*):
619
+ Whether to activate sliding window attention.
620
+ """
621
+ if not self._flash_attn_uses_top_left_mask:
622
+ causal = self.is_causal
623
+ else:
624
+ # TODO: Remove the `query_length != 1` check once Flash Attention for RoCm is bumped to 2.1. For details, please see the comment in LlamaFlashAttention2 __init__.
625
+ causal = self.is_causal and query_length != 1
626
+
627
+ # Contains at least one padding token in the sequence
628
+ if attention_mask is not None:
629
+ batch_size = query_states.shape[0]
630
+ query_states, key_states, value_states, indices_q, cu_seq_lens, max_seq_lens = self._upad_input(
631
+ query_states, key_states, value_states, attention_mask, query_length
632
+ )
633
+
634
+ cu_seqlens_q, cu_seqlens_k = cu_seq_lens
635
+ max_seqlen_in_batch_q, max_seqlen_in_batch_k = max_seq_lens
636
+
637
+ if not use_sliding_windows:
638
+ attn_output_unpad = flash_attn_varlen_func(
639
+ query_states,
640
+ key_states,
641
+ value_states,
642
+ cu_seqlens_q=cu_seqlens_q,
643
+ cu_seqlens_k=cu_seqlens_k,
644
+ max_seqlen_q=max_seqlen_in_batch_q,
645
+ max_seqlen_k=max_seqlen_in_batch_k,
646
+ dropout_p=dropout,
647
+ softmax_scale=softmax_scale,
648
+ causal=causal,
649
+ )
650
+ else:
651
+ attn_output_unpad = flash_attn_varlen_func(
652
+ query_states,
653
+ key_states,
654
+ value_states,
655
+ cu_seqlens_q=cu_seqlens_q,
656
+ cu_seqlens_k=cu_seqlens_k,
657
+ max_seqlen_q=max_seqlen_in_batch_q,
658
+ max_seqlen_k=max_seqlen_in_batch_k,
659
+ dropout_p=dropout,
660
+ softmax_scale=softmax_scale,
661
+ causal=causal,
662
+ window_size=(self.config.sliding_window, self.config.sliding_window),
663
+ )
664
+
665
+ attn_output = pad_input(attn_output_unpad, indices_q, batch_size, query_length)
666
+ else:
667
+ if not use_sliding_windows:
668
+ attn_output = flash_attn_func(
669
+ query_states,
670
+ key_states,
671
+ value_states,
672
+ dropout,
673
+ softmax_scale=softmax_scale,
674
+ causal=causal,
675
+ )
676
+ else:
677
+ attn_output = flash_attn_func(
678
+ query_states,
679
+ key_states,
680
+ value_states,
681
+ dropout,
682
+ softmax_scale=softmax_scale,
683
+ causal=causal,
684
+ window_size=(self.config.sliding_window, self.config.sliding_window),
685
+ )
686
+
687
+ return attn_output
688
+
689
+ # Copied from transformers.models.mistral.modeling_mistral.MistralFlashAttention2._upad_input
690
+ def _upad_input(self, query_layer, key_layer, value_layer, attention_mask, query_length):
691
+ batch_size, kv_seq_len, num_heads, head_dim = key_layer.shape
692
+
693
+ # On the first iteration we need to properly re-create the padding mask
694
+ # by slicing it on the proper place
695
+ if kv_seq_len != attention_mask.shape[-1]:
696
+ attention_mask_num_tokens = attention_mask.shape[-1]
697
+ attention_mask = attention_mask[:, attention_mask_num_tokens - kv_seq_len :]
698
+
699
+ indices_k, cu_seqlens_k, max_seqlen_in_batch_k = _get_unpad_data(attention_mask)
700
+
701
+ key_layer = index_first_axis(key_layer.reshape(batch_size * kv_seq_len, num_heads, head_dim), indices_k)
702
+ value_layer = index_first_axis(value_layer.reshape(batch_size * kv_seq_len, num_heads, head_dim), indices_k)
703
+
704
+ if query_length == kv_seq_len:
705
+ query_layer = index_first_axis(
706
+ query_layer.reshape(batch_size * kv_seq_len, num_heads, head_dim), indices_k
707
+ )
708
+ cu_seqlens_q = cu_seqlens_k
709
+ max_seqlen_in_batch_q = max_seqlen_in_batch_k
710
+ indices_q = indices_k
711
+ elif query_length == 1:
712
+ max_seqlen_in_batch_q = 1
713
+ cu_seqlens_q = torch.arange(
714
+ batch_size + 1, dtype=torch.int32, device=query_layer.device
715
+ ) # There is a memcpy here, that is very bad.
716
+ indices_q = cu_seqlens_q[:-1]
717
+ query_layer = query_layer.squeeze(1)
718
+ else:
719
+ # The -q_len: slice assumes left padding.
720
+ attention_mask = attention_mask[:, -query_length:]
721
+ query_layer, indices_q, cu_seqlens_q, max_seqlen_in_batch_q = unpad_input(query_layer, attention_mask)
722
+
723
+ return (
724
+ query_layer,
725
+ key_layer,
726
+ value_layer,
727
+ indices_q,
728
+ (cu_seqlens_q, cu_seqlens_k),
729
+ (max_seqlen_in_batch_q, max_seqlen_in_batch_k),
730
+ )
731
+
732
+
733
+ # copied from transformers.models.llama.modeling_llama.LlamaSdpaAttention with Llama->Phi3
734
+ # TODO @Arthur no longer copied from LLama after static cache
735
+ class Phi3SdpaAttention(Phi3Attention):
736
+ """
737
+ Phi3 attention module using torch.nn.functional.scaled_dot_product_attention. This module inherits from
738
+ `Phi3Attention` as the weights of the module stays untouched. The only changes are on the forward pass to adapt to
739
+ SDPA API.
740
+ """
741
+
742
+ # Adapted from Phi3Attention.forward
743
+ def forward(
744
+ self,
745
+ hidden_states: torch.Tensor,
746
+ attention_mask: Optional[torch.Tensor] = None,
747
+ position_ids: Optional[torch.LongTensor] = None,
748
+ past_key_value: Optional[Cache] = None,
749
+ output_attentions: bool = False,
750
+ use_cache: bool = False,
751
+ ) -> Tuple[torch.Tensor, Optional[torch.Tensor], Optional[Tuple[torch.Tensor]]]:
752
+ if output_attentions:
753
+ # TODO: Improve this warning with e.g. `model.config.attn_implementation = "manual"` once this is implemented.
754
+ logger.warning_once(
755
+ 'Phi3Model is using Phi3SdpaAttention, but `torch.nn.functional.scaled_dot_product_attention` does not support `output_attentions=True`. Falling back to the manual attention implementation, '
756
+ 'but specifying the manual implementation will be required from Transformers version v5.0.0 onwards. This warning can be removed using the argument `attn_implementation="eager"` when loading the model.'
757
+ )
758
+ return super().forward(
759
+ hidden_states=hidden_states,
760
+ attention_mask=attention_mask,
761
+ position_ids=position_ids,
762
+ past_key_value=past_key_value,
763
+ output_attentions=output_attentions,
764
+ use_cache=use_cache,
765
+ )
766
+
767
+ bsz, q_len, _ = hidden_states.size()
768
+
769
+ qkv = self.qkv_proj(hidden_states)
770
+ query_pos = self.num_heads * self.head_dim
771
+ query_states = qkv[..., :query_pos]
772
+ key_states = qkv[..., query_pos : query_pos + self.num_key_value_heads * self.head_dim]
773
+ value_states = qkv[..., query_pos + self.num_key_value_heads * self.head_dim :]
774
+
775
+ query_states = query_states.view(bsz, q_len, self.num_heads, self.head_dim).transpose(1, 2)
776
+ key_states = key_states.view(bsz, q_len, self.num_key_value_heads, self.head_dim).transpose(1, 2)
777
+ value_states = value_states.view(bsz, q_len, self.num_key_value_heads, self.head_dim).transpose(1, 2)
778
+
779
+ kv_seq_len = key_states.shape[-2]
780
+ if past_key_value is not None:
781
+ kv_seq_len += past_key_value.get_usable_length(kv_seq_len, self.layer_idx)
782
+ cos, sin = self.rotary_emb(value_states, position_ids, seq_len=kv_seq_len)
783
+
784
+ query_states, key_states = apply_rotary_pos_emb(query_states, key_states, cos, sin, position_ids)
785
+
786
+ if past_key_value is not None:
787
+ cache_kwargs = {'sin': sin, 'cos': cos} # Specific to RoPE models
788
+ key_states, value_states = past_key_value.update(key_states, value_states, self.layer_idx, cache_kwargs)
789
+
790
+ key_states = repeat_kv(key_states, self.num_key_value_groups)
791
+ value_states = repeat_kv(value_states, self.num_key_value_groups)
792
+
793
+ if attention_mask is not None:
794
+ if attention_mask.size() != (bsz, 1, q_len, kv_seq_len):
795
+ raise ValueError(
796
+ f'Attention mask should be of size {(bsz, 1, q_len, kv_seq_len)}, but is {attention_mask.size()}'
797
+ )
798
+
799
+ # SDPA with memory-efficient backend is currently (torch==2.1.2) bugged with non-contiguous inputs with custom attn_mask,
800
+ # Reference: https://github.com/pytorch/pytorch/issues/112577.
801
+ if query_states.device.type == 'cuda' and attention_mask is not None:
802
+ query_states = query_states.contiguous()
803
+ key_states = key_states.contiguous()
804
+ value_states = value_states.contiguous()
805
+
806
+ attn_output = torch.nn.functional.scaled_dot_product_attention(
807
+ query_states,
808
+ key_states,
809
+ value_states,
810
+ attn_mask=attention_mask,
811
+ dropout_p=self.attention_dropout if self.training else 0.0,
812
+ # The q_len > 1 is necessary to match with AttentionMaskConverter.to_causal_4d that does not create a causal mask in case q_len == 1.
813
+ is_causal=self.is_causal and attention_mask is None and q_len > 1,
814
+ )
815
+
816
+ attn_output = attn_output.transpose(1, 2).contiguous()
817
+ attn_output = attn_output.view(bsz, q_len, self.hidden_size)
818
+
819
+ attn_output = self.o_proj(attn_output)
820
+
821
+ return attn_output, None, past_key_value
822
+
823
+
824
+ PHI3_ATTENTION_CLASSES = {
825
+ 'eager': Phi3Attention,
826
+ 'flash_attention_2': Phi3FlashAttention2,
827
+ 'sdpa': Phi3SdpaAttention,
828
+ }
829
+
830
+
831
+ class Phi3DecoderLayer(nn.Module):
832
+ def __init__(self, config: Phi3Config, layer_idx: int):
833
+ super().__init__()
834
+
835
+ self.config = config
836
+ self.self_attn = PHI3_ATTENTION_CLASSES[config._attn_implementation](config, layer_idx=layer_idx)
837
+
838
+ self.mlp = Phi3MLP(config)
839
+ self.input_layernorm = Phi3RMSNorm(config.hidden_size, eps=config.rms_norm_eps)
840
+
841
+ self.resid_attn_dropout = nn.Dropout(config.resid_pdrop)
842
+ self.resid_mlp_dropout = nn.Dropout(config.resid_pdrop)
843
+ self.post_attention_layernorm = Phi3RMSNorm(config.hidden_size, eps=config.rms_norm_eps)
844
+
845
+ def forward(
846
+ self,
847
+ hidden_states: torch.Tensor,
848
+ attention_mask: Optional[torch.Tensor] = None,
849
+ position_ids: Optional[torch.LongTensor] = None,
850
+ past_key_value: Optional[Tuple[torch.Tensor]] = None,
851
+ output_attentions: Optional[bool] = False,
852
+ use_cache: Optional[bool] = False,
853
+ **kwargs,
854
+ ) -> Tuple[torch.FloatTensor, Optional[Tuple[torch.FloatTensor, torch.FloatTensor]]]:
855
+ if 'padding_mask' in kwargs:
856
+ warnings.warn(
857
+ 'Passing `padding_mask` is deprecated and will be removed in v4.37. Please make sure use `attention_mask` instead.`'
858
+ )
859
+ """
860
+ Args:
861
+ hidden_states (`torch.FloatTensor`):
862
+ input to the layer of shape `(batch, seq_len, embed_dim)`
863
+ attention_mask (`torch.FloatTensor`, *optional*): attention mask of size
864
+ `(batch, 1, tgt_len, src_len)` where padding elements are indicated by very large negative values.
865
+ position_ids (`torch.LongTensor` of shape `({0})`, *optional*):
866
+ Indices of positions of each input sequence tokens in the position embeddings. Selected in the range
867
+ `[0, config.n_positions - 1]`. [What are position IDs?](../glossary#position-ids)
868
+ output_attentions (`bool`, *optional*):
869
+ Whether or not to return the attentions tensors of all attention layers. See `attentions` under
870
+ returned tensors for more detail.
871
+ use_cache (`bool`, *optional*):
872
+ If set to `True`, `past_key_values` key value states are returned and can be used to speed up decoding
873
+ (see `past_key_values`).
874
+ past_key_value (`Tuple(torch.FloatTensor)`, *optional*): cached past key and value projection states
875
+ """
876
+
877
+ residual = hidden_states
878
+
879
+ hidden_states = self.input_layernorm(hidden_states)
880
+
881
+ # Self Attention
882
+ attn_outputs, self_attn_weights, present_key_value = self.self_attn(
883
+ hidden_states=hidden_states,
884
+ attention_mask=attention_mask,
885
+ position_ids=position_ids,
886
+ past_key_value=past_key_value,
887
+ output_attentions=output_attentions,
888
+ use_cache=use_cache,
889
+ )
890
+
891
+ hidden_states = residual + self.resid_attn_dropout(attn_outputs)
892
+
893
+ residual = hidden_states
894
+ hidden_states = self.post_attention_layernorm(hidden_states)
895
+ hidden_states = self.mlp(hidden_states)
896
+ hidden_states = residual + self.resid_mlp_dropout(hidden_states)
897
+
898
+ outputs = (hidden_states,)
899
+
900
+ if output_attentions:
901
+ outputs += (self_attn_weights,)
902
+
903
+ if use_cache:
904
+ outputs += (present_key_value,)
905
+
906
+ return outputs
907
+
908
+
909
+ PHI3_START_DOCSTRING = r"""
910
+ This model inherits from [`PreTrainedModel`]. Check the superclass documentation for the generic methods the
911
+ library implements for all its model (such as downloading or saving, resizing the input embeddings, pruning heads
912
+ etc.)
913
+
914
+ This model is also a PyTorch [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) subclass.
915
+ Use it as a regular PyTorch Module and refer to the PyTorch documentation for all matter related to general usage
916
+ and behavior.
917
+
918
+ Parameters:
919
+ config ([`Phi3Config`]):
920
+ Model configuration class with all the parameters of the model. Initializing with a config file does not
921
+ load the weights associated with the model, only the configuration. Check out the
922
+ [`~PreTrainedModel.from_pretrained`] method to load the model weights.
923
+ """
924
+
925
+
926
+ @add_start_docstrings(
927
+ 'The bare Phi-3 model outputting raw hidden-states without any specific head on top.',
928
+ PHI3_START_DOCSTRING,
929
+ )
930
+ class Phi3PreTrainedModel(PreTrainedModel):
931
+ config_class = Phi3Config
932
+ base_model_prefix = 'model'
933
+ supports_gradient_checkpointing = True
934
+ _no_split_modules = ['Phi3DecoderLayer']
935
+ _skip_keys_device_placement = 'past_key_values'
936
+ _supports_flash_attn_2 = True
937
+ _supports_sdpa = False
938
+ _supports_cache_class = True
939
+
940
+ _version = '0.0.5'
941
+
942
+ def __init__(self, config: Phi3Config):
943
+ if not has_flash_attn:
944
+ config._attn_implementation = 'eager'
945
+ print('Warning: Flash attention is not available, using eager attention instead.')
946
+ super().__init__(config)
947
+
948
+ def _init_weights(self, module):
949
+ std = self.config.initializer_range
950
+ if isinstance(module, nn.Linear):
951
+ module.weight.data.normal_(mean=0.0, std=std)
952
+ if module.bias is not None:
953
+ module.bias.data.zero_()
954
+ elif isinstance(module, nn.Embedding):
955
+ module.weight.data.normal_(mean=0.0, std=std)
956
+ if module.padding_idx is not None:
957
+ module.weight.data[module.padding_idx].zero_()
958
+
959
+
960
+ PHI3_INPUTS_DOCSTRING = r"""
961
+ Args:
962
+ input_ids (`torch.LongTensor` of shape `(batch_size, sequence_length)`):
963
+ Indices of input sequence tokens in the vocabulary. Padding will be ignored by default should you provide
964
+ it.
965
+
966
+ Indices can be obtained using [`AutoTokenizer`]. See [`PreTrainedTokenizer.encode`] and
967
+ [`PreTrainedTokenizer.__call__`] for details.
968
+
969
+ [What are input IDs?](../glossary#input-ids)
970
+ attention_mask (`torch.Tensor` of shape `(batch_size, sequence_length)`, *optional*):
971
+ Mask to avoid performing attention on padding token indices. Mask values selected in `[0, 1]`:
972
+
973
+ - 1 for tokens that are **not masked**,
974
+ - 0 for tokens that are **masked**.
975
+
976
+ [What are attention masks?](../glossary#attention-mask)
977
+
978
+ Indices can be obtained using [`AutoTokenizer`]. See [`PreTrainedTokenizer.encode`] and
979
+ [`PreTrainedTokenizer.__call__`] for details.
980
+
981
+ If `past_key_values` is used, optionally only the last `input_ids` have to be input (see
982
+ `past_key_values`).
983
+
984
+ If you want to change padding behavior, you should read [`modeling_opt._prepare_decoder_attention_mask`]
985
+ and modify to your needs. See diagram 1 in [the paper](https://arxiv.org/abs/1910.13461) for more
986
+ information on the default strategy.
987
+
988
+ - 1 indicates the head is **not masked**,
989
+ - 0 indicates the head is **masked**.
990
+ position_ids (`torch.LongTensor` of shape `(batch_size, sequence_length)`, *optional*):
991
+ Indices of positions of each input sequence tokens in the position embeddings. Selected in the range `[0,
992
+ config.n_positions - 1]`.
993
+
994
+ [What are position IDs?](../glossary#position-ids)
995
+ past_key_values (`Cache` or `tuple(tuple(torch.FloatTensor))`, *optional*):
996
+ Pre-computed hidden-states (key and values in the self-attention blocks and in the cross-attention
997
+ blocks) that can be used to speed up sequential decoding. This typically consists in the `past_key_values`
998
+ returned by the model at a previous stage of decoding, when `use_cache=True` or `config.use_cache=True`.
999
+
1000
+ Two formats are allowed:
1001
+ - a [`~cache_utils.Cache`] instance;
1002
+ - Tuple of `tuple(torch.FloatTensor)` of length `config.n_layers`, with each tuple having 2 tensors of
1003
+ shape `(batch_size, num_heads, sequence_length, embed_size_per_head)`). This is also known as the legacy
1004
+ cache format.
1005
+
1006
+ The model will output the same cache format that is fed as input. If no `past_key_values` are passed, the
1007
+ legacy cache format will be returned.
1008
+
1009
+ If `past_key_values` are used, the user can optionally input only the last `input_ids` (those that don't
1010
+ have their past key value states given to this model) of shape `(batch_size, 1)` instead of all `input_ids`
1011
+ of shape `(batch_size, sequence_length)`.
1012
+ inputs_embeds (`torch.FloatTensor` of shape `(batch_size, sequence_length, hidden_size)`, *optional*):
1013
+ Optionally, instead of passing `input_ids` you can choose to directly pass an embedded representation. This
1014
+ is useful if you want more control over how to convert `input_ids` indices into associated vectors than the
1015
+ model's internal embedding lookup matrix.
1016
+ use_cache (`bool`, *optional*):
1017
+ If set to `True`, `past_key_values` key value states are returned and can be used to speed up decoding (see
1018
+ `past_key_values`).
1019
+ output_attentions (`bool`, *optional*):
1020
+ Whether or not to return the attentions tensors of all attention layers. See `attentions` under returned
1021
+ tensors for more detail.
1022
+ output_hidden_states (`bool`, *optional*):
1023
+ Whether or not to return the hidden states of all layers. See `hidden_states` under returned tensors for
1024
+ more detail.
1025
+ return_dict (`bool`, *optional*):
1026
+ Whether or not to return a [`~utils.ModelOutput`] instead of a plain tuple.
1027
+ """
1028
+
1029
+
1030
+ @add_start_docstrings(
1031
+ 'The bare Phi-3 model outputting raw hidden-states without any specific head on top.',
1032
+ PHI3_START_DOCSTRING,
1033
+ )
1034
+ class Phi3Model(Phi3PreTrainedModel):
1035
+ """
1036
+ Transformer decoder consisting of *config.num_hidden_layers* layers. Each layer is a [`Phi3DecoderLayer`]
1037
+
1038
+ Args:
1039
+ config: Phi3Config
1040
+ """
1041
+
1042
+ def __init__(self, config: Phi3Config):
1043
+ super().__init__(config)
1044
+ self.padding_idx = config.pad_token_id
1045
+ self.vocab_size = config.vocab_size
1046
+
1047
+ self.embed_tokens = nn.Embedding(config.vocab_size, config.hidden_size, self.padding_idx)
1048
+ self.embed_dropout = nn.Dropout(config.embd_pdrop)
1049
+ self.layers = nn.ModuleList(
1050
+ [Phi3DecoderLayer(config, layer_idx) for layer_idx in range(config.num_hidden_layers)]
1051
+ )
1052
+ self._attn_implementation = config._attn_implementation
1053
+
1054
+ self.norm = Phi3RMSNorm(config.hidden_size, eps=config.rms_norm_eps)
1055
+
1056
+ self.gradient_checkpointing = False
1057
+ # Initialize weights and apply final processing
1058
+ self.post_init()
1059
+
1060
+ def get_input_embeddings(self):
1061
+ return self.embed_tokens
1062
+
1063
+ def set_input_embeddings(self, value):
1064
+ self.embed_tokens = value
1065
+
1066
+ @add_start_docstrings_to_model_forward(PHI3_INPUTS_DOCSTRING)
1067
+ def forward(
1068
+ self,
1069
+ input_ids: torch.LongTensor = None,
1070
+ attention_mask: Optional[torch.Tensor] = None,
1071
+ position_ids: Optional[torch.LongTensor] = None,
1072
+ past_key_values: Optional[List[torch.FloatTensor]] = None,
1073
+ inputs_embeds: Optional[torch.FloatTensor] = None,
1074
+ use_cache: Optional[bool] = None,
1075
+ output_attentions: Optional[bool] = None,
1076
+ output_hidden_states: Optional[bool] = None,
1077
+ return_dict: Optional[bool] = None,
1078
+ ) -> Union[Tuple, BaseModelOutputWithPast]:
1079
+ output_attentions = output_attentions if output_attentions is not None else self.config.output_attentions
1080
+ output_hidden_states = (
1081
+ output_hidden_states if output_hidden_states is not None else self.config.output_hidden_states
1082
+ )
1083
+ use_cache = use_cache if use_cache is not None else self.config.use_cache
1084
+
1085
+ return_dict = return_dict if return_dict is not None else self.config.use_return_dict
1086
+
1087
+ # retrieve input_ids and inputs_embeds
1088
+ if input_ids is not None and inputs_embeds is not None:
1089
+ raise ValueError('You cannot specify both input_ids and inputs_embeds at the same time')
1090
+ elif input_ids is not None:
1091
+ batch_size, seq_length = input_ids.shape[:2]
1092
+ elif inputs_embeds is not None:
1093
+ batch_size, seq_length = inputs_embeds.shape[:2]
1094
+ else:
1095
+ raise ValueError('You have to specify either input_ids or inputs_embeds')
1096
+
1097
+ past_key_values_length = 0
1098
+
1099
+ if self.gradient_checkpointing and self.training:
1100
+ if use_cache:
1101
+ logger.warning_once(
1102
+ '`use_cache=True` is incompatible with gradient checkpointing. Setting `use_cache=False`...'
1103
+ )
1104
+ use_cache = False
1105
+
1106
+ if use_cache:
1107
+ use_legacy_cache = not isinstance(past_key_values, Cache)
1108
+ if use_legacy_cache:
1109
+ past_key_values = DynamicCache.from_legacy_cache(past_key_values)
1110
+ past_key_values_length = past_key_values.get_usable_length(seq_length)
1111
+
1112
+ if position_ids is None:
1113
+ device = input_ids.device if input_ids is not None else inputs_embeds.device
1114
+ position_ids = torch.arange(
1115
+ past_key_values_length, seq_length + past_key_values_length, dtype=torch.long, device=device
1116
+ )
1117
+ position_ids = position_ids.unsqueeze(0).view(-1, seq_length)
1118
+ else:
1119
+ position_ids = position_ids.view(-1, seq_length).long()
1120
+
1121
+ if inputs_embeds is None:
1122
+ inputs_embeds = self.embed_tokens(input_ids)
1123
+
1124
+ if attention_mask is not None and self._attn_implementation == 'flash_attention_2' and use_cache:
1125
+ is_padding_right = attention_mask[:, -1].sum().item() != batch_size
1126
+ if is_padding_right:
1127
+ raise ValueError(
1128
+ "You are attempting to perform batched generation with padding_side='right'"
1129
+ ' this may lead to unexpected behaviour for Flash Attention version of Phi3. Make sure to '
1130
+ " call `tokenizer.padding_side = 'left'` before tokenizing the input. "
1131
+ )
1132
+
1133
+ if self._attn_implementation == 'flash_attention_2':
1134
+ # 2d mask is passed through the layers
1135
+ attention_mask = attention_mask if (attention_mask is not None and 0 in attention_mask) else None
1136
+ else:
1137
+ # 4d mask is passed through the layers
1138
+ attention_mask = _prepare_4d_causal_attention_mask(
1139
+ attention_mask,
1140
+ (batch_size, seq_length),
1141
+ inputs_embeds,
1142
+ past_key_values_length,
1143
+ sliding_window=self.config.sliding_window,
1144
+ )
1145
+
1146
+ hidden_states = inputs_embeds
1147
+
1148
+ # decoder layers
1149
+ all_hidden_states = () if output_hidden_states else None
1150
+ all_self_attns = () if output_attentions else None
1151
+ next_decoder_cache = None
1152
+
1153
+ for decoder_layer in self.layers:
1154
+ if output_hidden_states:
1155
+ all_hidden_states += (hidden_states,)
1156
+
1157
+ if self.gradient_checkpointing and self.training:
1158
+ layer_outputs = self._gradient_checkpointing_func(
1159
+ decoder_layer.__call__,
1160
+ hidden_states,
1161
+ attention_mask,
1162
+ position_ids,
1163
+ past_key_values,
1164
+ output_attentions,
1165
+ use_cache,
1166
+ )
1167
+ else:
1168
+ layer_outputs = decoder_layer(
1169
+ hidden_states,
1170
+ attention_mask=attention_mask,
1171
+ position_ids=position_ids,
1172
+ past_key_value=past_key_values,
1173
+ output_attentions=output_attentions,
1174
+ use_cache=use_cache,
1175
+ )
1176
+
1177
+ hidden_states = layer_outputs[0]
1178
+
1179
+ if use_cache:
1180
+ next_decoder_cache = layer_outputs[2 if output_attentions else 1]
1181
+
1182
+ if output_attentions:
1183
+ all_self_attns += (layer_outputs[1],)
1184
+
1185
+ hidden_states = self.norm(hidden_states)
1186
+
1187
+ # add hidden states from the last decoder layer
1188
+ if output_hidden_states:
1189
+ all_hidden_states += (hidden_states,)
1190
+
1191
+ next_cache = None
1192
+ if use_cache:
1193
+ next_cache = next_decoder_cache.to_legacy_cache() if use_legacy_cache else next_decoder_cache
1194
+ if not return_dict:
1195
+ return tuple(v for v in [hidden_states, next_cache, all_hidden_states, all_self_attns] if v is not None)
1196
+ return BaseModelOutputWithPast(
1197
+ last_hidden_state=hidden_states,
1198
+ past_key_values=next_cache,
1199
+ hidden_states=all_hidden_states,
1200
+ attentions=all_self_attns,
1201
+ )
1202
+
1203
+
1204
+ class Phi3ForCausalLM(Phi3PreTrainedModel):
1205
+ _tied_weights_keys = ['lm_head.weight']
1206
+
1207
+ # Copied from transformers.models.llama.modeling_llama.LlamaForCausalLM.__init__ with Llama->Phi3
1208
+ def __init__(self, config):
1209
+ super().__init__(config)
1210
+ self.model = Phi3Model(config)
1211
+ self.vocab_size = config.vocab_size
1212
+ self.lm_head = nn.Linear(config.hidden_size, config.vocab_size, bias=False)
1213
+
1214
+ # Initialize weights and apply final processing
1215
+ self.post_init()
1216
+
1217
+ # Copied from transformers.models.llama.modeling_llama.LlamaForCausalLM.get_input_embeddings
1218
+ def get_input_embeddings(self):
1219
+ return self.model.embed_tokens
1220
+
1221
+ # Copied from transformers.models.llama.modeling_llama.LlamaForCausalLM.set_input_embeddings
1222
+ def set_input_embeddings(self, value):
1223
+ self.model.embed_tokens = value
1224
+
1225
+ # Copied from transformers.models.llama.modeling_llama.LlamaForCausalLM.get_output_embeddings
1226
+ def get_output_embeddings(self):
1227
+ return self.lm_head
1228
+
1229
+ # Copied from transformers.models.llama.modeling_llama.LlamaForCausalLM.set_output_embeddings
1230
+ def set_output_embeddings(self, new_embeddings):
1231
+ self.lm_head = new_embeddings
1232
+
1233
+ # Copied from transformers.models.llama.modeling_llama.LlamaForCausalLM.set_decoder
1234
+ def set_decoder(self, decoder):
1235
+ self.model = decoder
1236
+
1237
+ # Copied from transformers.models.llama.modeling_llama.LlamaForCausalLM.get_decoder
1238
+ def get_decoder(self):
1239
+ return self.model
1240
+
1241
+ # Ignore copy
1242
+ @add_start_docstrings_to_model_forward(PHI3_INPUTS_DOCSTRING)
1243
+ @replace_return_docstrings(output_type=CausalLMOutputWithPast, config_class=_CONFIG_FOR_DOC)
1244
+ def forward(
1245
+ self,
1246
+ input_ids: torch.LongTensor = None,
1247
+ attention_mask: Optional[torch.Tensor] = None,
1248
+ position_ids: Optional[torch.LongTensor] = None,
1249
+ past_key_values: Optional[List[torch.FloatTensor]] = None,
1250
+ inputs_embeds: Optional[torch.FloatTensor] = None,
1251
+ labels: Optional[torch.LongTensor] = None,
1252
+ use_cache: Optional[bool] = None,
1253
+ output_attentions: Optional[bool] = None,
1254
+ output_hidden_states: Optional[bool] = None,
1255
+ return_dict: Optional[bool] = None,
1256
+ ) -> Union[Tuple, CausalLMOutputWithPast]:
1257
+ r"""
1258
+ Args:
1259
+ labels (`torch.LongTensor` of shape `(batch_size, sequence_length)`, *optional*):
1260
+ Labels for computing the masked language modeling loss. Indices should either be in `[0, ...,
1261
+ config.vocab_size]` or -100 (see `input_ids` docstring). Tokens with indices set to `-100` are ignored
1262
+ (masked), the loss is only computed for the tokens with labels in `[0, ..., config.vocab_size]`.
1263
+
1264
+ Returns:
1265
+
1266
+ Example:
1267
+
1268
+ ```python
1269
+ >>> from transformers import AutoTokenizer, Phi3ForCausalLM
1270
+
1271
+ >>> model = Phi3ForCausalLM.from_pretrained("microsoft/phi-3-mini-4k-instruct")
1272
+ >>> tokenizer = AutoTokenizer.from_pretrained("microsoft/phi-3-mini-4k-instruct")
1273
+
1274
+ >>> prompt = "This is an example script ."
1275
+ >>> inputs = tokenizer(prompt, return_tensors="pt")
1276
+
1277
+ >>> # Generate
1278
+ >>> generate_ids = model.generate(inputs.input_ids, max_length=30)
1279
+ >>> tokenizer.batch_decode(generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0]
1280
+ 'This is an example script .\n Certainly! Below is a sample script that demonstrates a simple task, such as calculating the sum'
1281
+ ```"""
1282
+
1283
+ output_attentions = output_attentions if output_attentions is not None else self.config.output_attentions
1284
+ output_hidden_states = (
1285
+ output_hidden_states if output_hidden_states is not None else self.config.output_hidden_states
1286
+ )
1287
+ return_dict = return_dict if return_dict is not None else self.config.use_return_dict
1288
+
1289
+ # decoder outputs consists of (dec_features, layer_state, dec_hidden, dec_attn)
1290
+ outputs = self.model(
1291
+ input_ids=input_ids,
1292
+ attention_mask=attention_mask,
1293
+ position_ids=position_ids,
1294
+ past_key_values=past_key_values,
1295
+ inputs_embeds=inputs_embeds,
1296
+ use_cache=use_cache,
1297
+ output_attentions=output_attentions,
1298
+ output_hidden_states=output_hidden_states,
1299
+ return_dict=return_dict,
1300
+ )
1301
+
1302
+ hidden_states = outputs[0]
1303
+ logits = self.lm_head(hidden_states)
1304
+ logits = logits.float()
1305
+
1306
+ loss = None
1307
+ if labels is not None:
1308
+ # Shift so that tokens < n predict n
1309
+ shift_logits = logits[..., :-1, :].contiguous()
1310
+ shift_labels = labels[..., 1:].contiguous()
1311
+ # Flatten the tokens
1312
+ loss_fct = CrossEntropyLoss()
1313
+ shift_logits = shift_logits.view(-1, self.config.vocab_size)
1314
+ shift_labels = shift_labels.view(-1)
1315
+ # Enable model parallelism
1316
+ shift_labels = shift_labels.to(shift_logits.device)
1317
+ loss = loss_fct(shift_logits, shift_labels)
1318
+
1319
+ if not return_dict:
1320
+ output = (logits,) + outputs[1:]
1321
+ return (loss,) + output if loss is not None else output
1322
+
1323
+ return CausalLMOutputWithPast(
1324
+ loss=loss,
1325
+ logits=logits,
1326
+ past_key_values=outputs.past_key_values,
1327
+ hidden_states=outputs.hidden_states,
1328
+ attentions=outputs.attentions,
1329
+ )
1330
+
1331
+ # Copied from transformers.models.persimmon.modeling_persimmon.PersimmonForCausalLM.prepare_inputs_for_generation
1332
+ def prepare_inputs_for_generation(
1333
+ self, input_ids, past_key_values=None, attention_mask=None, inputs_embeds=None, **kwargs
1334
+ ):
1335
+ if past_key_values is not None:
1336
+ if isinstance(past_key_values, Cache):
1337
+ cache_length = past_key_values.get_seq_length()
1338
+ past_length = past_key_values.seen_tokens
1339
+ max_cache_length = past_key_values.get_max_length()
1340
+ else:
1341
+ cache_length = past_length = past_key_values[0][0].shape[2]
1342
+ max_cache_length = None
1343
+
1344
+ # Keep only the unprocessed tokens:
1345
+ # 1 - If the length of the attention_mask exceeds the length of input_ids, then we are in a setting where
1346
+ # some of the inputs are exclusively passed as part of the cache (e.g. when passing input_embeds as
1347
+ # input)
1348
+ if attention_mask is not None and attention_mask.shape[1] > input_ids.shape[1]:
1349
+ input_ids = input_ids[:, -(attention_mask.shape[1] - past_length) :]
1350
+ # 2 - If the past_length is smaller than input_ids', then input_ids holds all input tokens. We can discard
1351
+ # input_ids based on the past_length.
1352
+ elif past_length < input_ids.shape[1]:
1353
+ input_ids = input_ids[:, past_length:]
1354
+ # 3 - Otherwise (past_length >= input_ids.shape[1]), let's assume input_ids only has unprocessed tokens.
1355
+
1356
+ # If we are about to go beyond the maximum cache length, we need to crop the input attention mask.
1357
+ if (
1358
+ max_cache_length is not None
1359
+ and attention_mask is not None
1360
+ and cache_length + input_ids.shape[1] > max_cache_length
1361
+ ):
1362
+ attention_mask = attention_mask[:, -max_cache_length:]
1363
+
1364
+ position_ids = kwargs.get('position_ids', None)
1365
+ if attention_mask is not None and position_ids is None:
1366
+ # create position_ids on the fly for batch generation
1367
+ position_ids = attention_mask.long().cumsum(-1) - 1
1368
+ position_ids.masked_fill_(attention_mask == 0, 1)
1369
+ if past_key_values:
1370
+ position_ids = position_ids[:, -input_ids.shape[1] :]
1371
+
1372
+ # if `inputs_embeds` are passed, we only want to use them in the 1st generation step
1373
+ if inputs_embeds is not None and past_key_values is None:
1374
+ model_inputs = {'inputs_embeds': inputs_embeds}
1375
+ else:
1376
+ model_inputs = {'input_ids': input_ids}
1377
+
1378
+ model_inputs.update(
1379
+ {
1380
+ 'position_ids': position_ids,
1381
+ 'past_key_values': past_key_values,
1382
+ 'use_cache': kwargs.get('use_cache'),
1383
+ 'attention_mask': attention_mask,
1384
+ }
1385
+ )
1386
+ return model_inputs
1387
+
1388
+ @staticmethod
1389
+ # Copied from transformers.models.llama.modeling_llama.LlamaForCausalLM._reorder_cache
1390
+ def _reorder_cache(past_key_values, beam_idx):
1391
+ reordered_past = ()
1392
+ for layer_past in past_key_values:
1393
+ reordered_past += (
1394
+ tuple(past_state.index_select(0, beam_idx.to(past_state.device)) for past_state in layer_past),
1395
+ )
1396
+ return reordered_past
1397
+
1398
+
1399
+ @add_start_docstrings(
1400
+ """
1401
+ The [`Phi3Model`] with a sequence classification head on top (linear layer).
1402
+
1403
+ [`Phi3ForSequenceClassification`] uses the last token in order to do the classification, as other causal models
1404
+ (e.g. GPT-2) do.
1405
+
1406
+ Since it does classification on the last token, it requires to know the position of the last token. If a
1407
+ `pad_token_id` is defined in the configuration, it finds the last token that is not a padding token in each row. If
1408
+ no `pad_token_id` is defined, it simply takes the last value in each row of the batch. Since it cannot guess the
1409
+ padding tokens when `inputs_embeds` are passed instead of `input_ids`, it does the same (take the last value in
1410
+ each row of the batch).
1411
+ """,
1412
+ PHI3_START_DOCSTRING,
1413
+ )
1414
+ # Copied from transformers.models.llama.modeling_llama.LlamaForSequenceClassification with Llama->Phi3, LLAMA->PHI3, self.transformer->self.model, transformer_outputs->model_outputs
1415
+ class Phi3ForSequenceClassification(Phi3PreTrainedModel):
1416
+ def __init__(self, config):
1417
+ super().__init__(config)
1418
+ self.num_labels = config.num_labels
1419
+ self.model = Phi3Model(config)
1420
+ self.score = nn.Linear(config.hidden_size, self.num_labels, bias=False)
1421
+
1422
+ # Initialize weights and apply final processing
1423
+ self.post_init()
1424
+
1425
+ def get_input_embeddings(self):
1426
+ return self.model.embed_tokens
1427
+
1428
+ def set_input_embeddings(self, value):
1429
+ self.model.embed_tokens = value
1430
+
1431
+ @add_start_docstrings_to_model_forward(PHI3_INPUTS_DOCSTRING)
1432
+ def forward(
1433
+ self,
1434
+ input_ids: torch.LongTensor = None,
1435
+ attention_mask: Optional[torch.Tensor] = None,
1436
+ position_ids: Optional[torch.LongTensor] = None,
1437
+ past_key_values: Optional[List[torch.FloatTensor]] = None,
1438
+ inputs_embeds: Optional[torch.FloatTensor] = None,
1439
+ labels: Optional[torch.LongTensor] = None,
1440
+ use_cache: Optional[bool] = None,
1441
+ output_attentions: Optional[bool] = None,
1442
+ output_hidden_states: Optional[bool] = None,
1443
+ return_dict: Optional[bool] = None,
1444
+ ) -> Union[Tuple, SequenceClassifierOutputWithPast]:
1445
+ r"""
1446
+ labels (`torch.LongTensor` of shape `(batch_size,)`, *optional*):
1447
+ Labels for computing the sequence classification/regression loss. Indices should be in `[0, ...,
1448
+ config.num_labels - 1]`. If `config.num_labels == 1` a regression loss is computed (Mean-Square loss), If
1449
+ `config.num_labels > 1` a classification loss is computed (Cross-Entropy).
1450
+ """
1451
+ return_dict = return_dict if return_dict is not None else self.config.use_return_dict
1452
+
1453
+ model_outputs = self.model(
1454
+ input_ids,
1455
+ attention_mask=attention_mask,
1456
+ position_ids=position_ids,
1457
+ past_key_values=past_key_values,
1458
+ inputs_embeds=inputs_embeds,
1459
+ use_cache=use_cache,
1460
+ output_attentions=output_attentions,
1461
+ output_hidden_states=output_hidden_states,
1462
+ return_dict=return_dict,
1463
+ )
1464
+ hidden_states = model_outputs[0]
1465
+ logits = self.score(hidden_states)
1466
+
1467
+ if input_ids is not None:
1468
+ batch_size = input_ids.shape[0]
1469
+ else:
1470
+ batch_size = inputs_embeds.shape[0]
1471
+
1472
+ if self.config.pad_token_id is None and batch_size != 1:
1473
+ raise ValueError('Cannot handle batch sizes > 1 if no padding token is defined.')
1474
+ if self.config.pad_token_id is None:
1475
+ sequence_lengths = -1
1476
+ else:
1477
+ if input_ids is not None:
1478
+ # if no pad token found, use modulo instead of reverse indexing for ONNX compatibility
1479
+ sequence_lengths = torch.eq(input_ids, self.config.pad_token_id).int().argmax(-1) - 1
1480
+ sequence_lengths = sequence_lengths % input_ids.shape[-1]
1481
+ sequence_lengths = sequence_lengths.to(logits.device)
1482
+ else:
1483
+ sequence_lengths = -1
1484
+
1485
+ pooled_logits = logits[torch.arange(batch_size, device=logits.device), sequence_lengths]
1486
+
1487
+ loss = None
1488
+ if labels is not None:
1489
+ labels = labels.to(logits.device)
1490
+ if self.config.problem_type is None:
1491
+ if self.num_labels == 1:
1492
+ self.config.problem_type = 'regression'
1493
+ elif self.num_labels > 1 and (labels.dtype == torch.long or labels.dtype == torch.int):
1494
+ self.config.problem_type = 'single_label_classification'
1495
+ else:
1496
+ self.config.problem_type = 'multi_label_classification'
1497
+
1498
+ if self.config.problem_type == 'regression':
1499
+ loss_fct = MSELoss()
1500
+ if self.num_labels == 1:
1501
+ loss = loss_fct(pooled_logits.squeeze(), labels.squeeze())
1502
+ else:
1503
+ loss = loss_fct(pooled_logits, labels)
1504
+ elif self.config.problem_type == 'single_label_classification':
1505
+ loss_fct = CrossEntropyLoss()
1506
+ loss = loss_fct(pooled_logits.view(-1, self.num_labels), labels.view(-1))
1507
+ elif self.config.problem_type == 'multi_label_classification':
1508
+ loss_fct = BCEWithLogitsLoss()
1509
+ loss = loss_fct(pooled_logits, labels)
1510
+ if not return_dict:
1511
+ output = (pooled_logits,) + model_outputs[1:]
1512
+ return ((loss,) + output) if loss is not None else output
1513
+
1514
+ return SequenceClassifierOutputWithPast(
1515
+ loss=loss,
1516
+ logits=pooled_logits,
1517
+ past_key_values=model_outputs.past_key_values,
1518
+ hidden_states=model_outputs.hidden_states,
1519
+ attentions=model_outputs.attentions,
1520
+ )
1521
+
1522
+
1523
+ @add_start_docstrings(
1524
+ """
1525
+ [`Phi3Model`] with a token classification head on top (a linear layer on top of the hidden-states output) e.g. for
1526
+ Named-Entity-Recognition (NER) tasks.
1527
+ """,
1528
+ PHI3_START_DOCSTRING,
1529
+ )
1530
+ # Copied from transformers.models.mpt.modeling_mpt.MptForTokenClassification with Mpt->Phi3,MPT->PHI3,self.transformer->self.model,transformer_outputs->model_outputs
1531
+ class Phi3ForTokenClassification(Phi3PreTrainedModel):
1532
+ def __init__(self, config: Phi3Config):
1533
+ super().__init__(config)
1534
+ self.num_labels = config.num_labels
1535
+
1536
+ self.model = Phi3Model(config)
1537
+ if hasattr(config, 'classifier_dropout') and config.classifier_dropout is not None:
1538
+ classifier_dropout = config.classifier_dropout
1539
+ elif hasattr(config, 'hidden_dropout') and config.hidden_dropout is not None:
1540
+ classifier_dropout = config.hidden_dropout
1541
+ else:
1542
+ classifier_dropout = 0.1
1543
+ self.dropout = nn.Dropout(classifier_dropout)
1544
+ self.classifier = nn.Linear(config.hidden_size, config.num_labels)
1545
+
1546
+ # Initialize weights and apply final processing
1547
+ self.post_init()
1548
+
1549
+ @add_start_docstrings_to_model_forward(PHI3_INPUTS_DOCSTRING)
1550
+ @add_code_sample_docstrings(
1551
+ checkpoint=_CHECKPOINT_FOR_DOC,
1552
+ output_type=TokenClassifierOutput,
1553
+ config_class=_CONFIG_FOR_DOC,
1554
+ )
1555
+ def forward(
1556
+ self,
1557
+ input_ids: Optional[torch.LongTensor] = None,
1558
+ past_key_values: Optional[Tuple[Tuple[torch.Tensor, torch.Tensor], ...]] = None,
1559
+ attention_mask: Optional[torch.Tensor] = None,
1560
+ inputs_embeds: Optional[torch.Tensor] = None,
1561
+ labels: Optional[torch.Tensor] = None,
1562
+ use_cache: Optional[bool] = None,
1563
+ output_attentions: Optional[bool] = None,
1564
+ output_hidden_states: Optional[bool] = None,
1565
+ return_dict: Optional[bool] = None,
1566
+ **deprecated_arguments,
1567
+ ) -> Union[Tuple[torch.Tensor], TokenClassifierOutput]:
1568
+ r"""
1569
+ labels (`torch.LongTensor` of shape `(batch_size,)`, *optional*):
1570
+ Labels for computing the sequence classification/regression loss. Indices should be in `[0, ...,
1571
+ config.num_labels - 1]`. If `config.num_labels == 1` a regression loss is computed (Mean-Square loss), If
1572
+ `config.num_labels > 1` a classification loss is computed (Cross-Entropy).
1573
+ """
1574
+ return_dict = return_dict if return_dict is not None else self.config.use_return_dict
1575
+
1576
+ model_outputs = self.model(
1577
+ input_ids,
1578
+ past_key_values=past_key_values,
1579
+ attention_mask=attention_mask,
1580
+ inputs_embeds=inputs_embeds,
1581
+ use_cache=use_cache,
1582
+ output_attentions=output_attentions,
1583
+ output_hidden_states=output_hidden_states,
1584
+ return_dict=return_dict,
1585
+ )
1586
+
1587
+ hidden_states = model_outputs[0]
1588
+ hidden_states = self.dropout(hidden_states)
1589
+ logits = self.classifier(hidden_states)
1590
+
1591
+ loss = None
1592
+ if labels is not None:
1593
+ # move labels to correct device to enable model parallelism
1594
+ labels = labels.to(logits.device)
1595
+ batch_size, seq_length = labels.shape
1596
+ loss_fct = CrossEntropyLoss()
1597
+ loss = loss_fct(
1598
+ logits.view(batch_size * seq_length, self.num_labels), labels.view(batch_size * seq_length)
1599
+ )
1600
+
1601
+ if not return_dict:
1602
+ output = (logits,) + model_outputs[2:]
1603
+ return ((loss,) + output) if loss is not None else output
1604
+
1605
+ return TokenClassifierOutput(
1606
+ loss=loss,
1607
+ logits=logits,
1608
+ hidden_states=model_outputs.hidden_states,
1609
+ attentions=model_outputs.attentions,
1610
+ )
requirements.txt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ transformers==4.37.2
2
+ datasets
3
+ timm
train.py ADDED
@@ -0,0 +1,74 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+
3
+ ########################################
4
+ # python -m train
5
+ ###########################################
6
+ # see https://huggingface.co/OpenGVLab/InternVL2-4B/
7
+
8
+
9
+
10
+
11
+ import torch
12
+ from tqdm import tqdm
13
+
14
+ from data import dataloader
15
+ from model import model, tokenizer, optimizer, load_image
16
+ import config
17
+
18
+ def get_loss(model, input):
19
+ ids = tokenizer(input['text'], return_tensors='pt', padding=True, truncation=True, max_length=config.max_tokens).to(config.device)
20
+ # print(tokenizer.decode(ids.input_ids[0]), 'Training text')
21
+ pixel_values = input['image'].to(config.device, config.dtype)
22
+ pixel_values = torch.nn.functional.interpolate(pixel_values, (224, 224))
23
+ with torch.cuda.amp.autocast(enabled=True, dtype=config.dtype):
24
+ output = model(**ids, labels=ids.input_ids, pixel_values=pixel_values)
25
+
26
+ return output.loss
27
+
28
+ scaler = torch.cuda.amp.GradScaler()
29
+
30
+ for epoch in range(config.epochs):
31
+ for ind, sample in tqdm(enumerate(iter(dataloader))):
32
+ if sample is None:
33
+ continue
34
+
35
+ if ind % 100 == 0:
36
+ with torch.cuda.amp.autocast(enabled=True, dtype=config.dtype):
37
+ response = model.chat(tokenizer=tokenizer,
38
+ pixel_values=torch.nn.functional.interpolate(
39
+ load_image('/home/ryn_mote/Downloads/horse_style.png').to(config.device, config.dtype),
40
+ (224, 224)),
41
+ question='<image>\n ',
42
+ generation_config = dict(max_new_tokens=config.max_tokens, do_sample=True))
43
+ print('\n\n\n', response, '\n\n\n' )
44
+
45
+ response = model.chat(tokenizer=tokenizer,
46
+ pixel_values=torch.nn.functional.interpolate(
47
+ load_image('/home/ryn_mote/Downloads/1200px-Andrzej_Person_Kancelaria_Senatu.jpg').to(config.device, config.dtype),
48
+ (224, 224)),
49
+ question='<image>\n ',
50
+ generation_config = dict(max_new_tokens=config.max_tokens, do_sample=True))
51
+ print('\n\n\n', response, '\n\n\n' )
52
+
53
+ loss = get_loss(model, sample)
54
+ print(loss.item())
55
+
56
+ scaler.scale(loss).backward()
57
+
58
+ optimizer.step()
59
+ optimizer.zero_grad()
60
+
61
+
62
+ if ind % 1000 == 0:
63
+ model.save_pretrained(config.save_path, from_pt=True)
64
+
65
+
66
+
67
+
68
+ # TODO verify whether we can do vector arithmetic; add to validation taking addition of two images or something
69
+
70
+ # TODO drop in whole new image/text model
71
+
72
+
73
+
74
+
config.json → weights_CLIP_aesth_7000/config.json RENAMED
@@ -1,6 +1,6 @@
1
  {
2
  "_commit_hash": null,
3
- "_name_or_path": "inter-est_quite_good",
4
  "architectures": [
5
  "InternVLChatModel"
6
  ],
 
1
  {
2
  "_commit_hash": null,
3
+ "_name_or_path": "/home/ryn_mote/Misc/vlm_with_pooled_for_text_genrec/inter-est_CLIP",
4
  "architectures": [
5
  "InternVLChatModel"
6
  ],
generation_config.json → weights_CLIP_aesth_7000/generation_config.json RENAMED
File without changes
model-00001-of-00002.safetensors → weights_CLIP_aesth_7000/model-00001-of-00002.safetensors RENAMED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:b58788056130d021acf2d12401cf0385c57d016d713e2d07341772a316a689bf
3
- size 4983255264
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:763931fb70db0e3df71e7ba963bc49ff6174d0af75803fb73fdf2a47d6bb3365
3
+ size 4975791834
model-00002-of-00002.safetensors → weights_CLIP_aesth_7000/model-00002-of-00002.safetensors RENAMED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:e31711513343f4c0ae799d3dc77f2e06273616abdd07e611345d167025acc6c0
3
- size 3921534432
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:45ce1b26973bd07602733d116666d85f2f3f2b82b150cb9684c72ba2c0ad193c
3
+ size 3009216872
model.safetensors.index.json → weights_CLIP_aesth_7000/model.safetensors.index.json RENAMED
@@ -1,6 +1,6 @@
1
  {
2
  "metadata": {
3
- "total_size": 8904724480
4
  },
5
  "weight_map": {
6
  "language_model.lm_head.weight": "model-00002-of-00002.safetensors",
@@ -47,36 +47,36 @@
47
  "language_model.model.layers.14.post_attention_layernorm.weight": "model-00001-of-00002.safetensors",
48
  "language_model.model.layers.14.self_attn.o_proj.weight": "model-00001-of-00002.safetensors",
49
  "language_model.model.layers.14.self_attn.qkv_proj.weight": "model-00001-of-00002.safetensors",
50
- "language_model.model.layers.15.input_layernorm.weight": "model-00002-of-00002.safetensors",
51
- "language_model.model.layers.15.mlp.down_proj.weight": "model-00002-of-00002.safetensors",
52
  "language_model.model.layers.15.mlp.gate_up_proj.weight": "model-00001-of-00002.safetensors",
53
- "language_model.model.layers.15.post_attention_layernorm.weight": "model-00002-of-00002.safetensors",
54
  "language_model.model.layers.15.self_attn.o_proj.weight": "model-00001-of-00002.safetensors",
55
  "language_model.model.layers.15.self_attn.qkv_proj.weight": "model-00001-of-00002.safetensors",
56
- "language_model.model.layers.16.input_layernorm.weight": "model-00002-of-00002.safetensors",
57
- "language_model.model.layers.16.mlp.down_proj.weight": "model-00002-of-00002.safetensors",
58
- "language_model.model.layers.16.mlp.gate_up_proj.weight": "model-00002-of-00002.safetensors",
59
- "language_model.model.layers.16.post_attention_layernorm.weight": "model-00002-of-00002.safetensors",
60
- "language_model.model.layers.16.self_attn.o_proj.weight": "model-00002-of-00002.safetensors",
61
- "language_model.model.layers.16.self_attn.qkv_proj.weight": "model-00002-of-00002.safetensors",
62
- "language_model.model.layers.17.input_layernorm.weight": "model-00002-of-00002.safetensors",
63
- "language_model.model.layers.17.mlp.down_proj.weight": "model-00002-of-00002.safetensors",
64
- "language_model.model.layers.17.mlp.gate_up_proj.weight": "model-00002-of-00002.safetensors",
65
- "language_model.model.layers.17.post_attention_layernorm.weight": "model-00002-of-00002.safetensors",
66
- "language_model.model.layers.17.self_attn.o_proj.weight": "model-00002-of-00002.safetensors",
67
- "language_model.model.layers.17.self_attn.qkv_proj.weight": "model-00002-of-00002.safetensors",
68
- "language_model.model.layers.18.input_layernorm.weight": "model-00002-of-00002.safetensors",
69
- "language_model.model.layers.18.mlp.down_proj.weight": "model-00002-of-00002.safetensors",
70
- "language_model.model.layers.18.mlp.gate_up_proj.weight": "model-00002-of-00002.safetensors",
71
- "language_model.model.layers.18.post_attention_layernorm.weight": "model-00002-of-00002.safetensors",
72
- "language_model.model.layers.18.self_attn.o_proj.weight": "model-00002-of-00002.safetensors",
73
- "language_model.model.layers.18.self_attn.qkv_proj.weight": "model-00002-of-00002.safetensors",
74
  "language_model.model.layers.19.input_layernorm.weight": "model-00002-of-00002.safetensors",
75
  "language_model.model.layers.19.mlp.down_proj.weight": "model-00002-of-00002.safetensors",
76
- "language_model.model.layers.19.mlp.gate_up_proj.weight": "model-00002-of-00002.safetensors",
77
  "language_model.model.layers.19.post_attention_layernorm.weight": "model-00002-of-00002.safetensors",
78
- "language_model.model.layers.19.self_attn.o_proj.weight": "model-00002-of-00002.safetensors",
79
- "language_model.model.layers.19.self_attn.qkv_proj.weight": "model-00002-of-00002.safetensors",
80
  "language_model.model.layers.2.input_layernorm.weight": "model-00001-of-00002.safetensors",
81
  "language_model.model.layers.2.mlp.down_proj.weight": "model-00001-of-00002.safetensors",
82
  "language_model.model.layers.2.mlp.gate_up_proj.weight": "model-00001-of-00002.safetensors",
@@ -204,345 +204,403 @@
204
  "mlp1.1.weight": "model-00002-of-00002.safetensors",
205
  "mlp1.3.bias": "model-00002-of-00002.safetensors",
206
  "mlp1.3.weight": "model-00002-of-00002.safetensors",
207
- "vision_model.embeddings.class_embedding": "model-00001-of-00002.safetensors",
208
- "vision_model.embeddings.patch_embedding.bias": "model-00001-of-00002.safetensors",
209
- "vision_model.embeddings.patch_embedding.weight": "model-00001-of-00002.safetensors",
210
- "vision_model.embeddings.position_embedding": "model-00001-of-00002.safetensors",
211
- "vision_model.encoder.layers.0.attn.proj.bias": "model-00001-of-00002.safetensors",
212
- "vision_model.encoder.layers.0.attn.proj.weight": "model-00001-of-00002.safetensors",
213
- "vision_model.encoder.layers.0.attn.qkv.bias": "model-00001-of-00002.safetensors",
214
- "vision_model.encoder.layers.0.attn.qkv.weight": "model-00001-of-00002.safetensors",
215
- "vision_model.encoder.layers.0.ls1": "model-00001-of-00002.safetensors",
216
- "vision_model.encoder.layers.0.ls2": "model-00001-of-00002.safetensors",
217
- "vision_model.encoder.layers.0.mlp.fc1.bias": "model-00001-of-00002.safetensors",
218
- "vision_model.encoder.layers.0.mlp.fc1.weight": "model-00001-of-00002.safetensors",
219
- "vision_model.encoder.layers.0.mlp.fc2.bias": "model-00001-of-00002.safetensors",
220
- "vision_model.encoder.layers.0.mlp.fc2.weight": "model-00001-of-00002.safetensors",
221
- "vision_model.encoder.layers.0.norm1.bias": "model-00001-of-00002.safetensors",
222
- "vision_model.encoder.layers.0.norm1.weight": "model-00001-of-00002.safetensors",
223
- "vision_model.encoder.layers.0.norm2.bias": "model-00001-of-00002.safetensors",
224
- "vision_model.encoder.layers.0.norm2.weight": "model-00001-of-00002.safetensors",
225
- "vision_model.encoder.layers.1.attn.proj.bias": "model-00001-of-00002.safetensors",
226
- "vision_model.encoder.layers.1.attn.proj.weight": "model-00001-of-00002.safetensors",
227
- "vision_model.encoder.layers.1.attn.qkv.bias": "model-00001-of-00002.safetensors",
228
- "vision_model.encoder.layers.1.attn.qkv.weight": "model-00001-of-00002.safetensors",
229
- "vision_model.encoder.layers.1.ls1": "model-00001-of-00002.safetensors",
230
- "vision_model.encoder.layers.1.ls2": "model-00001-of-00002.safetensors",
231
- "vision_model.encoder.layers.1.mlp.fc1.bias": "model-00001-of-00002.safetensors",
232
- "vision_model.encoder.layers.1.mlp.fc1.weight": "model-00001-of-00002.safetensors",
233
- "vision_model.encoder.layers.1.mlp.fc2.bias": "model-00001-of-00002.safetensors",
234
- "vision_model.encoder.layers.1.mlp.fc2.weight": "model-00001-of-00002.safetensors",
235
- "vision_model.encoder.layers.1.norm1.bias": "model-00001-of-00002.safetensors",
236
- "vision_model.encoder.layers.1.norm1.weight": "model-00001-of-00002.safetensors",
237
- "vision_model.encoder.layers.1.norm2.bias": "model-00001-of-00002.safetensors",
238
- "vision_model.encoder.layers.1.norm2.weight": "model-00001-of-00002.safetensors",
239
- "vision_model.encoder.layers.10.attn.proj.bias": "model-00001-of-00002.safetensors",
240
- "vision_model.encoder.layers.10.attn.proj.weight": "model-00001-of-00002.safetensors",
241
- "vision_model.encoder.layers.10.attn.qkv.bias": "model-00001-of-00002.safetensors",
242
- "vision_model.encoder.layers.10.attn.qkv.weight": "model-00001-of-00002.safetensors",
243
- "vision_model.encoder.layers.10.ls1": "model-00001-of-00002.safetensors",
244
- "vision_model.encoder.layers.10.ls2": "model-00001-of-00002.safetensors",
245
- "vision_model.encoder.layers.10.mlp.fc1.bias": "model-00001-of-00002.safetensors",
246
- "vision_model.encoder.layers.10.mlp.fc1.weight": "model-00001-of-00002.safetensors",
247
- "vision_model.encoder.layers.10.mlp.fc2.bias": "model-00001-of-00002.safetensors",
248
- "vision_model.encoder.layers.10.mlp.fc2.weight": "model-00001-of-00002.safetensors",
249
- "vision_model.encoder.layers.10.norm1.bias": "model-00001-of-00002.safetensors",
250
- "vision_model.encoder.layers.10.norm1.weight": "model-00001-of-00002.safetensors",
251
- "vision_model.encoder.layers.10.norm2.bias": "model-00001-of-00002.safetensors",
252
- "vision_model.encoder.layers.10.norm2.weight": "model-00001-of-00002.safetensors",
253
- "vision_model.encoder.layers.11.attn.proj.bias": "model-00001-of-00002.safetensors",
254
- "vision_model.encoder.layers.11.attn.proj.weight": "model-00001-of-00002.safetensors",
255
- "vision_model.encoder.layers.11.attn.qkv.bias": "model-00001-of-00002.safetensors",
256
- "vision_model.encoder.layers.11.attn.qkv.weight": "model-00001-of-00002.safetensors",
257
- "vision_model.encoder.layers.11.ls1": "model-00001-of-00002.safetensors",
258
- "vision_model.encoder.layers.11.ls2": "model-00001-of-00002.safetensors",
259
- "vision_model.encoder.layers.11.mlp.fc1.bias": "model-00001-of-00002.safetensors",
260
- "vision_model.encoder.layers.11.mlp.fc1.weight": "model-00001-of-00002.safetensors",
261
- "vision_model.encoder.layers.11.mlp.fc2.bias": "model-00001-of-00002.safetensors",
262
- "vision_model.encoder.layers.11.mlp.fc2.weight": "model-00001-of-00002.safetensors",
263
- "vision_model.encoder.layers.11.norm1.bias": "model-00001-of-00002.safetensors",
264
- "vision_model.encoder.layers.11.norm1.weight": "model-00001-of-00002.safetensors",
265
- "vision_model.encoder.layers.11.norm2.bias": "model-00001-of-00002.safetensors",
266
- "vision_model.encoder.layers.11.norm2.weight": "model-00001-of-00002.safetensors",
267
- "vision_model.encoder.layers.12.attn.proj.bias": "model-00001-of-00002.safetensors",
268
- "vision_model.encoder.layers.12.attn.proj.weight": "model-00001-of-00002.safetensors",
269
- "vision_model.encoder.layers.12.attn.qkv.bias": "model-00001-of-00002.safetensors",
270
- "vision_model.encoder.layers.12.attn.qkv.weight": "model-00001-of-00002.safetensors",
271
- "vision_model.encoder.layers.12.ls1": "model-00001-of-00002.safetensors",
272
- "vision_model.encoder.layers.12.ls2": "model-00001-of-00002.safetensors",
273
- "vision_model.encoder.layers.12.mlp.fc1.bias": "model-00001-of-00002.safetensors",
274
- "vision_model.encoder.layers.12.mlp.fc1.weight": "model-00001-of-00002.safetensors",
275
- "vision_model.encoder.layers.12.mlp.fc2.bias": "model-00001-of-00002.safetensors",
276
- "vision_model.encoder.layers.12.mlp.fc2.weight": "model-00001-of-00002.safetensors",
277
- "vision_model.encoder.layers.12.norm1.bias": "model-00001-of-00002.safetensors",
278
- "vision_model.encoder.layers.12.norm1.weight": "model-00001-of-00002.safetensors",
279
- "vision_model.encoder.layers.12.norm2.bias": "model-00001-of-00002.safetensors",
280
- "vision_model.encoder.layers.12.norm2.weight": "model-00001-of-00002.safetensors",
281
- "vision_model.encoder.layers.13.attn.proj.bias": "model-00001-of-00002.safetensors",
282
- "vision_model.encoder.layers.13.attn.proj.weight": "model-00001-of-00002.safetensors",
283
- "vision_model.encoder.layers.13.attn.qkv.bias": "model-00001-of-00002.safetensors",
284
- "vision_model.encoder.layers.13.attn.qkv.weight": "model-00001-of-00002.safetensors",
285
- "vision_model.encoder.layers.13.ls1": "model-00001-of-00002.safetensors",
286
- "vision_model.encoder.layers.13.ls2": "model-00001-of-00002.safetensors",
287
- "vision_model.encoder.layers.13.mlp.fc1.bias": "model-00001-of-00002.safetensors",
288
- "vision_model.encoder.layers.13.mlp.fc1.weight": "model-00001-of-00002.safetensors",
289
- "vision_model.encoder.layers.13.mlp.fc2.bias": "model-00001-of-00002.safetensors",
290
- "vision_model.encoder.layers.13.mlp.fc2.weight": "model-00001-of-00002.safetensors",
291
- "vision_model.encoder.layers.13.norm1.bias": "model-00001-of-00002.safetensors",
292
- "vision_model.encoder.layers.13.norm1.weight": "model-00001-of-00002.safetensors",
293
- "vision_model.encoder.layers.13.norm2.bias": "model-00001-of-00002.safetensors",
294
- "vision_model.encoder.layers.13.norm2.weight": "model-00001-of-00002.safetensors",
295
- "vision_model.encoder.layers.14.attn.proj.bias": "model-00001-of-00002.safetensors",
296
- "vision_model.encoder.layers.14.attn.proj.weight": "model-00001-of-00002.safetensors",
297
- "vision_model.encoder.layers.14.attn.qkv.bias": "model-00001-of-00002.safetensors",
298
- "vision_model.encoder.layers.14.attn.qkv.weight": "model-00001-of-00002.safetensors",
299
- "vision_model.encoder.layers.14.ls1": "model-00001-of-00002.safetensors",
300
- "vision_model.encoder.layers.14.ls2": "model-00001-of-00002.safetensors",
301
- "vision_model.encoder.layers.14.mlp.fc1.bias": "model-00001-of-00002.safetensors",
302
- "vision_model.encoder.layers.14.mlp.fc1.weight": "model-00001-of-00002.safetensors",
303
- "vision_model.encoder.layers.14.mlp.fc2.bias": "model-00001-of-00002.safetensors",
304
- "vision_model.encoder.layers.14.mlp.fc2.weight": "model-00001-of-00002.safetensors",
305
- "vision_model.encoder.layers.14.norm1.bias": "model-00001-of-00002.safetensors",
306
- "vision_model.encoder.layers.14.norm1.weight": "model-00001-of-00002.safetensors",
307
- "vision_model.encoder.layers.14.norm2.bias": "model-00001-of-00002.safetensors",
308
- "vision_model.encoder.layers.14.norm2.weight": "model-00001-of-00002.safetensors",
309
- "vision_model.encoder.layers.15.attn.proj.bias": "model-00001-of-00002.safetensors",
310
- "vision_model.encoder.layers.15.attn.proj.weight": "model-00001-of-00002.safetensors",
311
- "vision_model.encoder.layers.15.attn.qkv.bias": "model-00001-of-00002.safetensors",
312
- "vision_model.encoder.layers.15.attn.qkv.weight": "model-00001-of-00002.safetensors",
313
- "vision_model.encoder.layers.15.ls1": "model-00001-of-00002.safetensors",
314
- "vision_model.encoder.layers.15.ls2": "model-00001-of-00002.safetensors",
315
- "vision_model.encoder.layers.15.mlp.fc1.bias": "model-00001-of-00002.safetensors",
316
- "vision_model.encoder.layers.15.mlp.fc1.weight": "model-00001-of-00002.safetensors",
317
- "vision_model.encoder.layers.15.mlp.fc2.bias": "model-00001-of-00002.safetensors",
318
- "vision_model.encoder.layers.15.mlp.fc2.weight": "model-00001-of-00002.safetensors",
319
- "vision_model.encoder.layers.15.norm1.bias": "model-00001-of-00002.safetensors",
320
- "vision_model.encoder.layers.15.norm1.weight": "model-00001-of-00002.safetensors",
321
- "vision_model.encoder.layers.15.norm2.bias": "model-00001-of-00002.safetensors",
322
- "vision_model.encoder.layers.15.norm2.weight": "model-00001-of-00002.safetensors",
323
- "vision_model.encoder.layers.16.attn.proj.bias": "model-00001-of-00002.safetensors",
324
- "vision_model.encoder.layers.16.attn.proj.weight": "model-00001-of-00002.safetensors",
325
- "vision_model.encoder.layers.16.attn.qkv.bias": "model-00001-of-00002.safetensors",
326
- "vision_model.encoder.layers.16.attn.qkv.weight": "model-00001-of-00002.safetensors",
327
- "vision_model.encoder.layers.16.ls1": "model-00001-of-00002.safetensors",
328
- "vision_model.encoder.layers.16.ls2": "model-00001-of-00002.safetensors",
329
- "vision_model.encoder.layers.16.mlp.fc1.bias": "model-00001-of-00002.safetensors",
330
- "vision_model.encoder.layers.16.mlp.fc1.weight": "model-00001-of-00002.safetensors",
331
- "vision_model.encoder.layers.16.mlp.fc2.bias": "model-00001-of-00002.safetensors",
332
- "vision_model.encoder.layers.16.mlp.fc2.weight": "model-00001-of-00002.safetensors",
333
- "vision_model.encoder.layers.16.norm1.bias": "model-00001-of-00002.safetensors",
334
- "vision_model.encoder.layers.16.norm1.weight": "model-00001-of-00002.safetensors",
335
- "vision_model.encoder.layers.16.norm2.bias": "model-00001-of-00002.safetensors",
336
- "vision_model.encoder.layers.16.norm2.weight": "model-00001-of-00002.safetensors",
337
- "vision_model.encoder.layers.17.attn.proj.bias": "model-00001-of-00002.safetensors",
338
- "vision_model.encoder.layers.17.attn.proj.weight": "model-00001-of-00002.safetensors",
339
- "vision_model.encoder.layers.17.attn.qkv.bias": "model-00001-of-00002.safetensors",
340
- "vision_model.encoder.layers.17.attn.qkv.weight": "model-00001-of-00002.safetensors",
341
- "vision_model.encoder.layers.17.ls1": "model-00001-of-00002.safetensors",
342
- "vision_model.encoder.layers.17.ls2": "model-00001-of-00002.safetensors",
343
- "vision_model.encoder.layers.17.mlp.fc1.bias": "model-00001-of-00002.safetensors",
344
- "vision_model.encoder.layers.17.mlp.fc1.weight": "model-00001-of-00002.safetensors",
345
- "vision_model.encoder.layers.17.mlp.fc2.bias": "model-00001-of-00002.safetensors",
346
- "vision_model.encoder.layers.17.mlp.fc2.weight": "model-00001-of-00002.safetensors",
347
- "vision_model.encoder.layers.17.norm1.bias": "model-00001-of-00002.safetensors",
348
- "vision_model.encoder.layers.17.norm1.weight": "model-00001-of-00002.safetensors",
349
- "vision_model.encoder.layers.17.norm2.bias": "model-00001-of-00002.safetensors",
350
- "vision_model.encoder.layers.17.norm2.weight": "model-00001-of-00002.safetensors",
351
- "vision_model.encoder.layers.18.attn.proj.bias": "model-00001-of-00002.safetensors",
352
- "vision_model.encoder.layers.18.attn.proj.weight": "model-00001-of-00002.safetensors",
353
- "vision_model.encoder.layers.18.attn.qkv.bias": "model-00001-of-00002.safetensors",
354
- "vision_model.encoder.layers.18.attn.qkv.weight": "model-00001-of-00002.safetensors",
355
- "vision_model.encoder.layers.18.ls1": "model-00001-of-00002.safetensors",
356
- "vision_model.encoder.layers.18.ls2": "model-00001-of-00002.safetensors",
357
- "vision_model.encoder.layers.18.mlp.fc1.bias": "model-00001-of-00002.safetensors",
358
- "vision_model.encoder.layers.18.mlp.fc1.weight": "model-00001-of-00002.safetensors",
359
- "vision_model.encoder.layers.18.mlp.fc2.bias": "model-00001-of-00002.safetensors",
360
- "vision_model.encoder.layers.18.mlp.fc2.weight": "model-00001-of-00002.safetensors",
361
- "vision_model.encoder.layers.18.norm1.bias": "model-00001-of-00002.safetensors",
362
- "vision_model.encoder.layers.18.norm1.weight": "model-00001-of-00002.safetensors",
363
- "vision_model.encoder.layers.18.norm2.bias": "model-00001-of-00002.safetensors",
364
- "vision_model.encoder.layers.18.norm2.weight": "model-00001-of-00002.safetensors",
365
- "vision_model.encoder.layers.19.attn.proj.bias": "model-00001-of-00002.safetensors",
366
- "vision_model.encoder.layers.19.attn.proj.weight": "model-00001-of-00002.safetensors",
367
- "vision_model.encoder.layers.19.attn.qkv.bias": "model-00001-of-00002.safetensors",
368
- "vision_model.encoder.layers.19.attn.qkv.weight": "model-00001-of-00002.safetensors",
369
- "vision_model.encoder.layers.19.ls1": "model-00001-of-00002.safetensors",
370
- "vision_model.encoder.layers.19.ls2": "model-00001-of-00002.safetensors",
371
- "vision_model.encoder.layers.19.mlp.fc1.bias": "model-00001-of-00002.safetensors",
372
- "vision_model.encoder.layers.19.mlp.fc1.weight": "model-00001-of-00002.safetensors",
373
- "vision_model.encoder.layers.19.mlp.fc2.bias": "model-00001-of-00002.safetensors",
374
- "vision_model.encoder.layers.19.mlp.fc2.weight": "model-00001-of-00002.safetensors",
375
- "vision_model.encoder.layers.19.norm1.bias": "model-00001-of-00002.safetensors",
376
- "vision_model.encoder.layers.19.norm1.weight": "model-00001-of-00002.safetensors",
377
- "vision_model.encoder.layers.19.norm2.bias": "model-00001-of-00002.safetensors",
378
- "vision_model.encoder.layers.19.norm2.weight": "model-00001-of-00002.safetensors",
379
- "vision_model.encoder.layers.2.attn.proj.bias": "model-00001-of-00002.safetensors",
380
- "vision_model.encoder.layers.2.attn.proj.weight": "model-00001-of-00002.safetensors",
381
- "vision_model.encoder.layers.2.attn.qkv.bias": "model-00001-of-00002.safetensors",
382
- "vision_model.encoder.layers.2.attn.qkv.weight": "model-00001-of-00002.safetensors",
383
- "vision_model.encoder.layers.2.ls1": "model-00001-of-00002.safetensors",
384
- "vision_model.encoder.layers.2.ls2": "model-00001-of-00002.safetensors",
385
- "vision_model.encoder.layers.2.mlp.fc1.bias": "model-00001-of-00002.safetensors",
386
- "vision_model.encoder.layers.2.mlp.fc1.weight": "model-00001-of-00002.safetensors",
387
- "vision_model.encoder.layers.2.mlp.fc2.bias": "model-00001-of-00002.safetensors",
388
- "vision_model.encoder.layers.2.mlp.fc2.weight": "model-00001-of-00002.safetensors",
389
- "vision_model.encoder.layers.2.norm1.bias": "model-00001-of-00002.safetensors",
390
- "vision_model.encoder.layers.2.norm1.weight": "model-00001-of-00002.safetensors",
391
- "vision_model.encoder.layers.2.norm2.bias": "model-00001-of-00002.safetensors",
392
- "vision_model.encoder.layers.2.norm2.weight": "model-00001-of-00002.safetensors",
393
- "vision_model.encoder.layers.20.attn.proj.bias": "model-00001-of-00002.safetensors",
394
- "vision_model.encoder.layers.20.attn.proj.weight": "model-00001-of-00002.safetensors",
395
- "vision_model.encoder.layers.20.attn.qkv.bias": "model-00001-of-00002.safetensors",
396
- "vision_model.encoder.layers.20.attn.qkv.weight": "model-00001-of-00002.safetensors",
397
- "vision_model.encoder.layers.20.ls1": "model-00001-of-00002.safetensors",
398
- "vision_model.encoder.layers.20.ls2": "model-00001-of-00002.safetensors",
399
- "vision_model.encoder.layers.20.mlp.fc1.bias": "model-00001-of-00002.safetensors",
400
- "vision_model.encoder.layers.20.mlp.fc1.weight": "model-00001-of-00002.safetensors",
401
- "vision_model.encoder.layers.20.mlp.fc2.bias": "model-00001-of-00002.safetensors",
402
- "vision_model.encoder.layers.20.mlp.fc2.weight": "model-00001-of-00002.safetensors",
403
- "vision_model.encoder.layers.20.norm1.bias": "model-00001-of-00002.safetensors",
404
- "vision_model.encoder.layers.20.norm1.weight": "model-00001-of-00002.safetensors",
405
- "vision_model.encoder.layers.20.norm2.bias": "model-00001-of-00002.safetensors",
406
- "vision_model.encoder.layers.20.norm2.weight": "model-00001-of-00002.safetensors",
407
- "vision_model.encoder.layers.21.attn.proj.bias": "model-00001-of-00002.safetensors",
408
- "vision_model.encoder.layers.21.attn.proj.weight": "model-00001-of-00002.safetensors",
409
- "vision_model.encoder.layers.21.attn.qkv.bias": "model-00001-of-00002.safetensors",
410
- "vision_model.encoder.layers.21.attn.qkv.weight": "model-00001-of-00002.safetensors",
411
- "vision_model.encoder.layers.21.ls1": "model-00001-of-00002.safetensors",
412
- "vision_model.encoder.layers.21.ls2": "model-00001-of-00002.safetensors",
413
- "vision_model.encoder.layers.21.mlp.fc1.bias": "model-00001-of-00002.safetensors",
414
- "vision_model.encoder.layers.21.mlp.fc1.weight": "model-00001-of-00002.safetensors",
415
- "vision_model.encoder.layers.21.mlp.fc2.bias": "model-00001-of-00002.safetensors",
416
- "vision_model.encoder.layers.21.mlp.fc2.weight": "model-00001-of-00002.safetensors",
417
- "vision_model.encoder.layers.21.norm1.bias": "model-00001-of-00002.safetensors",
418
- "vision_model.encoder.layers.21.norm1.weight": "model-00001-of-00002.safetensors",
419
- "vision_model.encoder.layers.21.norm2.bias": "model-00001-of-00002.safetensors",
420
- "vision_model.encoder.layers.21.norm2.weight": "model-00001-of-00002.safetensors",
421
- "vision_model.encoder.layers.22.attn.proj.bias": "model-00001-of-00002.safetensors",
422
- "vision_model.encoder.layers.22.attn.proj.weight": "model-00001-of-00002.safetensors",
423
- "vision_model.encoder.layers.22.attn.qkv.bias": "model-00001-of-00002.safetensors",
424
- "vision_model.encoder.layers.22.attn.qkv.weight": "model-00001-of-00002.safetensors",
425
- "vision_model.encoder.layers.22.ls1": "model-00001-of-00002.safetensors",
426
- "vision_model.encoder.layers.22.ls2": "model-00001-of-00002.safetensors",
427
- "vision_model.encoder.layers.22.mlp.fc1.bias": "model-00001-of-00002.safetensors",
428
- "vision_model.encoder.layers.22.mlp.fc1.weight": "model-00001-of-00002.safetensors",
429
- "vision_model.encoder.layers.22.mlp.fc2.bias": "model-00001-of-00002.safetensors",
430
- "vision_model.encoder.layers.22.mlp.fc2.weight": "model-00001-of-00002.safetensors",
431
- "vision_model.encoder.layers.22.norm1.bias": "model-00001-of-00002.safetensors",
432
- "vision_model.encoder.layers.22.norm1.weight": "model-00001-of-00002.safetensors",
433
- "vision_model.encoder.layers.22.norm2.bias": "model-00001-of-00002.safetensors",
434
- "vision_model.encoder.layers.22.norm2.weight": "model-00001-of-00002.safetensors",
435
- "vision_model.encoder.layers.23.attn.proj.bias": "model-00001-of-00002.safetensors",
436
- "vision_model.encoder.layers.23.attn.proj.weight": "model-00001-of-00002.safetensors",
437
- "vision_model.encoder.layers.23.attn.qkv.bias": "model-00001-of-00002.safetensors",
438
- "vision_model.encoder.layers.23.attn.qkv.weight": "model-00001-of-00002.safetensors",
439
- "vision_model.encoder.layers.23.ls1": "model-00001-of-00002.safetensors",
440
- "vision_model.encoder.layers.23.ls2": "model-00001-of-00002.safetensors",
441
- "vision_model.encoder.layers.23.mlp.fc1.bias": "model-00001-of-00002.safetensors",
442
- "vision_model.encoder.layers.23.mlp.fc1.weight": "model-00001-of-00002.safetensors",
443
- "vision_model.encoder.layers.23.mlp.fc2.bias": "model-00001-of-00002.safetensors",
444
- "vision_model.encoder.layers.23.mlp.fc2.weight": "model-00001-of-00002.safetensors",
445
- "vision_model.encoder.layers.23.norm1.bias": "model-00001-of-00002.safetensors",
446
- "vision_model.encoder.layers.23.norm1.weight": "model-00001-of-00002.safetensors",
447
- "vision_model.encoder.layers.23.norm2.bias": "model-00001-of-00002.safetensors",
448
- "vision_model.encoder.layers.23.norm2.weight": "model-00001-of-00002.safetensors",
449
- "vision_model.encoder.layers.3.attn.proj.bias": "model-00001-of-00002.safetensors",
450
- "vision_model.encoder.layers.3.attn.proj.weight": "model-00001-of-00002.safetensors",
451
- "vision_model.encoder.layers.3.attn.qkv.bias": "model-00001-of-00002.safetensors",
452
- "vision_model.encoder.layers.3.attn.qkv.weight": "model-00001-of-00002.safetensors",
453
- "vision_model.encoder.layers.3.ls1": "model-00001-of-00002.safetensors",
454
- "vision_model.encoder.layers.3.ls2": "model-00001-of-00002.safetensors",
455
- "vision_model.encoder.layers.3.mlp.fc1.bias": "model-00001-of-00002.safetensors",
456
- "vision_model.encoder.layers.3.mlp.fc1.weight": "model-00001-of-00002.safetensors",
457
- "vision_model.encoder.layers.3.mlp.fc2.bias": "model-00001-of-00002.safetensors",
458
- "vision_model.encoder.layers.3.mlp.fc2.weight": "model-00001-of-00002.safetensors",
459
- "vision_model.encoder.layers.3.norm1.bias": "model-00001-of-00002.safetensors",
460
- "vision_model.encoder.layers.3.norm1.weight": "model-00001-of-00002.safetensors",
461
- "vision_model.encoder.layers.3.norm2.bias": "model-00001-of-00002.safetensors",
462
- "vision_model.encoder.layers.3.norm2.weight": "model-00001-of-00002.safetensors",
463
- "vision_model.encoder.layers.4.attn.proj.bias": "model-00001-of-00002.safetensors",
464
- "vision_model.encoder.layers.4.attn.proj.weight": "model-00001-of-00002.safetensors",
465
- "vision_model.encoder.layers.4.attn.qkv.bias": "model-00001-of-00002.safetensors",
466
- "vision_model.encoder.layers.4.attn.qkv.weight": "model-00001-of-00002.safetensors",
467
- "vision_model.encoder.layers.4.ls1": "model-00001-of-00002.safetensors",
468
- "vision_model.encoder.layers.4.ls2": "model-00001-of-00002.safetensors",
469
- "vision_model.encoder.layers.4.mlp.fc1.bias": "model-00001-of-00002.safetensors",
470
- "vision_model.encoder.layers.4.mlp.fc1.weight": "model-00001-of-00002.safetensors",
471
- "vision_model.encoder.layers.4.mlp.fc2.bias": "model-00001-of-00002.safetensors",
472
- "vision_model.encoder.layers.4.mlp.fc2.weight": "model-00001-of-00002.safetensors",
473
- "vision_model.encoder.layers.4.norm1.bias": "model-00001-of-00002.safetensors",
474
- "vision_model.encoder.layers.4.norm1.weight": "model-00001-of-00002.safetensors",
475
- "vision_model.encoder.layers.4.norm2.bias": "model-00001-of-00002.safetensors",
476
- "vision_model.encoder.layers.4.norm2.weight": "model-00001-of-00002.safetensors",
477
- "vision_model.encoder.layers.5.attn.proj.bias": "model-00001-of-00002.safetensors",
478
- "vision_model.encoder.layers.5.attn.proj.weight": "model-00001-of-00002.safetensors",
479
- "vision_model.encoder.layers.5.attn.qkv.bias": "model-00001-of-00002.safetensors",
480
- "vision_model.encoder.layers.5.attn.qkv.weight": "model-00001-of-00002.safetensors",
481
- "vision_model.encoder.layers.5.ls1": "model-00001-of-00002.safetensors",
482
- "vision_model.encoder.layers.5.ls2": "model-00001-of-00002.safetensors",
483
- "vision_model.encoder.layers.5.mlp.fc1.bias": "model-00001-of-00002.safetensors",
484
- "vision_model.encoder.layers.5.mlp.fc1.weight": "model-00001-of-00002.safetensors",
485
- "vision_model.encoder.layers.5.mlp.fc2.bias": "model-00001-of-00002.safetensors",
486
- "vision_model.encoder.layers.5.mlp.fc2.weight": "model-00001-of-00002.safetensors",
487
- "vision_model.encoder.layers.5.norm1.bias": "model-00001-of-00002.safetensors",
488
- "vision_model.encoder.layers.5.norm1.weight": "model-00001-of-00002.safetensors",
489
- "vision_model.encoder.layers.5.norm2.bias": "model-00001-of-00002.safetensors",
490
- "vision_model.encoder.layers.5.norm2.weight": "model-00001-of-00002.safetensors",
491
- "vision_model.encoder.layers.6.attn.proj.bias": "model-00001-of-00002.safetensors",
492
- "vision_model.encoder.layers.6.attn.proj.weight": "model-00001-of-00002.safetensors",
493
- "vision_model.encoder.layers.6.attn.qkv.bias": "model-00001-of-00002.safetensors",
494
- "vision_model.encoder.layers.6.attn.qkv.weight": "model-00001-of-00002.safetensors",
495
- "vision_model.encoder.layers.6.ls1": "model-00001-of-00002.safetensors",
496
- "vision_model.encoder.layers.6.ls2": "model-00001-of-00002.safetensors",
497
- "vision_model.encoder.layers.6.mlp.fc1.bias": "model-00001-of-00002.safetensors",
498
- "vision_model.encoder.layers.6.mlp.fc1.weight": "model-00001-of-00002.safetensors",
499
- "vision_model.encoder.layers.6.mlp.fc2.bias": "model-00001-of-00002.safetensors",
500
- "vision_model.encoder.layers.6.mlp.fc2.weight": "model-00001-of-00002.safetensors",
501
- "vision_model.encoder.layers.6.norm1.bias": "model-00001-of-00002.safetensors",
502
- "vision_model.encoder.layers.6.norm1.weight": "model-00001-of-00002.safetensors",
503
- "vision_model.encoder.layers.6.norm2.bias": "model-00001-of-00002.safetensors",
504
- "vision_model.encoder.layers.6.norm2.weight": "model-00001-of-00002.safetensors",
505
- "vision_model.encoder.layers.7.attn.proj.bias": "model-00001-of-00002.safetensors",
506
- "vision_model.encoder.layers.7.attn.proj.weight": "model-00001-of-00002.safetensors",
507
- "vision_model.encoder.layers.7.attn.qkv.bias": "model-00001-of-00002.safetensors",
508
- "vision_model.encoder.layers.7.attn.qkv.weight": "model-00001-of-00002.safetensors",
509
- "vision_model.encoder.layers.7.ls1": "model-00001-of-00002.safetensors",
510
- "vision_model.encoder.layers.7.ls2": "model-00001-of-00002.safetensors",
511
- "vision_model.encoder.layers.7.mlp.fc1.bias": "model-00001-of-00002.safetensors",
512
- "vision_model.encoder.layers.7.mlp.fc1.weight": "model-00001-of-00002.safetensors",
513
- "vision_model.encoder.layers.7.mlp.fc2.bias": "model-00001-of-00002.safetensors",
514
- "vision_model.encoder.layers.7.mlp.fc2.weight": "model-00001-of-00002.safetensors",
515
- "vision_model.encoder.layers.7.norm1.bias": "model-00001-of-00002.safetensors",
516
- "vision_model.encoder.layers.7.norm1.weight": "model-00001-of-00002.safetensors",
517
- "vision_model.encoder.layers.7.norm2.bias": "model-00001-of-00002.safetensors",
518
- "vision_model.encoder.layers.7.norm2.weight": "model-00001-of-00002.safetensors",
519
- "vision_model.encoder.layers.8.attn.proj.bias": "model-00001-of-00002.safetensors",
520
- "vision_model.encoder.layers.8.attn.proj.weight": "model-00001-of-00002.safetensors",
521
- "vision_model.encoder.layers.8.attn.qkv.bias": "model-00001-of-00002.safetensors",
522
- "vision_model.encoder.layers.8.attn.qkv.weight": "model-00001-of-00002.safetensors",
523
- "vision_model.encoder.layers.8.ls1": "model-00001-of-00002.safetensors",
524
- "vision_model.encoder.layers.8.ls2": "model-00001-of-00002.safetensors",
525
- "vision_model.encoder.layers.8.mlp.fc1.bias": "model-00001-of-00002.safetensors",
526
- "vision_model.encoder.layers.8.mlp.fc1.weight": "model-00001-of-00002.safetensors",
527
- "vision_model.encoder.layers.8.mlp.fc2.bias": "model-00001-of-00002.safetensors",
528
- "vision_model.encoder.layers.8.mlp.fc2.weight": "model-00001-of-00002.safetensors",
529
- "vision_model.encoder.layers.8.norm1.bias": "model-00001-of-00002.safetensors",
530
- "vision_model.encoder.layers.8.norm1.weight": "model-00001-of-00002.safetensors",
531
- "vision_model.encoder.layers.8.norm2.bias": "model-00001-of-00002.safetensors",
532
- "vision_model.encoder.layers.8.norm2.weight": "model-00001-of-00002.safetensors",
533
- "vision_model.encoder.layers.9.attn.proj.bias": "model-00001-of-00002.safetensors",
534
- "vision_model.encoder.layers.9.attn.proj.weight": "model-00001-of-00002.safetensors",
535
- "vision_model.encoder.layers.9.attn.qkv.bias": "model-00001-of-00002.safetensors",
536
- "vision_model.encoder.layers.9.attn.qkv.weight": "model-00001-of-00002.safetensors",
537
- "vision_model.encoder.layers.9.ls1": "model-00001-of-00002.safetensors",
538
- "vision_model.encoder.layers.9.ls2": "model-00001-of-00002.safetensors",
539
- "vision_model.encoder.layers.9.mlp.fc1.bias": "model-00001-of-00002.safetensors",
540
- "vision_model.encoder.layers.9.mlp.fc1.weight": "model-00001-of-00002.safetensors",
541
- "vision_model.encoder.layers.9.mlp.fc2.bias": "model-00001-of-00002.safetensors",
542
- "vision_model.encoder.layers.9.mlp.fc2.weight": "model-00001-of-00002.safetensors",
543
- "vision_model.encoder.layers.9.norm1.bias": "model-00001-of-00002.safetensors",
544
- "vision_model.encoder.layers.9.norm1.weight": "model-00001-of-00002.safetensors",
545
- "vision_model.encoder.layers.9.norm2.bias": "model-00001-of-00002.safetensors",
546
- "vision_model.encoder.layers.9.norm2.weight": "model-00001-of-00002.safetensors"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
547
  }
548
  }
 
1
  {
2
  "metadata": {
3
+ "total_size": 7984928770
4
  },
5
  "weight_map": {
6
  "language_model.lm_head.weight": "model-00002-of-00002.safetensors",
 
47
  "language_model.model.layers.14.post_attention_layernorm.weight": "model-00001-of-00002.safetensors",
48
  "language_model.model.layers.14.self_attn.o_proj.weight": "model-00001-of-00002.safetensors",
49
  "language_model.model.layers.14.self_attn.qkv_proj.weight": "model-00001-of-00002.safetensors",
50
+ "language_model.model.layers.15.input_layernorm.weight": "model-00001-of-00002.safetensors",
51
+ "language_model.model.layers.15.mlp.down_proj.weight": "model-00001-of-00002.safetensors",
52
  "language_model.model.layers.15.mlp.gate_up_proj.weight": "model-00001-of-00002.safetensors",
53
+ "language_model.model.layers.15.post_attention_layernorm.weight": "model-00001-of-00002.safetensors",
54
  "language_model.model.layers.15.self_attn.o_proj.weight": "model-00001-of-00002.safetensors",
55
  "language_model.model.layers.15.self_attn.qkv_proj.weight": "model-00001-of-00002.safetensors",
56
+ "language_model.model.layers.16.input_layernorm.weight": "model-00001-of-00002.safetensors",
57
+ "language_model.model.layers.16.mlp.down_proj.weight": "model-00001-of-00002.safetensors",
58
+ "language_model.model.layers.16.mlp.gate_up_proj.weight": "model-00001-of-00002.safetensors",
59
+ "language_model.model.layers.16.post_attention_layernorm.weight": "model-00001-of-00002.safetensors",
60
+ "language_model.model.layers.16.self_attn.o_proj.weight": "model-00001-of-00002.safetensors",
61
+ "language_model.model.layers.16.self_attn.qkv_proj.weight": "model-00001-of-00002.safetensors",
62
+ "language_model.model.layers.17.input_layernorm.weight": "model-00001-of-00002.safetensors",
63
+ "language_model.model.layers.17.mlp.down_proj.weight": "model-00001-of-00002.safetensors",
64
+ "language_model.model.layers.17.mlp.gate_up_proj.weight": "model-00001-of-00002.safetensors",
65
+ "language_model.model.layers.17.post_attention_layernorm.weight": "model-00001-of-00002.safetensors",
66
+ "language_model.model.layers.17.self_attn.o_proj.weight": "model-00001-of-00002.safetensors",
67
+ "language_model.model.layers.17.self_attn.qkv_proj.weight": "model-00001-of-00002.safetensors",
68
+ "language_model.model.layers.18.input_layernorm.weight": "model-00001-of-00002.safetensors",
69
+ "language_model.model.layers.18.mlp.down_proj.weight": "model-00001-of-00002.safetensors",
70
+ "language_model.model.layers.18.mlp.gate_up_proj.weight": "model-00001-of-00002.safetensors",
71
+ "language_model.model.layers.18.post_attention_layernorm.weight": "model-00001-of-00002.safetensors",
72
+ "language_model.model.layers.18.self_attn.o_proj.weight": "model-00001-of-00002.safetensors",
73
+ "language_model.model.layers.18.self_attn.qkv_proj.weight": "model-00001-of-00002.safetensors",
74
  "language_model.model.layers.19.input_layernorm.weight": "model-00002-of-00002.safetensors",
75
  "language_model.model.layers.19.mlp.down_proj.weight": "model-00002-of-00002.safetensors",
76
+ "language_model.model.layers.19.mlp.gate_up_proj.weight": "model-00001-of-00002.safetensors",
77
  "language_model.model.layers.19.post_attention_layernorm.weight": "model-00002-of-00002.safetensors",
78
+ "language_model.model.layers.19.self_attn.o_proj.weight": "model-00001-of-00002.safetensors",
79
+ "language_model.model.layers.19.self_attn.qkv_proj.weight": "model-00001-of-00002.safetensors",
80
  "language_model.model.layers.2.input_layernorm.weight": "model-00001-of-00002.safetensors",
81
  "language_model.model.layers.2.mlp.down_proj.weight": "model-00001-of-00002.safetensors",
82
  "language_model.model.layers.2.mlp.gate_up_proj.weight": "model-00001-of-00002.safetensors",
 
204
  "mlp1.1.weight": "model-00002-of-00002.safetensors",
205
  "mlp1.3.bias": "model-00002-of-00002.safetensors",
206
  "mlp1.3.weight": "model-00002-of-00002.safetensors",
207
+ "vision_model.logit_scale": "model-00001-of-00002.safetensors",
208
+ "vision_model.text_model.embeddings.position_embedding.weight": "model-00001-of-00002.safetensors",
209
+ "vision_model.text_model.embeddings.token_embedding.weight": "model-00001-of-00002.safetensors",
210
+ "vision_model.text_model.encoder.layers.0.layer_norm1.bias": "model-00001-of-00002.safetensors",
211
+ "vision_model.text_model.encoder.layers.0.layer_norm1.weight": "model-00001-of-00002.safetensors",
212
+ "vision_model.text_model.encoder.layers.0.layer_norm2.bias": "model-00001-of-00002.safetensors",
213
+ "vision_model.text_model.encoder.layers.0.layer_norm2.weight": "model-00001-of-00002.safetensors",
214
+ "vision_model.text_model.encoder.layers.0.mlp.fc1.bias": "model-00001-of-00002.safetensors",
215
+ "vision_model.text_model.encoder.layers.0.mlp.fc1.weight": "model-00001-of-00002.safetensors",
216
+ "vision_model.text_model.encoder.layers.0.mlp.fc2.bias": "model-00001-of-00002.safetensors",
217
+ "vision_model.text_model.encoder.layers.0.mlp.fc2.weight": "model-00001-of-00002.safetensors",
218
+ "vision_model.text_model.encoder.layers.0.self_attn.k_proj.bias": "model-00001-of-00002.safetensors",
219
+ "vision_model.text_model.encoder.layers.0.self_attn.k_proj.weight": "model-00001-of-00002.safetensors",
220
+ "vision_model.text_model.encoder.layers.0.self_attn.out_proj.bias": "model-00001-of-00002.safetensors",
221
+ "vision_model.text_model.encoder.layers.0.self_attn.out_proj.weight": "model-00001-of-00002.safetensors",
222
+ "vision_model.text_model.encoder.layers.0.self_attn.q_proj.bias": "model-00001-of-00002.safetensors",
223
+ "vision_model.text_model.encoder.layers.0.self_attn.q_proj.weight": "model-00001-of-00002.safetensors",
224
+ "vision_model.text_model.encoder.layers.0.self_attn.v_proj.bias": "model-00001-of-00002.safetensors",
225
+ "vision_model.text_model.encoder.layers.0.self_attn.v_proj.weight": "model-00001-of-00002.safetensors",
226
+ "vision_model.text_model.encoder.layers.1.layer_norm1.bias": "model-00001-of-00002.safetensors",
227
+ "vision_model.text_model.encoder.layers.1.layer_norm1.weight": "model-00001-of-00002.safetensors",
228
+ "vision_model.text_model.encoder.layers.1.layer_norm2.bias": "model-00001-of-00002.safetensors",
229
+ "vision_model.text_model.encoder.layers.1.layer_norm2.weight": "model-00001-of-00002.safetensors",
230
+ "vision_model.text_model.encoder.layers.1.mlp.fc1.bias": "model-00001-of-00002.safetensors",
231
+ "vision_model.text_model.encoder.layers.1.mlp.fc1.weight": "model-00001-of-00002.safetensors",
232
+ "vision_model.text_model.encoder.layers.1.mlp.fc2.bias": "model-00001-of-00002.safetensors",
233
+ "vision_model.text_model.encoder.layers.1.mlp.fc2.weight": "model-00001-of-00002.safetensors",
234
+ "vision_model.text_model.encoder.layers.1.self_attn.k_proj.bias": "model-00001-of-00002.safetensors",
235
+ "vision_model.text_model.encoder.layers.1.self_attn.k_proj.weight": "model-00001-of-00002.safetensors",
236
+ "vision_model.text_model.encoder.layers.1.self_attn.out_proj.bias": "model-00001-of-00002.safetensors",
237
+ "vision_model.text_model.encoder.layers.1.self_attn.out_proj.weight": "model-00001-of-00002.safetensors",
238
+ "vision_model.text_model.encoder.layers.1.self_attn.q_proj.bias": "model-00001-of-00002.safetensors",
239
+ "vision_model.text_model.encoder.layers.1.self_attn.q_proj.weight": "model-00001-of-00002.safetensors",
240
+ "vision_model.text_model.encoder.layers.1.self_attn.v_proj.bias": "model-00001-of-00002.safetensors",
241
+ "vision_model.text_model.encoder.layers.1.self_attn.v_proj.weight": "model-00001-of-00002.safetensors",
242
+ "vision_model.text_model.encoder.layers.10.layer_norm1.bias": "model-00001-of-00002.safetensors",
243
+ "vision_model.text_model.encoder.layers.10.layer_norm1.weight": "model-00001-of-00002.safetensors",
244
+ "vision_model.text_model.encoder.layers.10.layer_norm2.bias": "model-00001-of-00002.safetensors",
245
+ "vision_model.text_model.encoder.layers.10.layer_norm2.weight": "model-00001-of-00002.safetensors",
246
+ "vision_model.text_model.encoder.layers.10.mlp.fc1.bias": "model-00001-of-00002.safetensors",
247
+ "vision_model.text_model.encoder.layers.10.mlp.fc1.weight": "model-00001-of-00002.safetensors",
248
+ "vision_model.text_model.encoder.layers.10.mlp.fc2.bias": "model-00001-of-00002.safetensors",
249
+ "vision_model.text_model.encoder.layers.10.mlp.fc2.weight": "model-00001-of-00002.safetensors",
250
+ "vision_model.text_model.encoder.layers.10.self_attn.k_proj.bias": "model-00001-of-00002.safetensors",
251
+ "vision_model.text_model.encoder.layers.10.self_attn.k_proj.weight": "model-00001-of-00002.safetensors",
252
+ "vision_model.text_model.encoder.layers.10.self_attn.out_proj.bias": "model-00001-of-00002.safetensors",
253
+ "vision_model.text_model.encoder.layers.10.self_attn.out_proj.weight": "model-00001-of-00002.safetensors",
254
+ "vision_model.text_model.encoder.layers.10.self_attn.q_proj.bias": "model-00001-of-00002.safetensors",
255
+ "vision_model.text_model.encoder.layers.10.self_attn.q_proj.weight": "model-00001-of-00002.safetensors",
256
+ "vision_model.text_model.encoder.layers.10.self_attn.v_proj.bias": "model-00001-of-00002.safetensors",
257
+ "vision_model.text_model.encoder.layers.10.self_attn.v_proj.weight": "model-00001-of-00002.safetensors",
258
+ "vision_model.text_model.encoder.layers.11.layer_norm1.bias": "model-00001-of-00002.safetensors",
259
+ "vision_model.text_model.encoder.layers.11.layer_norm1.weight": "model-00001-of-00002.safetensors",
260
+ "vision_model.text_model.encoder.layers.11.layer_norm2.bias": "model-00001-of-00002.safetensors",
261
+ "vision_model.text_model.encoder.layers.11.layer_norm2.weight": "model-00001-of-00002.safetensors",
262
+ "vision_model.text_model.encoder.layers.11.mlp.fc1.bias": "model-00001-of-00002.safetensors",
263
+ "vision_model.text_model.encoder.layers.11.mlp.fc1.weight": "model-00001-of-00002.safetensors",
264
+ "vision_model.text_model.encoder.layers.11.mlp.fc2.bias": "model-00001-of-00002.safetensors",
265
+ "vision_model.text_model.encoder.layers.11.mlp.fc2.weight": "model-00001-of-00002.safetensors",
266
+ "vision_model.text_model.encoder.layers.11.self_attn.k_proj.bias": "model-00001-of-00002.safetensors",
267
+ "vision_model.text_model.encoder.layers.11.self_attn.k_proj.weight": "model-00001-of-00002.safetensors",
268
+ "vision_model.text_model.encoder.layers.11.self_attn.out_proj.bias": "model-00001-of-00002.safetensors",
269
+ "vision_model.text_model.encoder.layers.11.self_attn.out_proj.weight": "model-00001-of-00002.safetensors",
270
+ "vision_model.text_model.encoder.layers.11.self_attn.q_proj.bias": "model-00001-of-00002.safetensors",
271
+ "vision_model.text_model.encoder.layers.11.self_attn.q_proj.weight": "model-00001-of-00002.safetensors",
272
+ "vision_model.text_model.encoder.layers.11.self_attn.v_proj.bias": "model-00001-of-00002.safetensors",
273
+ "vision_model.text_model.encoder.layers.11.self_attn.v_proj.weight": "model-00001-of-00002.safetensors",
274
+ "vision_model.text_model.encoder.layers.2.layer_norm1.bias": "model-00001-of-00002.safetensors",
275
+ "vision_model.text_model.encoder.layers.2.layer_norm1.weight": "model-00001-of-00002.safetensors",
276
+ "vision_model.text_model.encoder.layers.2.layer_norm2.bias": "model-00001-of-00002.safetensors",
277
+ "vision_model.text_model.encoder.layers.2.layer_norm2.weight": "model-00001-of-00002.safetensors",
278
+ "vision_model.text_model.encoder.layers.2.mlp.fc1.bias": "model-00001-of-00002.safetensors",
279
+ "vision_model.text_model.encoder.layers.2.mlp.fc1.weight": "model-00001-of-00002.safetensors",
280
+ "vision_model.text_model.encoder.layers.2.mlp.fc2.bias": "model-00001-of-00002.safetensors",
281
+ "vision_model.text_model.encoder.layers.2.mlp.fc2.weight": "model-00001-of-00002.safetensors",
282
+ "vision_model.text_model.encoder.layers.2.self_attn.k_proj.bias": "model-00001-of-00002.safetensors",
283
+ "vision_model.text_model.encoder.layers.2.self_attn.k_proj.weight": "model-00001-of-00002.safetensors",
284
+ "vision_model.text_model.encoder.layers.2.self_attn.out_proj.bias": "model-00001-of-00002.safetensors",
285
+ "vision_model.text_model.encoder.layers.2.self_attn.out_proj.weight": "model-00001-of-00002.safetensors",
286
+ "vision_model.text_model.encoder.layers.2.self_attn.q_proj.bias": "model-00001-of-00002.safetensors",
287
+ "vision_model.text_model.encoder.layers.2.self_attn.q_proj.weight": "model-00001-of-00002.safetensors",
288
+ "vision_model.text_model.encoder.layers.2.self_attn.v_proj.bias": "model-00001-of-00002.safetensors",
289
+ "vision_model.text_model.encoder.layers.2.self_attn.v_proj.weight": "model-00001-of-00002.safetensors",
290
+ "vision_model.text_model.encoder.layers.3.layer_norm1.bias": "model-00001-of-00002.safetensors",
291
+ "vision_model.text_model.encoder.layers.3.layer_norm1.weight": "model-00001-of-00002.safetensors",
292
+ "vision_model.text_model.encoder.layers.3.layer_norm2.bias": "model-00001-of-00002.safetensors",
293
+ "vision_model.text_model.encoder.layers.3.layer_norm2.weight": "model-00001-of-00002.safetensors",
294
+ "vision_model.text_model.encoder.layers.3.mlp.fc1.bias": "model-00001-of-00002.safetensors",
295
+ "vision_model.text_model.encoder.layers.3.mlp.fc1.weight": "model-00001-of-00002.safetensors",
296
+ "vision_model.text_model.encoder.layers.3.mlp.fc2.bias": "model-00001-of-00002.safetensors",
297
+ "vision_model.text_model.encoder.layers.3.mlp.fc2.weight": "model-00001-of-00002.safetensors",
298
+ "vision_model.text_model.encoder.layers.3.self_attn.k_proj.bias": "model-00001-of-00002.safetensors",
299
+ "vision_model.text_model.encoder.layers.3.self_attn.k_proj.weight": "model-00001-of-00002.safetensors",
300
+ "vision_model.text_model.encoder.layers.3.self_attn.out_proj.bias": "model-00001-of-00002.safetensors",
301
+ "vision_model.text_model.encoder.layers.3.self_attn.out_proj.weight": "model-00001-of-00002.safetensors",
302
+ "vision_model.text_model.encoder.layers.3.self_attn.q_proj.bias": "model-00001-of-00002.safetensors",
303
+ "vision_model.text_model.encoder.layers.3.self_attn.q_proj.weight": "model-00001-of-00002.safetensors",
304
+ "vision_model.text_model.encoder.layers.3.self_attn.v_proj.bias": "model-00001-of-00002.safetensors",
305
+ "vision_model.text_model.encoder.layers.3.self_attn.v_proj.weight": "model-00001-of-00002.safetensors",
306
+ "vision_model.text_model.encoder.layers.4.layer_norm1.bias": "model-00001-of-00002.safetensors",
307
+ "vision_model.text_model.encoder.layers.4.layer_norm1.weight": "model-00001-of-00002.safetensors",
308
+ "vision_model.text_model.encoder.layers.4.layer_norm2.bias": "model-00001-of-00002.safetensors",
309
+ "vision_model.text_model.encoder.layers.4.layer_norm2.weight": "model-00001-of-00002.safetensors",
310
+ "vision_model.text_model.encoder.layers.4.mlp.fc1.bias": "model-00001-of-00002.safetensors",
311
+ "vision_model.text_model.encoder.layers.4.mlp.fc1.weight": "model-00001-of-00002.safetensors",
312
+ "vision_model.text_model.encoder.layers.4.mlp.fc2.bias": "model-00001-of-00002.safetensors",
313
+ "vision_model.text_model.encoder.layers.4.mlp.fc2.weight": "model-00001-of-00002.safetensors",
314
+ "vision_model.text_model.encoder.layers.4.self_attn.k_proj.bias": "model-00001-of-00002.safetensors",
315
+ "vision_model.text_model.encoder.layers.4.self_attn.k_proj.weight": "model-00001-of-00002.safetensors",
316
+ "vision_model.text_model.encoder.layers.4.self_attn.out_proj.bias": "model-00001-of-00002.safetensors",
317
+ "vision_model.text_model.encoder.layers.4.self_attn.out_proj.weight": "model-00001-of-00002.safetensors",
318
+ "vision_model.text_model.encoder.layers.4.self_attn.q_proj.bias": "model-00001-of-00002.safetensors",
319
+ "vision_model.text_model.encoder.layers.4.self_attn.q_proj.weight": "model-00001-of-00002.safetensors",
320
+ "vision_model.text_model.encoder.layers.4.self_attn.v_proj.bias": "model-00001-of-00002.safetensors",
321
+ "vision_model.text_model.encoder.layers.4.self_attn.v_proj.weight": "model-00001-of-00002.safetensors",
322
+ "vision_model.text_model.encoder.layers.5.layer_norm1.bias": "model-00001-of-00002.safetensors",
323
+ "vision_model.text_model.encoder.layers.5.layer_norm1.weight": "model-00001-of-00002.safetensors",
324
+ "vision_model.text_model.encoder.layers.5.layer_norm2.bias": "model-00001-of-00002.safetensors",
325
+ "vision_model.text_model.encoder.layers.5.layer_norm2.weight": "model-00001-of-00002.safetensors",
326
+ "vision_model.text_model.encoder.layers.5.mlp.fc1.bias": "model-00001-of-00002.safetensors",
327
+ "vision_model.text_model.encoder.layers.5.mlp.fc1.weight": "model-00001-of-00002.safetensors",
328
+ "vision_model.text_model.encoder.layers.5.mlp.fc2.bias": "model-00001-of-00002.safetensors",
329
+ "vision_model.text_model.encoder.layers.5.mlp.fc2.weight": "model-00001-of-00002.safetensors",
330
+ "vision_model.text_model.encoder.layers.5.self_attn.k_proj.bias": "model-00001-of-00002.safetensors",
331
+ "vision_model.text_model.encoder.layers.5.self_attn.k_proj.weight": "model-00001-of-00002.safetensors",
332
+ "vision_model.text_model.encoder.layers.5.self_attn.out_proj.bias": "model-00001-of-00002.safetensors",
333
+ "vision_model.text_model.encoder.layers.5.self_attn.out_proj.weight": "model-00001-of-00002.safetensors",
334
+ "vision_model.text_model.encoder.layers.5.self_attn.q_proj.bias": "model-00001-of-00002.safetensors",
335
+ "vision_model.text_model.encoder.layers.5.self_attn.q_proj.weight": "model-00001-of-00002.safetensors",
336
+ "vision_model.text_model.encoder.layers.5.self_attn.v_proj.bias": "model-00001-of-00002.safetensors",
337
+ "vision_model.text_model.encoder.layers.5.self_attn.v_proj.weight": "model-00001-of-00002.safetensors",
338
+ "vision_model.text_model.encoder.layers.6.layer_norm1.bias": "model-00001-of-00002.safetensors",
339
+ "vision_model.text_model.encoder.layers.6.layer_norm1.weight": "model-00001-of-00002.safetensors",
340
+ "vision_model.text_model.encoder.layers.6.layer_norm2.bias": "model-00001-of-00002.safetensors",
341
+ "vision_model.text_model.encoder.layers.6.layer_norm2.weight": "model-00001-of-00002.safetensors",
342
+ "vision_model.text_model.encoder.layers.6.mlp.fc1.bias": "model-00001-of-00002.safetensors",
343
+ "vision_model.text_model.encoder.layers.6.mlp.fc1.weight": "model-00001-of-00002.safetensors",
344
+ "vision_model.text_model.encoder.layers.6.mlp.fc2.bias": "model-00001-of-00002.safetensors",
345
+ "vision_model.text_model.encoder.layers.6.mlp.fc2.weight": "model-00001-of-00002.safetensors",
346
+ "vision_model.text_model.encoder.layers.6.self_attn.k_proj.bias": "model-00001-of-00002.safetensors",
347
+ "vision_model.text_model.encoder.layers.6.self_attn.k_proj.weight": "model-00001-of-00002.safetensors",
348
+ "vision_model.text_model.encoder.layers.6.self_attn.out_proj.bias": "model-00001-of-00002.safetensors",
349
+ "vision_model.text_model.encoder.layers.6.self_attn.out_proj.weight": "model-00001-of-00002.safetensors",
350
+ "vision_model.text_model.encoder.layers.6.self_attn.q_proj.bias": "model-00001-of-00002.safetensors",
351
+ "vision_model.text_model.encoder.layers.6.self_attn.q_proj.weight": "model-00001-of-00002.safetensors",
352
+ "vision_model.text_model.encoder.layers.6.self_attn.v_proj.bias": "model-00001-of-00002.safetensors",
353
+ "vision_model.text_model.encoder.layers.6.self_attn.v_proj.weight": "model-00001-of-00002.safetensors",
354
+ "vision_model.text_model.encoder.layers.7.layer_norm1.bias": "model-00001-of-00002.safetensors",
355
+ "vision_model.text_model.encoder.layers.7.layer_norm1.weight": "model-00001-of-00002.safetensors",
356
+ "vision_model.text_model.encoder.layers.7.layer_norm2.bias": "model-00001-of-00002.safetensors",
357
+ "vision_model.text_model.encoder.layers.7.layer_norm2.weight": "model-00001-of-00002.safetensors",
358
+ "vision_model.text_model.encoder.layers.7.mlp.fc1.bias": "model-00001-of-00002.safetensors",
359
+ "vision_model.text_model.encoder.layers.7.mlp.fc1.weight": "model-00001-of-00002.safetensors",
360
+ "vision_model.text_model.encoder.layers.7.mlp.fc2.bias": "model-00001-of-00002.safetensors",
361
+ "vision_model.text_model.encoder.layers.7.mlp.fc2.weight": "model-00001-of-00002.safetensors",
362
+ "vision_model.text_model.encoder.layers.7.self_attn.k_proj.bias": "model-00001-of-00002.safetensors",
363
+ "vision_model.text_model.encoder.layers.7.self_attn.k_proj.weight": "model-00001-of-00002.safetensors",
364
+ "vision_model.text_model.encoder.layers.7.self_attn.out_proj.bias": "model-00001-of-00002.safetensors",
365
+ "vision_model.text_model.encoder.layers.7.self_attn.out_proj.weight": "model-00001-of-00002.safetensors",
366
+ "vision_model.text_model.encoder.layers.7.self_attn.q_proj.bias": "model-00001-of-00002.safetensors",
367
+ "vision_model.text_model.encoder.layers.7.self_attn.q_proj.weight": "model-00001-of-00002.safetensors",
368
+ "vision_model.text_model.encoder.layers.7.self_attn.v_proj.bias": "model-00001-of-00002.safetensors",
369
+ "vision_model.text_model.encoder.layers.7.self_attn.v_proj.weight": "model-00001-of-00002.safetensors",
370
+ "vision_model.text_model.encoder.layers.8.layer_norm1.bias": "model-00001-of-00002.safetensors",
371
+ "vision_model.text_model.encoder.layers.8.layer_norm1.weight": "model-00001-of-00002.safetensors",
372
+ "vision_model.text_model.encoder.layers.8.layer_norm2.bias": "model-00001-of-00002.safetensors",
373
+ "vision_model.text_model.encoder.layers.8.layer_norm2.weight": "model-00001-of-00002.safetensors",
374
+ "vision_model.text_model.encoder.layers.8.mlp.fc1.bias": "model-00001-of-00002.safetensors",
375
+ "vision_model.text_model.encoder.layers.8.mlp.fc1.weight": "model-00001-of-00002.safetensors",
376
+ "vision_model.text_model.encoder.layers.8.mlp.fc2.bias": "model-00001-of-00002.safetensors",
377
+ "vision_model.text_model.encoder.layers.8.mlp.fc2.weight": "model-00001-of-00002.safetensors",
378
+ "vision_model.text_model.encoder.layers.8.self_attn.k_proj.bias": "model-00001-of-00002.safetensors",
379
+ "vision_model.text_model.encoder.layers.8.self_attn.k_proj.weight": "model-00001-of-00002.safetensors",
380
+ "vision_model.text_model.encoder.layers.8.self_attn.out_proj.bias": "model-00001-of-00002.safetensors",
381
+ "vision_model.text_model.encoder.layers.8.self_attn.out_proj.weight": "model-00001-of-00002.safetensors",
382
+ "vision_model.text_model.encoder.layers.8.self_attn.q_proj.bias": "model-00001-of-00002.safetensors",
383
+ "vision_model.text_model.encoder.layers.8.self_attn.q_proj.weight": "model-00001-of-00002.safetensors",
384
+ "vision_model.text_model.encoder.layers.8.self_attn.v_proj.bias": "model-00001-of-00002.safetensors",
385
+ "vision_model.text_model.encoder.layers.8.self_attn.v_proj.weight": "model-00001-of-00002.safetensors",
386
+ "vision_model.text_model.encoder.layers.9.layer_norm1.bias": "model-00001-of-00002.safetensors",
387
+ "vision_model.text_model.encoder.layers.9.layer_norm1.weight": "model-00001-of-00002.safetensors",
388
+ "vision_model.text_model.encoder.layers.9.layer_norm2.bias": "model-00001-of-00002.safetensors",
389
+ "vision_model.text_model.encoder.layers.9.layer_norm2.weight": "model-00001-of-00002.safetensors",
390
+ "vision_model.text_model.encoder.layers.9.mlp.fc1.bias": "model-00001-of-00002.safetensors",
391
+ "vision_model.text_model.encoder.layers.9.mlp.fc1.weight": "model-00001-of-00002.safetensors",
392
+ "vision_model.text_model.encoder.layers.9.mlp.fc2.bias": "model-00001-of-00002.safetensors",
393
+ "vision_model.text_model.encoder.layers.9.mlp.fc2.weight": "model-00001-of-00002.safetensors",
394
+ "vision_model.text_model.encoder.layers.9.self_attn.k_proj.bias": "model-00001-of-00002.safetensors",
395
+ "vision_model.text_model.encoder.layers.9.self_attn.k_proj.weight": "model-00001-of-00002.safetensors",
396
+ "vision_model.text_model.encoder.layers.9.self_attn.out_proj.bias": "model-00001-of-00002.safetensors",
397
+ "vision_model.text_model.encoder.layers.9.self_attn.out_proj.weight": "model-00001-of-00002.safetensors",
398
+ "vision_model.text_model.encoder.layers.9.self_attn.q_proj.bias": "model-00001-of-00002.safetensors",
399
+ "vision_model.text_model.encoder.layers.9.self_attn.q_proj.weight": "model-00001-of-00002.safetensors",
400
+ "vision_model.text_model.encoder.layers.9.self_attn.v_proj.bias": "model-00001-of-00002.safetensors",
401
+ "vision_model.text_model.encoder.layers.9.self_attn.v_proj.weight": "model-00001-of-00002.safetensors",
402
+ "vision_model.text_model.final_layer_norm.bias": "model-00001-of-00002.safetensors",
403
+ "vision_model.text_model.final_layer_norm.weight": "model-00001-of-00002.safetensors",
404
+ "vision_model.text_projection.weight": "model-00001-of-00002.safetensors",
405
+ "vision_model.vision_model.embeddings.class_embedding": "model-00001-of-00002.safetensors",
406
+ "vision_model.vision_model.embeddings.patch_embedding.weight": "model-00001-of-00002.safetensors",
407
+ "vision_model.vision_model.embeddings.position_embedding.weight": "model-00001-of-00002.safetensors",
408
+ "vision_model.vision_model.encoder.layers.0.layer_norm1.bias": "model-00001-of-00002.safetensors",
409
+ "vision_model.vision_model.encoder.layers.0.layer_norm1.weight": "model-00001-of-00002.safetensors",
410
+ "vision_model.vision_model.encoder.layers.0.layer_norm2.bias": "model-00001-of-00002.safetensors",
411
+ "vision_model.vision_model.encoder.layers.0.layer_norm2.weight": "model-00001-of-00002.safetensors",
412
+ "vision_model.vision_model.encoder.layers.0.mlp.fc1.bias": "model-00001-of-00002.safetensors",
413
+ "vision_model.vision_model.encoder.layers.0.mlp.fc1.weight": "model-00001-of-00002.safetensors",
414
+ "vision_model.vision_model.encoder.layers.0.mlp.fc2.bias": "model-00001-of-00002.safetensors",
415
+ "vision_model.vision_model.encoder.layers.0.mlp.fc2.weight": "model-00001-of-00002.safetensors",
416
+ "vision_model.vision_model.encoder.layers.0.self_attn.k_proj.bias": "model-00001-of-00002.safetensors",
417
+ "vision_model.vision_model.encoder.layers.0.self_attn.k_proj.weight": "model-00001-of-00002.safetensors",
418
+ "vision_model.vision_model.encoder.layers.0.self_attn.out_proj.bias": "model-00001-of-00002.safetensors",
419
+ "vision_model.vision_model.encoder.layers.0.self_attn.out_proj.weight": "model-00001-of-00002.safetensors",
420
+ "vision_model.vision_model.encoder.layers.0.self_attn.q_proj.bias": "model-00001-of-00002.safetensors",
421
+ "vision_model.vision_model.encoder.layers.0.self_attn.q_proj.weight": "model-00001-of-00002.safetensors",
422
+ "vision_model.vision_model.encoder.layers.0.self_attn.v_proj.bias": "model-00001-of-00002.safetensors",
423
+ "vision_model.vision_model.encoder.layers.0.self_attn.v_proj.weight": "model-00001-of-00002.safetensors",
424
+ "vision_model.vision_model.encoder.layers.1.layer_norm1.bias": "model-00001-of-00002.safetensors",
425
+ "vision_model.vision_model.encoder.layers.1.layer_norm1.weight": "model-00001-of-00002.safetensors",
426
+ "vision_model.vision_model.encoder.layers.1.layer_norm2.bias": "model-00001-of-00002.safetensors",
427
+ "vision_model.vision_model.encoder.layers.1.layer_norm2.weight": "model-00001-of-00002.safetensors",
428
+ "vision_model.vision_model.encoder.layers.1.mlp.fc1.bias": "model-00001-of-00002.safetensors",
429
+ "vision_model.vision_model.encoder.layers.1.mlp.fc1.weight": "model-00001-of-00002.safetensors",
430
+ "vision_model.vision_model.encoder.layers.1.mlp.fc2.bias": "model-00001-of-00002.safetensors",
431
+ "vision_model.vision_model.encoder.layers.1.mlp.fc2.weight": "model-00001-of-00002.safetensors",
432
+ "vision_model.vision_model.encoder.layers.1.self_attn.k_proj.bias": "model-00001-of-00002.safetensors",
433
+ "vision_model.vision_model.encoder.layers.1.self_attn.k_proj.weight": "model-00001-of-00002.safetensors",
434
+ "vision_model.vision_model.encoder.layers.1.self_attn.out_proj.bias": "model-00001-of-00002.safetensors",
435
+ "vision_model.vision_model.encoder.layers.1.self_attn.out_proj.weight": "model-00001-of-00002.safetensors",
436
+ "vision_model.vision_model.encoder.layers.1.self_attn.q_proj.bias": "model-00001-of-00002.safetensors",
437
+ "vision_model.vision_model.encoder.layers.1.self_attn.q_proj.weight": "model-00001-of-00002.safetensors",
438
+ "vision_model.vision_model.encoder.layers.1.self_attn.v_proj.bias": "model-00001-of-00002.safetensors",
439
+ "vision_model.vision_model.encoder.layers.1.self_attn.v_proj.weight": "model-00001-of-00002.safetensors",
440
+ "vision_model.vision_model.encoder.layers.10.layer_norm1.bias": "model-00001-of-00002.safetensors",
441
+ "vision_model.vision_model.encoder.layers.10.layer_norm1.weight": "model-00001-of-00002.safetensors",
442
+ "vision_model.vision_model.encoder.layers.10.layer_norm2.bias": "model-00001-of-00002.safetensors",
443
+ "vision_model.vision_model.encoder.layers.10.layer_norm2.weight": "model-00001-of-00002.safetensors",
444
+ "vision_model.vision_model.encoder.layers.10.mlp.fc1.bias": "model-00001-of-00002.safetensors",
445
+ "vision_model.vision_model.encoder.layers.10.mlp.fc1.weight": "model-00001-of-00002.safetensors",
446
+ "vision_model.vision_model.encoder.layers.10.mlp.fc2.bias": "model-00001-of-00002.safetensors",
447
+ "vision_model.vision_model.encoder.layers.10.mlp.fc2.weight": "model-00001-of-00002.safetensors",
448
+ "vision_model.vision_model.encoder.layers.10.self_attn.k_proj.bias": "model-00001-of-00002.safetensors",
449
+ "vision_model.vision_model.encoder.layers.10.self_attn.k_proj.weight": "model-00001-of-00002.safetensors",
450
+ "vision_model.vision_model.encoder.layers.10.self_attn.out_proj.bias": "model-00001-of-00002.safetensors",
451
+ "vision_model.vision_model.encoder.layers.10.self_attn.out_proj.weight": "model-00001-of-00002.safetensors",
452
+ "vision_model.vision_model.encoder.layers.10.self_attn.q_proj.bias": "model-00001-of-00002.safetensors",
453
+ "vision_model.vision_model.encoder.layers.10.self_attn.q_proj.weight": "model-00001-of-00002.safetensors",
454
+ "vision_model.vision_model.encoder.layers.10.self_attn.v_proj.bias": "model-00001-of-00002.safetensors",
455
+ "vision_model.vision_model.encoder.layers.10.self_attn.v_proj.weight": "model-00001-of-00002.safetensors",
456
+ "vision_model.vision_model.encoder.layers.11.layer_norm1.bias": "model-00001-of-00002.safetensors",
457
+ "vision_model.vision_model.encoder.layers.11.layer_norm1.weight": "model-00001-of-00002.safetensors",
458
+ "vision_model.vision_model.encoder.layers.11.layer_norm2.bias": "model-00001-of-00002.safetensors",
459
+ "vision_model.vision_model.encoder.layers.11.layer_norm2.weight": "model-00001-of-00002.safetensors",
460
+ "vision_model.vision_model.encoder.layers.11.mlp.fc1.bias": "model-00001-of-00002.safetensors",
461
+ "vision_model.vision_model.encoder.layers.11.mlp.fc1.weight": "model-00001-of-00002.safetensors",
462
+ "vision_model.vision_model.encoder.layers.11.mlp.fc2.bias": "model-00001-of-00002.safetensors",
463
+ "vision_model.vision_model.encoder.layers.11.mlp.fc2.weight": "model-00001-of-00002.safetensors",
464
+ "vision_model.vision_model.encoder.layers.11.self_attn.k_proj.bias": "model-00001-of-00002.safetensors",
465
+ "vision_model.vision_model.encoder.layers.11.self_attn.k_proj.weight": "model-00001-of-00002.safetensors",
466
+ "vision_model.vision_model.encoder.layers.11.self_attn.out_proj.bias": "model-00001-of-00002.safetensors",
467
+ "vision_model.vision_model.encoder.layers.11.self_attn.out_proj.weight": "model-00001-of-00002.safetensors",
468
+ "vision_model.vision_model.encoder.layers.11.self_attn.q_proj.bias": "model-00001-of-00002.safetensors",
469
+ "vision_model.vision_model.encoder.layers.11.self_attn.q_proj.weight": "model-00001-of-00002.safetensors",
470
+ "vision_model.vision_model.encoder.layers.11.self_attn.v_proj.bias": "model-00001-of-00002.safetensors",
471
+ "vision_model.vision_model.encoder.layers.11.self_attn.v_proj.weight": "model-00001-of-00002.safetensors",
472
+ "vision_model.vision_model.encoder.layers.2.layer_norm1.bias": "model-00001-of-00002.safetensors",
473
+ "vision_model.vision_model.encoder.layers.2.layer_norm1.weight": "model-00001-of-00002.safetensors",
474
+ "vision_model.vision_model.encoder.layers.2.layer_norm2.bias": "model-00001-of-00002.safetensors",
475
+ "vision_model.vision_model.encoder.layers.2.layer_norm2.weight": "model-00001-of-00002.safetensors",
476
+ "vision_model.vision_model.encoder.layers.2.mlp.fc1.bias": "model-00001-of-00002.safetensors",
477
+ "vision_model.vision_model.encoder.layers.2.mlp.fc1.weight": "model-00001-of-00002.safetensors",
478
+ "vision_model.vision_model.encoder.layers.2.mlp.fc2.bias": "model-00001-of-00002.safetensors",
479
+ "vision_model.vision_model.encoder.layers.2.mlp.fc2.weight": "model-00001-of-00002.safetensors",
480
+ "vision_model.vision_model.encoder.layers.2.self_attn.k_proj.bias": "model-00001-of-00002.safetensors",
481
+ "vision_model.vision_model.encoder.layers.2.self_attn.k_proj.weight": "model-00001-of-00002.safetensors",
482
+ "vision_model.vision_model.encoder.layers.2.self_attn.out_proj.bias": "model-00001-of-00002.safetensors",
483
+ "vision_model.vision_model.encoder.layers.2.self_attn.out_proj.weight": "model-00001-of-00002.safetensors",
484
+ "vision_model.vision_model.encoder.layers.2.self_attn.q_proj.bias": "model-00001-of-00002.safetensors",
485
+ "vision_model.vision_model.encoder.layers.2.self_attn.q_proj.weight": "model-00001-of-00002.safetensors",
486
+ "vision_model.vision_model.encoder.layers.2.self_attn.v_proj.bias": "model-00001-of-00002.safetensors",
487
+ "vision_model.vision_model.encoder.layers.2.self_attn.v_proj.weight": "model-00001-of-00002.safetensors",
488
+ "vision_model.vision_model.encoder.layers.3.layer_norm1.bias": "model-00001-of-00002.safetensors",
489
+ "vision_model.vision_model.encoder.layers.3.layer_norm1.weight": "model-00001-of-00002.safetensors",
490
+ "vision_model.vision_model.encoder.layers.3.layer_norm2.bias": "model-00001-of-00002.safetensors",
491
+ "vision_model.vision_model.encoder.layers.3.layer_norm2.weight": "model-00001-of-00002.safetensors",
492
+ "vision_model.vision_model.encoder.layers.3.mlp.fc1.bias": "model-00001-of-00002.safetensors",
493
+ "vision_model.vision_model.encoder.layers.3.mlp.fc1.weight": "model-00001-of-00002.safetensors",
494
+ "vision_model.vision_model.encoder.layers.3.mlp.fc2.bias": "model-00001-of-00002.safetensors",
495
+ "vision_model.vision_model.encoder.layers.3.mlp.fc2.weight": "model-00001-of-00002.safetensors",
496
+ "vision_model.vision_model.encoder.layers.3.self_attn.k_proj.bias": "model-00001-of-00002.safetensors",
497
+ "vision_model.vision_model.encoder.layers.3.self_attn.k_proj.weight": "model-00001-of-00002.safetensors",
498
+ "vision_model.vision_model.encoder.layers.3.self_attn.out_proj.bias": "model-00001-of-00002.safetensors",
499
+ "vision_model.vision_model.encoder.layers.3.self_attn.out_proj.weight": "model-00001-of-00002.safetensors",
500
+ "vision_model.vision_model.encoder.layers.3.self_attn.q_proj.bias": "model-00001-of-00002.safetensors",
501
+ "vision_model.vision_model.encoder.layers.3.self_attn.q_proj.weight": "model-00001-of-00002.safetensors",
502
+ "vision_model.vision_model.encoder.layers.3.self_attn.v_proj.bias": "model-00001-of-00002.safetensors",
503
+ "vision_model.vision_model.encoder.layers.3.self_attn.v_proj.weight": "model-00001-of-00002.safetensors",
504
+ "vision_model.vision_model.encoder.layers.4.layer_norm1.bias": "model-00001-of-00002.safetensors",
505
+ "vision_model.vision_model.encoder.layers.4.layer_norm1.weight": "model-00001-of-00002.safetensors",
506
+ "vision_model.vision_model.encoder.layers.4.layer_norm2.bias": "model-00001-of-00002.safetensors",
507
+ "vision_model.vision_model.encoder.layers.4.layer_norm2.weight": "model-00001-of-00002.safetensors",
508
+ "vision_model.vision_model.encoder.layers.4.mlp.fc1.bias": "model-00001-of-00002.safetensors",
509
+ "vision_model.vision_model.encoder.layers.4.mlp.fc1.weight": "model-00001-of-00002.safetensors",
510
+ "vision_model.vision_model.encoder.layers.4.mlp.fc2.bias": "model-00001-of-00002.safetensors",
511
+ "vision_model.vision_model.encoder.layers.4.mlp.fc2.weight": "model-00001-of-00002.safetensors",
512
+ "vision_model.vision_model.encoder.layers.4.self_attn.k_proj.bias": "model-00001-of-00002.safetensors",
513
+ "vision_model.vision_model.encoder.layers.4.self_attn.k_proj.weight": "model-00001-of-00002.safetensors",
514
+ "vision_model.vision_model.encoder.layers.4.self_attn.out_proj.bias": "model-00001-of-00002.safetensors",
515
+ "vision_model.vision_model.encoder.layers.4.self_attn.out_proj.weight": "model-00001-of-00002.safetensors",
516
+ "vision_model.vision_model.encoder.layers.4.self_attn.q_proj.bias": "model-00001-of-00002.safetensors",
517
+ "vision_model.vision_model.encoder.layers.4.self_attn.q_proj.weight": "model-00001-of-00002.safetensors",
518
+ "vision_model.vision_model.encoder.layers.4.self_attn.v_proj.bias": "model-00001-of-00002.safetensors",
519
+ "vision_model.vision_model.encoder.layers.4.self_attn.v_proj.weight": "model-00001-of-00002.safetensors",
520
+ "vision_model.vision_model.encoder.layers.5.layer_norm1.bias": "model-00001-of-00002.safetensors",
521
+ "vision_model.vision_model.encoder.layers.5.layer_norm1.weight": "model-00001-of-00002.safetensors",
522
+ "vision_model.vision_model.encoder.layers.5.layer_norm2.bias": "model-00001-of-00002.safetensors",
523
+ "vision_model.vision_model.encoder.layers.5.layer_norm2.weight": "model-00001-of-00002.safetensors",
524
+ "vision_model.vision_model.encoder.layers.5.mlp.fc1.bias": "model-00001-of-00002.safetensors",
525
+ "vision_model.vision_model.encoder.layers.5.mlp.fc1.weight": "model-00001-of-00002.safetensors",
526
+ "vision_model.vision_model.encoder.layers.5.mlp.fc2.bias": "model-00001-of-00002.safetensors",
527
+ "vision_model.vision_model.encoder.layers.5.mlp.fc2.weight": "model-00001-of-00002.safetensors",
528
+ "vision_model.vision_model.encoder.layers.5.self_attn.k_proj.bias": "model-00001-of-00002.safetensors",
529
+ "vision_model.vision_model.encoder.layers.5.self_attn.k_proj.weight": "model-00001-of-00002.safetensors",
530
+ "vision_model.vision_model.encoder.layers.5.self_attn.out_proj.bias": "model-00001-of-00002.safetensors",
531
+ "vision_model.vision_model.encoder.layers.5.self_attn.out_proj.weight": "model-00001-of-00002.safetensors",
532
+ "vision_model.vision_model.encoder.layers.5.self_attn.q_proj.bias": "model-00001-of-00002.safetensors",
533
+ "vision_model.vision_model.encoder.layers.5.self_attn.q_proj.weight": "model-00001-of-00002.safetensors",
534
+ "vision_model.vision_model.encoder.layers.5.self_attn.v_proj.bias": "model-00001-of-00002.safetensors",
535
+ "vision_model.vision_model.encoder.layers.5.self_attn.v_proj.weight": "model-00001-of-00002.safetensors",
536
+ "vision_model.vision_model.encoder.layers.6.layer_norm1.bias": "model-00001-of-00002.safetensors",
537
+ "vision_model.vision_model.encoder.layers.6.layer_norm1.weight": "model-00001-of-00002.safetensors",
538
+ "vision_model.vision_model.encoder.layers.6.layer_norm2.bias": "model-00001-of-00002.safetensors",
539
+ "vision_model.vision_model.encoder.layers.6.layer_norm2.weight": "model-00001-of-00002.safetensors",
540
+ "vision_model.vision_model.encoder.layers.6.mlp.fc1.bias": "model-00001-of-00002.safetensors",
541
+ "vision_model.vision_model.encoder.layers.6.mlp.fc1.weight": "model-00001-of-00002.safetensors",
542
+ "vision_model.vision_model.encoder.layers.6.mlp.fc2.bias": "model-00001-of-00002.safetensors",
543
+ "vision_model.vision_model.encoder.layers.6.mlp.fc2.weight": "model-00001-of-00002.safetensors",
544
+ "vision_model.vision_model.encoder.layers.6.self_attn.k_proj.bias": "model-00001-of-00002.safetensors",
545
+ "vision_model.vision_model.encoder.layers.6.self_attn.k_proj.weight": "model-00001-of-00002.safetensors",
546
+ "vision_model.vision_model.encoder.layers.6.self_attn.out_proj.bias": "model-00001-of-00002.safetensors",
547
+ "vision_model.vision_model.encoder.layers.6.self_attn.out_proj.weight": "model-00001-of-00002.safetensors",
548
+ "vision_model.vision_model.encoder.layers.6.self_attn.q_proj.bias": "model-00001-of-00002.safetensors",
549
+ "vision_model.vision_model.encoder.layers.6.self_attn.q_proj.weight": "model-00001-of-00002.safetensors",
550
+ "vision_model.vision_model.encoder.layers.6.self_attn.v_proj.bias": "model-00001-of-00002.safetensors",
551
+ "vision_model.vision_model.encoder.layers.6.self_attn.v_proj.weight": "model-00001-of-00002.safetensors",
552
+ "vision_model.vision_model.encoder.layers.7.layer_norm1.bias": "model-00001-of-00002.safetensors",
553
+ "vision_model.vision_model.encoder.layers.7.layer_norm1.weight": "model-00001-of-00002.safetensors",
554
+ "vision_model.vision_model.encoder.layers.7.layer_norm2.bias": "model-00001-of-00002.safetensors",
555
+ "vision_model.vision_model.encoder.layers.7.layer_norm2.weight": "model-00001-of-00002.safetensors",
556
+ "vision_model.vision_model.encoder.layers.7.mlp.fc1.bias": "model-00001-of-00002.safetensors",
557
+ "vision_model.vision_model.encoder.layers.7.mlp.fc1.weight": "model-00001-of-00002.safetensors",
558
+ "vision_model.vision_model.encoder.layers.7.mlp.fc2.bias": "model-00001-of-00002.safetensors",
559
+ "vision_model.vision_model.encoder.layers.7.mlp.fc2.weight": "model-00001-of-00002.safetensors",
560
+ "vision_model.vision_model.encoder.layers.7.self_attn.k_proj.bias": "model-00001-of-00002.safetensors",
561
+ "vision_model.vision_model.encoder.layers.7.self_attn.k_proj.weight": "model-00001-of-00002.safetensors",
562
+ "vision_model.vision_model.encoder.layers.7.self_attn.out_proj.bias": "model-00001-of-00002.safetensors",
563
+ "vision_model.vision_model.encoder.layers.7.self_attn.out_proj.weight": "model-00001-of-00002.safetensors",
564
+ "vision_model.vision_model.encoder.layers.7.self_attn.q_proj.bias": "model-00001-of-00002.safetensors",
565
+ "vision_model.vision_model.encoder.layers.7.self_attn.q_proj.weight": "model-00001-of-00002.safetensors",
566
+ "vision_model.vision_model.encoder.layers.7.self_attn.v_proj.bias": "model-00001-of-00002.safetensors",
567
+ "vision_model.vision_model.encoder.layers.7.self_attn.v_proj.weight": "model-00001-of-00002.safetensors",
568
+ "vision_model.vision_model.encoder.layers.8.layer_norm1.bias": "model-00001-of-00002.safetensors",
569
+ "vision_model.vision_model.encoder.layers.8.layer_norm1.weight": "model-00001-of-00002.safetensors",
570
+ "vision_model.vision_model.encoder.layers.8.layer_norm2.bias": "model-00001-of-00002.safetensors",
571
+ "vision_model.vision_model.encoder.layers.8.layer_norm2.weight": "model-00001-of-00002.safetensors",
572
+ "vision_model.vision_model.encoder.layers.8.mlp.fc1.bias": "model-00001-of-00002.safetensors",
573
+ "vision_model.vision_model.encoder.layers.8.mlp.fc1.weight": "model-00001-of-00002.safetensors",
574
+ "vision_model.vision_model.encoder.layers.8.mlp.fc2.bias": "model-00001-of-00002.safetensors",
575
+ "vision_model.vision_model.encoder.layers.8.mlp.fc2.weight": "model-00001-of-00002.safetensors",
576
+ "vision_model.vision_model.encoder.layers.8.self_attn.k_proj.bias": "model-00001-of-00002.safetensors",
577
+ "vision_model.vision_model.encoder.layers.8.self_attn.k_proj.weight": "model-00001-of-00002.safetensors",
578
+ "vision_model.vision_model.encoder.layers.8.self_attn.out_proj.bias": "model-00001-of-00002.safetensors",
579
+ "vision_model.vision_model.encoder.layers.8.self_attn.out_proj.weight": "model-00001-of-00002.safetensors",
580
+ "vision_model.vision_model.encoder.layers.8.self_attn.q_proj.bias": "model-00001-of-00002.safetensors",
581
+ "vision_model.vision_model.encoder.layers.8.self_attn.q_proj.weight": "model-00001-of-00002.safetensors",
582
+ "vision_model.vision_model.encoder.layers.8.self_attn.v_proj.bias": "model-00001-of-00002.safetensors",
583
+ "vision_model.vision_model.encoder.layers.8.self_attn.v_proj.weight": "model-00001-of-00002.safetensors",
584
+ "vision_model.vision_model.encoder.layers.9.layer_norm1.bias": "model-00001-of-00002.safetensors",
585
+ "vision_model.vision_model.encoder.layers.9.layer_norm1.weight": "model-00001-of-00002.safetensors",
586
+ "vision_model.vision_model.encoder.layers.9.layer_norm2.bias": "model-00001-of-00002.safetensors",
587
+ "vision_model.vision_model.encoder.layers.9.layer_norm2.weight": "model-00001-of-00002.safetensors",
588
+ "vision_model.vision_model.encoder.layers.9.mlp.fc1.bias": "model-00001-of-00002.safetensors",
589
+ "vision_model.vision_model.encoder.layers.9.mlp.fc1.weight": "model-00001-of-00002.safetensors",
590
+ "vision_model.vision_model.encoder.layers.9.mlp.fc2.bias": "model-00001-of-00002.safetensors",
591
+ "vision_model.vision_model.encoder.layers.9.mlp.fc2.weight": "model-00001-of-00002.safetensors",
592
+ "vision_model.vision_model.encoder.layers.9.self_attn.k_proj.bias": "model-00001-of-00002.safetensors",
593
+ "vision_model.vision_model.encoder.layers.9.self_attn.k_proj.weight": "model-00001-of-00002.safetensors",
594
+ "vision_model.vision_model.encoder.layers.9.self_attn.out_proj.bias": "model-00001-of-00002.safetensors",
595
+ "vision_model.vision_model.encoder.layers.9.self_attn.out_proj.weight": "model-00001-of-00002.safetensors",
596
+ "vision_model.vision_model.encoder.layers.9.self_attn.q_proj.bias": "model-00001-of-00002.safetensors",
597
+ "vision_model.vision_model.encoder.layers.9.self_attn.q_proj.weight": "model-00001-of-00002.safetensors",
598
+ "vision_model.vision_model.encoder.layers.9.self_attn.v_proj.bias": "model-00001-of-00002.safetensors",
599
+ "vision_model.vision_model.encoder.layers.9.self_attn.v_proj.weight": "model-00001-of-00002.safetensors",
600
+ "vision_model.vision_model.post_layernorm.bias": "model-00001-of-00002.safetensors",
601
+ "vision_model.vision_model.post_layernorm.weight": "model-00001-of-00002.safetensors",
602
+ "vision_model.vision_model.pre_layrnorm.bias": "model-00001-of-00002.safetensors",
603
+ "vision_model.vision_model.pre_layrnorm.weight": "model-00001-of-00002.safetensors",
604
+ "vision_model.visual_projection.weight": "model-00001-of-00002.safetensors"
605
  }
606
  }