更新KvCache中指定位置的[object Object]和[object Object]。
输入输出支持以下场景:
场景一:
[object Object]场景二:
[object Object]其中
[object Object]与[object Object]可以不同,也可以相同。场景三:
[object Object]
上述场景根据构造的参数来区别,符合第一种入参构造走场景一,符合第二种构造走场景二,符合第三种构造走场景三。场景一、场景二没有[object Object]、[object Object]、[object Object]这三个可选参数。
[object Object]
- key(
[object Object]):必选参数。表示待更新的key值,当前step多个token的[object Object],支持3维或4维。数据类型支持[object Object]、[object Object]、[object Object]、[object Object]、[object Object]、[object Object]、[object Object]、[object Object]、[object Object]、[object Object]、[object Object]、[object Object],数据格式支持。 - value(
[object Object]):必选参数,表示待更新的value值,当前step多个token的[object Object],支持3维或4维,数据类型和数据格式与[object Object]保持一致。 - key_cache(
[object Object]):必选参数,表示需要更新的key cache,当前layer的key cache,只支持4维,数据类型和数据格式与[object Object]保持一致。 - value_cache(
[object Object]):必选参数,表示需要更新的value cache,当前layer的value cache。只支持4维,数据类型和数据格式与[object Object]保持一致。 - slot_mapping(
[object Object]):必选参数,表示每个token key或value在cache中的存储偏移,数据类型支持[object Object]和[object Object],数据格式支持。 - compress_lens(
[object Object]):可选参数,表示压缩量,数据类型与[object Object]一致,数据格式支持,默认值为None。 - compress_seq_offsets(
[object Object]):可选参数,表示每个batch每个head的压缩起点,数据类型与[object Object]一致,数据格式支持,默认值为None。 - seq_lens(
[object Object]):可选参数,表示每个batch的实际seqLens,数据类型与[object Object]一致,数据格式支持,默认值为None。
无返回值,[object Object]和[object Object]会被原地更新。
- 输入参数不支持非连续;
[object Object]、[object Object]、[object Object]、[object Object]的数据类型必须一致;[object Object]、[object Object]、[object Object]、[object Object]的数据类型必须一致;[object Object]的值范围[0, num_blocks * block_size-1],且[object Object]内的元素值保证不重复,重复时不保证正确性;- 当
[object Object]和[object Object]都是3维,则[object Object]和[object Object]的前两维[object Object]必须相同; - 当
[object Object]和[object Object]都是4维,则[object Object]和[object Object]的前三维[object Object]必须相同,且[object Object]和[object Object]的第三维必须是1; - 当
[object Object]和[object Object]是4维时,[object Object]、[object Object]为必选参数;当[object Object]和[object Object]是3维时,[object Object]、[object Object]、[object Object]为可选参数; - 当
[object Object]和[object Object]都是4维时,[object Object]是二维,且[object Object]的第一维值等于[object Object]的第一维为[object Object],[object Object]的第二维值等于[object Object]的第三维为num_head(对应场景三); - 当
[object Object]和[object Object]都是4维时,[object Object]是一维,且[object Object]的值等于[object Object]的第一维为batch(对应场景三); [object Object]和[object Object]里面的每个元素值必须满足公式:reduceSum(seq_lens[i] - compress_lens[i]) <= num_blocks * block_size(对应场景三);
单算子模式调用
[object Object]图模式调用
[object Object]