提起大模型,除了各种惊艳的性能表现,还伴随着高昂的硬件要求和运行成本,将绝大多数 AI社区成员都拒之门外。无需注册,就可以免费白嫖 1750 亿参数的 OPT 模型!还不快打开下方链接,自己上手在线体验一下?
云服务体验地址:https://service.colossalai.org/基于 1750 亿参数 OPT 大模型,该网站支持多种文本生成任务,包括事实问答、聊天机器人、翻译、文章创作等。只需点击对应的子任务名,如 FAQ(事实问答),输入需要的对应内容,点击右下方的蓝色生成按钮,稍等就能得到结果。要想了解刚刚体验的大模型推理的技术原理,首先,让我们先回顾一下刚才所用到的大模型。OPT 的全称为 Open Pretrained Transformer,是 Meta(Facebook) AI 实验室发布的对标 GPT-3 的大规模 Transformer 模型,共有 1750 亿个参数。与 OpenAI 尚未公开模型权重的GPT-3 相比,Meta AI 慷慨地开源了所有的代码以及模型权重,极大推动了 AI 大模型落地与应用,每一位开发者都能以此为基础开发个性化的下游任务。
然而 GPT-3、OPT-175B、AlphaFold 等前沿 AI 大模型远超现有硬件容纳能力,训练和部署推理服务都必须使用复杂专业的分布式技术。现有系统大都存在上手门槛高、运行效率不高、通用性差、部署困难、缺乏维护等问题。面对这一痛点,面向大模型时代的通用深度学习系统 Colossal-AI,仅需几行代码,便能高效快速部署 AI 大模型训练和推理,促进 AI 大模型低成本应用和落地。使用开源 Colossal-AI 快速部署 AI 大模型云服务此次 OPT-175B 超大模型部署的快速上线,依托 AI 大模型开源解决方案 Colossal-AI 生态,只需少量改动,即可完成大模型云端并行部署。运行超大模型首当其冲的问题是单个 GPU 显存无法容纳巨量的模型参数,而推理问题不仅仅要考虑吞吐量还要考虑时延,因此使用并行来解决这个问题是一种直观的思路,借助 Colossal-AI 生态可以轻松将一个单机模型转换成并行运行。Colossal-AI生态提供众多可以参考应用实例,如 GPT、OPT、BERT、PaLM、AlphaFold 等。获得并行 OPT 模型之后,下一步要处理的是参数加载。Colossal-AI 生态也提供了并行模型参数加载的解决方案,用户只需要参考样例简单提供参数名映射关系即可完成模型参数的加载,最后将模型投入到 Colossal-AI 生态提供的推理引擎中,设置相应的超参数。截至此刻,大模型OPT 主干网络的推理服务就可以上线并能输出有意义的结果。在跨越了内存墙问题、并行参数加载等重重阻碍,成功运行了并行主干网络后,为了进一步提高推理性能,Colossal-AI 还提供了多个面向生成式任务的优化,可实现数十倍推理吞吐量的提升。由于 OPT 面向的是生成式任务,而生成式任务需要不断循环模型的输出结果。这使得推理中常见的 batching 策略无法直接应用,而单 batch 运行效率低下。此外,在生成阶段还存在大量的重复计算。为了全面释放生成式任务运行中高性能硬件的潜力,此次推理部署增加了 left padding 技术使得 batching 成为可能,还增加了past cache 技术来消除在生成阶段的重复计算问题,以及引入 bucket batching 技术减少无意义的计算。先来讲讲为什么生成式任务无法直接使用常见的 batching 方法。如下图所示,由于输入语句的长度通常参差不齐,而且多数语言的书写习惯都是从左至右,如果用常规的 right padding,那么对于较短的句子就难以生成有意义的结果或者需要复杂的处理才能生成结果,继而导致无法使用 batching 方法。而当我们使用 left padding 对句子进行填充时,每一个句子的生成侧(右侧)都是对齐的,可以同时生成新的单词。Left padding
由于模型的一次推理仅能生成一个新词,于是在生成式任务中每生成一个新词后都会加到输入序列的尾部再次投入模型进行计算,生成下一个新的单词,由于每一次推理都需要针对新的完整序列进行计算,就会存在大量重复计算的问题,尤其是对于占绝大多数计算量的 Linear 层来说。因此 Colossal-AI 开发人员在模型内部加入 past cache 技术,会暂存同一次生成任务中 Linear 层的输出结果,每次只有新的一个单词会进入 Linear 层进行计算,并把该词的计算结果加入到暂存结果中避免重复计算。Past cache 技术可以极大的降低实际计算量。生成式任务计算过程。Past cache 将同一次任务的 Linear 层计算结果保留,新的一次推理只需要计算新增的一个单词,与 cache 拼接进入后续计算。
此外,Colossal-AI 开发人员注意到不同于其他任务,生成式任务计算量的参差不齐,不仅仅来自于输入句长的不同,还来自于输出目标句长的不同,且输出句长和输出目标句长都将在一个较大的范围内取值。简单的 batching 方案将两者相差很大的推理放在同一个批次中将造成大量冗余计算,因此Colossal-AI 开发人员加入了 bucket batching 技术,即按照输入句长以及输出目标句长进行桶排序,同一个桶内的序列作为一个 batching,极大的降低了冗余计算量。Bucket batching。将具有相近输入与输出长度的任务放在同一个批次。
面向大模型时代的 Colossal-AI
Colossal-AI 不仅针对 AI大模型提供了诸多优秀的解决方案,更为重要的是完全开源!每一位开发者都可以基于它低成本训练自己的大模型,并部署为云服务。例如,在 1 张 10GB 的 RTX 3080 上,便可训练 120 亿参数的模型,相比原生 PyTorch 可提升 120 倍的模型容量。Colossal-AI 自开源以来便广受关注,已经多次在 GitHub 及 Papers With Code 热榜位列世界第一,相关解决方案已成功在自动驾驶、云计算、零售、医药、芯片等行业知名厂商落地应用,可快速高效完成 AI 大模型的云服务部署。
Colossal-AI 团队近期还连续入选和受邀全球超级计算机大会、国际数据科学会议、世界人工智能大会、亚马逊云科技中国峰会等多项国际专业盛会,并发表主题演讲,展示不断革新的高性能计算与人工智能前沿发展,及其在全面推动 AI 大模型民主化中的创新实践,敬请关注!
项目开源地址:https://github.com/hpcaitech/ColossalAI云服务体验地址:https://service.colossalai.org/https://arxiv.org/abs/2205.01068
https://sc22.supercomputing.org/
https://medium.com/@yangyou_berkeley/using-state-of-the-art-ai-models-for-free-try-opt-175b-on-your-cellphone-and-laptop-7d645f535982