ai-infra-interview-305

第 164 题:大模型权重的高效加载?memory mappinglazy loading

题目

大模型权重的高效加载?memory mappinglazy loading


完整讲解

一、大模型权重加载的难点

参数量大(数十 GB 到数百 GB),若一次性读入内存再搬到 GPU,会占满内存或显存、启动慢且可能 OOM。需要按需、分块、低峰值的加载方式。

二、Memory Mapping(mmap)

mmap:把 checkpoint 文件映射到进程地址空间,不立刻读入物理内存;访问某段时由 OS 按需调页。这样多进程或多次访问同一文件可共享物理页,且峰值内存接近「当前用到的部分」而非整个文件。safetensors 与部分格式支持按 key 的 offset 做 mmap,加载时只映射、实际张量在首次访问或拷贝到 GPU 时才读入,适合单机多卡或推理时按层加载。

三、Lazy Loading

Lazy loading:不一次性加载全部参数,而是按层或按模块在首次前向用到时再加载并可选地释放已用层(如流水线推理)。实现上:state_dict 按 key 或按层组织;加载器只建「占位」或只读 meta,实际 tensor 在 forward 到该层时从磁盘读入并填到设备。可结合 mmap:文件 mmap,按需读对应 offset 到 GPU。这样显存峰值约为「单层或若干层」而非全模型,适合超大模型推理与多卡分片加载。


面试要点


记忆要点

  1. 大模型加载 = 避免整文件进内存;mmap = 按需调页、峰值低。
  2. Lazy loading = 按层/按 key 用时再加载;可释放已用层;适合推理与分片。
  3. safetensors + mmap + 按 key 加载是常见组合。
返回模块 返回总览