功能
FA支持按block存放的kvCache。BlockTables维度为[batch, maxBlockNum],其中每个batch对应存放当前query对应的key和value的index,maxBlockNum约为key,value中最长kvSeqLen,kvSeqLen/blockSize向上取整。
开启方式
calcType置为PREFIX_ENCODER。
特殊约束
- 不支持qScale,需设为1。
- isTriuMask需设置为1。
- kernelType必须设为KERNELTYPE_HIGH_PRECISION,因为kv计算内部均使用float32计算。
- 不支持clamp,clampMin、clampMax需设置为0。
- inputLayout只支持TYPE_BSND。
- 不支持mla,mlaVHeadSize需设为0。
- PrefixCacheLen的计算由kvseqlen减seqLen得到,由于实现方案限制,需要让prefixCacheLen 128对齐。
- headNum有如下约束:
- headNum > 0
- headNum >= kvHeadNum
- headNum是kvHeadNum的整数倍
- maskType支持MASK_TYPE_ALIBI_COMPRESS、MASK_TYPE_ALIBI_COMPRESS_SQRT或MASK_TYPE_NORM_COMPRESS。