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. 【k8s】使用k8s部署一个简单的nginx服务

    名词解释 Namespace 表示命名空间 Deployment 表示pod发布 Service 表示多个pod做为一组的集合对外通过服务的表示 kubectl 是k8s的命令行操作命令,可以创建和更 ...

  2. UE4技术总结——委托

    UE4技术总结--委托 目录 UE4技术总结--委托 一.定义 二.用法 2.1 声明与调用委托 2.1.1 单播委托 2.1.1.a 声明 2.1.1.b 绑定 2.1.1.c 执行委托 2.1.1 ...

  3. 如何基于Jupyter notebook搭建Spark集群开发环境

    摘要:本文介绍如何基于Jupyter notebook搭建Spark集群开发环境. 本文分享自华为云社区<基于Jupyter Notebook 搭建Spark集群开发环境>,作者:apr鹏 ...

  4. Azure Devops实践(5)- 构建springboot项目打包docker镜像及容器化部署

    使用Azure Devops构建java springboot项目,创建镜像并容器化部署 1.创建一个springboot项目,我用现有的项目 目录结构如下,使用provider项目 在根目录下添加D ...

  5. 创建第一个Android项目

    目录 创建第一个Android项目 创建HelloWorld项目 选择模板 选择模板界面的英文翻译 配置项目 配置项目界面英文翻译及解释 配置项目界面的注意事项 Name的命名规范 Package n ...

  6. Kettle的安装及简单使用

    Kettle的安装及简单使用 目录 Kettle的安装及简单使用 一.kettle概述 二.kettle安装部署和使用 Windows下安装 案例1:MySQL to MySQL 案例2:使用作业执行 ...

  7. Coursera Deep Learning笔记 序列模型(一)循环序列模型[RNN GRU LSTM]

    参考1 参考2 参考3 1. 为什么选择序列模型 序列模型能够应用在许多领域,例如: 语音识别 音乐发生器 情感分类 DNA序列分析 机器翻译 视频动作识别 命名实体识别 这些序列模型都可以称作使用标 ...

  8. [no code][scrum meeting] Alpha 10

    项目 内容 会议时间 2020-04-16 会议主题 用户管理第一版交付 会议时长 15min 参会人员 PM+后端组成员 $( "#cnblogs_post_body" ).ca ...

  9. Photoshop教程,视频MP4格式转换为GIF格式

    转自百度问题 https://zhidao.baidu.com/question/1497485136643778259.html Adobe PhotoShop软件的最bai新du本是可以编辑视zh ...

  10. 21.7.1 test

    \(NOI\) 模拟赛 呜呜呜 \(\cdots\cdots\) \(T1\) 类似哈夫曼编码,虽然没学过但是我依然画出了二叉树,然后尝试树形dp,并且最后还抓住了一个优化!让我兴奋地以为自己能赛时A ...