Wenhao Chai commited on
Commit
074be2a
·
verified ·
1 Parent(s): 17d6fb8

Upload folder using huggingface_hub

Browse files
llm/pytorch_model-00001-of-00007.bin CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:a5f0930d41985d7ad41560deae0b420fde08ea1137eb5e8e7ae17ed8d959347d
3
  size 1981888506
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:4e83c8a2e1c83cac5c02700fee9f8d8cdf31dd51128c0f614999bd1280a5aefe
3
  size 1981888506
llm/pytorch_model-00002-of-00007.bin CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:a537aeaafb0642be98e293759ad6228d35e2a0dcd5256d4e545944e9cb7f14b9
3
  size 1990294914
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:95e117d72fb03ae823be4040c9fd4f2b9817e54328a31f84a38b1c050fb1e963
3
  size 1990294914
llm/pytorch_model-00003-of-00007.bin CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:3f369b5b02edb0620b9a8b089aeb6bfe8b65d417c135c0636e1ebe45a3dbbf67
3
  size 1990294978
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:7f4ce65e7ec6b1f299b339a4660d353c6c86e355b0fec1493e40321b1b86ad03
3
  size 1990294978
llm/pytorch_model-00004-of-00007.bin CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:491c8f011be678033613b5a757d25478ae9356d3d0f489711d16ce13be0c0124
3
  size 1990294978
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:fee1b5e20770d6f38de8335ca66644e0de85cb50d0b5cffe0dd6be0aff238f44
3
  size 1990294978
llm/pytorch_model-00005-of-00007.bin CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:be5d1457665213cbe6d5ba068150530f73043e15e002680bba5caff93fd618b3
3
  size 1933654814
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:700f668f047af3dc5cf1b0eb700efdb0f09a57706d20a032d7bd439222d443e9
3
  size 1933654814
llm/pytorch_model-00006-of-00007.bin CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:3fbb83efac542fc219cebdfd00f1cb6a51e03928d87a7d140e7abd0ed57f711b
3
  size 1933671874
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:67d5fd38199a8a2d56df205f0a94705820e40d65ccb1d56d4dde8c5e74dc558f
3
  size 1933671874
llm/pytorch_model-00007-of-00007.bin CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:e015ce0ac5f9db55a5c21fc17a0b7502b8caa47d2f2d70f571335a5d04e3adaa
3
  size 1656835708
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:93501e5be8e09559a7f20625b2823556029e2909b5a8f3f1f00be4f90c2256a2
3
  size 1656835708
llm_adapter/adapter_config.json CHANGED
@@ -19,13 +19,13 @@
19
  "rank_pattern": {},
20
  "revision": null,
21
  "target_modules": [
22
- "k_proj",
23
- "q_proj",
24
- "up_proj",
25
- "v_proj",
26
  "down_proj",
 
 
 
27
  "gate_proj",
28
- "o_proj"
 
29
  ],
30
  "task_type": "CAUSAL_LM"
31
  }
 
19
  "rank_pattern": {},
20
  "revision": null,
21
  "target_modules": [
 
 
 
 
22
  "down_proj",
23
+ "o_proj",
24
+ "v_proj",
25
+ "k_proj",
26
  "gate_proj",
27
+ "q_proj",
28
+ "up_proj"
29
  ],
30
  "task_type": "CAUSAL_LM"
31
  }
llm_adapter/adapter_model.safetensors CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:2d6c537e3423a9fe2e02094b3b3996a86c25aa59b033231b682ad2da630c4e1f
3
- size 2558587064
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:c4216459ad2469202617dc90cb224205bd94c4739e7ff8fb62656a96824fb260
3
+ size 5117112704
projector/config.json CHANGED
@@ -12,6 +12,6 @@
12
  "llm_hidden_size": 4096,
13
  "model_type": "projector",
14
  "torch_dtype": "float32",
15
- "transformers_version": "4.37.2",
16
  "visual_hidden_size": 1280
17
  }
 
12
  "llm_hidden_size": 4096,
13
  "model_type": "projector",
14
  "torch_dtype": "float32",
15
+ "transformers_version": "4.36.0",
16
  "visual_hidden_size": 1280
17
  }
projector/configuration_projector.py CHANGED
@@ -3,15 +3,15 @@ from transformers import PretrainedConfig
3
 
4
 
5
  class ProjectorConfig(PretrainedConfig):
6
- model_type = "projector"
7
- _auto_class = "AutoConfig"
8
 
9
  def __init__(
10
  self,
11
  visual_hidden_size=4096,
12
  llm_hidden_size=4096,
13
  depth=2,
14
- hidden_act="gelu",
15
  bias=True,
16
  **kwargs,
17
  ):
 
3
 
4
 
5
  class ProjectorConfig(PretrainedConfig):
6
+ model_type = 'projector'
7
+ _auto_class = 'AutoConfig'
8
 
9
  def __init__(
10
  self,
11
  visual_hidden_size=4096,
12
  llm_hidden_size=4096,
13
  depth=2,
14
+ hidden_act='gelu',
15
  bias=True,
16
  **kwargs,
17
  ):
projector/model.safetensors CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:a2b805fdce8968993d54e23535ff93f113833a35d6c3b629e82ce7fcbf2943c5
3
  size 88113520
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:c40017f84bedabb816693b968bb900dae725ffc7f528d08857878c559333b6be
3
  size 88113520
projector/modeling_projector.py CHANGED
@@ -8,22 +8,32 @@ from .configuration_projector import ProjectorConfig
8
 
9
 
10
  class ProjectorModel(PreTrainedModel):
11
- _auto_class = "AutoModel"
12
  config_class = ProjectorConfig
13
- base_model_prefix = "model"
14
  supports_gradient_checkpointing = True
15
 
16
  def __init__(self, config: ProjectorConfig) -> None:
17
  super().__init__(config)
18
  self.gradient_checkpointing = False
19
 
20
- modules = [nn.Linear(config.visual_hidden_size, config.llm_hidden_size, bias=config.bias)]
 
 
 
 
 
21
  for _ in range(1, config.depth):
22
  modules.append(ACT2FN[config.hidden_act])
23
- modules.append(nn.Linear(config.llm_hidden_size, config.llm_hidden_size, bias=config.bias))
 
 
 
 
24
  self.model = nn.Sequential(*modules)
25
 
26
  def enable_input_require_grads(self):
 
27
  def make_inputs_require_grad(module, input, output):
28
  output.requires_grad_(True)
29
 
 
8
 
9
 
10
  class ProjectorModel(PreTrainedModel):
11
+ _auto_class = 'AutoModel'
12
  config_class = ProjectorConfig
13
+ base_model_prefix = 'model'
14
  supports_gradient_checkpointing = True
15
 
16
  def __init__(self, config: ProjectorConfig) -> None:
17
  super().__init__(config)
18
  self.gradient_checkpointing = False
19
 
20
+ modules = [
21
+ nn.Linear(
22
+ config.visual_hidden_size,
23
+ config.llm_hidden_size,
24
+ bias=config.bias)
25
+ ]
26
  for _ in range(1, config.depth):
27
  modules.append(ACT2FN[config.hidden_act])
28
+ modules.append(
29
+ nn.Linear(
30
+ config.llm_hidden_size,
31
+ config.llm_hidden_size,
32
+ bias=config.bias))
33
  self.model = nn.Sequential(*modules)
34
 
35
  def enable_input_require_grads(self):
36
+
37
  def make_inputs_require_grad(module, input, output):
38
  output.requires_grad_(True)
39
 
visual_encoder_adapter/adapter_config.json CHANGED
@@ -1,8 +1,8 @@
1
  {
2
  "alpha_pattern": {},
3
  "auto_mapping": {
4
- "base_model_class": "PikaVidEncoder",
5
- "parent_library": "xtuner.model.video_encoder"
6
  },
7
  "base_model_name_or_path": "apple/DFN5B-CLIP-ViT-H-14-378",
8
  "bias": "none",
@@ -22,12 +22,12 @@
22
  "rank_pattern": {},
23
  "revision": null,
24
  "target_modules": [
25
- "k_proj",
26
- "fc1",
27
- "fc2",
28
- "q_proj",
29
  "v_proj",
30
- "out_proj"
 
 
 
31
  ],
32
  "task_type": null
33
  }
 
1
  {
2
  "alpha_pattern": {},
3
  "auto_mapping": {
4
+ "base_model_class": "CLIPVisionModel",
5
+ "parent_library": "transformers.models.clip.modeling_clip"
6
  },
7
  "base_model_name_or_path": "apple/DFN5B-CLIP-ViT-H-14-378",
8
  "bias": "none",
 
22
  "rank_pattern": {},
23
  "revision": null,
24
  "target_modules": [
25
+ "out_proj",
 
 
 
26
  "v_proj",
27
+ "fc2",
28
+ "fc1",
29
+ "k_proj",
30
+ "q_proj"
31
  ],
32
  "task_type": null
33
  }
visual_encoder_adapter/adapter_model.safetensors CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:07d6cc5058d81b85ce7c06affe42ba6c3f7724178cbdef6efb773c4e92003c51
3
  size 188800496
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:4b81100bd35ffb606df0c90d891101a91702187b14e26b2a90a992fcc62b4b35
3
  size 188800496
vit/pytorch_model-00001-of-00002.bin CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:8b57623d22174038e0d60e66f4b0c64b834e88d7d3159f10ea2ae02213b67cb7
3
  size 1994332295
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:e83332b08213c772e3c8521ca232dc2caee9b8020806fa1fcc99452eb1bedad3
3
  size 1994332295
vit/pytorch_model-00002-of-00002.bin CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:2d2af6f3129761250a4b0be44b53fbd4aef509cd897c6c8484c723cc69acd82f
3
  size 531341514
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:8803b92607c955a45712573659b2e85a0490285d5fde7ec148489ad3e5036126
3
  size 531341514
xtuner_config.py CHANGED
@@ -7,48 +7,44 @@ from transformers import (AutoModelForCausalLM, AutoTokenizer,
7
  BitsAndBytesConfig,
8
  CLIPImageProcessor, CLIPVisionModel)
9
  from mmengine.optim import AmpOptimWrapper, CosineAnnealingLR, LinearLR
 
10
  from peft import LoraConfig
11
- from math import sqrt
12
  from torch.optim import AdamW
13
- from xtuner.dataset import VideoDataset, PikaDataset, ConcatDataset, ShareGPTVideoDataset
14
  from xtuner.dataset.collate_fns import default_collate_fn
15
- from xtuner.dataset.map_fns import llava_video_map_fn, llava_map_fn, pika_map_fn, template_map_fn_factory
16
  from xtuner.dataset.samplers import LengthGroupedSampler
17
  from xtuner.engine import DatasetInfoHook, EvaluateChatHook
18
  from xtuner.model import PikaModel, PikaVidEncoder
19
  from xtuner.utils import PROMPT_TEMPLATE
20
 
21
-
22
  #######################################################################
23
  # PART 1 Settings #
24
  #######################################################################
25
  # Model
26
  llm_name_or_path = 'lmsys/vicuna-7b-v1.5-16k'
27
  visual_encoder_name_or_path = 'apple/DFN5B-CLIP-ViT-H-14-378'
28
- # Specify the s3 pretrained pth
29
- # pretrained_pth = './work_dirs/7b_16k_s4_cont/iter_2000.pth'
30
- pretrained_pth = 'work_dirs/7b_16k_s5/iter_800.pth'
31
- prompt_template = PROMPT_TEMPLATE.vicuna
32
 
 
 
33
  size = 378
34
- # None for sampling all the video frames
35
- n_sample_frames = 32
36
- visual_token_merge_ratio = 0.1
37
- accumulative_counts = 32
38
- lr = 1e-4
39
- batch_size = 1 # per_device can only be set to 1 to support image and video mix training
40
 
41
- max_length = 4096
 
 
42
  dataloader_num_workers = 0
43
  max_epochs = 1
44
  optim_type = AdamW
45
  betas = (0.9, 0.999)
46
- weight_decay = 0.1
47
  max_norm = 1 # grad clip
48
  warmup_ratio = 0.03
49
 
50
  # Save
51
- save_steps = 200
52
  save_total_limit = 2 # Maximum checkpoints to keep (-1 means unlimited)
53
 
54
  #######################################################################
@@ -94,21 +90,21 @@ model = dict(
94
  bias='none',
95
  task_type='CAUSAL_LM'),
96
  visual_encoder=dict(
97
- # type=CLIPVisionModel.from_pretrained,
98
- type=PikaVidEncoder.from_pretrained,
99
- pretrained_model_name_or_path=visual_encoder_name_or_path,
100
- visual_token_merge_ratio=visual_token_merge_ratio),
101
  visual_encoder_lora=dict(
102
- type=LoraConfig, r=64, lora_alpha=16, lora_dropout=0.05, bias='none'),
103
- )
104
-
 
 
105
 
106
  #######################################################################
107
  # PART 3 Dataset & Dataloader #
108
  #######################################################################
109
- allava_image_caption_dataset = dict(
110
  type=PikaDataset,
111
- data_path='./data/image_finetune/ALLaVA-Caption-LAION-4V',
112
  image_folder='./data/image_data',
113
  tokenizer=tokenizer,
114
  image_processor=image_processor,
@@ -116,40 +112,35 @@ allava_image_caption_dataset = dict(
116
  template_map_fn=dict(
117
  type=template_map_fn_factory, template=prompt_template),
118
  max_length=max_length,
119
- pad_image_to_square=False,
120
- keep_aspect_ratio=True,)
121
 
122
- sharegpt4v_video_caption_dataset = dict(
123
- type=ShareGPTVideoDataset,
124
- data_path='./data/video_finetune/sharegptvideo_caption_full_frame',
125
- image_folder='./data/video_data/sharegptvideo_900k',
126
  tokenizer=tokenizer,
127
  image_processor=image_processor,
128
- dataset_map_fn=llava_video_map_fn,
129
  template_map_fn=dict(
130
  type=template_map_fn_factory, template=prompt_template),
131
  max_length=max_length,
132
- pad_image_to_square=False,
133
- frame_number=n_sample_frames,
134
- keep_aspect_ratio=True,)
135
 
136
- # mix video and image
137
  train_dataset = dict(
138
  type=ConcatDataset,
139
  datasets=[
140
- allava_image_caption_dataset,
141
- sharegpt4v_video_caption_dataset,
142
- ])
143
 
144
  train_dataloader = dict(
145
  batch_size=batch_size,
146
  num_workers=dataloader_num_workers,
147
  dataset=train_dataset,
 
148
  # sampler=dict(
149
  # type=LengthGroupedSampler,
150
  # length_property='modality_length',
151
  # per_device_batch_size=batch_size * accumulative_counts),
152
- sampler=dict(type=DefaultSampler, shuffle=True),
153
  collate_fn=dict(type=default_collate_fn))
154
 
155
  #######################################################################
@@ -191,7 +182,7 @@ train_cfg = dict(by_epoch=True, max_epochs=max_epochs, val_interval=1)
191
  # PART 5 Runtime #
192
  #######################################################################
193
  # Evaluate the generation performance during the training
194
- evaluation_freq = 500
195
  SYSTEM = ''
196
  evaluation_images = 'https://llava-vl.github.io/static/images/view.jpg'
197
  evaluation_inputs = ['请描述一下这张照片', 'Please describe this picture']
@@ -220,12 +211,7 @@ default_hooks = dict(
220
  # enable the parameter scheduler.
221
  param_scheduler=dict(type=ParamSchedulerHook),
222
  # save checkpoint per epoch.
223
- # checkpoint=dict(type=CheckpointHook, interval=1),
224
- checkpoint=dict(
225
- type=CheckpointHook,
226
- by_epoch=False,
227
- interval=save_steps,
228
- max_keep_ckpts=save_total_limit),
229
  # set sampler seed in distributed evrionment.
230
  sampler_seed=dict(type=DistSamplerSeedHook),
231
  )
 
7
  BitsAndBytesConfig,
8
  CLIPImageProcessor, CLIPVisionModel)
9
  from mmengine.optim import AmpOptimWrapper, CosineAnnealingLR, LinearLR
10
+
11
  from peft import LoraConfig
 
12
  from torch.optim import AdamW
13
+ from xtuner.dataset import PikaDataset, ConcatDataset
14
  from xtuner.dataset.collate_fns import default_collate_fn
15
+ from xtuner.dataset.map_fns import llava_map_fn, m3it_map_fn, template_map_fn_factory
16
  from xtuner.dataset.samplers import LengthGroupedSampler
17
  from xtuner.engine import DatasetInfoHook, EvaluateChatHook
18
  from xtuner.model import PikaModel, PikaVidEncoder
19
  from xtuner.utils import PROMPT_TEMPLATE
20
 
21
+
22
  #######################################################################
23
  # PART 1 Settings #
24
  #######################################################################
25
  # Model
26
  llm_name_or_path = 'lmsys/vicuna-7b-v1.5-16k'
27
  visual_encoder_name_or_path = 'apple/DFN5B-CLIP-ViT-H-14-378'
28
+ # Specify the s2 pretrained pth
29
+ pretrained_pth = 'work_dirs/7b_16k_s2/epoch_1.pth'
 
 
30
 
31
+ prompt_template = PROMPT_TEMPLATE.vicuna
32
+ max_length = 4096
33
  size = 378
 
 
 
 
 
 
34
 
35
+ batch_size = 16 # per_device
36
+ accumulative_counts = 1
37
+ lr = 2e-4
38
  dataloader_num_workers = 0
39
  max_epochs = 1
40
  optim_type = AdamW
41
  betas = (0.9, 0.999)
42
+ weight_decay = 0
43
  max_norm = 1 # grad clip
44
  warmup_ratio = 0.03
45
 
46
  # Save
47
+ save_steps = 100
48
  save_total_limit = 2 # Maximum checkpoints to keep (-1 means unlimited)
49
 
50
  #######################################################################
 
90
  bias='none',
91
  task_type='CAUSAL_LM'),
92
  visual_encoder=dict(
93
+ type=CLIPVisionModel.from_pretrained,
94
+ pretrained_model_name_or_path=visual_encoder_name_or_path),
 
 
95
  visual_encoder_lora=dict(
96
+ type=LoraConfig,
97
+ r=64,
98
+ lora_alpha=16,
99
+ lora_dropout=0.05,
100
+ bias='none'))
101
 
102
  #######################################################################
103
  # PART 3 Dataset & Dataloader #
104
  #######################################################################
105
+ llava_dataset = dict(
106
  type=PikaDataset,
107
+ data_path='./data/image_finetune/llava_v1_5_mix665k',
108
  image_folder='./data/image_data',
109
  tokenizer=tokenizer,
110
  image_processor=image_processor,
 
112
  template_map_fn=dict(
113
  type=template_map_fn_factory, template=prompt_template),
114
  max_length=max_length,
115
+ pad_image_to_square=True)
 
116
 
117
+ train_dataset = dict(
118
+ type=PikaDataset,
119
+ data_path='./data/stage_3_part2',
120
+ image_folder='./data/image_data',
121
  tokenizer=tokenizer,
122
  image_processor=image_processor,
123
+ dataset_map_fn=llava_map_fn,
124
  template_map_fn=dict(
125
  type=template_map_fn_factory, template=prompt_template),
126
  max_length=max_length,
127
+ pad_image_to_square=True)
 
 
128
 
 
129
  train_dataset = dict(
130
  type=ConcatDataset,
131
  datasets=[
132
+ llava_dataset,
133
+ train_dataset])
 
134
 
135
  train_dataloader = dict(
136
  batch_size=batch_size,
137
  num_workers=dataloader_num_workers,
138
  dataset=train_dataset,
139
+ sampler=dict(type=DefaultSampler, shuffle=True),
140
  # sampler=dict(
141
  # type=LengthGroupedSampler,
142
  # length_property='modality_length',
143
  # per_device_batch_size=batch_size * accumulative_counts),
 
144
  collate_fn=dict(type=default_collate_fn))
145
 
146
  #######################################################################
 
182
  # PART 5 Runtime #
183
  #######################################################################
184
  # Evaluate the generation performance during the training
185
+ evaluation_freq = 100
186
  SYSTEM = ''
187
  evaluation_images = 'https://llava-vl.github.io/static/images/view.jpg'
188
  evaluation_inputs = ['请描述一下这张照片', 'Please describe this picture']
 
211
  # enable the parameter scheduler.
212
  param_scheduler=dict(type=ParamSchedulerHook),
213
  # save checkpoint per epoch.
214
+ checkpoint=dict(type=CheckpointHook, interval=1),
 
 
 
 
 
215
  # set sampler seed in distributed evrionment.
216
  sampler_seed=dict(type=DistSamplerSeedHook),
217
  )