在llama的微调场景中的unpad方案调用算子,Transformer的encoder过程中,序列长度不再按照最大长度计算,根据实际的长度进行计算(向上pad到16倍数),减少计算量。
struct PadWithHiddenStateParam { std::vector<int32_t> qSeqLen; int32_t maxSeqLen; bool operator==(const PadWithHiddenStateParam &other) const { return this->qSeqLen == other.qSeqLen && this->maxSeqLen == other.maxSeqLen; } };
成员名称 |
描述 |
---|---|
qSeqLen |
每个batch的实际输入长度。元素个数为batchSize。 |
maxSeqLen |
qSeqLen中最大输入长度。 |
参数 |
维度 |
数据类型 |
格式 |
描述 |
---|---|---|---|---|
x |
[nTokens, hiddenSize] |
float16 |
ND |
pad前不带冗余的tensor。与unpad输出shape一致。 |
参数 |
维度 |
数据类型 |
格式 |
描述 |
---|---|---|---|---|
output |
[batchSize, maxSeqLen, hiddenSize] |
float16 |
ND |
pad后带冗余的tensor。与unpad输入shape一致。 |