您问了一个非常棒的问题!这正是理解大模型运作机制的关键。在大模型的训练和推理过程中,内存、显存和外存形成了一个精密协作的“流水线”,每一环都至关重要。

我们可以用一个 “厨房备餐和炒菜” 的比喻来理解这个过程:

  • 外存:巨大的食材仓库(存放所有原始食材和预制菜)。
  • 内存:厨房里的操作台和临时储物柜(用于准备和暂存食材)。
  • 显存灶台和炒锅(真正进行烹饪的地方,火力旺但空间有限)。

下面我们分别从训练推理两个阶段来看它们是如何协作的。


一、 大模型训练过程中的协作

训练是一个极其耗费资源的过程,目标是让模型“学习”知识。

1. 外存的角色:知识的永久宝库
  • 存储海量训练数据:存放原始的、未经处理的万亿级Token文本数据。
  • 存储模型检查点:在训练过程中,会定期将模型的完整状态(参数、优化器状态等)保存到外存,防止训练中断丢失进度。这些检查点文件通常非常大(几十GB到几百GB)。
2. 内存的角色:高效的数据准备区
  • 数据加载与预处理:训练数据从外存(硬盘)被批量加载到内存。在内存中进行复杂的预处理操作,如分词、打乱顺序、组成Batch等。
  • 容纳模型分区:当模型太大,无法全部放入显存时(即使用模型并行技术),内存会充当不同GPU之间数据交换的中转站。
  • 存储优化器状态:在某些优化技术(如ZeRO-Offload)中,为了节省显存,会将优化器的状态和梯度存放在内存中,需要时再与显存交换。
3. 显存的角色:核心的“学习”车间
  • 存储模型参数:当前正在被训练的模型层(或子模型)的参数(权重和偏置)必须全部加载到显存中。
  • 存储中间激活:在前向传播过程中,每一层的输出(激活)都需要暂存在显存中,以便在反向传播时计算梯度。这是显存占用的一个大头
  • 进行计算:GPU的数千个核心在显存中读取模型参数和输入数据,进行庞大的矩阵乘法运算(前向传播和反向传播)。
  • 存储梯度和优化器状态:计算出的梯度以及优化器(如Adam)的动量、方差等状态也存储在显存中。

训练过程的协作流程:
外存(训练数据) -> 内存(数据预处理成Batch) -> 显存(模型计算、生成梯度) -> 内存(梯度聚合/优化器状态offload) -> 外存(保存模型检查点)

训练的核心瓶颈:

  • 显存容量:是最大的瓶颈。它直接决定了单个GPU所能训练的模型大小。为了解决这个问题,诞生了各种技术,如:
    • 混合精度训练:使用FP16/BF16,减少参数和激活的显存占用。
    • 梯度检查点:以时间换空间,只保留部分层的激活,其余的在前向传播后丢弃,在反向传播时重新计算。
    • 模型并行:将模型的不同层分布到多个GPU的显存中。
    • ZeRO:将优化器状态、梯度和参数在多个GPU间进行分片,极大减少单卡显存占用。

二、 大模型推理过程中的协作

推理是使用训练好的模型来回答问题或生成文本,对延迟和吞吐量要求很高。

1. 外存的角色:模型档案库
  • 存储最终的模型权重文件:存放已经训练完毕、可供部署的模型文件(如.bin.safetensors文件)。
2. 内存的角色:快速的模型加载缓冲区
  • 模型加载中转站:在服务启动时,整个模型会首先从外存(如SSD)加载到内存中。对于非常大的模型,这甚至需要一个“加载时间”。
  • KV Cache缓存(在某些配置下):对于自回归生成(如GPT),为了加速,需要缓存之前所有Token的Key和Value向量。如果序列很长,这个缓存会非常大,当显存放不下时,部分缓存可能会被放在内存中。
3. 显存的角色:高速的推理引擎
  • 存储模型参数:为了达到最快的推理速度,理想情况下整个模型都应被加载到显存中。
  • 进行计算:GPU核心读取显存中的参数和输入Tokens,进行前向计算,生成下一个Token。
  • 存储KV Cache:在生成过程中,缓存已生成序列的Key和Value向量,避免重复计算,这是推理显存占用的主要部分之一。

推理过程的协作流程:
外存(模型文件) -> 内存(模型加载缓冲区) -> 显存(模型驻留并进行高速推理)

推理的核心挑战与解决方案:

  • 挑战1:模型大于单卡显存
    • 解决方案:使用模型并行(如Tensor Parallelism)将模型拆分到多个GPU显存中。
  • 挑战2:长序列导致KV Cache过大
    • 解决方案:使用PageAttention(vLLM框架的核心技术)等技术,像操作系统管理内存一样高效管理KV Cache,减少碎片和浪费。
  • 挑战3:服务多个用户(高并发)
    • 解决方案:需要同时将多个用户的请求(多个输入序列)的模型参数和KV Cache都放入显存,这对显存容量是巨大考验。同样通过vLLM等高效调度技术来优化。
  • 当显存不足时:如果显存无法容纳整个模型,系统会退而求其次,将不常用的层或部分参数保留在内存中,在需要时与显存交换,但这会显著增加推理延迟

总结

过程 外存 内存 显存
训练 原始数据仓库、模型检查点存档 数据预处理区、梯度/优化器中转站 核心计算车间,存放模型、激活、梯度
推理 模型权重档案库 模型加载缓冲区、可能的KV Cache扩展 高速推理引擎,理想情况下常驻全部模型和KV Cache

核心规律:数据流的方向是从慢速、大容量的存储,流向快速、小容量的存储,最终在显存中完成最密集的计算。整个AI基础设施的优化,很大程度上就是围绕着如何高效、智能地管理这三者之间的数据流动和存储,以克服显存容量的限制。

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐