AISystem是由ZOMI的开源课程,本文是我在学习过程中的笔记。

AI 的历史与现状

AI 的领域应用

人工智能正在日益渗透到所有的技术领域,而深度学习是目前人工智能中最活跃的分支。

CV 领域应用

“计算机视觉,尤其是图像识别,是深度学习能力的一些最早重要演示的主题。”

  • “自动驾驶汽车使用深度学习来识别和跟踪…车辆、行人和其他物体。”
  • “搜索引擎…根据图像查询提供准确且相关的搜索结果。”
  • “机场和政府大楼使用面部识别来筛查乘客和员工。”
  • “已从…图片分类、目标检测和物体分割,逐渐过渡到…二维甚至三维的图片生成。”

NLP 领域应用

“深度学习与 NLP 有着密切的联系…研究如何让计算机更好地理解和处理自然语言。”

  • “词向量表示…更好地捕捉词语的语义信息。”
  • “使用 CNN/RNN 等模型,对文本进行分类或情感分析。”
  • “机器翻译…利用大量双语语料库进行训练,从而实现高质量的机器翻译。”
  • “最新的进展已经能够使用语言大模型 LLM 实现人机对话、摘要自动生成和信息检索等功能。”

Audio 领域应用

“智能音频处理…实现音频信号的分析、识别和合成等任务。”

  • “音频分类、音频分割和音频降噪…通过训练神经网络模型。”
  • “语音识别…将语音信号转化为文本信息。”
  • “音频合成…生成逼真的语音合成结果…音乐合成。”
  • “端到端的音频处理…简化处理流程并提高效率。”
  • “跨模态音频处理…与图像或文本信息进行联合处理。”

AI 场景与行业应用

“人工智能逐渐在互联网、制造业、医疗、金融等不同行业和场景涌现大范围的应用。”

  • 金融:“信用评估、风险管理、反欺诈…提高业务效率,降低风险。”
  • 医疗:“疾病诊断、药物研发、病历管理…提高疾病诊断准确率,降低…成本。”
  • 教育:“个性化教育、智能辅导、智能评估…提高学习效果,降低教育成本。”
  • 互联网:“文本向量化…提升检索质量;点击率预测…获取更高的利润。”
  • 自动驾驶:“更准确地识别道路上的物体…更安全地执行驾驶决策。”

“…在人工智能基础设施和系统上投入…提升…生产效率…再通过业务场景反哺,获取更多的数据…驱动人工智能系统与工具链的创新与发展。”


AI 基本理论奠定

“其当前基于的核心理论…在这波浪潮开始前已经基本奠定,并经历了多次的起起伏伏。”

萌芽兴奋期(约 1950s)

  • 1943:“McCulloch 和 Pitts…创造了一种神经网络计算模型。”
  • 1950:“图灵测试…提出。”
  • 1957:“Rosenblatt 发明感知机(Perceptron)…以矩阵乘加运算为主。”
  • 1960:“Adaline/Madaline…尝试…多层感知器网络。”
  • 1969:“单层感知器无法解决…异或问题…计算能力不足…研究停滞。”
  • 1974:“Werbos…误差反向传播…训练多层神经网络成为可能。”

蓬勃发展期(约 1980s)

  • 1986:“‘Deep Learning’ 一词…引入机器学习社区。”

  • 1989:“LeCun 提出 LeNet…卷积神经网络的重要负载。”

  • 1990s:“统计学习登场…SVM 成为主流。”

  • 2006:“Hinton 等…无监督预训练 + 监督微调…深度信念网络。”

  • 2009–2011:ImageNet 项目建立与发布,众包标注体系完善。

突破驱动繁荣期(约 2010s)

  • 2011:“微软…会话语音转录…相对错误率降低 22–33%…依赖分布式 GPU 训练。”
  • 2012(1月):“谷歌…16,000 处理器…无监督学习…从视频静帧学会识别‘猫’。”
  • 2012(9月):“AlexNet…赢得 ImageNet 竞赛…ReLU、Dropout、LRN…2 块 GTX 580 加速。”

“以 ImageNet 等公开…数据集…驱动…CNN、RNN、Transformer、GNN…发展和创新…模型作为上层应用负载,是驱动系统演化的驱动力之一。”

大模型带来新机遇(约 2020s)

  • 2021:“《On the Opportunities and Risk of Foundation Models》…称为大模型。”
  • “包括 BERT、GPT-3、CLIP、DALL·E 等…涉及…训练、微调、评价、加速、数据、安全、对齐…仍处于快速发展。”

小结与思考

  • “需要深刻理解上层 AI 计算应用负载特点,历史和趋势,才能找到系统设计的真实需求问题和优化机会。”
  • “AI 在 CV、NLP、Audio…及金融、医疗、教育等行业有广泛应用,其模型结构和部署需求不断演变。”
  • “基本理论…经历了…萌芽→蓬勃→突破驱动繁荣…受硬件算力和模型创新推动…近年来,大模型出现带来新机遇。”

AI 发展驱动力

AI 技术早在此之前已在工业界广泛部署(排序、检索、推荐等)。”
机器学习是实现 AI 的一种方法,深度学习是实现机器学习的技术,神经网络是深度学习的具体实现形态。”

后续以“AI”代指神经网络这一具体实现形态。


AI 学习方法

“先理解 AI 的原理与特点,再谈系统设计。”

  1. 确定模型输入输出
    “输入样本(Sample),输出标签(Label)……如输入图片,输出类别。”

  2. 设计与开发模型
    “线段代表权重,圆圈代表计算;wnw_n 为可学习参数(权重)。”

  3. 训练(Training)
    本质:最小化 Loss。计算梯度 δw\delta w,用优化算法(梯度下降)更新权重与偏置。”

    • 3.1 前向传播:完成各层矩阵计算与 Loss 计算。
    • 3.2 反向传播:逐层求梯度。
    • 3.3 梯度更新:按学习率更新权重。
      不断迭代直至收敛或达到终止条件。”

  4. 推理(Inference)
    仅执行前向传播:用训练好的模型,对新输入给出预测结果。”

“AI 系统围绕训练与推理的全生命周期:开发体验、极致性能、安全、规模化、云上多租户、发挥新硬件特性。”


AI 算法现状

代表性结构(也是系统评测常用基准):

  1. CNN:卷积/池化/全连接组合,“在 CV 领域应用广泛”。
  2. RNN/LSTM时序数据(NLP/语音/监控)。
  3. GNN图结构学习(聚类/分类/预测/分割/生成)。
  4. GAN生成式,对抗训练“生成更真实的新数据”。
  5. 扩散模型(Diffusion):潜变量 + 变分估计,“学习逆扩散过程进行去噪/生成”。
  6. 混合结构(Ensemble):组合多类网络以应对复杂任务(如 OCR)。

新趋势:

  1. 更大的模型:Transformer/LLM(BERT、GPT、LLaMA),“层数与参数激增内存管理/分布式训练/集群设计挑战。”
  2. 更灵活的结构:图/树等复杂数据结构 → 新算子与框架。
  3. 更稀疏的结构:MoE/Pathways,“运行时更动态与稀疏,驱动 JIT 与更高效调度。”
  4. 更大搜索空间:HPO/NAS/AutoML,“多作业编排与调度 需求增强。”
  5. 更多样训练方式:扩散、深度强化学习,“训练/推理/数据处理 混合部署与协同优化。”

AI 系统的出现

“三大因素:大数据超大规模算力算法突破。”

大规模数据驱动

  • 互联网/移动互联网沉淀海量数据,形成数据湖与平台,推动深度学习落地与迭代。”
  • 典型来源:搜索引擎(ImageNet/COCO、Wikipedia)与移动应用(电商/社区产生的大规模推荐与广告数据)。
  • 数据的质与量决定模型天花板;规模从 MNIST(6 万/10 类)→ ImageNet(1600 万/1000 类)→ Web 级数据。”

对系统的影响:

  • 促进更高精度、更低误差;落地与投入的驱动力。
  • 单机难以为继 → 分布式训练与集群化
  • 多样数据格式与任务 → 更灵活的框架与编译体系
  • 安全与合规挑战 同步上升。

AI 算法的进步

  1. 精度超越传统 ML
    “MNIST 上 CNN 错误率降至 0.23%(2012),接近人类 0.2%。”

  2. 公开数据集上的持续突破
    “Lenet(1998)→ AlexNet(2012,引入 GPU/ ReLU/ Dropout/ LRN)→ Inception(2015)→ ResNet(2015,更深)→ MobileNetV3 + NAS(2019)。”
    三类演化:更优激活/层(ReLU/BN)、更深更大网络、更佳训练技巧(正则化/初始化/学习率/AutoML)。

算力与体系结构进步

  • 摩尔定律放缓专用芯片 定制化(GPGPU、TPU、NPU、Transformer Engine)。”
  • 脉动阵列(Systolic Array)、3D Cube 等设计提升矩阵运算密度与能效。”
  • 稀疏/量化 算法特性下沉到硬件,软硬协同显著加速。”
  • “单芯片 Scale Up 与集群 Scale Out 并举;并行系统设计作业特征(如稀疏性) 的协同优化成为主线。”

小结与思考

  • 三大驱动力:数据规模、计算能力、算法突破。”
  • 系统设计需与上层负载同频:在大模型/稀疏/动态/AutoML/强化学习等趋势下,编程表达、编译优化与分布式执行需协同演进。”
  • 学习方法—模型结构—硬件体系 彼此牵引;AI 系统的核心挑战在于:性能极致、规模弹性、成本可控与安全合规 的统一。”

AI 系统全栈架构

AI 系统概述

AI 系统基本概念

AI 时代连接硬件和上层应用的中间层软硬件基础设施。”

  • 与“AI Infra”相关,但更强调“让 AI 执行起来的系统体系结构”。
  • 传统:数据库/操作系统/中间件抽象硬件复杂性;
    云时代:IaaS/PaaS/SaaS;
    AI 时代:承担连接算力与应用的基础设施中间层,提供基础模型服务、微调与应用开发。

AI 系统详细定义

“开发者通过 Python 与 AI 框架(PyTorch/MindSpore 等)编码与描述模型、训练与部署流程。”

  • 早期 AlexNet 直接用 CUDA;如今**框架 + 生态(HuggingFace/FairSeq/MMDetection/NNI)**提升生产力。
  • 不同领域差异(输入/输出/数据获取)→ 定制框架与工具;
    主流:PyTorch、TensorFlow、JAX、MindSpore 等,配合社区模型中心与推理工具。
  • 硬件演进:GPU/TPU/NPU/张量核/脉动阵列等支撑大规模训练与推理。

AI 系统设计目标

  1. 高效编程语言、框架与工具链

更强表达能力与更简洁原语;屏蔽底层细节;调试/可观测/扩展完善。”

  • 支持全生命周期:数据处理、训练、压缩、推理、安全与隐私。
  1. 任务级系统支持

“支持强化学习AutoML 等新范式;可扩展计算能力(并行/分布式/集群);自动编译优化(推导/并行化/JIT);云原生自动分布式化。”

  1. 面向新挑战的设计与演化

“动态图/动态 Shape、稀疏与混合精度、混合训练范式、多任务编排;企业级多租跨端推理安全与隐私。”


AI 系统组成

“大致分为若干方向(训练与推理框架、编译与计算架构、硬件与体系结构等)。”

AI 训练与推理框架

“提供前端编程接口与工具链;静态分析与计算图构建、编译优化。”

  • 网络模型构建:CNN/RNN/Transformer 与控制流/API。
  • 模型算法实现:训练/推理、监督/无监督/强化等流程。
  • 计算图:静态与动态图(PyTorch 2.x 引入 Dynamo 走向融合)。
  • 自动求导:算子级封装 + 全图自动微分。
  • 多层 IR:为后端编译优化铺路。
  • 流水线/工作流工具链:迁移、转换、调试、可视化、类型系统等。
  • 生命周期管理(MLOps):数据/训练/推理流程化与模块化。

AI 编译与计算架构

“为多硬件平台提供迁移性与高性能:ONNX 等中间格式 + TVM/Glow/XLA/Jittor 等编译器。”

  • 特征

    1. 主前端语言多为 Python/AST→图 IR(保留 shape/layout)。
    2. 多层 IR:兼顾易用与性能;算子抽象 vs. 循环级优化。
    3. 面向 NN 的张量类型/自动微分
    4. DSA 芯片中心(GPU/NPU/TPU 等)。
  • 关键能力

    • 编译优化:算子融合、循环/布局优化、等价/近似图变换。
    • JIT/自适应优化:运行期根据硬件与数据分布自调优。
    • 调度与执行:算子级并行、线程策略、资源复用。
    • 硬件抽象:统一接口屏蔽 GPU/NPU/TPU/CPU/FPGA/ASIC 差异。

AI 硬件与体系结构

程序真正执行、互联与加速;平台侧做调度、资源分配与隔离。”

  • 资源池化与调度:异构集群、拓扑感知。
  • 高性能互联:RDMA/InfiniBand、NVLink/NVSwitch、AllReduce/通信聚合。

注:后续章节将聚焦训练/推理框架、编译器与芯片,必要处延伸到平台与生态。


AI 系统生态

“除核心构成外,还包含平台调度、算法与框架演进、安全与隐私、部署与优化等更广泛内容。”

核心系统软硬件

  • 运行与优化环境:算子/任务调度、内存/I-O 管理、未来的多路复用。
  • 通用资源调度:多租公平/效率/稳定
  • 新型硬件 + 高性能网络栈:灵活适配,静/动态结合优化,前瞻瓶颈与机会。

AI 算法和框架

  • 通用高效算法:新算子/灵活结构/融合(如 MoE)。
  • 多框架统一支持:提升体验与复用。
  • 神经网络编译优化:静态分析 + 融合/循环级优化 + 图等价变换。

更广泛生态

  • 强化学习:与环境交互的数据路径 → 新的训练范式支持。
  • AutoML(HPO/NAS):大搜索空间 → 多任务调度与编排
  • 安全与隐私:数据与模型双重维度。
  • 推理/压缩/优化:前向为主、更低时延与资源约束、量化/蒸馏/剪枝等。

小结与思考

  • AI 系统=连接硬件与应用的基础设施,涵盖语言/框架/编译/硬件/平台等多层。”
  • “设计目标:高效表达+系统级支持+面向新挑战演进(动态图/稀疏/多任务/多租/跨端/安全)。”
  • “组成:框架→编译→硬件,并延展到生态(调度、AutoML、推理优化、安全隐私)。”
  • “经典系统理念(OS/编译器/分布式/云原生)在 AI 场景中依旧适用并持续演化。”

AI 系统与程序代码关系

以 PyTorch 实现 LeNet-5 为例,把上层 Python 代码与底层 AI 系统各层的运行机制建立桥梁,并标注关键系统问题与思考。


神经网络样例

AI 训练流程原理

“前向传播(Forward)产生输出;训练是一个最小化损失的优化问题
(\theta = \arg\min_\theta \sum \mathrm{Loss}(f_\theta(x),y)),
用梯度下降 (\theta \leftarrow \theta - \alpha \nabla_\theta \mathrm{Loss})。”

  • 推理(Inference):仅执行前向传播 (\hat y = f_\theta(x))。
  • 特征图(Feature Map):各层输出在计算图中对应具体算子序列。

术语:“算子(Operator, Op) 是张量计算基本单元;底层实现为 Kernel(常映射到 GEMM/卷积等),再被翻译为 循环(Loops)与指令。”

网络模型构建

“两阶段:1)定义网络结构(Conv/Pool/FC 等);2)开始训练(批处理→前向→Loss→反向→更新)。”

  • PyTorch 训练流程:DataLoader → model(x) → loss → backward → step
  • 设备选择与内存/并行device = torch.device("npu"|"gpu"|"cpu");若模型/激活过大,需模型并行/数据并行分布式训练

算子实现的系统问题

卷积实现原理

“滑动窗口与卷积核做矩阵内积(Dot Product),加偏置后输出到特征图。”

  • 形状示例:输入 (3\times32\times32) 经 (2\times3\times5\times5) 卷积 → 输出 (2\times28\times28)。

卷积执行样例

“Conv2D 可被展开为 7 重循环(n/oc/ic/h/w/fh/fw)做乘加(MAC)。”

  • 直观代码:多层 for-loop(批、通道、高宽、核高宽)→ output += input * kernel
  • 要点:这类循环是编译器与硬件优化(循环切分/重排/向量化/并行)的直接入口。

AI 系统遇到的问题(面向实现的发问)

  • 硬件加速:矩阵乘/GEMM 是主力;NPU/GPU/TPU(脉动阵列)如何专用加速?
  • 片上存储:输入/权重/输出能否装入 L1/L2/共享内存?→ Tile/切片策略。
  • 局部性:空间/时间局部性能否通过循环变换榨干缓存/带宽?
  • 内存与扩展:按层估算张量占用,设计内存复用/溢出到 HBM/Host换入换出策略。
  • 运行时调度:算子间依赖与并行如何在 Runtime 高效调度?
  • 算法变换:能否把循环型卷积改写为 im2col+GEMM 等更易优化形式?
  • 编程方式:在灵活表达高效执行间,如何用框架/IR/JIT 取得平衡?

AI 系统执行具体计算

“上层仅需 Python + 框架 API;底层通过算子库(cuDNN/cuBLAS 等)与编译/运行时完成 Kernel 执行。”

  • 没有框架会怎样?
    用 CUDA + cuDNN 写 LeNet 需 上千行:手工内存分配/释放、前反向每层 API 调用、权重更新、图拼接等。

  • 有框架有什么不同?
    用 PyTorch 写 LeNet 结构仅 十余行

    1. Python API 构图(前向即图);
    2. 封装算子(极大减码);
    3. 自动内存与生命周期管理
    4. 自动微分(自动构建反向图);
    5. 调用/生成优化代码,在 NPU/GPU 调度算子
    6. 运行期并行与自适应优化(提升加速器利用率)。

结论:框架/编译器/算子库 是算法生产力倍增器;隐藏复杂性的同时也形成系统工程的主战场(IR 设计、调度、存储层次、并行与通信、跨设备/多租支持等)。


小结与讨论

  • 多层抽象让日常实践难以直观看到底层机制,但理解系统细节能反过来指导更高效的作业与代码。”
  • “AI 系统承担了表达→编译→运行全链路:从 Python 图到 IR/Kernel,再到设备执行与分布式调度。”
  • “要写好上层 AI 代码,也要理解底层在做什么:内存/带宽/并行/通信决定了最终性能与可扩展性。”