本周AI热点回顾:OpenAI新模型引燃AI社区,从文本直接生成图像,才发布两天就被复现?

01/10 20:30
阅读数 9

点击左上方蓝字关注我们

01

OpenAI新模型引燃AI社区,不用跨界也能从文本生成图像,打破自然语言与视觉次元壁

自然语言与视觉的次元壁正在被打破。这不,OpenAI 最近连发大招,提出两个连接文本与图像的神经网络:DALL·E 和 CLIP。DALL·E 可以基于文本直接生成图像,CLIP 则能够完成图像与文本类别的匹配。OpenAI 的新工作引起了 AI 圈的一阵欢呼。

Coursera 创始人、斯坦福大学教授吴恩达也表示祝贺,并选出了自己喜欢的「蓝色衬衫 + 黑色长裤」AI 设计。

那么,大佬打算购入几件其他「蓝色」的衬衫吗

OpenAI 联合创始人、首席科学家 Ilya Sutskever 表示:人工智能的长期目标是构建「多模态」神经网络,即 AI 系统能够学习多个不同模态的概念(主要是文本和视觉领域),从而更好地理解世界。而 DALL·E 和 CLIP 使我们更接近「多模态 AI 系统」这一目标。

第一个神经网络 DALL·E 可以将以自然语言形式表达的大量概念转换为恰当的图像。值得注意的是,DALL·E 使用了 GPT-3 同样的方法,只不过 DALL·E 将其应用于文本 - 图像对。

DALL·E 示例。给出一句话「牛油果形状的椅子」,就可以获得绿油油、形态各异的牛油果椅子图像。

另一个神经网络 CLIP 能够可靠地执行一系列惊人的视觉识别任务。给出一组以语言形式表述的类别,CLIP 能够立即将一张图像与其中某个类别进行匹配,而且它不像标准神经网络那样需要针对这些类别的特定数据进行微调。在 ImageNet 基准上,CLIP 的性能超过 ResNet-50,在识别不常见图像任务中的性能远超 ResNet。

DALL·E 是 GPT-3 的 120 亿参数版本,经文本 - 图像对数据集训练后,可基于文本描述生成图像。DALL·E 这个名称来源于皮克斯动画经典作品《机器人总动员(WALL·E)》。

有意思的是,它还可以将动物和物体拟人化,将一些无关的概念以一种合理的方式组合起来。

比如,穿着芭蕾 tutu 裙遛狗的胡萝卜:

细细观察,可以看出 DALL·E 是怎样将人体构造迁移到其他生物的。如果你想让一支胡萝卜喝拿铁咖啡或骑独轮车,DALL·E 会把生成图像中的方巾、手脚放在合理的位置。

还比如,生成写着 OpenAI 的商店招牌:

通常 DALL·E 写入的字符串越长,成功率会降低一些。而文字有重复的时候,成功率会变高。尽管样本变得更简单,但随着采样温度的降低,成功率有时候会提升。

和 GPT-3 一样,DALL·E 是一种 Transformer 语言模型。它以包含多达 1280 个 token 的单数据流形式接收文本和图像,并利用最大似然进行训练,逐个生成所有 token。

token 是来自不连续词汇表的任意符号。对于人类来说,每个英文字母都是来自字母表的 token。DALL·E 的词汇表有文本和图像的 token。每个图像的文本描述使用最大 256BPE 编码的 token 表示,词汇表的大小是 16384;图像则使用 1024 个 token 表示,词汇表大小是 8192。

在最新博客中,OpenAI 详细介绍了 DALL·E 的「百变功能」,每一段文字的生成示例展示了 512 个生成结果中的前 32 名(根据 CLIP 的排序,过程中没有任何人工参与挑选的步骤)。

信息来源:机器之心

02

DALL·E才发布两天就被复现?官方论文还没出,大神们就在自制代码和视频了

没想到,OpenAI刚公布DALL·E,就已经有人在复现了。

虽然还是个半成品,不过大体框架已经搭建好了,一位第三方作者Philip Wang正在施工中。DALL·E是前两天刚公布的文字转图像网络框架,目前只公布了项目结果,甚至连官方论文都还没出。

论文还没出,就开始复现了论文复现的依据,来自一位叫做Yannic Kilcher的博主制作的油管视频。他在视频中,对DALL·E的原理结构进行了猜测。

他表示,这些猜测并不代表真实情况,也许DALL·E的论文出来后,会颠覆他的预想。

Yannic认为,DALL·E应该是VQ-VAE模型、和类似于GPT-3的语言模型的结合。GPT-3这类语言模型,有着非常强大的语言建模能力,可以对输入的文字描述进行很好的拆分理解。

而VAE模型,则是一种强大的图像生成Transformer,在训练完成后,模型会去掉编码器(encoder)的部分,只留下解码器,用于生成图像。将二者结合的话,就能像下图中的那个小方块一样,将输入的各种物体,根据理解的文字,结合成具有实际意义的一幅画面。

例如,输入人、太阳和树,模型就能输出“太阳下,树底坐着一个人”所描绘的图像。

要怎么实现?先简单分析一下VQ-VAE的模型原理。

与VAE相似,这也是一个Transformer结构的模型,编码器对图像进行编码后,将编码数据送入隐空间,解码器再从隐空间中,对图像进行重构。相比于VAE,VQ-VAE隐变量的每一维都是离散整数,也就是说,它的隐空间其实是一个编码簿(codebook),包含提取出的各种向量信息。

在DALL·E里,这个编码簿,本质上可以等价为一个词汇表(vocabulary)。这个词汇表,专门用来存储对图像的各种描述。对输入图像进行编码时,本质上是将图像分成各种像素块。期间,会产生各种各样的图像信息。假设天蓝色的格子,包含“天空”的描述信息,那么在重建时,解码器读取到“天空”信息,就会分配顶端的一系列像素,用来生成天空。

在完成VQ-VAE的训练后,模型就得到了一个只有解码器看得懂的编码簿。届时,将由类似于GPT-3的语言模型,对输入的文字进行解码,转换成只有编码簿才能看懂的向量信息。然后,编码簿会将这些信息进行排序,依次列出每个像素块应该生成的数据,并告诉解码器。

解码器会合成这些像素数据,得到最终的图像。

为了实现这样的目标,既要对类似于GPT-3的语言模型进行训练,也要提前对VQ-VAE模型进行预训练。

而且,还需要对二者融合后的模型进行训练。这位作者复现的DALL·E,也是依据这个视频解析的原理复现的。

目前,DALL·E的复现项目还没有完成,作者仍然在加工中(WIP),不过已经有700多个Star。

作者希望写出一个PyTorch版本的DALL·E,现在的框架中,已经包含了VAE的训练、CLIP的训练,以及VAE和CLIP融合后的模型预训练。

此外,还包括DALL·E的训练、和将预训练VAE模型融合进DALL·E模型中的部分。

上述模块训练完成后,就能用DALL·E来做文字生成图像了。

作者介绍:

Philip Wang,本硕毕业于康奈尔大学,博士毕业于密歇根大学医学院。他的研究兴趣是AI(深度学习方向),以及医疗健康,目前GitHub上已有1.7k个followers。

关于DALL·E本身,视频解析博主Yannic也表示,之所以能取得这么好的效果,并不全是因为模型设计。

DALL·E,极可能也像GPT-3一样,用了样本量庞大的数据集,来对模型进行训练。

网友表示,难以想象训练这个玩意所用的GPU数量,气候又要变暖了。

项目地址:
https://github.com/lucidrains/DALLE-pytorch

DALL·E视频解析:
https://www.youtube.com/watch?v=j4xgkjWlfL4

信息来源:量子位

03

Paddle Serving全新设计Pipeline Serving!带来更高吞吐量、更高GPU利用率

 

在深度学习的产业应用中,千万不要认为炼制出神丹就万事大吉了,企业还需要面临一个挑战,那就是大规模推理部署。对工业级部署而言,要求的条件往往非常繁多且苛刻,模型大小、业务应用、硬件性能等条件的差异,都会影响模型部署的方式。而理想的部署方式,往往会让推理的效率更高,AI赋能产业的落地更加事半功倍。

飞桨支持多种部署方式,包括高性能的服务器部署、多平台的端侧部署、网页端的web部署以及快捷的服务化部署,企业可以根据业务需求灵活选择。

Paddle Serving是飞桨服务化部署框架,为AI+落地的最后一公里提供专业、可靠、易用的服务。Paddle Serving 秉承模型即服务(Model As A Service,MAAS)的理念,让用户在使用飞桨框架成功完成模型训练的那一刻,收获的不再只是模型,而是同时拥有了该模型的推理服务。用户可以在短短的几分钟内,将模型迅速的转化为一个可以在服务器端部署的远程服务。

对企业而言,如果业务场景复杂,需要灵活的按需扩展,选择Paddle Serving进行部署就再正确不过。比如在IFAW与百度合作开发的“濒危动物AI守护者”项目中,利用AI技术升级传统的检测手段,模型的输入和输出更新频繁,使用Paddle Serving进行部署,短时间完成了从模型到远程服务的转化过程。

在全新的飞桨框架2.0 RC下,Paddle Serving 0.4.0版本有如下三点核心升级。

  • 支持Pipeline Serving全异步设计的推理服务部署框架,实验证明,OCR任务的吞吐量提升1.5倍,GPU利用率提升1倍。

  • 支持NVIDIA TensorRT高性能推理库,实现模型推理低延迟、高吞吐。

  • 支持多系统、多语言客户端,覆盖更多的部署场景。

亮点一:支持Pipeline Serving全异步设计的的推理服务部署框架

在AI工业落地时,多个深度学习模型组合使用是解决现实问题的常规手段。以卡证识别任务为例,图文识别需要图像预处理、图像表示计算、文本切词、语义表示计算和匹配计算等多个模型共同使用。但多模型应用设计复杂,为了降低开发和维护难度,同时保证服务高可用,通常会采用串行或简单的并行方式,但此时延时仅达到可用状态,而GPU利用率偏低。

Pipeline Serving是一个全异步设计的推理服务部署框架,其Server端基于图执行引擎设计,能够并行处理同一阶段模型的计算,从而大大提升了GPU利用率,加快推理的效率。

如下图所示,图执行引擎由 OP 和 Channel 两部分构成,相连接的 OP 之间会共享一个 Channel。Request通过RPC方式将数据输入到图执行引擎(默认支持auto-batching),执行结果会返回给请求端。

亮点二:支持NVIDIA TensorRT高性能推理库,实现模型推理低延迟、高吞吐

在全新版本中,Paddle Serving支持使用NVIDIA TensorRT对模型推理进行加速。NVIDIA TensorRT是高性能的深度学习推理库,可为深度学习的推理应用程序提供低延迟、高吞吐量。飞桨采用子图的形式对TensorRT进行集成,从而提升模型的推理性能。

集成TensorRT版本编译方法请参见:

https://github.com/PaddlePaddle/Serving/blob/v0.4.0/doc/COMPILE_CN.md

使用TensorRT进行推理时,只需要启动PaddleServing服务时添加命令行参数--use_trt即可。以波士顿房价预测任务为例,使用TensorRT启动RPC推理服务的命令如下所示:

python -m paddle_serving_server.serve --model uci_housing_model --thread 10 --port 9292 –use_trt

亮点三:支持多平台、多语言客户端,提升使用便捷性

  • 支持Linux/Windows/Mac多系统编译部署

Paddle Serving目前支持在Linux/Windows/Mac上编译部署

  • 支持C++、Python、Java、Go多语言客户端

Paddle Serving支持包括C++、Python、Java、Go等多种语言。需要注意的是,多语言客户端要与多语言服务端配套使用,当前版本下(0.4.0),服务端需要将Server改为MultiLangServer(如果是以命令行启动的话,只需要添加--use_multilang参数)。

Java客户端参考文档:

https://github.com/PaddlePaddle/Serving/blob/develop/doc/JAVA_SDK_CN.md

Go客户端参考文档:

https://github.com/PaddlePaddle/Serving/blob/develop/doc/IMDB_GO_CLIENT_CN.md

Paddle Serving github地址:

https://github.com/PaddlePaddle/Serving

信息来源:飞桨PaddlePaddle

04

刚刚,微软和谷歌在SuperGLUE榜单上暴锤人类!OpenAI用「字生图」只是前菜

AI全方面完胜人类,是时间问题,还是技术问题?本周,人类受到了来自AI的2021第一波挑衅:OpenAI的DALL-E 和 CLIP。

 

你只要来段文字命令:给我来个「穿着蓝色衬衫和黑色打褶裤的男模特。」

叮咚!请查收:

如果说画画写字都是小儿科,那看看NLP新基准SuperGLUE的刷新榜单,人类已经一再退步到无地自容了。

GLUE的后辈:SuperGLUE

近几年,用于预训练和迁移学习的新模型和方法推动了一系列语言理解任务的性能显著提高。曾经的GLUE(General Language Understanding Evaluation )基准提供了一个单一的数字指标,总结了在一系列不同的此类任务上取得的进展,但该基准的表现最近已接近非专家人类的水平,进一步研究的空间有限。

 

2019年末,Facebook、纽约大学、华盛顿大学和 DeepMind 的研究人员提出了 SuperGLUE,这是一种人工智能的新基准(Benchmark),旨在总结各种语言任务的研究进展。基于一年前引入的 GLUE 基准,SuperGLUE 包括一系列更难理解的语言挑战、改进的资源和一个公开的排行榜。

 

 

当 SuperGLUE 被引入时,表现最好的模型和排行榜上的人类表现之间有将近20分的差距。

 

但截至1月初,微软的「DeBERTa」和谷歌的「T5 + Meena」超越了人类基线,成为首次超越人类基线的模型。

 

 

正如研究人员在介绍SuperGLUE的论文中所写的那样,他们的基准旨在成为一个简单的、难以游戏(hard-to-game)的衡量标准,以衡量英语通用语言理解技术的进展。它包括8个从现有数据中抽取的语言理解任务,并附有一个性能指标以及一个分析工具包。

 

 

SuperGLUE任务包括以下几项:

 

 

不过,SuperGLUE并不是一个完美的或完整的自然语言能力的测试。就连DeBERTa背后的微软团队自己也指出,他们的模型 "绝非 "达到自然语言理解的人类级智能。他们同时表示,需要研究上的突破,以及新的基准来衡量其模型效果。

 

SuperGLUE 还尝试使用 Winogender Schemas 来衡量模型中的性别偏见,这些模型中的句子仅仅因为一个代词在句子中的性别而有所不同。然而,研究人员也指出,这种测量方法有其局限性,因为它只能提供积极的预测值: 尽管一个不好的偏见得分清楚地证明一个模型表现出性别偏见,但是一个好的得分并不意味着这个模型是没有偏见的。

谷歌团队尚未详细说明导致其模型在SuperGLUE上创纪录的性能的原因,但DeBERTa背后的微软研究人员在今天早上早些时候发表的一篇博客文章中详细介绍了他们的工作。

DeBERTa并不是算是一个新模型,它是去年开源的。但研究人员表示,他们训练了一个15亿个参数的更大版本。它将以开源的方式发布,并集成到微软图灵自然语言表示模型的下一个版本中,该模型支持Bing、Office、Dynamics和Azure等产品。

 

 

DeBERTa 是通过masked language modeling (MLM)进行预训练,即mask掉中心词后通过上下文来预测被mask掉的单词是什么。DeBERTa 在MLM中同时使用了上下文词的内容和位置信息,例如,它能够识别「a new store opened beside the new mall」句子中的「 store」和「 mall」 ,这两个词在句子中发挥不同的语法作用。

 

与其他一些模型不同,DeBERTa 解释了词语在语言建模过程中的绝对位置。此外,它计算模型中的参数,转换输入数据和测量基于相对位置的词与词之间依赖的强度。例如,DeBERTa能够理解「深度」和「学习」这两个词之间的依存关系,当它们同时出现时,比它们出现在不同的句子中时要强烈得多。

 

图:DeBERTa在MNLI和SQuAD2.0上的表现

 

DeBERTa 也受益于对抗训练,这种技术利用了从训练数据的细微变化中衍生出来的对抗样本。在训练过程中,将这些样本输入模型,以提高模型的泛化能力。

 

微软的研究人员希望下一步探索如何使 DeBERTa 能够应用到新的子任务或基本的问题解决技能上去,这是一个被称为compositional generalization的概念。更进一步则可能是更明确地纳入所谓的组合结构,这可能需要将人工智能与符号推理结合起来。换句话说,根据数学和逻辑规则来操纵符号和表达式。

 

微软的研究人员写道: 「DeBERTa在SuperGLUE上超越人类的表现,标志着通向人工智能的一个重要里程碑,但与DeBERTa不同的是,人类非常善于利用从不同任务中学到的知识,在没有或很少有具体任务演示的情况下解决新任务。」

信息来源:新智元

05

这个开源的“抢茅台脚本”,火了

前两天有大佬在 Github 上开源了一个抢茅台的脚本,目前已经 1.4k ,我前一天看的时候才 500 star,是真的火起来了,不得不感叹,这传播速度也太大了吧。

看了下代码,发现这个脚本还是用 Python 写的,我啪的一下,很快,就把运行环境给搭建起来了。

第一步,把项目代码下载到本地并解压。


第二步,进入到解压后的目录中,使用 venv 创建一个虚拟环境,注意一定要使用 Python 3,创建完成后进入虚拟环境

# 创建虚拟环境$ python3 -m venv .# 进入虚拟环境$ source bin/activate

第三步,往虚拟环境中安装依赖包

如果是 mac 或者 linux 只要执行这条命令就行

$ python -m pip install -r requirements.txt

而如果你使用 windows ,在依赖中有一个 lxml 库,这个库在 windows 中你使用 pip 是安装不上的,你得从网上下载 wheel 文件来手动安装,然后再执行上面的命令,下载链接在下面,记得选择对应 Python 的版本,由于这个页面里的 lxml 版本是 4.6.2,因此你要手动改动 requirements.txt 文件里的 lxml 版本。

# lxml 下载地址https://www.lfd.uci.edu/~gohlke/pythonlibs/#lxml

如此你的运行环境就搭建好了。

在开始抢之前 ,有一些配置需要你手动弄好,主要有这几项:

京东的 eid 和 fp、登陆你的京东网页版,随便选个商品下单,然后使用 浏览器的F12 跟踪_JdTdudfp 变量,就能得到 eid 和 fp

并把这两个值写入到项目根目录下的 config.ini 文件中。在 config.ini 中还有一个很重要的设置,那就是抢购时间 buy_time

因为代码实际上是执行一个 while 循环,如果时间到了设置的值就开始模拟请求开始抢

上面的配置全部完成后,就可以开始抢了。抢的过程分为两步:

第一步:开 PLUS会员

第二步:预约抢购

只有预约的用户才能参与抢购,你可以手动搜索 茅台 进去预约,也可以使用这个脚本来帮你预约。

执行 python main.py 然后输入 1,会弹出一个二维码,打开你手机上的 京东 app 授权登陆,接着脚本就会去帮你预约。

第三步:开始抢购

一切都准备好了,你只要在快到早上 10 点的时候执行 python main.py,然后输入 2 ,就行了。接下来就看你的运气了。

项目链接:

https://github.com/huanghyw/jd_seckill

信息来源:AI科技大本营

飞桨(PaddlePaddle)以百度多年的深度学习技术研究和业务应用为基础,是中国首个开源开放、技术领先、功能完备的产业级深度学习平台,包括飞桨开源平台和飞桨企业版。飞桨开源平台包含核心框架、基础模型库、端到端开发套件与工具组件,持续开源核心能力,为产业、学术、科研创新提供基础底座。飞桨企业版基于飞桨开源平台,针对企业级需求增强了相应特性,包含零门槛AI开发平台EasyDL和全功能AI开发平台BML。EasyDL主要面向中小企业,提供零门槛、预置丰富网络和模型、便捷高效的开发平台;BML是为大型企业提供的功能全面、可灵活定制和被深度集成的开发平台。

END

本文同步分享在 博客“飞桨PaddlePaddle”(CSDN)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部