0%

3月22日,NVIDIA的CEO黄仁勋与OpenAI的创始人Ilya Sutskever进行了围炉对谈,通过视频可以更好地了解OpenAI是如何走到今天,又是如何理解ChatGPT和GPT-4这些大模型的。不过毕竟是非正式访谈,思路和观点略有发散,本文提取访谈中一些有意思的观点供参考。

BTW,网上的中文完整字幕翻译对某些观点的翻译解读有误,建议看原视频。

# AI Opener: OpenAI’s Sutskever in Conversation With Jensen Huang

戴了十几年的力洛克,一年前开始走时不准,最近每天能慢上一分钟,手动上弦似乎也有些问题,总是上不满弦,怀疑与之前疫情在家总手动上弦有关系 (最初怀疑发条断了)。

距上次保养已经5年有余,天梭官方授权的店保养一次 (所谓完全服务) 约一千块,而买块新的ETA-2824-2机芯也就差不多这个价,所以再去保养显得非常不划算。老爷子年轻时玩表修表,有此家学,再加上网上有许多机芯拆解洗油点油视频,看起来也不甚困难,跃跃欲试,决定自行保养维护。

前后历时一个月才保养完毕,趟坑无数。现在看来,动手时显然低估了保养洗油的难度,加之中间遇到的诸多难题,本想从玩表的过程获取些操作的成就感,不想却收获了诸多挫败感。修完后才感叹,授权店收一千块算是良心价了 :-) 。好在最终问题完美解决,记录下保养过程。

语言模型越来越大,但更大的模型并没有显示出更强的计算和推理能力。去年Google提出了Chain-of-Thought (CoT) 的方案,通过chain-of-thought提示,让模型逐步推断,使大模型的推理能力显著提升。本文来看一下chain-of-thought的原理。

Chain-of-Thought Prompting Elicits Reasoning in Large Language Models

Language Models Perform Reasoning via Chain of Thought

大规模语言模型的春风已经吹遍大地,大家都惊叹于大模型出色的对话能力,但是在训练大模型时遇到的训练不稳定问题(training instabilities),可能关注的人并不太多。所谓量变引起质变,模型每大一个量级,就可能会出现一些意想不到的问题,比如莫名其妙的训练崩溃。当然,也有好的方面,在模型有一定规模后,是否有可能表现出一些弱智能,也很难说。

言归正传,今天聊聊在训练10B以上模型时遇到的训练不稳定现象,问题原因及当前的解法。

ChatGPT的大火让Google也坐不住了,许多人认为这一波Google已落后一个身位。坊间甚至传言创始人谢尔盖・布林都已“躬身入局”,亲自写代码了。上面的说法可以当八卦看来一乐,不过昨天微软官宣Bing和Edge浏览器要集成ChatGPT时,Google也不甘示弱,表示也要上线大模型Bard (这个名字倒也颇具浪漫主义气质:吟游诗人)。

随着神经网络模型规模的不断增大,对硬件的显存和算力提出了新的要求。首先模型参数过多,导致单机内存放不下,即使能放得下,算力也跟不上。同时,硬件算力的增长远远比不上模型增长的速度,单机训练变得不再可行,需要并行化分布式训练加速。比如Megatron-Turing NLG有 530B 的参数,训练需要超过 10T 的内存来存储权重、梯度和状态。

同时,模型是一个有机的整体,简单增加机器数量并不能提升算力,需要有并行策略和通信设计,才能实现高效的并行训练。本文简要介绍目前主流的几种并行策略:数据并行,张量并行,流水线并行和混合并行。

# Using DeepSpeed and Megatron to Train Megatron-Turing NLG 530B, A Large-Scale Generative Language Model

近来被人们玩坏的ChatGPT推出了收费订阅ChatGPT Plus,每月20刀,提供更好的可用性,更快的回复时间,和提前试用新功能的权益。

这个订阅目前仅对美国地区开放,先从之前登记的waitlist上邀请试用,后续会开放更多国家和地区。

好消息是免费版继续可用,推出收费版后可以更好地服务于更多的免费用户。

最近升级NexT主题到最新版v8.14.1,相关文章功能从v8.10开始由hexo-related-popular-posts替换成了hexo-related-posts,后者是用tf-idf算法对文章全文进行相似度计算而得相关文章,比hexo-related-popular-posts要精准和先进一些,不过副作用是计算量变大,在文章数较多的情况下运行会比较慢,这样在写完文章后用hexo s进行本地调试效率就变低了,每次文章修改都要重新计算一遍tf-idf。好在 hexo-related-posts 考虑到了此问题,可以通过设置enable_env_name变量,只在特定环境(如生产环境)中才开启此功能。不过文档略有些问题,费了一番周折才设置环境变量成功。

短答案$ hexo <command> --<env_key> env_value

长答案:本文介绍了如何使用环境变量仅在生产环境开启相关文章功能。

DeepMind去年在 NeurIPS 2022 发表了一篇如何在给定计算资源条件下,用多少tokens训练最优大小的 Large Language Models (LLM)。之前的许多工作都仅专注于扩大模型规模,而并不增加训练数据规模,导致这些模型显著地训练不到位 (undertrained)。DeepMind训练用不同规模的数据 (从5B到500B tokens) 训练超过400个不同大小的模型 (从70M到超过16B),发现 模型和训练数据规模需要同比增大。根据这个假设,使用与 Gopher (280B) 同样的计算量且4倍的数据,训练了70B的最优模型 Chinchilla。它在许多下游任务上的性能显著超过了 Gopher (280B), GPT-3 (175B) Jurassic-1 (178B) 和 Megatron-Turing NLG (530B)。

[NeurIPS 2022] Training Compute-Optimal Large Language Models Training Compute-Optimal Large Language Models

本文的 Chinchilla 也是后续对话系统 Sparrow 的基模型。

最近微软投资ChatGPT的消息甚嚣尘上,二者的联手会给产业和用户带来什么?

# Microsoft in talks to invest $10 bln in ChatGPT-owner OpenAI

从新闻上来看,微软会将ChatGPT集成到Office和Bing Search。但实际情况可能不止于此,微软擅长做平台,CVP已经在 Azure Blog 称ChatGPT将不久在Azure OpenAI Service上可用:

Customers will also be able to access ChatGPT—a fine-tuned version of GPT-3.5 that has been trained and runs inference on Azure AI infrastructure—through Azure OpenAI Service soon.

好消息是这个服务可以直接让中小企业基于API研发产品而无须自行研发模型。坏消息是它的效果太好以至于自己训练的模型不能达到同水平的效果,形成对此底层服务的强依赖。

2022年随着ChatGPT的大火而结束,最近一年的时间各巨头相继推出了许多表现出色的对话系统,有意思的是大家前进的方向不谋而合,不再专注模型结构和规模,而转向实用性:如何让一个对话系统更有用、更安全、更理解用户意图?

对话系统在过去一年里的主要提升得益如下三点:

  • 大模型:对话系统的基础,规模大才有足够的通用表示能力
  • 从人工反馈学习 (RLHF):通过人工标注不同模型输出,使模型更好地与用户意图align,甚至更小的模型可达到同样效果
  • 搜索API:使回复有所参考,内容更具体更有用,避免胡说八道 (hallucination)

Meta AI在2022年8月发布了新一代的对话系统 BlenderBot 3,希望通过这样一个公开的demo收集更多的真实数据来改进对话系统,使它变得更安全、更有用。

BlenderBot 3: A 175B parameter, publicly available chatbot that improves its skills and safety over time

BlenderBot 3: a deployed conversational agent that continually learns to responsibly engage

BlenderBot 3 (BB3) 只对在美国的成人开放,只用英文对话:

We present BlenderBot 3 (BB3), an open-domain dialogue model that we have deployed as an English speaking conversational agent on a public website accessible by adults in the United States.

此研究的主要目的与 Sparrow 最接近,使对话更responsible & useful:

The goal of this research program is then to explore how to construct models that continue to improve from such interactions both in terms of becoming more responsible and more useful.

这个tech report包括了BB3部署的细节,包括UI设计,本文主要关注模型部分。

Sparrow是DeepMind在今年9月底发布的对话系统,主打的点在"helpful, correct, and harmless"。总体来看,思路也是"alignment",即让对话机器人的回复与用户的意图更贴合。在技术路线上,也是采用reinforcement learning from human feedback,通过定义一批规则,让模型更好地向期望的对话方向推进; 此外,对于事实型的问题,参考搜索出的内容给出回复。

Building safer dialogue agents

Improving alignment of dialogue agents via targeted human judgements

ChatGPT火爆全网,要是能接到自己的微信公众号后台,岂不美哉?

想必有此想法的同志不止我一人,上周末就研究了一下,有几个问题需要解决。

首先就是ChatGPT API,最关键的问题没有之一,OpenAI并没有官方API支持。不过github上早有人反向工程破解了此API,Python实现:

WebGPT是OpenAI在2021年底发布的解决long-form quesion-answering (LFQA) 的方案。比InstructGPT的提出稍早一些。

WebGPT: Improving the Factual Accuracy of Language Models through Web Browsing

WebGPT: Browser-assisted question-answering with human feedback

WebGPT想解决什么问题?让开放域QA回复更长更可靠。

A rising challenge in NLP is long-form question-answering (LFQA), in which a paragraph-length answer is generated in response to an open-ended question. LFQA systems have the potential to become one of the main ways people learn about the world, but currently lag behind human performance.

整个圈子最近都被ChatGPT出色的对话和Coding能力惊艳到了,前面写了篇文章简析了下其原理,虽然看起来直观,但国内的对话水平与其差距确非一日之功。下面的知乎回答深以为然:

Why China Doesn’t Have ChatGPT

ChatGPT: Optimizing Language Models for Dialogue

既然大家都致力于发掘ChatGPT厉害的地方,就来找找它的不足吧。

最近ChatGPT火爆出圈,一众朋友发来各种网红文问我怎么看。ChatGPT的模型与InstructGPT一样,只是数据收集方式有区别。而InstructGPT的提出已差不多有一年了,只不过最近才引起大家的注意。其实,今年已经有不少工作是延续InstructGPT对提升模型效果的,如 Diamonte ,参考了human feedback的思路,但将RL的方案替换成了额外的loss fuction项; WeLM ,参考了人工编写prompt模板训练大规模语言模型。

话不多说,来看看原始的InstructGPT是如何打败大模型的。原始Paper很长,有68页,而事实上核心思想并不复杂。(PS: 现在训练个大模型要不写个50页以上的Paper,都对不起咱烧的那钱!)

Training language models to follow instructions with human feedback

Aligning Language Models to Follow Instructions

InstructGPT指出,模型并非越大越好:

Making language models bigger does not inherently make them better at following a user’s intent. For example, large language models can generate outputs that are untruthful, toxic, or simply not helpful to the user.

所以InstrcutGPT希望通过人工反馈让语言模型与用户意图更加align

We show an avenue for aligning language models with user intent on a wide range of tasks by fine-tuning with human feedback.

最终训练出来1.3B的InstructGPT模型,人工评测比175B的GPT-3要更好:

In human evaluations on our prompt distribution, outputs from the 1.3B parameter InstructGPT model are preferred to outputs from the 175B GPT-3, despite having 100x fewer parameters.

来个好玩的,遇到过 git reset --hard 来回翻烧饼的事儿么?每reset一次,文件内容就更改一次,像鬼打墙一样。不信可以在Windows机器上clone下这个repo:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
D:\$ git clone https://github.com/finisky/git-case-demo.git
Cloning into 'git-case-demo'...
remote: Enumerating objects: 11, done.
remote: Counting objects: 100% (11/11), done.
remote: Compressing objects: 100% (6/6), done.
remote: Total 11 (delta 0), reused 8 (delta 0), pack-reused 0
Unpacking objects: 100% (11/11), 1.85 KiB | 126.00 KiB/s, done.
warning: the following paths have collided (e.g. case-sensitive paths
on a case-insensitive filesystem) and only one from the same
colliding group is in the working tree:

  'File.txt'
  'file.txt'

然后就会发现刚拉的main分支都不干净(橙色),而且git reset --hard也失效了,仔细看才发现,每reset一次,会在大写 File.txt 和小写 file.txt 之间切换,神奇不?