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. MySQL初步学习——2021.09.27每日总结,第四周周一

    (1)今天做了什么: (2)明天准备做什么? (3)遇到的问题,如何解决? 今天学习了SQL语句的分类: SQL语句很多,分为 1.DQL:数据查询语言(凡是带有select关键字的都是查询语句) 2 ...

  2. 题解 ABC216H Random Robots

    link Solution 考虑一个不合法方案,它一定最后位置的逆序对数不为 \(0\),而且可以发现的是,存在对称方案使得最后逆序对数奇偶性不同,所以我们如果加上 \((-1)\)^{\sigma( ...

  3. FastAPI 学习之路(二十)接口文档配置相关

    系列文章: FastAPI 学习之路(一)fastapi--高性能web开发框架 FastAPI 学习之路(二) FastAPI 学习之路(三) FastAPI 学习之路(四) FastAPI 学习之 ...

  4. TCP三次握手四次挥手,通俗易懂版

    三次握手四次挥手 三次握手 其实很好理解,三次握手就是保证双手都有发送和接受的能力.那么最少三次才能验证完成 即----> 客户端发送---服务端收到----服务端发送-- 1.客户端发送 -- ...

  5. eclipse javase版安装插件开发web项目

    最近学习开发javaweb,但是安装的却是java se版的eclipse,但其无法新建web项目,即找不到Dynamic Web.所以需要下载相应插件.以下为操作过程. 1. 在联网的情况下,打开e ...

  6. Java:常用的容器小记

    Java:常用的容器小记 对 Java 中的 常用容器,做一个微不足道的小小小小记 容器类概述 常见容器主要包括 Collection 和 Map 两种,Collection 存储着对象的集合,而 M ...

  7. UltraSoft - Alpha - Scrum Meeting 5

    Date: Apr q9th, 2020. Scrum 情况汇报 进度情况 组员 负责 昨日进度 后两日任务 CookieLau PM 统筹个人进度,协助推进进度 辅助前后端连接工作 刘zh 前端 完 ...

  8. BUAA 2020 软件工程 个人博客作业

    BUAA 2020 软件工程 个人博客作业 Author: 17373051 郭骏 项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 个人博客作业 ...

  9. Noip模拟53 2021.9.14

    T1 ZYB和售货机 首先这道题有两种做法. 一种是发现每个点都可以先被取到只剩一个,只要收益大于$0$ 然后发现建一个$i->f[i]$的图时出现环,要把它去掉, 那么跑一个$tarjan$枚 ...

  10. 该如何有效的提高C/C++语言编程能力

    很多答案都谈到算法的重要性,我的答案主要集中在C++上,只是一些个人经验. 其实我以前也有这样的困惑,感觉完了不知道怎么用.而且我也不是学计算机的,也没有从事相关工作,所以大概有十年的时间都没写什么程 ...