本文档记录 all-MiniLM-L6-v2 在昇腾NPU上的适配与验证结果。
all-MiniLM-L6-v2 是 sentence-transformers 库中的一款轻量级句子嵌入模型,将句子映射到384维稠密向量空间,可用于聚类、语义搜索等任务。
相关资源:
| 组件 | 版本 |
|---|---|
python | 3.10 |
torch | 2.5.1 |
torch-npu | 2.5.1 |
transformers | 5.8.1 |
sentence-transformers | 5.5.0 |
8 卡(型号 910B3)conda create -n all-MiniLM-L6-v2 python=3.10 -y
conda activate all-MiniLM-L6-v2安装PyTorch和torch-npu(使用华为源加速):
pip install torch==2.5.1 torchvision torchaudio -f https://download.pytorch.org/whl/torch_npu.html
pip install torch-npu==2.5.1 -f https://download.pytorch.org/whl/torch_npu.html安装NLP相关库:
pip install transformers sentence-transformers -i https://repo.huaweicloud.com/repository/pypi/simple安装系统依赖(部分昇腾组件需要):
pip install decorator psutil attrs cloudpickle tornado ml-dtypes scipy原始模型目录包含以下文件:
all-MiniLM-L6-v2/
├── 1_Pooling/ # 池化层配置
├── config.json # 模型配置
├── config_sentence_transformers.json
├── configuration.json
├── data_config.json
├── model.safetensors # 模型权重(safetensors格式)
├── modules.json
├── pytorch_model.bin # 模型权重(PyTorch格式)
├── sentence_bert_config.json
├── special_tokens_map.json
├── tokenizer.json
├── tokenizer_config.json
└── vocab.txt# 默认使用NPU推理(如可用)
python inference.py
# 使用CPU推理
python inference.py --device cpu
# 自定义输入文本
python inference.py --texts "Hello world" "NPU is fast"
# 指定模型路径
python inference.py --model-path /path/to/model| 参数 | 说明 | 默认值 |
|---|---|---|
--model-path, -m | 模型路径 | /data/xxy/all-MiniLM-L6-v2 |
--device, -d | 运行设备:cpu、npu、auto | auto |
--texts, -t | 输入文本列表 | 内置测试句 |
--batch-size, -b | 批处理大小 | 32 |
--show-similarity, -s | 显示相似度矩阵 | False |
======================================================================
all-MiniLM-L6-v2 推理脚本 (昇腾NPU适配版)
======================================================================
[INFO] 检测到 8 个NPU设备可用
[INFO] 正在加载模型: /data/xxy/all-MiniLM-L6-v2
[INFO] 使用设备: npu
[INFO] 模型加载完成
[INFO] 开始编码 6 条文本...
[INFO] 编码完成,耗时: 0.023秒
[INFO] 输出向量维度: (6, 384)
[RESULT] 向量统计:
- 形状: (6, 384)
- 数据类型: float32
- 均值范围: [-0.0249, 0.0312]
- 标准差范围: [0.9982, 1.0000]
[INFO] 推理完成!python benchmark.py --log-file log.txt评测日期:2026-05-17
| 指标 | 数值 |
|---|---|
| 测试样本数 | 20 |
| 批处理大小 | 32 |
| 平均相对误差 | 0.1172% |
| 最大相对误差 | 0.1853% |
| 平均余弦相似度 | 0.999999 |
| 精度检查 | PASS ✓ |
| 设备 | 平均延迟 | 吞吐量 |
|---|---|---|
| CPU | 717.76 ms | 202.02 tokens/s |
| NPU | 22.88 ms | 6336.07 tokens/s |
| 加速比 | 31.36x |
精度要求:NPU与CPU输出误差 < 1%
评测方法:
评测结果满足精度要求。
适配后的文件组织如下:
all-MiniLM-L6-v2-ascend/
├── inference.py # NPU适配推理脚本
├── benchmark.py # 精度与性能评测脚本
├── log.txt # 评测运行日志
└── README.md # 本文档环境隔离:建议为每个模型创建独立的Conda环境,避免依赖冲突。
NPU初始化:首次在NPU上运行模型时需要进行图编译,耗时较长,后续运行会显著加速。
精度波动:NPU与CPU的少量数值误差(<1%)是正常现象,主要由浮点运算精度差异导致。
性能调优:如需进一步提升NPU性能,可调整以下环境变量:
export PYTORCH_NPU_ALLOC_CONF=expandable_segments:True检查torch-npu是否正确安装:
python -c "import torch; print(torch.npu.is_available())"如果精度误差超过1%,请检查:
减小批处理大小:
python inference.py --batch-size 16