Chunk
2026/7/23大约 4 分钟
在大模型(LLM)与 AI Infra 的技术生态中,Chunk(分块/切片) 指的是将长文本、大规模数据集、或者超长上下文的激活值,按照一定的物理规则切割而成的、更小且相对独立的连续数据块。
根据你所处的具体技术管道(是做大模型应用层的 RAG,还是做底层算子编译与显存分配),Chunk 扮演着完全不同的三种物理角色:
1. 知识库与 RAG 层的“检索积木”(Text Chunking)
这是在开发大模型应用(如 LangChain、LlamaIndex 或企业本地知识库)时最常听到的定义。
- 物理本质:大模型的单次输入是有上下文窗口限制的(比如 128K Token)。你不可能把一本 50 万字的产品手册一次性全部塞进大模型,更不可能把整本书直接转成一个向量(Vector),因为这样会导致语义被极度稀疏化。
- 做法:通过 Chunking(切片算法),把长文档切成很多个固定大小(如 512 个字符)的 Chunk。
- 高级切片机理(Overlap 机制):
为了防止一句话正好在切分点被强行咔嚓切断、导致上下文语义丢失,工程师通常会设置一个重叠度(Overlap)。例如: Chunk 1存储第 1 到 500 个字。Chunk 2存储第 400 到 900 个字(400-500 字是重叠区)。- 流向:这些文本 Chunk 会被送去 Embedding(向量化),然后存入向量数据库。当用户提问时,系统精准捞出相关的 3 个 Chunk 喂给大模型。
2. 底层算子与显存优化层的“Tile 数据方块”(Computation Chunking)
如果你在编写类似 Triton 算子、FlashAttention,或者在优化大规模矩阵乘法(GEMM)时,Chunk 的含义会直接下沉到硬件级。
- 物理本质:在显卡硬件层面,由于主显存(HBM)的读取延迟非常高,而片上缓存(SRAM/Shared Memory)空间极度有限(往往只有几百 KB)。
- 做法:面对大模型前向传播中巨大的 $Q, K, V$ 矩阵或长文本序列,算子编译器(如 Triton)会将注意力矩阵沿着序列长度(Sequence Length)轴切成一粒一粒的 Chunk(在硬件领域通常也叫 Tile,即数据小方块)。
- 工作流:
- 每次只将一个
128 x 64的 Chunk 数据从 HBM 拉进 SRAM。 - 让 Tensor Core 当场在片上把这个 Chunk 内部的 Softmax 和矩阵乘法暴算完。
- 立刻擦除,换下一个 Chunk 进来。
这套通过将计算任务划分为物理 Chunk 的流水线,正是 FlashAttention 能够为大模型长文本训练节省几十 GB 显存的物理底牌。
3. 多通道长文本推理层(Chunked Prefill)
在现代大模型高性能推理引擎(如 vLLM、TensorRT-LLM)中,Chunk 还有一种非常硬核的动态调度定义 —— Chunked Prefill(分块首字预填)。
- 传统痛点:当用户向大模型一口气输入一个 32K Token 的超级长文本时,推理引擎需要经历一个 Prefill(首字预填) 阶段。此时 GPU 会因为当场暴算超大矩阵而进入短时间的“卡顿”状态(Compute-Bound),导致其他正在生成文本(Decode)的用户发生严重的吐字抖动和延迟。
- Chunk 优化法:现代推理引擎引入了 Chunked Prefill 技术。它将这 32K 的超长 Prompt 切成若干个固定长度(例如每次只吞 512 个 Token)的 Chunk。
- 调度魔术:引擎把这个超长任务打散,在每一个时间步(Step)里,让长文本的一个小 Chunk 与其他用户的 Decode 请求混合(Piggyback)在一起提交给 GPU。通过这种细粒度的分块吞吐,完美熨平了服务器的瞬时算力洪峰,大幅拉低了大模型线上服务的平均响应延迟。
💡 极简物理总结
在大模型世界里:
- 在应用和数仓层:Chunk 是把一本书切成的一段段标准长度的文本段落,用来做向量检索。
- 在算子与硬件层:Chunk 是把巨大矩阵打碎成的、能塞进显卡 SRAM 晶体管里暴算的小数据方块。
- 在高性能推理层:Chunk 是把超长 Prompt 拆细、分批喂给 GPU 的动态调度单元。
