深度对谈 vLLM 团队:如何从零搭建一个成功的开源生态|此话当真 EP27

用声音,听见真格。


「此话当真」是一档泛商业类播客,我们希望搭建这样一个分享和交流的平台,让每一个对商业、科技、创投充满好奇的人都能在这里有所收获。每期播客将会由不同的真格投资人担任主持,和各领域的领军人物一起带大家深入了解科技趋势,以及创新技术的影响力。交流科技热点,我们只想给你最专业的解读。


当然,我们希望这不仅仅是一个播客,更是一次创业的探索。真格,你的创业第一站!我们期待与你相遇,一同发现新的可能。



两年时间,vLLM 从加州大学伯克利分校的一个 Demo 项目成长为全球范围内最受欢迎的开源大模型推理加速框架。AI 技术不断突破极限,大语言模型正处于浪潮之巅。而在开发以外,模型的部署常常受到推理速度过慢、GPU 利用率过低的阻碍。vLLM 以 PagedAttention 为核心算法,支持 30+ 生成式大语言模型,能够做到与 Hugging Face Transformers 相比 24 倍的吞吐量。


昨天,真格基金正式宣布对 vLLM 项目进行捐赠。对于创造未来的重要基石,我们愿尽绵薄之力。本期播客,我们请来了 vLLM 项目的四位主要团队成员以及主导这次捐赠的真格基金管理合伙人戴雨森,聊聊 vLLM 背后的开源故事,以及这个项目是如何在 AI 浪潮中势如破竹的。



深度对谈 vLLM 团队:如何从零搭建一个成功的开源生态|此话当真 EP27

内容纲要


在本期播客中,他们将会谈到:


• vLLM 如何在短短两年内成为了炙手可热的开源大模型推理加速框架?

• 从学界项目出发,vLLM 团队是如何精准发挥自身优势的?

• 为何 vLLM 开源项目能够建立起如此活跃的技术社区生态,吸引全球人才共创?

• vLLM 的团队如何看待商业化,他们对作为开源项目的 vLLM 有什么愿景?


以下是真格团队整理的对话内容,也欢迎大家移步小宇宙 APP、喜马拉雅或 Apple Podcast 搜索并订阅「此话当真」收听完整版。



深度对谈 vLLM 团队:如何从零搭建一个成功的开源生态|此话当真 EP27


01

vLLM 项目与团队的基本介绍


Wendi:

首先请大家介绍一下自己在 vLLM 团队中负责的工作,以及大家是怎么知道、如何决定加入 vLLM 的?


Zhuohan:

大家好,我是李卓翰,目前是加州大学伯克利分校的博士生,我的研究领域是机器学习系统,在这个领域我们会通过系统优化提高机器学习算法和模型执行速度,以及研究如何做更大规模、更加高效的并行、执行等等一系列的问题。我从第一天开始就在 vLLM 团队里,从零开始与伙伴一起做出了 PagedAttention 算法、投研究论文,再到之后开源项目的整理、发布,一直发展至今天。目前我主要负责 vLLM 的高层框架设计与开源社区的管理和宣传。


Lily:

大家好,我是 Lily 柳晓萱,现在也是伯克利的博士生。我在 vLLM 发布论文的时候知道了这个项目,觉得非常有意思。正好当时我也做了一些关于推理优化的科研工作,觉得可以在 vLLM 里尝试自己在科研方面的想法,所以就决定加入。我在 vLLM 里做的工作主要是科研导向,在 vLLM 这个框架内部寻找有没有可以继续探索、挖掘的科研方向,比如说推理加速、任务调度优化的研究。当然,做科研的目的还是希望有更多的人可以使用。


Simon:

大家好,我叫 Simon,我是伯克利第二年的博士生。我大概是在暑假结束的时候加入了 vLLM 团队,协助搭建整个开源的生态,这也是我现在的大概工作。我从 7 年前在伯克利读本科的时候就在做关于开源的项目,特别是在机器学习等领域的项目上做过技术和产品向的工作。现在我算是 vLLM 的产品经理或者社区管理者,在做架构相关的一些工作。


Kaichao:

大家好,我是游凯超,我是清华的博士生,今年在伯克利访问。我在之前做过一些机器学习的算法理论,包括机器学习编译器相关的内容。而 vLLM 针对大模型推理优化里面有一部分就是用机器学习编译器,所以我自然地加入到 vLLM 作为我访问的重点项目。


但是加入之后,在开始机器学习编译器相关的进展之前,我发现 vLLM 作为一个开源项目还有很多需要优化的部分,我认为得先把 vLLM 做好,后面里面的每一部分才会有它的价值,所以我现在先在做 vLLM 开源内容的维护管理。 


Wendi:

请大家和听众朋友们介绍一下 vLLM 项目吧。


Simon:

vLLM 是大语言模型的推理与服务引擎。简单来说, vLLM 的功能是将已经训练好的模型部署到生产环境里面,并着重于效率与成本。具体表现上,它让模型在沟通时能回复得更快,也能让 GPU 物尽其用,最终可以让 AI 产品落地更快。


Zhuohan:
从技术角度来讲,vLLM 首先基于的是我们提出的 PagedAttention 算法。PagedAttention 是一种新的注意力计算方法,利用操作系统里面的分页和虚拟内存技术来管理优化 Transformer 模型注意力操作里的 KV 缓存(KV Cache)。使用 PagedAttention 技术后,内存利用率相较于之前最好的系统能够有大概 4-5 倍的提高,吞吐量也会有大概 4 倍的提升。或者说,用同样的一块 GPU,你可以服务比之前多 4 倍的请求。


同时,vLLM 也是一个比较完整的大语言模型的推理和部署的引擎。像连续批处理(Continuous Batching)、CUDA Graphs、模型量化(Quantization)、模型并行、前缀缓存(Prefix Caching),推测解码(Speculative Decoding)等等一系列的技术都被包括在项目里面,并且也有一系列为推理定制的 CUDA 核函数(CUDA Kernels),这些技术一起提高了大语言模型的推理速度和吞吐量,使得与直接使用 Hugging Face 上的模型 Transformer Library 做推理相比能够有大概一到两个数量级的吞吐量提升。


除此之外,vLLM 作为一个开源项目,也和以 Hugging Face 为例的一些社区紧密结合,从而目前能够支持一键部署 30 多种不同的大语言模型,例如 Llama、Mixtral、千问、零一万物等。我们也在不停地进行前沿探索。例如在硬件适配方面,除了 Nvidia GPU 之外,怎样能够把 vLLM 在其他的硬件上面跑起来?再比如在科研方面,我们也在做能够进一步提高系统效率和推理速度的研究。


Yusen:

关于模型推理的加速其实有不少的技术方案思路,vLLM 是在什么技术方向上去提升性能的?


Simon:

可以分很多方向来讲,但总结下来都需要通过在不同的系统资源中进行取舍选择,去提高整个模型的推理能力。比如说最开始说的模型量化(Quantization)是通过失去一部分准确性(accuracy)来提高速度;推测解码(Speculative Decoding)是用更多的计算资源提高速度;分块预填充(Chunked Prefill) 是通过减少生成第一个 token 的时间来提高整体响应流延迟的稳定性。然后前缀缓存(Prefix Caching)是利用多余的内存和 GPU 资源来提高生成第一个 token 的速度。所以其实有不同的优化方向,大家都在其中选择对使用场景最合适的一个方式。


Zhuohan:

补充一点,我觉得还有一种分类这些方法的方式,大概两类。第一类是在单个模型和单个请求上面做了一些优化,把推理的一些操作用更好的针对于推理的方式来实现,让它变得更快。例如 Simon 刚刚提到的模型量化(Quantization),或者是一个更好的 GPU 核函数(GPU Kernel)。这一类的优化其实是在 vLLM 之前已经有很多的推理引擎都在做的事情,比如像 Nvidia 的 TensorRT、FasterTransformer。


但其实对于大模型推理来说,还有一类更加重要,就是在有多个不同的请求同时来到系统的时候要做的优化。这个优化包括了像连续批处理(Continuous Batching)——让这个新请求和执行到一半的请求一起执行的技术。以及我们提出的 PagedAttention,是为了解决在进行连续批处理时遇到的内存问题而进行的一种特定优化。再包括 Simon 刚刚提到的分块预填充(Chunked Prefill)和前缀缓存(Prefix Caching)。而这一类优化在 vLLM 之前基本上没有大模型推理的框架会想到要去做。


02

从零到一,成为最快、最好用的开源引擎


Yusen:
在 ChatGPT 出来之前,你们是如何想到这个想法,推出 vLLM 第一个版本的?这是一个非常新颖的思路。

Zhuohan:

在 2022 年年底,我们在学校搭建了一个大语言模型的 Demo。那个时候服务器上使用的模型还是 Facebook 的 OPT-175B 模型。那时,Facebook 还没有改名为 Meta。我们最初建立这个 Demo 是为了宣传我们之前的另一个开源项目 Alpa。但是在部署 Demo 的时候,我们发现它运行得非常缓慢,并且 GPU 的利用率特别低。这让我们认识到,大型语言模型的推理效率本身是一个需要关注的问题,特别是超越这个模型本身的一些优化。虽然 Alpa 项目在模型并行等方面已经做了一些优化,但这还不够,我们还需要进行更多跨请求的优化工作。


我们注意到当时市场上完全没有开源系统专注于大语言模型的推理优化,所以我们打算自己动手,从零开始做一个。开发到一半时,我们意识到大模型推理过程中 GPU 内存本身是一个巨大的瓶颈,而且以往的内存管理方式存在极大的浪费。经过多次迭代,我们提出了一种新的注意力计算方法,因为注意力机制是在大语言模型中极为重要的操作。为了改善这一操作的内存瓶颈问题,我们提出了 PagedAttention 算法,发现这个技术能够比之前节省很多内存,提升存储效率。


2023 年 2 月左右,我们将 PagedAttention 作为一个研究想法开始做,着手撰写论文、构建研究原型,通过实验来证明我们的想法是可行的。到 2023 年 6 月底,正式发布了 vLLM 这个开源项目。我们非常幸运,有很多人了解和使用了这个项目,我们也一直维护到了今天。


Yusen:
vLLM 的论文作者和项目组成员其实经历了一个演变的过程。vLLM 作为一个开源项目,和很多创业公司也不太一样。能否介绍一下咱们现在团队成员的组成,大家是以怎样的组织形式进行合作的?

Simon:
有个很简单的答案,就是我们的团队主要由伯克利的博士生组成。我们都在同一个实验室,有相同的导师团队。我们的组织形式并没有那么严格或正式,大家都是出于对这个项目的兴趣和喜爱,以及愿意能在这里做开源相关的工作而聚在一起。这也代表着我们没有任何业绩考核,导师们对我们也没有硬性要求,完全是靠内在动力驱动的合作项目。

Yusen:
就是为爱发电。


Zhuohan:
是的。我想补充一点,作为伯克利博士生,我觉得我们实验室有一个比较好的传统,是说我们喜欢做这种非常务实的问题,尤其是目前工业界碰到的痛点。我们希望做出来的产品能够在工业界被部署和直接应用,并产生直接的影响。而开源项目是能让自己直接实现这种影响非常好的方式。如果你有一个研究想法,并成功地将其转化为一个高质量的开源项目,大家就能够更容易地使用这个项目,采纳你的研究想法,进而提升了这个研究的影响力。对于我们这些系统方向的博士生来说也很有吸引力。


Yusen:
一开始 vLLM 的目标是什么?你们怎么看现在离这个目标的距离和实现程度?

Zhuohan:
项目的目标从一开始就是成为最快、最好用的开源引擎,并且能够成为大语言模型推理的一个标准。我们一直在努力成为最快,因为大家也在不断追赶,我们也不断有新技术推出,不断优化我们的框架。

我们认为好用是一个开源项目必须具备的特点,这样大家才会开始使用它,才会提出问题或做出进一步的贡献。所以这是第一道门槛,我们必须把门槛设得非常低。至于成为一个标准,我们还在努力。我们希望能够做到这一点,但这是一个逐渐的过程。

Lily:

我想补充一下。当我刚加入 vLLM 时,主要是围绕 PagedAttention 这项技术。但在过去这一年,我觉得 vLLM 真的变化很大,从一个优化方向变成了一个非常完善的框架。我觉得从科研角度来说,vLLM 现在作为一个推理框架,它就像一个百宝箱。如果你想实现各种想法或尝试各种功能,你都可以在 vLLM 找到一个入口,并且可以很快地实现它。

Yusen:
Lily 要不正好讲一讲,你觉得从 PagedAttention 开始,vLLM 最近两年最大的更新升级是什么?

Lily:

对我来说,可能最开始 vLLM 是以连续批处理(Continuous Batching)和 PagedAttention 技术为核心,到后来在技术层面发展了推测解码(Speculative Decoding)。我肯定有自己的偏见,因为我做的科研是关于推测解码(Speculative Decoding)的,即减少推理的延迟,让它变得更快。所以对我来说这是一个非常重要的功能。因为实际上我们以前做的相关科研并不是很真实,虽然算法很厉害,大家稍微验证了一下,但没有人在一个生产场景下真正证明这项技术是可行的。但在 vLLM 中,我们实现了这样的框架,并且我们也可以验证它确实可以加速。它可以显著帮助减少延迟,在某些场景下可以减少两到三倍,所以我觉得这对我而言是一个很大的更新。


还有就像卓翰提到的前缀缓存(Prefix Caching)和模型量化(Quantization),我觉得对延迟和硬件都有很大影响。


03

「大卫战胜歌利亚」,开源模式和代码质量是核心


Yusen:
在 AI 兴起的时候,很多人都觉得大厂因为有更多的算力、资金和人,面对学界具备很多优势。但作为一个为爱发电的团队,vLLM 却在如何提高推理效率这一重要的领域获得了世界级的成果表现,有点像大卫战胜哥利亚,或者说至少暂时跑赢哥利亚的故事。这里面有没有一些特别的原因?

Simon:
从战略上来讲,首先是基于我们实验室的开源传统。伯克利系统方面的实验室之前就做过很多开源项目,比如最古早的 BSD(Berkeley Software Distribution)、数据库领域的 Postgres、硬件领域的 RISC-V、数据处理领域的 Spark、AI 领域的 Ray。这些开源项目都是一脉相承的,是尝试从学界做出来一个实用的项目,让业界一起参与,同时学界也可以了解新的想法,开发新的框架。


深度对谈 vLLM 团队:如何从零搭建一个成功的开源生态|此话当真 EP27

图片来源:PostgreSQL 官网



当我们把 vLLM 做大的时候,我们想要做的是不能只让伯克利的博士生用爱发电写代码,因为我们知道博士生不可能全职写代码,这就代表着我们要让这个项目有足够多业界的人参与进来。但如何让他们参与进来呢?他们需要通过这个项目贡献对公司业务有帮助的功能。不同的公司贡献不同的功能,当这些公司把他们的功能都加起来的时候,他们可能在三个月内就完成了需要闭门造车三年才能达到的一些成就。

Zhuohan:
除了开源的战略模式以外,在技术上我也想讲两点。第一点就是很多人认为,大模型需要很多 GPU。其实在做大语言模型推理的时候,这一点不是特别成立。比如说你想要做一个 Llama 7B 或者 Llama 13B 模型的推理,其实你只需要一块 A100 GPU 就能够做这件事情。即使是一个比较大的模型,像 Llama 70B,你可能有 4-8 块 GPU,你就可以做这件事情。所以大语言模型推理系统是一个学术界也能够做得比较好的领域。

第二点原因是,开源框架会对我们的代码质量提出非常高的要求。作为开源项目,我们需要吸引更多的贡献者,大家会希望我们代码简洁、易读且进行很好的模块化。在另一方面,做大模型推理的系统是一个较复杂的工程。一个好的代码的组织结构对功能的添加和集成、系统的速度来说很重要。因此,由于我们从始至终对代码质量的坚持,vLLM 能够不停地整合新的优化方法和功能,使得它能一直跑在前列。

Yusen:
既然我们的组织相对松散,成员大多是学生,如何让代码质量达到这么高的水平?

Zhuohan:
代码质量这个事情比较主观、很难量化。我觉得可能源于我们始终会坚持对项目的高标准,比如说一个随机的贡献者给了一个代码更改(Pull Request,PR),我们一开始就会非常认真地做代码审查(Code Review),并且甚至很多时候我们会接替处理这个 PR,自己给它贡献一些代码,把它改好之后再合并,保证这个代码的质量比较高。并且我们会经常做各种各样的重构(Refactoring)。


我觉得一个比较重要的事情是模型量化(Quantization)。如果你是一个在公司里的软件工程师,你的领导给了一个做框架的任务,驱动你的可能是要尽快地、不管用什么方式先把这个功能给实现出来。不管代码写成什么样,赶紧上线,才能完成 KPI。但我们团队想的问题就是我们要能够搭建一个好的量化框架,使得让其他发明了新的量化算法的人可以比较简单地在 vLLM 里面实现他的算法,并且这个算法能够在其他的所有的模型上都可以被简单地使用。


我们当时做了一系列的重构(refactoring)来改变我们模型的实现方式,使得量化算法实现的方法和大语言模型 LLM 本身的定义完全分离。这样你新加一个新的量化方法就会变得比较简单、干净,同时加模型的人也不需要考虑我的这个模型到底要怎么量化。这只是其中一个例子,我们在其他方面也做了很多这样子的抽象(abstraction)工作,比如我们做了硬件的抽象,凯超最近也在做不同分布式的编制(orchestration)方式的重构(refactoring)。我觉得这个是我们保证代码质量的一个比较重要的原因。


Simon:
再加一点,很多在伯克利读系统的博士生,大家其实都在业界工作过,也知道好的、高质量的代码是长什么样子。所以说到最后其实更多偏向于变成个人和团队的选择,而不是一个能力的问题。

Yusen:
你们刚刚讲到了 vLLM 作为一个为爱发电的开源组织,因为没有明确的 KPI 或者产品发布的压力,反而能做到一些在大厂里面不太容易实现的目标。我正好也想追问 Simon,因为你之前也是作为创始成员加入了 Anyscale,一家从伯克利实验室开源项目慢慢成长起来的独角兽公司,能不能请你再展开讲一讲伯克利的开源传统,以及开源怎么样能够带动业界和学界一起探索?

Simon :

伯克利的开源传统很多,简单来讲就是让学界最新的一些想法去跟业界的生产环境和具体的使用场景去碰撞,同时也让学界比较爱探索的博士生去与业界比较谨慎的工程师去碰撞,产生新的东西。比如说,博士生可能就爱写做得更快、更有意思、更好的抽象的东西,而业界就会偏好更实用的东西。在这个上面大家其实会双方都在互相地学习,就会让最后做出来的开源项目做到又实用,又能带领其他竞品不断提升,就会诞生新的想法。当时做 Ray 的时候,我们出了一个叫 Actor 的抽象(abstraction),在这个上面之后几乎所有的框架都加入了相关的抽象(abstraction)。


04

vLLM 的用户轶事与发展蓝图


Yusen:
在这两年的时间里面, vLLM 的发展有哪些关键的节点?团队的思路上有些什么样的转变?早期用户跟我们合作有哪些需求反馈?后面在整个发展过程中有没有遇到什么样的困难?

Zhuohan:

最开始我们的唯一追求就「快」。特别是在 Facebook 的 OPT Demo 时,速度实在太慢了,当三个人同时使用时,系统就卡顿严重,需要排队等待十分钟。因此,我们最初的需求就是提高速度。

 

这里有一个小故事可以分享。当我们的 PagedAttention 论文发表后,到开源之前有两个月的时间。这期间,我们不仅在整理代码,还在实验室的另一个项目 Chatbot Arena 中应用了 vLLM。当时他们需要评估很多不同的大模型使用了比较简单的 Hugging Face 的框架。但随着使用量的增加,发现无法支持所需的流量。因此,他们在我们开源之前就采用了 vLLM 框架。在与他们合作的过程中,我们修复了很多 bug,使得我们在开源发布之前就已经有了一个成熟的用户基础。

 

从最初的 OPT Demo 到 Chatbot Arena,我们的目标还停留在速度。但在开源发布之后,我们的目标变得更加多样化。首先,我们要支持多种模型。因为当时各种新模型层出不穷,我们需要改造系统让添加新模型变得容易。对于重要的模型,我们会尽快甚至在模型发布的当天就把它加入进来。另外,在更广度的层面,我们需要整合各种优化方法,构建一个更好的系统架构,从而使得其他的贡献者能够比较容易地加入新的优化措施。而在开源之后,vLLM 新的重要变化在于从单一的「快」转变为更多地为开源社区和其贡献者服务的角色。


深度对谈 vLLM 团队:如何从零搭建一个成功的开源生态|此话当真 EP27

图片来源:Chatbot Arena 官网

 

Yusen:
vLLM 支持的模型非常的多,并且很多主流的开源模型在发布之前都会来主动找我们进行适配,这种紧密的合作关系是怎么建立起来的?


Zhuohan:
合作的建立是一个自然的过程,最大的原因其实还是我们的框架比较好用,用户使用后确实能够感受到速度的提升。随着开源用户的使用量增长,如果大家都在使用 vLLM 来支持模型的话,那大家会想接着用 vLLM 去部署他们新发布的模型,因此把他们新发布的模型整合进 vLLM 也成了一个对他们来说高优先级的事项,这也是一个比较有机的过程。我们也因此和很多开源模型开发的团队建立了比较多的联系。

Yusen:
这里面有没有什么比较有意思的故事可以分享的?

Zhuohan:
我觉得和 Mistral 合作比较神奇。他们在第一个模型发布的时候就找到我们了,当时他们还是一个不太出名的欧洲公司,我们唯一看到的就是他们融了很多资金,然后我们看着他们一路发展,直到今天。

Simon:
对,他们会有一些比较有意思的神奇的操作。比如说在一个周五大家都比较放松准备过周末的时候,他们会突然在 X 上面发布一个 P2P 种子链接,里面只有模型的权重和一些最基本的配置参数,就是你不能直接运行的东西。他们让大家去猜测、去逆向工程、去玩。但这个时候 Mistral 团队已经通过邮件给我们发了一个 PR,说这个东西你现在不能告诉大家,这样等我们正式向全世界发布之后,你就可以直接拥有第一时间的支持了。

所以说周末的时候看着大家都在猜测这个模型,而我们已经知道这个模型的代码,但哪都不能说。这个在第一次的时候还挺好玩的,可以看一下大模型厂商做的有意思的公关宣传。

 

Yusen:

现在大模型发布前的悬念其实越来越拉满。不管是像 OpenAI 这样的闭源模型,还是像 Llama、千问、 Deepseek 这样的开源模型,大家都像会拿到新的玩具一样好奇他们接下来要做什么,以及他们会有什么样新的特点?说到这个,其实 Deepseek 和千问最近都发了 V2,在开源界反响都很好。你们在和他们合作时有没有什么有意思的故事,或者说观察到他们为什么能够成长得这么快?

 

Simon:

这个说实话好像我们没有特别多的信息,反而确实是有一些很正面的合作体验。

 

Zhuohan:

我觉得很有趣的一点就是当一个模型比较火了之后,关于这个模型的 issue 就会疯狂地增加。比如很多人会说只要 vLLM 跑不了千问了,那就说明这段时间千问比较火。如果这一段时间跑不了 Deepseek,那就说明这一段时间 Deepseek 比较火。而且他们跑不下来的原因可能就是因为自己的环境有些问题。

 

Simon:

对,这也是我们知道模型火爆程度的另一个方式。比如说去年有段时间 ChatGLM 在 vLLM 的支持不是很好,但是我们一天到晚都能收到用户的提问,然后一直在那些 issue 上面评论说想来跑这个模型,然后我们就会拿到这个信号,尽快地去做适配。

 

Zhuohan:

如果我没记错的话,当时可能有大概 5 个不同的 PR 来支持 ChatGLM。

 

Yusen:

这也是开源的好处,就是一个海纳百川的过程,大家都可以互相进步,并且分享更多的信息。今天很高兴请到了 vLLM 比较新的两位成员 Lily 和凯超,想请凯超分享一下,自从加入 vLLM 以来,有没有遇到什么印象深刻的事情?特别是在技术上遇到了哪些难点?

Kaichao:
我觉得做 vLLM 最特殊的一点在于我们在做的是一个真正很多人在用的系统。如果你是做纯粹的科研,比如说发一篇论文可以有很多的前提条件。你可以说我只在这几个条件下测试,在这几个条件下我有效,那么我就可以写论文。可如果我们要做一个大家都能用的系统,最大的困难就是它能出错的地方都可以出错,比如说硬件会有问题,驱动会有问题,然后软件环境也会有问题,所以你就需要有全面的场景支持。


就像我们之前调试了很久的一个问题,最后发现是 Nvidia 的驱动、软件有问题。如果是在做学术研究的时候,有问题跳过它、换一个版本就可以了。但是做一个系统需要考虑说用户装的就是这个版本,我们没有办法改变它,我们该怎么办。我觉得在克服这些困难的过程中,个人也学习到很多,因为这就是真实世界中的困难。


Yusen:

你提到的这一点非常重要。因为很多的时候研究只针对特定情况,但作为开源项目,我们现在实际上已经支持了 30 多种不同类型的大型语言模型,要支持这么多的模型并不容易。你认为未来我们会重点支持几个模型,还是继续保持这种开放的方式?

 

Kaichao:

目前其实他们的架构还没有那么多样,当然我们现在也有一些模型支持得不够好,比如像 Embedding 的模型,还有 Encoder-Decoder 的模型。如果未来模型变得更加多样化,就像我们最近在讨论的状态空间模型(State Space Model,SSM),它们可能没有那么复杂的显存管理需求;还有一些混合形式的模型,既有注意力机制,又有局部性的特征,这个时候可能会更加困难一点。当我们评估模型支持的复杂程度时,我们不能只看它有多少种,或者有多少个名字,而更应该看这个名字背后的模型有哪些创新结构,这些结构是最难支持的。

 

Yusen:

你们认为接下来什么样的结构会成为主流?大家现在都在寻找模型结构上的创新,你们对未来的发展有没有什么看法?

 

Kaichao:

我认为大家正在追求效率。我的感觉是模型能力的上限似乎已经接近了。那些顶级的模型,可能基本上已经满足大家的需求了。那么这个时候,大家就开始降低成本,即如何在保持模型质量大概相同的同时,让它推理得更快?比如之前 DeepSeek 的 Latent Attention 机制,我认为接下来探索模型效率极限的工作会更多。

 

Simon:

从我的角度来看,很多是场景驱动的。目前大模型在语言生成或聊天机器人方面的架构可能没有太多变化,但当大家逐渐把它应用于长文本处理时,可能就需要比较不同的、更稀疏的,或者采用其他本地注意力机制的东西。或者是多模态,当加入图片生成和理解、视频和语音相关功能时,模型架构可能还需要进一步变化以更好地适配他们。我个人认为,这其中基础的注意力机制可能不会有太大变化,而是大家会根据不同的使用场景,不同模型的不同版本去改造它。

 

Zhuohan:

之前我们看到的一个比较大的浪潮是 MoE,即混合专家模型(Mixture of Experts,MOE)。这是我们过去经历过的一个比较重要的大模型架构变化。

 

Yusen:

是的, MoE 其实现在逐渐成为开源模型都在做的一个技术方向。


05

vLLM 决定做的与决定不做的


Yusen:

在 vLLM 的发展过程中,在资源有限的情况下把它做得这么好,肯定有很多取舍的。有什么是我们选择不去做的事情?

Simon & Zhuohan:
我主要想讲三个不同的点。第一,我们选择了不去做公司,不去做商业化项目,但希望大家都能在这上面进行商业化,去做一个可以加速所有 AI 公司的一个开源项目。虽然这可能意味着我们损失了一些盈利空间,但我们认为这有助于加速整个 AI 、AGI 领域的历史进程,这是非常有意义的。

第二,在技术上我们选择了不把追求极致的性能放在绝对的最高优先级。许多竞品项目,如 TensorRT-LLM 或 TGI,可能会选择使用 C++ 或 Rust 编程语言重写大部分系统以提升性能。但我们发现,这样做虽然能达到极致的性能,但也会让人更难参与到这个开源项目中。我们认为即使使用 PyTorch 和一些简单的 C++ 代码,也能让大家更好地使用和修改 vLLM,为它贡献代码。我们会考虑一些能够让代码比较简洁,让大家更容易参与的方式,一步一步慢慢走,最终走到极致性能的目标。

 

第三,我们选择不执着于 Nvidia 的显卡。尽管现在大家都在使用它们,但我们会愿意投入很多时间和团队资源去了解其他硬件,我们认为这是未来的趋势和方向。会用这些本来可以在 Nvidia GPU 上面优化的时间,去尝试发展 AI 在那些其他硬件上面的功能和性能。

Kaichao:
补充一点,易用性对我们来说非常重要,甚至比性能更重要。如果有一种方法可以提速 10%,但代码却很难被理解,我们就不会接受它。在我们定期举办的线下活动上,很多 NLP 研究人员告诉我们,他们之前只会使用 Hugging Face 的 Transformer,但后来发现用 vLLM 只需更改几行代码,推理时间就从几个小时缩短到几分钟,对于他们来说易用性就是第一位的。


Lily:
易开发性也是很重要的一点。有些功能可以提升性能,但如果它们让代码很难开发,我们最终可能不会加入。我们希望社区还是有更多的人来贡献到代码中,所以有一些比较复杂的功能我们最后还是没有把它加进去,为了保持易开发性,也为了吸引更多的贡献者。

 

Yusen:
在开源领域把这个盘子做大是一个非常核心的事情,在这上面我们要做很多取舍。


06

vLLM 如何维持丰富的开源生态


Yusen:

现在 vLLM 主要的贡献者都有哪些?他们也一起为爱发电,动力来自于什么地方?刚才说到的活动中、合作中有哪些有趣的故事呢?


Simon:

在 vLLM 生态系统里面,贡献者分一次性的和长期性的,还有一些真正将 vLLM 用在生产环境中的使用者。包括云厂商、模型厂商、硬件厂商以及一些将 AI 放在首位的公司。他们都有自己的团队在 vLLM 上进行开发和贡献。


例如,Oracle、IBM这样的云厂商会有固定的团队在 vLLM 上编写代码。模型厂商如 Mistral 和千问,他们在模型发布时,会花很多时间在 vLLM 上进行简单的修改和适配,以支持他们的新模型,或者在内部使用的时候就用 vLLM 进行修改和开发。


硬件厂商像 AMD、Intel、 Google,他们各自有各自的硬件,但都有独立的团队进行 vLLM 的适配和调优工作。在产品上面把 AI 放在第一位的一些公司,比如说 LinkedIn 和 Roblox,他们也会长期地使用 vLLM,这样能让他们对项目未来发展有更好的话语权,同时也保证有内部专家用 vLLM 从生产环境上帮助他们。


此外,还有新一代的 AI 基础设施公司,如 Anyscale 或 NeuralMagic,有自己的 AI 基础设施产品。


虽然各有各的重心,但他们都会用 vLLM 作为底层项目,基于 vLLM 进行二次开发和包装,提供整套产品的售卖和服务。当然,还有许多我们只知道 GitHub 用户名的贡献者,其中不少是学生,也可能是对大型语言模型感兴趣的工程师。我们非常感谢他们的参与。


Wendi: 

现在的 vLLM 的外部贡献者已经达到了一个非常高的比例。从去年开源到现在,vLLM 只花了一年时间。相比起其它历史上比较成功的开源项目来说,vLLM 在这么短的时间内是怎样加速吸引这么多外部贡献者的?有没有什么心得可以分享?


Simon:

其实可能很大一部分是运气。但同样重要的是我们努力在维护开源社区和生态系统。vLLM 很幸运,在发布后因为充分的准备和项目本身的高质量而受到大家的喜爱,它使用起来非常方便,几乎可以立即投入使用,不出现大的问题,用户就会愿意持续使用并进行分享推荐。另一个运气是,vLLM 在市场上是很个新的东西,并且由于它的高质量的特点,很快就成为了大家第一选择的项目。当我们在市场上获得了领先地位时,我们就会更加关注谁在使用它,以及怎么去扩大贡献者的规模。


扩大贡献者的规模没有特别的秘诀,就是一个一个来。先确保一家公司能在 vLLM 上稳定贡献,然后是第二家、第三家。在这个过程中,开源生态中的每一个提 issue、PR 或与我们交流的人都非常有意思,都值得我们去了解他们的背景,与他们建立深入的关系。去了解他们为什么对这个项目感兴趣,他们的工作是什么,以及为什么在工作中会使用 vLLM。了解了他们是谁之后,就能很好地建立稳定的贡献关系。 


Wendi: 

我们知道 vLLM 举办过一些线下见面会活动,对于一个充满活力的社区来说,有什么有趣的用户或者故事可以分享吗?


Simon:

我们有很多线下活动,它们更像是大家可以面对面答疑和交流的机会。其实到目前为止,我们只举办了四次线下活动,每次持续一到两个小时。其中一些有趣的点是,我们会遇到一些只是通过网名相互称呼的人,有点像网友见面的感觉。


社区里还有一些像无名英雄一样的人物,比如有一位在英国的工程师,他白天空闲时会帮我们分析一些旧的 issue,检查 bug 报告是否已经被解决或者不再需要,然后他会对这些 issue 进行分类、关闭它们,或者询问我们是否还需要继续处理。因为他在英国,我们早上起来经常会发现他又关闭了二三十个 issue,一个月后他可能关闭了四分之一的 issue,这对我们的开源社区有非常大的帮助。因为这些东西真的需要一个人来做,目前来说很难训练一个 AI 去判断如何处理这些 issue。社区里面有很多这样一直在默默贡献的人。

 

Kaichao:

我们每次举办活动,都能听到一些新的公司用了 vLLM。比如说上次我们就听到 Adobe 的人说他们 Adobe 的产品背后就是用 vLLM 在支持。

 

Yusen:
真格基金也捐赠了另一个开源项目 ControlNet,有意思的是,ControlNet 比较像是张吕敏独自天才的疯狂输出,而 vLLM 是一个贡献者非常多样的开源项目。Simon 也参与过很多开源项目,现在有很多 AI 领域的团队想从开源项目的角度入手去做一些事情。那么假设现在有一个全新的开源项目团队,我们能分享给他们什么经验?


深度对谈 vLLM 团队:如何从零搭建一个成功的开源生态|此话当真 EP27

图片来源:ControlNet 在 GitHub 的主页


Simon:
我认为非常重要的一点是,一个人做开源是为了什么?特别是商业团队做开源时,更要想清楚开源的目的,比如说是为了营销、销售、招聘,还是为了寻找
产品市场契合点(Product Market Fit, PMF)。如果只是学生做开源的话,就要想清楚你有多少时间花在这上面,你愿意投入多少精力。其中很重要的一个节点就是去接受用户,接受提出需求或者给你提 bug 报告的人,去了解他们,然后去问他们你为什么需要这些东西?我能帮你做什么?特别是作为有能力做出一个很有意思的开源项目的人,你怎么去抑制一种「我行我上,我去把它改得更好」的冲动,而是给予耐心让社区慢慢成长起来,让了解你的开源项目的人越来越多,这样才能真正把盘子做大。


Yusen:
一开始,vLLM 是一个非常精干但又互补的团队。最初如何搭建起贡献者团队的过程中,有没有什么经验可以分享?


Zhuohan:
最开始做研究的时候,主要是我和另一个 vLLM 的共同创造者 Woosuk Kwon。他是一个非常好的内核开发者(kernel writer),会写很好的底层代码。我们两个人在技术上是互补的,我可能做一些更高层次的调度和管理。我们两个看起来都比较「程序员」,而 Simon 因为在 Anyscale 有产品管理经验,他后来加入我们的项目,帮助 vLLM 成长了很多,让我们的项目管理井井有条,让更多贡献者能够加入。包括后来的 Lily,她从研究者的角度为我们提出了很多意见,加入了新的功能。凯超是最新加入的贡献者,他给我们带来了很多新的视角,并且修复了很多 bug,所以也帮助我们的项目非常多。


Wendi:

如果将时间线往回拉,有没有一个瞬间让你们确定到 vLLM 它找到了 PMF,是怎样找到的?

Simon:
我用一句话来回答就是当 issue 和 PR 都开始爆炸性地指数级增长,然而我们已经没有精力去加更多的功能来适应大家的需求的时候,你就大概知道 PMF 在哪儿了。当然最好不要是 bug 的报告,而是大家真的想要这个产品更好用的那些功能需求。


07

有关未来发展,有关商业化


Wendi:
Lily 在 vLLM 团队负责科研方面,推理加速引擎这个领域现在有哪些前沿的学术研究探索?vLLM 项目和这些学术研究如何结合与互补?

Lily:
我们现在做的比较多的关于推理的加速,主要针对降低延迟这个角度。在降低延迟里有几个大方向,第一个是推测解码(Speculative Decoding),就是说我们通过用一个小模型近似生成一些结果给大模型验证,来降低一些跑大模型的开销。第二个是低精度的推理,比如我们最近一直在推 FP8。第三个是关于 KV Cache 的优化,比如如果有多节点的 KV Cache 该怎么存储。这些是目前在进行的科研探索。

怎么把科研和 vLLM 项目实际结合呢?首先我们会把最基础的功能先做到 vLLM 里面,比如说我们会先支持一个比较通用的推测解码(Speculative Decoding)的框架,这样的话不同的研究者他们可以在上面构建自己想要的算法。现在的生态里,有非常多推测解码(Speculative Decoding) 的贡献者,有做研究的,也有公司就想试试这个算法的。我们会积极地审查 PR,保证这些 PR 和我们这个框架是兼容的。

 

在 vLLM 做科研是真的可以落地的,并且作为一个研究者你的项目能被别人看到并且得到验证,这种好处会给研究者很多的激励。比如说之前 IBM 有一个推测解码(Speculative Decoding)算法做进来以后,在我们还没有好好测试完的时候,就已经有人给我们报 bug。感受到有人非常积极地跟随着你的项目对我们来说是一个很强的正反馈。还有一个好处是,当你真的把这个东西实现了,变成一个可以投入业界使用的东西的时候,你会发现很多新的问题,然后为了解决这些新的问题,你可以做更多的科研,所以这是一个这个正向迭代的过程。

 

Wendi:

vLLM 下一步的工作重点是?

 

Lily:

第一,vLLM 会在提供更多硬件支持的方向上努力。这也是 vLLM 和其他框架很不一样的地方, vLLM 创立的初衷就是希望它能够比较好地支持不同的硬件,不仅仅是支持,我们还希望包括硬件厂商和我们自己在内的各方能投入时间来优化性能。因为不同的卡的成本差异还是比较大的,我们希望开源社区的用户能够使用我们的框架来挑选对他们来说经济适用且性能可接受的、成本最低的硬件。为实现这一目标,vLLM 将继续支持不同的硬件,并且将与硬件厂商紧密合作。这是第一个比较大的主题。


第二,我们会继续做 vLLM 的性能优化,无论是在科研方面还是在项目工程方面。在科研方面我们就有很多的研究者开发新的算法。在项目工程方面得益于我们高质量的开源社区,有很多资深和专业的工程师来帮我们继续进行性能优化。我们希望用户相信 vLLM 的性能是有竞争力的,并且非常强大。

 

第三,我们一直努力让 vLLM 的架构保持一种延展性 。就是说用户很好改,贡献者也很容易在里面加一些新的东西。vLLM 发展得特别快,如果你看它每天提交的 PR 数量,实际上非常非常多。因此,我们一直致力于提供好的抽象(abstraction),这样我们就可以支持更多的调度策略、不同的后端或不同的优化。我们将确保我们的框架核心是干净、通用且易于使用的。

 

Kaichao:

我觉得我们之后还要做更广泛的模型支持。这一波 AI 浪潮的一个标志是 ChatGPT,但发展到现在除了简单的文字输入输出之外,我们还要处理更多的其他的复杂的模态,因此我们需要达到生产级别。之前作为研究论文,它可能只是一个想法,但要达到生产级别,就需要能够扩展,比如一家公司使用我们的代码服务于成千上万的用户,它需要 24 小时不间断运行,且不能出现问题。这时,你需要对它进行生产级别的处理,比如日志、容错、自动扩展等。

 

最后一点,我们会继续更好地维护和构建开源项目,不只是代码公开的资源。我们遵循许多很好的开源项目的维护方式,例如 PyTorch 等。比如当我们有重大的框架变更的时候,我们都会有一个征求修改意见稿(Request for Comments,RFC),经过了充分的讨论之后才会提交代码,我们都是有这样一步一步的指导方针,去摸索怎么样为 vLLM 的社区进行更好的贡献。

 

Wendi:
过往的一些开源项目有很多商业化成功的案例。vLLM 团队对商业化有怎样的考虑?下一步的计划是?

Zhuohan:
说实话我们肯定想过商业化。但我们碰到的一个问题是,如果我们只做大型语言模型的推理,这个商业模式不是很清晰。因为如果你只提供这样的服务,一方面你的模型是开源的,大家都可以访问。另一方面主流的硬件是 Nvidia GPU。最后,你唯一的护城河可能就是技术,但技术很难保持一直领先。大家最终都会弄明白如何将推理做到极致,这个时候你可能只能打价格战,但价格更便宜意味着利润更低,业务会难以持续。


另一方面,我们注意到,使用 vLLM 的公司的要做到比较好的商业模式不只做大语言模型推理。他们可能基于开源模型做微调,或者提供自己的模型训练服务。或者有公司会自己开发硬件而不用 Nvidia GPU,比如说 Grok、SambaNova,那他们的利润点可能是在自己的硬件方面。这些都是在大语言模型基础设施这个领域的一些可行的商业化模式。

Simon:
最后我再加一点,在 vLLM 项目中,我们发现 vLLM 创造的价值远远超过我们小团队能捕获的价值。这也表示在 vLLM 生态中,许多公司发现他们的投入远小于他们获得的回报,他们的投资回报率是正的。从这个角度看,我们很高兴能做一个非商业化的项目,让大家都能更好地商业化。特别对于博士生来说,这已经是一个非常理想的结果了。

Wendi:
对 vLLM 来说,商业化不是下一步重点。

Zhuohan:
把开源项目做好、做成功,这是我们一开始的目标。

Simon:
做成为一个标准,成为一个大家都能使用的,都能去更好地加速他们所想做的东西,能加速整个 AI 的进程的一个东西,就是我们想做的。

Wendi:
在当前的竞争环境下,如果大家都能达到极致效果,不知道你们如何看待竞争,以及 vLLM 在其中的选择?

Zhuohan:

虽然看起来都是做大语言模型基础设施的公司,但实际上大家在做不同的事情。从最底层的硬件,到做云服务的厂商,再到更定制化的大语言模型服务,不同的应用,它们肯定都是不同的赛道,所以我觉得还是一个比较丰富的市场,大家都能找到自己的定位。


08

团队关注的开源项目与书籍分享


Wendi:

最后一个问题,想请问大家最近有没有关注一些比较有趣、新鲜的开源项目?同时也很想知道大家最近都在看什么书?

 

Simon:

最近关注的开源项目中,有一个叫 Unsloth 的项目,它和 vLLM 类似,专注于极致优化,但是他们重点在模型的微调,全部用 Triton Kernel 重写。从技术角度来看,这个项目非常有意思,它推到了 PyTorch 目前无法达到的优化极致。当然,我们也期待 PyTorch 是不是很快就能赶上,这也是一个很有意思的社会实验。


深度对谈 vLLM 团队:如何从零搭建一个成功的开源生态|此话当真 EP27

图片来源:Unsloth 官网


关于书,我最近重读了 Ben Horowitz 的《创业维艰》(The Hard Thing About Hard Things)。现在读这本书特别有意义。一方面,我在思考 vLLM 作为一个类似创业项目,但又不完全是商业化的项目,与创业有什么共同点和不同点。另一方面,通过回顾 2000 年的互联网泡沫,思考我们现在可能也在一个泡沫里,以及如何应对,这些都是非常有意思的内容。

 

Wendi:

vLLM 和创业的异同在于?

 

Simon:

在产品开发上,vLLM 和创业有很多相似之处,比如寻找 PMF 并维持它,在指数型的使用增长上也非常相似。不同之处在于,我们不会把精力投入到招聘、销售或为了商业目的必须维持的其他活动上。这样我们的目的会更纯粹,我们也更享受这个过程。

 

Zhuohan:

我最近觉得有意思的项目是 Andrej Karpathy 最近开源的一系列项目。因为最近突然有很多人问我如何入门大语言模型,从哪里开始。我想了半天,最后的结论是你可以看看 Andrej Karpathy 的项目。它们是对大语言模型非常好的系统性介绍,从零基础到 vLLM 所需的一些核心技术,都可以在一个简单的代码仓库(repo)中看到。这对整个社区和世界都很有意义。关于书籍,我最近在读 Elon Musk 的传记。

 

Kaichao:

如果你对机器学习系统感兴趣,尤其是使用过 PyTorch 并想知道它背后的工作,我推荐大家了解一下 PyTorch。PyTorch 是一个很好的开源项目的样例。它一开始在和 Tensorflow 竞争时,和 vLLM 有些相似之处。当时 Tensorflow 的用户可能会看不上 PyTorch,觉得太慢了。PyTorch 为了用户的易用性做了这么多的牺牲,这么多的优化都没有办法做,但是后来 Tensorflow 因为太追求性能,基本没有外部贡献者,逐渐封闭,以至于现在很少有新用户加入。我觉得学习 PyTorch 和它的设计可以给我们一些启发。


深度对谈 vLLM 团队:如何从零搭建一个成功的开源生态|此话当真 EP27

图片来源:PyTorch 官网


Zhuohan:

说到这一点,我觉得大家可以看看 Jax。Jax 是我看过那么多项目中,唯一一个让我看了之后觉得「哇,软件还可以这么写,一切都很有道理」的项目。我觉得 Google 还是吸取了很多 Tensorflow 的经验,把它们都用到了 Jax 里面。


深度对谈 vLLM 团队:如何从零搭建一个成功的开源生态|此话当真 EP27

图片来源:Jax 官网


Lily:

我最近在看一些关于智能体(agent)的 repo,比如 Qwen-Agent,AutoGen,这些可能都比较旧。主要是因为 vLLM 自身还没有到操作系统的核心部分(kernel)的级别,还处于推理引擎级别。我很好奇在大模型以上,大家是怎么使用的,大家在玩哪些东西。如果听众们感兴趣的话,也可以看看这些。



深度对谈 vLLM 团队:如何从零搭建一个成功的开源生态|此话当真 EP27


推荐阅读


深度对谈 vLLM 团队:如何从零搭建一个成功的开源生态|此话当真 EP27
深度对谈 vLLM 团队:如何从零搭建一个成功的开源生态|此话当真 EP27

原创文章,作者:ZhenFund,如若转载,请注明出处:https://www.agent-universe.cn/2024/07/17401.html

Like (0)
Previous 2024-07-02 19:21
Next 2024-07-03 21:55

相关推荐