GDR: 再深一点

💡 原文中文,约4900字,阅读约需12分钟。
📝

内容提要

在PD分离中,Prefill实例通过RDMA Write和GDR将数据写入Decode实例,使用阿里云的Barex库实现异步批量写入以确保数据完整性。讨论了GDR的细节及NCCL实现,强调内存顺序和ACK机制的重要性,并提出通过RDMA read确认数据写入完成的解决方案。

🎯

关键要点

  • 在PD分离中,Prefill实例通过RDMA Write和GDR将数据写入Decode实例。

  • 使用阿里云的Barex库实现异步批量写入以确保数据完整性。

  • 讨论了GDR的细节及NCCL实现,强调内存顺序和ACK机制的重要性。

  • 提出通过RDMA read确认数据写入完成的解决方案。

  • Prefill端在RDMA Write完成后可以释放对kvcache block的引用。

  • Decode端成功写入kvcache到显存,后续计算可以从显存中读取。

  • NCCL实现中,sender和receiver通过socket交换信息以完成数据写入与接收。

  • 通过ncclIbSendFifo结构,sender可以确定数据写入是否完成。

  • 使用rdma write with imm将数据写入receiver端显存,receiver通过cqe确认数据写入成功。

  • Barex的解决方案是在收到rdma write ack后发起rdma read 1byte以确认数据写入完成。

延伸问答

GDR在PD分离中有什么作用?

GDR通过RDMA Write将数据直接写入Decode实例,确保数据的高效传输。

阿里云的Barex库如何确保数据完整性?

Barex库通过异步批量写入和ACK机制来确保数据完整性。

NCCL实现中sender和receiver是如何交换信息的?

sender和receiver通过socket交换qpn、mr等信息,以完成数据的写入与接收。

如何确认RDMA Write的数据写入完成?

可以通过RDMA read确认数据写入完成,接收方在收到ACK后发起1字节的RDMA read。

Prefill实例在数据写入后会做什么?

Prefill实例在RDMA Write完成后可以释放对kvcache block的引用。

GDR的内存顺序和ACK机制有什么重要性?

内存顺序和ACK机制确保数据在传输过程中的一致性和完整性,避免数据丢失或错误。

➡️

继续阅读