File size: 2,391 Bytes
a132cd5
 
 
87fbb40
 
a132cd5
87fbb40
 
 
1294bed
 
a132cd5
2fccdeb
47d5255
 
a132cd5
e6bcb07
902daab
 
 
 
 
 
 
 
 
 
 
 
 
 
 
47d5255
902daab
47d5255
 
 
 
902daab
86aacbf
 
 
e6bcb07
3b85849
 
 
 
e6bcb07
3b85849
86aacbf
 
e6bcb07
 
 
 
 
 
 
 
30e61bd
e6bcb07
8e52c5b
e6bcb07
 
8e52c5b
e6bcb07
 
59c8750
db61b46
e6bcb07
 
59c8750
 
 
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
import gradio as gr
import spaces
import torch
import os
from transformers import AutoProcessor, AutoModelForCausalLM

token=os.environ["TOKEN"]
model=os.environ["MODEL"]

processor = AutoProcessor.from_pretrained(model, token=token,trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(model,trust_remote_code=True,token=token,torch_dtype=torch.float16,device_map={"":0})


eos_token_id=processor.tokenizer.convert_tokens_to_ids("<|end|>")

@spaces.GPU
def compute(image, instruction, output_format):
    
    instruction_str=f"{instruction}\n<|output_format|>\n{output_format}"
        
    messages=[
            {"role":"user","content":f"<|image_1|>\n{instruction_str}"}
        ]
        
    prompt=processor.tokenizer.apply_chat_template(messages,add_generation_prompt=True,tokenize=False)
                
    inputs = processor(prompt, [image],return_tensors="pt",max_length=4096*4,truncation=False,padding=False)
    for k in inputs:
        inputs[k]=inputs[k].to("cuda")
        
    with torch.no_grad():
        with torch.cuda.amp.autocast():
            outputs = model.generate(**inputs,max_new_tokens=256,eos_token_id=eos_token_id)
    
    outputs=outputs[0]
    input_length=inputs["input_ids"].shape[-1]
    outputs=outputs[input_length:]
    out=processor.tokenizer.decode(outputs,skip_special_tokens=True)
    return out
    
from examples import examples
    
""" demo = gr.Interface(
    fn=greet, 
    inputs=[
        gr.Image(type="pil", label="Image"),
        gr.Text(label="Instruction"),
        #r.TextArea(label="Output Format", placeholder="Specify the output format.")
    ], 
    outputs=gr.Text(),
    examples=examples
) """

with gr.Blocks() as demo:
    with gr.Row():
        with gr.Column():
            image = gr.Image(type="pil", label="Image")
            instruction = gr.Text(label="Instruction")
            output_format = gr.TextArea(label="Output Format", placeholder="Specify the output format.")
            sub_btn=gr.Button(value="Run")
        with gr.Column():
            out = gr.Code(label="Output")
            
        sub_btn.click(
            compute,inputs=[image, instruction, output_format],outputs=out,api_name=False
        )
        
        
    with gr.Row():
        examples=gr.Examples(examples,inputs=[image, instruction, output_format],outputs=out,fn=compute)

demo.launch(
    show_api=False
)