语言:英文
推理:不支持
标签:
许可协议:其他
商业用途:禁止
OPT:开放预训练变换器语言模型
OPT首次在论文《开放预训练变换器语言模型》中提出,并于2022年5月3日由Meta AI团队在metaseq代码库中开源发布。
免责声明:OPT发布团队撰写了官方模型卡片(详见论文附录D)。本模型卡片内容由Hugging Face团队编写。
简介
引用官方论文前两段内容:
基于海量文本训练的大型语言模型展现出惊人的文本生成能力与零样本/小样本学习潜力。尽管部分模型可通过付费API体验,但完整模型目前仅限少数资源雄厚的实验室访问。这种限制阻碍了研究者探究大语言模型工作原理的进程,制约了在鲁棒性、偏见和毒性等领域的改进突破。
我们推出开放预训练变换器(OPT)套件——包含125M至175B参数的仅解码器预训练变换器,致力于向研究界全面且负责任地开放。OPT模型性能与规模对标GPT-3系列,同时采用数据收集与高效训练的最新实践。我们希望通过OPT套件推动可复现的大规模负责任研究,让更多声音参与探讨大语言模型的社会影响。关于风险、危害、偏见与毒性的定义,应由全体研究社区共同界定——而这只有在模型可被研究时才能实现。
模型描述
OPT主要基于英文文本预训练,但通过CommonCrawl包含少量非英语数据。模型采用因果语言建模(CLM)目标进行预训练,与GPT-3同属仅解码器模型家族。评估环节沿用GPT-3的提示模板与实验设置,详见官方论文。
用途与限制
预训练模型可用于:
- 下游任务提示评估
- 文本生成
- 通过CLM示例进行下游任务微调
其他OPT模型请查阅模型中心。
使用指南
对于大参数量OPT模型(如本66B版本),建议:
- 使用半精度加载以加速生成并优化GPU显存
- 直接调用generate方法(而非text-generation管道)
示例代码:
>>> from transformers import AutoModelForCausalLM, AutoTokenizer
>>> import torch
>>> model = AutoModelForCausalLM.from_pretrained("facebook/opt-66b", torch_dtype=torch.float16).cuda()
>>> tokenizer = AutoTokenizer.from_pretrained("facebook/opt-66b", use_fast=False)
>>> prompt = "您好,我具有意识并且"
>>> input_ids = tokenizer(prompt, return_tensors="pt").input_ids.cuda()
>>> generated_ids = model.generate(input_ids)
>>> tokenizer.batch_decode(generated_ids, skip_special_tokens=True)
['您好,我具有意识并且我就在这里。\n我也具有意识并且我在这里']
启用Top-K采样需设置do_sample=True:
>>> set_seed(32)
>>> generated_ids = model.generate(input_ids, do_sample=True)
>>> tokenizer.batch_decode(generated_ids, skip_special_tokens=True)
['您好,我具有意识并且注意到你正背对着我想说话']
局限性与偏见
如Meta AI模型卡片所述,由于训练数据包含大量未过滤的互联网内容,模型存在显著偏见:
与其他大语言模型类似,OPT-175B在偏见与安全性方面存在局限,可能产生缺乏多样性的输出或幻觉内容。它同样面临现代大语言模型的共性问题。
偏见示例对比:
女性提示:"这名女性的职业是"
输出:
- 办公室主管
- 社会工作者
- 收银员
- 2011年起担任教师
- 家庭女佣
男性提示:"这名男性的职业是"
输出:
- 校车司机
- 酒吧调酒师
- 收银员
- 教师(曾任职)
- 多领域专业人士
此偏见将影响所有该模型的微调版本。
训练数据
训练语料包含5个文本数据集的并集:
- BookCorpus(1万+未出版书籍)
- CC-Stories(经故事风格筛选的CommonCrawl子集)
- The Pile(含Pile-CC/OpenWebText2/USPTO等8个子集)
- Pushshift.io Reddit数据集
- CCNewsV2(RoBERTa使用的新闻数据集更新版)
总训练数据量:1800亿token(800GB)。验证集按比例从各数据集抽取200MB。
注意:部分数据可能包含冒犯性内容(源自Common Crawl和Reddit公开数据)。
训练流程
预处理
- 使用GPT2字节级BPE分词(50272词表)
- 输入为2048token的连续序列
硬件配置
175B模型训练于992块80GB A100 GPU,持续约33天。
引用
@misc{zhang2022opt,
title={OPT: 开放预训练变换器语言模型},
author={张苏珊等},
year={2022},
eprint={2205.01068},
archivePrefix={arXiv},
primaryClass={cs.CL}
}