Transformers documentation
FLAN-UL2
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']Update on GitHubConsulte a página de documentação do T5 para referência da API, dicas, exemplos de código e notebooks.