文件最后提交记录最后更新时间
24 天前
1 天前
1 天前
1 天前
1 天前
1 天前
6 个月前
3 个月前
README.md

AdvanceStep

产品支持情况

产品 是否支持
Ascend 950PR/Ascend 950DT x
Atlas A3 训练系列产品/Atlas A3 推理系列产品
Atlas A2 训练系列产品/Atlas A2 推理系列产品
Atlas 200I/500 A2 推理产品 ×
Atlas 推理系列产品 ×
Atlas 训练系列产品 ×

功能说明

  • 算子功能:

    vLLM是一个高性能的LLM推理和服务框架,专注于优化大规模语言模型的推理效率。它的核心特点包括PageAttention和高效内存管理。advance_step算子的主要作用是推进推理步骤,即在每个生成步骤中更新模型的状态并生成新的inputTokens、inputPositions、seqLens和slotMapping,为vLLM的推理提升效率。

  • 计算公式:

    blockIdx是当前代码被执行的核的index。blockIdx是当前代码被执行的核的index。

    blockTablesStride=blockTables.stride(0)blockTablesStride = blockTables.stride(0)

    inputTokens[blockIdx]=sampledTokenIds[blockIdx]inputTokens[blockIdx] = sampledTokenIds[blockIdx]

    inputPositions[blockIdx]=seqLens[blockIdx]inputPositions[blockIdx] = seqLens[blockIdx]

    seqLens[blockIdx]=seqLens[blockIdx]+1seqLens[blockIdx] = seqLens[blockIdx] + 1

    slotMapping[blockIdx]=(blockTables[blockIdx]+blockTablesStride∗blockIdx)∗blockSize+(seqLens[blockIdx]%blockSize)slotMapping[blockIdx] = (blockTables[blockIdx] + blockTablesStride * blockIdx) * blockSize + (seqLens[blockIdx] \% blockSize)

参数说明

参数名 输入/输出/属性 描述 数据类型 数据格式
inputTokens 输入/输出 公式中的输入/输出inputTokens。 INT64 ND
sampledTokenIds 输入 公式中的输入sampledTokenIds。 INT64 ND
inputPositions 输入/输出 公式中的输入/输出inputPositions。 INT64 ND
seqLens 输入/输出 公式中的输入/输出seqLens。 INT64 ND
slotMapping 输入/输出 公式中的输入/输出slotMapping。 INT64 ND
blockTables 输入 公式中的输入blockTables。 INT ND
numSeqs 属性
  • 记录输入的seq数量,大小与seqLens的长度一致。
  • 取值范围是大于0的正整数。numSeqs的值大于输入numQueries的值。
INT -
numQueries 属性
  • 记录输入的Query的数量,大小与sampledTokenIds第一维的长度一致。
  • 取值范围是大于0的正整数。
INT -
blockSize 属性
  • 每个block的大小。
  • 取值范围是大于0的正整数。
INT64 -

约束说明

调用说明

调用方式 调用样例 说明
aclnn调用 test_aclnn_advance_step 通过aclnnAdvanceStep接口方式调用AdvanceStep算子。
aclnn调用 test_aclnn_advance_step_v2 通过aclnnAdvanceStepV2接口方式调用AdvanceStep算子。
图模式调用 - 通过算子IR构图方式调用AdvanceStep算子。