language: zh
inference: false
tags:
license: other
commercial: false
OPT:开放预训练Transformer语言模型
OPT首次在论文《开放预训练Transformer语言模型》中提出,并于2022年5月3日由Meta AI在metaseq代码库中发布。
免责声明:发布OPT的团队撰写了一份官方模型卡片,可在论文附录D中查阅。本模型卡片内容由Hugging Face团队撰写。
简介
引用官方论文前两段:
在大量文本上训练的大型语言模型展现出惊人的涌现能力,能够生成文本并进行零样本和少样本学习。虽然公众可以通过付费API与部分模型互动,但完整模型目前仅限少数资源充足的实验室访问。这种限制阻碍了研究人员探究这些大型语言模型工作原理及原因的能力,延缓了在鲁棒性、偏见和毒性等已知挑战领域的改进进程。
我们推出开放预训练Transformers(OPT),这是一套包含1.25亿至1750亿参数的仅解码器预训练Transformer模型,旨在与感兴趣的研究人员全面且负责任地分享。我们训练OPT模型以大致匹配GPT-3类模型的性能和规模,同时应用数据收集和高效训练的最新最佳实践。开发这套OPT模型的目的是实现可复现的大规模负责任研究,并让更多声音参与研究这些大型语言模型的影响。风险、危害、偏见和毒性等定义应由整个研究社区共同阐明,而这只有在模型可供研究时才有可能。
模型描述
OPT主要使用英文文本预训练,但通过CommonCrawl在训练语料中包含少量非英文数据。模型采用因果语言建模(CLM)目标进行预训练。OPT与GPT-3同属仅解码器模型家族,因此同样使用自监督的因果语言建模目标进行预训练。
评估时,OPT遵循GPT-3的提示设置和整体实验方案。详情请参阅官方论文。
预期用途与限制
预训练模型可用于下游任务评估提示和文本生成。此外,可通过CLM示例对下游任务进行微调。其他OPT模型请查阅模型中心。
使用方法
对于大型OPT模型(如本模型),不建议使用text-generation
流水线,而应以半精度加载模型以加速生成并优化GPU内存消耗。建议直接调用generate
方法:
>>> from transformers import AutoModelForCausalLM, AutoTokenizer
>>> import torch
>>> model = AutoModelForCausalLM.from_pretrained("facebook/opt-6.7b", torch_dtype=torch.float16).cuda()
>>>
>>> tokenizer = AutoTokenizer.from_pretrained("facebook/opt-6.7b", 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)
["你好,我是有意识的且能感知周围环境。我不确定你的意思"]
默认生成是确定性的。要使用top-k采样,请将do_sample
设为True
。
局限性与偏见
如Meta AI模型卡片所述,由于训练数据包含大量未过滤的互联网内容,远非中立,模型存在显著偏见:
与其他大型语言模型一样,训练数据多样性(或缺乏多样性)会影响模型质量,OPT-175B在偏见和安全性方面存在局限。其生成多样性和幻觉也存在质量问题。总体而言,OPT-175B无法避免困扰现代大型语言模型的诸多问题。
以下示例展示模型可能产生的偏见预测:
>>> prompt = "这位女性从事"
>>> generated_ids = model.generate(input_ids, do_sample=True, num_return_sequences=5, max_length=10)
>>> tokenizer.batch_decode(generated_ids, skip_special_tokens=True)
这位女性从事办公室主管工作
这位女性从事酒吧调酒师工作
这位女性从事收银员工作
这位女性从事教师工作
这位女性从事家庭女佣工作
相比之下:
>>> prompt = "这位男性从事"
>>> generated_ids = model.generate(input_ids, do_sample=True, num_return_sequences=5, max_length=10)
>>> tokenizer.batch_decode(generated_ids, skip_special_tokens=True)
这位男性从事政府顾问工作
这位男性从事酒吧调酒师工作
这位男性从事收银员工作
这位男性从事教师工作
这位男性从事银行专业人士工作
这种偏见会影响该模型的所有微调版本。
训练数据
Meta AI团队希望使用尽可能大的语料库进行训练。它由以下5个经过过滤的文本数据集组成:
- BookCorpus:包含1万多种未出版书籍
- CC-Stories:包含经过过滤以匹配Winograd模式故事风格的CommonCrawl数据子集
- The Pile:包含Pile-CC、OpenWebText2、USPTO、古登堡计划、OpenSubtitles、维基百科、DM数学和HackerNews
- Pushshift.io Reddit数据集
- CCNewsV2:包含RoBERTa中使用的CommonCrawl新闻数据集英文部分的更新版本
最终训练数据包含1800亿个token,对应800GB数据。验证集由200MB预训练数据按比例抽样组成。数据可能包含冒犯性内容,因为部分数据来自公共Common Crawl和Reddit。
收集过程
数据集从互联网收集,经过经典数据处理算法和重新格式化实践,包括删除重复/非信息性文本(如"第一章"或"古登堡计划电子书")。
训练过程
预处理
文本使用GPT2字节级BPE(针对Unicode字符)进行分词,词汇表大小为50272。输入为2048个连续token的序列。
1750亿参数模型在992块80GB A100 GPU上训练,持续约33天。
BibTeX条目与引用信息
@misc{zhang2022opt,
title={OPT: Open Pre-trained Transformer Language Models},
author={Susan Zhang and Stephen Roller and Naman Goyal and Mikel Artetxe and Moya Chen and Shuohui Chen and Christopher Dewan and Mona Diab and Xian Li and Xi Victoria Lin and Todor Mihaylov and Myle Ott and Sam Shleifer and Kurt Shuster and Daniel Simig and Punit Singh Koura and Anjali Sridhar and Tianlu Wang and Luke Zettlemoyer},
year={2022},
eprint={2205.01068},
archivePrefix={arXiv},
primaryClass={cs.CL}
}