本文档记录 deepset_bert-base-uncased-squad2 在昇腾 NPU(Ascend910)环境的快速部署与验证结果。
AutoModel 文本嵌入模型,基于 HuggingFace transformers + sentence-transformers 框架,支持将文本转换为固定维度的语义向量,适用于句子相似度计算、语义检索等场景。
相关获取地址:
参考文档:
| 组件 | 版本 |
|---|---|
torch | 2.5.1 |
torch_npu | 2.5.1 |
transformers | >=4.48.0 |
sentence-transformers | >=3.0.0 |
CANN | 8.5.RC1 |
768128PyTorch + transformerspip install transformers torch sentence-transformersimport torch
from transformers import AutoTokenizer, AutoModel
device = torch.device("npu:0" if torch.npu.is_available() else "cpu")
tokenizer = AutoTokenizer.from_pretrained("deepset_bert-base-uncased-squad2")
model = AutoModel.from_pretrained("deepset_bert-base-uncased-squad2")
model = model.to(device).eval()
texts = ["What is machine learning?", "Hello world"]
inputs = tokenizer(texts, return_tensors="pt", padding=True, truncation=True, max_length=128)
inputs = {k: v.to(device) for k, v in inputs.items()}
with torch.no_grad():
outputs = model(**inputs)
embeddings = outputs.pooler_output
print(f"嵌入维度: {embeddings.shape}")python3 inference.py验证结果:
npu:0测试条件:FP32 / batch=2 / max_length=128 / warmup=5 / timed=50 runs,Ascend910 单卡。
| 指标 | 数值 |
|---|---|
| 平均推理时间 | 6.95 ms |
| 嵌入维度 | 768 |
| 测试次数 | 50 |
NPU 与 CPU 输出对比,使用 5 组英文测试文本,比较嵌入向量的 cosine 相似度与逐元素误差。
| 指标 | 数值 |
|---|---|
| 最小 cosine 相似度 | >0.9999 |
| 最大逐元素差异 | 0.006412 |
| 结论 | PASS |
精度要求:cosine 相似度 > 0.999,逐元素误差 < 0.01。
AutoModel 加载,输出 pooler_output 作为句子嵌入sentence-transformers 库可提供更丰富的 pooling 策略(如 CLS、MEAN、MAX)