专栏名称: GiantPandaCV
专注于机器学习、深度学习、计算机视觉、图像处理等多个方向技术分享。团队由一群热爱技术且热衷于分享的小伙伴组成。我们坚持原创,每天一到两篇原创技术分享。希望在传播知识、分享知识的同时能够启发你,大家一起共同进步(・ω<)☆
目录
相关文章推荐
GiantPandaCV  ·  图解Megatron ... ·  2 天前  
今天看啥  ›  专栏  ›  GiantPandaCV

基于 chunked prefill 理解 prefill 和 decode 的计算特性

GiantPandaCV  · 公众号  · 3D  · 2024-11-24 17:22
    

主要观点总结

本文主要介绍了SGLang中的chunked prefill技术,通过对比GPT对chunked prefill的理解与实际技术的差异,强调了理解新技术的重要性。文章详细解释了prefill和decode阶段的差异,以及其在GPU上的运行效率。同时介绍了chunked prefill的两步优化,以及transformer architecture的相关知识。最后,文章探讨了不同推理框架存在的低效原因和解决方案,强调了chunked prefill通过利用model parameters reuse来降低decode开销的重要性。

关键观点总结

关键观点1: Chunked Prefill介绍及重要性

Chunked Prefill是SGLang中的一种技术,用于处理输入prompt的所有token,并在很小的batch size时就能打满GPU utilization。它的重要性在于通过优化,提高了GPU的使用效率。

关键观点2: Prefill和Decode的差异及优化

Prefill阶段会并行处理所有token,而Decode阶段每次只生成一个token。因此,Prefill在batch size很小时就能占满GPU效率,而Decode阶段在batch size很大时才能占满。针对这些差异,chunked prefill进行了两步优化:将长短不一的prompts拆分为长短一致的chunks进行prefill,并在chunks间插入/捎带其他完成了prefill的prompts的decode需求。

关键观点3: Transformer Architecture与Chunked Prefill的关系

Transformer Architecture中的decoder block的计算可以看作是几个操作的总和,其中prefill和decode阶段的操作是一致的。Chunked Prefill针对prefill阶段进行了优化,从而提高了GPU的使用效率。

关键观点4: 推理框架的低效原因及解决方案

推理框架存在两个低效原因:decode阶段的memory boundary和pipeline parallelism带来的pipeline bubble。Chunked Prefill通过利用model parameters reuse来降低decode的开销,从而解决了这些问题。


文章预览

作者丨Chayenne Zhao 来源丨https://zhuanlan.zhihu.com/p/718715866 编辑丨GiantPandaCV 这几天尝试读懂 SGLang sever arguments 和 feature,其中非常重要的一环是 Chunked Prefilling。我直接用 Claude 和 GPT 来尝试理解这项技术,发现完全是幻觉。GPT 强调了非常久 chunked prefill 会导致模型的只能关注到当前的 chunk 和之前哪一个 chunk。然而实际上,chunked prefill 在数学上和不做 chunk 是完全等价的,可以见得对于较新的技术,现在的语言模型几乎都没有实质性掌握过。索性读了读 chunked prefill 的原文,也即这一篇《SARATHI: Efficient LLM Inference by Piggybacking Decodes with Chunked Prefills》。 https://arxiv.org/abs/2308.16369 非常好的文章,由浅入深引人入胜,于是写一篇笔记来记录关于 prefill 和 decode 学到的 insights。 Introduction Prefill 阶段会并行处理输入 prompt 的所有 token,因此很小的 batch size 就会打满 GPU ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照
总结与预览地址:访问总结与预览