Transformers documentation
FLAN-UL2
Ce modèle a été contribué à Hugging Face Transformers le 2023-06-20.
FLAN-UL2
Aperçu
Flan-UL2 est un modèle encodeur-décodeur basé sur l’architecture T5. Il utilise la même configuration que le modèle UL2 publié plus tôt dans l’année.
Il a été affiné à l’aide de l’ajustement par prompts « Flan » et de la collecte de données associée. De même que pour Flan-T5, il est possible d’utiliser directement les poids de FLAN-UL2 sans réentraîner le modèle :
Selon le blog d'origine, voici les améliorations notables :
- Le modèle UL2 d'origine n'a été entraîné qu'avec un champ récepteur de 512, ce qui le rendait non idéal pour le N-shot prompting lorsque N est grand.
- Le point de contrôle Flan-UL2 utilise un champ récepteur de 2048, ce qui le rend plus utilisable pour l'apprentissage en contexte avec peu d'exemples (few-shot).
- Le modèle UL2 d’origine comportait également des jetons de changement de mode, qui étaient plutôt indispensables pour obtenir de bonnes performances. Cependant, ils étaient un peu contraignants, car cela exigeait souvent des modifications lors de l’inférence ou de l’ajustement fin. Dans cette mise à jour, nous continuons l’entraînement de UL2 20B pendant 100 k étapes supplémentaires (avec un petit lot) afin de faire oublier les « jetons de mode » avant d’appliquer l’ajustement fin d’instructions Flan. Ce point de contrôle Flan-UL2 n’exige plus de jetons de mode. Google a publié les variantes suivantes :
Les points de contrôle originaux peuvent être trouvés ici.
Exécution sur des appareils à ressources limitées
Le modèle est assez lourd (~40 Go en demi-précision), donc si vous souhaitez simplement exécuter le modèle, assurez-vous de le charger en 8 bits et d'utiliser device_map="auto" pour éviter tout problème de mémoire insuffisante (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 GitHubConsultez la page de documentation de T5 pour la référence de l’API, des conseils, des exemples de code et des notebooks.