Spaces:
Running
on
Zero
Running
on
Zero
File size: 4,871 Bytes
f6b7ba0 52c9e29 f6b7ba0 24f1fbc f6b7ba0 24f1fbc f6b7ba0 4dd73d1 c635389 24f1fbc f6b7ba0 3139a51 f6b7ba0 4dd73d1 24f1fbc f6b7ba0 20ad0b8 f6b7ba0 24f1fbc f6b7ba0 43bafef f6b7ba0 0ba5d2e 24f1fbc f6b7ba0 a5f9027 a9a69bd f6b7ba0 d79744b 307ef98 d79744b 72db2fd 307ef98 72db2fd 307ef98 d79744b f6b7ba0 d79744b f6b7ba0 4dd73d1 c0e37ed a9a69bd c0e37ed 380da0e c0e37ed 88e0aa3 c0e37ed 4dd73d1 f6b7ba0 a337221 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 |
import gradio as gr
from transformers import AutoModelForCausalLM, AutoProcessor, TextIteratorStreamer
from threading import Thread
import re
import time
from PIL import Image
import torch
import spaces
processor = AutoProcessor.from_pretrained("ucsahin/TraVisionLM-DPO", trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained("ucsahin/TraVisionLM-base", trust_remote_code=True)
model_dpo = AutoModelForCausalLM.from_pretrained("ucsahin/TraVisionLM-DPO", trust_remote_code=True)
model.to("cuda:0")
model_dpo.to("cuda:0")
@spaces.GPU
def bot_streaming(message, history, max_tokens, temperature, top_p, top_k, repetition_penalty):
print(max_tokens, temperature, top_p, top_k, repetition_penalty)
print(message)
if message['files']:
image = message['files'][-1]['path']
else:
# if there's no image uploaded for this turn, look for images in the past turns
for hist in history:
if type(hist[0])==tuple:
image = hist[0][0]
if image is None:
gr.Error("Lütfen önce bir resim yükleyin.")
prompt = f"{message['text']}"
image = Image.open(image).convert("RGB")
inputs = processor(text=prompt, images=image, return_tensors="pt").to("cuda:0")
generation_kwargs = dict(
inputs, max_new_tokens=max_tokens,
do_sample=True, temperature=temperature, top_p=top_p,
top_k=top_k, repetition_penalty=repetition_penalty
)
generated_text = ""
model_outputs = model.generate(**generation_kwargs)
dpo_outputs = model_dpo.generate(**generation_kwargs)
ref_text = processor.batch_decode(model_outputs, skip_special_tokens=True)[0]
dpo_text = processor.batch_decode(dpo_outputs, skip_special_tokens=True)[0]
generated_text = f"<h3>Base model cevabı:</h3>\n{ref_text[len(prompt)+1:]}\n<h3>DPO model cevabı:</h3>\n{dpo_text[len(prompt)+1:]}\n"
return generated_text
gr.set_static_paths(paths=["static/images/"])
logo_path = "static/images/logo-color-v2.png"
PLACEHOLDER = f"""
<div style="display: flex; flex-direction: column; align-items: center; text-align: center; margin: 30px">
<img src="/file={logo_path}" style="width: 40%; height: auto; opacity: 80%">
<h3>Resim yükleyin ve bir soru sorun!</h3>
<p>Örnek resim ve soruları kullanabilirsiniz.</p>
</div>
"""
DESCRIPTION = f"""
### 875M parametreli küçük ama çok hızlı bir Türkçe Görsel Dil Modeli 🇹🇷🌟⚡️⚡️🇹🇷
Yüklediğiniz resimleri açıklatabilir ve onlarla ilgili ucu açık sorular sorabilirsiniz 🖼️🤖
**Bu demoda sorularınıza iki TraVisionLM modeli tarafından cevap verilmektedir:** ♊♊
- **Base model:** [TraVisionLM-base](https://huggingface.co/ucsahin/TraVisionLM-base) 🌛
- **DPO model:** [TraVisionLM-DPO](https://huggingface.co/ucsahin/TraVisionLM-DPO) 🌜
"""
with gr.Accordion("Generation parameters", open=False) as parameter_accordion:
max_tokens_item = gr.Slider(64, 1024, value=512, step=64, label="Max tokens")
temperature_item = gr.Slider(0.1, 2, value=0.6, step=0.1, label="Temperature")
top_p_item = gr.Slider(0, 1.0, value=0.9, step=0.05, label="Top_p")
top_k_item = gr.Slider(0, 100, value=50, label="Top_k")
repeat_penalty_item = gr.Slider(0, 2, value=1.2, label="Repeat penalty")
demo = gr.ChatInterface(
title="TraVisionLM - Demo",
description=DESCRIPTION,
fn=bot_streaming,
chatbot=gr.Chatbot(placeholder=PLACEHOLDER, scale=1),
examples=[
[{"text": "Resimde kaç kişi var?", "files":["./family.jpg"]}],
[{"text": "Açıkla", "files":["./anitkabir2.jpg"]}],
[{"text": "Kısaca açıkla", "files":["./at.jpg"]}],
[{"text": "Görüntüdeki otobüsün görünümü nasıldır?", "files":["./bus.jpg"]}],
[{"text": "Görüntüde hava durumu nasıl?", "files":["./plane.jpg"]}],
[{"text": "Resimdeki ilginç unsurlar nelerdir?", "files":["./dog.jpg"]}],
[{"text": "Tren istasyonu kalabalık mı yoksa boş mu?", "files":["./train.jpg"]}],
[{"text": "Resimdeki araba hangi renk?", "files":["./car.jpg"]}],
[{"text": "Görüntünün odak noktası nedir?", "files":["./mandog.jpg"]}],
[{"text": "Resimde neresi görünüyor?", "files":["./galata.jpg"]}],
[{"text": "Resim nasıl bir tarza sahip?", "files":["./suluboya.jpg"]}],
[{"text": "Detaylı açıkla", "files":["./tren.jpg"]}],
[{"text": "Resimde nasıl bir etkinlik var?", "files":["./paris1.jpg"]}],
[{"text": "Görsel nasıl bir ortamı gösteriyor?", "files":["./lamba.jpg"]}],
],
additional_inputs=[max_tokens_item, temperature_item, top_p_item, top_k_item, repeat_penalty_item],
additional_inputs_accordion=parameter_accordion,
stop_btn="Stop Generation",
multimodal=True
)
demo.launch(debug=True, max_file_size="5mb") |