HuggingFace镜像/flan-t5-large-openmind
模型介绍文件和版本分析
下载使用量0

FLAN-T5 large 模型卡片

drawing

目录

  1. 摘要
  2. 模型详情
  3. 使用方法
  4. 应用场景
  5. 偏差、风险与局限性
  6. 训练详情
  7. 评估
  8. 环境影响
  9. 引用
  10. 模型卡片作者

摘要

如果您已了解 T5,那么 FLAN-T5 在各方面都更胜一筹。在参数数量相同的情况下,这些模型在 1000 多项额外任务上进行了微调,涵盖的语言也更多。

正如摘要开头所述:

Flan-PaLM 540B 在多项基准测试中取得了最先进的性能,例如在五样本 MMLU 上达到 75.2%。我们还公开发布了 Flan-T5 检查点,1 即使与更大的模型(如 PaLM 62B)相比,也实现了强大的少样本性能。总体而言,指令微调是一种提高预训练语言模型性能和可用性的通用方法。

免责声明:本模型卡片的内容由 Hugging Face 团队撰写,部分内容摘抄自 T5 模型卡片。

模型详情

模型描述

  • 模型类型:语言模型
  • 支持语言(NLP):英语、西班牙语、日语、波斯语、印地语、法语、中文、孟加拉语、古吉拉特语、德语、泰卢固语、意大利语、阿拉伯语、波兰语、泰米尔语、马拉地语、马拉雅拉姆语、奥里亚语、旁遮普语、葡萄牙语、乌尔都语、加利西亚语、希伯来语、韩语、加泰罗尼亚语、泰语、荷兰语、印度尼西亚语、越南语、保加利亚语、菲律宾语、高棉语、老挝语、土耳其语、俄语、克罗地亚语、瑞典语、约鲁巴语、库尔德语、缅甸语、马来语、捷克语、芬兰语、索马里语、他加禄语、斯瓦希里语、僧伽罗语、卡纳达语、壮语、伊博语、科萨语、罗马尼亚语、海地语、爱沙尼亚语、斯洛伐克语、立陶宛语、希腊语、尼泊尔语、阿萨姆语、挪威语
  • 许可证:Apache 2.0
  • 相关模型:所有 FLAN-T5 检查点
  • 原始检查点:所有原始 FLAN-T5 检查点
  • 更多信息资源:
    • 研究论文
    • GitHub 仓库
    • Hugging Face FLAN-T5 文档(与 T5 类似)

使用方法

以下是一些关于如何在 transformers 中使用该模型的示例脚本:

使用 PyTorch 模型

在 Openmind 中使用

import torch
import argparse
from openmind import AutoTokenizer, is_torch_npu_available
from transformers import AutoModelForSeq2SeqLM
import time

def parse_args():
   parser = argparse.ArgumentParser(description="Eval the model")
   parser.add_argument(
       "--model_name_or_path",
       type=str,
       help="path or model",
       default="jeffding/flan-t5-large-openmind",
   )
   args = parser.parse_args()
   return args


def main():
   args = parse_args()
   model_path = args.model_name_or_path

   if is_torch_npu_available():
       device = "npu:0"
   else:
       device = "cpu"
   
   tokenizer = AutoTokenizer.from_pretrained(model_path)
   model = AutoModelForSeq2SeqLM.from_pretrained(model_path).to(device)

   data = "translate English to German:That is good."
    
   start_time = time.time()

   encoded = tokenizer([data], return_tensors="pt").to(device)
   translation = model.generate(**encoded)
   result = tokenizer.batch_decode(translation, skip_special_tokens=True)[0]
   print(result)

   end_time = time.time()
   print(f"硬件环境:{device},推理执行时间:{end_time - start_time}秒")

if __name__ == "__main__":
   main()

在 CPU 上运行模型

点击展开

from transformers import T5Tokenizer, T5ForConditionalGeneration

tokenizer = T5Tokenizer.from_pretrained("google/flan-t5-large")
model = T5ForConditionalGeneration.from_pretrained("google/flan-t5-large")

input_text = "translate English to German: How old are you?"
input_ids = tokenizer(input_text, return_tensors="pt").input_ids

outputs = model.generate(input_ids)
print(tokenizer.decode(outputs[0]))

在 GPU 上运行模型

点击展开
# pip install accelerate
from transformers import T5Tokenizer, T5ForConditionalGeneration

tokenizer = T5Tokenizer.from_pretrained("google/flan-t5-large")
model = T5ForConditionalGeneration.from_pretrained("google/flan-t5-large", device_map="auto")

input_text = "translate English to German: How old are you?"
input_ids = tokenizer(input_text, return_tensors="pt").input_ids.to("cuda")

outputs = model.generate(input_ids)
print(tokenizer.decode(outputs[0]))

在 GPU 上使用不同精度运行模型

FP16

点击展开
# pip install accelerate
import torch
from transformers import T5Tokenizer, T5ForConditionalGeneration

tokenizer = T5Tokenizer.from_pretrained("google/flan-t5-large")
model = T5ForConditionalGeneration.from_pretrained("google/flan-t5-large", device_map="auto", torch_dtype=torch.float16)

input_text = "translate English to German: How old are you?"
input_ids = tokenizer(input_text, return_tensors="pt").input_ids.to("cuda")

outputs = model.generate(input_ids)
print(tokenizer.decode(outputs[0]))

INT8

点击展开
# pip install bitsandbytes accelerate
from transformers import T5Tokenizer, T5ForConditionalGeneration

tokenizer = T5Tokenizer.from_pretrained("google/flan-t5-large")
model = T5ForConditionalGeneration.from_pretrained("google/flan-t5-large", device_map="auto", load_in_8bit=True)

input_text = "translate English to German: How old are you?"
input_ids = tokenizer(input_text, return_tensors="pt").input_ids.to("cuda")

outputs = model.generate(input_ids)
print(tokenizer.decode(outputs[0]))

用途

直接用途和下游用途

作者在原始论文的模型卡片中写道:

主要用途是语言模型研究,包括:零样本自然语言处理任务和上下文少样本学习自然语言处理任务的研究,例如推理和问答;推进公平性和安全性研究,以及理解当前大型语言模型的局限性

更多详情请参见研究论文。

超出范围的用途

需要更多信息。

偏见、风险和局限性

本节以下信息复制自模型的官方模型卡片:

Rae等人(2021)指出,包括Flan-T5在内的语言模型有可能被以有害方式用于语言生成。Flan-T5不应直接用于任何应用,除非事先针对该应用的特定安全和公平性问题进行评估。

伦理考虑和风险

Flan-T5在大量文本数据语料库上进行微调,这些数据未经过滤以排除显式内容,也未对现有偏见进行评估。因此,模型本身可能容易生成同样不适当的内容或复制底层数据中固有的偏见。

已知局限性

Flan-T5尚未在实际应用中进行测试。

敏感用途:

Flan-T5不应应用于任何不可接受的用例,例如生成辱骂性言论。

训练详情

训练数据

该模型在多种任务的混合数据上进行训练,包括下表中描述的任务(来自原始论文,图2):

table.png

训练过程

根据原始论文中的模型卡片:

这些模型基于预训练的T5(Raffel等人,2020),并通过指令进行微调,以获得更好的零样本和少样本性能。每个T5模型大小对应一个微调的Flan模型。

该模型在TPU v3或TPU v4 pods上进行训练,使用t5x代码库以及jax。

评估

测试数据、因素与指标

作者在涵盖多种语言(共1836种)的各类任务上对模型进行了评估。部分定量评估结果如下表所示: image.png 完整详情,请查阅研究论文。

结果

FLAN-T5-Large的完整结果,请参见研究论文中的表3。

环境影响

可使用Lacoste等人(2019)提出的机器学习影响计算器来估算碳排放。

  • 硬件类型: Google Cloud TPU Pods - TPU v3 或 TPU v4 | 芯片数量 ≥ 4。
  • 使用时长: 需更多信息
  • 云服务提供商: GCP
  • 计算区域: 需更多信息
  • 碳排放量: 需更多信息

引用

BibTeX:

@misc{https://doi.org/10.48550/arxiv.2210.11416,
  doi = {10.48550/ARXIV.2210.11416},
  
  url = {https://arxiv.org/abs/2210.11416},
  
  author = {Chung, Hyung Won and Hou, Le and Longpre, Shayne and Zoph, Barret and Tay, Yi and Fedus, William and Li, Eric and Wang, Xuezhi and Dehghani, Mostafa and Brahma, Siddhartha and Webson, Albert and Gu, Shixiang Shane and Dai, Zhuyun and Suzgun, Mirac and Chen, Xinyun and Chowdhery, Aakanksha and Narang, Sharan and Mishra, Gaurav and Yu, Adams and Zhao, Vincent and Huang, Yanping and Dai, Andrew and Yu, Hongkun and Petrov, Slav and Chi, Ed H. and Dean, Jeff and Devlin, Jacob and Roberts, Adam and Zhou, Denny and Le, Quoc V. and Wei, Jason},
  
  keywords = {Machine Learning (cs.LG), Computation and Language (cs.CL), FOS: Computer and information sciences, FOS: Computer and information sciences},
  
  title = {Scaling Instruction-Finetuned Language Models},
  
  publisher = {arXiv},
  
  year = {2022},
  
  copyright = {Creative Commons Attribution 4.0 International}
}