【AI系统】芯片的编程体系

简介: 本文探讨了SIMD与SIMT的区别及联系,分析了SIMT与CUDA编程的关系,深入讨论了GPU在SIMT编程的本质及其与DSA架构的关系。文章还概述了AI芯片的并行分类与并行处理硬件架构,强调了理解AI芯片编程体系的重要性,旨在帮助开发者更高效地利用AI芯片算力,促进生态繁荣。

本篇幅主要探讨 SIMD 和 SIMT 的主要区别与联系,SIMT 与 CUDA 编程之间的关系,并且会讨论 GPU 在 SIMT 编程本质,SIMD、SIMT 与 DSA 架构,DSA 架构的主要形态。目前已经有大量的 AI 芯片研发上市,但是如何开发基于硬件的编译栈与编程体系,让开发者更好地使用 AI 芯片,更好的发挥 AI 芯片的算力,让生态更加繁荣,因此理解 AI 芯片的编程体系就显得尤为重要。

AI 芯片并行分类

AI 芯片主要是为实现并行计算,从程序并行的角度出发,主要可以分为指令级并行、数据级并行和任务级并行:

  1. 指令级并行(Instruction Level Parallelism,ILP):在同一时间内执行多条指令,这些指令可能是不同的程序段或者同一程序段的不同部分。这种并行性是通过流水线技术实现的,即在处理器中同时执行多个指令的不同阶段,从而提高处理器的效率。

  2. 数据级并行(Data Level Parallelism,DLP):在同一时间内处理多个数据元素,这些数据元素可能是独立的或者相关的。数据级并行通常通过向量处理器或者并行处理器来实现,可以同时对多个数据元素进行相同的操作,从而提高数据处理的效率。

  3. 任务级并行(Task Level Parallelism):将一个任务分解成多个子任务,然后同时执行这些子任务,可以通过多线程或者分布式计算来实现。

并行处理硬件架构

按照数据与指令之间的关系,关于并行处理的硬件架构主要有 SISD(单指令流单数据流)、SIMD(单指令流多数据流)、MSID(多指令流单数据流)和 MIMD(多指令流多数据流)四种:

  1. 单指令流单数据流(Single Instruction Single Data,SISD):这种架构中只有一个处理器执行单个指令流,处理单个数据流。这是传统的单处理器系统,适用于串行计算任务。

  2. 单指令流多数据流(Single Instruction Multiple Data,SIMD):这种架构中有多个处理器同时执行相同的指令流,但处理不同的数据流,每个处理器执行相同的操作,但是操作的数据不同。适用于向量处理器或者 GPU 等并行处理器架构。

  3. 多指令流单数据流(Multiple Instruction Single Data,MISD):这种架构中有多个处理器执行不同的指令流,但处理相同的数据流。每个处理器执行不同的操作,但是操作的数据相同。MISD 系统在实际应用中较为罕见。

  4. 多指令流多数据流(Multiple Instruction Multiple Data,MIMD):这种架构中有多个处理器执行不同的指令流,处理不同的数据流,每个处理器可以独立执行不同的任务,适用于多核处理器、分布式系统或者并行计算集群等场景。

SISD 系统中每个指令部件每次仅译码一条指令,而且在执行时仅为操作部件提供一份数据,此时支持串行计算,硬件并不支持并行计算,在时钟周期内 CPU 只能处理一个数据流。

SISD

目前 CPU 和 GPU 主要用到的并行计算架构是 SIMD,处理器硬件中添加了多个 PU(Process Unit)单元,此时一个控制器控制多个处理器,同时对一组数据中每一个数据分别执行相同的操作,实现并行计算。SIMD 主要执行向量、矩阵等数组运算,处理单元数目固定,适用于科学计算,特点是处理单元数量很多,但是处理单元速度会受到计算机通信带宽数据传输速率的限制。

SIMD

英伟达 GPU 架构围绕可扩展的多线程流式多处理器 (Streaming Multiprocessors,SM) 阵列构建,当主机 CPU 上的 CUDA 程序调用内核网格时,网格的块被枚举并分发到具有可用执行能力的多处理器。一个线程块的线程在一个 SM 上并发执行,多个线程块可以在一个 SM 上并发执行,当线程块终止时,新块在空出的 SM 上启动,SM 使 GPU 同时执行数百个线程。

为了管理如此大量的线程,英伟达 GPU 实际上采用了 SIMT(Single-Instruction Multiple-Thread,单指令多线程)架构,SIMT 体系结构属于 SIMD 中的一种特殊形态,但是 SIMT 使程序员能够为独立的标量线程编写线程级并行代码,以及为协调线程编写数据并行代码。

AI 计算方式与硬件模型

AI 计算方式

在神经网络中,单个神经元展开,其中最核心的计算为矩阵乘 $(X·W)$,无论 FFN 还是 CNN,早期的 ALSTN,亦或是大模型中的 Transformer 都大量地使用到矩阵乘计算。

神经网络架构图

FFN (Feedforward Neural Network):是一种最简单的神经网络结构,由多个全连接层组成,每一层的神经元与下一层的神经元全连接。FFN 主要用于在神经网络中进行特征提取和非线性变换。

CNN (Convolutional Neural Network):卷积神经网络是一种专门用于处理图像和视频等二维数据的神经网络结构。它通过卷积层、池化层和全连接层等组件来提取图像特征,并在图像分类、目标检测等任务中取得了很好的效果。

ALSTN (Attention-based Long Short-Term Neural Network):是一种结合了注意力机制和长短时记忆网络(LSTM)的神经网络模型。ALSTN 在序列建模、语音识别等领域中具有很好的应用前景,能够更好地捕捉序列数据之间的长期依赖关系。

Transformer:Transformer 是一种基于自注意力机制的神经网络模型,广泛应用于自然语言处理领域。Transformer 取代了传统的循环神经网络(RNN)和长短时记忆网络(LSTM),在机器翻译、文本生成等任务中取得了很好的效果。

神经网络中,训练(Training)和推理(Inference)是两个重要的阶段。

训练(Training):在训练阶段,神经网络通过输入数据和对应的标签(ground truth)来学习模式和特征,以调整网络中的参数(如权重和偏置)以最小化损失函数。训练的目标是使神经网络能够准确地预测输出结果。训练阶段通常包括前向传播(forward propagation)计算输出,反向传播(backpropagation)计算梯度,并使用优化算法(如梯度下降)更新参数。

推理(Inference):在推理阶段,经过训练的神经网络被用于对新的未见数据进行预测或分类。在推理阶段,神经网络的参数保持不变,不再进行参数调整。推理阶段的目标是利用训练好的神经网络模型对输入数据进行预测,并生成输出结果。推理阶段通常只包括前向传播计算,不涉及反向传播或参数更新。

无论是训练还是推理阶段都需要执行大量的矩阵乘计算。训练阶段中,矩阵乘法通常用于计算前向传播(输入数据与权重矩阵相乘,生成输出结果)和反向传播中的梯度传播(梯度与权重矩阵的转置相乘,计算参数的梯度)。在推理阶段中,矩阵乘法用于计算输入数据与训练好的权重矩阵之间的乘积,从而生成预测结果,该过程与训练阶段的前向传播过程类似。

在 AI 框架的开发流程中,首先由算法工程师定义神经网络,然后使用 AI 框架(如 PyTorch、MindSpore、PaddlePaddle 等框架)编写对应的程序;AI 框架自动构建正向计算图,根据自动微分机制构建反向计算图;最后将计算图转变成算子的执行序列,算子最终会执行在底层 AI 芯片上。

AI 框架的开发流程

硬件模型

为了通过 AI 框架实现神经网络模型中大量的矩阵乘等计算,如何基于不同的硬件并行处理架构(如 SIMD、SIMT)来实现呢?AI 系统需要关心和解决该问题吗?SIMD 是否只对底层硬件设计有约束?

为了解决上面的问题,因此有了硬件执行模型编程模型两个概念。

针对 AI 框架中具体的数学计算业界一般称为算子,其在 AI 芯片等硬件上提供了具体的 Kernel 实现,需要根据硬件执行模型(Execution Model)来确定编程模型(Programming Model)。程序员只关心编程模型,如何编写具体的算子,而硬件关心的是具体的指令执行。

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

相关实践学习
在云上部署ChatGLM2-6B大模型(GPU版)
ChatGLM2-6B是由智谱AI及清华KEG实验室于2023年6月发布的中英双语对话开源大模型。通过本实验,可以学习如何配置AIGC开发环境,如何部署ChatGLM2-6B大模型。
目录
相关文章
|
9月前
|
机器学习/深度学习 人工智能 JSON
PHP从0到1实现 AI 智能体系统并且训练知识库资料
本文详解如何用PHP从0到1构建AI智能体,涵盖提示词设计、记忆管理、知识库集成与反馈优化四大核心训练维度,结合实战案例与系统架构,助你打造懂业务、会进化的专属AI助手。
1399 6
|
9月前
|
存储 人工智能 搜索推荐
LangGraph 记忆系统实战:反馈循环 + 动态 Prompt 让 AI 持续学习
本文介绍基于LangGraph构建的双层记忆系统,通过短期与长期记忆协同,实现AI代理的持续学习。短期记忆管理会话内上下文,长期记忆跨会话存储用户偏好与决策,结合人机协作反馈循环,动态更新提示词,使代理具备个性化响应与行为进化能力。
1688 10
LangGraph 记忆系统实战:反馈循环 + 动态 Prompt 让 AI 持续学习
|
9月前
|
人工智能 JSON 安全
Claude Code插件系统:重塑AI辅助编程的工作流
Anthropic为Claude Code推出插件系统与市场,支持斜杠命令、子代理、MCP服务器等功能模块,实现工作流自动化与团队协作标准化。开发者可封装常用工具或知识为插件,一键共享复用,构建个性化AI编程环境,推动AI助手从工具迈向生态化平台。
2254 1
|
9月前
|
存储 人工智能 JSON
揭秘 Claude Code:AI 编程入门、原理和实现,以及免费替代 iFlow CLI
本文面向对 AI Coding 感兴趣的朋友介绍 Claude Code。通过此次分享,可以让没有体验过的快速体验,体验过的稍微理解其原理,以便后续更好地使用。
3627 18
揭秘 Claude Code:AI 编程入门、原理和实现,以及免费替代 iFlow CLI
|
9月前
|
人工智能 监控 安全
提效40%?揭秘AI驱动的支付方式“一键接入”系统
本项目构建AI驱动的研发提效系统,通过Qwen Coder与MCP工具链协同,实现跨境支付渠道接入的自动化闭环。采用多智能体协作模式,结合结构化Prompt、任务拆解、流程管控与安全约束,显著提升研发效率与交付质量,探索大模型在复杂业务场景下的高采纳率编码实践。
872 26
提效40%?揭秘AI驱动的支付方式“一键接入”系统
|
9月前
|
人工智能 自然语言处理 前端开发
最佳实践2:用通义灵码以自然语言交互实现 AI 高考志愿填报系统
本项目旨在通过自然语言交互,结合通义千问AI模型,构建一个智能高考志愿填报系统。利用Vue3与Python,实现信息采集、AI推荐、专业详情展示及数据存储功能,支持响应式设计与Supabase数据库集成,助力考生精准择校选专业。(239字)
904 13
|
9月前
|
存储 人工智能 自然语言处理
拔俗AI产投公司档案管理系统:让数据资产 “活” 起来的智能助手
AI产投档案管理系统通过NLP、知识图谱与加密技术,实现档案智能分类、秒级检索与数据关联分析,破解传统人工管理效率低、数据孤岛难题,助力投资决策提效与数据资产化,推动AI产投数字化转型。
392 0
|
9月前
|
人工智能 运维 Kubernetes
Serverless 应用引擎 SAE:为传统应用托底,为 AI 创新加速
在容器技术持续演进与 AI 全面爆发的当下,企业既要稳健托管传统业务,又要高效落地 AI 创新,如何在复杂的基础设施与频繁的版本变化中保持敏捷、稳定与低成本,成了所有技术团队的共同挑战。阿里云 Serverless 应用引擎(SAE)正是为应对这一时代挑战而生的破局者,SAE 以“免运维、强稳定、极致降本”为核心,通过一站式的应用级托管能力,同时支撑传统应用与 AI 应用,让企业把更多精力投入到业务创新。
879 30