天天看点

大模型时代,AI基础软件的关注点再次回到运行效率

作者:DataFunTalk

引言

AI基础软件的底层技术主要包括AI框架、AI编译器、芯片使能(算子/驱动/……)等;随着以ChatGPT为代表的大模型在内容生成方面取得了突破性进展,以及AI for Science(AI4S)领域受到广泛关注,使得AI基础软件面临全新的挑战,但也为AI基础软件的发展带来了新的机遇。

近日,DataFun与华为昇思MindSpore首席架构师金雪锋进行了访谈,探讨AI基础软件特别是AI框架的发展历史、大模型/AI4S带来的影响和机遇,以及对未来AI基础软件发展趋势的思考。

金雪锋老师简介:

金雪锋,华为中央软件院架构与设计管理部部长,华为科学家,负责华为基础软件的架构设计工作,担任昇思MindSpore首席架构师。

大模型时代,AI基础软件的关注点再次回到运行效率

01.

AI框架的挑战和发展趋势

AI框架是算力、算法和大数据发挥作用的联结枢纽,它为用户供良好的模型和算法编程接口,同时协同底层硬件,提供高性能的训练和推理加速能力。因此,AI框架的发展受到算法、硬件和开发者等多方面的驱动。

总体上,AI框架经历了四个阶段的发展:早期主要用于研究比如Theano;随着CV的兴起,为了追求极致的性能加速,发展出了基于静态图的AI框架比如TensorFlow,它大大提升了性能和部署效率;第三阶段,伴随着NLP技术的快速发展,算法复杂度大幅提升,动态图成了提升易用性的关键,典型的比如PyTorch,它有效提升了编程体验,能够与Python生态更好地融合。

近几年,整个AI领域发展迅速,出现了大模型、AI4S等重大的突破,硬件芯片也在快速演进,这为AI框架带来了新的机会和挑战。

1. 大模型时代,AI框架的机遇和挑战

大模型有两个比较大的特点:(1)模型结构收敛到Transformer,而且大部分是decoder only的架构;(2)模型的规模大,达到百亿/千亿级别,训练推理成本高,训练时间长。这两个主要的特点,给AI框架带来了新的机遇和挑战。

(1)大模型的预训练模型成为新的生态锚点

以前AI生态锚点主要是在AI框架的API上,丰富易用的API是AI框架被开发者广泛接受的基础,基于这些API开发的海量模型是整个生态系统的基础。

在大模型时代,由于大模型超强的泛化性和大量的智能涌现的特征,特别是类ChatGPT语言大模型的出现,基于基础预训练模型的微调成为主流的模型开发模式,AI的生态锚点会从框架的API转移到预训练模型上;而且,大模型本身就是生态入口。例如ChatGPT、GPT-4等大模型,它甚至可以进行任务的规划和分解,这种能力根本无法通过传统模型实现。这种强大的能力会催生更多的产品和应用原生地长在这些大模型上,进而成为了AI框架的生态锚点。比如,AutoGPT项目,它可以接受用户设定的任务,然后通过GPT-4的能力进行任务的分解,并协同其他工具完成用户设定的任务。AutoGPT三月份开源,目前Star数量已经超过了13万。

(2)AI框架的关注点再次回到运行效率

当前业界已经投入实用的大模型,如ChatGPT、GPT-4、PaLM-2等,规模都超过千亿参数,甚至达到了万亿参数规模,训练这些大模型往往需要用到千张加速卡集群,从零开始训练的周期也是以月为单位计数。而从大模型的发展趋势来看,模型的参数可能还会持续增长,但是底层芯片的算力增长速度功能已经远落后于模型参数,导致模型规模和算力规模之间出现鸿沟,而这个鸿沟需要AI框架进行弥补,这很大程度上会使得AI框架关注的重点再次回到运行效率和可靠性上:

1、静态图重新占有优势:在超大规模集群上,动态图并不能比静态图有更好的易用性,相反静态图有更好的性能和内存使用率,这个与小模型是不一样的。

2、大模型的分布式并行切分变得更加关键:从大模型训练的角度,如何提高上千张加速卡的运行效率?核心问题是通过编程将几千亿的模型参数合理的划分到这些加速卡上,并尽可能减少通信和内存搬移开销,这就需要框架支持灵活的并行切分模式;另外,如果这个过程全部靠工程师手动编程,则需要耗费大量的时间对系统性能进行调试调优,即使大模型发展这么久了,参与大模型工作的系统优化方面的工程师仍然至少占到1/3以上,这个问题的关键挑战是如何简化分布式编程的复杂度,使得工程师可以像单机编程一样,为分布式AI集群编程。为此,需要重点解决三个方面的问题:

  • 支持足够多的并行策略,满足各种大模型高效训练的要求;
  • 通过感知模型和硬件全局信息,做到全局配置优化;
  • 在合理时间内能够自动搜索并生成能够最高的分布式并行策略,减少人工编程和调优的开销。

3、分布式并行训练长稳运行的必要性:在千卡集群中,硬件失效是常态,如何保证系统稳定可靠的运行,即便有硬件失效,也能快速恢复,就成为一个关键的能力。

以MindSpore为例,我们通过长期大模型的实践,实现了十多种主流的分布式并行策略,通过静态图可以感知和优化全局的优势,同时与昇腾硬件结合,实现长稳训练和快速故障恢复的能力。

(3)AI推理需要解决端侧部署大模型的挑战

由于大模型需要消耗大量的计算和内存资源,现有的大模型基本都是基于云环境提供服务,这会限制大模型的应用场景。比如,在端侧,很多涉及用户隐私的任务是无法发回到云环境执行的,这会导致大模型在ToC业务场景中受限。

大模型在端侧的部署和应用主要有两种方式:

第一种方式,端侧部署的大模型独立完成任务,例如最近LLaMA-7B模型可以通过4-bit量化,在有4GB内存的树莓派上运行;TVM社区推出的MLC LLM项目,也是在尝试通过精细的内存规划和激进的模型压缩,将大模型运行在手机上。虽然这些方法能让大模型在端侧跑起来,但是占用的内存和计算资源可能会影响其他应用,同时压缩后的模型的效果也没有经过全面的测试,能够支撑的使用场景应该是有限的。

第二种方式,通过端侧和云侧的协同将大模型的能力应用在端侧。谷歌在最近的I/O开发者大会上发布的PaLM-2,它的小型化版本Gecko,是可以在手机侧运行的。虽然目前Gecko主要执行文本Embedding任务,但是我们可以通过这类模型在端侧对用户的请求做初步处理,将更加复杂的任务发挥到云侧大模型去执行,通过这种端云协同的模式实现大模型在端侧的应用。这种模式下,推理时延的优化尤为重要。

2. AI4S对AI框架提出新的挑战

AI与科学计算的结合为科学计算问题的求解带来了新的范式(AI4S)。AI方法可以利用科学计算领域已积累的数据,学习各种复杂条件下的映射关系,而不需要从零开始计算。这种通过神经网络逼近高维微分方程求解的方式,避免了维度灾难,可以实现数量级的性能提升,甚至可以解决传统数值方法无法解决的问题。AI和科学计算的融合正在突破越来越多的科学计算场景,包括生物制药、化学材料、流体仿真、电磁、可控核聚变等。

AI4S对AI框架带来了新的挑战:

第一,编程模式不同:现有的AI模型主要采用面向对象(OOP)的编程模式;在科学计算领域,存在大量复杂的数学函数表达和转换,需要函数式(FP)的编程模式,这种模式使得数值公式表达更直观,且容易进行函数的组合和转换。将这两种编程模式结合的时候,需要实现端到端的微分和编译优化。

第二,计算模式不同:深度神经网络中以规则的张量计算为主,而科学计算中有大量的稀疏的、非规则张量计算(例如傅里叶变换)、以及旋转、对齐反转等操作,这会使得图层和算子层的结构更加复杂。

MindSpore采用了函数式自动微分可以实现面向对象和函数式的融合编程,提供了NumPy、SciPy、Pandas等Python原生的数值计算和数据科学的接口,与原有的神经网络编程接口共享一套底层编译和优化底座。同时,我们在生物制药、流体仿真、电磁仿真等领域发布了一系列领域包供用户开箱使用。

02.

AI编译器的挑战和发展趋势

1. Python静态化

Python几乎已经成了AI编程的首选语言,但是Python本身存在性能差、部署场景受限等问题。Python静态化是解决Python语言的限制的重要手段。为此,AI框架的核心任务是将Python构建的AI模型转换为计算图的形式,下发给硬件执行。按照构建计算图的方式,AI框架分为了AOT和JIT两种编译方式:

AoT(Ahead of Time)编译的模式,在程序执行前先进行构图和编译优化,在整图的基础上生成反向计算图。由于能进行全局的编译优化和整图下沉执行,静态图适合大规模部署,适合挖掘硬件的性能,但是编程和调试体验较差。为此,尽可能多的兼容Python原生语法成为提升静态图的编程易用性的重要手段。以MindSpore为例,我们采用静态图Fallback的模式,即在遇到静态图无法支持的Python语法时,回调到Python解释器执行。理论上这种方法可以兼容全部的Python语法,核心挑战是要能够准确识别不支持的语法,并能在计算图上进行正确表达,同时要能够支持尽可能多的Python语法和全局的编译优化才能避免频繁回调导致的性能劣化问题。

JIT则是边执行边构图,一般通过Tracing的方式实现自动微分。动态图更符合算法开发人员的编程调试习惯,更好的兼容Python生态,但是大多数场景下动态图性能比静态图差,并且部署环境限制较多。业界通过JIT(Just In Time)编译的方法减少动态图的限制,即由用户指定需要加速的程序片段,在运行的过程中对需要加速的部分进行编译,典型代表为PyTorch,PyTorch在1.X版本推出了jit.trace和jit.script两种模式,但是使用场景受限或者需要用户修改代码。PyTorch 2.0版本推出了TorchDynamo,是一种新的尝试,基于ByteCode的方式进行JIT,可以实现开发者无感的JIT编译能力,解决前面提到的问题,不过面临的问题是遇到不支持的语法,还是会产生断图。

整体上看,AOT和JIT都在不断发展,并且从用户视角看,两者在走向统一,发挥自己的优势的同时也在弥补短板,可以让用户兼顾开发效率和执行性能。

2. Transformer时代,编译优化还是大kernel?

在Transformer架构出现之后,图层的结构相对而言变简单了,不再有之前的LSTM、RNN等复杂结构,其很大程度上把大量模型结构进行了统一。因此,很多人也在探讨,当模型固定了以后,是不是可以简化算子层,只用一个大kernel,而不需要再通过编译器,同时还能进一步提升性能?目前看,AI编译优化还是不可或缺,并与大kernel形成互补。

第一,虽然Transformer的基础结构是统一的,但是在不同的场景中会有不同的变种。谷歌曾在2020年的一篇综述里总结了17中典型的Transformer变种,包括了memory compressed transformer、long former等。这些变种通常都是在基础模型单元(Attention)的基础上,修改网络结构以适配不同的场景诉求。为满足不同变种的性能和灵活性的需求,编译器和图算融合更有必要。

第二,我们无法把整图都做成一个大kernel,所以非大kernel部分还是需要进行编译优化的。

第三,Transformer结构在未来是否会被替代,目前也没有定论。虽然Transformer模型表现出了非常好的Scaling Law,但是它也存在推理时延高、上下文长度受限等问题。在这个方面,新的挑战者已经出现,例如最近RWKV和的谷歌最近提出的LRU(Linear Recurrent Unit)都是基于RNN的模型,号称可以保持Transformer模型性能的基础上大幅提升推理的速度和上下文长度。

03.

MLOps需要融入对大模型的支持

大模型会对软件工程带来深入的变革,这主要体现在两个方面:

第一,大模型对软件工程的影响:

现在大家提软件工程1.0——>软件工程2.0——>软件工程3.0的演进,软件工程1.0主要是瀑布式的开发,解决软件质量的问题;软件工程2.0主要是指敏捷、DevOps等实践,解决效率的问题;而软件工程3.0的核心思想是使用大模型进行智能化软件开发,包括辅助设计、代码自动生成、测试用例自动生成等等,未来走向软件开发的自动驾驶。

第二,大模型对软件工程的需求:

这里体现两点:

1、大模型对应用开发的影响,以ChatGPT为代表的大模型在自然语言交互、归纳和推理、认知等方面取得了颠覆性的进展。这使得人机交互模式从UI交互走向自然语言交互,控制模式从人工写的代码逻辑走向大模型的推理和归纳,建模方式从数据访问走向大模型认知。对于简单的应用,比如提供数据源(日历)和弱控制(家电控制),会被大模型系统聚合,这些应用蜕变成一个Plugin接入到这个大模型系统中。对于复杂的应用,则会被重构,演进到AI Native的架构,使用大模型系统提供的SDK,实现全新的交互、控制和认知能力,成为大模型系统的上层建筑,比如微软的office加持copilot,原来90%没有被大家普遍使用的功能和特性,都逐步被挖掘出来,比如在Excel中大量的公式,以前需要熟手才能使用,现在通过自然语言的交互和理解,就可以轻松使用。

2、软件工程对大模型训练推理的支持,针对大模型的Ops会跟当前的MLOps不同,包括强化学习Feedback、数据飞轮等,都是传统模型不会碰到的问题。但是当前的AI和大数据技术栈仍然是分离的,这种分离可能会带来的难题包括数据特征处理和机器学习开发的分隔,包括技术人员的分隔、编程语言的分隔、资源的分隔等;一个理想的情况是能够在同一个集群里实现数据处理和AI处理的端到端开发。另外就是对语言模型的监管,例如监管敏感词、合法合规等,由于大模型可控性问题没有得到有效解决,传统的基于规则的方法已经不再合适,需要从数据、人工对齐(RLHF)、Prompt等多方面、全流程进行深入研究。

04.

总结:未来趋势

总结起来,大模型时代为AI框架带来了新的机遇和技术挑战,需要重点解决大模型的运行效率问题。AI4S的快速进步,使得AI框架需要同时支持面向对象和函数式两种模式,支持不同计算模式的融合计算加速。

从AI编译器的角度,Python静态化是提升AI软件性能和部署效率关键,针对Transformer架构的编译优化需要综合考虑手写大kernel和通用编译优化手段的结合。

从软件工程的角度,大模型提供了新的人机交互模式,会改变现有软件工程的基本抽象,而现有的软件工程也需要为大模型的发展进一步打破各领域技术壁垒。

大模型时代,AI基础软件的关注点再次回到运行效率

▌专家介绍

金雪锋

个人介绍:华为中央软件院架构与设计管理部部长,华为科学家,负责华为基础软件的架构设计工作,担任昇思MindSpore首席架构师。

▌2023亚马逊云科技中国峰会

2023年6月27-28日9:00-17:00,2023亚马逊云科技中国峰会将在上海世博中心举办。

本次峰会将会分享数百个技术话题与最佳实践,覆盖汽车、制造、金融、医疗与生命科学、电商、游戏、泛娱乐、电信、教育、数字化营销等领域。

下面给大家预告一些精彩议题报名参会,请点击“下方链接”。

2023年亚马逊云科技中国峰会 - 因构建_而可见

大模型时代,AI基础软件的关注点再次回到运行效率

继续阅读