性能调优#
CT-HPKV卸载工具的性能高度依赖于硬件特性与软件配置的匹配。以下调优策略帮助您在各类硬件环境下获得最优的卸载效率。
块大小#
为了更高效利用PCIe与存储带宽,CT-HPKV以块大小作为KV Cache卸载的词元数粒度(块大小vLLM中称为Block Size,SGLang中称为Page Size), 即CT-HPKV卸载和加载的KV Cache数量对应的词元数是块大小的整数倍。这种策略是符合vLLM的调度思想的(SGLang设置Page Size为1时,可以精确 复用到单个token粒度,但Page Size为1会导致RadixTree极其臃肿且性能下降,生产中一般也不会这么做)。
较大的Block Size能够有效利用传输带宽,避免传输非常小的数据片, 在生产中CT-HPKV建议使用64/128这些值。太大的Block Size可能导致尾部词 元数较多,重计算比例较高。需要部署工程师根据经验和实际场景做出平衡。
大容量#
更大容量的内存和存储能够保留更多的KV Cache数据不被驱逐,能够提升缓存命中率。
PCIe带宽#
更高的PCIe带宽能够提升显存与内存之间的传输效率。在目前成熟的技术背景下,有条件的生产场景建议使用PCIe Gen5.0 x16, 或者PCIe Gen4.0x16。 PCIe Gen4.0 x8或PCIe Gen3.0 x16收益可能很小,需要命中较长的词元数量。
存储带宽#
同PCIe带宽一致,推荐使用高性能存储系统,如NVMe SSD、HPFS等(参考IO带宽4GB/s+),尽量避免使用HDD、NAS这类低速存储系统。
RDMA带宽#
跨机和PD分离场景下,存在KV Cache的跨机传输,更高的带宽能够提升KV Cache传输性能。 CT-HPKV在PD分离场景下,扩展了NixlConnector 的功能,因此也利用到了RDMA网络进行KV Cache的传输与卸载。
词元长度阈值#
KV Cache复用与重算存在一定的平衡,如果命中的长度不够,直接重算可能会划算。然而较长的阈值,可能又会导致KV Cache命中率较低。因此, 需要工程师根据实际的场景进行平衡。
文件系统类型#
CT-HPKV推荐将 HPKV_SHARE_MEM_FILE_PATH 所在路径挂载为 ramfs 文件系统类型,确保使用的内存空间不会被交换到磁盘空间。然而,
根据CT-HPKV团队的测试,CUDA不支持Linux内核5.15及以上的内存进行 cudaHostRegister, 此时可以将文件系统类型降级为 tmpfs
类型。 我们已知的操作系统如CTyunOS 4,Ubuntu 22.04等内核版本均超过要求,只能使用 tmpfs 文件系统类型。