PCon全球产品创新大会最新日程上线,查看更多 了解详情
写点什么

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

  • 2019 年 12 月 24 日
  • 本文字数:3047 字

    阅读完需:约 10 分钟

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

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


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


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

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



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


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


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


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


4、测试验收:最后进行功能测试、可靠性测试、可维护性与性能测试等验收测试,保证产品可商用。



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 应用的开发门槛。



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



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


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


在转换过程中,开发者还可以配置模型中的输入和输出节点,量化配置参数,图像预处理的参数,生成满足开发者输入要求的更高效的模型。



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


解读 MindSpore 三大技术创新点

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


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


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


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


3、全场景按需协同:面对端、边、云三类应用场景需求与目标不同,通过统一的框架来实现按需协同。



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



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


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


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


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

利用鲲鹏处理器与 Atlas 产品结合,可打造出高性能的 AI 解决方案。不过,由于鲲鹏平台和 x86 平台的架构存在差异,要想将 x86 平台上的软件在鲲鹏平台上运行,还需要对软件进行迁移,编译成可供鲲鹏平台识别的指令。



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


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


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


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


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


3、优化:包括系统、应用、进程性能优化分析。



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


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


2019 年 12 月 24 日 18:02821

评论

发布
暂无评论
发现更多内容

2021抖音面经分享:Java进阶核心知识集/算法刷题宝典(金三银四必备)

比伯

Java 编程 架构 面试 程序人生

科技强国梦的百度式注脚:扎根土壤、拥抱变局、眺望星空

脑极体

聊聊我对SCRM的理解

boshi

CRM 七日更

聊聊园区网中的专网架构

冯骐

运维 网络 VRF 虚拟路由表

翻译:《实用的Python编程》03_05_Main_module

codists

Python

(28DW-S8-Day13) 在线教育班型和角色

mtfelix

28天写作

2021程序员春招必备:Java面试知识点+答案(7大分类 5000字解析)

比伯

Java 编程 架构 面试 程序人生

项目汇报会复盘

Geek_XOXO

AI数学基础之:概率和上帝视角

程序那些事

人工智能 AI 程序那些事 概率论

MySQL数据库DDL、DML详解

若尘

MySQL

Kubectl Plugin 推荐(一)| 可观测性篇

郭旭东

kubectl kubectl plugin

Elasticsearch Index Management 索引管理

escray

elastic 七日更 28天写作 死磕Elasticsearch 60天通过Elastic认证考试 3月日更

Elasticsearch Analyzer 分词器

escray

elastic 七日更 28天写作 死磕Elasticsearch 60天通过Elastic认证考试 3月日更

windows 搭建ftp服务

xiezhr

vsftpd ftp ftp服务 文件服务 3月日更

程序员成长第十九篇:要不要转管理岗?

石云升

程序员 28天写作 职场经验 管理经验 3月日更

Nydia

三十而已

ES_her0

28天写作 3月日更

MySQL数据库的安装与使用

若尘

MySQL 数据库

Wireshark数据包分析学习笔记Day1

穿过生命散发芬芳

Wireshark 数据包分析 3月日更

Java的锁

并发编程

从JVM底层原理分析数值交换那些事

秦怀杂货店

JVM 交换数值

不知不觉不假思索——可供性

Justin

心理学 28天写作 游戏设计

笔记整理:技术架构涵盖内容和演变过程总结

小傅哥

Java 程序员 小傅哥 架构设计 架构图

【回溯算法】经典题:求目标和的组合方案 ...

宫水三叶的刷题日记

面试 LeetCode 数据结构与算法

dubbo 源码 v2.7 分析:通信过程及序列化协议

程序员架构进阶

架构 RPC 七日更 dubbo源码 3月日更

关于写作的一点小想法「Day 13」

道伟

28天写作

【管理笔记18】行销情报系统建立

俊毅

《精通比特币》学习笔记(第二章)

棉花糖

区块链 读书笔记

Kubelet从入门到放弃系列:GPU加持

DCOS

AI gpu Kubernetes 云原生

无线网络的用户隔离功能

工作三年,小胖问我:什么是生产者消费者模式?菜到抠脚!

JavaFish

Java 多线程 阻塞队列 生产者与消费者

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