日常生活中,打开淘宝可以看到自己感兴趣的商品,打开抖音可以看到自己感兴趣的视频,这都得益于AI大数据分析,其中包含了自然语言处理、统计、机器学习推荐等算法;再比如自动驾驶主要基于深度学习的相关技术,天猫精灵主要基于丰富的语音识别技术以及大数据检索能力。
AI 已经在生活中无处不在,语音、自然语言处理、图像视觉、自动驾驶、OCR、证件识别等都是 AI 领域的场景,这也意味着AI正在持续提供普惠的能力。
要使得AI 能够真正广泛应用、落地到各个场景,需要满足三个条件:
第一,实用。需要能够真正解决各方面的诉求,而不是单纯的炫技;也需要真正落地,在 AI 工程化上做充分的准备。另外,也需要能够加速行业应用孵化和创新,比如当下最火的AI绘图Stable Diffusion,输入关键的文本信息即可生成对应的图片,是一个极具创新意义的项目。
第二,易用。需要有云原生AI平台,规避冗长繁杂的部署流程,能够在云上一键拉起AI 应用场景。同时,能够提供与线下部署效果一致的功能,融合云上的很多性能特点,加速推理优化,快速应用到系统。云上的 AI 能力是原子化的,可以模块化输出,对于一套大型系统, AI 可能只是整个系统里面的一小环,AI普惠需要AI的各种功能能很方便地迁移对接到各个应用系统上。
第三,放心用。需要成本可控,各种数据模型能够有开放的 API 以及开放的兼容格式。也需要能够保障数据与模型安全,而云原生天然保障了安全性。
那么,AI开源与云的结合,能够为我们带来什么?
首先,云是AI开源的最佳运行环境。用户无需自行准备服务器、下载软件,无需进行编译部署等繁杂的准备工作,开箱即用。
其次,云为AI开源提供了新的商业模式,比如社区的讨论和维护可以为云上为使用开源软件的企业提供额外服务,解疑答惑。
第三,开源社区和云平台会有更多互动,比如云为开源提供弹性、可扩展等方面的能力;反之,云平台也可以对开源社区提出诉求,比如未来要发布 Serverless 服务,提前规划开源软件的适配。最终两者共同携手,一起普惠 AI 数字世界。
上图为阿里灵杰AI开源家族图谱。
从最底层的资源调度层面、平台工程层面、算法应用和算法基础层面均有相关的项目实现开源。机器学习平台PAI支持TensorFlow、PyTorch等流行的开源项目,也支持了很多国产化项目,比如OneFlow等,并在此之上实现了分布式训练框架以及分布式推理能力的优化。任务调度上PAI Flow、Media Flow也即将开源。
算法侧,应用层面 ModelScope已经发布,除了大规模预训练模型之外,很多基础模型比如语音、图像、文本、推荐等相关项目也已开源。实时计算方面包括Flink ML(Flink Machine Learning),可以基于实时数据流做实时机器学习,比如点击完商品马上能出现相关推荐。另外,还有基于图的机器学习框架、迁移学习、增强学习等。
在云原生的机器学习应用场景,AI应用对调度也提出了更高的要求。因此我们发布了koordinator,用于解决按作业调度优化,资源利用率提升等问题。
koordinator能够根据各个服务、应用的热力图来做调度均衡。比如某几台机器出现故障,则coordinator会从 QoS 层感知到服务稳定性的变化,然后进行重新调度,下线原来响应慢的几个容器,将任务部署到新容器、新服务器上。
DeepRec在训练推理引擎侧基于Tensorflow 做了优化工作,它主要服务于推荐、搜索、广告这几类诉求。搜索、推荐、广告一般是结构化数据,可以简单理解为用表(Table)来描述。我们在稀疏功能、训练性能、部署及Serving方面做了很多优化工作。
稀疏特征:模型数据处理中的很多特征非常稀疏,比如一个人与某个商品之间产生了行为,即为一条特征。淘宝有数十亿商品,一个人每天浏览上千个商品,交互行为的特征非常稀疏。因此,我们引入了动态弹性特征。传统情况下,一般以固定哈希 Table 来存储特征。引入了动态弹性特征功能以后,可以引入特征准入和淘汰,比如可以动态地将很久以前过期的特征淘汰掉,新生成的特征也能动态地引入。
训练性能:包括分布式训练框架、Runtime优化、图优化以及算子优化。 AI 场景下的训练,输入数据的模式非常相似,时常不停地重复类似的计算逻辑。基于此特点,可以抽取出计算的关键路径,使其优先执行,让计算资源执行更充分,运行时间更短。
部署及Serving:部署侧主要改善了使用体验。 Serving 侧主要做了多级混合存储。通常情况下,要做预测服务,必须将模型加载到内存里,如果是 GPU 则加载到显存里面。我们会将最热门的模型特征 embedding 部分优先放到显存,再到内存,再到硬盘层,通过多级混合存储方式,使大模型能够在单机上存储,减少成本。
做自然语言处理时,面对输入的长短不一致,通常做法是固定长度,但该方法存在几个问题:很长的输入会有部分被丢弃,或者很短的输入需要填入空白从而浪费内存和计算资源。
因此,我们开发了BladeDISC,实现了面向深度学习、端到端的多尺度图优化编译器,能够同时支持不同框架,包括TensorFlow、PyTorch、GPGPU、CPU 以及 ARMS。
Flink ML 是基于 Flink 做的实时机器学习算法库。今年年初发布了Flink ML API,能够支持模型与数据实时传输,同时能够支持多输入的图结构机器学习算法。另外,它虽然叫实时机器学习算法,也能够支持批处理机器学习。
实时机器学习算法较多使用于结构化场景,通常可能有 70% 的工作都在为运行模型准备数据,比如从原始日志里面将数据抽取出来,然后做更多特征加工。因此,后续Flink ML 也会从实时特征工程上做更多投入。最终目标是期望 Flink ML 能够成为实时机器学习的事实标准。
EasyRec是针对推荐场景做的推荐算法库,我们实现了很多顶会论文的算法,且进行了开源。同时,我们集成了很多性能优化,用户不仅能够快速享受SOTA 算法实现,也能享受到最好的性能实现。
除了性能较优,EasyRec也很好地与云进行了结合。无论从计算层面还是数据层面,都能支持不同平台。比如支持 EMR、 Flink、MaxCompute、云原生容器化服务。在输入上,支持传统的 HDFS、OSS对象存储、MaxCpmpute Table 以及 Kafka 等实时数据流。
另外,我们开发集成了 AutoML功能,支持自动超参调优,支持特征的自动生成,高阶特征可以通过 Auto Feature Engineering 的方式实现,也支持自动特征筛选。
在视图视觉场景,有 EasyCV ;在自然语言处理NLP 场景,有 EasyNLP 。
EasyCV集成了多个场景和领域,在检测、分类、分割、关键点 OCR 算法上均集成了很多算法,性能比原始算法提升 20% 以上。
我们优化的YoloX-PAI算法从 backbone 层面实现了多网络支持,在 neck网络上加入了多尺度的图像特征融合提升效果,效果优于社区开源实现的YOLO5和YOLO6。
OFA和AliceMind是达摩院既开源了模型又开源了代码的两个项目。
OFA(One For All)是与任务、结构、模态都无关的序列到序列的学习框架,它在大模型、绿色低碳和服务化等多方面都取得了突破。相比于GPT-3,OFA仅需1%的计算资源即可实现相同的效果。OFA本身是一个大模型,一台机器或一张显卡无法存放,因此,它在服务化方面也进行了非常多的工作,能够较轻松地将服务拉起。上图中间的图片为输入文本后,通过OFA输出的图片。
AliceMind是面向语言的预训练大模型,去年刷新了全球最权威的机器视觉问答 VQA榜单,并以81.26的成绩首次超越人类表现。
除了 VQA 场景,AliceMind在中文理解生成、对话策略、对话生成、表格问答上也刷新了很多榜单,达到SOTA的水准。
回到开源的初心,我们的很多工作也借鉴了开源项目的成果,我们期望能够在开源的基础上结合阿里在场景上的应用,实现更大的扩展,将成果回馈给开源社区。因此,接下来我们也会在平台、算法、应用和资源调度层面做更多持续开源的工作,让更多开发者能够享受到阿里在实践场景下打磨的经验。
另外,也希望更多开发者能够参与到开源社区,共建开源社区,建设AI新标准,开源且开放。
最后,我们期望更多开源产品能够与云结合,将实用、易用、放心用发挥得更加淋漓尽致,让AI开源更加普惠数字世界。