Generated with sparks and insights from 27 sources

Introduction

  • 模型参数量和显存的关系: 模型的参数量直接影响显存的需求。一般来说,参数量越大,所需显存也越大。

  • 参数类型和显存占用: 大多数模型参数是float32类型,每个参数占用4个字节。使用float16可以将显存需求减半。

  • 推理显存计算: 推理时,显存主要用于存储模型参数和中间计算结果。每10亿个float32参数大约需要4GB显存。

  • 训练显存计算: 训练时,显存需求更高,因为还需要存储梯度和优化器状态。一般来说,训练显存需求是推理显存的3-4倍。

  • 显存优化策略: 可以通过降低batch size、使用混合精度训练、量化模型等方法来减少显存需求。

模型参数量 [1]

  • 定义: 模型参数量是指模型中所有参数的总数,包括权重和偏置。

  • 单位: 参数量通常以“B”表示,代表十亿。例如,7B表示70亿个参数。

  • 影响: 参数量越多,模型的复杂度和精度越高,但也需要更多的计算资源。

  • 示例: LLaMA-7B模型有大约70亿个参数。

  • 存储: 参数通常以32位浮点数(float32)存储,每个参数占用4个字节。

显存计算 [2]

  • 参数显存占用: 每个float32参数占用4个字节。10亿个参数大约需要4GB显存。

  • 梯度显存占用: 训练时,每个参数还需要存储梯度,占用与参数相同的显存。

  • 优化器显存占用: Adam优化器需要额外的2倍显存来存储动量和二阶动量。

  • 中间计算显存: 推理和训练过程中,中间计算结果也需要显存。

  • 总显存公式: 显存占用=模型显存(参数)+batch_size×每个样本显存(输出和梯度动量)。

推理显存需求 [3]

  • 计算方法: 每10亿个float32参数大约需要4GB显存。

  • 半精度推理: 使用float16可以将显存需求减半,每10亿个参数需要2GB显存。

  • 量化推理: 使用int8量化可以进一步减少显存需求,每10亿个参数需要1GB显存。

  • 示例: LLaMA-7B模型在float32下需要约26GB显存,在float16下需要约13GB显存。

  • 注意事项: 推理过程中还需要额外的显存来存储中间计算结果。

训练显存需求 [4]

  • 显存需求: 训练时显存需求是推理显存的3-4倍。

  • 梯度存储: 每个参数需要存储梯度,占用与参数相同的显存。

  • 优化器状态: Adam优化器需要额外的2倍显存来存储动量和二阶动量。

  • 中间计算: 训练过程中,中间计算结果也需要显存。

  • 示例: 7B模型在float32下训练需要约78-104GB显存。

显存优化策略 [2]

  • 降低batch size: 减少每次训练的样本数量可以减少显存需求。

  • 使用混合精度训练: 结合使用float16和float32可以减少显存占用。

  • 模型量化: 使用int8或int4量化模型参数可以显著减少显存需求。

  • 分布式训练: 将模型和数据分布到多个GPU上,可以减少单个GPU的显存压力。

  • 内存卸载: 将部分显存内容转移到内存中,但会降低训练速度。

Related Videos

<br><br>

<div class="-md-ext-youtube-widget"> { "title": "\u5982\u4f55\u77e5\u9053\u4e00\u4e2a\u5927\u6a21\u578b\u5728\u63a8\u7406\u548c\u8bad\u7ec3\u65f6\u9700\u8981\u591a\u5c11\u663e\u5b58\uff1f", "link": "https://www.youtube.com/watch?v=Z9eV9mbB6uY", "channel": { "name": ""}, "published_date": "Mar 13, 2024", "length": "" }</div>

<div class="-md-ext-youtube-widget"> { "title": "\u5927\u6a21\u578b\u8bad\u7ec3\u9700\u8981\u591a\u5c11GPU\uff1f\u5927\u6a21\u578b\u663e\u5b58\u600e\u4e48\u7b97\uff1f #\u5927\u6a21\u578b#AI\u7cfb\u7edf", "link": "https://www.youtube.com/watch?v=VO4DhPXT544", "channel": { "name": ""}, "published_date": "Dec 4, 2023", "length": "" }</div>

<div class="-md-ext-youtube-widget"> { "title": "\u5927\u6a21\u578b\u63a8\u7406\u9700\u8981\u591a\u5927\u7684\u663e\u5b58\uff1f #\u5927\u6a21\u578b#AI\u7cfb\u7edf #\u63a8\u7406 #\u663e\u5b58", "link": "https://www.youtube.com/watch?v=BbCvp4N3LrY", "channel": { "name": ""}, "published_date": "Dec 6, 2023", "length": "" }</div>