Meta AI 开源1750亿参数大模型- OPT,FlagAI一键调用!

简介

Meta AI 开源 OPT系列模型,其中最大模型1750 亿参数(需申请访问权限)媲美 GPT-3。OPT系列模型包括了多组不同参数规模的模型权重,如图:

OPT开源了一系列大模型,但是实际调用这些模型有很高的技术门槛。为了推广大模型的技术,FlagAI一键加载OPT不同版本的模型,后面也会持续完善。本篇文章主要简要科普OPT模型的结构,列举复现OPT模型的过程中遇到的困难,并给出使用FlagAI快速加载OPT模型示例代码。关于FlagAI更详细的介绍可以查阅 大模型一键调用方案来了!北京智源人工智能研究院推出NLP大模型训练框架FlagAI

FlagAI仓库地址: github.com/BAAI-Open/Fl

OPT模型论文地址: arxiv.org/pdf/2205.0106

Github仓库地址: github.com/facebookrese

175B模型申请访问权限地址 : forms.gle/dag8g7nKiR4o4

背景

OPT全称Open Pre-trained Transformer Language Models,即“开放的预训练Transformer语言模型”。我们都知道GPT-3有着非常惊艳的效果,网上也有很多有意思的demo展示,但是其模型权重并没有开源,我们无法查看到其内部具体的原理;而这次Meta AI 直接开源千亿参数的OPT模型,对标GPT3,模型性能方面,在多个任务,不管是zero-shot还是multi-shot中都取得了与GPT-3可比的成绩(左图为zero-shot,右图为multi-shot):

值得注意的是,在模型结构方面,OPT与GPT系列模型均采用了Transformer-Decoder结构,使用了下三角的Mask,因此在解码时自左向右进行自回归的预测。

使用FlagAI快速下载并使用OPT系列模型

目前FlagAI已经集成opt125m、opt350m、opt1.3b、opt2.7b、opt6.7b、opt13b、opt30b模型,更大参数量的模型正在陆续支持,只需要两行代码便可以直接进行加载:
如果已经安装了FlagAI (pip install -U flagai),便可以通过上述代码直接进行下载、使用。
opt-13b模型下载过程如图所示:

生成结果为:

输入:
How about the book The Old Man and the Sea?
Thanks for your question, let me share my thoughts: 
I think that "The Old Man and the Sea" is a great read. 
It has many themes which are very interesting but also relatable in some cases (not only for readers). 
In conclusion, I would definitely recommend this book to everybody.

100亿以上模型的加载和推理

模型参数在10b以上的时候,单卡可能就会遇到OOM的问题。为此,可以采用cpu加载/多GPU加载的方式。

CPU加载方式

  from flagai.model.predictor.predictor import Predictor
  from flagai.auto_model.auto_loader import AutoLoader
  loader = AutoLoader(task_name="lm",
                      model_name="opt-30b-en")
  model = loader.get_model()
  tokenizer = loader.get_tokenizer()
  model.eval()
  text = "The trophy doesn’t fit in the suitcase because "
  predictor = Predictor(model, tokenizer)
  out = predictor.predict_generate_randomsample(text,
                                                input_max_length=100,