开发者
下载
[object Object]

[object Object][object Object]undefined
[object Object]
  • 接口功能:完成因果一维卷积(Causal Conv1d)的前向计算(prefill / chunk-prefill)。算子内部支持 SiLU 激活、缓存索引(cacheIndices)、初始状态模式(initialStateMode)等特性。

  • 支持以下场景:

    • 场景一(prefill场景 — 固定batch):

      [object Object]
    • 场景二(prefill场景 — 变长序列):

      [object Object]

      其中cuSeqLen为batch内所有变长序列拼接后的总长度。

  • 计算公式:

    Causal Conv1d 是一种因果一维卷积算子,常用于序列建模中。在每个时间步 tt,根据当前输入 xtx_t、卷积权重 ww 和历史状态,计算卷积输出 yty_t

    yt=Activation(j=0W1wjxtj+b)y_t = \text{Activation}\left(\sum_{j=0}^{W-1} w_j \cdot x_{t-j} + b\right)

    其中,WW 为卷积核宽度(支持2、3、4),wjw_j 为卷积权重,bb 为偏置(可选),Activation\text{Activation} 为激活函数(可选,SiLU)。当 [object Object] 时不使用激活函数,[object Object] 时使用 SiLU 激活函数。

    对于 t<W1t < W-1 且无历史状态时,输出为零(因果约束)。

[object Object]

每个算子分为,必须先调用 [object Object] 接口获取计算所需workspace大小以及包含了算子计算流程的执行器,再调用 [object Object] 接口执行计算。

[object Object]
[object Object]
[object Object]
  • 参数说明

    [object Object]
  • 返回值

    aclnnStatus:返回状态码,具体参见

    第一段接口完成入参校验,出现以下场景时报错:

    [object Object]
[object Object]
  • 参数说明:

    [object Object]
  • 返回值:

    返回aclnnStatus状态码,具体参见

[object Object]
  • 确定性计算:

    • aclnnCausalConv1dFn默认确定性实现。
  • 输入shape限制:

    • prefill场景(固定batch):
      • x为3维[batch, seqLen, dim],seqLen > 1。
      • weight为2维[K, dim],K∈{2,3,4}。
      • convStatesRef为3维[numCacheLines, stateLen, dim],stateLen ≥ K-1,numCacheLines ≥ batch。
      • dim范围[64, 16384]且满足 (dim * dtypeSize) % 32 == 0,batch范围[1, 1024],seqLen范围[2, 16384]。
    • prefill场景(变长序列):
      • x为2维[cuSeqLen, dim]。
      • queryStartLocOptional为1维[batch+1],必须提供。
      • convStatesRef为3维[numCacheLines, stateLen, dim],numCacheLines ≥ batch。
      • cuSeqLen范围[batch, 1024×1024]。
  • 输入值域限制:

    • queryStartLocOptional[0]必须为0,queryStartLocOptional[-1]必须等于cuSeqLen,值必须非递减。
    • cacheIndicesOptional中的值∈[0, numCacheLines),或等于nullBlockId表示跳过。nullBlockId可重复;除nullBlockId外的值不应重复,否则多个序列读写同一缓存槽位会导致历史状态错误和写入冲突。
    • initialStateModeOptional值∈{0,1}。
  • 卷积核宽度K仅支持2、3、4。

  • K为编译时已知常量,支持FnRolling快速路径优化。

  • 当存在initialStateModeOptional输入时,算子需要额外的workspace用于初始状态快照。

[object Object]

示例代码如下,仅供参考,具体编译和执行过程请参考

[object Object]