欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 美景 > 大模型分离架构学习记录

大模型分离架构学习记录

2024/11/30 3:25:01 来源:https://blog.csdn.net/CSDN_WHB/article/details/142183541  浏览:    关键词:大模型分离架构学习记录

1、大模型相关名词

  • TOE(TCP Offload Engine)是指TCP卸载引擎。它是一种网络技术,通过将TCP/IP协议栈的一部分处理任务从主机的CPU卸载到网卡; 也就是RDMA
  • NVLink :在单台服务器内 8 块 GPU 卡通过 NVLink 连接。不同服务器之间的 GPU 卡通过 RDMA 网络连接。
  • SLO(Service Level Objective) 服务水平目标
  • TTFT(Time To First Token) prefill首token耗时
  • TPOT(Time Per Output Token) decode 每token耗时
  • TBT (Time Between Tokens) 两个 token 生成间的延迟
  • DP 数据并行
  • TP 张量并行
  • PP 流水线并行
  • MFU(Model FLOPs Utilization):即模型算力利用率
  • VRAM (video Ram) : 显存

2、大模型分离架构背景

大模型分离架构是指将预填充(prefill)及解码(decode)逻辑拆分到2台机器上执行,旨在

  1. 将更好性能的GPU分配到compute_bound的prefill阶段;将其他机器分配到memory_bound的decode阶段,提高吞吐

  2. 可以根据prefill及decode的特点,在batchsize及并行策略上进行独立优化

3、分离架构性能实验论文

3.1  DistServe实验数据

(分离式架构可以在同等TTFT和TPOT下提升吞吐)

参考文章:https://aijishu.com/a/1060000000472929

decode场景可以提高batch size (input token数)(右); 但是prefill阶段batch size很容易打到上限(左)

  • 3.2 batch执行方式分析 参考

4、分离架构优化点

  • 充分利用GPU机器上的CPU、DRAM、SSD资源实现KVCache
  • 分离后更有利于prefill和decode的独立优化
    • batch size (prefill和decode的上限不同,后者更高)
    • 并行策略优化(DP,TP,PP)
      • prefill阶段:在qps较小时,更适合用tp;在qps较大时,更适合用pp
      • decode阶段:对于decode阶段,随着gpu数量的增加,如果采用pp的方式,能产生更高的吞吐量;如果用tp,则能产生更低的延迟
  • 长prompt效果更加明显
  • 优化理论依据(什么场景下,既能省耗时又能提高吞吐)
    • 对于每 X byte 的 KVCache,其生成所需的算力正比于 X*hd 再乘以一个较大的常数,这里 hd 对应模型的 hidden dimension。因此只要每卡算力比如 A100 的 220TFLOPS 和每卡通讯带宽比如 CX7 的 100Gbps 的比值小于 hd 乘以这个常数,那么从远端传输 KVCache 相比原地重算不仅仅减少了计算量还减少了 TTFT。 参考
    • 分为算力和耗时两个层面
      • 算力指生成KVCache的算力一定小于直接从缓存读取KVCache的算力
      • 耗时指生成KVCache的耗时 需要大于 直接从缓存读取KVCache的耗时

5、模型推理提效的其他方式 参考

  • vLLM 提出了 Paged Attention 算法,将 attention 算法产生的连续的 key value 向量按照 block 进行组织和管理,以减少显存碎片。vLLM 还借鉴操作系统当中的虚拟内存和分页思想优化 Transformer 模型推理中产生的 KeyValue Cache,大大提高了显存当中 KV Cache 的利用效率。但 vLLM 是基于单机层面上设计,只能将 GPU 中的 block swap 到单机的内存当中。
  • SplitWise(微软)、DistServe 和 TetriInfer 将 prefill 和 decode 分离到不同的 GPU 组中以避免干扰,但它们的静态并行性和分区策略并不灵活,无法处理动态工作负载。
  • Infinite-LLM 针对 long context 场景提出分布式 DistAttention,将 KV Cache 分割成 rblock,一个 node 可以借用别的 node 上的空闲显存。但它没有做 prefill/decode 分离,并且仍然需要周期性的 KV Cache 迁移来维持局部性,并且没有考虑不同请求之间或不同阶段之间的弹性资源需求。

6、文章参考

  • 大模型合并及分离架构对比 https://juejin.cn/post/7408775736796872738
  • cpu_bound memory_bound及gpu计算方式讲解 https://mp.weixin.qq.com/s?__biz=Mzg2NjcwNjcxNQ==&mid=2247485453&idx=1&sn=beb642f06f3501bd235a8f42973e39fb&chksm=ce47fc79f930756f991d93f69cad36409e3dcb58e517f41f583d29609b360e9b46f6777a42b4&scene=21&poc_token=HNlC4GajIEkUH4b-GWWVXmEgS4TiLmElCs4-jRUa
  • 大模型优化方式讲解:DP、TP、PPhttps://zhuanlan.zhihu.com/p/618865052

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com