Transformers documentation

FLAN-UL2

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Este modelo foi contribuído para o Hugging Face Transformers em 2023-06-20.

FLAN-UL2

Visão geral

Flan-UL2 é um modelo encoder-decoder baseado na arquitetura T5. Ele utiliza a mesma configuração do modelo UL2 lançado no início do ano passado. Ele foi ajustado finamente usando o ajuste de prompt “Flan” e a coleção de dados. Assim como o Flan-T5, é possível usar diretamente os pesos do FLAN-UL2 sem ajustar finamente o modelo:

De acordo com o blog original, estas são as melhorias notáveis:

  • O modelo original UL2 foi treinado apenas com campo receptivo de 512, o que o tornava não ideal para N-shot prompting em que N é grande.
  • O checkpoint Flan-UL2 usa um campo receptivo de 2048, o que o torna mais utilizável para aprendizado in-context com poucos exemplos.
  • O modelo original UL2 também possuía tokens de troca de modo, que eram bastante obrigatórios para obter bom desempenho. No entanto, eles eram um pouco incômodos, pois isso frequentemente exigia algumas alterações durante a inferência ou o ajuste fino. Nesta atualização, continuamos o treinamento do UL2 20B por mais 100 mil passos (com lote pequeno) para “esquecer” os “tokens de modo” antes de aplicar o ajuste fino de instruções Flan. Este checkpoint Flan-UL2 não requer mais tokens de modo. A Google lançou as seguintes variantes:

Os checkpoints originais podem ser encontrados aqui.

Executando em dispositivos com recursos limitados

O modelo é bastante pesado (~40GB em meia precisão), então, se você apenas quiser executar o modelo, certifique-se de carregá-lo em 8bit e usar device_map="auto" para garantir que não haverá nenhum 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']

Consulte a página de documentação do T5 para referência da API, dicas, exemplos de código e notebooks.

Update on GitHub