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

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

相关推荐
weixin_408099671 小时前
身份证OCR识别中的“隐形防线”:复印件/翻拍检测如何拦截99%的虚假注册?(附多语言代码)
人工智能·ocr·图像识别·api接口·实名认证·身份证ocr·石榴智能
ZC跨境爬虫2 小时前
跟着 MDN 学 HTML day_12:(HTML网页图片嵌入)
前端·javascript·css·ui·html
ZC跨境爬虫6 小时前
跟着 MDN 学 HTML day_11:(语义化容器全站重构+独立CSS拆分+字体合规引入)
前端·css·ui·重构·html·edge浏览器
ZC跨境爬虫6 小时前
跟着 MDN 学 HTML day_10:(超链接核心语法+路径规则)
前端·css·笔记·ui·html·edge浏览器
ZC跨境爬虫15 小时前
跟着 MDN 学 HTML day_9:(信件语义标记)
前端·css·笔记·ui·html
Avalon7121 天前
Unity3D响应式渲染UI框架UniVue
游戏·ui·unity·c#·游戏引擎
qq_454245031 天前
从 UI 操作到环境交互:一种通用元命令自动化协议的设计与意义
人工智能·ui·自动化·交互
格林威1 天前
工业视觉检测:提供可视化UI调试工具的实现方式是什么?
开发语言·人工智能·数码相机·ui·计算机视觉·视觉检测·工业相机
ZC跨境爬虫1 天前
跟着 MDN 学 HTML day_8:(高级文本语义标签+适配核心功底)
前端·css·笔记·ui·html
橙子199110162 天前
UI 绘制相关
ui