【AI系统】AI系统架构的组成

news2024/11/20 9:31:58

AI 系统组成

如图所示,大致可以将 AI 系统分为以下几个具体的方向:

AI 训练与推理框架

AI 框架不仅仅是指如 PyTorch 等训练框架,还包括推理框架。其负责提供用户前端的 AI 编程语言,接口和工具链。负责静态程序分析与计算图构建,编译优化等工作。AI 框架本身通过提供供用户编程的 API 获取用户表达的模型,数据读取等意图,在静态程序分析阶段完成尽可能的自动前向计算图构建,自动求导补全反向传播计算图,计算图整体编译优化,算子内循环编译优化等。

这一层尽可能让用户表达目标任务与 AI 算法,尽量少让用户关注底层实现(例如到底 AI 框架的实现是通过声明式编程方式还是命令式编程方式)是提升开发体验的较好的手段,但是过度的抽象会丧失灵活性的表达,在模型发展较快迭代频繁的时期用户还需要体验层兼顾灵活性和可调试性。开发体验层会调用编排底层框架的接口提供更加简洁的用户开发体验。包括并不限于以下领域:

  • 网络模型构建:卷积神经网络 CNN、循环神经网络 RNN、Transformer 结构等,包括 if else 控制流等基本结构和算子支持与实现的 API。语言的基本语法和框架的 API 接口提供基本算子的支持。当前主要以使用 Python 语言内嵌调用 AI 框架的方式进行网络模型的开发,但是也出现控制流在原生语言层与模型中间表达割裂等问题。
  • 模型算法实现:算法一般被封装为 AI 框架的配置或 API 供用户选择,有些 AI 框架也提供拦截接口给用户一定程度灵活性定制自定义算法。模型算法实现与网络模型结构构件还是有着明显的区别,例如网络模型构建只提供模型层面的构建,但是 AI 的算法实现流程如到底是训练还是推理,是实现强化学习、监督学习还是无监督学习等,属于模型算法的实现过程,只是其中内部的算法模型结构的构建属于网络模型部分。
  • 计算图构建:静态计算图、动态计算图构建等。不同的 AI 框架类型决定了其使用静态还是动态图进行构建,静态图有利于获取更多信息做全图优化,动态图有利于调试,目前实际处于一个融合的状态,如 PyTorch2.X 版本后推出 Dynamo 特性支持原生静态图。
  • 自动求导:高效地对网络模型自动求导等。由于网络模型中大部分算子较为通用,AI 框架提前封装好算子的自动求导函数,待用户触发训练过程自动透明的进行全模型的自动求导,以支持梯度下降等训练算法需要的权重梯度数据的获取。
  • 中间表达构建:多层次中间表达等。通过构建网络模型的中间表达及多层中间表达,让模型本身可以更好的被下层 AI 编译器编译生成高效的后端代码。
  • 流水线和工作流支持:流水线和工作流是实现模块解耦复用,可视化编程的前提,通过复用与可视化编程可以大幅降低组织内作业书写的门槛,如高性能数据加载器等。
  • 工具链: 如模型在不同硬件的迁移、在不同框架的迁移、模型转换、调试、可视化、类型系统等。就像传统的软件工程中调试器,可视化,类型系统等工具链的支撑,让整个开发过程中,跨平台,跨平台,问题诊断,缺陷验证等得以高效实现,目前 AI 系统领域也不断有类似工具产生,以支持整个 AI 工程化实践。
  • 生命周期管理:数据读取,训练与推理等流程开发与管理。机器学习领域的 DevOps 也就是 MLOps 的基础工具支持。其可以让重复模块被复用,同时让底层工具有精确的信息进行模块间的调度与多任务的优化,同时让各个环节模块化解耦,独立和更为快速的演进。

AI 编译与计算架构

AI 框架充分赋能深度学习领域,为 AI 算法的开发者提供了极大便利。早期的 AI 框架主要应用于学术界,如 Theano、torch 等,随着深度学习的快速发展以及在工业界的不断拓展,不断有新的 AI 框架被提出以满足不同场景的应用。

但是随着 AI 技术应用的全面发展,各厂家根据自身业务场景的需求,在 AI 硬件和算法上不断优化和探索,AI 系统的体系结构越来越复杂,更多新的 AI 加速芯片被提出来,其设计变得更加多样化,AI 框架运行的硬件环境和算法也趋于更多样和复杂,单一 AI 框架已经无法满足和平衡所有特性。所以,为了提供不同框架和硬件体系结构之间的迁移性,ONNX 等中间 IR 被提出,其定义了表示神经网络模型的统一格式,以促进不同 AI 框架之间的模型转换。

为了实现硬件的多样性,需要将神经网络模型计算映射到不同架构的硬件中执行。在通用硬件上,高度优化的线性代数库为神经网络模型计算提供了基础加速库。此外,大多数硬件供应商还发布了专属的神经网络模型计算优化库,如:MKL-DNN 和 cuDNN 等,但基于基础加速库的优化往往落后于深度学习算法模型的更新,且大多数情况下需要针对不同的平台进行定制化的开发。

为了解决多硬件平台上的性能优化的问题,多种 AI 编译器被提出并得到了普及和应用,比如:TVM ,Glow,XLA 和 Jittor 等。AI 编译器以神经网络模型作为输入,将 AI 计算任务通过一层或多层中间表达 IR 进行翻译和优化,最后转化为目标硬件上可执行的代码,与传统的编译器(LLVM)类似,AI 编译器也采用前端、中间表示和后端分层设计的方式。

目前,业界主流的芯片公司和大型互联网公司等都在 AI 编译器进行了大量的投入来推进相关技术的发展。与传统编译器相比,AI 编译器是一个领域特定的编译器,有四个明显的特征:

  • 主前端语言:与传统编译器不同,AI 编译器通常不需要 Lexer/Parser,而是基于前端高级编程语言(如 Python)的 AST 将神经网络模型解析并构造为计算图 IR,侧重于保留 shape、layout 等张量计算特征信息,当然部分编译器还能保留控制流的信息。其中 Python 主要是以动态解释器为执行方式。
  • 多层 IR 设计:多层 IR 设计,为的是满足易用性与高性能这两种类型需求:1)为了让开发者使用方便,AI 框架会尽量对张量的计算进行抽象封装成具体的 API 或者函数,算法开发者只要关注神网络模型定义上的逻辑意义模型和算子;2)在底层算子性能优化时,可以打破算子的边界,从更细粒度的循环调度等维度,结合不同的硬件特点完成优化。
  • 面向神经网络优化:面向神经网络模型特殊的数据类型进行定义。AI 领域,网络模型层的具体计算被抽象成张量的计算,这就意味着 AI 编译器中主要处理的数据类型也是张量。而在反向传播过程中,是深度学习最为具有有代表的特性,基于计算图构建的网络模型,需要具有自动微分功能。
  • DSA 芯片架构支持:AI 训练和推理对性能和时延都非常敏感,所以大量使用专用的 AI 加速芯片进行计算,而 AI 编译器其实是以 DSA 架构的 AI 加速芯片作为为中心的编译器,这也是区别于通用编译器的一个特征。

AI 编译与计算架构负责 AI 模型在真正运行前的编译和系统运行时的动态调度与优化。当获取的网络模型计算图部署于单卡、多卡甚至是分布式 AI 集群的环境,运行期的框架需要对整体的计算图按照执行顺序调度算子与任务的执行、多路复用资源,做好内存等资源的分配与释放。包括并不限于以下部分:

  • 编译优化:如算子融合等。编译器根据算子的语义或者 IR 定义,对适合进行算子融合(多个算子和并为一个算子)的算子进行合并,降低内核启动与访存代价。同时 AI 编译器还支持循环优化等类似传统编译器的优化策略和面向深度学习的优化策略(如牺牲一定精度的计算图等价代换等)。
  • 优化器:运行时即时(Just-in-Time)优化,内省(Introspective)优化等。运行时根据硬件,隐藏的软件栈信息,数据分布等只能运行时所获取的信息,进一步对模型进行优化。
  • 调度与执行:调度优算子并行与调度,执行有单线程和多线程执行等。调度方面根据 NPU 提供的软件栈和硬件调度策略,以及模型的算子间并行机会,进行类装箱的并行调度。另外再算子执行过程中,如果特定 NPU 没有做过多的运行时调度与干预,框架可以设计高效的运行时算子内的线程调度策略。
  • 硬件接口抽象:GPU、NPU、TPU、CPU、FPGA 和 ASIC 等硬件的接口抽象。统一的硬件接口抽象可以复用编译优化策略,让优化方案与具体底层的 AI 硬件设备和 AI 体系结构适当解耦。

AI 硬件与体系结构

负责程序的真正执行、互联与加速。在更广的层面,作业与作业间需要平台提供调度,运行期资源分配与环境隔离。包括并不限于以下部分:

  • 资源池化管理与调度:异构资源集群管理等。将服务器资源池化,通过高效的调度器结合深度学习作业特点和异构硬件拓扑进行高效调度,这方面在对于云资源管理和云化较为重要。
  • 可扩展的网络栈:RDMA,InifiBand,NVLink 等。提供更高效的加速器到加速器的互联(例如 NVLink、NVSwitch 等)提供更高的网络带宽,更灵活的通信原语与高效的通信聚合算法(例如 AllReduce 算法)。

虽然 AI 系统在总的方向上分为开发体验层、框架层、编译与运行时和硬件体系结构和 AI 芯片 4 层结构。但是我们将在后续章节中,将会围绕核心系统软硬件,如 AI 训练和推理框架,AI 编译器,AI 芯片,部分涉及更广泛的 AI 系统生态中的重要内容如算法等展开介绍。

AI 系统生态

除了以上重要的 AI 系统构成之外,随着人工智能应用越来越广泛,我们还可以看到更广泛的 AI 系统生态的构成。其中包含以下领域:

核心系统软硬件

通过核心系统软硬件,底层的基础架构已经可以给上层提供算力,存储,网络等资源池,可以按需给需要执行的深度学习作业隔离出指定规格的资源,执行深度学习作业,类似传统操作系统已经完成底层硬件的抽象与资源隔离,只需要用户的应用提交到系统中被执行和管理。

  • 深度学习任务运行和优化环境:提供更高的运行时性能,资源隔离与调度。当深度学习作业启动,AI 框架或运行时提供更好的算子与任务调度,内存管理,I/O 管理,甚至未来随着作业愈发复杂,提供作业的多路复用(Multiplexing)等支持,打破设备商运行时库封装的局限性。
  • 通用资源管理和调度系统:提供更公平,高效率和稳定的平台支持。性能并不是系统设计本身的唯一考虑因素,在多租环境,还要兼顾公平,效率和稳定性,为用户提供更加可靠好用的平台。
  • 新型硬件及相关高性能网络和计算栈:随着加速器技术不断发展,网络互连技术提供更高的带宽,硬件层提供更高的算力与带宽支持模型训练与推理。系统需要更加灵活的支持在不同的硬件和规格假设下,不同作业如何静态与动态结合的自动优化与高性能执行。同时由于硬件的发展趋势不同,潜在可能会让性能瓶颈产生变化,系统设计较早判断并对应设计会产生新的系统设计机会。

AI 算法和框架

通过深度学习算法与框架,用户可以表达模型设计和训练配置等需求,就像给提供了一套特定领域的“编程语言”,并且提供了相应的编译器及工具链可以翻译成运行时软硬件环境可以执行的指令。

  • 广泛用途的高效新型通用 AI 算法:提供更多样的模型支持,推进和支持模型效果的提升。支持新的算子(例如,控制流等),更加灵活的模型结构(例如,图模型等),模型的融合(例如,多专家系统等)支持。
  • 多种 AI 框架的支持与进化:由于多种框架与工具的存在,如何为用户提供更多样的框架的统一支持与优化对提升用户体验,复用已有代码有很强的实用价值。
  • 神经网络编译架构及优化:在编译期,通过静态分析与优化的方法,提供更优化的编译支持,提升模型的性能,正确性等。类似传统编译器,网络模型的计算图可以通过融合等手段优化,算子内可以应用大量循环优化。同时面向网络模型本身的特点,也逐渐有工作利用一些等价和非等价计算图转换进行优化。

更广泛生态

随着深度学习高速发展,更大的搜索空间,运行时才能获取的数据,模型安全与隐私,部署推理的多样化需求变得日益迫切,我们需要考虑除训练以外更多的 AI 系统问题。

  • 机器学习新模式(如强化学习):提供新训练范式的灵活执行,部署与同步支持等。由于训练数据可能需要以与环境交互的过程中才能获取,造成需要通过强化学习等新的训练范式进行模型训练,需要设计新的系统以支持灵活的训练范式。
  • 自动机器学习(如自动化机器学习):当用户想试错(Trial And Error)的搜索空间达到一定量级,用户通过自动化机器学习工具与算法可以更高效的进行模型的探索与训练。自动化机器学习系统可以提供多任务的高效管理与调度支持,支持搜索空间定义的程序语言等。
  • 安全(Security)与隐私(Privacy):数据与模型,类似传统的信息安全要保护的数据与程序,除了数据本身,模型类似传统程序本身的安全与隐私问题提出了新的挑战。我们需要思考神经网络模型与应用的安全与隐私保护支持。
  • 模型推理、压缩与优化:如果不需要训练,只需要执行前向传播过程,则是用户开始使用模型进行推理,基于深度学习特有性质进行高效的模型部署推理是除训练外很重要的系统问题。模型推理相比训练有更低的延迟要求,更严苛的资源供给,不需要求解梯度和训练,有更低的精度要求等,如何设计面向推理的系统提出了新的机会。同时网络模型本身可以通过模型压缩,量化等手段精简计算量与内存消耗,加速模型的部署。

如果您想了解更多AI知识,与AI专业人士交流,请立即访问昇腾社区官方网站https://www.hiascend.com/或者深入研读《AI系统:原理与架构》一书,这里汇聚了海量的AI学习资源和实践课程,为您的AI技术成长提供强劲动力。不仅如此,您还有机会投身于全国昇腾AI创新大赛和昇腾AI开发者创享日等盛事,发现AI世界的无限奥秘~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2243958.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

竞赛思享会 | 2024年第十届数维杯国际数学建模挑战赛D题【代码+演示】

Hello,这里是Easy数模!以下idea仅供参考,无偿分享! 题目背景 本题旨在通过对中国特定城市的房产、人口、经济、服务设施等数据进行分析,评估其在应对人口老龄化、负增长趋势和极端气候事件中的韧性与可持续发展能力。…

机器学习基础07

目录 1.逻辑回归 1.1原理 1.2API 2.K-Means 2.1算法过程 2.2API 3.SVM(支持向量机) 3.1算法原理​ 3.2API 1.逻辑回归 逻辑回归(Logistic Regression)是机器学习中的一种分类模型,逻辑回归是一种分类算法。 1.1原理 逻辑回归的输…

基于python的在线投票系统小程序u9t2g.

目录 项目介绍开发技术具体实现截图微信开发者工具介绍技术路线开发语言以及框架介绍python-flask核心代码部分展示python-django核心代码部分展示详细视频演示源码获取 项目介绍 投票系统用户端是基于微信小程序,管理员端是基于web网页端, &#xff0c…

android 使用MediaPlayer实现音乐播放--权限请求

在Android应用中,获取本地音乐文件的权限是实现音乐扫描功能的关键步骤之一。随着Android版本的不断更新,从Android 6.0(API级别23)开始,应用需要动态请求权限,而到了android 13以上需要的权限又做了进一步…

向量数据库FAISS之五:原理(LSH、PQ、HNSW、IVF)

1.Locality Sensitive Hashing (LSH) 使用 Shingling MinHashing 进行查找 左侧是字典,右侧是 LSH。目的是把足够相似的索引放在同一个桶内。 LSH 有很多的版本,很灵活,这里先介绍第一个版本,也是原始版本 Shingling one-hot …

【SQL】E-R模型(实体-联系模型)

目录 一、介绍 1、实体集 定义和性质 属性 E-R图表示 2. 联系集 定义和性质 属性 E-R图表示 一、介绍 实体-联系数据模型(E-R数据模型)被开发来方便数据库的设计,它是通过允许定义代表数据库全局逻辑结构的企业模式&#xf…

SIMCom芯讯通A7680C在线升级:FTP升级成功;http升级腾讯云对象储存的文件失败;http升级私有服务器的文件成功

从事嵌入式单片机的工作算是符合我个人兴趣爱好的,当面对一个新的芯片我即想把芯片尽快搞懂完成项目赚钱,也想着能够把自己遇到的坑和注意事项记录下来,即方便自己后面查阅也可以分享给大家,这是一种冲动,但是这个或许并不是原厂希望的,尽管这样有可能会牺牲一些时间也有哪天原…

如何理解岭回归模型?(python)

1 何为岭回归? 岭参数k不是唯一确定的,其估计的回归系数是一个估计族。 2 何为岭迹分析? 1)定义 2)作用 k值的选取原则: 如下图所示,当kk0时,各回归系数的估计值基本都能相对稳…

Prometheus结合K8s(二)使用

上一篇介绍了如何搭建 Prometheus结合K8s(一)搭建-CSDN博客,这章介绍使用 页面访问 kubectl get svc -n prom 看promeheus和granfana的端口访问页面 Prometheus 点击status—target,可以看到metrics的数据来源,即各…

泷羽sec学习打卡-云技术基础2-捕获照片

声明 学习视频来自B站UP主 泷羽sec,如涉及侵权马上删除文章 笔记的只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负 关于云技术基础的那些事儿-捕获帅照 搭建网站的前提有哪些?搭建网站的流程有哪些&#xff1f…

常见的水位检测传感器及其特点

常见的水位检测传感器及其特点: 1. 浮球液位传感器: - 工作原理:利用浮力,使浮子上升,通过判断浮子上升来判断水位 -优点:便宜简单 - 缺点:精确度低,应用环境受限。靠液体的浮力…

Flink Lookup Join(维表 Join)

Lookup Join 定义(支持 Batch\Streaming) Lookup Join 其实就是维表 Join,比如拿离线数仓来说,常常会有用户画像,设备画像等数据,而对应到实时数仓场景中,这种实时获取外部缓存的 Join 就叫做维…

Azure Kubernetes Service (AKS)资源优化策略

针对Azure Kubernetes Service (AKS)的资源优化策略,可以从多个维度进行考虑和实施,以提升集群的性能、效率和资源利用率。以下是一些关键的优化策略: 一、 Pod资源请求和限制 设置Pod请求和限制:在YAML清单中为所有Pod设置CPU和…

RabbitMQ1:初识MQ

欢迎来到“雪碧聊技术”CSDN博客! 在这里,您将踏入一个专注于Java开发技术的知识殿堂。无论您是Java编程的初学者,还是具有一定经验的开发者,相信我的博客都能为您提供宝贵的学习资源和实用技巧。作为您的技术向导,我将…

AI 提示词(Prompt)入门 十:最佳实践|详细询问,提供细节!

1、原则解释 当与 ChatGPT 交流时,提供具体和详细的信息非常重要。 这样做可以帮助 ChatGPT 更准确地理解你的需求和上下文,从而生成更相关和有用的回答 明确的信息可以包括具体的问题背景、相关领域的说明、你所期望的答案类型等。 2、如何实践 明…

实验十三 生态安全评价

1 背景及目的 生态安全是生态系统完整性和健康性的整体反映,完整健康的生态系统具有调节气候净化污染、涵养水源、保持水土、防风固沙、减轻灾害、保护生物多样性等功能。维护生态安全对于人类生产、生活、健康及可持续发展至关重要。随着城市化进程的不断推进&…

怎样实现跨部门和跨地区的数据共享?

随着企业规模的扩大和业务的多样化,不同部门和地区之间的数据共享变得越来越重要。实时数据同步作为保证数据准确性和完整性的重要手段,被广泛应用于各行各业。那不同部门和不同地区怎么实现共享数据呢? 一、前期数据准备 前期数据上需要建…

国家工信安全中心:公共数据授权运营平台技术要求(附下载)

2023年11月23日,第二届全球数字贸易博览会“数据要素治理与市场化论坛”于杭州成功召开,国家数据局党组书记、局长刘烈宏,浙江省委常委、常务副省长徐文光出席会议并致辞。会上,国家工业信息安全发展研究中心(以下简称…

C语言数据结构——详细讲解 双链表

从单链表到双链表:数据结构的演进与优化 前言一、单链表回顾二、单链表的局限性三、什么是双链表四、双链表的优势1.双向遍历2.不带头双链表的用途3.带头双链表的用途 五、双链表的操作双链表的插入操作(一)双链表的尾插操作(二&a…

【ArcGISPro】地理配准-影像校正

由于大部分数据安全性,以下是随意下载的图片,仅展示配置操作 地图-地理配准 添加控制点 修改控制点 可以导入、导出、添加和删除控制点 保存 关闭地理配准