赞
踩
本文字数: 9400, 阅读完需: 47 分钟
在2024年亚马逊云科技中国上海峰会上,演讲者分享了”开源大模型在亚马逊云科技上的部署和微调优化实践”。演讲重点介绍了如何在亚马逊云科技上快速上手开源大模型,以及模型部署和微调优化的理论和实践。演讲者解释了模型压缩、分区和批处理等优化技术,以及亚马逊云科技服务如何通过统一的API简化了这些优化的实现,使开发者能够专注于核心应用开发和数据微调。演讲还分享了一些前沿研究进展,如FlashAttention、PageAttention等,并通过代码示例展示了在亚马逊云科技上部署和微调开源大模型的简易性。
以下是小编为您整理的本次演讲的精华,共9100字,阅读时间大约是46分钟。
好的,欢迎大家来到2024年的亚马逊云科技中国上海峰会。去年的峰会应该是在6月18日或16日左右,我们当时讨论了生成AI的过去、现在和未来。现在让我们回顾一下,在过去的一年里,生成AI和大模型领域发生了翻天覆地的变化。
一年前,当我们谈论生成AI的时候,大家更多的是对这项新兴技术持有一种兴奋但又有些焦虑的心态。人们知道大模型来了,但也担心自己会被这股浪潮所淹没。那时我们更多讨论的是哪家公司又发布了新的大模型,有哪些新的理论突破和论文成果。
然而,时光飞逝,转眼间不到12个月,甚至只有10个月的时间,我们就见证了大模型在实践层面的飞速落地。通过参加今年的峰会,参观各个展台,包括我们自己的AI实验室和解决方案中心,你一定会有一种震撼的感受 – 原本去年才在论文和趋势层面讨论的东西,现在都已经落地实践了。
正如今天分享的主题”开源大模型在亚马逊云科技上的部署和微调优化实践”所体现的,我们将讲述如何真正将这些前沿技术应用到实践中去。因为我相信,对于很多开发者来说,单纯讲论文和趋势已经不够了,大家更渴望的是真正的实践干货。
在与一些参会开发者的交流中,他们也反映今天的分享将会有更多精彩的实践内容,包括我这个环节之后,下午还将有一系列生成AI的分享。
好,让我简单介绍一下自己。我叫黄浩文,是来自亚马逊云科技的资深开发者和布道师。很高兴在去年分享了生成AI的理论之后,今天能为大家带来部署和微调开源大模型的实践干货。
在座的各位,有多少人目前已经开始着手做生成AI开发或基于大语言模型的应用了?哇,举手的人数远远超出了我的预期,可能有接近一半的人已经在这方面有所实践。这其实印证了在过去10个月里,整个生成AI领域发生了巨大的变革,这确实是一个令人震撼的现象。如果情况真的如此,那我今天分享的内容对你们来说将会非常有用。
虽然这个话题是我和宇博老师去年11月在美国拉斯维加斯re:re:Invent上用英文讲的,难度系数算是比较高,是Level 400的级别。所以我今天不打算讲得那么高深,因为Level 400的确实难度较大。但我还是会带来那些最新的论文成果和前沿进展,因为就像我去年所说的,如果大家有机会翻看我去年的视频,你会发现我希望大家对这一波浪潮有全面的了解,而不是被它牵着鼻子走。
比如说,今天谁家又发布了新的大模型或API,明天版本又更新了,你是否要跟着这些变化而盲目地追随?事实上,如果你能够沉下心来花时间真正理解这些变革背后的本质驱动力,你就会发现,无论是去年11月我们在美国分享的内容,还是今年5月的最新进展,底层的逻辑和初衷其实是没有变化的。
所以我重申去年的观点,不要盲目地追逐风口,而要沉下心来花一两年时间,把生成AI和大模型发生的这件事情的底层原理搞清楚。那么当你去看今天发表的新论文、新模型时,你就能清楚地知道它是在哪个领域有所突破和进步。这正是我今天想要带给大家的。
因此,我今天的分享虽然会涉及一些复杂的论文,但如果你暂时听不懂没关系,可以拍个照片回去研究。更重要的是,我会带来亚马逊云科技在开源大模型的部署和微调优化方面的实践案例,展示如何通过简单的配置就能实现最新的优化技术,哪怕这些技术才在过去几个月问世。
正如你们可能在昨天的会议上听到的,我们的目标就是避免大家重复造轮子,把这些苦工和累活都帮大家做了。所以今天的开发者可以看到,在亚马逊云科技上,通过Amazon SageMaker、Amazon EKS等服务,加上后面会介绍的LMI,我们已经将现有的最新模型部署、推理和微调优化技术集成到了其中,使得开发者只需简单配置就能完成。
所以当我讲到那些复杂的论文时,你们不要感到恐慌,第一次听到很正常。但我最后会给出在亚马逊云科技上实现这些技术是多么简单,只需几行代码就能搞定。
在这里,我也要回应去年在峰会上提出的一个有关AI教育的话题。如果大家回顾我去年的视频,你会发现我当时的标题是”生成AI过去现在未来”,吸引了很多人的关注,以至于会场最后挤满了人,讲完后还有几十人围过来交流。
大家当时最关心的问题是,我们提到代码可以由AI写了,美工、画师的工作可以被AI替代,甚至一些文员写报告的工作,也可以被像Amazon CodeWhisperer这样的服务所取代。那么,人类该怎么办?我们如何为下一代孩子们培养适应未来的能力?
这确实是一个非常感兴趣的话题,我今天也会分享我自己的一个例子作为回应。出乎意料的是,当我给6岁的小女儿展示了通过Amazon Bedrock生成的逼真恐龙图像时,这个精美程度和立体感让她一下子对AI和英语学习产生了浓厚的兴趣。
尽管她在一个以英语为主的学校学习,但在家里她跟我们说的是中文,所以她的英语水平并不太好。但那个生成恐龙图像的例子却点燃了她对英语和AI的热情。我记得那个周末,原本打算外出的活动被取消了,因为她执意要留下来再看一遍”生成恐龙的AI”,她已经知道了AI这个概念。
所以我们发现,AI技术实际上为教育带来了新的机遇,它能够激发孩子们对学习的热情。我后面会再详细讲述这个例子,来回应去年提出的那个问题。
原谅我在开场白部分讲了这么多,因为今年实在是有太多令人兴奋的内容需要分享,而我只有45分钟的时间来讲开源大模型的部署和微调优化。不过,我还是建议大家等一下有时间的话,一定要在会场转一圈,参观一下我们AI实验室和解决方案中心的展台。
去年我们提到过斯坦福小镇的多智能体论文,它让AI代理自己形成了一个社会,并在其中进行互动,这个概念当时还只停留在论文阶段。但是现在,你可以在解决方案中心的一个展台上看到,他们正在通过一个类似”狼人杀”的游戏,来普及德化白瓷的知识,而驱动这个游戏的正是一个多智能体系统。
我和那位主创的应用科学家交流过,他的这个方案实际上也可以应用于医疗、为病人就诊等更多场景。所以我建议他明年或后面再用一个更生动的故事来讲解,而不是用”德化白瓷科普”这样的名字,听起来可能会让人错过这个展台。
此外,我们AI实验室的同事提到了一种基于低秩矩阵的LoRA微调技术。大家可能觉得LoRA还很遥远,但实际上下面就有一个LoRA优化的展示。这是来自真实客户应用的实践案例,由于用户觉得纹身图像生成的图片过于像机器生成,希望能更加自然、贴近人类手工。
我们可以看到,他们通过将两个LoRA模型叠加,最终生成的人物图像没有那么像AI生成的了。这个LoRA原理我后面也会讲到,但很高兴看到它已经在我们的展台上得到了实践应用。他们的展台应该有十几个,因为我今天无法一一涉及,但我觉得这些都是非常有意义的前沿技术展示,所以还是提出来与大家分享。
好,说了这么多,我可能已经用去了一些时间,那我们开始进入今天的主题。我会加快语速,因为后面的内容还有不少。
我今天想通过一个实践案例,分享在亚马逊云科技上部署和微调开源大语言模型的不同角度和方法。我将从几个方面来讲解:
首先是如何快速上手,因为我感觉可能有一半的同学还没有做过大语言模型或生成AI的开发。没关系,我们今天就是要告诉大家,通过亚马逊云科技是多么简单就能开始学习和使用大模型。就像我6岁的小女儿看完Bedrock生成的恐龙图像后,就对英语学习和AI产生了浓厚兴趣一样,这个过程是如此简单。
其次,我会讲解一些可用性和吞吐量优化的理论,这些是过去一年来整个领域的一些研究进展,我相信对于前面举手的那些同学来说,能够帮助你们快速了解和掌握这些最新的论文和行业研究成果。
然后,我们将看看在亚马逊云科技上,我们是如何优化大开源模型的部署和微调的,包括最后的代码示例,你会发现这个过程是多么简单。
最后,我们会讨论如何利用开源模型对自有数据进行微调。有一种观点认为,未来最宝贵的资产就是企业自己拥有的私有数据。因为大模型是从公开的网络数据、维基百科、电商网站评论等处获取训练数据的,但对于一些行业来说,它们拥有大量自己积累的私有数据,比如医疗行业的病历数据、电子元器件制造商几十年来的数据等,这些都是宝贵的资源。
那么如何利用这些私有数据对大模型进行微调,同时又要处理好模型量化等问题,这将是我们要讨论的重点内容。我们会看到,在亚马逊云科技上通过简单的配置,就能完成这一切。
在深入这些内容之前,我们还是先来探讨一下,为什么大模型优化是必要的?对于前面举手的那些同学来说,你们可能已经知道了,但对于另一半没有举手的同学来说,我还是有必要进行说明。同时,我们也会看看在实际场景中部署和微调大语言模型,特别是开源模型时,优化会为我们带来哪些好处。
让我们以LLaMa Three 70B的例子来说明。在大型基础模型的训练和推理过程中,对内存和计算资源是一个巨大的挑战,我们今天主要讨论的是推理阶段。
这个问题的主要原因在于,目前的大型基础模型都是基于Transformer这样的架构,而这种架构在处理长文本序列时会占用大量内存,因此内存成为了大模型训练和推理中的主要性能瓶颈。
在自回归解码的过程中,我们知道对于大模型的所有输入,都会生成一个输入Token,并为其生成一个注意力键值张量(Attention Key-Value Tensor),这些张量会被存储在GPU内存中,用于后续的Token生成,我们把它称为KV缓存。
以700亿参数的LLaMa Three模型为例,如果每个参数占4个字节,那么仅初始权重就需要约280GB的存储空间。但由于Transformer架构的需要,我们还需要额外的10到20多GB来存储注意力缓存Token,因此总共需要大约300GB的内存。
即使不考虑额外的显存开销,这个300GB的内存需求已经远远超出了当前大多数GPU的能力。比如,亚马逊云科技的ML.G5.48xlarge实例虽然拥有192GB内存,但仍然无法满足需求,那我们该如何解决这个问题呢?
为了至少能够让这件事情继续下去,我们就必须进行压缩。目前主要有两种压缩方法:一种是减少模型的层数好的,让我继续详细阐述大模型优化的必要性和具体方法:
第一种压缩方法是减少模型的层数或连接数,但这会影响模型的性能,因此在大多数情况下我们都需要尽量保留模型性能,除非是一些对性能要求不太高的边缘设备场景。
第二种也是更常用的方法叫做量化(Quantization)。量化的做法是将模型的精度从原来的FP32(32位浮点数)降低到FP16、BF16,甚至有人在研究将精度降到INT8、INT4等更低的8位或4位整数。
以LLaMa Three为例,如果我们将模型从FP32量化到FP16,那么280GB的初始权重就可以减半到140GB。虽然总量在192GB的范围内了,但要记住在训练模型时,我们需要将整个模型加载到单个GPU中,而当前大多数GPU的显存只有24GB,所以即使量化后的140GB,在单GPU中也仍然无法容纳。因此我们还需要一些其他的优化方法。
这就引出了我们在整个大模型领域的优化技术的一个全景图。从这张图中可以看出,优化技术主要分为硬件层面和软件层面两个部分,而我们今天主要讨论的是软件层面的优化。
首先从左到右,是模型编译的优化。编译能够在不牺牲准确性的情况下提高模型性能,有不同的编译方法可以针对不同的场景。比如对于需要部署到边缘设备的场景,我们可以使用像CG MacNIL这样的编译器,在云端和边缘设备上进行推理。而对于一些长期大规模训练和推理的企业,则可以使用我们的Training Chip和Inferentia芯片,通过Neuron SDK进行编译,从而降低总体成本。
不过,模型编译并不是我们今天的重点。我们将聚焦于模型压缩、模型分区和批处理这三个方面,因为当前的很多论文和研究都集中在这三个领域。
在模型压缩方面,除了前面提到的量化之外,还有两个研究方向:剪枝和蒸馏。剪枝的原理是通过删除神经网络中的连接,来减少预测所需的参数和操作量,我们已经有一些基于DeepSpeed和HuggingFace的剪枝解决方案了。而蒸馏则是通过训练一个较小的学生模型来模拟大模型的行为,你可以在AmazonSageMaker上和HuggingFace的DLC中使用蒸馏技术。
模型分区,也就是分布式训练和推理,是为了解决即使在压缩后,大型模型仍然无法装入单个GPU内存的问题。其原理很简单,就是将模型和数据分散到不同的分区中,每个分区由单独的GPU集群托管,从而绕过单GPU内存的限制,而不会降低精度。但这也会带来一些管理开销,如何降低这种开销成为了研究的一个方向。
批处理优化则是为了提高大模型的吞吐量和并发能力。过去一年,在这一领域出现了很多新的工作,包括动态批处理、VLM(Continuous Batch)等。因为当大家真正将大模型应用到生产环境中时,如何提供高性能、高并发的服务就变得非常重要。
所以,你可以看到,无论是压缩、分区还是批处理,这些优化技术都在过去6个月甚至更短的时间内取得了突破性的进展。如果你要自己去一一实现和配置这些新技术,那可能就是在重复造轮子了。你可能今天才配置完一个新的量化方法,紧接着又有更好的方案出现,你别说去开发生成AI应用了,光是跟上这些优化技术的进展就已经疲于奔命。
这就是为什么我们推出ByteRock服务的重要原因之一。你有没有发现,ByteRock能够提供一个统一的API,让你使用各种开源、闭源和亚马逊自研的大模型?这一点是非常了不起的。如果在座的各位有做经理、CIO或CTO的,请你一定要重视这一点。我们是在保护你未来的AI投资,因为我们相信大模型将会不断涌现,就像从1月份到现在,我们见证了从文本生成到图像生成、视频生成、3D生成、音乐生成等领域的巨大进步一样。
如果你每一个新模型、新API都要自己去重新实现和配置,那你根本就忙不过来。但如果你真正去体验过ByteRock,你就会发现它为你提供了统一的API,帮你简化了工作,让你把主要精力放在利用自有数据开发应用和进行模型微调上,这是一个非常重要的优势。
如果大家有兴趣,我下午4点半还有一个开发者大讲堂,届时也会谈及ByteRock相关的内容。
好,让我们快速地转到后面的主题。我刚才提到,第一个方面是如何快速上手开源大模型。这对于那些没有举手的同学来说是非常重要的,因为你们不用再像举手的那一半同学一样,在过去一年里吃尽了苦头,花费大量时间才上手。你们今天就可以很简单地开始了,就像我6岁的女儿在看了那个生成恐龙图像的演示后,仅仅一两分钟就对英语和AI产生了浓厚的兴趣一样。
为什么这么简单?让我先简单介绍一下ByteRock。它是一项亚马逊云科技提供的全面托管服务,通过统一的API,为企业和开发者提供了使用来自不同来源的大模型的能力,包括开源模型如Anthropic的模型、Stability AI的Stable Diffusion等;还有一些性能强劲但并非开源的模型,如Anthropic、Cohere AI、Cloudera等公司的模型;以及亚马逊自研的模型如AmazonTitan系列等。
ByteRock不仅提供了使用这些基础模型的能力,还具有安全性、隐私保护、负责任AI等特性。它的目标就是简化大模型的使用,让开发者能够极为简单地上手。
简单到什么程度呢?让我直接演示一个案例。这个案例就发生在一个周末的早上,我本来打算带女儿去飞龙乐园看恐龙,但在临出发前,我花了几分钟的时间演示了ByteRock生成恐龙图像的功能。你们知道,我女儿特别喜欢恐龙,家里到处都是恐龙毛绒玩具,她对各种恐龙的姿态和种类了如指掌,甚至比我还要强。
那天她问我:“爸爸,你平时在做什么工作啊?”我说是和AI相关的工作。她就要求我给她展示一个AI的例子。于是我在ByteRock中输入了一个Prompt,因为做这行的人都会收集一些很强大的提示词。我输入的Prompt用了很多英文高级词汇,可惜今天会场的投影效果不太好,如果是高清投影的话,你们就能清晰地看到生成的这些细节了。
总之,点击Run后,很快就生成了这张逼真的恐龙图像。你可以看到上面精细的鳞片纹理,整个图像给人一种立体的感觉。这种精美程度和立体感给我6岁的女儿带来了巨大的震撼,一下子就点燃了她对AI和英语学习的兴趣。
尽管她在一所以英语为主的学校学习,但在家里我们说的是中文,所以她的英语水平并不太好。但在看到那个例子后,她突然对学习英语产生了浓厚的兴趣,因为她想知道我输入的那些英文单词是什么意思。那个周末原本的外出活动就被取消了,因为她执意要留下来再看一遍”生成恐龙的AI”,她已经知道了AI这个概念。
所以我们发现,AI技术实际上为教育带来了新的机遇,它能够激发孩子对学习的热情。我会在后面详细讲述这个例子,来回应去年提出的那个有关AI教育的问题。
原谅我在开场部分讲了这么多,因为今年实在是太多令人兴奋的内容需要分享了,而我只有45分钟的时间来讲解开源大模型的部署和微调优化实践。不过,我还是建议大家如果有时间的话,一定要在会场转一圈,参观一下我们AI实验室和解决方案中心的展台。
去年我们提到过斯坦福小镇的多智能体论文,当时它让AI代理自己形成了一个社会,并在其中进行互动,这个概念还只停留在论文阶段。但现在,你可以在解决方案中心的一个展台上看到,他们正在通过一个类似”狼人杀”的游戏,来普及德化白瓷的知识,而驱动这个游戏的正是一个多智能体系统。
我和那位主创的应用科学家交流过,他的这个方案实际上也可以应用于医疗、为病人就诊等更多场景。所以我建议他明年或后面再用一个更生动的故事来讲解,而不是用”德化白瓷科普”这样的名字,听起来可能会让人错过这个展台。
此外,我们AI实验室的同事提到了一种基于低秩矩阵的LoRA微调技术。大家可能觉得LoRA还很遥远,但实际上下面就有一个LoRA优化的展示。这是来自真实客户应用的实践案例,由于用户觉得纹身图像生成的图片过于像机器生成,希望能更加自然、贴近人类手工。我们可以看到,他们通过将两个LoRA模型叠加,最终生成的人物图像没有那么像AI生成的了。这个LoRA原理我后面也会讲到,但很高兴看到它已经在我们的展台上得到了实践应用。他们的展台应该有十几个,因为我今天无法一一涉及,但我觉得这些都是非常有意义的前沿技术展示,所以还是提出来与大家分享。
好,说了这么多,我可能已经用去了一些时间,那我们开始进入今天的主题。我会加快语速,因为后面的内容还有不少。
我今天想通过一个实践案例,分享在亚马逊云科技上部署和微调开源大语言模型的不同角度和方法。我将从几个方面来讲解:
首先是如何快速上手,因为我感觉可能有一半的同学还没有做过大语言模型或生成AI的开发。没关系,我们今天就是要告诉大家,通过亚马逊云科技是多么简单就能开始学习和使用大模型。就像我6岁的小女儿看完Bedrock生成的恐龙图像后,就对英语学习和AI产生了浓厚兴趣一样,这个过程是如此简单。
其次,我会讲解一些可用性和吞吐量优化的理论,这些是过去一年来整个领域的一些研究进展,我相信对于前面举手的那些同学来说,能够帮助你们快速了解和掌握这些最新的论文和行业研究成果。
然后,我们将看看在亚马逊云科技上,我们是如何优化大开源模型的部署和微调的,包括最后的代码示例,你会发现这个过程是多么简单。
最后,我们会讨论如何利用开源模型对自有数据进行微调。有一种观点认为,未来最宝贵的资产就是企业自己拥有的私有数据。因为大模型是从公开的网络数据、维基百科、电商网站评论等处获取训练数据的,但对于一些行业来说,它们拥有大量自己积累的私有数据,比如医疗行业的病历数据、电子元器件制造商几十年来的数据等,这些都是宝贵的资源。那么如何利用这些私有数据对大模型进行微调,同时又要处理好模型量化等问题,这将是我们要讨论的重点内容。我们会看到,在亚马逊云科技上通过简单的配置,就能完成这一切。
在深入这些内容之前,我们还是先来探讨一下,为什么大模型优化是必要的?对于前面举手的那些同学来说,你们可能已经知道了,但对于另一半没有举手的同学来说,我还是有必要进行说明。同时,我们也会看看在实际场景好的,让我继续详细阐述大模型优化的必要性和具体方法:
在实际场景中部署和微调大语言模型,特别是开源模型时,优化会为我们带来诸多好处。
让我们以LLaMa Three 70B的例子来说明。在大型基础模型的训练和推理过程中,对内存和计算资源是一个巨大的挑战,我们今天主要讨论的是推理阶段。
这个问题的主要原因在于,目前的大型基础模型都是基于Transformer这样的架构,而这种架构在处理长文本序列时会占用大量内存,因此内存成为了大模型训练和推理中的主要性能瓶颈。
在自回归解码的过程中,我们知道对于大模型的所有输入,都会生成一个输入Token,并为其生成一个注意力键值张量(Attention Key-Value Tensor),这些张量会被存储在GPU内存中,用于后续的Token生成,我们把它称为KV缓存。
以700亿参数的LLaMa Three模型为例,如果每个参数占4个字节,那么仅初始权重就需要约280GB的存储空间。但由于Transformer架构的需要,我们还需要额外的10到20多GB来存储注意力缓存Token,因此总共需要大约300GB的内存。
即使不考虑额外的显存开销,这个300GB的内存需求已经远远超出了当前大多数GPU的能力。比如,亚马逊云科技的ML.G5.48xlarge实例虽然拥有192GB内存,但仍然无法满足需求,那我们该如何解决这个问题呢?
为了至少能够让这件事情继续下去,我们就必须进行压缩。目前主要有两种压缩方法:
第一种是减少模型的层数或连接数,但这会影响模型的性能,因此在大多数情况下我们都需要尽量保留模型性能,除非是一些对性能要求不太高的边缘设备场景。
第二种也是更常用的方法叫做量化(Quantization)。量化的做法是将模型的精度从原来的FP32(32位浮点数)降低到FP16、BF16,甚至有人在研究将精度降到INT8、INT4等更低的8位或4位整数。
以LLaMa Three为例,如果我们将模型从FP32量化到FP16,那么280GB的初始权重就可以减半到140GB。虽然总量在192GB的范围内了,但要记住在训练模型时,我们需要将整个模型加载到单个GPU中,而当前大多数GPU的显存只有24GB,所以即使量化后的140GB,在单GPU中也仍然无法容纳。因此我们还需要一些其他的优化方法。
这就引出了我们在整个大模型领域的优化技术的一个全景图。从这张图中可以看出,优化技术主要分为硬件层面和软件层面两个部分,而我们今天主要讨论的是软件层面的优化。
首先从左到右,是模型编译的优化。编译能够在不牺牲准确性的情况下提高模型性能,有不同的编译方法可以针对不同的场景。比如对于需要部署到边缘设备的场景,我们可以使用像CG MacNIL这样的编译器,在云端和边缘设备上进行推理。而对于一些长期大规模训练和推理的企业,则可以使用我们的Training Chip和Inferentia芯片,通过Neuron SDK进行编译,从而降低总体成本。
不过,模型编译并不是我们今天的重点。我们将聚焦于模型压缩、模型分区和批处理这三个方面,因为当前的很多论文和研究都集中在这三个领域。
在模型压缩方面,除了前面提到的量化之外,还有两个研究方向:剪枝和蒸馏。剪枝的原理是通过删除神经网络中的连接,来减少预测所需的参数和操作量,我们已经有一些基于DeepSpeed和HuggingFace的剪枝解决方案了。而蒸馏则是通过训练一个较小的学生模型来模拟大模型的行为,你可以在AmazonSageMaker上和HuggingFace的DLC中使用蒸馏技术。
模型分区,也就是分布式训练和推理,是为了解决即使在压缩后,大型模型仍然无法装入单个GPU内存的问题。其原理很简单,就是将模型和数据分散到不同的分区中,每个分区由单独的GPU集群托管,从而绕过单GPU内存的限制,而不会降低精度。但这也会带来一些管理开销,如何降低这种开销成为了研究的一个方向。
批处理优化则是为了提高大模型的吞吐量和并发能力。过去一年,在这一领域出现了很多新的工作,包括动态批处理、VLM(Continuous Batch)等。因为当大家真正将大模型应用到生产环境中时,如何提供高性能、高并发的服务就变得非常重要。
所以,你可以看到,无论是压缩、分区还是批处理,这些优化技术都在过去6个月甚至更短的时间内取得了突破性的进展。如果你要自己去一一实现和配置这些新技术,那可能就是在重复造轮子了。你可能今天才配置完一个新的量化方法,紧接着又有更好的方案出现,你别说去开发生成AI应用了,光是跟上这些优化技术的进展就已经疲于奔命。
这就是为什么我们推出ByteRock服务的重要原因之一。你有没有发现,ByteRock能够提供一个统一的API,让你使用各种开源、闭源和亚马逊自研的大模型?这一点是非常了不起的。如果在座的各位有做经理、CIO或CTO的,请你一定要重视这一点。我们是在保护你未来的AI投资,因为我们相信大模型将会不断涌现,就像从1月份到现在,我们见证了从文本生成到图像生成、视频生成、3D生成、音乐生成等领域的巨大进步一样。
如果你每一个新模型、新API都要自己去重新实现和配置,那你根本就忙不过来。但如果你真正去体验过ByteRock,你就会发现它为你提供了统一的API,帮你简化了工作,让你把主要精力放在利用自有数据开发应用和进行模型微调上,这是一个非常重要的优势。
如果大家有兴趣,我下午4点半还有一个开发者大讲堂,届时也会谈及ByteRock相关的内容。
好,让我们快速地转到后面的主题。我刚才提到,第一个方面是如何快速上手开源大模型。这对于那些没有举手的同学来说是非常重要的,因为你们不用再像举手的那一半同学一样,在过去一年里吃尽了苦头,花费大量时间才上手。你们今天就可以很简单地开始了,就像我6岁的女儿在看了那个生成恐龙图像的演示后,仅仅一两分钟就对英语和AI产生了浓厚的兴趣一样。
为什么这么简单?让我先简单介绍一下ByteRock。它是一项亚马逊云科技提供的全面托管服务,通过统一的API,为企业和开发者提供了使用来自不同来源的大模型的能力,包括开源模型如Anthropic的模型、Stability AI的Stable Diffusion等;还有一些性能强劲但并非开源的模型,如Anthropic、Cohere AI、Cloudera等公司的模型;以及亚马逊自研的模型如AmazonTitan系列等。
ByteRock不仅提供了使用这些基础模型的能力,还具有安全性、隐私保护、负责任AI等特性。它的目标就是简化大模型的使用,让开发者能够极为简单地上手。
简单到什么程度呢?让我直接演示一个案例。这个案例就发生在一个周末的早上,我本来打算带女儿去飞龙乐园看恐龙,但在临出发前,我花了几分钟的时间演示了ByteRock生成恐龙图像的功能。你们知道,我女儿特别喜欢恐龙,家里到处都是恐龙毛绒玩具,她对各种恐龙的姿态和种类了如指掌,甚至比我还要强。
那天她问我:“爸爸,你平时在做什么工作啊?”我说是和AI相关的工作。她就要求我给她展示一个AI的例子。于是我在ByteRock中输入了一个Prompt,因为做这行的人都会收集一些很强大的提示词。我输入的Prompt用了很多英文高级词汇,可惜今天会场的投影效果不太好,如果是高清投影的话,你们就能清晰地看到生成的这些细节了。
总之,点击Run后,很快就生成了这张逼真的恐龙图像。你可以看到上面精细的鳞片纹理,整个图像给人一种立体的感觉。这种精美程度和立体感给我6岁的女儿带来了巨大的震撼,一下子就点燃了她对AI和英语学习的兴趣。
尽管她在一所以英语为主的学校学习,但在家里我们说的是中文,所以她的英语水平并不太好。但在看到那个例子后,她突然对学习英语产生了浓厚的兴趣,因为她想知道我输入的那些英文单词是什么意思。那个周末原本的外出活动就被取消了,因为她执意要留下来再看一遍”生成恐龙的AI”,她已经知道了AI这个概念。
所以我们发现,AI技术实际上为教育带来了新的机遇,它能够激发孩子对学习的热情。我会在后面详细讲述这个例子,来回应去年提出的那个有关AI教育的问题。
除了ByteRock之外,在它推出之前,我们还有一个叫做SageMaker JumpStart的工具,可以帮助开发者更快地使用新的模型。因为你知道,现在模型的更新速度是非常快的,基本上每个月都会有新模型出现,有时甚至一个月内就有多个新模型发布。那么作为开发者,我们如何能够更快地使用这些新模型呢?SageMaker JumpStart就是为了解决这个问题而推出的。
时间关系我就不再现场演示了,不过我可以对比一下,如果不使用JumpStart,你需要写多少代码才能部署一个大语言模型。你需要首先从HuggingFace拉取一个大语言模型的DLC容器镜像,获取镜像的URI,然后配置实例的Config,设置各种参数,代码量是相当可观的。
但如果使用JumpStart,你只需一行代码就可以完成同样的工作,非常简单。这就是JumpStart的意义所在,它能让你尽快上手,体验新的大模型。
有兴趣的同学可以拍下我分享的这个30分钟视频的链接,里面有更详细的介绍和代码示例。
好,下面让我们来讲一些技术性的内容。我们首先来看大型模型推理容器。简单来说,我们做了什么?由于前面讲到的种种原因,我们需要去优化大模型,无论是在部署推理还是后续的微调方面。但是底层有许多不同的架构,可能基于不同的硬件芯片,需要使用NeuralX、DeepSpeed等不同的框架和库。
如果你要一一去学习和配置这些,那就会陷入疲于奔命的境地。因为在你配置完一个框架后,新的模型和优化技术可能就出来了,你还得重新开始。就像希腊神话中推石头上山的西西弗斯,你可能永远都推不到山顶。
所以我还是重申之前的观点,对于大多数企业来说,你们最宝贵的是自己的数据和对行业的独特理解。我们的目标是让你把主要精力放在利用这些数据和知识上,而不是把时间浪费在重复造轮子上。
因此,我们在大型模型推理容器中,集成了最新的优化技术,比如FlashAttention、PaperAttention等,无论是基于GPU、我们自研的Inferentia和Training芯片,还是CPU,我们都为你预先构建好了基础软件栈,包括PyTorch等框架。我们还集成了DeepSpeed、HuggingFace Accelerate、FastTransformer等库,以及我们自己的一些技术如Training Chip、Cherry Tensor等。
所以对于开发者来说,你只需简单配置就可以快速部署好的,让我继续详细阐述大型模型推理容器和相关优化技术:
我们为开发者预先集成和优化了多种框架和库,目的就是让你能够通过简单的配置,就快速部署和优化大模型的推理,而不必自己一一学习和配置这些复杂的技术细节。
大型模型推理容器的底层架构是这样的:在基础镜像之上,根据你使用的是GPU、Inferentia/Training芯片还是CPU,我们构建了相应的PyTorch框架。然后在框架之上,我们集成了多种优化技术和库,包括FlashAttention、PaperAttention等最新的注意力优化方法,以及DeepSpeed、HuggingFace Accelerate、FastTransformer等知名的优化库。
我们还将自身的一些技术,如Training Chip、Cherry Tensor等与之集成,对外提供了一个DJL的Serving层,封装了所有这些复杂的细节,让开发者只需几行简单的配置就可以使用。
当然,如果你有一个庞大的机器学习团队,并希望对底层技术做进一步优化,你也可以深入研究和定制这些组件。但我认为,对于绝大多数企业来说,你只需利用我们提供的这些现成的优化功能,配合你自己的数据做应用开发和模型微调就已经足够了。
那么,在吞吐量优化方面,我们都做了哪些工作呢?其实核心思路很简单,就是要充分利用GPU的并行计算能力。
以前的做法是,一个批次的所有Token都被计算完后,才能为下一个批次的Token”腾出”GPU资源。比如这张图中,虽然S3最先完成了,但它仍需要等待最慢的那个S2完成后,整个GPU才能释放出来再处理新的任务。
而现在的滚动批处理(Rolling Batch)技术则可以避免这种资源浪费。只要有GPU资源可用,就可以立即处理下一个批次,比如这里S3完成后就立即处理了S5,S1完成后就处理S6,从而最大化GPU的利用率。
除了滚动批处理,过去一年中还出现了一种叫做VLM(Continuous Batch)的新技术。它的思路是借鉴虚拟内存的概念,将KV缓存动态映射到一个虚拟的Block Table中,真实的KV缓存则可以分散存储在不同的物理内存块上。
这样一来,不论输入序列的长度是多少,都可以被动态分配到这个虚拟表中,避免了传统做法中对连续内存的需求,从而能够支持更长的序列输入,提高了效率。
在自注意力层优化方面,也出现了一些突破性的工作,比如FlashAttention。它通过一种特殊的计算方式,将自注意力层原本的二次方的计算复杂度降低到了线性级别,大幅提升了计算效率。
另一种叫做GroupedQueryAttention(GQA)的技术,则是通过对查询进行分组,使得不同的查询组可以共享键和值的计算结果,从而降低了计算开销。实际上,LLaMa 70B和80B模型就使用了这种GQA技术,将输入上下文窗口扩大到了原来的两倍。
所以你可以看到,无论是批处理、注意力计算,还是其他方面,整个大模型优化领域都在持续高速创新,新的突破层出不穷。如果你要自己一一实现和配置这些新技术,那无疑是在重复造轮子,而且很快就会疲于奔命。
这就是为什么我们在亚马逊云科技上,通过ByteRock和LMI等服务,将这些最新的优化技术统一集成并提供给开发者使用。你无需了解所有的技术细节,只需几行简单的配置,就能在部署和微调大模型时,自动应用这些优化方法。
让我们来看一个具体的代码示例,这是一个在亚马逊云科技上部署LLaMa 70B模型的例子。
虽然我们前面讲了那么多技术细节,但在代码层面上,你只需定义使用什么类型的实例、设置并行度、是否启用滚动批处理及其批次大小、模型工件的位置、是否使用PaperAttention等,就可以非常轻松地完成部署了。
你看,我们把所有的优化细节都在底层为你实现和集成好了,作为开发者,你只需关注最上层的配置,而不必了解那些复杂的技术是如何实现的。
如果你有兴趣,这里的代码是可以直接下载并在自己的环境中运行的,我建议你拍个照片,回头可以亲自体验一下。
对于模型微调的优化,我们也做了类似的工作。你一定知道,如果每次要针对新的数据微调模型,都需要从头开始重新训练整个模型,那是非常浪费资源和时间的。
因此,现在的一个主流做法是使用LoRA(Low-Rank Adaptation)技术。它的思路是只为模型添加一小部分可训练的参数,通常只占原始模型参数的1-2%,然后在这些新参数上进行微调,最后将其与原始模型的参数线性相加,就可以获得微调后的新模型了。
这样做的好处是,由于只微调了少量参数,所需的计算资源大幅减少,训练时间也会相应缩短。并且,原始模型的参数保持不变,所以即使新的微调参数效果不佳,你也可以随时回滚到原始模型,降低了风险。
在我们的展台上,你可以看到一个例子,它将两个LoRA模型线性叠加,从而生成了更加自然、更贴近人类手工的图像,而不是那种典型的机器生成风格。这正是利用LoRA技术的一个好处和应用场景。
除了LoRA,我们还集成了FSDP(Fully Sharded DataParallel)等最新的分布式训练优化技术。它不仅对数据做分片,还对模型参数、梯度、优化器状态等进行分片,从而可以在有限的GPU内存下训练更大的模型。
以前使用PyTorch的DDP时,16GB显存的GPU最多只能训练7亿参数的模型,但使用FSDP后,就可以在4个这样的GPU上训练30亿参数的大模型了,提升了4倍之多。
所以在亚马逊云科技上微调大模型时,我们也为你集成并优化了诸如LoRA、FSDP等最新技术,你只需简单配置就能一键启用它们。比如这里,你可以选择是否启用FSDP,选择LLaMa的微调模式如Instruction或Adapter,是否进行INT8量化,设置LoRA的各项参数等等。
我们的目标是让开发者能够在云端,通过极其简单的方式,就获得最先进的大模型部署和微调优化能力,从而把主要精力放在真正的应用开发和数据微调上。
在分享的最后,我想再次强调一点:虽然我今天讲了这么多优化技术的理论知识,但它们的存在是为了让你作为开发者,能够更简单、高效地使用大模型,而不是增加学习和配置的负担。
我们在亚马逊云科技上,已经为你集成和优化了这些复杂的技术细节,你只需要关注最上层的配置,而不必深入了解它们的原理。这样,你就可以把主要精力放在真正的应用开发和行业实践上,利用自身的数据和知识优势,构建出真正有价值的大模型应用。
这正是我们服务的目的,也是我们保护你AI投资的承诺。因为我们相信,大模型将会持续不断地迭代更新,但你作为开发者,只需要跟上最上层的变化就可以了,底层的细节有我们来为你优化和集成。
如果你有任何其他问题,我们的工程师都在现场,欢迎你们过去交流讨论。最后,如果你对亚马逊云科技的认证课程感兴趣,也可以找我们的同事了解详情。
谢谢各位的聆听,希望我今天的分享对你们有所启发和帮助。让我们一起拥抱这个生成AI的新时代,期待你们在这个领域的更多实践和创新!
下面是一些演讲现场的精彩瞬间:
在亚马逊云科技中国峰会2024上,演讲者回顾了一年前人们对生成AI的热议,从理论层面到实际应用的转变。
亚马逊云科技中国峰会2024上,演示者通过简单的操作,在几分钟内就生成了一个令女儿喜欢的恐龙图像,展现了ByteRock服务的强大功能。
亚马逊云科技推出了一个全新的深度学习平台,可以快速部署和优化机器学习模型,满足企业不同层次的需求。
亚马逊云科技中国峰会2024:介绍了一种名为”vlm batch”的新技术,通过虚拟内存管理机制优化大型语言模型的内存消耗和性能。
亚马逊云科技中国峰会2024上,演讲者分享了如何利用LORA技术微调大型语言模型,并展示了通过线性相加AI生成图像和真人照片获得更自然图像的方法。
亚马逊云科技中国峰会2024上,演讲者分享了人工智能模型微调、部署和分布式等前沿技术,展望了技术爱好者在AI时代的机遇。
亚马逊云科技为开发者提供了简单易用的工具和流程,帮助他们快速开始生成 CI 或大模型应用的学习。
总的来说,这场演讲旨在向开发者展示亚马逊云科技在简化大模型部署和微调方面所做的努力,并鼓励开发者利用这些工具,专注于利用自身数据构建创新应用。
2024年5月29日,亚马逊云科技中国峰会在上海召开。峰会期间,亚马逊全球副总裁、亚马逊云科技大中华区总裁储瑞松全面阐述了亚马逊云科技如何利用在算力、模型、以及应用层面丰富的产品和服务,成为企业构建和应用生成式 AI 的首选。此外,活动还详细介绍了亚马逊云科技秉承客户至尚的原则,通过与本地合作伙伴一起支持行业客户数字化转型和创新,提供安全、稳定、可信赖的服务,以及持续深耕本地、链接全球,助力客户在中国和全球化发展的道路上取得成功。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。