Spaces:
Build error
Build error
Commit
·
d710f4c
1
Parent(s):
a3d97fd
init
Browse files- app.py +111 -22
- requirements.txt +0 -312
- test.py +35 -0
app.py
CHANGED
@@ -2,34 +2,123 @@ from transformers import Blip2Processor, Blip2ForConditionalGeneration
|
|
2 |
from peft import LoraConfig, get_peft_model, PeftModel
|
3 |
import torch
|
4 |
import streamlit as st
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5 |
|
6 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7 |
|
8 |
-
config = LoraConfig(
|
9 |
-
r=16,
|
10 |
-
lora_alpha=32,
|
11 |
-
lora_dropout=0.05,
|
12 |
-
bias="none",
|
13 |
-
)
|
14 |
|
15 |
-
|
16 |
-
#
|
17 |
-
# processor = Blip2Processor.from_pretrained("Salesforce/blip2-flan-t5-xl")
|
18 |
-
# device_map = {"": 0}
|
19 |
-
# model = Blip2ForConditionalGeneration.from_pretrained("Salesforce/blip2-flan-t5-xl",
|
20 |
-
# load_in_8bit=True,
|
21 |
-
# device_map=device_map)
|
22 |
-
# model = PeftModel.from_pretrained(model, model_name)
|
23 |
-
# model = get_peft_model(model, config)
|
24 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
25 |
|
26 |
col1, col2 = st.columns(2)
|
|
|
|
|
27 |
with col1:
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
32 |
|
33 |
-
if chat:
|
34 |
-
st.write("You entered: ", chat)
|
35 |
|
|
|
|
|
|
2 |
from peft import LoraConfig, get_peft_model, PeftModel
|
3 |
import torch
|
4 |
import streamlit as st
|
5 |
+
from PIL import Image
|
6 |
+
from streamlit_chat import message
|
7 |
+
from io import BytesIO, StringIO
|
8 |
+
# device = "cuda" if torch.cuda.is_available() else "cpu"
|
9 |
+
device = "cpu"
|
10 |
+
@st.cache_resource
|
11 |
+
def load_model():
|
12 |
+
config = LoraConfig(
|
13 |
+
r=16,
|
14 |
+
lora_alpha=32,
|
15 |
+
lora_dropout=0.05,
|
16 |
+
bias="none",
|
17 |
+
)
|
18 |
|
19 |
+
model_name = "./blip2_fakenews_all"
|
20 |
+
#
|
21 |
+
processor = Blip2Processor.from_pretrained("Salesforce/blip2-flan-t5-xl")
|
22 |
+
# device_map = {"": 0}
|
23 |
+
device_map = "auto"
|
24 |
+
model = Blip2ForConditionalGeneration.from_pretrained("Salesforce/blip2-flan-t5-xl",
|
25 |
+
load_in_8bit=True,
|
26 |
+
device_map=device_map)
|
27 |
+
model = PeftModel.from_pretrained(model, model_name)
|
28 |
+
model = get_peft_model(model, config)
|
29 |
+
return processor, model
|
30 |
|
|
|
|
|
|
|
|
|
|
|
|
|
31 |
|
32 |
+
st.title('Blip2 Fake News Debunker')
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
33 |
|
34 |
+
if 'generated' not in st.session_state:
|
35 |
+
st.session_state['generated'] = []
|
36 |
+
|
37 |
+
if 'past' not in st.session_state:
|
38 |
+
st.session_state['past'] = []
|
39 |
+
|
40 |
+
if 'bot_prompt' not in st.session_state:
|
41 |
+
st.session_state.bot_prompt = []
|
42 |
+
|
43 |
+
|
44 |
+
def get_text():
|
45 |
+
chat = st.text_input('Start to chat:', placeholder="Hello! Let's start to chat from here! ")
|
46 |
+
return chat
|
47 |
+
|
48 |
+
def generate_output(image, prompt):
|
49 |
+
encoding = processor(images=image, text=prompt, max_length=512, truncation=True,
|
50 |
+
padding="max_length", return_tensors="pt")
|
51 |
+
predictions = model.generate(input_ids=encoding['input_ids'].to(device),
|
52 |
+
pixel_values=encoding['pixel_values'].to(device, torch.float16),
|
53 |
+
max_length=20)
|
54 |
+
p = processor.batch_decode(predictions, skip_special_tokens=True)
|
55 |
+
out = " ".join(p)
|
56 |
+
return out
|
57 |
+
|
58 |
+
if st.button('Start a new chat'):
|
59 |
+
st.cache_resource.clear()
|
60 |
+
st.cache_data.clear()
|
61 |
+
for key in st.session_state.keys():
|
62 |
+
del st.session_state[key]
|
63 |
+
st.experimental_rerun()
|
64 |
|
65 |
col1, col2 = st.columns(2)
|
66 |
+
show_file = st.empty()
|
67 |
+
|
68 |
with col1:
|
69 |
+
st.markdown("Step 1: ")
|
70 |
+
uploaded_file = st.file_uploader("Upload a news image here: ", type=["png", "jpg"])
|
71 |
+
|
72 |
+
if not uploaded_file:
|
73 |
+
show_file.info("Please upload a file of type: " + ", ".join(["png", "jpg"]))
|
74 |
+
if isinstance(uploaded_file, BytesIO):
|
75 |
+
image = Image.open(uploaded_file)
|
76 |
+
st.image(image)
|
77 |
+
|
78 |
+
|
79 |
+
with col2:
|
80 |
+
st.markdown("Step 2: ")
|
81 |
+
txt = st.text_area("Paste news content here: ")
|
82 |
+
st.markdown("Step 3: ")
|
83 |
+
user_input = get_text()
|
84 |
+
# if user_input:
|
85 |
+
# st.write("You: ", user_input)
|
86 |
+
|
87 |
+
processor, model = load_model()
|
88 |
+
def main():
|
89 |
+
if uploaded_file and user_input:
|
90 |
+
prompt = "Qustions: What is this news about? " \
|
91 |
+
"\nAnswer: " + txt + \
|
92 |
+
"\nQustions: " + user_input
|
93 |
+
|
94 |
+
if len(st.session_state.bot_prompt) == 0:
|
95 |
+
pr: list = prompt.split('\n')
|
96 |
+
pr = [p for p in pr if len(p)] # remove empty string
|
97 |
+
st.session_state.bot_prompt = pr
|
98 |
+
print(f'init: {st.session_state.bot_prompt}')
|
99 |
+
|
100 |
+
if user_input:
|
101 |
+
st.session_state.bot_prompt.append(f'You: {user_input}')
|
102 |
+
|
103 |
+
# Convert a list of prompts to a string for the GPT bot.
|
104 |
+
input_prompt: str = '\n'.join(st.session_state.bot_prompt)
|
105 |
+
print(f'bot prompt input list:\n{st.session_state.bot_prompt}')
|
106 |
+
print(f'bot prompt input string:\n{input_prompt}')
|
107 |
+
|
108 |
+
output = generate_output(image, prompt=input_prompt)
|
109 |
+
|
110 |
+
st.session_state.past.append(user_input)
|
111 |
+
st.session_state.generated.append(output)
|
112 |
+
|
113 |
+
# Add bot response for next prompt.
|
114 |
+
st.session_state.bot_prompt.append(f'Answer: {output}')
|
115 |
+
with col2:
|
116 |
+
if st.session_state['generated']:
|
117 |
+
for i in range(len(st.session_state['generated']) - 1, -1, -1):
|
118 |
+
message(st.session_state["generated"][i], key=str(i))
|
119 |
+
message(st.session_state['past'][i], is_user=True, key=str(i) + '_user')
|
120 |
+
|
121 |
|
|
|
|
|
122 |
|
123 |
+
if __name__ == '__main__':
|
124 |
+
main()
|
requirements.txt
DELETED
@@ -1,312 +0,0 @@
|
|
1 |
-
absl-py==1.2.0
|
2 |
-
accelerate==0.17.0
|
3 |
-
aiofiles==22.1.0
|
4 |
-
aiohttp @ file:///home/conda/feedstock_root/build_artifacts/aiohttp_1649013154501/work
|
5 |
-
aiosignal @ file:///home/conda/feedstock_root/build_artifacts/aiosignal_1667935791922/work
|
6 |
-
aiostream==0.4.5
|
7 |
-
altair==4.2.0
|
8 |
-
antlr4-python3-runtime==4.9.3
|
9 |
-
anyio==3.6.1
|
10 |
-
arxiv==1.4.7
|
11 |
-
asttokens==2.2.1
|
12 |
-
async-timeout @ file:///home/conda/feedstock_root/build_artifacts/async-timeout_1640026696943/work
|
13 |
-
attrs @ file:///home/conda/feedstock_root/build_artifacts/attrs_1671632566681/work
|
14 |
-
backcall==0.2.0
|
15 |
-
beautifulsoup4==4.7.1
|
16 |
-
bitsandbytes==0.37.1
|
17 |
-
blinker==1.5
|
18 |
-
blis==0.7.9
|
19 |
-
blobfile==2.0.2
|
20 |
-
boto3==1.26.13
|
21 |
-
botocore==1.29.13
|
22 |
-
Bottleneck @ file:///opt/conda/conda-bld/bottleneck_1657175564434/work
|
23 |
-
braceexpand==0.1.7
|
24 |
-
brotlipy==0.7.0
|
25 |
-
cached-property==1.5.2
|
26 |
-
cachetools==5.2.0
|
27 |
-
catalogue==2.0.8
|
28 |
-
certifi==2022.12.7
|
29 |
-
cffi @ file:///opt/conda/conda-bld/cffi_1642701102775/work
|
30 |
-
cfgv==3.3.1
|
31 |
-
chardet==3.0.4
|
32 |
-
charset-normalizer @ file:///tmp/build/80754af9/charset-normalizer_1630003229654/work
|
33 |
-
chex==0.1.6
|
34 |
-
click==8.1.3
|
35 |
-
clip @ git+https://github.com/openai/CLIP.git@d50d76daa670286dd6cacf3bcd80b5e4823fc8e1
|
36 |
-
clip-client==0.6.2
|
37 |
-
clip-server==0.6.2
|
38 |
-
colorama @ file:///home/conda/feedstock_root/build_artifacts/colorama_1666700638685/work
|
39 |
-
comet-ml==3.12.2
|
40 |
-
commonmark==0.9.1
|
41 |
-
confection==0.0.4
|
42 |
-
configobj==5.0.8
|
43 |
-
contexttimer==0.3.3
|
44 |
-
contourpy @ file:///opt/conda/conda-bld/contourpy_1663827406301/work
|
45 |
-
cryptography @ file:///tmp/build/80754af9/cryptography_1652101588893/work
|
46 |
-
cssselect==1.0.3
|
47 |
-
cycler @ file:///tmp/build/80754af9/cycler_1637851556182/work
|
48 |
-
cymem==2.0.7
|
49 |
-
dataclasses @ file:///home/conda/feedstock_root/build_artifacts/dataclasses_1628958434797/work
|
50 |
-
datasets==2.8.0
|
51 |
-
decorator==5.1.1
|
52 |
-
decord==0.6.0
|
53 |
-
deepspeed==0.8.3
|
54 |
-
dill @ file:///home/conda/feedstock_root/build_artifacts/dill_1666603105584/work
|
55 |
-
distlib==0.3.6
|
56 |
-
dm-tree==0.1.8
|
57 |
-
docarray==0.16.3
|
58 |
-
docker==6.0.0
|
59 |
-
docker-pycreds==0.4.0
|
60 |
-
dulwich==0.21.3
|
61 |
-
einops==0.6.0
|
62 |
-
en-core-web-sm @ https://github.com/explosion/spacy-models/releases/download/en_core_web_sm-3.4.1/en_core_web_sm-3.4.1-py3-none-any.whl
|
63 |
-
entrypoints==0.4
|
64 |
-
etils==1.0.0
|
65 |
-
evaluate==0.4.0
|
66 |
-
everett==3.1.0
|
67 |
-
exceptiongroup==1.1.0
|
68 |
-
executing==1.2.0
|
69 |
-
fairscale==0.4.4
|
70 |
-
fastapi==0.82.0
|
71 |
-
feedfinder2==0.0.4
|
72 |
-
feedparser==5.2.1
|
73 |
-
ffmpy==0.3.0
|
74 |
-
filelock @ file:///home/conda/feedstock_root/build_artifacts/filelock_1672354931606/work
|
75 |
-
Flask==1.0.2
|
76 |
-
Flask-Cors==3.0.7
|
77 |
-
flax==0.6.6
|
78 |
-
fonttools==4.37.1
|
79 |
-
frozenlist @ file:///croot/frozenlist_1670004507010/work
|
80 |
-
fsspec @ file:///home/conda/feedstock_root/build_artifacts/fsspec_1668082755814/work
|
81 |
-
ftfy==6.1.1
|
82 |
-
gdown==4.5.1
|
83 |
-
gitdb==4.0.10
|
84 |
-
GitPython==3.1.30
|
85 |
-
google-auth==2.9.1
|
86 |
-
google-auth-oauthlib==0.4.6
|
87 |
-
gradio==3.25.0
|
88 |
-
gradio_client==0.1.3
|
89 |
-
grpcio==1.47.0
|
90 |
-
grpcio-health-checking==1.47.0
|
91 |
-
grpcio-reflection==1.47.0
|
92 |
-
h11==0.13.0
|
93 |
-
hjson==3.1.0
|
94 |
-
httpcore==0.17.0
|
95 |
-
httptools==0.4.0
|
96 |
-
httpx==0.24.0
|
97 |
-
huggingface-hub==0.13.4
|
98 |
-
identify==2.5.18
|
99 |
-
idna @ file:///croot/idna_1666125576474/work
|
100 |
-
imageio==2.22.4
|
101 |
-
imbalanced-learn==0.10.1
|
102 |
-
importlib-metadata @ file:///home/conda/feedstock_root/build_artifacts/importlib-metadata_1672612343532/work
|
103 |
-
importlib-resources==5.12.0
|
104 |
-
iniconfig==2.0.0
|
105 |
-
iopath==0.1.10
|
106 |
-
ipython==8.11.0
|
107 |
-
itsdangerous==1.1.0
|
108 |
-
jax==0.4.5
|
109 |
-
jaxlib==0.4.4
|
110 |
-
jcloud==0.0.35
|
111 |
-
jedi==0.18.2
|
112 |
-
jieba3k==0.35.1
|
113 |
-
jina==3.8.3
|
114 |
-
jina-hubble-sdk==0.15.5
|
115 |
-
Jinja2==3.1.2
|
116 |
-
jmespath==1.0.1
|
117 |
-
joblib==1.2.0
|
118 |
-
jsonschema==4.17.3
|
119 |
-
kaggle==1.5.13
|
120 |
-
kiwisolver==1.4.4
|
121 |
-
langcodes==3.3.0
|
122 |
-
langdetect==1.0.7
|
123 |
-
latex2mathml==3.75.2
|
124 |
-
linkify-it-py==2.0.0
|
125 |
-
lxml==4.9.1
|
126 |
-
lz4==4.0.2
|
127 |
-
Markdown==3.4.1
|
128 |
-
markdown-it-py==2.2.0
|
129 |
-
MarkupSafe==2.1.1
|
130 |
-
matplotlib @ file:///croot/matplotlib-suite_1670466153205/work
|
131 |
-
matplotlib-inline==0.1.6
|
132 |
-
mdit-py-plugins==0.3.3
|
133 |
-
mdtex2html==1.2.0
|
134 |
-
mdurl==0.1.2
|
135 |
-
mkl-fft==1.3.1
|
136 |
-
mkl-random @ file:///tmp/build/80754af9/mkl_random_1626186066731/work
|
137 |
-
mkl-service==2.4.0
|
138 |
-
msgpack==1.0.4
|
139 |
-
multidict @ file:///croot/multidict_1665674239670/work
|
140 |
-
multiprocess==0.70.13
|
141 |
-
munkres==1.1.4
|
142 |
-
murmurhash==1.0.9
|
143 |
-
networkx==2.8.8
|
144 |
-
newspaper3k==0.2.8
|
145 |
-
ninja==1.11.1
|
146 |
-
nltk==3.4
|
147 |
-
nodeenv==1.7.0
|
148 |
-
numexpr @ file:///croot/numexpr_1668713893690/work
|
149 |
-
numpy @ file:///opt/conda/conda-bld/numpy_and_numpy_base_1652801679809/work
|
150 |
-
nvidia-ml-py3==7.352.0
|
151 |
-
oauthlib==3.0.1
|
152 |
-
omegaconf==2.3.0
|
153 |
-
open-clip-torch==1.3.0
|
154 |
-
openai==0.27.0
|
155 |
-
opencv-python-headless==4.5.5.64
|
156 |
-
opendatasets==0.1.22
|
157 |
-
openprompt==1.0.1
|
158 |
-
opt-einsum==3.3.0
|
159 |
-
optax==0.1.4
|
160 |
-
orbax==0.1.3
|
161 |
-
orjson==3.8.10
|
162 |
-
packaging @ file:///tmp/build/80754af9/packaging_1637314298585/work
|
163 |
-
pandas==1.5.2
|
164 |
-
parso==0.8.3
|
165 |
-
pathspec==0.10.1
|
166 |
-
pathtools==0.1.2
|
167 |
-
pathy==0.10.1
|
168 |
-
peft @ git+https://github.com/huggingface/peft.git@4fd374e80d670781c0d82c96ce94d1215ff23306
|
169 |
-
pexpect==4.8.0
|
170 |
-
pickleshare==0.7.5
|
171 |
-
Pillow==9.4.0
|
172 |
-
platformdirs==3.1.0
|
173 |
-
plotly==5.13.1
|
174 |
-
pluggy==1.0.0
|
175 |
-
portalocker==2.7.0
|
176 |
-
pre-commit==3.1.1
|
177 |
-
preshed==3.0.8
|
178 |
-
prometheus-client==0.14.1
|
179 |
-
promise==2.3
|
180 |
-
prompt-toolkit==3.0.38
|
181 |
-
protobuf==3.19.4
|
182 |
-
psutil==5.9.4
|
183 |
-
ptyprocess==0.7.0
|
184 |
-
pure-eval==0.2.2
|
185 |
-
py-cpuinfo==9.0.0
|
186 |
-
pyarrow==8.0.0
|
187 |
-
pyasn1==0.4.8
|
188 |
-
pyasn1-modules==0.2.8
|
189 |
-
pybase64==1.2.3
|
190 |
-
pycocoevalcap==1.2
|
191 |
-
pycocotools==2.0.6
|
192 |
-
pycparser @ file:///tmp/build/80754af9/pycparser_1636541352034/work
|
193 |
-
pycryptodome==3.17
|
194 |
-
pycryptodomex==3.17
|
195 |
-
pydantic==1.10.2
|
196 |
-
pydeck==0.8.0
|
197 |
-
pydub==0.25.1
|
198 |
-
Pygments==2.13.0
|
199 |
-
Pympler==1.0.1
|
200 |
-
PyMuPDF==1.21.1
|
201 |
-
pyOpenSSL @ file:///opt/conda/conda-bld/pyopenssl_1643788558760/work
|
202 |
-
pyparsing @ file:///opt/conda/conda-bld/pyparsing_1661452539315/work
|
203 |
-
pyrsistent==0.19.3
|
204 |
-
PySocks @ file:///tmp/build/80754af9/pysocks_1605305812635/work
|
205 |
-
pytest==7.2.0
|
206 |
-
python-dateutil @ file:///tmp/build/80754af9/python-dateutil_1626374649649/work
|
207 |
-
python-docx==0.8.11
|
208 |
-
python-dotenv==0.18.0
|
209 |
-
python-magic==0.4.27
|
210 |
-
python-markdown-math==0.8
|
211 |
-
python-multipart==0.0.5
|
212 |
-
python-slugify==8.0.1
|
213 |
-
pytorch-pretrained-bert==0.6.2
|
214 |
-
pytorch-transformers==1.0.0
|
215 |
-
pytz @ file:///opt/conda/conda-bld/pytz_1654762638606/work
|
216 |
-
pytz-deprecation-shim==0.1.0.post0
|
217 |
-
PyWavelets==1.4.1
|
218 |
-
pywebarchive==0.5.0
|
219 |
-
PyYAML @ file:///home/conda/feedstock_root/build_artifacts/pyyaml_1648757097602/work
|
220 |
-
regex==2022.7.25
|
221 |
-
requests @ file:///opt/conda/conda-bld/requests_1657734628632/work
|
222 |
-
requests-file==1.4.3
|
223 |
-
requests-oauthlib==1.2.0
|
224 |
-
requests-toolbelt==0.10.1
|
225 |
-
responses==0.10.15
|
226 |
-
rich==12.5.1
|
227 |
-
rouge==1.0.0
|
228 |
-
rouge-score==0.1.2
|
229 |
-
rsa==4.9
|
230 |
-
s3transfer==0.6.0
|
231 |
-
salesforce-lavis==1.0.0
|
232 |
-
scikit-image==0.19.3
|
233 |
-
scikit-learn==1.1.2
|
234 |
-
scipy==1.9.1
|
235 |
-
seaborn @ file:///croot/seaborn_1669627814970/work
|
236 |
-
semantic-version==2.10.0
|
237 |
-
semver==2.13.0
|
238 |
-
sentencepiece==0.1.96
|
239 |
-
sentry-sdk==1.12.1
|
240 |
-
seqeval==1.2.2
|
241 |
-
setproctitle==1.3.2
|
242 |
-
shortuuid==1.0.11
|
243 |
-
simpletransformers==0.63.9
|
244 |
-
singledispatch==3.4.0.3
|
245 |
-
six @ file:///tmp/build/80754af9/six_1644875935023/work
|
246 |
-
skorch==0.12.1
|
247 |
-
smart-open==6.3.0
|
248 |
-
smmap==5.0.0
|
249 |
-
sniffio==1.3.0
|
250 |
-
soupsieve==1.8
|
251 |
-
spacy==3.4.4
|
252 |
-
spacy-langdetect==0.1.2
|
253 |
-
spacy-legacy==3.0.11
|
254 |
-
spacy-loggers==1.0.4
|
255 |
-
srsly==2.4.5
|
256 |
-
stack-data==0.6.2
|
257 |
-
starlette==0.19.1
|
258 |
-
streamlit==1.16.0
|
259 |
-
tabulate==0.9.0
|
260 |
-
tenacity==8.2.2
|
261 |
-
tensorboard==2.9.1
|
262 |
-
tensorboard-data-server==0.6.1
|
263 |
-
tensorboard-plugin-wit==1.8.1
|
264 |
-
tensorboardX==2.5.1
|
265 |
-
tensorstore==0.1.33
|
266 |
-
text-unidecode==1.3
|
267 |
-
thinc==8.1.6
|
268 |
-
threadpoolctl==3.1.0
|
269 |
-
tifffile==2022.10.10
|
270 |
-
tiktoken==0.4.0
|
271 |
-
timm==0.4.12
|
272 |
-
tinysegmenter==0.3
|
273 |
-
tldextract==2.2.1
|
274 |
-
tokenizers==0.12.1
|
275 |
-
toml==0.10.2
|
276 |
-
tomli==2.0.1
|
277 |
-
toolz==0.12.0
|
278 |
-
torch==1.13.1
|
279 |
-
torchaudio==0.13.1
|
280 |
-
torchvision==0.14.1
|
281 |
-
tornado==6.2
|
282 |
-
tqdm @ file:///home/conda/feedstock_root/build_artifacts/tqdm_1662214488106/work
|
283 |
-
traitlets==5.9.0
|
284 |
-
transformers @ git+https://github.com/huggingface/transformers.git@a9bd5df16a46356463f2712dd8f6c109fa83d6f9
|
285 |
-
twython==3.7.0
|
286 |
-
typer==0.7.0
|
287 |
-
typing_extensions==4.5.0
|
288 |
-
tzdata==2022.7
|
289 |
-
tzlocal==4.2
|
290 |
-
uc-micro-py==1.0.1
|
291 |
-
urllib3 @ file:///croot/urllib3_1670526988650/work
|
292 |
-
uvicorn==0.18.3
|
293 |
-
uvloop==0.16.0
|
294 |
-
validators==0.20.0
|
295 |
-
virtualenv==20.20.0
|
296 |
-
wandb==0.13.7
|
297 |
-
wasabi==0.10.1
|
298 |
-
watchdog==2.2.1
|
299 |
-
watchfiles==0.16.1
|
300 |
-
waybackpy==3.0.6
|
301 |
-
wcwidth==0.2.5
|
302 |
-
webdataset==0.2.35
|
303 |
-
websocket-client==1.4.1
|
304 |
-
websockets==10.3
|
305 |
-
Werkzeug==2.2.2
|
306 |
-
wrapt==1.15.0
|
307 |
-
wurlitzer==3.0.3
|
308 |
-
xmlx==2.0.0
|
309 |
-
xxhash==3.0.0
|
310 |
-
yacs==0.1.8
|
311 |
-
yarl @ file:///home/conda/feedstock_root/build_artifacts/yarl_1648966524636/work
|
312 |
-
zipp @ file:///home/conda/feedstock_root/build_artifacts/zipp_1669453021653/work
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
test.py
ADDED
@@ -0,0 +1,35 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
from PIL import Image
|
2 |
+
import requests
|
3 |
+
from transformers import Blip2Processor, Blip2ForConditionalGeneration
|
4 |
+
import torch
|
5 |
+
from peft import LoraConfig, get_peft_model, PeftModel
|
6 |
+
|
7 |
+
config = LoraConfig(
|
8 |
+
r=16,
|
9 |
+
lora_alpha=32,
|
10 |
+
lora_dropout=0.05,
|
11 |
+
bias="none",
|
12 |
+
)
|
13 |
+
|
14 |
+
device = "cuda" if torch.cuda.is_available() else "cpu"
|
15 |
+
model_name = "./blip2_fakenews_all"
|
16 |
+
|
17 |
+
# device_map = {"": 0}
|
18 |
+
device_map = "auto"
|
19 |
+
processor = Blip2Processor.from_pretrained("blip2")
|
20 |
+
model = Blip2ForConditionalGeneration.from_pretrained("blip2",
|
21 |
+
load_in_8bit=True,
|
22 |
+
device_map=device_map)
|
23 |
+
model = PeftModel.from_pretrained(model, model_name)
|
24 |
+
model = get_peft_model(model, config)
|
25 |
+
|
26 |
+
|
27 |
+
url = "http://images.cocodataset.org/val2017/000000039769.jpg"
|
28 |
+
image = Image.open(requests.get(url, stream=True).raw)
|
29 |
+
|
30 |
+
prompt = "Question: Is this real or fake? Answer: real. Question: Why? "
|
31 |
+
inputs = processor(images=image, text=prompt, return_tensors="pt").to(device, torch.float16)
|
32 |
+
|
33 |
+
generated_ids = model.generate(**inputs)
|
34 |
+
generated_text = processor.batch_decode(generated_ids, skip_special_tokens=True)[0].strip()
|
35 |
+
print(generated_text)
|