Spaces:
Running
Running
File size: 1,977 Bytes
fd7b742 | 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 |
import time
import torch
import gradio as gr
from transformers import AutoModelForCausalLM, AutoTokenizer, pipeline
# Load model
MODEL_PATH = "Janushi/FoodExtract-gemma-3-270m-fine-tune-v1"
loaded_model = AutoModelForCausalLM.from_pretrained(
pretrained_model_name_or_path=MODEL_PATH,
dtype="auto",
device_map="auto",
attn_implementation="eager"
)
tokenizer = AutoTokenizer.from_pretrained(MODEL_PATH)
loaded_model_pipeline = pipeline(
"text-generation",
model=loaded_model,
tokenizer=tokenizer
)
def pred_on_text(input_text):
start_time = time.time()
raw_output = loaded_model_pipeline(
text_inputs=[{"role": "user", "content": input_text}],
max_new_tokens=256,
disable_compile=True
)
end_time = time.time()
total_time = round(end_time - start_time, 4)
generated_text = raw_output[0]["generated_text"][1]["content"]
return generated_text, raw_output, total_time
description = """Extract food and drink items from text using a fine-tuned Gemma-3-270M.
Fine-tuned on mrdbourke/FoodExtract-1k dataset.
**Input:** Any text or image caption
**Output:** Structured food/drink extraction
**Example:**
- Input: "eggs, bacon and toast with orange juice"
- Output: food_or_drink: 1, foods: eggs, bacon, toast, drinks: orange juice
"""
demo = gr.Interface(
fn=pred_on_text,
inputs=gr.TextArea(lines=4, label="Input Text"),
outputs=[
gr.TextArea(lines=4, label="Generated Text"),
gr.TextArea(lines=7, label="Raw Output"),
gr.Number(label="Generation Time (s)")
],
title="🍳 BiteSight — Food Extraction with Fine-Tuned Gemma-3-270M",
description=description,
examples=[
["A plate of grilled tofu, salad with avocado and tomatoes"],
["Indian breakfast with roti, tea and fried potatoes"],
["cheese tacos"],
["A photo of a dog sitting on a beach"]
]
)
if __name__ == "__main__":
demo.launch(share=False)
|