X
Xiaoxy510/nbroad--ESG-BERT-ascend
模型介绍文件和版本Pull Requests讨论分析
下载使用量0

nbroad/ESG-BERT on Ascend 910B3

1. 简介

本文档记录 nbroad/ESG-BERT 在昇腾 Ascend 910B3 NPU 上的迁移适配、推理部署与精度评测结果。

ESG-BERT 是一个基于 BertForSequenceClassification 的 ESG(环境、社会和治理)文本分类模型,支持 26 个 ESG 细分维度的分类。该模型使用标准的 BERT-base 架构(12 层 Transformer,768 隐藏维),参数量约 109.5M。

本次适配工作包括:

  • 在 NPU(Ascend 910B3)上验证模型推理的正确性
  • 对比 NPU 与 CPU 的输出精度,确保误差 < 1%
  • 提供可直接使用的 NPU 推理脚本 inference.py
  • 提供精度与性能评测脚本 eval.py

相关获取地址:

  • 原始模型(HuggingFace):https://huggingface.co/nbroad/ESG-BERT
  • 适配后 NPU 模型仓库(GitCode):https://gitcode.com/Xiaoxy510/nbroad--ESG-BERT-ascend

参考文档:

  • https://pytorch.org/docs/stable/index.html
  • https://huggingface.co/docs/transformers/index

2. 验证环境

组件版本
Python3.9.13
torch2.8.0+cpu
torch_npu2.8.0.post4
transformers4.57.6
numpy1.24.4
  • NPU:Ascend 910B3 × 8 逻辑卡
  • 驱动版本:25.5.2

3. 模型适配与部署

3.1 适配说明

ESG-BERT 使用标准 BERT 架构,transformers 库原生支持。NPU 适配无需修改模型结构或权重,仅需将模型和输入张量迁移到 NPU 设备。

已验证通过的适配流程:

import torch
import torch_npu
from transformers import AutoModelForSequenceClassification, AutoTokenizer

model = AutoModelForSequenceClassification.from_pretrained("nbroad/ESG-BERT")
model = model.npu()  # 迁移到 NPU
model.eval()

tokenizer = AutoTokenizer.from_pretrained("nbroad/ESG-BERT")
inputs = tokenizer(["ESG text"], padding=True, truncation=True, return_tensors="pt")
inputs = {k: v.npu() for k, v in inputs.items()}

with torch.no_grad():
    outputs = model(**inputs)
    logits = outputs.logits.cpu()

3.2 环境准备

pip install torch torch_npu transformers -i https://repo.huaweicloud.com/repository/pypi/simple/

# 如 HuggingFace 网络不通,使用镜像
export HF_ENDPOINT=https://hf-mirror.com

3.3 推理脚本使用

# NPU 推理(自动检测设备)
python inference.py --text "Our company reduced carbon emissions by 30%"

# 指定 CPU 推理
python inference.py --text "ESG text" --device cpu

# 从文件批量推理
python inference.py --input texts.txt

# 列出支持的所有 ESG 标签
python inference.py --list-labels

4. Smoke 验证

快速验证 NPU 推理是否正常:

python inference.py --text "Our company reduced carbon emissions by 30% through renewable energy initiatives."

预期输出:

ESG Classification Results (NPU)

--- Result 1 ---
Text:      Our company reduced carbon emissions by 30% through renewable energy initiatives.
Predicted: GHG_Emissions (confidence: 0.8360)

5. 性能参考

测试条件:batch_size=20,seq_len=128,float32 精度,连续 20 次取平均。

指标CPUNPU (Ascend 910B3)
平均推理时间 (20 samples)1318.00 ms22.36 ms
单样本平均耗时65.90 ms1.12 ms
加速比1x58.95x
参数量109.50M109.50M
模型大小417.7 MB417.7 MB

6. 精度评测

评测方法

  1. 在 CPU 上加载模型并推理,得到参考输出(logits)
  2. 在 NPU 上加载同一权重并推理,得到 NPU 输出
  3. 对比两组输出,计算多个精度指标

评测结果

使用 20 条 ESG 相关文本进行评测:

指标数值要求结果
MSE (logits)3.60e-6--
Max Absolute Error1.09e-2--
Cosine Similarity0.99999892> 0.99✓
Prediction Agreement100.00%> 99%✓
Mean Prob Diff (softmax)0.0037%< 1%✓ PASS
Max Prob Diff (softmax)0.2346%< 1%✓

结论:NPU 精度误差 0.0037%,满足精度要求(< 1%),模型在 NPU 上的推理结果与 CPU 一致。

详细评测日志见 eval_log.txt。

7. 注意事项

  1. 权重文件:NPU 适配无需修改原始权重,直接使用 HuggingFace 下载或本地的 .safetensors / .bin 文件即可
  2. 设备选择:脚本默认自动检测 NPU,若 NPU 不可用则回退到 CPU
  3. 批次大小:NPU 上建议 batch_size ≤ 64 以获得最佳吞吐
  4. torch_npu 版本:确保 torch_npu 版本与 torch 版本匹配(当前均为 2.8.x)
  5. 单卡推理:当前使用单张 NPU 卡,未启用多卡并行
  6. 网络问题:如遇 HuggingFace 下载问题,设置环境变量 HF_ENDPOINT=https://hf-mirror.com