开发者
下载
[object Object]

[object Object][object Object]undefined
[object Object]
  • 接口功能:完成因果一维卷积(Causal Conv1d)的状态更新(decode / update)计算。算子内部支持 SiLU 激活、缓存索引(cacheIndices)、投机解码(numAcceptedTokens)等特性。

  • 支持以下场景:

    • 场景一(decode/update场景 — 固定batch):

      [object Object]
    • 场景二(decode/update场景 — 投机解码变长序列):

      [object Object]

      其中cuSeqLen为batch内所有变长序列拼接后的总长度。2D变长输入仅在提供numAcceptedTokens(投机解码)时支持,非投机解码的decode场景请使用3D输入[batch, 1, dim]。

  • 计算公式:

    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 激活函数。

[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]
  • 确定性计算:

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

    • decode场景(固定batch):
      • x为3维[batch, 1, dim]。
      • 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]。
    • decode场景(投机解码变长序列):
      • x为2维[cuSeqLen, dim],必须同时提供numAcceptedTokens。
      • queryStartLocOptional为1维[batch+1],必须提供。
      • convStatesRef为3维[numCacheLines, stateLen, dim],numCacheLines ≥ batch。
      • cuSeqLen范围[batch, batch×8]。
    • 非投机解码的decode场景不支持2D变长输入,请使用3D输入[batch, 1, dim]。
  • 输入值域限制:

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

  • K为运行时参数。

[object Object]

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

[object Object]