通俗地解释了 AI 在创作句子时产生的内存瓶颈的主要原因——“推理过程”,以及决定这一过程的两个阶段(预填充和解码)。
想象一下:你对一位非常聪明的助理说:“请总结一下今天的会议内容。”助理在浏览了你递给她的厚厚报告后,在脑海中整理了内容并开始回答。
我们常用的 ChatGPT 等大语言模型(LLM)输出回答的“推理(Inference)”过程也与之类似。然而,在此过程中 AI 使用的内存量远超我们的想象。为了吐出一个字,有时甚至需要读取高达 26GB 的数据。究竟为什么会发生这种情况呢?
这为什么重要?
我们平时只看到 AI 瞬间给出答案的样子。但其背后是一场激烈的“数据战争”,正在不断地从内存中搬运海量数据。
理解这种内存瓶颈至关重要。因为 AI 要想在未来变得更聪明、响应速度更快,就必须了解硬件和软件如何高效管理这种巨大的数据流。简单来说,AI 服务的价格、响应速度,以及我们能否在智能手机上使用更复杂的 AI 模型,都取决于这种“推理过程的效率”。
轻松理解:AI 的两种工作方式
AI 生成回答的过程主要分为两个阶段 来源: LLM Inference Explained: Performance and Optimization Guide。
- 预填充(Prefill)阶段:打个比方,这是助理从头到尾仔细阅读你的问题或资料的时间。AI 会一次性读取输入的提示词并把握其结构 来源: I/o for LLM inference: a survey of storage and memory。
- 解码(Decoding)阶段:现在助理理解了内容,开始一个字一个字地说出答案。然而,LLM 使用了一种非常独特的方式。因为它每生成一个回答的单词,都需要重新读取模型庞大的知识库(参数) 来源: LLM inference, visually explained: why a 13B model reads 26 GB per token。
高维空间中的单词拼图
AI 看待单词不仅仅是文字。每个单词都会被转换为 4,096 维这样非常复杂的数学坐标,即“向量” 来源: What Happens Inside an LLM During Inference。在这个巨大的空间里,像“王”和“女王”这样意思相近的单词会聚集在彼此靠近的地方。AI 每生成一个回答,都要在这复杂的空间中旅行,找出最合适的下一个单词的坐标。
在此过程中会使用名为 KV 缓存(Key-Value Cache)的内存空间,这是一种预先存储之前计算信息的“记事本”。但随着模型增大,这个记事本的大小也会呈爆炸式增长,最终成为导致整个推理过程中内存瓶颈的主要元凶 来源: Multi-Head Latent Attention Explained Visually。
现状:触及内存极限
目前的 AI 服务,其性能通常取决于极致利用计算能力的“预填充”阶段,或者是触及内存带宽极限的“解码”阶段 来源: Understanding Inference Scaling for LLMs。
从实际案例来看,一个 4B(40 亿)参数的模型在每秒生成 29.5 个 Token 时,需要大约 236GB/s 的惊人内存处理速度 来源: 12. LLM Inference on DGX Spark — cuTile Rust。由于所需的 VRAM(显存)数量不仅取决于模型大小(参数数量),还取决于我们提问的长度(上下文窗口),因此高效的硬件资源管理比什么都重要 来源: LLMs & Their Size In VRAM Explained。
未来会怎样?
AI 技术人员正在齐心协力解决这一瓶颈。目前正在研究各种优化技术,例如将数据打包以便一次性处理更多数据(Continuous Batching),或最大化计算效率 来源: Why Continuous Batching Made My LLM Inference Engine Slower。
未来将进入一个时代,即我们手中的智能手机也能流畅运行更加巨大的模型。但在那一天到来之前,请记住,为了吐出一个单词,AI 此刻仍在不停地从名为“内存”的图书馆中搬运海量数据。
AI 视点(MindTickleBytes 的 AI 记者视点)
AI 技术的发展将不仅仅是提高模型的智能,更将演变为如何智慧地克服“内存”这一物理极限的博弈。打个比方,这就像是试图将整个图书馆装进脑子里。在我们能够更快速、更廉价地使用更智能的 AI 那一天到来之前,针对推理过程效率的技术挑战将永无止境。
参考资料
- LLM inference, visually explained: why a 13B model reads 26 GB per token
- Multi-Head Latent Attention Explained Visually
- 12. LLM Inference on DGX Spark — cuTile Rust
- LLM-Inference-Bench: Inference Benchmarking of Large Language Models on AI Accelerators
- AI inference, explained through one question
- GitHub - drumih/turbo-fieldfare: Gemma 26B-A4B inference in ~2GB…
- LattePanda Mu Ultra 226V Local LLM Inference Evaluation
-
[Mastering LLM Techniques: Inference Optimization NVIDIA Technical…](https://developer.nvidia.com/blog/mastering-llm-techniques-inference-optimization/) -
[Best AI Models for NVIDIA GeForce RTX 3060 12GB llmrun](https://llmrun.dev/gpu/rtx-3060-12gb) -
[AI Model & API Providers Analysis Artificial Analysis](https://artificialanalysis.ai/) - Why Continuous Batching Made My LLM Inference Engine Slower - DEV Community
- Qwen-27B Deep Dive: Architecture, Specs, and VRAM
- google/gemma-26B-A4B-it · Hugging Face
- Best Way to Run Qwen 3.6 35B MoE Locally: VRAM, Speed, Setup
- LLM Inference Explained: Performance and Optimization Guide
- LLMs & Their Size In VRAM Explained - Quantizations, Context …
- Understanding Inference Scaling for LLMs: Bottlenecks, Trade …
- What Happens Inside an LLM During Inference: Tokens, KV Cache …
- I/o for LLM inference: a survey of storage and memory …
- LLM Inference Sizing and Performance Guidance
- 学习与测试
- 预填充与解码
- 输入与输出
- KV 缓存
- 用户的问题
- CPU 速度
- 简单文本
- 高维向量
- 图像数据