长文本推理的瓶颈与优化
长文本推理的瓶颈
长文本推理面临的主要瓶颈包括:
-
RAG(检索增强生成)的局限性:
- 优点:无需额外训练、速度快、成本低、工程方案成熟、可设计多级检索方案。
- 缺点:Embedding召回效果直接影响模型回答效果、无法处理复杂逻辑、对多模态支持不足。
-
Long-Context(长上下文)的局限性:
- 优点:无需额外训练、上下文兼顾更全面、可处理复杂逻辑和依赖。
- 缺点:成本高、速度慢、长度有限。
-
Long-Context性能瓶颈:
- 并发性能随上下文长度增加而反比下降。
- 预填充延迟随上下文长度增长呈平方级别增长。
- 解码延迟和上下文切换开销随上下文长度增加而线性增加。
长文本推理的优化
针对Long-Context推理的优化方法包括:
-
硬件优化:
-
机器学习工程优化:
-
模型架构优化:
- MoE(Mixture of Experts)。
- Speculative Decoding。
-
相关研究进展:
- Confident Adaptive Language Modeling, 2022。
- CoLT5: Faster Long-Range Transformers with ConditionalComputation, 2023。
- LayerSkip: Enabling Early Exit Inference and Self-SpeculativeDecoding, 2024。
- You Only Cache Once: Decoder-Decoder Architectures forLanguage Models, 2024。
- GQA: Training Generalized Multi-Query Transformer Modelsfrom Multi-Head Checkpoints, 2023。
- Retrieval Head Mechanistically Explains Long-ContextFactuality, 2024。
- DeepSeek-V2: A Strong, Economical, and Efficient Mixture-of-Experts Language Model, 2024。
- KIVI: A Tuning-Free Asymmetric 2bit Quantization for KVCache, 2024。
- WKVQuant: Quantizing Weight and Key/Value Cache forLarge Language Models Gains More, 2024。
- H2O: Heavy-Hitter Oracle for Efficient Generative Inference ofLarge Language Models, 2023。
- Model Tells You What to Discard: Adaptive KV CacheCompression for LLMs, 2023。
- Dynamic Memory Compression: Retrofitting LLMs forAccelerated Inference, 2024。
- SnapKV: LLM Knows What You are Looking for BeforeGeneration, 2024。
- TriForce: Lossless Acceleration of Long Sequence Generationwith Hierarchical Speculative Decoding, 2024。
Mooncake的实践
Mooncake是一种针对LLM(大型语言模型)服务的分散式架构,其核心概念和实现包括:
-
基本概念:
- Prefill(预填充):在预填充阶段,每个新Token都取决于之前的所有Token,但由于输入的全部内容已知,此阶段是高度并行化的矩阵操作,能有效饱和GPU利用率,影响TTFT(time to first token)。
- Decode(解码):在解码阶段,LLM每次自动生成一个输出标记,直到满足停止条件为止。每个顺序输出令牌都需要知道之前迭代的所有输出状态(键和值),这像矩阵向量运算,与预填充阶段相比,无法充分利用GPU的计算能力,数据传输速度决定延迟时间,影响TPOT(time per output token)。
-
动机:
- 现有的LLM服务系统(如vLLM)通常将Prefill和Decode阶段放在同一个GPU上进行处理,导致:
- TTFT和TPOT优化不可兼得:Prefill通常比Decode耗时更长,优先调度哪个阶段会导致另一个阶段性能下降。
- GPU资源竞争:Prefill和Decode两个阶段竞争GPU资源,导致等待时间增加。
- Prefill和Decode的瓶颈不同:前者吃算力,后者吃内存和带宽,用不同特点的GPU做Prefill和Decode更有利于资源利用和成本节约。
-
Mooncake架构:
- 将单个同构GPU集群的资源打散并重新组织成三个可以独立弹性伸缩的资源池:
- Prefill Pool(预填充池)。
- Decode Pool(解码池)。
- KVCache Pool(KV缓存池)。
上下文缓存的应用
上下文缓存(Context Caching)的应用效果显著:
-
成本节省:
- 每次请求Tokens:35,000。
- 每次请求价格:2.1元。
- 存储时长:上午9点至夜间24点,共15小时。
- 存储消耗:315.84元。
- 总调用次数:639次。
- 调用消耗:12.78元。
- 不使用Cache时的请求消耗:1,341.9元。
- 最终降本幅度:75.51%,每天能节省四分之三的费用消耗。
-
适用场景:
- 特别适合用于频繁请求,重复引用大量初始上下文的场景,可以显著提高效率并降低费用。
-
实际效果:
- Under real workloads, Mooncake’s innovative architecture enables Kimito handle 75% more requests.