【华为昇腾】 序言:从昇腾AI软硬件平台聊起
2021年是很值得纪念的一年,从上半年开始跟随导师编写有关华为昇腾软件栈CANN的教材,一年的时间反复迭代 终于快要出版了。
这一系列博客可以视作我从编者的角度,重新梳理的全书思路。明年入职商汤之后要做国产化相关的工作,还是要跟华为昇腾打交道,把脑中的知识记录下来以备将来使用。
打开昇腾的官网,就能看到这张昇腾AI的全景图。华为的大战略始终做得很好,真正意义上的全链路自主可控。
自底向上的看,共包括以下六个部分:
- 硬件层:最底层是华为开发的昇腾AI处理器,训练芯片Ascend 910和推理芯片Ascend 310,这两款芯片都采用了华为原创的达芬奇架构(Davinci)。基于这两种芯片 华为包装推出了一系列硬件产品
- 如我们常用的训练服务器 Atlas 800(型号9000),一台机器上装配了8个Ascend910。
- 再比如我们常常使用Atlas 200DK开发板来做一些小demo,一个200DK当中包括了1个Ascend310。
- Atlas系列的产品还有很多,比如常用于端侧场景的Atlas500智能小站,再比如常用作超算中心的Atlas 900,他们底层的算力都是昇腾系列的两款芯片。
- 昇腾系列的芯片还有面向自动驾驶的昇腾610,但始终未正式对外发布。与另两款相比,710的规格、执行流深度、算子编译指令等方面都不相同,也鲜有相关产品可供使用,故下文所有介绍都基于310和910展开。
- 软件层:“软硬件协同设计”是AI行业内的美好愿景,昇腾软件栈CANN也背负着最大程度上发挥硬件计算能力的使命,CANN的全称为昇腾神经网络计算架构(Compute Architecture for Neural Networks)。他的本质是Driver + Lib + Compiler
- 从统一异构的角度看,CANN对用户屏蔽了不同芯片上的硬件差异,用户无需关注硬件上的具体实现,学习 CANN提供的统一编程接口AscendCL 就可以直接进行推理开发。
- 从训练框架的角度看,CANN支持TF、Pytorch、MindSpore等主流框架,它通过框架适配插件(Adapter)和AscendIR中间表示隔离了上层框架的差异。
- 从编译执行的角度看,CANN将上层框架提供的计算图和训练任务转化为可执行在硬件上的具体指令。这过程中包括了计算图的编译、算子的融合优化、数据流的处理与、任务调度和运行时管理等等。
- 从组件库lib的角度看,CANN维护了高性能算子库来保障训练过程的高效。用户也可以通过DSL或TIK的方式进行自定义算子的开发。
- 而从架构本身的角度看,CANN被自顶向下的拆分为了 昇腾计算语言接口、服务层、编译层、执行层、基础层,后续将会展开介绍。
- 框架层:深度学习框架是重要的AI基础设施,它提供的功能主要包括三个:统一的API接口、自动微分和调度优化。这三者也对应了衡量深度学习框架的三个指标:表达能力、易用性和性能。
- 华为推出了深度学习框架MindSpore,采用基于源码转换的自动微分机制、基于IR的编译优化和基于张量重排布的自动并行,具有较好的框架能力。
- 从组件的角度看,MindSpore的许多能力其实与CANN内部的能力是相同的,只是展开的视角不同,作用域也不同。同样是Runtime,Mindspore就需要考虑在gpu cpu npu等多硬件后端执行的情况。
- 从使用的角度看,MindSpore还提供了动静态图快速转换(通过set_context切换)和小的优化feature(如二阶优化)。
- MindSpore也积极探索了一些前沿的框架能力,例如可以增强模型可信度并实现隐私保护的mindArmour、实现服务化部署的mindspore serving等等。
- 昇腾软硬件体系也兼容pytorch tensorflow等第三方框架,经过迁移后可将脚本执行在昇腾芯片上。
- 应用层:AI产业的进一步发展需要综合考虑其商业模式,标准化是行业发展的下一重点。除了从技术测对软硬件体系进行标准化,作为一个解决方案提供商,如何将算法服务标准化、工作流程标准化、基础平台标准化,才是真正让AI赋能百业的核心。
- 算法服务标准化:一方面提供官方的开源代码仓库modelzoo,其中包含模型脚本和预训练模型;另一方面直接提供封装好的mindx sdk,提供特定场景下的标准化服务。此外HiAI Service提供了适用于端侧场景的服务平台,通过调用API来使用AI能力。
- 工作流程标准化:AI更多的是一种技术 而非产业,客户场景也多是长尾场景。将AI算法的生产流程进行标准化,让用户自行完成数据处理、模型开发训练 部署、运维的全流程,或许是AI公司摆脱外包公司定位的关键路径。华为也提供了modelarts一站式AI开发平台来满足企业用户的需求。
- 基础平台标准化:算力机器如果不能被很好的组织会造成巨大的资源浪费。华为提供的MindX DL提供了基于k8s的昇腾设备管理机制和集群调度机制,MindX Edge提供了容器式部署和边缘节点管理的能力。分别从训练和推理的场景进行基础资源平台的标准化建设。
- 工具层:软件层、框架层和应用层其实也对应着昇腾软硬件体系的三个主要使用场景:算子开发、模型开发、应用开发。围绕着这三个场景,华为推出了一系列的生态工具并集成到了统一的IDE中,取名为MindStudio
- mindstudio是基于IntelliJ的IDE工具,提供了高亮、代码补全、自动提示等常见IDE功能
- 针对训练场景提供了 脚本自动迁移、精度比对、性能调优、模型转化、模型量化、训练可视化 等多种辅助工具;
- 针对算子开发提供了 Cube算子自动调优、仿真调试调优等自动能力。
- 针对应用开发场景,MindStudio联合FusionDirector、SmartKit等工具,实现了部署场景的协同管控,能够进行实时的模型部署、设备管理、日志采集等能力。
- 行业应用层:一切不能赚钱的产品都是在耍流氓,全套的软硬件平台需要落到垂直行业企业客户的实际场景中才能真正的验证价值。
- 华为目前做的主要还是toG和to大B的项目,除了远近闻名的“彭城云脑Ⅱ”超算中心,华为主打的三个解决方案集中在智慧能源、智慧交通和智慧工业三个场景,还是很有想象空间的。
研究生阶段始终受华为糟糕的用户体验摧残,但我也不得不倾佩华为的战略高度和全局建设能力。
自从特斯拉的Andrej Karpathy提出 软件2.0 以来,国内外就未停止过炒作和质疑。我们期待着AI Everywhere,我们也期待着AI模型服务能融入到微服务体系架构中,甚至期待产生出 以数据为驱动的下一代软件工程和编程方式。
提前备好粮食和弹药,撑住即将到来的AI寒冬,期待那一天的到来。
E-mail:hithongming@163.com