「开源人说」|AI普惠,阿里灵杰开源历程与思考
简介: 施兴 阿里巴巴资深技术专家 阿里巴巴开源项目EasyRec负责人
以下为开发者社区「开源人说」第四期——大数据&AI专场的主题分享,点击链接了解更多精彩详情
https://developer.aliyun.com/live/250636

日常生活中,打开淘宝可以看到自己感兴趣的商品,打开抖音可以看到自己感兴趣的视频,这都得益于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开源更加普惠数字世界。
原文链接:https://click.aliyun.com/m/1000364258/
本文为阿里云原创内容,未经允许不得转载。
「开源人说」|AI普惠,阿里灵杰开源历程与思考的更多相关文章
- 开发AI+诊疗生发系统,「先锋汇美」借力人工智能辅助诊疗实现头皮医学检测...
困扰年轻人的脱发问题萌生了新兴的产业链.36氪先前曾剖析过近来火热的植发市场,更多人则选择"防范于未然","头皮检测"服务备受关注.此前,人们对"头皮 ...
- 为什么 User 应该翻译为 「使用权人」 ?
User, 旧译「用户」,我在此向大家倡议有条件地选择翻译为「使用权人」. 1. __使用权人__更能反应 User 的本质特征 我们看到一匹马的时候不会说这是一头猪,而 User 的本质是什么?在我 ...
- 灵感宝盒新增「线上云展会」产品,「直播观赏联动」等你共建丨RTE NG-Lab 双周报
前言 哈喽各位开发者,「RTE NG-Lab 双周报」如期而至! 近两周,我们更新了一些新的实时互动场景和产品,也举办了代码实验室的第一次线下活动,与大家一起体验了声网最新的 4.0 SDK. 灵感宝 ...
- 报名|「OneAPM x DaoCloud」技术公开课:Docker性能监控!
如今,越来越多的公司开始 Docker 了,「三分之二的公司在尝试了 Docker 后最终使用了它」,也就是说 Docker 的转化率达到了 67%,同时转化时长也控制在 60 天内. 既然 Dock ...
- [LOJ#522]「LibreOJ β Round #3」绯色 IOI(危机)
[LOJ#522]「LibreOJ β Round #3」绯色 IOI(危机) 试题描述 IOI 的比赛开始了.Jsp 和 Rlc 坐在一个角落,这时他们听到了一个异样的声音 …… 接着他们发现自己收 ...
- 「微信小程序」有哪些冲击与机会?
昨天晚上相信大家的朋友圈被「微信小程序」刷屏了,这影响力赶上了国务院出台新政策一样,足以说明微信在中国的影响力之大. 然后今天公号后台一大堆人问我怎么看这件事,不少人非常忧虑,仿佛自己将要失业一样. ...
- 深圳即将启动首届「全国人工智能大赛」:超过 500 万大奖 & 政府资助,潜信息你读懂了吗!
人工智能加速“视频/视觉”发展,近期,深圳市即将迎来人工智能领域权威赛事之一——首届「全国人工智能大赛」(The First National Artificial Intelligence Chal ...
- 未来科技城 x 奇点云打造「企业数据大脑」,助力1.3万家企业服务
“当前,政府数字化和数字政府建设已成为一种趋势.一种必然,并且有了一条水到渠成式的实现路径.” 上升为国家战略的数字中国建设加速了”智慧政务“的生动实践,杭州未来科技城的「企业数据大脑」就是一个典型. ...
- 面试都在问的「微服务」「RPC」「服务治理」「下一代微服务」一文带你彻底搞懂!
❝ 文章每周持续更新,各位的「三连」是对我最大的肯定.可以微信搜索公众号「 后端技术学堂 」第一时间阅读(一般比博客早更新一到两篇) ❞ 单体式应用程序 与微服务相对的另一个概念是传统的「单体式应用程 ...
- 「编程羽录」上线,程序员必备的这些技能你能get到嘛?
大家好,我是小羽. 好久不见,给大家带来个好消息,小羽的全新专题「编程羽录」系列正式上新,主要是介绍一些关于面试题和经验总结的文章. 会为大家提供一些技术栈之外,程序员还需要的其他方面硬核知识,做到全 ...
随机推荐
- 四种方式实现点击chrome链接在ie中显示页面
1.c++ socket通过浏览器在ie中打开指定url github源码:https://github.com/iamzken/cpp-open-ie 2.vb生成exe,url访问exe启动ie并 ...
- Mysql范式
什么是范式? "范式(NF)"是"符合某一种级别的关系模式的集合,表示一个关系内部各属性之间的联系的合理化程度".很晦涩吧?实际上你可以把它粗略地理解为一张数据 ...
- 使用现代身份验证(OAuth)调用 EWS 服务
我的博客园:https://www.cnblogs.com/CQman/ 转载: https://mp.weixin.qq.com/s?__biz=MzU0MzUxMzU2NA==&mid=2 ...
- 记录--P0事故预警
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 背景 某一天,前端小余同学和后端别问我小哥在做登录业务接口对接,出于业务的特殊性和安全性的考虑,她和后端小哥约定"user&qu ...
- FFmpeg开发笔记(五)更新MSYS的密钥环
<FFmpeg开发实战:从零基础到短视频上线>一书提到:使用MSYS对FFmpeg进行交叉编译时,需要事先安装交叉编译工具链,也就是执行下面命令. pacman -S mingw-w6 ...
- Oracle 已存在数据的大表 改 分区表
创建表,插入测试数据 -- Create table create table LXW_TEST ( CDATE DATE, T1 NUMBER, T2 VARCHAR2(2) ) ; insert ...
- FPGA模块化设计
模块化设计出发点 在实际地操作中,总有一些基础的模块需要不断地寻找,往往需要消耗大量的时间.为了节约模块化设计的时间,提高设计的效率.在这里将一些基础的模块全部进行封装,利用网络的便捷性,实现快速地基 ...
- 双向循环链表(DoubleLoopLinkList)
双向循环链表 关于双向循环链表可以先阅读这篇文章这里就不再赘述:双向链表(DoubleLinkList) Node template<typename T> class Node { pu ...
- Codeforces Round #682 (Div. 2)
CF1438A Specific Tastes of Andre 洛谷传送门 CF1438A 代码(全铺成1就可以了) #include <cstdio> #include <cct ...
- SQL DELETE 语句:删除表中记录的语法和示例,以及 SQL SELECT TOP、LIMIT、FETCH FIRST 或 ROWNUM 子句的使用
SQL DELETE 语句 SQL DELETE 语句用于删除表中的现有记录. DELETE 语法 DELETE FROM 表名 WHERE 条件; 注意:在删除表中的记录时要小心!请注意DELETE ...