一、GPU计算概述:为什么我们要聊这个话题

大家好,我是你们这门课的主讲。在AI芯片和GPU计算领域摸爬滚打了十几年,我见过太多人一上来就扎进量化细节,结果连GPU和CPU到底差在哪都没搞明白。今天这第一讲,咱们先把地基打牢。

说白了,GPU计算这件事,就是一场「用数量换质量」的博弈。CPU像是个全能博士,什么都能干,但一次只能处理一两件事;GPU呢,像是一群小学生,单个看啥也不是,但几千个一起上,算起矩阵乘法来能把博士甩出几条街。

核心观点:GPU不是万能的,但在并行计算领域,它是目前性价比最高的选择。量化计算,则是让这个选择变得更香的关键技术。

GPU与CPU的区别:一个老工程师的视角

我记得刚入行那会儿,带我的师傅跟我说过一句话:「CPU是战术家,GPU是工兵连。」这么多年下来,我觉得这个比喻特别贴切。

咱们来看几个关键区别:

对比维度 CPU GPU
核心数量 几个到几十个(比如16核) 几千个(比如A100有6912个CUDA核心)
设计目标 低延迟、复杂逻辑控制 高吞吐、大规模并行计算
缓存策略 大缓存(几十MB),减少访存延迟 小缓存(几MB),靠并行掩盖延迟
适合任务 操作系统、数据库、串行任务 矩阵运算、图像处理、深度学习
功耗 几十到几百瓦 几百瓦(H100可达700W)

为什么会这样?你想想看,CPU需要处理各种 unpredictable 的任务——用户点一下鼠标、网络来一个数据包,这些都得快速响应。所以它把大量晶体管用在了分支预测、乱序执行这些控制逻辑上。

而GPU呢?它面对的是「已知的未知」——我知道你要算矩阵乘法,只是不知道具体数字是多少。所以它把晶体管几乎全砸在了计算单元上。我做过一个粗略统计:同样面积的芯片,GPU的计算单元占比能达到80%以上,CPU可能只有20%。

我的经验:在项目中判断该用CPU还是GPU,我一般看两个指标:一是任务能不能拆成独立的小块,二是数据量够不够大。两个都满足,果断上GPU。

GPU架构简史:从Tesla到Hopper

嗯,这里我得说,NVIDIA的架构演进史,其实就是一部深度学习的发展史。我经历过从Fermi到Hopper的每一代,每次换代都像换了一把新武器。

咱们快速过一下关键节点:

  • Tesla(2007年):CUDA诞生,GPU终于能编程了。我记得当时拿到第一块Tesla C870,兴奋得整晚没睡——虽然它只有128个核心,但那是革命性的。
  • Fermi(2010年):第一个完整支持C++的GPU架构。我在这上面做过一个流体力学模拟,性能比当时的CPU快了40倍。
  • Kepler(2012年):引入了Dynamic Parallelism,GPU能自己调度自己了。AlexNet就是在这个架构上跑起来的。
  • Maxwell(2014年):能效比大幅提升,我开始用它做小规模的模型训练。
  • Pascal(2016年):NVLink出现,多卡互联不再是瓶颈。我做过一个8卡P100的集群,训练速度直接起飞。
  • Volta(2017年):Tensor Core诞生,专门为矩阵乘法优化。这是量化计算的转折点——硬件开始支持低精度计算了。
  • Turing(2018年):引入了INT8推理加速,我在这上面做过一个实时视频分析系统,延迟从50ms降到了5ms。
  • Ampere(2020年):支持TF32和结构化稀疏,精度和速度的平衡做得更好了。
  • Hopper(2022年):Transformer Engine,专门为大模型优化。FP8精度正式登场,量化计算进入新纪元。

避坑指南:我曾经在项目里直接拿Volta的Tensor Core做FP16训练,结果发现某些层的精度损失比预期大。后来才意识到,不是所有算子都适合低精度——卷积没问题,但某些激活函数就不行。所以,量化之前一定要做算子级别的精度分析。

GPU在深度学习中的角色

说白了,深度学习就是三个步骤:前向传播、反向传播、参数更新。每一步的核心都是矩阵乘法。而矩阵乘法,恰恰是GPU最擅长的。

我给大家画个简单的图,看看深度学习训练流程中GPU到底在干什么:

深度学习训练流程与GPU角色 数据加载 CPU负责 前向传播 GPU矩阵乘法 损失计算 GPU/CPU均可 反向传播 GPU梯度计算 参数更新 GPU优化器 迭代循环 量化介入点 量化可以做什么? • 将FP32权重转为INT8/FP8 • 减少显存占用(4倍) • 加速矩阵乘法(2-4倍)

从这张图你能看到,GPU几乎参与了训练的全流程。但这里有个关键点:量化计算主要影响前向传播和反向传播中的矩阵乘法部分。我做过测试,在ResNet-50上做INT8量化,前向传播速度能提升3倍左右,而精度损失不到1%。

量化计算为什么重要

这个问题,我换个角度回答你:没有量化,大模型根本跑不起来

你想想看,GPT-3有1750亿参数,如果用FP32存储,光权重就需要700GB显存。目前最大的商用GPU(H100)才80GB显存。怎么办?

量化就是答案。把FP32变成INT8,存储直接降到1/4。再加上模型并行、流水线并行这些技术,大模型才能在实际硬件上跑起来。

我给大家列几个关键数据:

  • 存储压缩:FP32→INT8,显存占用减少75%
  • 计算加速:INT8矩阵乘法比FP32快2-4倍(取决于硬件)
  • 带宽节省:同样时间内可以传输4倍的数据量
  • 功耗降低:低精度计算单元功耗更低,H100的FP8 Tensor Core比FP32节省约60%的能耗

我的亲身经历:去年做一个大模型推理项目,模型是LLaMA-65B。用FP32推理,单张A100根本放不下,得用4张卡做模型并行。后来做了INT8量化,一张A100就能跑,延迟还从200ms降到了80ms。你说量化重不重要?

但量化也不是银弹。我曾经在一个语音识别模型上做过实验,把所有的层都量化到INT8,结果准确率掉了5%。后来发现是某些层的激活值分布太广,INT8的表示范围不够。所以,量化需要策略,不是无脑压缩

我的建议:刚开始接触量化,先从PTQ(训练后量化)入手。它不需要重新训练模型,只需要少量校准数据就能完成。等熟悉了,再尝试QAT(量化感知训练),精度会更好,但训练成本也更高。

好了,这一章的内容就到这里。量化计算的世界很大,咱们后面慢慢聊。记住一句话:量化不是目的,让模型跑得更快、更省、更实用才是


专注资料整理