CANN/ops-nn AdvanceStep算子
AdvanceStep
【免费下载链接】ops-nn本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。项目地址: https://gitcode.com/cann/ops-nn
产品支持情况
| 产品 | 是否支持 |
|---|---|
| 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。 $$
$$ blockTablesStride = blockTables.stride(0) $$
$$ inputTokens[blockIdx] = sampledTokenIds[blockIdx] $$
$$ inputPositions[blockIdx] = seqLens[blockIdx] $$
$$ seqLens[blockIdx] = seqLens[blockIdx] + 1 $$
$$ 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 | 属性 |
| INT | - |
| numQueries | 属性 |
| INT | - |
| blockSize | 属性 |
| INT64 | - |
约束说明
无
调用说明
| 调用方式 | 调用样例 | 说明 |
|---|---|---|
| aclnn调用 | test_aclnn_advance_step | 通过aclnnAdvanceStep接口方式调用AdvanceStep算子。 |
| aclnn调用 | test_aclnn_advance_step_v2 | 通过aclnnAdvanceStepV2接口方式调用AdvanceStep算子。 |
| 图模式调用 | - | 通过算子IR构图方式调用AdvanceStep算子。 |
【免费下载链接】ops-nn本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。项目地址: https://gitcode.com/cann/ops-nn
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
