Skip to Content
基于scikit-learn和PyTorch的实践机器学习
book

基于scikit-learn和PyTorch的实践机器学习

by Aurélien Géron
October 2025
Intermediate to advanced
878 pages
12h 53m
Chinese
O'Reilly Media, Inc.
Content preview from 基于scikit-learn和PyTorch的实践机器学习

附录 B. 混合精度和量化

默认情况下,PyTorch 使用 32 位浮点来表示模型参数:即每个参数 4 字节。如果你的模型有 10 亿个参数,那么仅保存模型就需要至少 4 GB 的 RAM。在推理时,还需要足够的内存来存储激活值;在训练时,还需要足够的内存来存储所有中间激活值(用于后向传递),并存储优化器参数(例如,Adam 每个模型参数需要两个额外的参数,这就需要额外的 8 GB)。这需要大量的 RAM,在 CPU 和 GPU 之间传输数据也需要大量时间,更不用说存储空间、下载时间和能耗了。

那么,怎样才能减小模型的大小呢?一个简单的办法就是使用精度较低的浮点表示法--通常是 16 位浮点而不是 32 位浮点。如果先训练一个 32 位模型,然后在训练后将其缩小到 16 位,那么模型的大小就会减半,而对其质量几乎没有影响。好极了!

但是,如果尝试使用 16 位浮点数来训练模型,可能会遇到收敛问题,我们将看到这一点。因此,一种常用的策略是混合精度训练(MPT) ,在训练过程中,我们将权重和权重更新保持在 32 位精度,但其他计算使用 16 位精度。训练结束后,我们将权重缩小到 16 位。

最后,要进一步缩小模型,可以使用量化 :将参数离散化,以 8 位整数甚至 4 位整数或更低的精度表示。这种方法比较困难,模型的质量也会下降一些,但它可以将模型的大小缩小 4 倍或更多,并大大加快速度。

在本附录中,我们将介绍降低精度、混合精度训练和量化。但要充分理解这些内容,我们必须先讨论机器学习中常见的数字表示法。

常用数字表示

默认情况下,PyTorch 使用基于IEEE 浮点运算标准(IEEE 754)的 32 位浮点数来表示权重和激活值 ,该标准规定了浮点数在内存中的表示方法。该标准规定了浮点数在内存中的表示方法。它是一种灵活高效的格式,可表示极小值和极大值,以及特殊值,如 ±0.1±无穷大和 NaN(即非数字)等特殊值。

float32 数据类型 (简称 fp32)可容纳小至 ±1.4e-45和大至 ±3.4e38 的数值。如图 B-1 顶部所示。第一位决定符号 S:0 表示正数,1 表示负数。接下来的 8 位是指数 E,范围从 0 到 255。最后 23 位代表分数 F,范围从 0 到223- 1。下面是计算数值的方法:

  • 如果E介于 1 和 254 之间,则该数字称为归一化 :这是最常见的情况。在这种情况下,可以使用v= (-1)S⋅2E-127⋅(1 +F⋅2-23) 计算v值。最后一项(1 +F ⋅2-23)对应的是最有效数字,因此称为有效数字。

  • 如果E= 0 且F> 0,那么这个数称为次正常 :它可以用来表示最微小的数值。2在这种情况下,v= (-1)S⋅2E+1-127⋅(0 +F⋅2-23) = (-1)S⋅F⋅2-149 。

  • 如果E= 0,F= 0,则v= ±0。

  • 如果E= 255,F> 0,则v= NaN。

  • 如果E= 255,F= 0,则v= ±无限大。

图 B-1所示的其他浮点格式仅在指数和分数的位数上有所不同。例如,float16 的指数使用 5 位(即从 0 到 31),分数使用 10 位(从 0 到 1,023),而 float8 的指数使用 4 位(从 0 到 15),分数使用 3 位,因此通常表示为 fp8 E4M3。3计算值的公式也会相应调整,例如,归一化 float16 值的计算公式为v= (-1)S⋅2E-15⋅(1 +F⋅2-10) 。

图 B-1. 机器学习中常见的数字表示

bfloat16 ...

Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.

Read now

Unlock full access

More than 5,000 organizations count on O’Reilly

AirBnbBlueOriginElectronic ArtsHomeDepotNasdaqRakutenTata Consultancy Services

QuotationMarkO’Reilly covers everything we've got, with content to help us build a world-class technology community, upgrade the capabilities and competencies of our teams, and improve overall team performance as well as their engagement.
Julian F.
Head of Cybersecurity
QuotationMarkI wanted to learn C and C++, but it didn't click for me until I picked up an O'Reilly book. When I went on the O’Reilly platform, I was astonished to find all the books there, plus live events and sandboxes so you could play around with the technology.
Addison B.
Field Engineer
QuotationMarkI’ve been on the O’Reilly platform for more than eight years. I use a couple of learning platforms, but I'm on O'Reilly more than anybody else. When you're there, you start learning. I'm never disappointed.
Amir M.
Data Platform Tech Lead
QuotationMarkI'm always learning. So when I got on to O'Reilly, I was like a kid in a candy store. There are playlists. There are answers. There's on-demand training. It's worth its weight in gold, in terms of what it allows me to do.
Mark W.
Embedded Software Engineer

You might also like

编写整洁的Python代码(第2版)

编写整洁的Python代码(第2版)

Posts & Telecom Press, Mariano Anaya
生成式人工智能可视化

生成式人工智能可视化

Priyanka Vergadia, Valliappa Lakshmanan
AI工程

AI工程

Chip Huyen

Publisher Resources

ISBN: 0642572270117