FLAN-UL2
概述
Flan-UL2 是一个基于 T5 架构的编码器解码器模型。它使用了与去年早些时候发布的 UL2 模型相同的配置。
它是通过“Flan”提示调优和数据集收集进行微调的。与 Flan-T5
类似,可以直接使用 FLAN-UL2 的权重而无需对模型进行微调:
根据原始博客,以下是显著的改进:
- 原始的UL2模型仅使用512的感受野进行训练,这使得它在N-shot提示(其中N较大)时表现不理想。
- Flan-UL2 检查点使用 2048 的感知字段,这使得它在少样本上下文学习中更加实用。
- 原始的UL2模型也有模式切换标记,这些标记对于获得良好的性能是相当必要的。然而,它们有点麻烦,因为这通常需要在推理或微调期间进行一些更改。在此更新/更改中,我们继续训练UL2 20B额外的100k步(使用小批量),以便在应用Flan指令调优之前忘记“模式标记”。这个Flan-UL2检查点不再需要模式标记。 Google已经发布了以下变体:
原始检查点可以在这里找到。
在低资源设备上运行
模型相当大(半精度下约40GB),所以如果你只想运行模型,请确保以8bit加载模型,并使用device_map="auto"
以确保不会出现内存不足的问题!
>>> from transformers import AutoModelForSeq2SeqLM, AutoTokenizer
>>> model = AutoModelForSeq2SeqLM.from_pretrained("google/flan-ul2", 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")
>>> 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']
请参考T5的文档页面获取API参考、提示、代码示例和笔记本。