最近AIGC尤其是chatGPT的信息有些过载了,但像这次播客一样直接采访Google Brain研究员、Stability AI产品经理、Landing.ai前产品负责人的资源还是非常少见的。原播客大半个月前就发布了,但这次校对字幕的工作量也是空前的,因为新名词实在太多了。。。并且由于工作繁忙,只能cutoff在二月份发布了。
原播客在《Onboard》EP 26,想要边听边看的可以点击“阅读原文”或访问https://u3cexcdeqf.feishu.cn/minutes/obcn9rn96pwrr1oo2zn8cnia。以下文字记录基本从播客文字中复制,所以采取问题+我总结的原话摘要的形式记录。
问题:介绍一下什么是Google PaLM,也可以简单的可能 high level 的跟大家介绍一下,它在这种架构或者一些你觉得比较重要的特点上,跟其他的像GPT-3或者其他的一些语言模型有什么不一样的地方。
Xuezhi:PaLM 是叫做Pathways Language Model,它是 Google 现在发布的,我想应该是市面上最大的一个 language model。它最大区别应该是它有540个billion的parameter。它本身的架构是一个left to right从左到右,decoder only就只有一个decoder的transformer based的 language model。PaLM的优势在于,首先它 capacity 特别大,因为它有 540 billion 的parameter,所以我们发布 paper 的时候,其实我们当时在 paper 里面也 show 了它在很多 task 上面都有非常好的performance,基本上都是 state of the art。包括比如正常的 natural language processing,就 natural language understanding 的task,或者是 natural language generation 的task,PaLM 都是有很好、基本上是当时发布的时候最好的performance。
问题:如果以后每一个领域你要去train,都只需要非常少的数据。是不是以后要去做一个非常具体场景的模型,其实它的成本其实是越来越低了?
Yiwen:最后我们就问自己是模型厉害还是数据厉害,最后我们的结论还是数据更厉害。所以最后吴老师就提了两个概念,一个是data-centric AI,第二个是small data ML。我觉得他所说的 small data 并不是我们不需要特别多的数据,而是第一我们的数据要质量特别高,第二我们的数据需要平衡,也就是其实跟 tokenization 就LLM里面 tokenization 是类似的。
Yizhou:如果从生成模型角度上来说,其实我们现在的经验是,一开始在pre-train阶段能看到的数据量以及它的丰富程度是非常重要的。对于我们来说第一阶段量会比质更重要。当然会需要满足一点最基础的要求,比如文本和图片需要对齐,这一部分的质量是要求高的。但你比如对于图片本身的质量,我们指的质量是美学的质量或者有一个图片质量评分的一个系统,就是它的清晰度等等,这一部分不需要特别的高,在pre-train的阶段。但需要尽量的多,这样可以给我们的图片生成模型里面负责semantic、负责language那一部分更多的输入。这样生成的一个基础模型,我们再对它进行fine-tune的时候,切换成美学评分高的、质量评分高的数据集,量可以小很多。通过这样的一个方法,能够让它在能够生成更多的内容同时,对语义理解更好的同时,生成的质量也更高一些。包括对一些 specific domain,比如大家现在看到的一些像DreamBooth这样的应用,或者是一些其他的fine-tune之类的应用。
基于一个我们已经训练好的通用的图像生成模型想要扭转到某一个领域里面,其实需要的时间是非常短的。现在比较好的方法,可能几十分钟在一个消费级GPU上去做 fine-tune,就可以把一个通用的图像生成模型扭转成一个domain-specific 的图像生成模型,前提是没有给它植入新的概念。如果要植入新的概念,需要时间更长一些,可能需要几个小时。概念比较多,比较细节,可能需要几天,但这都是消费级GPU 能做的事情。从这个角度上来说,是图片生成模型需要一个极大的图文对的。图片、文本对齐需要好,但我图片质量本身不需要太高。其实我们说的图片文本对齐质量高也不需要特别的高。像CLIP的这篇文章的贡献很大一部分就是诶,这种比较稍微 loose 的这种对齐的文本对,也可以训练出很好的图片文本的这样对齐的模型。再在 domain-specific 以及我们最终训练高质量模型的时候,数据质量对于后面的部分是非常非常重要的。
问题:Stable Diffusion到底是什么?
Yizhou:三个区别,一个是它开源。开源的意思是我可以拿到weight,我可以拿到模型推理的代码,我可以在自己的消费级GPU上去做部署。这个开源其实是Stable Diffusion 能够成功的一个非常大的原因。它吸引了大量的之前可能没有办法访问到 API、或者访问API不知道 API 后面发生了什么事情想自己开发一些东西的开发者,甚至是爱好者来把这些模型来用起来。
二是它的生成的部分。我们的 target 不一样,我们 target 不是生成 fidelity 尽量高的图片,而是生成感知效果尽量好的图片。这样生成的出来的图片,我们 fine-tune 完了以后,也许在整体的 denoising 的,如果从数值上去评估它, denoising ability 可能是不如一个特别通用的模型的。但从感知的效果上来,从生产出可用的图片的效果上来说,它的效果是更好的。
还有一点就是社区,这社区其实跟开源比较近了,在Stable Diffusion训练的过程中,以及后面的这些应用的过程中,有大量的不同的开发者来参与,让应用成长得非常非常的快。这一部分也是让Stable Diffusion能够被很多的消费者用起来,像有Web UI,有 Inbook AI 这样部署到本地的。
问题:上一波我没有看到成功的 AI 开源公司出来。这一波我们预期会有不一样,是因为什么原因使得现在business model又变的是可行的?
Yizhou:如果下一代的商业模式是闭源的话,个人开发者会变得更痛,因为他去从 0 开始replicate一个Stable Diffusion或者是DALL-E的所需要成本,跟从零开始replicate的一个YOLO的成本是完全不一样的。YOLO姑且我还是能做的。但到了Stable Diffusion这个级别,虽然我们不停地把训练成本压下来,最后可能降到十万美元多一点、几十万美元或者不到10万美元,如果模型不大的话。但这个成本对于创业者和个人开发者来说都是个很大的一个burden。API 和开源基础模型的意义就变得非常的明显。这是成本方面。
在Stable Diffusion之前,我们没有听过哪个模型;或者在Diffusion model之前,我没有听过哪个模型,是一个爱好者会想方设法的去学Python,或者不学Python我也要想方设法,至少搞明白这些checkpoint怎么回事。我要去拉模型、wait 这种事情我没有听过的。那这个领域走到C端了以后,应用场景是指数级的增长,给卖AI这件事情带来了一些可能性。相对于上一代而言,直接做商业化的希望要大一些。
问题:从研究层面来说,我们现在的这一些尝试,它还有哪一些limitation?它通过基于现在 fundamental 的这种逻辑的这些可能一些优化和微调。它可以达到怎么样的一个天花板?
Xuezhi:我平时问你一个问题,比如我问你一个数学问题,或问你一个微积分问题,你可能要想很久,或者你要很清楚的逻辑思考,就把这个结果给推出来。像这种问题,现在Large Language Model做的还是比较差的。所以在很多的这些更加 challenge 或者更加 complex 的这种task上面,Large Language Model 还是有提升空间的。
另外一边,我觉得Large Language Model 在有一些东西上面,比如像chatGPT,其实有很多人,你看 Twitter 上的thread,或者有人发 blog post 做了一些研究,也发现比如chatGPT,它的 factuality 其实并不是特别好。等于比如你问它一些问题,它会给你一个非常看上去非常令人信服的答案。但是有时候这个答案可能是胡编乱造的,他背后并没有证的证据支持。比如你作为一个人类,你看这个答案你就知道有里面有一些逻辑可能是错的,或者里面有一些事实是胡编乱造的。对,这个可能也是一个将来需要提升的东西。
还有一个是 safety 方面,你如何保证这些 generative 出来的东西是安全的,他不会对比如任何一个种族产生bias,这也是一个比较重要的方面。因为现在你想这些Large Language Model也好,或者large vision models也好,生成的 model 也好,他们最后生成东西是根据 training 的 distribution 来的。你可以想见,在现在这个世界上, training distribution 本身是带有一定的bias的,所以对相应而来的这些 model 也自然会在生成过程中带着这些bias。所以如何保证比如这些 model 将来生成的东西是安全的,它不会。比如 implicitly 对某一些人或者某一些东西产生bias,这也是非常重要的。对,不然你想有些人用它的时候就会觉得这个结果对自己并不是很好。
问题:我也听到很多foundation model,通过训练 GitHub 上的代码数据还是很明显的提升了对于自然语言的推理能力。我想这也是模型迁移学习的一部分。我不知道论断是否是对的,以及未来当大模型其实学到更多的多模态的数据之后,能不能够对其他的modality的能力项也有明显的提升?
Xuezhi:首先,code代码数据的训练是不是能帮助提升reasoning?你这个答案是肯定的。对,因为我们做过很多实验。其实chatGPT,它的 base model 其实是GPT-3.GPT-3.55 model。它其实是有两个 version 的,一个是个 text version,一个是 code version。他们有个叫text-davinci的东西,也有个叫code-davinci的东西。code-davinci是另外在 code data 上面再 train 过的,我们当时比过那两个 model 的在 reasoning 上面的performance。我们发现在 code 上面 train 过的model, reasoning 的 performance 要比只在 text 上面 train 的 model 要好很多。所以 code 代码数据训练肯定是能帮助reasoning的能力的。我们当时看了一下,大概是因为 GitHub 上面的很多code,它其实提升了 model 在 manipulate symbolic 的能力。因为 code 你可以想象成是很多 symbol 的一个,你在操控那些symbol,你需要很清晰的逻辑把那些 symbol 操控好,这样才能得出最后正确的答案,对吧?所以code的pre-training 的训练是对它提升 reasoning 能力很有帮助的。这个是原因对。
未来如果加其他新的模态的数据,我觉得这个 model 是可以提升其他模态能力的。比如其实DeepMind已经有篇paper 叫Flamingo,对, Flamingo 里面其实有多模态,它既有 vision data,也有 text data,他把 vision 跟 text data interleave 起来。最后问题的时候,他会给你个图片问你,他可以回答,比如这个图片是哪个城市,他可以 reason 说这个图片里面比如有很多车或者很多高楼,他有可能是纽约或者什么。他其实是在你在 training 过程中加多模态的时候,你是能让 model 有多模态的能力的。其实也适用于其他模态,比如像 robotics 或者别的东西。你在 training 当中如果能加,model是同时可以有多模态能力的。还有你最后一个问题,说这些模态是否会相互帮助,我觉得是很有可能的。你想人在学习的时候,不可能你从小到大只是对着 text 学,对吧?你在学 text 的时候,同时也看到了很多比如image video audio 之类的。这些模态互相之间肯定是有 interaction 的。你如果能在 model training 当中,把这些模态都加进去,让他们 interaction 能够最大化。其实是能够让这些模态互相进行帮助,让 model 整体的能力得到更大的提升的。这个也是我觉得现在很 promising 的一个方向,很多公司其实也都在研究。对。
问题:图片生成的这块你现在看到还有什么,你觉得可能的限制、和未来的一个主攻的会提升的方向?
Yizhou:从图片来说,我们对模型的自己的能力限制,现在还是有一个比较明确的理解的。我打一个比方,我经常打这个比方,我们抓一个画师出来,一个甲方想给他沟通清楚我想把什么东西画出来。要经过几轮交互要花多少时间?你只用 77 个token,77 个单词想给模型描述清楚,答案是不是那么现实的,对吧?沟通的 bandwidth 是不够的,怎么提升我们跟模型提沟通的bandwidth,其实比较是一个 low-hanging fruit 就比较容易去解决的一个问题,就需要不同的模型,不同的 condition 的方式。这个不能说是很明确的 research progress,因为怎么做大家是清楚的,只是需要花一些时间,有一些 know-how 的问题可能需要去解决。这是一个要明确的短期的方向。
长期来看,图片模型我刚才就提到了有一点非常好,我也非常相信这件事情是。在多模态这件事情上面,我们现在在图片模型上面用的语言能力其实是非常低的。低到什么程度?我们的语言模型几百M、1个B多一点,跟我们动辄上百 B的现在真正的大模型、大语言模型来说,其实差得非常非常的多。
提升模型的语言能力也已经被验证了,是一个让提模型生成能力提升的非常好的方法。但我们好像看到了一个threshold,它提升到某一个领域、某一个瓶颈之后,再往上可能就会比较难。怎么能让模型的语言能力变成更强,乃至这种以多模态的方式去做图片的生成效果变得更好,这也是一个方向。但这是图片部分。往后说,其实扩展模态是比较重要的一件事情,像比较大家短期的视频模型、3D模型应该都是会在2023年会发生的事情, 2023 年大家会看到一些基础的视频和3D模型出来,有一些应该也会被开源。这一部分希望从领域去看,怎么去推进更多应用场景的探索。
问题:现在我们看到我们要真正去做好多模态的难点,主要核心的难点在哪?
Xuezhi:你单模态其实你只要一个 encoder 就够了,对吧?你text有个text encoder,或者vision有个vision encoder,它的所有 input 都是一致的。你用同一个 tokenization 同一个encoder,可能你就可以 encode 出来一个 unified representation,但是如果多模态非常tricky,因为text,它会经过一个 text encoder变成一个 representation,image 会经过一个 image encoder 变成一个 image 的representation,对吧?你之间就是这个东西,怎么 align 在一起,怎么互相让他们 interact interaction,能够maximize,这些都是非常难的。
对之前Flamingo paper,他们用了一个比较好的方法,就是 interleave 把 text 跟 image 互相插在一起。比如一个 image 下面跟着一个text,一个 text 后面再跟着一个image, image 后面再跟着一个text。对。它是先把 image 通过一个 image encoder encode 到一个reputation,再用一个 language model 去把text encode到另外一个text的space,通过这种 interleave 的方式去 train model,最后让 model 能够生成一个 reasonable 的text,这样子。对。所以你怎么把这些互相多个模态 unified 在一起,变成一个整个 model 的training。到底 objective 是什么?你怎么把这些多模态结合在一起,变成一个 unified representation?以及让他们模态跟模态之间的 interaction 最大化,就是让他们互相能真的产生作用。
不然你再单train一个 text model 跟单train一个 vision model,对吧。所以你要把他们互相 interact 到最大化。我觉得是个比较大比较难的部分。对,而且更不用 video 了, video 处理起来更麻烦。你可以想象成比如video,它可以割成一帧,每帧它分别可以有image,也可以有text,对吧?你比如把它 transcript 搞下来,它另外有个text,你要把这些东西都 align 在一起,你怎么处理帧跟帧之间的关系,怎么又跟另外的text?比如 video 有个title, video 有个audio,就怎么把这些东西全 align 在一起,就是一个比较大的难点。
问题:你现在看到的工具链上有哪一些你觉得可能的痛点?
Yiwen:其实去年我跟我们的朋友们投了一家公司,叫OmniML,我们觉得是比较好的。它做了两件事情。它在上层、在模型的层面,它根据你的要求,相当于做hardware specific tuning。在下层,它会去作为针对你不同的嵌入式的系统。比如你是高通的芯片还是Nvidia的芯片。它根据它的下面编译器的特点,高通的芯片它用的是LLVM的编译器,Nvidia用CUDA。对于不同的编译器,你会使用什么?你应该引用什么样的库?这些东西他们也做了一些自动化的处理。
AWS 出了一个产品,叫做 SageMaker Neo。SageMaker Neo做的工作也是类似的,它虽然做得不怎么地哈,但是他在 Nvidia上做的还可以。它做的和OmniML有一些类似,它试图统一所有现有的嵌入式系统,做inference嵌入式系统的不同的compiler。