stefra/embeddinggemma2-glance-v1
embeddinggemma2-glance-v1
Architettura GLANCE Gemma: EmbeddingGemma 2 addestrato con statement tuning multi-domanda, su testo e immagini insieme. Dato uno stato (un testo, una o due immagini, o testo e immagini) e uno o piu' statement, restituisce la probabilita' che ogni statement sia vero.
Le immagini diventano token dentro la stessa sequenza del testo; gli statement stanno nella stessa sequenza dello stato ma una maschera di attenzione a blocchi li rende indipendenti: il punteggio di uno statement e' identico a quello che si otterrebbe valutandolo da solo, e lo stato (immagini comprese) si calcola una volta sola.
Uso
Basta transformers (con il supporto a EmbeddingGemma 2): il codice del modello e' incluso nel repository (trust_remote_code=True).
from PIL import Image
from transformers import AutoModel
model = AutoModel.from_pretrained("stefra/embeddinggemma2-glance-v1", trust_remote_code=True)
model.predict("The vase is broken.", ["The vase is intact.", "Something got damaged."]) # testo
model.predict(Image.open("gatto.jpg"), ["There is a cat.", "The cat is black."]) # immagine
model.predict({"images": ["sx.jpg", "dx.jpg"]}, ["The left image has more dogs."]) # due immagini
model.predict({"text": "Lot 12, 1950s", "images": ["vaso.jpg"]}, ["The vase is antique."]) # testo + immagine
model.predict([("I love it.", ["It is positive."]), ({"images": ["a.jpg"]}, ["It is a dog."])]) # batchUna stringa nuda e' sempre testo; le immagini sono PIL.Image, array numpy o bytes, e dentro {"images": [...]} anche percorsi e URL. Classificazione zero-shot: uno statement per classe e vince il piu' probabile.
Precisione: EmbeddingGemma 2 non supporta float16. Su GPU con bf16 nativo (A100, L4, H100) il modello si carica in bfloat16, altrimenti in float32; si puo' scegliere con device= e dtype=.
