2026-03-30(周一) 至 2026-04-05(周日)

🧠 本周记录

  • 确定 batch_transfer_sync_write 的完整逻辑,mooncake 先找多个request内的连续地址 重分配出来 mooncake 格式的 task,再每个 task 切成更小的 slice 给 ibv_post_send,同理再 ibv_poll_cq所有 slice,都是complete 状态后结束。 ✅ 2026-04-03
  • 机内 mooncake 传输逻辑?
  • mooncake实例化engine 和 engine initialize怎么做的?是实例化一个TransferEngineImpl 实例 ✅ 2026-04-03
  • get_rpc_port 应该怎么做?返回的是 RPC 服务的 TCP 端口,这是每个 engine 用来传输网卡注册后的 MR 索引,rkey 的 ✅ 2026-04-02
  • 怎么 batch 粒度的去 register?还需要确定使用 flagcx 现在的一堆接口中单边还是双边的 register?这里是一下注册一大块 kv cache,在通过 RPC 去交换 NIC 需要的 metadata。flagcx 内单边把自己这一块大的给注册了。✅ 2026-04-02
  • 补充开发 flagcx的注册可以拿到 Mr 的索引映射
  • 要补充开发 flagcx的注册可以拿到 Mr 的索引映射
  • 整体代码结构重构完成 ✅ 2026-04-03

🚀 本周TODO

  • 确定 mooncake 传 kv cache 的 put 操作从 python 接口 batch_transfer_sync_write 传到 c++ 接口 batchTransferSync。 ✅ 2026-04-03
  • 完成 mooncake/nixl/nccl 三类后端在推理场景下性能的分析,输出文档Vllm PD baseline-qwen3-30B ,并输入到智源整个 flagos 当前推理场景的开发方案,确定了后续 flagcx/vllm-plugin-fl 的开发方案 ✅ 2026-04-03
  • nixl 整体架构详细梳理并形成文档和@张铭俊 讨论后 输入到内部统一通信库的调研中 ✅ 2026-04-03
  • 分析vllm pd 分离 nsys 后初步确定(推理可能可做的方向有二: 一,手搓 last kernel,直接把 deepep 的通信 kernel 写到前一个 kernel 内,从 device 侧直接下机内机间通讯完成 dispatch(可能是 cuda / trition)。二,目前 P 到 D 的 kv cache 流量如果抢了大 ep alltoall 用的双口网卡其中一个网口的流量就会造成 alltoall 性能下降,咱们可做前后串行调度这些 ibv send) ✅ 2026-04-03
  • mooncake connector/ engine 源码学习 2/10
  • 完成 mooncake 传输流程梳理(task 重组与 slice 发送/完成机制),理清 engine 初始化路径及 RPC 端口在 MR 索引与 rkey 交换中的作用;同时确定 flagcx 当前采用单边大块内存注册并通过 RPC 交换元数据的实现方案。
  • 修复 flagcxOneSideRegister 的 bug,提 PR ✅ 2026-04-08
  • flagcx connector实现,放在vllm-plugin-fl;Nccl engine→flagcx engine,和mooncake性能对齐; 5. flagcx connector design&&dev&&test

2026-03-23(周一) 至 2026-03-29(周日)

🧠 本周记录

  1. FP32:4 bytes = 32 bits,BF16:2 bytes = 16 bits,INT8:1 byte = 8 bits,FP4:0.5 byte = 4 bits

🚀 本周TODO

  • vllm官方基线是啥 ✅ 2026-03-26
  • plugin+flaggem(开或关)+flagcx(开或关)情况。形成对比 ✅ 2026-03-26
  • 在文档上面给个对比表格和结论,包括测试环境 ✅ 2026-03-26
  • 看一下 nccl4py的路径上可能存在的 fopen/fcloase 调用 ✅ 2026-03-24
  • vllm官方基线是啥 ✅ 2026-03-26 这个咋定
  • plugin+flaggem(开或关)+flagcx(开或关)情况。形成对比 ✅ 2026-03-26 。。。。
  • 在文档上面给个对比表格和结论,包括测试环境 ✅ 2026-03-26

2026-03-16(周一) 至 2026-03-22(周日)

🧠 本周记录

  • self.nccl = NCCLLibrary(library_path) 就是 python 侧创建一个NCCLLibrary对象,并把这个对象给 self.nccl
  • @dataclass来修饰某个 class,就可以不用写这个类的构造函数
  • restype/argtypes “贴”到这个可调用对象上,让 ctypes 知道怎么传参/怎么解返回值
  1. flagcx_wrapper 会去把上层的 cudaStream 转发成 flagcxStream_t

🚀 本周TODO

  • 梳理完了 nccl 在 vllm 传输 kvcache,从 so 到最后传输的流程。 ✅ 2026-03-18 0. vllm 如何使用 nccl 传输 kv cache
  • vccl alltoallv b300 机内机间数据 + h200 数据,发现机间性能问题,在 H200 上 nsys 看到机间的 proxyPut 一直低于 25GB/s 尝试了在 gin.cc内的ncclGinIbProxyIPutSignal选择 QP 的时候从只选 0 变成选择多个:
原来:
struct ncclIbQp *qp = &comm->base.qps[0];
改后:
int qpIdx = cComm->qpRRCounter++ % comm->base.nqps;
struct ncclIbQp *qp = &comm->base.qps[qpIdx];

性能无变化。❌

  • 解决 flagcx 侧报错 NCCL_DEV_COMM_REQUIREMENTS_INITIALIZER 问题