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