Fengshenbang/Erlangshen-RoBERTa-330M-NLI 是一个基于 RoBERTa 架构的中英文自然语言推理(NLI)模型,参数量为 330M。该模型使用 BERT 架构进行分类,支持三个标签:CONTRADICTION(矛盾)、NEUTRAL(中性)、ENTAILMENT(蕴含)。
| 组件 | 版本 |
|---|---|
| NPU | Ascend 910 |
| CANN | 25.5.2 |
| PyTorch | 2.x (with NPU support) |
| torch_npu | NPU兼容版本 |
| Python | 3.x |
由于该模型为 BertForSequenceClassification(编码器模型),无法使用 vLLM 进行推理。使用原生 PyTorch + torch_npu 进行推理。
# 运行推理
python3 inference.pypython3 -c "
import torch
from transformers import AutoTokenizer, AutoModelForSequenceClassification
model_path = 'model/Fengshenbang/Erlangshen-RoBERTa-330M-NLI'
tokenizer = AutoTokenizer.from_pretrained(model_path)
model = AutoModelForSequenceClassification.from_pretrained(model_path)
model.to('npu:0')
model.eval()
premise = '一个男人在演奏吉他。'
hypothesis = '这个人在弹奏乐器。'
inputs = tokenizer(premise, hypothesis, return_tensors='pt', truncation=True, max_length=512)
inputs = {k: v.to('npu:0') for k, v in inputs.items()}
with torch.no_grad():
outputs = model(**inputs)
pred = torch.argmax(outputs.logits, dim=-1).item()
id2label = {0: 'CONTRADICTION', 1: 'NEUTRAL', 2: 'ENTAILMENT'}
print(f'预测结果: {id2label[pred]}')
"| 指标 | CPU | NPU (Ascend 910) |
|---|---|---|
| 平均推理时间 | 384.53 ms | 32.13 ms |
| 加速比 | 1x | 11.97x |
精度验证方法:在 CPU 和 NPU 上分别运行相同的 NLI 测试用例,对比输出 logits 差异。
| 指标 | 数值 |
|---|---|
| 测试用例数 | 8 |
| 标签一致率 | 100% (8/8) |
| 最大 Logit 差异 | 0.007793 (< 1%) |
| 平均 Logit 差异 | 0.002456 |
| 精度结论 | PASS |
评测材料位于 eval/ 目录:
accuracy_eval.py: 精度评测源代码accuracy.json: 精度评测结果performance.json: 性能评测结果run.log: 完整运行日志