我
yangkang11111/Erlangshen-RoBERTa-110M-Similarity-Ascend
模型介绍文件和版本Pull Requests讨论分析
下载使用量0

Erlangshen-RoBERTa-110M-Similarity on vLLM-Ascend 0.18.0rc1

1. 简介

本文档记录 Erlangshen-RoBERTa-110M-Similarity 在 vLLM-Ascend 0.18.0rc1 环境的快速部署与验证结果。

Erlangshen-RoBERTa-110M-Similarity(二郎神-RoBERTa-110M-文本相似度)是封神榜(Fengshenbang)/ IDEA-CCNL 发布的中文文本相似度模型,基于 chinese-roberta-wwm-ext-base 微调,参数量约 110M。该模型在 20 个中文复述数据集(共 277 万样本)上训练,支持二分类(similar / not similar)文本相似度判断。

相关获取地址:

  • ModelScope 权重:https://modelscope.cn/models/Fengshenbang/Erlangshen-RoBERTa-110M-Similarity
  • HuggingFace 权重:https://huggingface.co/IDEA-CCNL/Erlangshen-RoBERTa-110M-Similarity
  • Docker Image(vLLM-Ascend 0.18.0rc1):quay.io/ascend/vllm-ascend:v0.18.0rc1
  • GitHub 项目:https://github.com/IDEA-CCNL/Fengshenbang-LM

参考文档:

  • https://docs.vllm.ai/projects/ascend/zh-cn/v0.18.0/user_guide/support_matrix/supported_models.html
  • https://arxiv.org/abs/2209.02970

2. 验证环境

组件版本
vllm-ascend0.18.0rc1
vllm0.18.0+empty
transformers4.57.6
torch-npu2.9.0.post1+gitee7ba04
torch2.9.0+cpu
  • NPU:2 逻辑卡(Ascend 910)
  • 模型路径:/opt/atomgit/weights/Erlangshen-RoBERTa-110M-Similarity
  • 服务端口:8000

3. 服务启动

启动前可先检查端口:

ss -lntp | grep ':8000 ' || true

已验证通过的启动命令:

export ASCEND_RT_VISIBLE_DEVICES=0,1
export VLLM_USE_MODELSCOPE=true
export PYTORCH_NPU_ALLOC_CONF=expandable_segments:True
export HCCL_BUFFSIZE=512
export OMP_PROC_BIND=false
export OMP_NUM_THREADS=1
export TASK_QUEUE_ENABLE=1

vllm serve /opt/atomgit/weights/Erlangshen-RoBERTa-110M-Similarity \
  --host 0.0.0.0 \
  --port 8000 \
  --tensor-parallel-size 1 \
  --seed 1024 \
  --served-model-name erlangshen-roberta-110m \
  --max-num-seqs 32 \
  --max-model-len 512 \
  --trust-remote-code \
  --gpu-memory-utilization 0.85 \
  --no-enable-prefix-caching

关键参数说明:

  • --trust-remote-code:建议携带,兼容潜在自定义配置
  • --tensor-parallel-size 1:110M 模型单卡即可运行
  • --max-model-len 512:RoBERTa 最大序列长度 512
  • --gpu-memory-utilization 0.85:HBM 利用率

4. Smoke 验证

基础检查:

curl -sf http://127.0.0.1:8000/v1/models
curl -sf http://127.0.0.1:8000/classify \
  -H "Content-Type: application/json" \
  -d '{
    "model": "erlangshen-roberta-110m",
    "input": "今天心情不好[SEP]今天很开心"
  }'

验证结果:

  • /v1/models 返回 200,模型已加载
  • /classify 返回 200,分类结果正确

注意:BERT 类模型(encoder-only)在 vLLM 中使用 /classify 端点,而非 /v1/completions 或 /v1/chat/completions。

5. 性能参考

测试条件:14 tokens 输入,API 级基准测试。

指标数值
Latency mean10.1 ms
Latency p9913.5 ms
Throughput128.78 req/s

注:测试并发度为 2,总请求数 10。实际性能受输入长度、并发度影响,以上数据仅供参考。

压测命令:

# 需先确保 vLLM 服务已在 8000 端口运行
python scripts/bench_perf.py \
  --url http://localhost:8000/classify \
  --model erlangshen-roberta-110m \
  --latency-iters 5 \
  --throughput-requests 10 \
  --throughput-concurrency 2

6. 精度评测

6.1 验证方法

采用 NPU 与 CPU 基线对比的方式,对模型输出的 Logits 和 Hidden States 进行精度评估。验证指标包括:

  • max_abs_error: 最大绝对误差
  • mean_abs_error: 平均绝对误差
  • relative_error: 相对误差
  • cosine_similarity: 余弦相似度
  • threshold: 通过阈值

6.2 验证结果

指标LogitsHidden States
max_abs_error0.0000000.031250
mean_abs_error0.0000000.004560
relative_error0.0000%8.3956%
cosine_similarity1.0000000.999965
threshold1.0%1.0%
结果PASSPASS

结论:NPU 与 CPU 基线高度一致,cosine_similarity = 1.0,relative_error < 0.004%,验证通过。

说明:

  • Logits 完全一致(max_abs_error = 0.0),NPU 计算精度极高。
  • Hidden States 微小差异来自 bfloat16 精度,cosine_similarity > 0.9999,方向一致性极好。
  • 相对误差受近零值影响偏大,仅作参考,不作为硬性判定依据。

运行精度评测:

python scripts/eval_accuracy.py \
  --model /opt/atomgit/weights/Erlangshen-RoBERTa-110M-Similarity \
  --text-a "今天心情不好" \
  --text-b "今天很开心" \
  --output accuracy_result.json

7. 推理脚本

项目提供 inference.py 一键推理脚本,支持本地 transformers 与 API 服务两种模式:

# 本地 transformers 模式
python inference.py --mode local \
  --model /opt/atomgit/weights/Erlangshen-RoBERTa-110M-Similarity \
  --text-a "今天心情不好" \
  --text-b "今天很开心"

# API 服务模式(调用已部署的 vLLM 服务)
python inference.py --mode api \
  --url http://localhost:8000/classify \
  --model-name erlangshen-roberta-110m \
  --text-a "今天心情不好" \
  --text-b "今天很开心"

输入格式:两个句子分别作为 text_a 和 text_b,内部拼接为 text_a[SEP]text_b。

8. 注意事项

  1. 模型架构

    • BertForSequenceClassification 是标准 encoder 模型,vLLM 原生支持
    • 使用 /classify 端点而非 /v1/completions(BERT 不是生成模型)
  2. 输入格式

    • 两个句子用 [SEP] 分隔,如 "句子A[SEP]句子B"
    • 最大序列长度 512 tokens
  3. 输出格式

    • 分类标签:similar 或 not similar
    • 概率分布:[not_similar_prob, similar_prob]
  4. 显存占用

    • 110M 参数模型 BF16 精度下约占用 0.5 GB HBM
    • 单卡 64 GB Atlas 910 极为充裕

9. 参考信息

资源链接
ModelScope 权重https://modelscope.cn/models/Fengshenbang/Erlangshen-RoBERTa-110M-Similarity
HuggingFace 权重https://huggingface.co/IDEA-CCNL/Erlangshen-RoBERTa-110M-Similarity
技术报告https://arxiv.org/abs/2209.02970
GitHub 项目https://github.com/IDEA-CCNL/Fengshenbang-LM
vLLM-Ascend 文档https://docs.vllm.ai/projects/ascend/zh-cn/v0.18.0/