大语言模型系统:【CMU 11-868】课程学习笔记02——GPU编程基础1(GPU Programming Basics 1)

大语言模型系统:【CMU 11-868】课程学习笔记02------GPU编程基础1(GPU Programming Basics 1))

  • 前言
  • [一、神经网络层和低级运算符(Neural Network Layer and low-level operators)](#一、神经网络层和低级运算符(Neural Network Layer and low-level operators))
    • [1.1 典型神经网络层(A Simple Feedforward Neural Network)](#1.1 典型神经网络层(A Simple Feedforward Neural Network))
    • [1.2 低级计算运算符(Low-level Computing Operators)](#1.2 低级计算运算符(Low-level Computing Operators))
  • [二、GPU服务器的组件(Components of A GPU Server)](#二、GPU服务器的组件(Components of A GPU Server))
    • [2.1 现代 GPU 服务器配置示例(A Modern Computing Server)](#2.1 现代 GPU 服务器配置示例(A Modern Computing Server))
    • [2.2 服务器核心组件(Modern Computing Server Architecture)](#2.2 服务器核心组件(Modern Computing Server Architecture))
  • [三、GPU架构(GPU Architecture)](#三、GPU架构(GPU Architecture))
  • [四、GPU上的程序执行(Program Execution on GPU)](#四、GPU上的程序执行(Program Execution on GPU))

前言

【CMU 11-868】课程面向研究生开设,聚焦"从算法到工程"的大语言模型系统构建全过程。课程内容包括但不限于:

  • GPU 编程与自动微分:掌握 CUDA kernel 调用、并行编程基础,以及深度学习框架设计原理
  • 模型训练与分布式系统:学习高效的训练算法、通信优化(ZeRO、FlashAttention)、分布式训练框架(DDP、GPipe、Megatron-LM)。
  • 模型压缩与加速:量化(GPTQ)、稀疏化(MoE)、编译技术(JAX、Triton)、以及推理时的服务化设计(vLLM、CacheGen)。
  • 前沿技术与系统实践:涵盖检索增强生成(RAG)、多模态 LLM、RLHF 系统,以及端到端的在线维护和监控。

一、神经网络层和低级运算符(Neural Network Layer and low-level operators)

LLM 的核心计算单元是神经网络,其底层由特定层结构和基础算子构成,GPU 的高效计算能力正是通过优化这些底层操作实现性能提升。

1.1 典型神经网络层(A Simple Feedforward Neural Network)

以文本情感分类任务(判断电影评论为正面、负面或中性)为例,简单前馈神经网络包含以下核心层:

  • 嵌入层(Embedding):将文本词汇映射为低维稠密向量(查找表机制);
  • 线性层(Linear):实现向量的线性变换(核心是矩阵乘法);
  • 激活层(ReLU):引入非线性,增强模型表达能力;
  • 平均池化层(Average Pooling):对特征进行下采样,降低计算量;
  • Softmax 层:将输出转换为概率分布,实现分类;

1.2 低级计算运算符(Low-level Computing Operators)

所有神经网络层的计算最终可拆解为四类基础算子,这些算子的并行效率直接决定模型性能:

  • 矩阵乘法(最核心算子,占 LLM 计算量的 80% 以上)
  • 元素级操作(add、scale、ReLU 等,逐元素独立计算)
  • 归约操作(sum、avg 等,对向量 / 矩阵进行聚合计算)
  • 查找操作(嵌入层核心,基于索引获取向量)

这些算子的高效执行高度依赖 GPU 的并行架构,CPU 在大规模并行计算场景下性能差距显著。

二、GPU服务器的组件(Components of A GPU Server)

2.1 现代 GPU 服务器配置示例(A Modern Computing Server)

一台高性能 LLM 计算服务器的典型配置的核心参数如下:

  • 处理器:2 颗 AMD EPYC 9354 CPU(多核架构,支撑主机端调度)
  • 内存:16×64GB DDR5 内存(总计 1TB,满足模型参数临时存储)
  • 存储:4 块 Intel D7 P5520 15.36TB Gen4 NVMe SSD(高速存储训练数据与模型文件)
  • GPU:8 块 NVIDIA A6000(48GB 显存,单卡 10752 个核心,支持 38.7 TFLOPS 算力)
  • 通信:4 条 2 槽 NVLink(GPU 间带宽 112.5 GB/s)+ PCIe Gen4(单路 32 GB/s)

2.2 服务器核心组件(Modern Computing Server Architecture)

  • CPU:负责主机端程序调度、数据预处理与 GPU 任务分发;
  • 内存(DDR5):CPU 与 GPU 间数据传输的临时缓冲区;
  • 存储(NVMe SSD):解决海量训练数据的高速读写需求,避免 I/O 瓶颈;
  • GPU:核心计算单元,承担 99% 以上的神经网络计算任务;
  • 通信链路(NVLink/PCIe):保障多 GPU 间梯度同步、参数传输的效率(梯度移动是多 GPU 训练的关键瓶颈);

计算设备(Computing Devices)

三、GPU架构(GPU Architecture)

GPU 架构演进(GPU Lineup)

NVIDIA 的 GPU 架构持续迭代,从 Ampere 到 Hopper 再到最新的 Blackwell,性能与功能大幅提升,以下是三代架构的核心参数对比:

GPU架构(GPU Architecture)

流式多处理器(Streaming Multiprocessor)

SM 是 GPU 的计算核心单元,以 NVIDIA RTX A6000(GA102 架构)为例,其包含 84 个 SM,每个 SM 的结构如下:

  • 4 个分区,每个分区 32 个核心,单个 SM 共 128 个核心
  • 存储资源:每个分区 64KB 寄存器(最快访问速度),单个 SM 共享 128KB L1 缓存 / 共享内存
  • 计算能力:单周期可执行 128 次 FP32 运算,支持张量核心加速矩阵乘法
  • 辅助单元: warp 调度器、加载 / 存储单元(LD/ST)、特殊功能单元(SFU)

CPU和GPU对比(CPU vs. GPU)

四、GPU上的程序执行(Program Execution on GPU)

1️⃣ GPU编程模型(GPU Programming Model)

CUDA 是 NVIDIA 推出的 GPU 编程框架,采用 "主机 - 设备"(CPU-GPU)异构计算模式:

  • 主机(CPU):运行 C/C++ 等常规程序,负责任务调度、数据预处理与 GPU 控制;
  • 设备(GPU):运行 CUDA 内核(Kernel)代码,负责并行计算任务;
  • 数据传输:需显式在 CPU 系统内存与 GPU 显存间移动数据(通过 PCIe 或 NVLink);

2️⃣ GPU上的SIMT执行(SIMT Execution on GPU)

GPU 采用 "单指令多线程"(Single Instruction Multiple Threads,SIMT)模式执行并行任务,线程组织层次如下:

  • 线程被分组为线程块(Threads are grouped into Thread Blocks);
  • 线程块被分组为网格(Thread Blocks are grouped into Grid);
  • 内核作为由线程块组成的网格执行(Kernel executed as Grid of Blocks of Threads);

3️⃣ GPU上指令的执行方式(How instructions are executed on GPU)

4️⃣ 内核线程的执行方式(How Kernel Threads are Executed)

  • SM将线程块划分为线程束;
  • Warp是GPU创建、管理、调度和执行线程的单位;
  • 每个线程束包含32个线程(为什么是32个?)
    • 从相同的程序地址开始;
    • 拥有自己的程序计数器和寄存器;
    • 在一个周期内执行一条共同的指令;
    • 可以分支并独立执行。

5️⃣ GPU上的线程束执行(Warp Execution on GPU)

  • 执行上下文在warp的生命周期内一直存在于SM上(程序计数器、寄存器、共享内存);
  • 线程束之间的上下文切换是即时的;
  • 在运行时,线程束调度器选择具有活跃线程的 warp,向线程束的线程发布指令;
  • 流式多处理器(SM)上的线程束数量取决于所需内存和可用内存;

6️⃣ 在一个SM上执行一个线程块(Executing one Thread block on one SM)

  • 4 warps can be executed in parallel at one time on each SM

7️⃣ CPU-GPU数据传输(CPU-GPU Data Movement)

8️⃣ CUDA内核(CUDA Kernel)

  • 每个内核都是一个在GPU上运行的函数(程序);
  • 程序本身是串行的;
  • 可以同时运行许多(10k)线程;
  • 使用线程索引计算数据的右侧部分;

9️⃣ 编译CUDA代码(Compiling CUDA Code)

bash 复制代码
nvcc -o output.so --shared src.cu -Xcompiler -fPIC
相关推荐
YMWM_7 小时前
如何将包路径添加到conda环境lerobot的python路径中呢?
人工智能·python·conda
星辰_mya7 小时前
关于ai——纯笔记
人工智能
炽烈小老头7 小时前
【每天学习一点算法 2026/03/08】相交链表
学习·算法·链表
智算菩萨7 小时前
GPT-5.4原生操控电脑揭秘:从Playwright脚本到屏幕截图识别,手把手搭建你的第一个自动化智能体
人工智能·gpt·ai·chatgpt·自动化
田里的水稻7 小时前
ubuntu22.04_openclaw_ROS2
人工智能·python·机器人
一碗白开水一7 小时前
【工具相关】OpenClaw 配置使用飞书:打造智能飞书助手全流程指南(亲测有效,放心享用)
人工智能·深度学习·算法·飞书
小程故事多_807 小时前
Vibe Coding的致命隐患,你必须知道的技术债务和扩展性危机
大数据·人工智能·aigc
童话名剑7 小时前
YOLO v3(学习笔记)
人工智能·深度学习·yolo·目标检测
康康的AI博客7 小时前
农业工业变革:如何通过DMXAPI中转提升自动化效率
运维·人工智能·自动化