DeepSeek-OCR实战(03):本地部署+简单UI测试

DeepSeek-OCR实战是一个系列文章,包含了从基础运行环境搭建到应用接入全过程。本章介绍DeepSeek-OCR如何本地部署

1.创建、激活虚拟环境

前面在《DeepSeek-OCR实战(01):基础运行环境搭建》中已经安装好了 conda :

shell 复制代码
#创建名为DeepSeek-OCR的虚拟环境,python版本:3.12
(base) conda create -n DeepSeek-OCR python=3.12 

#激活虚拟环境
(base) conda activate DeepSeek-OCR

# 接下来会使用pip安装依赖,所以天添加国内加速
(DeepSeek-OCR) pip config set global.index-url https://mirrors.huaweicloud.com/repository/pypi/simple/

2.克隆官方的推理代码安装依赖

shell 复制代码
# 切换到用户目录
cd ~
# 克隆项目源码
git clone https://github.com/deepseek-ai/DeepSeek-OCR.git

cd ~/DeepSeek-OCR
# 安装依赖
pip install torch==2.6.0 torchvision==0.21.0 torchaudio==2.6.0 --index-url https://download.pytorch.org/whl/cu118
pip install vllm==0.8.5

pip install -r requirements.txt

# 安装加速组件(可选但推荐)
pip install flash-attn==2.7.3 --no-build-isolation

注意 :在安装flash-attn==2.7.3时如果出现问题,可以到githubflash-attention 官方(https://github.com/Dao-AILab/flash-attention/releases)下载对应版本的.whl官方包。

简单来说,FlashAttention(flash-attn)是一个专门用于优化Transformer模型中注意力机制(Attention)计算的库,它能显著提升计算速度并大幅减少GPU显存消耗 。对于像DeepSeek-OCR这样庞大的模型来说,安装它是比较重要的。
如何选择 flash-attn的版本:

  1. 版本文件名中的第一部分(例如 cu118cu122)为 CUDA 版本,本地CUDA版本使用 nvcc --version命令查看(本地为:11.8版本)
  2. 版本文件名中的第二部分(例如 torch2.1torch2.2torch2.3)为 pytorch 版本。本地 pytorch 版本可以通过 pip show torch 命令查看(本地为:2.6.0+cu118)
  3. 版本文件名的第三部分(例如 cp311-cp311)为 Python 版本,选择本地 Python 版本即可。本地 Python 版本可以通过 pip debug 命令查看(本地为:3.12)

所以这里就应该下载: flash_attn-2.7.3+cu11torch2.6cxx11abiFALSE-cp312-cp312-linux_x86_64.whl这个版本

下载后,上传到 /home/qy/soft,然后离线安装:

shell 复制代码
cd ~/soft
pip install flash_attn-2.7.3+cu11torch2.6cxx11abiFALSE-cp312-cp312-linux_x86_64.whl

经过测试, 我得 2080 Ti 显卡不支持 flash_attn,如果你的显卡支持,可以安装它

3.模型下载

可以到魔搭社区下载模型文件

shell 复制代码
# 安装魔搭社区工具
pip install modelscope

# 创建模型文件存放目录
mkdir -p ~/models/modelscope/deepseek-ai/DeepSeek-OCR

# 下载模型
modelscope download --model 'deepseek-ai/DeepSeek-OCR' --local_dir '/home/qy/models/modelscope/deepseek-ai/DeepSeek-OCR'

我们大概等待几分钟后就看到下载好的模型文件了:

4.模型可视化页面

可以使用huggingface上官方给出的gradio页面模板,它可以快速上手

shell 复制代码
cd ~
# GIT_LFS_SKIP_SMUDGE=1 git clone https://huggingface.co/spaces/merterbak/DeepSeek-OCR-Demo
# 使用镜像站下载
GIT_LFS_SKIP_SMUDGE=1 git clone https://hf-mirror.com/spaces/merterbak/DeepSeek-OCR-Demo

pip install gradio

cd ~/DeepSeek-OCR-Demo

# 在安装依赖之前,需要编辑一下  requirements.txt ,因为它指定了flash_attn 的版本,而这个版本在当前环境不适用,而且它已经安装了,所以需要把版本号去掉
vim requirements.txt
#flash-attn @ https://github.com/Dao-AILab/flash-attention/releases/download/v2.7.3/flash_attn-2.7.3+cu12torch2.6cxx11abiFALSE-cp310-cp310-linux_x86_64.whl
flash-attn

pip install gradio
# 安装依赖
pip install -r requirements.txt

进入 ~/DeepSeek-OCR-Demo 目录,修改其中的web启动代码app.py

shell 复制代码
vim ~/DeepSeek-OCR-Demo/app.py

将模型的加载路径改为本地路径 /home/qy/models/modelscope/deepseek-ai/DeepSeek-OCR ,以及lunch加载函数中设置 share=True,server_name='0.0.0.0',server_port=8080

python 复制代码
#MODEL_NAME = 'deepseek-ai/DeepSeek-OCR'
# 替换成本地模型所在的路径
MODEL_NAME = '/home/qy/models/modelscope/deepseek-ai/DeepSeek-OCR'

...
# 原代码 model = AutoModel.from_pretrained(MODEL_NAME, _attn_implementation='flash_attention_2', torch_dtype=torch.bfloat16, trust_remote_code=True, use_safetensors=True)
# 修改后,由于我的显卡不支持 flash_attention_2 ,所以要去掉
model = AutoModel.from_pretrained(MODEL_NAME, _attn_implementation='eager', torch_dtype=torch.bfloat16, trust_remote_code=True, use_safetensors=True)

...

if __name__ == "__main__":
    demo.queue(max_size=20).launch(server_name='0.0.0.0',server_port=8080)

启动脚本:

shell 复制代码
cd  ~/DeepSeek-OCR-Demo
# 启动app.py 的时候报告缺少的包,按照提示安装
pip install gradio spaces
# 启动后,会有一些警告,不过可以忽略
python app.py

访问页面,上传一个发票图片,此时已经可以正常工作了:

相关推荐
三千院本院2 小时前
安装paddle_ocr踩坑(使用PP-OCRv5_server_rec)
ocr·paddle
lpfasd12312 小时前
Valdi:Snapchat 开源的新一代跨平台 UI 框架
ui·开源
九章云极AladdinEdu14 小时前
项目分享|告别枯燥命令行,构建终端用户界面的 TypeScript 库
javascript·ui·typescript
Hi2024021714 小时前
为QML程序添加启动Logo:提升用户体验
windows·qt·ui·人机交互·qml·启动logo
CodeCraft Studio20 小时前
Excel处理控件Aspose.Cells教程:如何使用C#在Excel中添加、编辑和更新切片器
ui·c#·excel·aspose·excel切片器·创建表格切片器
AI人工智能+21 小时前
复杂版式下的关键信息抽取:机动车登记证的视觉识别与结构化理解
人工智能·ocr·机动车登记证识别
旗讯数字21 小时前
传统生产制造企业手写单据数字化落地:旗讯 OCR 的技术实现与系统对接方案
ocr·制造
海鸥两三1 天前
uniapp 小程序引入 uview plus 框架,获得精美的UI框架
前端·vue.js·ui·小程序·uni-app
UI设计兰亭妙微2 天前
从0到1:兰亭妙微如何用“小程序思维”重构用户体验路径
ui