Wenhao Chai commited on
Upload folder using huggingface_hub
Browse files- llm/pytorch_model-00001-of-00007.bin +1 -1
- llm/pytorch_model-00002-of-00007.bin +1 -1
- llm/pytorch_model-00003-of-00007.bin +1 -1
- llm/pytorch_model-00004-of-00007.bin +1 -1
- llm/pytorch_model-00005-of-00007.bin +1 -1
- llm/pytorch_model-00006-of-00007.bin +1 -1
- llm/pytorch_model-00007-of-00007.bin +1 -1
- llm_adapter/adapter_config.json +5 -5
- llm_adapter/adapter_model.safetensors +2 -2
- projector/config.json +1 -1
- projector/configuration_projector.py +3 -3
- projector/model.safetensors +1 -1
- projector/modeling_projector.py +14 -4
- visual_encoder_adapter/adapter_config.json +7 -7
- visual_encoder_adapter/adapter_model.safetensors +1 -1
- vit/pytorch_model-00001-of-00002.bin +1 -1
- vit/pytorch_model-00002-of-00002.bin +1 -1
- xtuner_config.py +34 -48
llm/pytorch_model-00001-of-00007.bin
CHANGED
|
@@ -1,3 +1,3 @@
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
-
oid sha256:
|
| 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:
|
| 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:
|
| 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:
|
| 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:
|
| 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:
|
| 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:
|
| 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 |
-
"
|
|
|
|
| 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:
|
| 3 |
-
size
|
|
|
|
| 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.
|
| 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 =
|
| 7 |
-
_auto_class =
|
| 8 |
|
| 9 |
def __init__(
|
| 10 |
self,
|
| 11 |
visual_hidden_size=4096,
|
| 12 |
llm_hidden_size=4096,
|
| 13 |
depth=2,
|
| 14 |
-
hidden_act=
|
| 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:
|
| 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 =
|
| 12 |
config_class = ProjectorConfig
|
| 13 |
-
base_model_prefix =
|
| 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 |
for _ in range(1, config.depth):
|
| 22 |
modules.append(ACT2FN[config.hidden_act])
|
| 23 |
-
modules.append(
|
|
|
|
|
|
|
|
|
|
|
|
|
| 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": "
|
| 5 |
-
"parent_library": "
|
| 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 |
-
"
|
| 26 |
-
"fc1",
|
| 27 |
-
"fc2",
|
| 28 |
-
"q_proj",
|
| 29 |
"v_proj",
|
| 30 |
-
"
|
|
|
|
|
|
|
|
|
|
| 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:
|
| 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:
|
| 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:
|
| 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
|
| 14 |
from xtuner.dataset.collate_fns import default_collate_fn
|
| 15 |
-
from xtuner.dataset.map_fns import
|
| 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
|
| 29 |
-
|
| 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 |
-
|
|
|
|
|
|
|
| 42 |
dataloader_num_workers = 0
|
| 43 |
max_epochs = 1
|
| 44 |
optim_type = AdamW
|
| 45 |
betas = (0.9, 0.999)
|
| 46 |
-
weight_decay = 0
|
| 47 |
max_norm = 1 # grad clip
|
| 48 |
warmup_ratio = 0.03
|
| 49 |
|
| 50 |
# Save
|
| 51 |
-
save_steps =
|
| 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 |
-
|
| 98 |
-
|
| 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,
|
| 103 |
-
|
| 104 |
-
|
|
|
|
|
|
|
| 105 |
|
| 106 |
#######################################################################
|
| 107 |
# PART 3 Dataset & Dataloader #
|
| 108 |
#######################################################################
|
| 109 |
-
|
| 110 |
type=PikaDataset,
|
| 111 |
-
data_path='./data/image_finetune/
|
| 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=
|
| 120 |
-
keep_aspect_ratio=True,)
|
| 121 |
|
| 122 |
-
|
| 123 |
-
type=
|
| 124 |
-
data_path='./data/
|
| 125 |
-
image_folder='./data/
|
| 126 |
tokenizer=tokenizer,
|
| 127 |
image_processor=image_processor,
|
| 128 |
-
dataset_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=
|
| 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 |
-
|
| 141 |
-
|
| 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 =
|
| 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 |
-
|
| 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 |
)
|