攻克端、边、云协同难点,昇腾是如何助力全场景 AI 开发的?

阅读数:16 2019 年 12 月 24 日 18:02

攻克端、边、云协同难点,昇腾是如何助力全场景AI开发的?

伴随 AI 技术的发展,智能时代的快速推进,端、边、云全场景 AI 也将成为发展的新篇章。那面对全场景 AI 不同的计算需求与开发模式的差异,开发者如何快速进行开发并在端、边、云上全场景适配呢?

12 月 20 日,DevRun·选择不凡—— 华为技术沙龙·昇腾专场来到杭州,围绕全场景 AI 开发面临的技术挑战,邀请华为多位 AI 领域技术专家,通过案例 + 实践,为现场开发者解读了全栈全场景 AI 计算框架与开发全流程。

如何基于 Atlas 进行推理业务开发?

面对端、边、云不同的 AI 算力需求,华为提出全栈全场景 AI 解决方案。作为全栈全场景 AI 解决方案的基石,Atlas 人工智能计算平台基于华为昇腾 AI 处理器和业界主流异构计算部件,通过模块、板卡、小站、AI 服务器、集群等丰富的产品形态,满足了全场景 AI 的算力需求。
攻克端、边、云协同难点,昇腾是如何助力全场景AI开发的?

以 Atlas 300 进行推理业务开发的流程为例,可以总结为以下几个环节:

1、开发前准备:首先对 OS 类型及版本、AI 框架和模型、视频 / 图像编解码能力进行需求评估,然后再安装硬件与软件,搭建开发环境;

2、业务迁移:基于 Matrix 业务软件框架,调用各类接口来完成推理业务的软件开发和算法迁移;

3、集成调优:对系统整体体性能进行优化,包括应用侧和算法模型侧。

4、测试验收:最后进行功能测试、可靠性测试、可维护性与性能测试等验收测试,保证产品可商用。
攻克端、边、云协同难点,昇腾是如何助力全场景AI开发的?

Matrix 的典型流程如上图所示。主要分为 Host 和 Device 两个部分,Host 属于服务器 CPU 侧,Device 属于 Atlas 300 AI 加速卡侧。Engine 作为流程的基本功能单元,允许用户自定义,实现数据输入、图片视频分类处理、结果输出等。Graph 则作为管理若干个 Engine 的流程,每个 Graph 在昇腾 310 侧默认对应一个线程来处理。

通过 Graph 配置文件,配置 Engine 之间的串接和节点属性,节点间数据的实际流向根据具体业务在节点中实现,通过 APP 向业务流的开始节点灌入数据启动整个 Engine 的计算流程。

应用 Mind Studio,降低 AI 开发门槛

为了满足开发者全场景 AI 开发的诉求,华为推出了 Mind Studio。Mind Studio 是一套基于华为昇腾 AI 处理器开发的 AI 全栈开发工具链,包括基于芯片的算子开发、模型开发与转换,AI 应用层开发等能力,让用户的算子、模型和应用最大限度的发挥出处理器的计算能力,又通过场景化的工具体验降低算子、模型、AI 应用的开发门槛。
攻克端、边、云协同难点,昇腾是如何助力全场景AI开发的?

Mind Studio 可提供面向 AI 算子开发、模型开发、应用开发的全栈全场景支持。算子开发上,支持 TBE 自定义算子、 支持 TBE 自定义算子插件开发、支持语法的智能纠错和代码自动补全;模型开发支持离线模型转换、支持模型算子精度比对、支持模型整网性能 profiling 分析、支持网络模型的可视化;应用开发支持 AI 应用开发与调试、支持代码框架自动生成、支持推理结果图形化展示、支持全系统调优。
攻克端、边、云协同难点,昇腾是如何助力全场景AI开发的?

Mind Studio 集成开发环境,可用于仿真形态下模型运行流程编排开发和 TBE 算子开发。开发者可以创建深度学习应用,例如基于 Fasterrcnn 的图像检测应用。如果有不支持的算子,可以通过 TBE 自定义算子,然后再把已经训练好的模型转换成昇腾 AI 处理器的模型。

模型开发支持当前业界主流框架 Tensorflow、Caffe 等,通过转换工具将模型转换成昇腾 AI 处理器的格式,来发挥出芯片的加速能力。算子比对功能可以通过与业界标准的模型对比,识别出模型算子的精度差异并优化。

在转换过程中,开发者还可以配置模型中的输入和输出节点,量化配置参数,图像预处理的参数,生成满足开发者输入要求的更高效的模型。
攻克端、边、云协同难点,昇腾是如何助力全场景AI开发的?

算子比对可以对已经生成的模型和基准的模型(如 Caffe 模型)进行算子的比对,比对的方式可以选择不同的算法,如 LowerBound 等。算子比对的结果可以发现出模型中各个算子计算结果的偏差,通过对偏差的大小设置,开发者可以快速定位出偏差较大的算子并进行优化。

解读 MindSpore 三大技术创新点

针对目前计算框架仍存在的开发门槛高、运行成本高、部署难度大等亟需解决的问题,以及在技术战和贸易战的压力下,华为在支持业界 AI 框架的基础上,自主研发了支持端、边、云独立和协同、统一的训练和推理框架——MindSpore。

同时,为了助力开发者与产业从容地应对人工智能时代带来的系统级挑战,华为还提出了新编程范式、执行模式与协作方式三点技术创新点:

1、新编程范式:实现 AI 算法即代码,打破模型开发技能需求高的挑战,降低了 AI 开发的门槛;

2、新执行模式:针对 AI 领域的计算复杂性和算力多样性的运行态挑战,通过 On-Device 的执行模式,来提升执行效率。

3、全场景按需协同:面对端、边、云三类应用场景需求与目标不同,通过统一的框架来实现按需协同。
攻克端、边、云协同难点,昇腾是如何助力全场景AI开发的?

基于三个技术创新点,MindSpore 的核心架构分为以下几层:部署态包括了按需协作分布式架构、调度、分布式部署、通信库等;往上是执行高效层(包括数据模型下沉),另外是并行的 Pipeline 执行层和深度图的优化,再上层有 MindSpore 原生的计算图表达。支持了自动微分、自动并行、自动调优的特性点,形成 AI 算法即代码、运行高效、部署态灵活的一体化。
攻克端、边、云协同难点,昇腾是如何助力全场景AI开发的?

新编程范式基于源码转换机制生成抽象语法树的思想,在接口层支持原生的 Python 编程和控制流表达,增强可编程性。在中间编译层复用编译器优化的能力进行代码优化,实现更高性能。在算子层利用算子自动生成,以及软硬件协同优化,简单代码便可自动化生成高性能算子。同时灵活的可视化接口与动静结合的框架, 整体达到易用、高效、易调试的效果。

在新执行模式上,MindSpore 有几项关键技术。第一项是通过面向处理器的深度图优化技术,最大化实现数据、计算与通信的并行度。第二项利用梯度数据驱动的自适应图切分优化,实现去中心化的调度。第三项是自动整图切分可按算子输入输出数据纬度切分整图。最后一项是集群拓扑感知调度,感知集群拓扑自动调度子图执行,实现最小通信开销。

新协作方式实现了统一架构下的端云协同训练和推理,避免硬件架构多样性导致的全场景下部署差异和不确定性,以及训练推理分离导致的模型孤立。

实现平稳迁移到鲲鹏的全流程

利用鲲鹏处理器与 Atlas 产品结合,可打造出高性能的 AI 解决方案。不过,由于鲲鹏平台和 x86 平台的架构存在差异,要想将 x86 平台上的软件在鲲鹏平台上运行,还需要对软件进行迁移,编译成可供鲲鹏平台识别的指令。
攻克端、边、云协同难点,昇腾是如何助力全场景AI开发的?

在整个软件迁移过程中,策略选择是非常重要的,能够直接影响后面软件迁移的工作量和迁移的可实行性。

对于 Java、Python 等解释性语言,可以通过部署运行环境来实现跨平台支持。而对于 C、C++、Go 等编译型语言,需要获取源码编译。开源的软件可通过源码重新编译来实现迁移;商用闭源软件,可选取其它可替代的软件进行迁移,也可选择与 x86 平台混合部署。

整个迁移过程需要经过以下几个步骤:

1、扫描:包括软件依赖库扫描、代码扫描、编译项扫描与兼容的软件白名单;

2、移植:包括代码移植和编译项移植;

3、优化:包括系统、应用、进程性能优化分析。
攻克端、边、云协同难点,昇腾是如何助力全场景AI开发的?

针对迁移的痛点,鲲鹏提供了对应的工具链。利用分析扫描工具( Dependency Advisor ),分析移植软件包依赖库和软件代码文件,评估可移植性与移植工作量,以此提升软件移植分析效率和准确率。代码迁移工具 (Porting Advisor) 可分析待移植软件的源码文件,给出代码移植指导报告,来准确定位代码修改点及指导修改。

性能优化工具 (Tuning Kit) 在软件运行状态下,通过采集系统数据,分析出系统性能指标,定位到瓶颈点并给出调优建议。在前面调优的基础上,还提供了 glibc 基础库与 HMPP 两种加速库,目前已优化 16 个最常用接口,整体上同比 benchmark 测试指标提升 4.16%,gzip 压缩库有 8% 的性能提升。

评论

发布