z
zkx_/nbroad--ESG-BERT-ascend
模型介绍文件和版本Pull Requests讨论分析

nbroad/ESG-BERT on Ascend NPU

1. 简介

本文档记录 nbroad/ESG-BERT ESG(环境、社会、治理)文本分类模型在昇腾 NPU(Ascend 910B3)上的迁移适配、精度评测与性能验证结果。

ESG-BERT 基于 BERT-base(12 层,768 维),在 ESG 领域语料上微调,支持 26 种 ESG 标签的多标签分类(multi-label classification)。涵盖的 ESG 类别包括:Business_Ethics(商业道德)、Data_Security(数据安全)、Climate_Change(气候变化)、Labor_Practices(劳工实践)、Human_Rights(人权)、Corporate_Governance(公司治理)、Supply_Chain(供应链)等。该模型适用于可持续发展报告分析、ESG 评级自动化等企业级应用场景。

相关获取地址:

  • 权重下载地址(HuggingFace):https://huggingface.co/nbroad/ESG-BERT

2. 验证环境

组件版本
torch2.8.0
torch_npu2.8.0.post4
transformers5.8.1
CANN8.5.1
  • NPU:8 × Ascend 910B3
  • 精度对比基准:CPU(x86, PyTorch 2.8.0)

3. 部署使用流程

3.1 环境准备

conda create -n nbroad--ESG-BERT python=3.11 -y
conda activate nbroad--ESG-BERT

pip install torch==2.8.0 torch_npu==2.8.0.post4 \
    -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install transformers numpy \
    -i https://pypi.tuna.tsinghua.edu.cn/simple

3.2 推理脚本使用

python inference.py --text "Company reduced carbon emissions by 30%." --device npu

编程接口:

from inference import GoEmotionsClassifier
clf = GoEmotionsClassifier(model_path="./nbroad--ESG-BERT", device="npu")
results, probs = clf.predict(["Company invested in renewable energy."], threshold=0.3)

4. Smoke 验证

python inference.py --text "Company reduced carbon emissions by 30%." --device npu

预期输出:超过阈值的 ESG 标签及置信度,无运行时错误。

5. 性能参考

测试条件:25 条 ESG 相关文本(含多类标签),batch_size=16,NPU 预热 1 轮。

指标数值
CPU 吞吐量40.6 texts/s
NPU 吞吐量507.0 texts/s
CPU/NPU 加速比12.5 ×

6. 精度评测

6.1 评测方法

分别在 CPU 和 NPU 上推理 25 条 ESG 文本,比较 26 维 sigmoid 概率向量的余弦相似度、MAE 和 Top-1/Top-3 标签一致性。

6.2 评测结果

指标数值
平均余弦相似度0.999999
精度误差率0.0001%
Top-1 准确率100.0%
Top-3 重叠率100.0%

结论:精度误差率 0.0001%,Top-1 和 Top-3 标签完全一致,评测通过。

7. 迁移适配说明

7.1 模型结构

  • Backbone:BertModel(12 层,768 维,BERT-base 标准架构)
  • Classifier Head:线性层(768 → 26),26 类 sigmoid(多标签)
  • Tokenizer:BERT WordPiece(vocab.txt),英文优化
  • 参数量:110M(BERT-base 标准规模)

7.2 适配要点

  1. AutoModelForSequenceClassification.from_pretrained() 加载,model.to("npu:0") 迁移
  2. 多标签分类(multi-label):每条文本可同时触发多个 ESG 标签
  3. sigmoid 激活函数,使用 threshold 过滤低置信度标签
  4. 与 roberta-base-go_emotions 共享相同推理框架(仅分类头维度和标签不同)

8. 注意事项

  1. 多标签分类:26 类可同时存在,使用 sigmoid + threshold 判断。与 softmax 互斥分类不同
  2. ESG 领域特定:分类器在 ESG 报告语料上训练,普通文本可能触发不准确的标签
  3. BERT-base 架构:110M 参数量,batch_size ≤ 16 以避免 NPU 内存溢出
  4. 26 类标签:完整覆盖 E(环境)、S(社会)、G(治理)三大领域的细分标签体系
下载使用量0