g
gcw_coj3XaOd/ofa_ocr-recognition_scene_base_zh
模型介绍文件和版本Pull Requests讨论分析
下载使用量0

OFA-OCR-Recognition 昇腾 NPU 部署指南

模型信息

项目说明
模型名称OFA-OCR-Recognition
来源ModelScope (iic/OFA-OCR-Recognition)
任务类型OCR 文字识别
适配平台华为昇腾 Ascend 910 NPU
框架PyTorch + modelscope + torch_npu

环境要求

依赖版本
Python3.11
PyTorch2.9.0
torch_npu2.1.0
CANN8.5.1
modelscope1.x
fairseq0.12.2
NPU 硬件Ascend910_9362

快速部署

1. 下载模型

pip install modelscope
modelscope download --model iic/OFA-OCR-Recognition --local_dir ./model

2. 安装依赖

pip install fairseq==0.12.2
pip install modelscope

3. 运行推理

# 使用样例图片
python infer_npu.py --model_dir ./model

# 指定自定义图片
python infer_npu.py --model_dir ./model --image /path/to/your/image.jpg

# 指定 NPU 设备
python infer_npu.py --model_dir ./model --device 1

4. 精度与性能评测

# NPU 性能评测 (10次推理取平均)
python benchmark.py --model_dir ./model --device npu --runs 10

# CPU 基线采集
python benchmark.py --model_dir ./model --device cpu --runs 5

# CPU vs NPU 完整对比 (自动运行两端并对比精度)
python benchmark.py --model_dir ./model --compare --runs 10

# 指定结果输出路径
python benchmark.py --model_dir ./model --compare --output results.json

CPU vs NPU 精度对比

测试图片CPU 识别结果NPU 识别结果精度对比
image_ocr_recognition.jpg欢迎光临欢迎光临✅ 一致
ocr_scene.png大排档自助烤肉大排档自助烤肉✅ 一致

结论: CPU 与 NPU 推理结果完全一致,精度无差异。

CPU vs NPU 性能对比

测试图片CPU 平均耗时NPU 平均耗时加速比
image_ocr_recognition.jpg10.976s0.133s82.5x
ocr_scene.png~11.0s0.250s44.0x

NPU 资源占用: allocated=768.8MB, reserved=1186.0MB

NPU 推理正常输出证据

============================================================
NPU 推理基准测试
============================================================
PyTorch: 2.9.0+cpu
NPU available: True
NPU device: 0
NPU name: Ascend910_9362
模型加载耗时: 2.18s

--- 识别: image_ocr_recognition.jpg ---
识别结果: 欢迎光临
推理耗时: avg=0.133s, min=0.129s, max=0.144s
各次耗时: [0.144, 0.129, 0.131, 0.129, 0.130]

--- 识别: ocr_scene.png ---
识别结果: 大排档自助烤肉
推理耗时: avg=0.250s, min=0.250s, max=0.251s
各次耗时: [0.250, 0.251, 0.251, 0.250, 0.250]

NPU 显存: allocated=768.8MB, reserved=1186.0MB
============================================================

完整运行日志见 run_log.txt。

关键适配说明

  1. NPU 设备映射: 通过 torch_npu.contrib.transfer_to_npu 自动将 cuda 调用映射到 npu,无需修改模型代码
  2. 模型加载: 使用 modelscope pipeline 直接加载,模型自动放置到 NPU
  3. fairseq 兼容性: fairseq 0.12.2 在 Python 3.11 下存在 dataclass 兼容警告,不影响推理
  4. 零代码改造: 整个适配过程仅需添加 2 行代码(import torch_npu + transfer_to_npu),模型本身无需任何修改

注意事项

  • transfer_to_npu 会替换 torch.Tensor.cuda 为 torch.Tensor.npu,无需手动修改模型代码
  • fairseq 导入时会有 common - <dataclasses._MISSING_TYPE object> 的警告,不影响推理
  • 模型首次推理会触发算子编译,后续推理速度稳定

目录结构

ofa-ocr-recognition/
├── model/                          # 模型文件目录
│   ├── configuration.json          # 模型配置
│   ├── config.json                 # 模型结构配置
│   ├── pytorch_model.bin           # 模型权重
│   ├── vocab.json                  # 词表
│   ├── merges.txt                  # BPE merges
│   └── resources/                  # 样例图片
│       ├── ocr_scene.png
│       └── image_ocr_recognition.jpg
├── infer_npu.py                    # NPU 推理脚本
├── benchmark.py                    # 精度与性能评测脚本
├── run_log.txt                     # 运行日志
└── README.md                       # 本文档