LayoutLM-FUNSD(philschmid/layoutlm-funsd)是一个基于 LayoutLM-base 架构的文档理解模型,在 FUNSD 表单数据集上微调,可对文档中的 token 进行语义角色分类(标题/问题/答案等)。
LayoutLMForTokenClassification(768 hidden, 12 layers, 12 heads)pytorch_model.bin(450MB)| 组件 | 版本 | 说明 |
|---|---|---|
| 昇腾 NPU | Ascend910_9362 ×2(64GB HBM) | 推理硬件 |
| CANN | 8.5.1 | 昇腾计算框架 |
| torch | 2.9.0+cpu | PyTorch |
| torch_npu | 2.9.0.post1 | 昇腾 NPU 插件 |
| transformers | 4.57.6 | 模型加载 |
| numpy | 1.26.4 | 科学计算 |
安装依赖:
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simplenpu-smi info
python3 -c "import torch, torch_npu; print(torch.npu.device_count())"cd layoutlm-funsd-npu-deployment
ASCEND_RT_VISIBLE_DEVICES=0 python3 inference.pypython3 inference.py --device npu:0 --warmup 3 --runs 20测试输入(合成表单文档,14 个 token):
| 字段 | 值 | bbox |
|---|---|---|
| Name: | John Smith | [50,50]~[400,80] |
| Age: | 30 | [50,120]~[230,150] |
| Address: | New York | [50,190]~[340,220] |
| Phone: | 555-1234 | [50,260]~[290,290] |
| Email: | john@example.com | [50,330]~[380,360] |
| Status: | Active | [50,400]~[250,430] |
输出结果(昇腾 NPU,Ascend910_9362):
推理耗时: 184.7 ms
logits 维度: (1, 29, 7)
Token 分类结果:
"Name:" -> B-QUESTION (conf=0.995)
"John" -> I-QUESTION (conf=0.601)
"Smith" -> B-ANSWER (conf=0.948)
"Age:" -> I-HEADER (conf=0.754)
"30" -> B-QUESTION (conf=0.996)
"Address:" -> I-QUESTION (conf=0.735)
"New" -> B-ANSWER (conf=0.987)
"York" -> B-QUESTION (conf=0.998)
"Phone:" -> I-QUESTION (conf=0.586)
"555-1234" -> B-ANSWER (conf=0.932)
"john@example.com" -> B-QUESTION (conf=0.998)
"Status:" -> I-QUESTION (conf=0.873)
"Active" -> B-ANSWER (conf=0.973)
性能基准 (warmup=3, runs=20):
平均耗时: 9.72 ms / 文档验收结论:LayoutLM 文档理解模型在昇腾 NPU 上完整跑通前向传播,正确识别文档中的 QUESTION/ANSWER/HEADER 标签,语义合理(字段名→QUESTION,值→ANSWER),无算子回退或崩溃。
layoutlm-funsd-npu-deployment/
├── inference.py # 推理脚本
├── readme.md # 部署说明
├── requirements.txt # 环境依赖
├── SKILL.md # 技能文档
├── model/ # 模型权重
└── assets/ # 截图素材
├── agent_workflow.png
├── npu_device_call.png
└── model_result.png