Upyaya commited on
Commit
21ac435
1 Parent(s): d849557

Upload app.py, models and requirement file

Browse files
app.py ADDED
@@ -0,0 +1,61 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from transformers import Blip2ForConditionalGeneration
2
+ from transformers import Blip2Processor
3
+ from peft import PeftModel, PeftConfig
4
+ import streamlit as st
5
+ from PIL import Image
6
+ import torch
7
+
8
+ preprocess_ckp = "Salesforce/blip2-opt-2.7b" #Checkpoint path used for perprocess image
9
+ base_model_ckp = "/model/blip2-opt-2.7b-fp16-sharded" #Base model checkpoint path
10
+ peft_model_ckp = "/model/blip2_peft" #PEFT model checkpoint path
11
+
12
+ init_model_required = True
13
+ processor = None
14
+ model = None
15
+
16
+ def init_model():
17
+
18
+ if init_model_required:
19
+
20
+ #Preprocess input
21
+ processor = Blip2Processor.from_pretrained(preprocess_ckp)
22
+
23
+ #Model
24
+ model = Blip2ForConditionalGeneration.from_pretrained(base_model_ckp, load_in_8bit = True, device_map = "auto")
25
+ model = PeftModel.from_pretrained(model, peft_model_ckp)
26
+
27
+ init_model_required = False
28
+
29
+
30
+
31
+ def main():
32
+
33
+ st.title("Fashion Image Caption using BLIP2")
34
+
35
+ init_model()
36
+
37
+ file_name = st.file_uploader("Upload image")
38
+
39
+ if file_name is not None:
40
+
41
+ image_col, caption_text = st.columns(2)
42
+
43
+ image_col.header("Image")
44
+ image = Image.open(file_name)
45
+ image_col.image(image, use_column_width = True)
46
+
47
+ #Preprocess the image
48
+ inputs = processor(images = image, return_tensors = "pt").to('cuda', torch.float16)
49
+ pixel_values = inputs.pixel_values
50
+
51
+ #Predict the caption for the imahe
52
+ generated_ids = model.generate(pixel_values = pixel_values, max_length = 25)
53
+ generated_caption = processor.batch_decode(generated_ids, skip_special_tokens=True)[0]
54
+
55
+ #Output the predict text
56
+ caption_text.header("Generated Caption")
57
+ caption_text.text(generated_caption)
58
+
59
+
60
+ if __name__ == "__main__":
61
+ main()
model/blip2-opt-2.7b-fp16-sharded/config.json ADDED
@@ -0,0 +1,256 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "_commit_hash": "56e1fe81e7e7c346e95e196ace7b442b3f8ff483",
3
+ "_name_or_path": "Salesforce/blip2-opt-2.7b",
4
+ "architectures": [
5
+ "Blip2ForConditionalGeneration"
6
+ ],
7
+ "initializer_factor": 1.0,
8
+ "initializer_range": 0.02,
9
+ "model_type": "blip-2",
10
+ "num_query_tokens": 32,
11
+ "qformer_config": {
12
+ "_name_or_path": "",
13
+ "add_cross_attention": false,
14
+ "architectures": null,
15
+ "attention_probs_dropout_prob": 0.1,
16
+ "bad_words_ids": null,
17
+ "begin_suppress_tokens": null,
18
+ "bos_token_id": null,
19
+ "chunk_size_feed_forward": 0,
20
+ "classifier_dropout": null,
21
+ "cross_attention_frequency": 2,
22
+ "cross_attention_hidden_size": null,
23
+ "decoder_start_token_id": null,
24
+ "diversity_penalty": 0.0,
25
+ "do_sample": false,
26
+ "early_stopping": false,
27
+ "encoder_hidden_size": 1408,
28
+ "encoder_no_repeat_ngram_size": 0,
29
+ "eos_token_id": null,
30
+ "exponential_decay_length_penalty": null,
31
+ "finetuning_task": null,
32
+ "forced_bos_token_id": null,
33
+ "forced_eos_token_id": null,
34
+ "hidden_act": "gelu",
35
+ "hidden_dropout_prob": 0.1,
36
+ "hidden_size": 768,
37
+ "id2label": {
38
+ "0": "LABEL_0",
39
+ "1": "LABEL_1"
40
+ },
41
+ "initializer_range": 0.02,
42
+ "intermediate_size": 3072,
43
+ "is_decoder": false,
44
+ "is_encoder_decoder": false,
45
+ "label2id": {
46
+ "LABEL_0": 0,
47
+ "LABEL_1": 1
48
+ },
49
+ "layer_norm_eps": 1e-12,
50
+ "length_penalty": 1.0,
51
+ "max_length": 20,
52
+ "max_position_embeddings": 512,
53
+ "min_length": 0,
54
+ "model_type": "blip_2_qformer",
55
+ "no_repeat_ngram_size": 0,
56
+ "num_attention_heads": 12,
57
+ "num_beam_groups": 1,
58
+ "num_beams": 1,
59
+ "num_hidden_layers": 12,
60
+ "num_return_sequences": 1,
61
+ "output_attentions": false,
62
+ "output_hidden_states": false,
63
+ "output_scores": false,
64
+ "pad_token_id": 0,
65
+ "position_embedding_type": "absolute",
66
+ "prefix": null,
67
+ "problem_type": null,
68
+ "pruned_heads": {},
69
+ "remove_invalid_values": false,
70
+ "repetition_penalty": 1.0,
71
+ "return_dict": true,
72
+ "return_dict_in_generate": false,
73
+ "sep_token_id": null,
74
+ "suppress_tokens": null,
75
+ "task_specific_params": null,
76
+ "temperature": 1.0,
77
+ "tf_legacy_loss": false,
78
+ "tie_encoder_decoder": false,
79
+ "tie_word_embeddings": true,
80
+ "tokenizer_class": null,
81
+ "top_k": 50,
82
+ "top_p": 1.0,
83
+ "torch_dtype": null,
84
+ "torchscript": false,
85
+ "transformers_version": "4.28.0.dev0",
86
+ "typical_p": 1.0,
87
+ "use_bfloat16": false,
88
+ "vocab_size": 30522
89
+ },
90
+ "text_config": {
91
+ "_name_or_path": "facebook/opt-2.7b",
92
+ "_remove_final_layer_norm": false,
93
+ "activation_dropout": 0.0,
94
+ "activation_function": "relu",
95
+ "add_cross_attention": false,
96
+ "architectures": [
97
+ "OPTForCausalLM"
98
+ ],
99
+ "attention_dropout": 0.0,
100
+ "bad_words_ids": null,
101
+ "begin_suppress_tokens": null,
102
+ "bos_token_id": 2,
103
+ "chunk_size_feed_forward": 0,
104
+ "cross_attention_hidden_size": null,
105
+ "decoder_start_token_id": null,
106
+ "diversity_penalty": 0.0,
107
+ "do_layer_norm_before": true,
108
+ "do_sample": false,
109
+ "dropout": 0.1,
110
+ "early_stopping": false,
111
+ "enable_bias": true,
112
+ "encoder_no_repeat_ngram_size": 0,
113
+ "eos_token_id": 50118,
114
+ "exponential_decay_length_penalty": null,
115
+ "ffn_dim": 10240,
116
+ "finetuning_task": null,
117
+ "forced_bos_token_id": null,
118
+ "forced_eos_token_id": null,
119
+ "hidden_size": 2560,
120
+ "id2label": {
121
+ "0": "LABEL_0",
122
+ "1": "LABEL_1"
123
+ },
124
+ "init_std": 0.02,
125
+ "is_decoder": false,
126
+ "is_encoder_decoder": false,
127
+ "label2id": {
128
+ "LABEL_0": 0,
129
+ "LABEL_1": 1
130
+ },
131
+ "layer_norm_elementwise_affine": true,
132
+ "layerdrop": 0.0,
133
+ "length_penalty": 1.0,
134
+ "max_length": 20,
135
+ "max_position_embeddings": 2048,
136
+ "min_length": 0,
137
+ "model_type": "opt",
138
+ "no_repeat_ngram_size": 0,
139
+ "num_attention_heads": 32,
140
+ "num_beam_groups": 1,
141
+ "num_beams": 1,
142
+ "num_hidden_layers": 32,
143
+ "num_return_sequences": 1,
144
+ "output_attentions": false,
145
+ "output_hidden_states": false,
146
+ "output_scores": false,
147
+ "pad_token_id": 1,
148
+ "prefix": "</s>",
149
+ "problem_type": null,
150
+ "pruned_heads": {},
151
+ "remove_invalid_values": false,
152
+ "repetition_penalty": 1.0,
153
+ "return_dict": true,
154
+ "return_dict_in_generate": false,
155
+ "sep_token_id": null,
156
+ "suppress_tokens": null,
157
+ "task_specific_params": null,
158
+ "temperature": 1.0,
159
+ "tf_legacy_loss": false,
160
+ "tie_encoder_decoder": false,
161
+ "tie_word_embeddings": true,
162
+ "tokenizer_class": null,
163
+ "top_k": 50,
164
+ "top_p": 1.0,
165
+ "torch_dtype": "float16",
166
+ "torchscript": false,
167
+ "transformers_version": "4.28.0.dev0",
168
+ "typical_p": 1.0,
169
+ "use_bfloat16": false,
170
+ "use_cache": true,
171
+ "vocab_size": 50272,
172
+ "word_embed_proj_dim": 2560
173
+ },
174
+ "torch_dtype": "float16",
175
+ "transformers_version": null,
176
+ "use_decoder_only_language_model": true,
177
+ "vision_config": {
178
+ "_name_or_path": "",
179
+ "add_cross_attention": false,
180
+ "architectures": null,
181
+ "attention_dropout": 0.0,
182
+ "bad_words_ids": null,
183
+ "begin_suppress_tokens": null,
184
+ "bos_token_id": null,
185
+ "chunk_size_feed_forward": 0,
186
+ "cross_attention_hidden_size": null,
187
+ "decoder_start_token_id": null,
188
+ "diversity_penalty": 0.0,
189
+ "do_sample": false,
190
+ "dropout": 0.0,
191
+ "early_stopping": false,
192
+ "encoder_no_repeat_ngram_size": 0,
193
+ "eos_token_id": null,
194
+ "exponential_decay_length_penalty": null,
195
+ "finetuning_task": null,
196
+ "forced_bos_token_id": null,
197
+ "forced_eos_token_id": null,
198
+ "hidden_act": "gelu",
199
+ "hidden_size": 1408,
200
+ "id2label": {
201
+ "0": "LABEL_0",
202
+ "1": "LABEL_1"
203
+ },
204
+ "image_size": 224,
205
+ "initializer_factor": 1.0,
206
+ "initializer_range": 1e-10,
207
+ "intermediate_size": 6144,
208
+ "is_decoder": false,
209
+ "is_encoder_decoder": false,
210
+ "label2id": {
211
+ "LABEL_0": 0,
212
+ "LABEL_1": 1
213
+ },
214
+ "layer_norm_eps": 1e-05,
215
+ "length_penalty": 1.0,
216
+ "max_length": 20,
217
+ "min_length": 0,
218
+ "model_type": "blip_2_vision_model",
219
+ "no_repeat_ngram_size": 0,
220
+ "num_attention_heads": 16,
221
+ "num_beam_groups": 1,
222
+ "num_beams": 1,
223
+ "num_channels": 3,
224
+ "num_hidden_layers": 39,
225
+ "num_return_sequences": 1,
226
+ "output_attentions": false,
227
+ "output_hidden_states": false,
228
+ "output_scores": false,
229
+ "pad_token_id": null,
230
+ "patch_size": 14,
231
+ "prefix": null,
232
+ "problem_type": null,
233
+ "projection_dim": 512,
234
+ "pruned_heads": {},
235
+ "qkv_bias": true,
236
+ "remove_invalid_values": false,
237
+ "repetition_penalty": 1.0,
238
+ "return_dict": true,
239
+ "return_dict_in_generate": false,
240
+ "sep_token_id": null,
241
+ "suppress_tokens": null,
242
+ "task_specific_params": null,
243
+ "temperature": 1.0,
244
+ "tf_legacy_loss": false,
245
+ "tie_encoder_decoder": false,
246
+ "tie_word_embeddings": true,
247
+ "tokenizer_class": null,
248
+ "top_k": 50,
249
+ "top_p": 1.0,
250
+ "torch_dtype": null,
251
+ "torchscript": false,
252
+ "transformers_version": "4.28.0.dev0",
253
+ "typical_p": 1.0,
254
+ "use_bfloat16": false
255
+ }
256
+ }
model/blip2-opt-2.7b-fp16-sharded/gitattributes.txt ADDED
@@ -0,0 +1,34 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ *.7z filter=lfs diff=lfs merge=lfs -text
2
+ *.arrow filter=lfs diff=lfs merge=lfs -text
3
+ *.bin filter=lfs diff=lfs merge=lfs -text
4
+ *.bz2 filter=lfs diff=lfs merge=lfs -text
5
+ *.ckpt filter=lfs diff=lfs merge=lfs -text
6
+ *.ftz filter=lfs diff=lfs merge=lfs -text
7
+ *.gz filter=lfs diff=lfs merge=lfs -text
8
+ *.h5 filter=lfs diff=lfs merge=lfs -text
9
+ *.joblib filter=lfs diff=lfs merge=lfs -text
10
+ *.lfs.* filter=lfs diff=lfs merge=lfs -text
11
+ *.mlmodel filter=lfs diff=lfs merge=lfs -text
12
+ *.model filter=lfs diff=lfs merge=lfs -text
13
+ *.msgpack filter=lfs diff=lfs merge=lfs -text
14
+ *.npy filter=lfs diff=lfs merge=lfs -text
15
+ *.npz filter=lfs diff=lfs merge=lfs -text
16
+ *.onnx filter=lfs diff=lfs merge=lfs -text
17
+ *.ot filter=lfs diff=lfs merge=lfs -text
18
+ *.parquet filter=lfs diff=lfs merge=lfs -text
19
+ *.pb filter=lfs diff=lfs merge=lfs -text
20
+ *.pickle filter=lfs diff=lfs merge=lfs -text
21
+ *.pkl filter=lfs diff=lfs merge=lfs -text
22
+ *.pt filter=lfs diff=lfs merge=lfs -text
23
+ *.pth filter=lfs diff=lfs merge=lfs -text
24
+ *.rar filter=lfs diff=lfs merge=lfs -text
25
+ *.safetensors filter=lfs diff=lfs merge=lfs -text
26
+ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
27
+ *.tar.* filter=lfs diff=lfs merge=lfs -text
28
+ *.tflite filter=lfs diff=lfs merge=lfs -text
29
+ *.tgz filter=lfs diff=lfs merge=lfs -text
30
+ *.wasm filter=lfs diff=lfs merge=lfs -text
31
+ *.xz filter=lfs diff=lfs merge=lfs -text
32
+ *.zip filter=lfs diff=lfs merge=lfs -text
33
+ *.zst filter=lfs diff=lfs merge=lfs -text
34
+ *tfevents* filter=lfs diff=lfs merge=lfs -text
model/blip2-opt-2.7b-fp16-sharded/pytorch_model-00001-of-00008.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:ca5d94b1b9b79c04040e7f559f9eafe87bbf8945d561a3137d77469dec462d01
3
+ size 995214350
model/blip2-opt-2.7b-fp16-sharded/pytorch_model-00002-of-00008.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:188085467c4048561813a1437066dac1d0275dfdb7e330715b1bf33e74b6ac94
3
+ size 998967299
model/blip2-opt-2.7b-fp16-sharded/pytorch_model-00003-of-00008.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:6a3322729220657bdc4939a5a51ac075dc5a056cdc01b5cd0e5f80a94369d1d3
3
+ size 984677387
model/blip2-opt-2.7b-fp16-sharded/pytorch_model-00004-of-00008.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:4a3853141772689f0acc1aa63c4179103af8dcdc3c495a148511b08e014ad5c8
3
+ size 996601523
model/blip2-opt-2.7b-fp16-sharded/pytorch_model-00005-of-00008.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:33c93a6ad92db10aafac07cbde5be6a13a8ae673f932fd27400c1774ff82109d
3
+ size 996597207
model/blip2-opt-2.7b-fp16-sharded/pytorch_model-00006-of-00008.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:95e3c47cf5253e70b8fd5711ad91c436a7ede67994d2c18629c5524d7907ed23
3
+ size 996614793
model/blip2-opt-2.7b-fp16-sharded/pytorch_model-00007-of-00008.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:f284b66c24d213e9ab693f407266e287b22fa7968499c9574d9a2b8563d46c8e
3
+ size 996601651
model/blip2-opt-2.7b-fp16-sharded/pytorch_model-00008-of-00008.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:e5a88adee7133f403afe662af567a41d02a9f7a91df3d4cdb364292394e05831
3
+ size 781914313
model/blip2-opt-2.7b-fp16-sharded/pytorch_model.bin.index.json ADDED
The diff for this file is too large to render. See raw diff
 
model/blip2_peft/README.md ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ library_name: peft
3
+ ---
4
+ ## Training procedure
5
+
6
+
7
+ The following `bitsandbytes` quantization config was used during training:
8
+ - load_in_8bit: True
9
+ - load_in_4bit: False
10
+ - llm_int8_threshold: 6.0
11
+ - llm_int8_skip_modules: None
12
+ - llm_int8_enable_fp32_cpu_offload: False
13
+ - llm_int8_has_fp16_weight: False
14
+ - bnb_4bit_quant_type: fp4
15
+ - bnb_4bit_use_double_quant: False
16
+ - bnb_4bit_compute_dtype: float32
17
+ ### Framework versions
18
+
19
+
20
+ - PEFT 0.4.0.dev0
model/blip2_peft/adapter_config.json ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "base_model_name_or_path": "ybelkada/blip2-opt-2.7b-fp16-sharded",
3
+ "bias": "none",
4
+ "fan_in_fan_out": false,
5
+ "inference_mode": true,
6
+ "init_lora_weights": true,
7
+ "layers_pattern": null,
8
+ "layers_to_transform": null,
9
+ "lora_alpha": 32,
10
+ "lora_dropout": 0.05,
11
+ "modules_to_save": null,
12
+ "peft_type": "LORA",
13
+ "r": 16,
14
+ "revision": null,
15
+ "target_modules": [
16
+ "q_proj",
17
+ "k_proj"
18
+ ],
19
+ "task_type": null
20
+ }
model/blip2_peft/adapter_model.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:3f489a10474cd7779c5b59da42164677f54f0c6c44e7365a2690be4d1e9052e3
3
+ size 21020237
requirements.txt ADDED
@@ -0,0 +1,2 @@
 
 
 
1
+ transformers==4.30.2
2
+ pytorch==2.0.0