Transformers documentation
FLAN-UL2
Este modelo fue aportado a Hugging Face Transformers el 2023-06-20.
FLAN-UL2
Resumen
Flan-UL2 es un modelo encoder-decoder basado en la arquitectura T5. Utiliza la misma configuración que el modelo UL2 publicado a principios del año pasado.
Se ajustó finamente mediante el ajuste de prompts “Flan” y la recopilación de datos. Al igual que con Flan-T5, se pueden usar directamente los pesos de FLAN-UL2 sin ajustar finamente el modelo:
Según el blog original, estas son las mejoras notables:
- El modelo UL2 original solo se entrenó con un campo receptivo de 512, lo que lo hacía no ideal para el N-shot prompting donde N es grande.
- El checkpoint de Flan-UL2 utiliza un campo receptivo de 2048, lo que lo hace más útil para el aprendizaje in-context con pocos ejemplos.
- El modelo original de UL2 también tenía tokens de cambio de modo que eran bastante obligatorios para obtener un buen rendimiento. Sin embargo, resultaban un poco incómodos, ya que esto a menudo requiere algunos cambios durante la inferencia o el ajuste fino. En esta actualización/cambio, continuamos entrenando UL2 20B durante 100k pasos adicionales (con un lote pequeño) para olvidar los “tokens de modo” antes de aplicar el ajuste de instrucciones de Flan. Este punto de control de Flan-UL2 ya no requiere tokens de modo. Google ha publicado las siguientes variantes:
Los puntos de control originales se pueden encontrar aquí.
Ejecución en dispositivos con recursos limitados
El modelo es bastante pesado (~40GB en media precisión), así que si solo quieres ejecutar el modelo, asegúrate de cargarlo en 8bit y usa device_map="auto" para evitar cualquier problema de OOM.
from transformers import AutoModelForSeq2SeqLM, AutoTokenizer, BitsAndBytesConfig
model = AutoModelForSeq2SeqLM.from_pretrained("google/flan-ul2", quantization_config=BitsAndBytesConfig(load_in_8bit=True), device_map="auto")
tokenizer = AutoTokenizer.from_pretrained("google/flan-ul2")
inputs = tokenizer("A step by step recipe to make bolognese pasta:", return_tensors="pt").to(model.device)
outputs = model.generate(**inputs)
print(tokenizer.batch_decode(outputs, skip_special_tokens=True))
['In a large skillet, brown the ground beef and onion over medium heat. Add the garlic']Update on GitHubConsulte la página de documentación de T5 para obtener la referencia de la API, consejos, ejemplos de código y cuadernos.