0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

AI框架的演进趋势以及MindSpore的构想

电子设计 来源:电子设计 作者:电子设计 2020-12-10 15:23 次阅读
转载自:知乎
作者:金雪锋

MindSpore在3月底开源后,一直忙于功能完善和内外部的应用推广,现在终于有点时间可以停下来结合MindSpore的实践和团队一起总结对AI框架的一些思考,希望对大家有所帮助,也有助于大家去了解MindSpore,更加欢迎大家一起探讨。

计划开一个专栏,有一系列的文章,初步主题规划包括:

  1. AI框架的演进趋势和MindSpore的构想
  2. AI框架的图层IR的分析
  3. 动静态图统一的思考
  4. 端边云的框架如何统一
  5. 图算融合的设计思考
  6. 自动算子生成可行吗?
  7. 如果自研一个AI编程语言,应该长什么样?
  8. 如何成为分布式并行原生的AI框架?
  9. AI与科学计算怎么结合?
  10. AI框架怎么使能AI责任?

…….等等

内容比较多,全部写完要很长时间,希望自己有足够的耐心坚持下去。

本篇是一个总体的介绍,主要是分析AI框架的发展趋势,介绍一下MindSpore的构想

1、未来AI框架的发展趋势是什么

AI框架的发展个人认为可以大致分为3个阶段:

第一阶段的代表是torch、theano以及Caffe,奠定了基于Python、自动微分、计算图等基本设计思路。

第二阶段的代表是TensorFlow、PyTorch,一个通过分布式训练、多样的部署能力在工业界广泛使用,另外一个是提供动态图能力,在灵活性上吸引了大量的研究者和算法工程师

第三阶段的方向是什么?目前看还没有定型,我们看到Google也有多条技术路径在探索,包括TF2.0,JAX、MLIR、Swift for TF等;有些在做动态图和静态图的统一,有些在构建统一的IR基础设施,还有些在探索新的表达方式等,总之还是百花齐放的状态。

不管AI框架未来的发展方向是什么,AI框架的驱动力还是相对清晰,我们认为AI框架的驱动力主要是5个-“ABCDE”:

  • Application+Bigdata:AI框架的Application就是AI的模型和算法,Bigdata就是AI模型需要的数据
  • Chip:AI的芯片,代表AI的算法发展
  • Developer:AI的算法研究者和算法工程师
  • Enterprise:AI部署和AI责任

下面,我们想通过对AI框架的驱动因素的分析来讨论一下AI框架的发展方向。

从应用和数据角度看AI框架的挑战

  • 模型和数据的规模和复杂度持续提升

今年5月,OpenAI发布GPT-3模型,千亿参数量,数据集(处理前)45T,训练一次的成本号称接近500万美金,超大模型不仅仅是算法和算力成本的挑战,同时对AI框架的挑战也是巨大,主要体现在三点,性能墙(内存、通信、计算利用率)、效率墙以及精度墙:

  1. 性能墙:大模型下,GPU和NPU的单卡(内存一般只有32G)肯定装不下整个模型,传统的数据并行是不够的,未来内存复用、混合并行(数据并行/模型并行/pipeline并行)等技术的使用将会是常态,同时,混合并行的切分策略寻优是很困难的,不同的切分产生的通信量差异巨大,计算利用率也很不一样,比如pipeline并行往往在计算利用率存在较大的挑战,算子切分的并行在通信量的挑战会很大,这些都需要AI框架来支持;最后在大规模并行训练系统中,当性能要求越来越高时,数据预处理也会成为一个瓶颈,比如我们在ResNet50性能调优时发现,当单Step跑到17~18ms的时候,host数据处理的时间就跟不上了。
  2. 效率墙:混合并行策略如果让算法工程师来手工确定的,这个门槛就会很高,既要懂算法,又要懂系统,怎么做到自动并行是关键。
  3. 精度墙:大规模模型训练天生就是一个大Batchsize的训练,怎么更好的收敛,达到精度要求,都是一个大的挑战。

除了上面讲的三点外,超大规模的训练还面临其他的挑战,比如大规模集群的可用性、尾部时延、动态调度等等。

  • 框架的负载从单一的深度学习模型向通用的张量可微计算演进

目前主要看到三个方向:

1)DNN与传统机器学习结合,比如深度概率学习、图神经网络等,这一块基本上业界的AI框架都已经支持。

2)AI与科学计算结合,看到业界在探索三个方向,一是AI建模替代传统的计算模型,这个方向刚刚起步,进展还不是很多;二是AI求解,模型还是传统的科学计算模型,但是使用神经网络的方法来求解,这个方向已经有一定的进展,目前看到不少基础的科学计算方程已经有对应的AI求解方法,比如PINNs、PINN-Net等,当然现在挑战还很大,特别是在精度收敛方面,如果要在AI框架上AI求解科学计算模型,最大的挑战主要在前端表达和高性能的高阶微分;三是使用框架来加速方程的求解,就是科学计算的模型和方法都不变,但是与深度学习使用同一个框架来求解,其实就是把框架看成面向张量计算的分布式框架。

3)计算图形相关的,类似Taichi这样的语言和框架,提供可微物理引擎、可微渲染引擎等

从AI的芯片发展趋势看AI框架的挑战

AI芯片主要是两种形态,一种是基于SIMT的GPU,另外一种是类SIMD的NPU,随着NVIDIA A100的发布,我们看到两种芯片架构在相互借鉴,相互融合:

  1. 大算力还是要靠SIMD(SIMT的灵活性虽然强,但是芯片的面积/功耗挑战太大),Tensor Core的规模越来越大;
  2. 片内片间高速互联;
  3. 多硅片,大内存封装,x倍体积(特别是推理芯片)。

AI芯片的持续演进对AI框架也提出了许多关键的挑战:

  1. 优化与硬件耦合度提升,图算编译一体化:图层融合优化已经趋于收敛,需要和算子层联动优化,子图级和算子级的界限打破,基于Graph tuning的整体优化是目前的热点;
  2. 多样的执行方式:图下沉模式和单算子调用模式混合,不同的情况下,可能采用不同的方式;
  3. 可编程性挑战变大:由于有了大量的SIMD加速指令,不在是单纯的SIMT编程模型,异构编程的挑战变大

从算法工程师和开发者的角度看AI框架的趋势

  • 新的AI编程语言尝试突破Python的限制

目前看到有代表性主要是Julia和Swift for TensorFlow

Julia的历史较早,目前在科学计算领域已经有不错的应用基础,当前结合这些领域的积累,逐步进入AI和深度学习领域,宣称的特点是动态语言的特征,静态语言的性能,和Python比,比较有特色的地方包括:

  1. MATLAB的张量原生表达
  2. 多态的能力+动态类型推导/特化

3. IR的反射机制

所谓的IR反射机制是指,Julia的IR可以让开发者做二次加工,以Julia的机器学习库Flux+Zygote为例:

Flux是一个Julia上的扩展库,定义基本的算子,如conv,pooling,bn等等,方便开发者基于Flux去定义机器学习模型;

Zygote基于Julia提供的IR反射机制实现了源到源的自动微分,在这个过程中,是不要改变Julia本身的。

与Julia相比,Swift for TensorFlow则完全是另外一套思路,他试图从工业级开发的角度来找到差异化,包括静态类型、高性能、与端侧结合的易部署等。

从目前看尽管Julia和Swift都有些特色,但是短期内还很难撼动Python在AI领域的地位。

  • AI编译器成为框架的竞争焦点

AI编译器目前看到有三个方向在发力,第一类是致力于动静态图统一的AI JIT能力,比如TorchScript、JAX等;第二类是偏向于面向芯片的优化,如XLA、TVM;第三类是想做AI编译器的基础设施,MLIR希望是提供MetaIR,成为构建AI编译器的基础,Relay/TVM则是想把编译器接口开放出去支撑第三方框架。不过我们看到这三个方向都还存在比较大的挑战。

AI JIT:Python的灵活性和动态性太强,动态shape好搞定,但是动态Type就难了,更不用说Python里面有大量非常灵活的数据结构的用法,一个动态图想无缝的转到静态图的确不是一件很容易的事情。

编译加速:目前主要还是基于Pattern的算子融合和基于模板的算子生成技术,这里的瓶颈在于算子生成技术,因为算子融合的组合条件太多,基于模板无法做到完全枚举,要提升整个编译加速的泛化能力,下一个需要攻克的技术就是不需要模板的自动算子生成技术。

AI编译器的基础设施:MLIR在设计理念上确实是先进和宏大的,MLIR目标通过Dialect的扩展来支持各种领域编译器,包括AI编译器(图层和算子层)。从进展看,MLIR在TF Lite的应用最快,主要是用作模型转换工具。我们需要思考的是,MLIR带来的好处究竟是什么?我想MLIR本身并不会打来框架性能和易用性的提升,主要还是重用和归一,如LLVM的基础结构CFG+BB、大量的优化等,问题是这些重用是否有利于AI图层和算子层的编译,个人的观点,对于算子层来说MLIR+LLVM肯定是适用的,对于图层就未必,LLVM虽然统一了许多编程语言的编译器,但是优势领域还是集中在静态编译领域,在JIT和VM领域,LLVM的优势并不明显,CFG+BB这样的基础架构未必适合需要自动微分/JIT这样的AI图层编译器。

从AI的部署看AI框架的挑战

从AI部署看,我们看到三个趋势:

  1. 大模型在端侧的部署,特别是语言型的模型
  2. 端云协同的场景逐步开始应用,这里主要有两类,一类是云侧训练,端侧做在线finetuning的增量学习,第二类是联邦学习。
  3. AI无处不在,在IoT那些资源受限的设备上进行AI模型的部署。

目前看AI框架主要是两个挑战:

  1. AI框架在云侧和端侧能否做到架构上的统一,这里的统一主要是指IR格式,只有这样才能做到云侧训练出来的模型,在端侧可以平滑的进行增量学习,并方便地进行联邦学习。
  2. AI框架能否做到可大可小,比如小到K级的底噪,能够内置到IoT的设备里。

从AI的责任看AI框架的挑战

AI的责任涉及的范围非常广,包括安全、隐私、公平、透明、可解释。

作为AI业务的承载,AI框架需要具备使能AI责任的能力,目前AI框架需要解决的几个挑战:

1、对于AI责任的各个方面,缺乏通用的分析方法和度量体系,缺乏场景感知的自动化度量方法。

2、AI模型鲁棒性、隐私保护技术、密态AI在实际场景下对模型性能影响较大。

3、AI的可解释性还缺乏理论和算法支撑,难以给出人类友好的推理结果解释。

2、MindSpore的构想

MindSpore作为一个新兴的框架,大家经常问的一个问题是他的差异化在哪里?

结合前面分析的AI框架的驱动力和挑战,我们希望MindSpore在5个方向上引领AI框架的演进:

  • Beyond AI:从深度学习框架演进到通用张量可微计算框架

MindSpore会提供一个更通用的AI编译器,为支持更多的应用类型提供可能性。

  • 分布式并行原生(Scale out):从手工并行演进到自动并行

MindSpore在支持大规模训练方面除了性能和扩展性好外,更重要的是想降低这一块的门槛,让分布式训练变得更加简单。

  • 图算深度融合(Scale up):从图算分离优化演进到图算联合优化

MindSpore提供图算联合优化、自动算子生成、深度图优化等关键技术,充分发挥AI芯片的算力。

  • 全场景AI:从端云分离架构演进到端云统一架构

MindSpore的云侧框架和端侧框架做到统一架构,方便云端训练/端侧finetuing或者端云协同的联邦学习

  • 企业级可信能力:从消费级AI演进到企业级AI

MindSpore会内置对抗性训练、差分隐私、密态AI、联邦学习以及可解释AI等能力。

当然,软件架构都是持续演进的,很少有技术能够做到独门绝技,MindSpore也希望和业界其他框架在正确的方向上一起进步。

同时,MindSpore社区也对外发布了10大课题,邀请开发者一起参与创新。具体参见链接:https://github.com/mindspore-ai/community/tree/master/working-groups/research

最后,简单介绍一下MindSpore的高层设计

MindSpore主要分为四层:

  1. MindSpore Extend:这个是MindSpore的扩展包,现在的数量还比较少,希望未来有更多的开发者来一起贡献和构建
  2. MindSpore的表达层:MindExpress是基于Python的前端表达,未来我们也计划陆续提供C/C++Java等不同的前端;MindSpore也在考虑自研编程语言前端-仓颉,目前还处于预研阶段;同时,我们内部也在做与Julia这些第三方前端的对接工作,引入更多的第三方生态。
  3. MindSpore的编译优化层:MindCompiler是我们图层的核心编译器,主要基于端云统一的MindIR实现三大功能,包括硬件无关的优化(类型推导/自动微分/表达式化简等)、硬件相关优化(自动并行、内存优化、图算融合、流水线执行等)、部署推理相关的优化(量化/剪枝等);MindAKG是MindSpore的自动算子生成编译器,目前还在持续完善中。
  4. MindSpore全场景运行时:这里含云侧、端侧以及更小的IoT。

同时MindSpore也提供了面向AI责任的MindArmour,以及面向数据处理/可视化/可解释的MindData。

MindSpore是一个新生的开源项目,今年3月底刚开源,本文介绍的构想更偏向MindSpore的规划,其中有不少功能还没有完善,许多功能还不好用,甚至还有些功能处于前期研究阶段,希望开发者们能一起参与MindSpore社区,多提问题和意见,共建MindSpore社区。

MindSpore官网:https://www.mindspore.cn/

MindSpore论坛https://bbs.huaweicloud.com/forum/forum-1076-1.html

代码仓地址:

Gitee-https://gitee.com/mindspore/mindspore

GitHub-https://github.com/mindspore-ai/mindspore

官方QQ群: 871543426

推荐专栏文章

更多嵌入式AI算法部署等请关注极术嵌入式AI专栏

审核编辑:符乾江
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式系统
    +关注

    关注

    41

    文章

    3563

    浏览量

    129207
  • 人工智能
    +关注

    关注

    1791

    文章

    46830

    浏览量

    237473
收藏 人收藏

    评论

    相关推荐

    香橙派与昇思MindSpore合作提速,软硬结合助力开发者构建创新AI应用

    近日,昇思MindSpore开源社区与香橙派合作成果加速落地,持续为开发者提供普惠的端侧算力与好用的AI框架,软硬结合助力高校AI课程建设,帮助开发者基于昇思MindSporeAI
    的头像 发表于 11-01 17:02 678次阅读
    香橙派与昇思<b class='flag-5'>MindSpore</b>合作提速,软硬结合助力开发者构建创新<b class='flag-5'>AI</b>应用

    RISC-V如何支持不同的AI和机器学习框架和库?

    RISC-V如何支持不同的AI和机器学习框架和库?还请坛友们多多指教一下。
    发表于 10-10 22:24

    探索手机震动马达的种类与应用:技术演进与市场趋势

    手机震动马达,作为手机中不可或缺的一个组件,扮演着提醒、通知和反馈的重要角色。然而,随着技术的不断发展和市场需求的变化,手机震动马达也在不断演进和多样化。本文将深入分析手机震动马达的种类、技术特点以及应用场景,为读者呈现手机震动马达领域的最新动态。
    的头像 发表于 09-19 15:06 301次阅读
    探索手机震动马达的种类与应用:技术<b class='flag-5'>演进</b>与市场<b class='flag-5'>趋势</b>

    中国AI长卷(二):框架立基

    AI框架可以看到,更强的产业化能力,就是中国AI的底色
    的头像 发表于 07-24 12:27 2530次阅读
    中国<b class='flag-5'>AI</b>长卷(二):<b class='flag-5'>框架</b>立基

    英伟达推出Flextron AI框架:赋能灵活高效的AI模型部署

    在人工智能与机器学习领域,随着技术的不断演进,模型的高效部署与适应性成为研究的新热点。近日,英伟达与德克萨斯大学奥斯汀分校携手宣布了一项重大突破——推出了一种名为FLEXTRON的新型灵活模型架构及训练后优化框架,这一创新成果为AI
    的头像 发表于 07-18 15:22 2692次阅读

    ai大模型和ai框架的关系是什么

    AI大模型和AI框架是人工智能领域中两个重要的概念,它们之间的关系密切且复杂。 AI大模型的定义和特点 AI大模型是指具有大量参数的深度学习
    的头像 发表于 07-16 10:07 4w次阅读

    AI大模型与AI框架的关系

    多个领域取得显著成果。而AI框架则是为开发和训练AI模型提供的一套标准接口、特性库和工具包,它集成了算法的封装、数据的调用以及计算资源的使用,是AI
    的头像 发表于 07-15 11:42 917次阅读

    GPT的定义和演进历程

    GPT,全称Generative Pretrained Transformer,是OpenAI公司在自然语言处理(NLP)领域的一项重大创新。这一模型不仅推动了AI技术的边界,还深刻影响了我们与机器交互的方式。本文将从GPT的定义、来源、演进历程
    的头像 发表于 07-10 10:41 903次阅读

    CubeIDE生成的代码框架会卡在MX_X_CUBE_AI_Process()函数中是怎么回事?

    当我将网络模型部署到STM32F407VGT6中时,CubeIDE生成的代码框架会卡在MX_X_CUBE_AI_Process()函数中是怎么回事?CUbeAI库的版本是9.0。期待您的回复,谢谢
    发表于 05-30 06:11

    开发者手机 AI - 目标识别 demo

    识别demo: JS实现UI界面的功能; Native接口及实现主要为JS提供接口进行AI推理。通过Native方式完成推理的前处理、推理以及后处理,这里通过调用opencv、MindSpore
    发表于 04-11 16:14

    AI推理框架软件ONNX Runtime正式支持龙架构

    近日,知名AI推理框架开源社区ONNX Runtime正式发布支持龙架构的版本1.17.0。
    的头像 发表于 03-12 12:23 539次阅读
    <b class='flag-5'>AI</b>推理<b class='flag-5'>框架</b>软件ONNX Runtime正式支持龙架构

    基于AI框架的智能工厂设计

    在当今的智能制造业中,智能化和数字化的发展已经成为制造业的主要趋势。随着人工智能(AI)技术的不断发展和进步,智能制造的智慧工厂已经成为制造业的一个重要发展方向。
    发表于 01-26 15:18 873次阅读
    基于<b class='flag-5'>AI</b><b class='flag-5'>框架</b>的智能工厂设计

    Nullmax揭秘BEV-AI技术架构加速量产方案演进

    12月19日,Nullmax首席科学家成二康博士应邀出席2023全球自动驾驶峰会(GADS 2023),在自动驾驶BEV感知技术论坛上发表《BEV-AI技术架构 – 量产方案演进》主题报告,透过Nullmax量产方案演进路线图,
    的头像 发表于 12-22 14:46 1119次阅读

    驾驭创造的力量: 生成式 AI 时代的 MLOps 演进

    以下文章来源于谷歌云服务,作者 Google Cloud 驾驭创造的力量: 生成式 AI 时代的 MLOps 演进  MLOps 是一种将机器学习模型从实验室推向生产的系统方法,它能够通过全面
    的头像 发表于 12-21 18:05 320次阅读

    HarmonyOS:使用MindSpore Lite引擎进行模型推理

    使用 MindSpore Lite 推理框架时,需要释放已经创建的模型。 // 释放模型 OH_AI_ModelDestroy(&model); 调测验证 编写 CMakeLists.txt
    发表于 12-14 11:41