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. js高阶

    1. 面向对象编程介绍 1.1 两大编程思想 --- 面向过程 --- 面向对象 1.2 面向过程编程 POP 面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候在一 ...

  2. 安全通信协议SSH应用与分析

    一.实验简介: 本次实验属于安全协议应用与分析系列 二 实验环境: Windows server 2003 server windows xp 做client 三.实验目的 通过该实验了解SSH服务器 ...

  3. 超详细的Eureka源码解析

    Eureka简介 Eureka是什么? Eureka是基于REST(Representational State Transfer)服务,主要以AWS云服务为支撑,提供服务发现并实现负载均衡和故障转移 ...

  4. CAD图DWG解析WebGIS可视化技术分析总结

    背景 AutoCAD是国际上著名的二维和三维CAD设计软件,用于二维绘图.详细绘制.设计文档和基本三维设计.现已经成为国际上广为流行的绘图工具..dwg文件格式成为二维绘图的事实标准格式. 但由于Au ...

  5. 步行(walk.cpp) noip模拟

    步行(walk.cpp) [题目描述] 小C喜欢步行,只有缓慢的步行,小C才能沉浸于其中,享受旅途中那些美好的瞬间. 小C来到了一座新的城市生活,这座城市可以看成 \(n\) 个点, \(n−1\) ...

  6. 内网渗透DC-4靶场通关

    个人博客:点我 DC系列共9个靶场,本次来试玩一下DC-4,只有一个flag,下载地址. 下载下来后是 .ova 格式,建议使用vitualbox进行搭建,vmware可能存在兼容性问题.靶场推荐使用 ...

  7. Convolutional Neural Network-week1编程题(TensorFlow实现手势数字识别)

    1. TensorFlow model import math import numpy as np import h5py import matplotlib.pyplot as plt impor ...

  8. Alpha阶段发布声明

    发布声明 Alpha 1.Alpha版本功能说明 功能列表和详情图 模块 功能 展示 首页 查看首页博文,搜索博文,可供未登录用户使用 动态 查看推荐动态给未登录用户使用,登录用户可以查看关注动态.我 ...

  9. BUAA软件工程个人作业-软件案例分析

    BUAA个人博客作业-软件案例分析 项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 软件案例分析 我在这个课程的目标是 学习开发软件的能力 这个作 ...

  10. Spring Cloud Alibaba 的服务注册与发现

    Spring Cloud Alibaba 服务发现例子 一.需求 1.提供者完成的功能 2.消费者完成的功能 3.可以附加的额外配置 二.实现步骤 1.总的依赖引入 2.服务提供者和发现者,引入服务发 ...