游凯超(00:08:33): 然后你看那个?我就这样开着声音。嗯嗯。是有那个教室的那个音频吗?我没有直接上你们那这个 usb 的怎么?接上这里,呃,没有接那个 USB 噢噢噢噢。要不。它只有太妃?嗯,这也是。就是就是嗯!等等等。这是天猫专吸款这个是?用 a 不行。要不就。 游凯超(00:09:31): 或者我我在这里说,感觉线上应该也应该是也听得到。嗯,可以。 刘晓义(00:09:38): 对,线上是可以听到,但是看不到你的。美丽的脸。 游凯超(00:09:43): 啊,还没开始共享? 刘晓义(00:09:46): Ok ok ok 就是那个摄像头没问题的话就行。 游凯超(00:09:50): 啊,但是你这样说话声音有点听不到,就是那个现在那个互动的那个 USB 是 C 口的。 刘晓义(00:09:58): 干不上是吗? 游凯超(00:09:59): 呃,不是呸,是 a 口的。它只有 C 口的线。 刘晓义(00:10:01): 他应该有桌上有个。 游凯超(00:10:03): 我我没有看到没有说那种。 刘晓义(00:10:04): 你信那个哈,你信那个哈可以用那个哈? 游凯超(00:10:23): 这个这个是哦,这个是韩?这个有那么事?对了。无证儿出然后。摄影师什么?也不。还是需要一个?嗯嗯。 游凯超(00:10:51): 我有可能接不上就算了。我看一下这个,这个是连在你电脑上是吗?啊,对,这根线是连在我电脑上的。一个月。这个肯定不行。为什么是接笔记本? 游凯超(00:11:24): 诶,我这里好像多出来一个这个。呃,这个你试一下呢,有吗? 游凯超(00:11:31): 作为我的扬声器。嗯,那你这样等会,等会你让他线上等一会。Wait. 我们。这我的麦克有吗?有个麦克有应该?麦克没有没有?它的扬声器是有的。长生西陵是两个东西?感觉像是。 卓卓(00:12:10): 哈喽哈喽。 游凯超(00:12:10): Hello, hello, hello. 然后就是麦克风,麦克风也可以不用这样,应该可以听。 游凯超(00:12:30): 喂,你好。你好,我想问一下那个就是教室里面那个 USB 互动线。 游凯超(00:16:02): 那我我用这个?呃,线上的同学听得到吗? 游凯超(00:16:26): 看看。啊好好。 游凯超(00:17:04): 现在看得到。嗯嗯。 游凯超(00:19:41): 我们我们跟线下同学说一下,那个我们推迟五分钟开始。 游凯超(00:22:35): 嗯哼。 游凯超(00:22:38): 好,那就各位线上线下的同学们大家好,然后我们。呃,今天的 tonight 就又重新定义一下,七点钟,然后在七点钟准时开始。我们今天很荣幸的请到了呃刘海涛同学,刘海涛学长。呃,自我觉察。呃,是那个 VLM 的核心开发者,然后今天来跟我们分享一下关于 VLM 之呃项目的呃。一些项目细节,然后包括他自己开发一些心得。然后相信有很多同学,事实上对。最近这个也是比较火热的技术会比较感兴趣,然后事实上呃,上个学期进行了一次 LM 讲座,但是因为可能之前呃大家做的就是关于 LM 方向的讲座也不太多,然后今天相当于我们很幸运能够请到刘海涛来给我们来讲 VLM 这样一个非常事实上在社区内影响非常大的一个项目,所以我感觉还是今天还是挺宝贵的一个机会。 游凯超(00:23:40): 然后那接下来的时间就交给刘海涛同学?好好,谢谢主持人介绍啊,也谢谢那个丘纳的邀请啊这个。我感觉也是非常荣幸,因为秋娜也是。你那边有点回音?嗯,就是对 tuna 也是我们这个开源社区的一个重要组成部分,对吧。这个 tuna 的镜像也是我们大家国内同学都在用的。啊,那呃,今天我就简单介绍一下这个 VM 项目的。呃,整体进展和一些呃,这个介绍吧,跟同学交流一下。那呃,我觉得这在介绍 VM 之前的话,我就把把另一部分也介绍,就是就是我之前讲的一个这个是我是怎么做,就是加入到这个开源项目这些部分里面的啊,我其实跟大家一样,我也是就是在学校里读书,然后做着做着,后面就慢慢在做开源。啊,然后啊简单介绍一下,反正。我们学校内部交流吧就。呃,轻松一些。 游凯超(00:24:40): 对,首先就是个人的一些简单介绍。所以我呃我是16级的本科就是64班的同学,现在就明年已经要新的64班入学了。然后啊对,就我。嗯,反正上学的时候就经常喜欢去外面看看,然后。就本科的时候就去那个加州大学伯克利分校那边交换,然后因为那边伯克利嘛,它也是开源项目的一个重镇,就是很多历史上有名的那个开源项目也都从那边发起的,所以。在那边就交换的时候也学习到一些开源项目相关的经验。然后那本科期间这个开源相关的,其实主要就是一些自己上课的时候涉及到的一些。呃,就是上课的时候用到的一些项目,然后。呃,研究生期间呢,可能就跟科研更相关一些,包括你当时自己在做一些 AI 的算法,然后啊,会关注一些像积极学习啊 AI 啊,这方面的开源的项目。然后现在呢,主要就是在做这个大模型推理的这个 vlm 项目。啊,然后就就个人来说,呃,比较自豪一点,就是说我可以说如果你是做 AI ML 的,那么你的代码里面可能你运行的那个代码里面总有部分是我写的,就像这个啊,就是稍微有一点贡献。 游凯超(00:26:03): 啊,然后。呃,对,现在维护的这个 VM 项目就是它算是基金会旗下的一个顶级项目,就是。相当于 pytorch 基金会下面有这个 pytorch 的啊,前几天刚加了一个 ray,就基本上是关注在聚焦在这个 AI ML 这方面的啊,就是机器学习算法相关的一些系统。然后它发布到现在,其实也就两年多的时间,其实是一个。非常年轻的项目,但是它最近刚刚已经超过了6万个这个 get up star。呃,所以对比拍摄时应该差不多是9万多的样子。 游凯超(00:26:42): 啊,那么现在? Vim 的应用范围也基本上是涵盖了像。云厂商啊,这个大模型厂商啊,硬件厂商啊等等。可以说,在这个大模型推理的生态系统中,占据了一个比较重要的地位。那我自己是怎么走上这个开源开发的呢?就是。 游凯超(00:27:01): 呃,从一开始说起就是因为我高中的时候也就是普通的。啊,就是我们也没有参加那个什么 OI 竞赛什么的,所以也没什么编程经验,然后到了大学之后呢,呃,我是在软件学院就读的,然后就我上学的时候就一开始一入学的时候一个问题就是说,呃,我问老师就我要怎么快速的学习写代码,因为高中的时候啊,没写过代码,然后这个老师在入学培训的时候就跟我说,嗯,你要写代码很容易,就是你去网上找那些。重要的开源软件去学,然后反正他们代码都是开源的,你去去 github 上面自己看一下自己冲浪,然后。就就可以锻炼你的写代码能力。然后就入学之后就学一些这个基本的像。版本管理啊,或者这个 github 怎么用啊?看看这个开源项目大家都是怎么做的? 游凯超(00:27:55): 然后呃,我第一次就比较为这个比较知名的开源项目做贡献应该就是 tensorflow。啊,虽然就是现在 tensorflow 已经基本上处于一个凉了的状态了。嗯,其实当时做的第一个就非常简单的事情,就是给 test flow 修了一个 type,就是嗯,有一个语病。啊,左边就是那个就是 github 的上面截图,大家现在也还可以找得到。啊,就这个东西从技术上来说很简单的,就是你你修一个开扩,就是你就扫一眼,然后你看他有个开扩是吧,但是对于一个初学者来说,其实也不容易嘛,就是因为你需要走一遍整个这个贡献的流程,首先你需要学什么?比如怎么用 github 是吧,怎么这个 fork 一下这个仓库,然后把自己的这个 PR 提交上去是吧,这些相当于就是入门的时候的一些啊,小的这个升级的体验吧。对,然后。当然在这之后呢,就是有了这样的经验之后,那我们就不用天天提这个开后的 PR 了,对吧,他要开过,一般就是11开始的时候可能你熟悉一下这些这个操作,这个,比如说有些代码他要有些仓库,他需要这个写这个 C OA,对吧,你需要把这个就有一些版权相关的,比如说你要说你这个代码就是贡献给这个开源社区之类的。 游凯超(00:29:15): 然后呃,再往后面呢一些比较大一点的这个开源的贡献,就是,呃,记得比如说当时学这个,呃,自动机和编译器的时候。那我们当时学一些这个比较抽象的这个计算机理论嘛,然后我们需要用这些已有的一些大型的软件系统做一些实验。然后当时我是学编译器的时候在用这个。啊,然后用安特来搭一个自己的这个简单的编辑来应付一下大作业嘛,然后就用的过程中就发现它有个 bug,就是它的这个啊,有一些语法主要是这个 python 的这个前端有点问题,因为它的主流的用户是用 java 的,然后 python 那边维护的不是很好,对,然后我就修了这个问题。然后。啊,就这个过程就比刚才那个复杂很多了,就是这是一个确实是一个比较大的,就就是是一个有实质意义的。bug 然后呢,那这个就涉及到更高一点的,就是说你修一个功能性的问题的时候,你要怎么做,对吧,你要。跟他们说就是首先为什么这是一个 bug 对吧,然后告诉他你怎么复现这个 bug,然后再告诉他说为什么你觉得这是一个 bug,然后应该怎么修复?然后修修复完了之后呢,你可能还需要再增加一些测试,这个测试数据说我保证以后这个代码不会再破坏这个功能。反正这这就更更更高一层。 游凯超(00:30:37): 然后呢,在这个修复的过程中,我其实又发现就是他们代码里面有一些别的 bug 就是。我修好了,我觉得我需要使用的那个功能。然后我修的过程中,我看他们代码又发现一个就是左边下面这个图,就发现他们代码里面有个很低级的错误,就是他们拍摄里面的那个。有一个缩进对错了,然后他的 return 就提前了。就是它正常应该执行完一个大块,再再 return 它其实在里面那个 return 没有对齐,然后对,然后我当时就发现的时候,一开始是非常惊讶。然后呢,在我后面就是震惊,然后。然后就跟他说,就他 review 代码的时候,我就跟他说你这里也有问题,然后他说你们这个这么大一个开源项目,怎么犯这么低级的错误?然后对,然后他就这这这个 mantana 他在下面回复,其实也很有意思,就是我不知道在线的同学看不看得清这里面具体的字。他就说就是就欢迎来到开源的世界嘛,这这就是开源嘛,对吧,就是。没有什么那有错,你就你发现了你就修跟就没有错,它就继续运行了,对吧,所以就是。从这个开源世界就是。获得了一个经验,就是说,虽然这个世界它破破烂烂,对吧,但是。这个世界破破烂烂,其实已经是非常非常多的人在努力的缝缝补补的一个结果,然后就是他也人家也没什么义务,给你一个完美的代码,对吧,也不收你钱,所以你就能能用就用,你不能用,你发现了问题你能修就修嘛,对吧,所以就对,就是一个进阶的一个贡献。 游凯超(00:32:15): 然后呃,再到后来呢就是。自己做一些 research,然后做 AI 这边一个比较好的传统,就是大家还是比较喜欢开源的,然后就是做了一个算法,一般如果能被一些这个主流的框架集成进去的话,那么我们也会觉得这个就是 paper 有影响力了。啊,当然这个过程就就更加困难了,就是。 游凯超(00:32:38): 你需要给别人的代码增加一个新内容来,就增加一个新功能啊,刚才说的是说它已经有这个功能,只是说这个功能可能有 bug 用不了了,那你修一修,那这个还是比较容易合进去。那现在是说这个别人的代码里面原来没有这项功能,然后我需要把比如说我论文里面提出来的一个什么东西,然后。做成一个新的功能给别人的代码。对吧,那这个那别人肯定就要问了,说每年发表的论文这么多是吧,这个可能有几万篇,这个 AI ML 的论文。那你需要跟他说,我为什么要加这个新功能?这个新功能它带来什么收益?然后就是社区就算接收了你这个新功能。那接收之后你人就跑了,那这后面这个功能谁来维护呢?对吧,所以这是这就是一个更更多的问题啊,就你要把你的这个。算法贡献给别的地方的时候,然后让别人用的时候就是为这个社区产生一个新的价值的时候,你需要考虑的问题。那我当时是把这个就是研究论文里面有一个训练加速的算法,就是一个一个比较老的啊,就是卷积神经网络的这个啊,做一些微调的训练的加速,然后当时是贡献给这个 open MM lab 他们也是。啊,就是 cv 时代的一个非常流行的一个框架吧! 游凯超(00:33:54): 啊,然后在这个过程中,也就是跟他们有很多交流,然后就感受到这个开源社区非常热情,然后也跟他们沟通的过程中就是发现就是知道大家在使用过程中啊,更关心什么,比如说你论文可能说你要说啊,你的这个精度不掉的情况下,然后又涨了多少多少点,然后但是你这个开源这边你可能要跟别人说清楚,唉,这个功能它好不好用?对吧,它的这个易用性如何?它跟已有的功能的兼容性如何,然后你需要去研究,就是已有的这些模型是怎么实现的,然后能不能跟你这方面有很好的兼容性,就是要考虑很多很多的现实问题,它不再是说论文里面,反正我们就可以获得出来一个数字,然后审稿人看一下就可以了。所以这我觉得这也是对我的一个磨练吧,就是让我去思考怎么样的研究能够变得更有用。 游凯超(00:34:50): 然后到现在的话就是,呃,因为现在我已经相当于是 VM 项目的一个呃,核心的维护者之一,然后对代码贡献也比较多,那这个时候其实我就要做另一件事,就是因为我要维护一个项目,所以我需要转换一个角色,就是。 游凯超(00:35:06): 我需要考虑这个项目的维护和规划。比如说。我们近期要加什么功能对吧,因为。就是人手总是不够的,然后我们要排一下优先级有这么多 feature 要进来这个,这个公司想加这个 feature,那个公司想加那个 feature 呢,他可能加 feature 过程中也有一些自己的这个立场在里面,可能他们公司觉得这个场景重要,那别的公司又不一定觉得这个场景重要。所以说我们就就需要考虑更多的是从管理的角度去看这个项目,接下来要做什么事情。啊,然后还包括这个项目的一些长远的发展,就是,呃,与这个项目虽然比较流行嘛,但是,呃,我们也要看就是。这个贡献者他来了,他来贡献,然后怎么能留下来继续贡献?啊,然后包括?这个项目比较大,也有很多公司在用。那我们也要跟公司这个一起沟通,说比如他为什么要用 VM,对吧,那他用了之后,他能从中获得什么好处,以及另一方面的这个 VM 能从这个公司的使用过程中获得什么好处?可能常见,比如说他用的过程中他遇到什么问题,他可能修复了,然后把这个拿过来啊,然后或者比如说他们内部有一些基于我们做的一些新的 feature 啊,然后跟他沟通,可以把他的这个 feature upstream 上来啊之类的。 游凯超(00:36:25): 啊,所以就是说需要转换一个视角,就是变成我给别人的项目提 PR 这个提一些新功能变成说啊,我在维护一个项目,然后我需要去维护这个社区,去接收其他人的贡献,这个就是之前的就是单纯做一个这个开源贡献的时候,看就是看的比较少的一个视角。 游凯超(00:36:47): 然后就简单说一下,就是为什么做开源嘛,就是当然从个人的角度,我们很多时候可能就是觉得这是一个纯粹的个人的技术爱好嘛,就是反正大家觉得开源也挺有意思的啊,能锻炼锻炼自己的技术实力啊,什么的。 游凯超(00:37:03): 那那但我我这里也说一些,这个我觉得更实际一点的意义吧,就是怎么从这个生态的角度,我们怎么去推进这个开源?啊,那我觉得首先就是说我我们每个人其实都是开源软件的一个使用者,这个这其实已经呃,毋庸置疑了,不管是说之前的信息时代,这些大数据啊,互联网啊,什么还是现在这个智能时代,其实我们整个基础设施,它基本上都是构建在这个开源软件之上的,包括从底层的这个操作系统,然后到上层的这个大数据啊,深度学习啊。这个大语言模型啊这些。所以其实你不管做什么,你的主流的选择肯定都是。从开源软件开始对吧你?能用开源的已有的解决方案,那你肯定是用已有的,然后你写的新代码其实只是,就是你整个运行代码里面的非常小的一部分可以说。只是冰山一角。 游凯超(00:37:59): 那既然你有这么多底层依赖,都是开源软件,那当你要做一个这个深入的技术优化的时候。那你经常其实就需要打穿这个技术站就是。要对底层的这个技术做一些相关的优化。所以我觉得这个就要求很多公司,它需要积极的参与开源项目,比如说他需要了解这个开源项目,它有什么新的这个特性,对吧?或者现在发展到了什么地步,这样子你未来集成或者说对这个项目进行优化的时候,你才能够更加有所了解,就是知道什么东西是别人在做的,别人已经做的,然后你在这基础上啊,如果你要做什么别的东西,有什么坑要踩或者说。你要做什么别的事情?啊,就就是我觉得这个公司就是公司跟开源软件合作的一个啊意义。 游凯超(00:38:47): 然后另一个就是。就是呃,公司它不可能只单方面的去了解这个开源软件发展到什么程度,因为它。呃,就是就我觉得这个世界上就是它本质上就是一个。巨大巨大的草台班子就是说。呃,只要没有充分测试过的场景。它必然会出现各种各样的问题。甚至我可以把这个条件说的更严一点,就是只要没有测试过的场景,你就当他不能用。 游凯超(00:39:12): 那那开源软件也是这样的,就是。他们的维护者他都关心自己主要的使用场景,对吧,那因为开源软件它都有维护者嘛,那维护者可能有他自己的啊,这个有自己的硬件环境啊,自己的软件环境啊,自己的这个客户啊什么的。所以他们关注的是。那一方面是吧,那在这个关注的区域之外,其实也非常容易出问题,像刚才说这个安特勒他主要用户是 java,对吧,那他这个 python 这边可能就是。啊,就是能用就行,也也没有什么其他的保证。那大家都希望自己这个做创新的东西嘛,那自己在你们做创新的东西就是要探索一个新的领域,是吧,那解决一些。别人之前没有解决的问题。那如果你没有告诉设计说啊,我在解决这个新的问题。那可能社区就看不到这个问题。所以就说。你只有持续的跟开源社区做沟通,跟他说啊,这个东西很重要,然后我们在用这个东西,然后我们也想贡献这个 feature,就是我们也想维护这一块,然后我们能提供什么样的知识。那这样子,这个开源软件的维护者他才知道说这个东西是?有人在用的,然后我们需要在写其他代码的时候也要注意说,就是不要破坏掉这部分代码。 游凯超(00:40:25): 所以这其实我觉得跟开源软件的这个跟开源社区的一个沟通,就是在为这个未来的自己。就少少挖一些坑,对吧,就是能够知道就是帮助未来的自己。啊,我觉得这是对公司的一个啊,比较有意义的一点。呃,当然就是挑战就是说呃,其实开源软件目前。只能说目前主要还是靠大家用外发电对吧,就是很难。形成这种啊,有体系有规模的。因为开源软件这个前路比较艰难,就是比较难赚钱。对吧,因为。呃,开源软件嘛,就大家可能拿去直接用就行那。比如说我们细数一下这个商业化的开源软件呢,也其实也很少。比较著名的,比如说 red hat 他们是相当于是企业支持就是软件是开源的,但是这个企业支持啊,维护啊什么的,是需要收费的。然后包括啊,它可能就是这种付费服务,就是你用他们的软件本身就需要有一些这个啊,这种的付费。然后像这个 data bricks,它可能像这个 spark 呀,一些大数据的这个工具的一些啊托管或者运维,就是啊,维持一个这个 sql 的接口的稳定,然后你可以用开源的 spark,你也可以在 data bricks 上面付费做一些这个,用一些更好的软件。 游凯超(00:41:56): 然后还有一些其他的项目就就直接放弃商业化了,就不赚钱了,就比如说开拓者呢,他就是这个 meta 主导的。然后啊 linux foundation 也是就是 linux 是由 linux foundation 来主导的。嗯,然后。啊,除了难赚钱之外呢,就是。 游凯超(00:42:16): 还有就是。呃,开源项目它呃维护比较艰难。对,但我觉得可能可能丘纳也会有这个问题的,就是。一个大的软件,虽然这么多人在用,但是怎么找到合适的这个接班人来源源不断的持续的维护它。啊,就是。就是这些著名的开源开源项目的它。虽然著名,但是一般都是不出 bug 的时候没人知道,然后一出 bug 的时候大家都知道了,但也不是什么好事。比如说这个十年前这个 open SSL,他们的这个 hardly 的漏洞。然后包括近几年,这个应该就前几年吧,有一个这个 local for shell 的这个漏洞,这个任执行任意 shell 代码的。啊,这些都都是任人令人,这个印象深刻的一些漏洞。 游凯超(00:43:03): 然后呢,这个啊,工业界其实也有一点点的回应啊,比如说。啊,有一些这个像 open infrastructure initiative 就是。可能一些大的云厂商,这个稍微捐点钱,成立一个这个核心基础设施的一个支持计划,为一些这个重要的基础软件提供一些支持。但基本上来说就是反正杯水车薪吧。 游凯超(00:43:27): 啊,大部分的开源项目其实主要也就是靠大家这个用爱发电。啊,比如说这个。大的项目可能还好一点,那比如说像这个 linux 发行版里面的一些小工具啊,是吧,这个这个这个标准里面可能有好多好多个小工具,然后这些小工具它也不是。几十年前写好了,后面就再也不维护了,对吧,它其实也需要人维护那这种。啊,是像这个 harry 说 batch 就没人维护了,那比如说这个去年就有一个这个解压工具 XZUT OS 对吧,他其实还有人在维护,但那个人呢?其实就维护的就可能就一两个人,然后他自己生活状态也不是很好。对呀。有时间这个有精力了就稍微维护一下,然后那哪顶得住,还有一个人想要这个。对吧,想要潜入这个项目做做。这个做坏事对吧,那就更困难了,大家都觉得这个开源项目肯定都假设大家都是善意的,对吧,哪想到有一个人是为了混进来这个藏漏洞的,对吧?啊,所以。嗯,整体上来说就是大部分开源项目还是?依赖这个用爱发电的这么一个现状吧,这也是这个需要解决的一个问题。 游凯超(00:44:43): 啊啊,这这不是我整个的解说啊,这只是这一部分的解说就是。反正就是我觉得整个事情应该说基本上在在变好吧,比如说我看到我们国家也有一些这个。好像有一个这个国务院有个人工智能家的行动,里面还列出来一条这个。我印象中第11条有明确指出啊,我们要促进开源生态的繁荣,支持人工智能的开源社区的建设。然后促进模型工具和数据集的汇聚开放。培育优质的开源项目。这对大家说的说的大家很心动,对不对?丘娜应该是首批支持的。嗯嗯。对,这反正我也是开源项目的一个深度参与者嘛,也也非常期待啊,这一政策能够给开源社区带来什么样的促进作用吧?嗯,反正目前就是。国内的这个大模型就是模型本身的开源还是做的比较好的,就是尤其是比如说。就拉玛四扑街了之后反正现在。嗯,大模型这边的开源目前主要就是看国内的这些公司。但是就是大模型的开源,它毕竟基本上是一个一次性的工作,你这个模型厂商他把它训练模型训练完了,然后选个好日子把它发布出来,对吧,然后大家就就用,其实就就就差不多了啊,然后后续的一些维护啊,更新啊什么的,其实也不会投入很多的人力在那。 游凯超(00:46:11): 然后另一方面就是基础软件方面的开源就比这个麻烦多了,对吧,就是。这个基础软件啊,你这个发布出来其实只是第一步,然后后续的一些啊,维护啊,更新啊,包括这个社区啊,都需要去不断的更新,不断的去跟用户去啊,沟通啊,所以我觉得就是。 游凯超(00:46:33): 开源软件这方面感觉国内还是有比较长的路要走的,反正目前基本上还是。啊,国外的社区为主。啊,当然也也非常希望看到国内这个在开源软件方面能做的越来越好吧,就就比如像微软的话,其实。我们国内的社区和国外的社区都其实都有相当的一部分比例。甚至可以说国内社区的这个贡献跟。国外社区的贡献应该。基本差不多了,因为本来这一波这个推理也是国内这些这些大公司这个用的一个使用的重点之一啊,那我们有国内相当一部分,这个国内大厂。啊,也就是在用做部署,所以。他们也会跟我们有一些合作,一起做一些优化啊什么的。 游凯超(00:47:20): 总之就是现在模型方面的开源已经是。啊,国内为主了,然后也非常希望就是开源软件这方面。啊,这个尤其是重要的开源软件方面,我们看看啊,国内社区能够啊,继续啊,迎头赶上吧!就是,也就是我之前这个关于开源。就是怎么参与开源的1.1:享?然后啊,我后面再再讲一下这个就是正式讲一下这个微软我们这边。啊,就是。可能不是所有同学都做大模型的,所以就稍微介绍一些这个背景知识。因为当前这个大模型的这个。计算的特点就是它在生成一些东西嘛。所以就是我们把它叫做自回归的 auto degradation 的计算。呃,自回归的,那你计算过程中就会包括一些中间状态的存储。不断的生成新的,然后你生成的新的,又跟前面所有的东西相关,所以你中间肯定要存一些状态。那这个中间状态,我们把它叫做 kv cache 那么高效的管理 kv cache 就是这个大模型推理的一个关键。 游凯超(00:48:29): 然后 VLM 项目呢?它起源于23年发表的这个配置的 tension 这篇论文。然后他是加州大学伯克利分校的这个几个学生啊,提出了就是怎么高效的去。组织管理 KV cach,从而提高显存的利用率,然后。能呃,因为这个解码这个低扣的过程本来就是一个 memory 棒的过程,你把这个显存利用率提高了,你可以。啊加大,然后你可以更大,可以提高它的这个。呃,利用率。那么呃,page attention 再结合这个啊,22年提出的这个 continuous batching 的这个技术,那么这两个基本上就构成了 VLM 项目的雏形。 游凯超(00:49:11): 然后啊,未来 M 项目是23年的6月份开园的。开源到现在呢,就是收到了社区的一个巨大的关注,就是现在已经两年不到两年半吧,啊,已经有超过6万多的 github 的 star。然后我大概是在24年的3月份左右,当时我去伯克利那边交换,然后那个时候他其实只还有只有一万多的一。然后也是一年多以来就是有幸见证这个项目的成长,而且从这里面可以看到,就是它 star 增长的速度其实越来越快。从这个25年年初开始,对这个 star 增长的曲线还是在往上走的,就大概就是那个。 游凯超(00:49:53): Deepsig 那一波就是大模型变得更火了。呃,然后对9月份当时有一个呃上海外滩大会,然后蚂蚁开源报告里面呃,好多次 Q 到这个 VM 就是整体的所有社区里面,就开源社区里面这个开源项目的排名。他们大概梳理出来是拍特,只是第一位,然后微软是第二位。然后对,因为微软我们这个发展比较早,所以社区的支持比较多吧。然后比如说左边这个就是拿 VM 去支持这个大模型开发的一个全流程,包括包括这个后训练啊,这个微调啊,现在比较流行的这个 world 啊。 游凯超(00:50:37): 呃啊 lama factory 啊这些?然后包括这个?用为我们去做部署推理啊,然后跟这些应用层的框架结合,比如说啊,这个啊,这些东西。然后呃,其他的就是这个 vm 生态里面,呃,包括这个。 Nvidia amd 这些芯片厂商?然后像这个 google cloud AWS 阿里云这些云厂商,或者说 deep seek kimi 千问这些大模型的开发商,他们都是在用的。然后最近就是 DPC RE,它登上 nature 封面。啊,这个 VOM 它是 DPG 内部推理系统的一个基础,所以在这个论文的附录里面啊,一个图里面,它有这个有提到他们这个 VOM 是他们的基础,是他们描述他们的强化学习系统的这个组成部分。啊,当然这个主要都是第七个团队的功劳哈,因为我们是。在这个他们开发 R 一的过程中,提供了一点点微不足道的帮助,就是稍微强行蹭下这个江光。 游凯超(00:51:46): 然后对 VOM 项目就是整体的目标,就是希望。啊,构建一个这个又快又好用的大模型推理引擎。那么。它的使用方式也很多,就是。简单的你可以把 VM 当做一个。普通的函数就是你把大模型当做一个函数,你给它输入,然后它就给你输出,然后这个你可以提供一些参数就行了。这个就是简单的这个 offline 的 inference 就是说你有一堆数据,你要处理,然后。不需要那种流逝的返回。 游凯超(00:52:17): 啊,然后呃,这部分 offline inference 的 API 基本上就是啊,现在大家 offline 都是这样做的,比如说这个 tensor RTLM,它也是用类似的 VM 这种 API 来做这个 offline 的推理。然后呃 vm 也可以作为一个这个完整的就是 openi api 兼容的这么一个。啊,服务器就是说。服务这种不断的有就是不断进来的这种新用户。然后 interactive 的就是可能有人在在线的跟他聊天,他需要及时反馈结果的这种啊,然后你可以把这个 open I 的 API 就接入到其他的,比如说 cloud code 啊,这个啊,这种这些应用。或者是像这个啊 minduer 啊,有这种这个 OCR 的应用啊,最近 OCR 模型也挺火的。然后 VM 也可以作为其他推理引擎管理器的后端。就是说,嗯,比如说像这个 nvidia 的这个 titan infant server。它就是一个管理推理引擎的一个管理器啊,它可能负责跟用户交互的一个部分,比如说 HTTP 的这些请求的交互,然后它把这个请求拿到之后,然后再把这个请求交给微软去做。那这个主要是通过这个的方式接入微软。然后最近这个 RO 比较火,然后有很多前沿实验室都是在探索这个。 游凯超(00:53:45): 强化学习上面的进一步的拓展,那么 VLM 也是为众多的强化学习框架提供了基础的支持,因为强化学习,它需要跟环境交互去采样,这里面的这个环境交互主要就是用大模型去做推理。啊,然后基本上市面上的主流的强化学习框架应该也都有这个 VM 的集成。然后 VM 的一大优势就是支持非常非常多的模型。应该基本上包括所有的这个主流的文本生成模型。然后输入模态呢,包括这个文本啊,语音啊,这个图像啊,视频啊都有。然后多模态的输出其实也在看,因为现在像这个啊,这种图像生成啊,或者这种视频生成的模型啊也在。嗯,大家也都在持续发力。然后过去几个月呢,就是国内的这个大模型厂商也都非常给力,就开源了很多模型,像这个。 游凯超(00:54:44): Kimi K 二,然后 GPS 的 V 3.2像这个 GPT OSS 千问33 next GLM 4.6这个文心一言4.5会员书生 S 一,小红书这个 OCR 等等等等啊,念不过来了。啊,反正这些模型基本上都都有 VM 的支持。然后呃,对于 vm 没有直接支持的模型。跟 hugging face transformers 合作就是呃。设计了一个叫 transformers,后端的东西就是。你的代码可以是写在 transformers 里面的。然后呢,但是你运行的时候拿 VM 去运行。就相当于。 Transformers 成为 VOM 的一个前端啊,你用 transformers 的 python 代码?写完了这个模型之后,然后再交给 VM 去运行。那现在这个它已经支持一些简单的,像这个文本模型,视觉模型。和一些这个视觉语言模型。然后 transformers 它应该马上要发这个5.0大版本。这里面它就支持了用 VM 来跑 transformers 里面的 MOE 模型。他们测出来说有这个24倍的性能收益,当然根本原因是因为 transformer 之前 MOE 写的太烂了,就是一个一个专家的去去跑,对。啊,但他们也不愿意做太多的那种优化,所以。他们就就把这个交给 VOM 了,就是 VOM 变成 transformer 推理性能优化的一个重要手段。 游凯超(00:56:27): 它其实只是把一些模块给它换掉了。 游凯超(00:56:31): 就刚刚才一个,我不知道线上的同学听没听到,就有同学问这个 transformers 跟 will 是怎么集成的?就是你在模型里面写的是 transformers 的,就就是纯拍特质的代码。基本相当于纯纯拍透镜,比如说这个。两个 tensor 怎么加?然后你这个这个 attention 可能就是 static 的 KV cats 有 QQ 微进来什么的,然后你不管 continue special。然后这个 transformer 的后端做的事情就是。把这个 transformers 里面的 attention。给它换成 VM 的 attention。所以其实关键是那个 attention,它有 continue speculation,因为 continue speculation 的关键就是说 attention 之外的东西,它其实都可以当做一个 batch 来做。所以你就你就你就当做,没有 continue 的该去写就好。 游凯超(00:57:15): 然后到了 attention,这就是换成了 VR M 的。一般来说,它直接就普通的模型没有那么 attention,没有那么复杂的。他基本上就把那个换掉就可以了。因为其他的,比如说它一些 normalization 换了呀,或者这个模型的结构,这两个参数怎么加的,或者有些其他的参数在 transformers 里面,在 web 里面,这个代码都是差不多的。这都是拍拖的一些普通的代码。呃 linux 层比如说它加个 bios 啊什么的就分封的,这也支持。反正我也支持。然后,然后。像这个,比如说 normalization learn node 各种,它可能在 learn node 里面玩一些。小小的花样什么的,反正也都是拍拖这些。 游凯超(00:58:09): 全触摸模式里面能用 VIP 里面也能用?核心其实就是把 attention 换掉。 MOE 就是你得你得做 MOE 的一些。呃 MOE 也换就是 M 就是 MOE 模型之前是不换的。对,现在他也换了,要换的话就是说。呃 transformers 那边把它的 MOE 包装成一个类。然后它 VR M 这边识别出来要跑 transformers 的 MOE 了,就把它那个类换掉,就换成 VR M 的 MOE 了。啊,大概大概就是比如说 MOE 我要做一些这个 EP 的。专家病型的推理啊,那全封闭式的肯定没有这些东西的。那就是它换成 VR M 的类就有了。其实大概大概就是这么一个替换的这个逻辑。 游凯超(00:58:59): 对,然后对于模型开发者来说呢,我们是提供了模型注册的手段就是。因为有些人他想用微软的功能嘛,但是比如说他的模型还没有 release,那他在内部。这个用 VM 的时候,它需要把它的代码注入到 VM 里面。那个这就是就是我们在这个文档里面有说我们把它叫做 out of 去的这个 model 就是怎么把微软代码以外的模型加入进来。啊,然后啊,对社区也非常有创造力啊,他们。还创造了一个 IO processor 的插件,就是你可以在 VM 里面调用 CV 的模型来处理这个图片,视频,甚至雷达这种这种数据,就这里再做一个的任务,基本上把 VM 当做一个大模型的这个 runtime 来做了。啊,这里也非常感谢 IBM research team 的贡献,这就这就是 attention free 的 model 就是。对,就是。 General 的这个想法就是说他是一个。我们把它叫做 pulling 的接口就是 open ai 它有一个。固定。这这我不记得这是不是 open I community 的 API 了?那就是铺垫接口,相当于说你这个模型 run 一次就结束了,有 input 的,有 output 的就结束了。那对话这种大模型它是持续在生成,所以它有状态的管理。 游凯超(01:00:18): 然后稍微总结一下,就是我们可以从三个角度来总结,就是未来我们支持哪些模型?那么一个是从模型的这个结构层面。那么包括这个全标准的这个 transformers 啊?然后 MOE 啊,还有 state space 的这个 model,还有现在的这个的模型。这个就这个就是从 attention 和 MOE 的角度来看它的结构。 游凯超(01:00:43): 然后从知识的模态来说呢,就是刚才说这个输入有文本的,图片的,语音的,视频的,包括混合的都有。然后输出目前还是文本为主啊,就只支持文本啊!当然也支持,就是说你输出一个。三炮就反正你输出一堆东西。 游凯超(01:01:03): 对吧,但是呢,这个多模态的输出还没有输出,因为它那个输出的这个结构。会有点复杂,包括它如果要做多次迭代的话这个。对,你要做的话有点复杂。然后从知识的任务上来说呢,就刚才说了自回归的生成是可以的。然后你可以计算这个啊 reward 啊 re rank 啊,反正这种就统一归纳为一次性处理,你有个输入,然后你会输出一段东西。 游凯超(01:01:31): 不是一段能,就是一次性输出一个?Vector. 对吧,所以。 Scalar 也可以做,也可以是一个 vector embedding,也可以是一个 vector,反正三炮你就输出一个东西,然后返回给你就行。然后 VLM 它支持这么多模型,所以。经常就有用户来问,就是说啊,我们在这个硬件上在为了适配这个任务,怎么去跑这个模型。所以呢,为了回答这个问题,我们就有一个子项目叫做。也就是大家访问这个点 VM 点 AI,那么它就记录了一些。常见的模型,然后在常见的硬件上怎么跑?微软它不仅支持很多模型,也支持很多硬件,那么大家现在用的最多的可能还是 nvidia 的这个 GPU。但我们支持很多其他的,包括像这个 AMB 的 GPU,英特尔的 GPU,然后 google 的 GPU。然后这个叉86的 arm 的 riskfive 的这个 CPU 啊都有。然后也感谢就是这个华为公司和其他公司联合我们做了一个硬件的插件机制,然后通过这个插件支持,像这个 AWS neuron 啊,这个华为升腾啊,英特尔高地啊,IBM spy 等等这些其他的芯片。呃,未来我们整个的计划就是说。把 VR 项目里面的这个硬件相关的代码。啊,慢慢的挪到这个,通过插件的形式挪到 VM 外面去。然后这样他们这些公司自己也好维护。 游凯超(01:03:05): 那现在有了这个插件机制呢,其实。那增加一个新的硬件的支持,它其实也不需要微软做什么,因为这个插件它可以自己注册,然后注册进来之后微软自己就会用它。然后比如说国内的这个沐希啊,这个寒武纪啊,他们都是通过这种插件的形式自己去适配了,那我们其实就不怎么需要管他们了。啊,以升腾为例,就是那么用户在用升腾上面用 VM 就需要安装这个 VM ascend 和 VM 这两个包。啊,当然用户来说,你安装 VM ASR,它一般就会把 VM ASR 带上。然后我们可以把这个 V 就看作是。一份接口。和这个 nvidia GPU 上面的一个参考实现。然后 VMAC 呢就是。这个接口版本零点一零点零在生成 NPU 上的一个实现。所以 VR M 的一个责任就是和各大硬件厂商合作就是。共同制定这个适合大家的接口。对吧,然后这个接口我们这个能在 GPU 上面实现,然后其他的厂商能够自己去实现。就比如说这个9月底发布的这个 deep seek V 3.2模型。这个。 游凯超(01:04:18): 这个多硬件适配的例子。啊 VOM 我们自己完成了英伟达平台上的适配。然后同时,这个华为和寒武纪,他们分别基于微软的硬件的插件,实现了他们自己平台上的一个适配。也是得益于这个 VM 的多样化的硬件支持,所以你可以在很多这个硬件厂商的这个宣传上面看到 VM,比如说 google cloud 呀,这个英伟达的 GTC 啊等等地方都是都会有 VM 的身影。包括像这个 AMD 的发布会啊,包括这个 kubernetes 社区啊,这些也都跟 VM 有非常紧密的合作。 游凯超(01:05:00): 当然,这一切就是多硬件的支持,就是离不开拍拖。因为这些硬件它首先都得先支持拍拖,其实有一个。这个底层的这个的抽象和有一些相关的这个底层的基础的算子的支持,你不能写个加号,都要为我们来支持,对吧,这个不行。微软呢,主要就是在这个拍透的基础之上,再增加一些跟大模型推理相关的一些算子和模块,然后呢,他们就可以接入微软。所以也是感谢拍拖局在这个生态系统里面提供的这个受要结构的这么一个关键地位,就像那个。 游凯超(01:05:37): TC BI P 那个那个 IP 在网络层里面的那个那个地位一样,那么我们基于拍拖者之上再去做多硬件的适配就变得非常简单。也不说简单吧,就是至少容易一些。对,也是因为我们跟这个拍特区的紧密合作的关系,所以我们是在。去年12月份的时候就加入了拍拓纸生态系统,成为一个拍拓纸生态项目。然后今年是拍摄的项目?啊拍拖女基金会? 游凯超(01:06:07): 它原来是 linux 基金会下面的一个子基金会只管开源的项目。然后呢,今年它变成了一个伞形基金会,就是它也可以收其他的项目。然后其实是那个他宣布成为伞形基金会之后,紧接着宣布的,其实就是要把微软收进去。所以现在。就是拍摄基金会下面这个 VM 和拍摄的都是一个都是同级的一个顶级项目。 游凯超(01:06:34): 然后加入攀生基金会之后呢?我们?他就写了一个博客,说我们为什么要这样做?其实大体上就是说刚才说的拍拖去,它在生态系统中是处于这么一个受要结构的关键地位。那么它作为机器学习的一个基础性的框架。然后,VLM 作为在拍拖的基础之上构建的一个引领性的推理框架,那么二者的紧密结合可以让社区变得更更好,就是让大家能够更好,更快的前进。 游凯超(01:07:02): 比如说呢。呃,就是现在。 VORM 的每一个 commit 可以对拍 touch 的这个最新的 next 版本做这个简单的 men to men 的兼容性测试。然后 pytorch 的版本发布流程也会做完整的 vlm 的测试。啊,比如说。Huh. 啊啊啊,这个是 PR title 的 title?啊对,他已经留在了历史里面。嗯,对,这,这应该是 meta 的一个同学吧,嗯。嗯,不应该不应该。不知道是不是 web coding 这个 chat GPT 给他写的。嗯,对,就是刚才说到这个拍 touch 的版本发布流程需要做完整的 VR M 测试,就比如说拍 touch 发大版本,这个二点八,二点九之前,它需要先测这个 VR M 的所有的重点的功能是否正常。然后如果有问题的话,需要 block 拍 touch 的这个 CI 啊,就 block 拍 touch 这个发布流程需要把这个问题修好了,再继续发布。 游凯超(01:08:13): 然后啊,微软我们所依赖的这个拍特级的一些特性也会放在拍特级的 CI 里面,就是保证他们这个拍特级发展的时候,不会破坏这些特性。然后比如说这个。最近因为 NV 推 blackwell 嘛,然后 blackwell 是默认是需要扩大12.8的。那我们当时当时这个拍拖是啊!发布的主要的还是主要的那个?构建是扩大12.1还是12.4来着?对,然后就会导致你用在 blackboard 上面非常困难,因为。这也是这个?的这个 package management 的一个灾难,就是他们没办法考虑这个扩大版本。啊,这这是他们正在做的,怎么修的一个事情,反正啊,对这一个非常重要的问题,就是你没有办法在 dependency 里面去声明你要的拍拖就是哪一个扩大版本。啊,所以这就是带带来这个一系列的问题。然后最后我们是就推动拍 to,就把这个2.8的 release 默认改成了 cuda 12.8这样子大家在 black 上面就不会那么头痛。 游凯超(01:09:22): 另一方面,我们也是在跟 meta 内部的这个拍拖的团队合作,就是把 VM 部署到 meta 内部服务他们的一些这个 LM 相关的一些业务。那总的来说就是我们希望 pytorch 跟微软的合作能够更加紧密,然后提高二者之间的兼容性,然后这样子至少每次我们升级 pytorch 版本的时候会有 pytorch 的人来做,而不是我们自己去做的。 游凯超(01:09:49): 对,然后啊,本周其实刚刚举办这个拍透是 conference 2025,然后在这上面有五场关于 VR 的报告啊,没有现场参加的同学呢,也可以等后续的这个视频回放。然后其实如果现场参加这个开 tourist conference 的话,就会发现其实。可能基本上。每一个 session 每一个人聊的东西,你除了拍特辑以外,基本上都跟微软们沾点边,因为现在。所以大家都在做这个大模型推理相关的一些东西。 游凯超(01:10:20): 然后对以上是一些总体的介绍,然后我再稍微。快速的介绍一些新的 feature 可能大家应该也不是。不都是做大模型相关的,可能也不是那么相关。啊呃。一些这个 VR M 就除了 VR M 本身之外,我们也有一些这个社区项目,比如说。有一个这个 semantic router 是做类似 GPT 五的模型,自动路由就是你就判断这个请求。用什么模型做比较好,或者说你觉得这个请求?可能比较容易给你带来商业收益,然后就用一些强力的模型。给你做回答,然后再给你做一些这个推荐啊之类的。 游凯超(01:11:01): 然后呃,还有一些像这个 LM compressor 是做这个模型量化的就是。就是生成那个量化的模型。啊 VLM 它只负责对量化的模型进行推理,不负责生成量化模型。然后包括这个 speculator 就是生成那个 speculator 的,就是做这个投机推理的时候,那个 jump model 怎么去训练?然后包括这个呃 LMD,它是做呃,这个 K 八 S 集群上面的 VM 的大规模的推理,尤其是 LMD。它刚发布这个0.3版本,它是相当于是大 EP 的一个比较简单易用的一个解决方案。这种 MOE 的这个大模型的一些推理。啊,这些社区也都非常活跃啊!感兴趣的同学可以去看看。 游凯超(01:11:52): 然后另一个重点就是这个混合结构的模型的支持。因为啊 transformer 是一开始这个 attention is all you need 但是。后面 attention 大家这个花样也越来越多,然后。其实每一个天线都稍微有一点不一样。尤其是现在,随着这个大模型的上下文变得越来越长,就包括你做 coding。把这个可能一个代码仓库直接塞给大模型,然后让他做点事情之类的。然后呃,这个时候就是为了效率起见,大家不想用完整的。你不想每个 token 都看那么多前面的 token?但是呢,为了这个。为了精度起见,有的时候他们还是需要一些 for ten 万一你这个 token 还需要看前面一点什么东西的时候。啊,那么这个时候大家比较常见的就是 hybrid model 混合结构,你有这个普通的 for attention,也有其他的一些这个高效的 attention,比如说 standing window 啊,或者这个 leading attention 啊。 Bus 通讯啊等等,那这个时候显存的管理就变得非常复杂,因为。 Full attention 的话,每个 token 得看前面所有的 token,那前面的所有 token 的这个 KV cats 都要保留,然后你像这个 linear attention 它就。只保存一个这个中间状态,就只保存最后一个 token 的状态,然后它就可以去做下一步的这个解码啊。然后 VM 的两个重点,一个是 continue sketch,一个是这个 KV catch 管理。 游凯超(01:13:19): 那么,混合云模型的这个 KV 开始管理就变得相当复杂。尤其是你要在这个混合模型上怎么去做这个这个啊,都是非常复杂。那我们这个在这上面花了较多时间就是。现在这个我们叫做 hybridallocator 的功能啊,基本上已经做完了,现在。也不是做完了吧,就是基本上还算比较好的支持了吧!啊,这也是我们支持这个像千问三 next 这样的这个混合模型的一个关键。 游凯超(01:13:54): 然后呃,另一个功能是这个 KV connector。啊,因为微软的一个。重要的角色就是管理这个 KV cache。然后呢,现在有非常多的这个项目,他们需要。伸进 VOM 里面去看这个 KV catch,或者说可能要这个在不同的 VOM 的这个实例之间去传输 KV catch 像这个做 PT 分离啊,或者做这个磁盘的 KV catch,就是你需要。跟 VR M 的 KV catch 做一些交互。所以这个 KV connector 就是说。提供一个 connector 的这个接口,然后其他的组件可以。嗯嗯。比如说管理我们的 KV cash,或者说插入一些 KV cash 啊,或者把 KV cash 搬到这个其他地方啊之类的。那这里面啊,我们是提供一个接口,然后通过一些其他的社区项目来做集成,比如说啊,啊,这个啊,然后他们可以把这个传到右边,这些说的这个就是传到 CPU 里面做 offload 或者传到这个 local storage 这个 disk 里面,或者跟这些这个呃,GDS 的结合做一些这个 storage 的。 Redis 啊,这个 moon cake 啊之类的,反正就是把 KV cache 从 VM 里面拉出来做其他的事情。啊,那个啊。 游凯超(01:15:23): 啊?呃,有同学问到就是这个接口是 HTTP 的还是 python 的啊?这个是 python 的接口?就是。微软我们定义了你这个组件要提供什么功能,然后他去调那个功能。也就比如说 PD 分离的时候,我可能就要把。啊,这个 KV cats 从 P 那边拉到 D 这边,那就会跟他说这个,比如说我就有一个功能是拉 KV cats 拉哪个请求的 KV cats。之类的,然后他们去实现这些功能。你这个可能就涉及到一些这个传输层的,他们要做网络的这个通讯啊什么的,把开始传过来。 游凯超(01:15:59): 然后呃,我们近期也在跟这个 pytorch 团队合作,就是增加一些基于 torchcompile 的这个优化。因为那 VR M 的一个就你怎么理解 VR M 呢?基本上它就是说 VR M 是。这么多模型跑在这么多硬件上,然后有这么多优化的一个。集合体。啊,那就很自然的就会有一个组合爆炸的问题了,就是我这个模型就跑在这个模型跑在这个硬件上是这个样子。跑在那个硬件上是那个样子,然后它不能泛化。那么为了避免这个问题呢,我们就想用一些这个 compile 的方式来做。啊,比如说我们这里一个简单的例子是这个。 Sequence paral 就是 maxon 里面的一个这个 sequence paral 的优化,那么它最开始的时候是作为 tensor paral 的一个。进一步的优化。然后基本上就是说你做 tensorflow 的时候,你可以把这个通信稍微改造一下,然后你可以降低这个 activation 的大小。那这个东西呢?你如果是做单个模型的话,其实是比较简单的,就是你把模型代码改吧,改吧,然后你要把这个 activation 降就是。进行切分的地方切一下就行。 游凯超(01:17:12): 但是微软我们它支持上百个模型,就是说未来可能还有上百个模型来加入,对吧?那这么一个功能要怎么加进去呢?如果我们采用这个手动加的方式,那我们就需要所有人都知道这个是怎么回事,然后所有人在未来加新模型的时候啊,都需要把这个东西实现一下,不然就不支持。那这个东西是非常痛苦的一个事情,尤其是开源项目,这个人手总是不够的,所以说我们最后这个想到的办法就是。那我们用 torch compile 做了这个计算图的捕获之后。然后我们把这个优化作为一个编译器的一个优化的 pass,就把这个计算图拿到之后,我们在计算图上做一些。做一些操作来做这个的优化,这样子呢,我们就可以。实现一次,然后应用在所有的模型上。啊,这样子维护成本也低一些。 游凯超(01:18:03): 然后呃,基于类似的思路,我们在 compiler 里面做了一个分层的。这个主要就是既保留 attention 部分的灵活性,又兼顾其他部分的效率。因为就是微软的一个核心就是 continue special,那 continue special 的核心就是。 Attention 部分它是分 sequence,其他部分基本上都是 per token 就可以直接算就行。那么其他部分的这个 protoken 的这个计算呢,一般都是 put a graph compatible。啊,除了后来出现了一个 MOE,他做他要做这个 experts,他做这个 token shuffle 的时候。 游凯超(01:18:41): 有点问题之外,嗯,其他的部分基本上其他模型基本上还都是可以做这个 protoken 的这个 plot graph,然后呃,这个在比较大的模型上面,它基本上跟 full coda graph 就把 attention 也考虑进去的。coda graph 是差不多的。然后当然如果你模型太小的话,这个肯定会比 full coda graph 慢一点。啊,但是我们觉得这个好处就是说。它是一个框架嘛,就是我们支持了分层的扩大。那如果你不想分层呢?也是一种分层是吧,你不分层其实就是一个分层。所以说我们把这个框架做好的时候,那你只需要告诉我说你这个 attention 是否支持这个?那支持的话,我就给你,不不支持的话,我就给你这个。呃,有分层扩大 graph 其实啊,我们做出来之后,它其实不只是在这个推理框架上。 游凯超(01:19:35): 其实现在像这个 next 这些训练框架,他们也在做这个分层的。啊,因为他们有的时候要做这个 gb 200上。然后 GB 200上面那个 CPU 比较?就是没有,没有这个叉86这么抛出,所以它经常这个 CPU 跟不上 GPU,所以它在训练的时候。啊,也需要做这个的优化。然后还有一些其他的,比如说做这个 sparse attention 的一些 research。嗯他。它也是通过一个插件改过我们的 attention,比如说 job carry cash 啊,或者这个 select carry cash 啊之类的这种。然后呢,他就去研究他对这个模型的效果的影响。然后啊,当然这些 recession 你是不可能指望他们懂 cloud graph 的。So. 所以那我们做这个分层的扩大就是说。 Attention 交给 researcher 随便你怎么玩的话,然后其他部分这个 protoken 的这个。就是计算,那么我们都用扩大管口包起来。那么这样子呢,你就 attention 负责灵活性,然后 vlan 负责其他部分的这个性。然后对近期的一个其他的趋势就是说。模型在越变越大,像这个千亿参数啊,万亿参数啊! 游凯超(01:20:49): 啊,迁移参数其实已经,现在大家觉得很小,但是现在一般都是不想要一个区间的这个参数。然后但其实这个 KV cat 在变得越来越小。就是。因为这个模型的参数越大,大家觉得它越智能,但是 KV cat 就涉及到说你一个 request 这个。啊,请求的成本是多少?所以大家都把这个 KV cache 变得越来越小。然后像 dpic 的这个 mla,它就只有一个 kpi。这就导致大家这个常用的 tensor paral 就变得很低效,因为 tensor paral 的话,我需要把 kv cache 做重复的保存。然后这里我们是跟这个呃 kimi 的洪超同学合作,把这个 kimi 的 decode context 和 parallel 啊放在了微软里面啊 kimi 也是,就是 long context 做的非常好的,所以他们在 context parallel 这方面做的非常先进。这个其实就是说打 KV catch 也做了切分。啊,然后你可能的时候你就需要加一些通信,把这个把这个 attention 这个恢复一下。啊,但一个显著的优势就是说你的 KV cache 的这个不会有冗余,那么你就可以有更大的空间去存更多的 KV cache 你就可以加大你的 request 这个 fetch size 啊,你的 KV cache 的效果也更好啊之类的。而且这个一个优势就是。 游凯超(01:22:08): 它的这个部署非常简。因为这个你要做大一批的部署啊,跟这个集群结构是。相当这个耦合的,那你这个集群的这个网络的拓扑啊什么的,嗯,跟这些通讯库没有做好兼容啊,那这个这个大一题是很难跑起来的,你像这种这个 DCP 的话,它基本上就是。 Tensor parallel 的一个普通的,一个简单的变种,那么你能跑起 tensor parallel,你就能跑起这个 DPT。那比如说这个。呃 DPC 3.1。这个普通的跑这个 TP 八。那么只有这个?啊600 K。也只能存600 K 个 token。然后呢,你开一个这个 TP 八加上 ECP 八啊,这个不增加 GP 数量,只是说在跟跟 TP 是共用 GP 的。啊,然后你就可以有这个?啊,四个 million 多的头本的,这个 tvcash 的 size 就增大了八倍。然后呢,你就可以做更多,比如说你要做 offline 的这个 batch inference 的时候呢,你可以有更好的这个 super 的,你可以打更大的这个 batch set。 游凯超(01:23:14): 然后另一个这个跟啊也是跟 kimi 同学合作,就是这个强化学习里面 wait update。训练那边把模型拿过来做推理。呃,这个。啊,能做到这个半分钟之内更新万亿参数。啊,这这也是就是为咱们有一个基础的支持,然后啊,拼命的同学这个在里面做了非常多的优化,然后再把这个优化拿出来反馈给这个上游这边。 游凯超(01:23:43): 然后还有这个像就是。做一些这个 serverless 的一些服务,或者说。资源共享的,比如说后训练的里面我一个 GPU 我要十分复用嘛,就是一会做训练,一会做推理,然后训练的时候就把推理 off load 掉,推理的时候就就把训练这个 off load 掉。对,然后我们是相当于用库在底层的一些特性,把这个就把这个 memory 啊 map 掉,然后后续这个呃 wake up 的时候再把这这个 map 回来就好。然后还有其他的一些性能优化,像这个。啊对 GPU 怎么打满?除了这个消除 CPU 的 overhead 之外,因为 continuous batching 它天然的就有这个 CPU 的很多的任务在那要做一些调度。所以近期在做这个,就是把这个 CPU 的调度跟其他的 batch 的这个。执行 overlap 起来就像这个这个 nano flow 这篇论文的这个。说的那样。 游凯超(01:24:48): 然后我们也非常重视这个用户体验,我们有很多种这个安装方式像。呃的安装,然后的安装。然后啊,因为我们发现很多人他其实不需要改 kernel 所以我们提供了一个叫预编译安装的方式,就是你加一个环境变量,这个 VM use pre compound 等于一,然后你在安装的时候。他就会去 VM 的这个一个 reach 去里面把编译好的这个 SO 拿过来,然后你就只用你本地的这个 python 文件就行。因为。对,因为我们发现编译 VM 确实是一个稍微有点痛苦的事情,就是因为它要要编译的科呢有点多。 游凯超(01:25:27): 嗯,所以。所以反正我们 CI 也编译好了,然后我们就放出来给大家用了。Thank. 然后这个其实也相当于说我们在做一个 per commit 的发版。就相当于我们所有的 commit 都是发了 will 的。然后对后面如果比如说你要做 bycycle 呀,对吧,发现什么问题的时候,你要查的时候你就可以。把这些 view 都拉下来,然后你去做这个二分查找。然后也可以把这个模型支持跟我们的这个正常的发版分开。比如说我们当时这个。发布的时候嗯 kimi K 二发布的时候。可能这个 PR 提上来,然后 CI 跑个半个小时,一个小时合进去了,然后再过半个小时,一个小时,这个 will 就做好了,然后大家就可以用这个 will 去跑这个 kimi K 二了,就不至于说我为了 kimi K 二,马上就要发一个新版本。对,然后作为这个大模型推理的一个基础的引擎啊,那么 VM 的一个重要功能就是需要维护好这个功能和性能。因为这么多人用嘛,所以我们需要保证说啊,不破坏这个什么东西。为此呢,我们是就有非常非常多的测试。然后呢,每个 commit 当然进去都是要有非常非常多的测试。 游凯超(01:26:46): 然后我们跟这个拍拖者团队合作,我们用就拍拖者,他的 CI 的 infra 做的非常好。所以我们用它的这个复用它一部分的这个。做这个,比如说跟踪 VR M 的这个每一个 commit 上面的一些主流模型的性能。啊,然后就是这种东西就是。不出问题的时候你都觉得它没用。一旦出问题了,你看着那个曲线能马上找到那个 commit 的时候,你觉得它非常有用? 游凯超(01:27:15): 啊,当然这个。就我们非常有非常幸运能有这部分功能啊,但是这背后呢,也是这个大量的资源的投入,我们现在光是 CI 每个月就花了超过十万美元。这个背后是相当大,相当大的一个资源的投入。我看每个都跑。呃,它是 postmerge 的 CI?就是说他进了之后才跑。就跑重要的嘛,就是大家觉得哪几个模型重要的就跑一跑。 游凯超(01:27:54): 对,想想就头痛对吧? 游凯超(01:28:08): 啊啊,我跟线上的同学解释一下,就是这同学在问说,如果是一个开口什么的,或者说。要不要看,然后来测?哪些受到影响的模型?嗯,对,这是这是一个嗯,可能大家都会想做的事情,但是。只能说稍微提醒一下,这是一个。呃 premature 的 optimization 就是你。能做到这个当然很好,但问题是一般大家这个依赖都太复杂了,一行这里改的代码,你不知道什么时候就影响到其他的模型。 游凯超(01:29:00): 啊对对对。 Dock 是有的。对,只在里面做,其他的都不行。对,其他都不敢动,就是你不知道,因为 python 很动态对吧?你也不知道你这行代码会被谁运行?嗯,所以最好的最好的办法还是?砸钱都跑吧!那你。那这这也其实这带来的一个问题就是 VOM 的 CI 估计会比拍拖这个 CI 贵很多。因为拍特辑它很多时候还是功能性的 CI 就是。我这个坑都能跑对吧,我测一测。 游凯超(01:29:33): 然后微软这边是要是需要做 end to end 的测试的。比如说这个 DPG 这种大模型。我们可能需要做 N to N 的测试,需要保证它这个。没有问题对吧,因为。非常的。就是。非常的 subtle,就是它非常的 fragile。因为你可能这一行,你可能这一行代码你不知道怎么搞的。就就影响到了他,尤其是。嗯,就是为我们支持这么多功能,这么多特性的时候。所以很难说,我很难做,保证说我这个 PR 我看起来。只改了千问的代码。但它却影响了 deep seek 的模型。嗯嗯。 游凯超(01:30:11): 对,我们,我们尝试过很多这样的优化,最后发现。最好的办法就是还是砸钱多测,不然。不然就是你需要砸人多看。反正但砸人也是砸钱,所以。对,还不如就就砸钱吧!对,然后这也是对非常感谢我们的赞助商哈,刚才说到这个 CI 的资源啊,很多都是这些云厂商啊,或者一些这个机构给我们提供的一些知识啊,我们几个人其实。也出不了这么多钱。 游凯超(01:30:45): 然后也非常感谢我们这个社区的贡献者啊,我们现在有1700多名贡献者。嗯,其中包括有40多个。他们来自比如说加州大学伯克利分校一个。清华大学,香港科技大学等等这些。其实这些学校都都不是官方支持的,都是学生。懂吧。都是来自这些学校的学生,像我们丘纳的同学一样。是吧。 游凯超(01:31:14): 然后还有像这个英伟达 AMD 谷歌,华为,英特尔这些硬件厂商,对吧,那他们的目的很明确,就是让微软在这上面跑起来嘛。然后还有像这个 red hat meta hugging face any skill 这些软件厂商啊,这些就是。就是 VM 的积极使用者,他们可能要把 VM 的这个,比如说用到他们自己的场景啊,或者卖到这个其他的地方啊等等。然后像这个千问呢,这个啊,这些模型厂商呢,他们可能就是他们内部这个开发的时候也是用 VM 的,然后他们的模型也是在 VM 里面,所以他们需要这个啊,来维护 VM 里面的一些模型。 游凯超(01:31:53): 当然,除此之外,还有就是非常纯粹的一些热爱开源的贡献者,对吧,也不是学校的学生,也没有什么工作,但人家就是非常热爱开源,每天就给开源写代码。那我们也非常感谢,就是有这些的人的,有这些人的付出。可以说没有这些贡献者的这个贡献,也就没有微软项目的今天。 游凯超(01:32:16): 然后啊,也非常感谢我们欣欣向荣的社区。我们在今年8月份的时候在这个。国内仅仅8月份就办了三场,这个北京,上海,深圳都有。啊,场场都是人数爆满。然后还有很多这个全世界各地的这个这个新加坡啊,这个欧洲啊,北美啊,加拿大啊等等。然后其实今天在上海就有一场。啊,然后11月1号在北京还有一场。啊,大家可以关注这个 O IM 的***。嗯,对,***上面搜 VM,然后那个***就会,嗯,有 VTUP 的时候就会推送。 游凯超(01:32:55): 然后 VM 社区其实它不仅仅是开发和优化。VR 其实我我更乐意把它说成是跟大模型推理相关的一些。就相关技术的一个呃发源地。因为嗯,就大家在 vm 之上,比如说这个新 KM S 它在。说这个怎么做 deterministic 的推理这个 batch environment mode 其实主要就是跟这个 continuous batching 相关的一个问题。然后像这个 invidia 跟大家说这个就是怎么去调试 illegal memory access。这种 GPU side 的 error 其实之前都是非常难调试的,但大家不知道,其实 driver 里面有提供这样的功能。然后包括就像这个有个 google 的前工程师呕心沥血,给大家写了一个非常非常详细的这个 VM 的。内部细节解读啊,这些都是。也都都是社区贡献者的一个呃,非常大的贡献。 游凯超(01:33:53): 对,然后嗯,稍微总结一下就是 VM 项目本身我们觉得就是它的目标就是构建一个这个又快又好用的大模型推理引擎。那我觉得这个不是说我们现在的几个人,或者说我们几十个人就能够完成这一目标。我觉得最关键的就是说,我们想把未来我们打造成一个大模型推理的这个社区。它是一个技术社区,那么所有关心使用这些技术的这个公公司和个体。大家都来跟我们一起这个一起维护,一起共建这个生态。 游凯超(01:34:29): 以上就是是一些简单介绍,然后。啊一些这个相关链接,比如说这个。嗯 github 的链接啊这个? Slack 的链接啊,因为因为国外同学没有微信啊,所以我们主要的这个沟通渠道是 slack。国内因为微信用的比较多,所以我们现在也开通了微信的。沟通的方式就比如说这个微信小助手你可以。对,你可以***,然后再把你拉进一些交流群,然后可以在微信群里面这个有一些简单的沟通。然后其他的这个反正有用户的地方,我们应该都在像这个。对,推特这个小红书这个知乎什么的对 linkedin 都有。然后呃想了解 VM 的话,呃,我觉得肯定看文档是一个。主要的方式,然后威尔木就是不仅是。啊,用于 ai 推理,我们也用 ai 推理来帮助微软们变得更好,就是。呃,文档页面有一个 ask ai,就是你可以,它可以相当于就是有一个小公司帮我们做了一些 rack 服务,它可以把这个。 Github 的 issue 啊 PR 啊 documentation 啊,都汇总一下,然后然后你可以在上面问他什么,这个为了我们现在支持什么东西啊,或者什么什么东西该怎么用啊什么的,他帮你这个 summarize 一下,给你一些回复。 游凯超(01:35:53): 啊,然后。对我们的一些官方合作,这个有一个这个 email 这个。啊 we are passionate 的类似点 broker 点 edu 啊,因为这个项目还是从 broker 里出来的,我们还在还保留着这个邮箱。啊,然后。其他的嗯,对,如果跟我个人联系的话,给他发邮件也行,这个我邮件就是邮箱就是这个啊,我全名这个尤凯超艾特 email 点 com。 游凯超(01:36:20): 然后嗯。对,我就讲到这里吧!可以看看大家有什么你想交流的。 游凯超(01:36:43): 线上的同学线上同学有问题也可以直接。开麦。有人想交流的东西吗?竞品项目我觉得就是现在基本上就属于一个各自发展的状态吧,就是。尽量避免公开场合直接互掐。啊,因为曾经。应该就是几个月前吧,对几个月前公开互掐过一次,然后大家都觉得观感不太好,所以最后就。就说反正别比了。各自各自做各自的就行了。所以你应该很少在。公开场合看到。把这两个放在一起比的。嗯,但就是推理技术一般。怎么说呢,就是各自发展,然后有什么好的功能?也都会相互借鉴吧?对,在 MOE 那块 S 上做的更早一些。所以所以微软这边有一些还是借鉴了他们。然后像 VM 这边做这个? Pytho ngraph 用很多 torch compile 的,然后啊 S 后面也拿过去了,所以。就就大概是这么一个情况。 游凯超(01:38:27): 要不线上同学没有什么?别的问题的话,我们就把线上的。关了。然后我们看看线下有没有什么。大家想问一些。不不方便在线上沟通的。好吧,我们就把线上的关了。 游凯超(01:38:46): 那么。