Transformers documentation
DePlot
Este modelo se publicó en HF papers el 2022-12-20 y se contribuyó a Hugging Face Transformers el 2023-06-20.
DePlot
Resumen
DePlot fue propuesto en el artículo DePlot: One-shot visual language reasoning by plot-to-table translation de Fangyu Liu, Julian Martin Eisenschlos, Francesco Piccinno, Syrine Krichene, Chenxi Pang, Kenton Lee, Mandar Joshi, Wenhu Chen, Nigel Collier, Yasemin Altun.
El resumen del artículo establece lo siguiente:
El lenguaje visual, como los gráficos y las representaciones, es ubicuo en el mundo humano. Comprender gráficos y representaciones requiere habilidades sólidas de razonamiento. Los modelos de estado del arte (SOTA) anteriores requieren al menos decenas de miles de ejemplos de entrenamiento y sus capacidades de razonamiento siguen siendo muy limitadas, especialmente en consultas complejas escritas por humanos. Este artículo presenta la primera solución de un solo ejemplo (one-shot) para el razonamiento en lenguaje visual. Descomponemos el desafío del razonamiento en lenguaje visual en dos pasos: (1) traducción de gráfico a texto, y (2) razonamiento sobre el texto traducido. La clave de este método es un módulo de conversión de modalidades, llamado DePlot, que traduce la imagen de un gráfico o representación a una tabla linealizada. La salida de DePlot se puede usar directamente para generar un prompt a un modelo de lenguaje grande (LLM) preentrenado, aprovechando las capacidades de razonamiento de pocos ejemplos (few-shot) de los LLMs. Para obtener DePlot, estandarizamos la tarea de gráfico a tabla estableciendo formatos de tarea y métricas unificados, y entrenamos DePlot de extremo a extremo en esta tarea. DePlot se puede usar entonces listo para usar junto con LLMs de forma plug-and-play. En comparación con un modelo SOTA afinado en más de >28k puntos de datos, DePlot+LLM con solo un prompt de un solo ejemplo (one-shot) logra una mejora del 24.0% sobre el SOTA afinado en consultas escritas por humanos de la tarea de QA de gráficos.
DePlot es un modelo entrenado con la arquitectura Pix2Struct. Puede encontrar más información sobre Pix2Struct en la documentación de Pix2Struct.
DePlot es un subconjunto de Visual Question Answering de la arquitectura Pix2Struct. Representa la pregunta de entrada en la imagen y predice la respuesta.
Ejemplo de uso
Actualmente, hay un punto de control disponible para DePlot:
google/deplot: DePlot afinado en el conjunto de datos ChartQA
import requests
from PIL import Image
from transformers import AutoProcessor, Pix2StructForConditionalGeneration
model = Pix2StructForConditionalGeneration.from_pretrained("google/deplot", device_map="auto")
processor = AutoProcessor.from_pretrained("google/deplot")
url = "https://raw.githubusercontent.com/vis-nlp/ChartQA/main/ChartQA%20Dataset/val/png/5090.png"
image = Image.open(requests.get(url, stream=True).raw)
inputs = processor(images=image, text="Generate underlying data table of the figure below:", return_tensors="pt").to(model.device)
predictions = model.generate(**inputs, max_new_tokens=512)
print(processor.decode(predictions[0], skip_special_tokens=True))Ajuste fino
Para ajustar DePlot, consulte el cuaderno de ajuste fino de pix2struct. Para los modelos Pix2Struct, hemos encontrado que ajustar el modelo con Adafactor y un programador de tasa de aprendizaje coseno conduce a una convergencia más rápida:
from transformers.optimization import Adafactor, get_cosine_schedule_with_warmup
optimizer = Adafactor(self.parameters(), scale_parameter=False, relative_step=False, lr=0.01, weight_decay=1e-05)
scheduler = get_cosine_schedule_with_warmup(optimizer, num_warmup_steps=1000, num_training_steps=40000)Update on GitHubDePlot es un modelo entrenado usando la arquitectura
Pix2Struct. Para la referencia de la API, consulte la documentación dePix2Struct.