Spaces:
Runtime error
Runtime error
lucianotonet
commited on
Commit
•
cf514d7
1
Parent(s):
65ac247
Adiciona suporte a multimídia e atualiza dependências
Browse filesImplementa processamento de entradas de imagem e vídeo no modelo, permitindo inferências mais robustas. A substituição do modelo por Qwen2VL resulta em maior eficácia no processamento. A inclusão de um arquivo .gitignore ajuda a evitar o versionamento de arquivos de ambiente. Além disso, a atualização da versão da biblioteca transformers assegura a compatibilidade com as novas funcionalidades.
- .gitignore +1 -0
- app.py +15 -4
- requirements.txt +3 -2
.gitignore
ADDED
@@ -0,0 +1 @@
|
|
|
|
|
1 |
+
.venv
|
app.py
CHANGED
@@ -1,17 +1,28 @@
|
|
1 |
from fastapi import FastAPI
|
2 |
-
from transformers import
|
|
|
3 |
import torch
|
4 |
|
5 |
app = FastAPI()
|
6 |
|
7 |
-
model =
|
8 |
processor = AutoProcessor.from_pretrained("Qwen/Qwen2-VL-2B-Instruct")
|
9 |
|
10 |
@app.post("/predict")
|
11 |
async def predict(messages: list):
|
12 |
# Processamento e inferência
|
13 |
text = processor.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
|
14 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
15 |
generated_ids = model.generate(**inputs, max_new_tokens=128)
|
16 |
-
|
|
|
17 |
return {"response": output_text}
|
|
|
1 |
from fastapi import FastAPI
|
2 |
+
from transformers import Qwen2VLForConditionalGeneration, AutoProcessor
|
3 |
+
from qwen_vl_utils import process_vision_info
|
4 |
import torch
|
5 |
|
6 |
app = FastAPI()
|
7 |
|
8 |
+
model = Qwen2VLForConditionalGeneration.from_pretrained("Qwen/Qwen2-VL-2B-Instruct", torch_dtype="auto", device_map="auto")
|
9 |
processor = AutoProcessor.from_pretrained("Qwen/Qwen2-VL-2B-Instruct")
|
10 |
|
11 |
@app.post("/predict")
|
12 |
async def predict(messages: list):
|
13 |
# Processamento e inferência
|
14 |
text = processor.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
|
15 |
+
image_inputs, video_inputs = process_vision_info(messages)
|
16 |
+
inputs = processor(
|
17 |
+
text=[text],
|
18 |
+
images=image_inputs,
|
19 |
+
videos=video_inputs,
|
20 |
+
padding=True,
|
21 |
+
return_tensors="pt"
|
22 |
+
)
|
23 |
+
inputs = inputs.to("cpu") # Altere para "cuda" se tiver GPU disponível
|
24 |
+
|
25 |
generated_ids = model.generate(**inputs, max_new_tokens=128)
|
26 |
+
generated_ids_trimmed = [out_ids[len(in_ids):] for in_ids, out_ids in zip(inputs.input_ids, generated_ids)]
|
27 |
+
output_text = processor.batch_decode(generated_ids_trimmed, skip_special_tokens=True, clean_up_tokenization_spaces=False)
|
28 |
return {"response": output_text}
|
requirements.txt
CHANGED
@@ -1,6 +1,7 @@
|
|
1 |
-
transformers
|
2 |
accelerate
|
3 |
safetensors
|
4 |
sentencepiece
|
5 |
fastapi
|
6 |
-
uvicorn
|
|
|
|
1 |
+
transformers>=4.37.0
|
2 |
accelerate
|
3 |
safetensors
|
4 |
sentencepiece
|
5 |
fastapi
|
6 |
+
uvicorn
|
7 |
+
qwen-vl-utils
|