---
title: vLLM-Ascend 部署 Embedding 模型前缀缓存精度问题分析与优化-官方技术文章-昇腾社区
description: 随着大模型在推荐系统、搜索排序等场景的广泛应用&#xff0c;Embedding 模型作为核心组件&#xff0c;其推理精度与性能备受关注。在基于昇腾 Atlas 800I A2 服务器部署 vLLM-Ascend 推理框架时&#xff0c;为了提升高并发场景下的吞吐量&#xff0c;通常建议开启 Prefix Caching&#xff08;前缀缓存&#xff09;特性。  然而&#xff0c;在
keywords: LLM,Ascend,部署,Embedding,模型前缀缓存,精度问题分析,与优化,官方技术文章
url: https://www.hiascend.com/developer/techArticles/20260717-7
section: (其他)
---

# vLLM-Ascend 部署 Embedding 模型前缀缓存精度问题分析与优化-官方技术文章-昇腾社区

URL: https://www.hiascend.com/developer/techArticles/20260717-7
描述: 随着大模型在推荐系统、搜索排序等场景的广泛应用&#xff0c;Embedding 模型作为核心组件&#xff0c;其推理精度与性能备受关注。在基于昇腾 Atlas 800I A2 服务器部署 vLLM-Ascend 推理框架时&#xff0c;为了提升高并发场景下的吞吐量&#xff0c;通常建议开启 Prefix Caching&#xff08;前缀缓存&#xff09;特性。  然而&#xff0c;在
关键词: LLM,Ascend,部署,Embedding,模型前缀缓存,精度问题分析,与优化,官方技术文章

官方技术文章 [了解详情](https://www.hiascend.com/zh/developer/techArticles)

vLLM-Ascend 部署 Embedding 模型前缀缓存精度问题分析与优化

vLLM-Ascend 部署 Embedding 模型前缀缓存精度问题分析与优化

昇腾部署

发表于: 2026/07/17

16

0

## 1. 背景概述

随着大模型在推荐系统、搜索排序等场景的广泛应用，Embedding 模型作为核心组件，其推理精度与性能备受关注。在基于昇腾 Atlas 800I A2 服务器部署 vLLM-Ascend 推理框架时，为了提升高并发场景下的吞吐量，通常建议开启 Prefix Caching（前缀缓存）特性。

然而，在实际验证 Qwen3-Embedding-8B 模型时，我们发现开启该特性后，NPU 侧的输出结果与 GPU 侧存在显著差异，且同一次服务内的多次请求输出也不稳定。

## 2. 问题现象

在 Atlas 800I A2 机器上，使用 vLLM-Ascend 0.15.0RC1 版本部署 Qwen3-Embedding-8B 模型，对比 NPU 与 GPU 的输出结果，发现以下现象：

1.

首次请求对齐，后续请求偏差大：NPU 与 GPU 的第一次请求响应相似度较高，但随着请求次数增加，NPU 输出的向量与 GPU 输出的向量差距逐渐拉大，相似度显著降低。

2.

NPU 内部输出不稳定：在 NPU 侧，同一次服务会话内的多次请求，其响应结果之间也存在较大差异，相似度低；而 GPU 侧在同一次服务内的请求输出结果保持高度一致。

3.

前缀缓存后恢复正常：当`enable_prefix_caching`特性后，NPU 侧的多次请求输出结果保持一致，且与 GPU 输出高度对齐。该现象在升级至 vLLM 0.17.0 版本后依然复现。

## 3. 原因分析

### 3.1 现象复现与初步定位

通过对比模型请求输出的相似度，我们了问题范围主要集中在 NPU 内部多次请求无法对齐。

●

输入 Token 数分析：在代码中添加对输入 Token 数（`num_tokens`）的打印日志。对比发现，NPU 侧在第一次请求与后续请求的 Batch 结果不一致。

●

前缀缓存命中关联：进一步分析发现，输入 Token 数的变化与是否命中前缀缓存有关。当 Block Size 满 128 时触发前缀缓存命中，此时命中的请求出现了精度无法对齐的情况。由此推测，前缀缓存特性的逻辑实现可能存在缺陷。

### 3.2 根因定位

经过深入代码审查，定位到问题的根本原因在于 Pooling Model（池化模型）的 Attention 计算逻辑与前缀缓存特性不兼容。

具体而言，在 vLLM-Ascend 0.13-0.17 版本中，Pooling Model 的 Attention 计算调用的是`torch_npu.npu_fusion_attention`算子，该算子不使用 KV Cache。由于前缀缓存（Prefix Caching）的核心机制依赖于 KV Cache 的复用，当 Attention 计算不依赖 KV Cache 时，前缀缓存特性无法正确工作，从而导致精度异常。

相关代码逻辑位于`vllm_ascend/attention/attention_v1.py`中的`AscendAttentionBackendImpl`类的`forward`方法中。

## 4. 解决措施

### 4.1 临时解决方案

在当前的 vLLM-Ascend 版本中，若需保证 Embedding 模型的推理精度，建议前缀缓存特性。

●

操作方式：在启动推理服务时，添加`--no-enable-prefix-caching`参数。

●

影响评估：此方案可确保精度与 GPU 对齐，但会牺牲部分推理性能（主要是吞吐量），因为无法复用历史请求的 KV Cache。

### 4.2 长期解决方案

从代码逻辑层面改进，使 Pooling Model 支持前缀缓存特性，或优化 Attention 算子的调用逻辑以兼容 KV Cache。

●

跟踪进展：该问题已在开源社区提交 Issue 进行跟踪，Issue 链接：https://github.com/vllm-project/vllm-ascend/issues/7192 [了解详情](https://github.com/vllm-project/vllm-ascend/issues/7192)

●

建议：关注 vLLM-Ascend 后续版本的更新，待相关逻辑修复后，可重新开启前缀缓存以兼顾性能与精度。

## 5. 总结

在昇腾平台上部署 Embedding 类模型时，需注意模型架构特性与推理框架优化特性的兼容性。当前版本中，Pooling Model 因 Attention 算子实现机制限制，暂不支持前缀缓存特性。在遇到类似精度问题时，可优先检查是否开启了不兼容的优化特性，并根据业务对精度和性能的权衡，选择合适的配置策略。

边框设置

无框线

边距

宽度

1磅

颜色

自由布局设置

整体布局

子模块

评论

修订记录

对正文进行的文本增删、样式修改都将标记为修订

自定义多级列表

列表设置

- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9

- 1.
- a.
- i.
- 1.
- a.
- i.
- 1.
- a.
- i.

前缀

无

序号

1 2 3 ...

后缀

.

编号格式

列表显示

继承层级

不继承

位置

对齐方式

默认

单元格边距

边距

默认

左边距

cm

右边距

cm

上边距

cm

下边距

cm

点赞 0

本页内容

1. 背景概述 [了解详情](https://www.hiascend.com/#5hj5phhWZQ8PE0yMZuoxk9)

2. 问题现象 [了解详情](https://www.hiascend.com/#7lneL0SCfe3QLEKAD5f0WH)

3. 原因分析 [了解详情](https://www.hiascend.com/#6hF3dlKhMNirlpvyq39pD1)

4. 解决措施 [了解详情](https://www.hiascend.com/#9kJHOSOPMoLpMbtsmW8ps)

5. 总结 [了解详情](https://www.hiascend.com/#5o8ZjNXLbklvgT4loGgd6g)
