1. 项目概述
最近在昇腾910B芯片上部署PaddleOCR v5时,遇到了一些环境配置和性能优化的问题。经过多次尝试,最终实现了两种部署方案:基于PaddleX的单并发服务和基于Gunicorn+Uvicorn+FastAPI的多并发服务。本文将详细介绍这两种方案的实现过程,包括环境准备、镜像构建、服务部署以及性能对比。
特别说明:本文所有操作均在aarch64架构的昇腾910B环境中完成,Python版本为3.10,与官方镜像保持一致。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 环境准备与镜像构建
2.1 基础镜像获取
首先需要获取适配昇腾910B的PaddlePaddle官方镜像:
bash复制# 下载docker镜像
docker pull ccr-2vdh3abv-pub.cnc.bj.baidubce.com/device/paddle-npu:cann800-ubuntu20-npu-910b-base-aarch64-gcc84
# 导出镜像备用
docker save ccr-2vdh3abv-pub.cnc.bj.baidubce.com/device/paddle-npu | gzip > paddle_npu_cann800_ubuntu20_910b_aarch64_gcc84.tar.gz
这个镜像已经预装了CANN 8.0和PaddlePaddle NPU版本,为我们后续的工作奠定了基础。
2.2 离线依赖包准备
由于生产环境通常无法连接外网,我们需要提前下载所有依赖包:
bash复制# 创建依赖包目录
mkdir -p ./packs/packages
# 下载核心依赖
pip download -d ./packs paddlepaddle -i https://www.paddlepaddle.org.cn/packages/nightly/cpu/
pip download -d ./packs paddle-custom-npu -i https://www.paddlepaddle.org.cn/packages/nightly/npu/
pip download -d ./packs "paddleocr[all]" -i https://mirrors.aliyun.com/pypi/simple/
# 下载必要但容易出错的依赖
pip download -d ./packs numpy==1.26.4 -i https://mirrors.aliyun.com/pypi/simple/
pip download -d ./packs opencv-python==3.4.18.65 -i https://mirrors.aliyun.com/pypi/simple/
经验之谈:numpy和opencv-python的版本必须严格匹配,否则在昇腾环境下容易出现兼容性问题。我们选择的这两个版本经过实测最为稳定。
3. 单并发服务部署(PaddleX方案)
3.1 容器启动与依赖安装
启动容器时需
