2021年是很值得纪念的一年,从上半年开始跟随导师编写有关华为昇腾软件栈CANN的教材,一年的时间反复迭代 终于快要出版了。

这一系列博客可以视作我从编者的角度,重新梳理的全书思路。明年入职商汤之后要做国产化相关的工作,还是要跟华为昇腾打交道,把脑中的知识记录下来以备将来使用。

  打开昇腾的官网,就能看到这张昇腾AI的全景图。华为的大战略始终做得很好,真正意义上的全链路自主可控。

自底向上的看,共包括以下六个部分:

  • 硬件层:最底层是华为开发的昇腾AI处理器,训练芯片Ascend 910和推理芯片Ascend 310,这两款芯片都采用了华为原创的达芬奇架构(Davinci)。基于这两种芯片 华为包装推出了一系列硬件产品

    • 如我们常用的训练服务器 Atlas 800(型号9000),一台机器上装配了8个Ascend910。
    • 再比如我们常常使用Atlas 200DK开发板来做一些小demo,一个200DK当中包括了1个Ascend310。
    • Atlas系列的产品还有很多,比如常用于端侧场景的Atlas500智能小站,再比如常用作超算中心的Atlas 900,他们底层的算力都是昇腾系列的两款芯片。
    • 昇腾系列的芯片还有一个昇腾710,但始终未正式对外发布。与另两款相比,710的规格、执行流深度、算子编译指令等方面都不相同,也鲜有相关产品可供使用,故下文所有介绍都基于310和910展开。
  • 软件层:“软硬件协同设计”是AI行业内的美好愿景,昇腾软件栈CANN也背负着最大程度上发挥硬件计算能力的使命,CANN的全称为昇腾神经网络计算架构(Compute Architecture for Neural Networks)
    • 从框架的角度看,CANN支持TF、Pytorch、MindSpore等主流框架,它通过框架适配插件(Adapter)和AscendIR中间表示隔离了上层框架的差异。
    • 从硬件的角度看,CANN对用户屏蔽了不同芯片上的硬件差异,用户也无需关注硬件上的具体实现,学习使用CANN提供的统一编程接口AscendCL直接进行推理开发。
    • 从执行的角度看,CANN将上层框架提供的计算图和训练任务转化为可执行在硬件上的具体指令。这过程中包括了对计算图的编译和融合优化、数据流的处理与管理、任务的调度和运行时管理等等。
    • 从组件的角度看,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寒冬,期待那一天的到来。

【华为昇腾】 序言:从昇腾AI软硬件平台聊起的更多相关文章

  1. 昇腾AI 软硬件全栈平台

    昇腾AI 软硬件全栈平台

  2. 华为高级研究员谢凌曦:下一代AI将走向何方?盘古大模型探路之旅

    摘要:为了更深入理解千亿参数的盘古大模型,华为云社区采访到了华为云EI盘古团队高级研究员谢凌曦.谢博士以非常通俗的方式为我们娓娓道来了盘古大模型研发的"前世今生",以及它背后的艰难 ...

  3. 百度AI开发平台简介

    AIstudio https://aistudio.baidu.com/aistudio/index 关于AI Studio AI Studio是基于百度深度学习平台飞桨的一站式AI开发平台,提供在线 ...

  4. 端云协同,打造更易用的AI计算平台

    内容来源:华为开发者大会2021 HMS Core 6 AI技术论坛,主题演讲<端云协同,HUAWEI HiAI Foundation打造更易用的AI计算平台>. 演讲嘉宾:华为海思AI技 ...

  5. 百度AI开放平台- API实战调用

    百度AI开放平台- API实战调用 一.      前言 首先说一下项目需求. 两个用户,分别上传了两段不同的文字,要计算两段文字相似度有多少,匹配数据库中的符合条件的数据,初步估计列出来会有60-1 ...

  6. 基于百度AI开放平台的人脸识别及语音合成

    基于百度AI的人脸识别及语音合成课题 课题需求 (1)人脸识别 在Web界面上传人的照片,后台使用Java技术接收图片,然后对图片进行解码,调用云平台接口识别人脸特征,接收平台返回的人员年龄.性别.颜 ...

  7. 腾讯AI开放平台的使用

    一.腾讯AI开放平台 https://ai.qq.com/ 二.腾讯AI平台支持的功能 三.签名机制 1.计算步骤 用于计算签名的参数在不同接口之间会有差异,但算法过程固定如下4个步骤. 1.将< ...

  8. java通过百度AI开发平台提取身份证图片中的文字信息

    废话不多说,直接上代码... IdCardDemo.java package com.wulss.baidubce; import java.io.BufferedReader; import jav ...

  9. 腾讯AI开放平台的接口调用指南

    最近无意发现腾讯AI开放平台上提供了大量好玩的人工智能云服务,而且是完全免费的.只需要用QQ号登录即可.这么好的东西,作为一个程序员,当然要试试了! 从上图可以看出腾讯AI开放平台提供的人工智能服务主 ...

随机推荐

  1. Mac里存储空间不足,该怎么删垃圾数据?

    说明:在mac设备运行一段时间后,电脑空间很小了,对于开发者来说,清清Xcode缓存,腾出几十G的空间还是有可能的.在升级Xcode适配新系统.新手机也是得给电脑减减压. 一.Xcode缓存文件(co ...

  2. netty系列之:使用netty搭建websocket客户端

    目录 简介 浏览器客户端 netty对websocket客户端的支持 WebSocketClientHandshaker WebSocketClientCompressionHandler netty ...

  3. 算法——快速排序迭代式和递归式的Java实现

    快速排序迭代式和递归式的Java实现 快速排序基于分治法的思想,在待排序表中任选一值作为中枢值 pivot,一趟快排将所有大于该值的元素置于一边,小于该值的元素置于另一边,这样一个元素在排序中的最终位 ...

  4. 使用 grpcurl 通过命令行访问 gRPC 服务

    原文链接: 使用 grpcurl 通过命令行访问 gRPC 服务 一般情况下测试 gRPC 服务,都是通过客户端来直接请求服务端.如果客户端还没准备好的话,也可以使用 BloomRPC 这样的 GUI ...

  5. Spring Boot引入Swagger并对界面进行美化

    Swagger是一个接口文档生成工具,在前后端分离的开发中经常会用到,下面就来介绍下Swagger的使用: 引入依赖 <dependency> <groupId>io.spri ...

  6. 关于十二生肖的数学发现(C++)

    把数字看成是年份,然后根据生肖赋值.这里把鼠年赋值为1,牛年赋值为2,虎年赋值为3,兔年赋值为4,龙年赋值为5,蛇年赋值为6,马年赋值为7,羊年赋值为8,猴年赋值为9,鸡年赋值为10,狗年赋值为11, ...

  7. DFS与BFS题解:[kaungbin]带你飞 简单搜索 解题报告

    DFS and  BFS 在解题前我们还是大致讲一下dfs与bfs的.(我感觉我不会bfs) 1.DFS dfs(深度优先算法) 正如其名,dfs是相当的深度,不走到最深处绝不回头的那种. 深度优先搜 ...

  8. 学大数据一定要会Java开发吗?

    Java是目前使用广泛的编程语言之一,具有的众多特性,特别适合作为大数据应用的开发语言.Java语言功能强大和简单易用,不仅吸收了C++语言的各种优点还摒弃了C++里难以理解的多继承.指针等概念. J ...

  9. linux性能优化基础——iommu相关配置

    此篇文档介绍了IOMMU相关的信息: https://blog.chaosjohn.com/Check-VT-D-or-IOMMU-under-Linux.html iommu和vt-d都是io半虚拟 ...

  10. vue3.x自定义组件双向数据绑定v-model

    vue2.x 语法 在 2.x 中,在组件上使用 v-model 相当于绑定 value prop 并触发 input 事件: <ChildComponent v-model="pag ...