当前位置: 首页 > news >正文

DeepSeek-VL2 环境配置与使用指南

DeepSeek-VL2 环境配置与使用指南

DeepSeek-VL2 是由 DeepSeek 公司开发的一种高性能视觉-语言模型(VLM)。它是 DeepSeek 系列多模态模型中的一个版本,专注于提升图像和文本之间的交互能力。

本文将详细介绍如何配置 DeepSeek-VL2 的运行环境,并展示如何下载、运行模型以及使用多 GPU 支持。本文内容适用于需要快速上手 DeepSeek-VL2 的开发者。

什么是 VLM?

VLM 是 Vision-Language Model(视觉-语言模型)的缩写。它是一种结合了计算机视觉和自然语言处理技术的多模态模型。VLM 能够同时理解和生成图像与文本信息,适用于多种跨模态任务,例如:

  • 图像描述生成(Image Captioning)
  • 视觉问答(Visual Question Answering, VQA)
  • 图文检索(Image-Text Retrieval)
  • 图像编辑指导(Image Editing with Text Instructions)

VLM 的核心在于将视觉特征(来自图像)和语言特征(来自文本)进行联合建模,从而实现对两种模态数据的深度理解。

部分开源VLM性能对比

在这里插入图片描述


1. Conda 环境配置

1.1 创建 Python 3.8 环境

conda create --name dk python=3.8
  • 创建一个名为 dk 的 Python 3.8 环境。

1.2 安装 PyTorch 及相关库

conda install pytorch==2.0.1 pytorch-cuda=11.8 -c pytorch -c nvidia
conda install torchvision==0.15.2 -c pytorch -c nvidia
conda install torchaudio==2.0.1 -c pytorch -c nvidia
  • 安装 PyTorch 2.0.1 及 CUDA 11.8 支持,同时安装兼容版本的 torchvisiontorchaudio

1.3 参考链接

  • Anaconda 镜像源
  • CSDN 安装教程

2. 代码下载与依赖安装

2.1 克隆代码库

git clone https://github.com/deepseek-ai/DeepSeek-VL2.git
cd DeepSeek-VL2
  • 克隆 DeepSeek-VL2 代码库并进入项目目录。

2.2 安装依赖

conda activate dk
pip install -e .
pip install -r requirements.txt
  • 激活 dk 环境,并安装项目所需的依赖包。

3. 模型下载

3.1 使用 Huggingface 下载模型

# 下载 DeepSeek-R1 模型
huggingface-cli download deepseek-ai/DeepSeek-R1 --local-dir deepseek-ai/DeepSeek-R1

# 下载 DeepSeek-VL2 模型
huggingface-cli download deepseek-ai/deepseek-vl2-tiny --local-dir deepseek-ai/deepseek-vl2-tiny
huggingface-cli download deepseek-ai/deepseek-vl2-small --local-dir deepseek-ai/deepseek-vl2-small
huggingface-cli download deepseek-ai/deepseek-vl2 --local-dir deepseek-ai/deepseek-vl2
  • 使用 huggingface-cli 下载不同规模的 DeepSeek-VL2 模型。

4. 模型运行

4.1 测试模型

python inference.py --model_path=deepseek-ai/deepseek-vl2-tiny
python inference.py --model_path=deepseek-ai/deepseek-vl2-small
python inference.py --model_path=deepseek-ai/deepseek-vl2
  • 使用 inference.py 脚本测试不同规模的模型。

4.2 启动 Web 演示

# 需要 20G GPU 显存
python web_demo.py --model_name=deepseek-ai/deepseek-vl2-tiny

# 需要 40G GPU 显存
python web_demo.py --model_name=deepseek-ai/deepseek-vl2-small

# 需要 80G GPU 显存
python web_demo.py --model_name=deepseek-ai/deepseek-vl2
  • 启动 Web 演示界面,不同规模的模型对 GPU 显存的需求不同。

5. 多 GPU 支持

5.1 修改 inference.py 以支持多 GPU

import os
os.environ["TOKENIZERS_PARALLELISM"] = "false"

def split_model(model_name):
    device_map = {}
    model_splits = {        
        # 'deepseek-ai/deepseek-vl2-tiny': [13, 14], # 2 GPU
        'deepseek-ai/deepseek-vl2-small': [13, 14], # 2 GPU 
        'deepseek-ai/deepseek-vl2': [13, 14], # 2 GPU
    }
    num_layers_per_gpu = model_splits[model_name]
    num_layers = sum(num_layers_per_gpu)
    layer_cnt = 0
    for i, num_layer in enumerate(num_layers_per_gpu):
        for j in range(num_layer):
            device_map[f'language.model.layers.{layer_cnt}'] = i 
            layer_cnt += 1
    device_map['vision'] = 0
    device_map['projector'] = 0
    device_map['image_newline'] = 0
    device_map['view_seperator'] = 0
    device_map['language.model.embed_tokens'] = 0
    device_map['language.model.norm'] = 0
    device_map['language.lm_head'] = 0
    device_map[f'language.model.layers.{num_layers - 1}'] = 0
    return device_map

def load_model(model_path, dtype=torch.bfloat16):
    vl_chat_processor = DeepseekVLV2Processor.from_pretrained(model_path)
    tokenizer = vl_chat_processor.tokenizer

    # csdn2k
    device_map = split_model(model_path)
    vl_gpt: DeepseekVLV2ForCausalLM = AutoModelForCausalLM.from_pretrained(
        model_path, 
        trust_remote_code=True, 
        torch_dtype=dtype,
        device_map=device_map
    ).eval()
    return tokenizer, vl_gpt, vl_chat_processor
  • 通过 split_model 函数实现模型在多 GPU 上的分布式加载。

5.2 参考链接

  • CSDN 多 GPU 支持教程

6. Docker 镜像源更换

6.1 更换 Docker 镜像源

{
  "registry-mirrors": [
    "https://docker.m.daocloud.io/",
    "https://huecker.io/",
    "https://dockerhub.timeweb.cloud",
    "https://noohub.ru/",
    "https://dockerproxy.com",
    "https://docker.mirrors.ustc.edu.cn",
    "https://docker.nju.edu.cn",
    "https://xx4bwyg2.mirror.aliyuncs.com",
    "http://f1361db2.m.daocloud.io",
    "https://registry.docker-cn.com",
    "http://hub-mirror.c.163.com",
    "https://docker.mirrors.ustc.edu.cn"
  ]
}
  • 更换 Docker 镜像源以加速镜像下载。

6.2 参考链接

  • Docker 镜像源更换教程

7. Gradio 演示

  • Gradio 学习参考链接

8. 提示词示例

  • deepseek提示库

9. 对话示例

9.1 单张图片对话

# 1 image
Conversation(name='deepseek', system_template='{system_message}', system_message='', roles=('<|User|>', '<|Assistant|>'), messages=[['<|User|>', ('<image>\n<|ref|>The giraffe at the back.<|/ref|>', [<PIL.Image.Image image mode=RGB size=724x1086 at 0x7D615AA524C0>])], ['<|Assistant|>', '']], offset=0, sep_style=<SeparatorStyle.DeepSeek: 1>, sep='\n\n', sep2='', stop_str=['User:', ''], stop_token_ids=[100001])

9.2 多张图片对话

# 3 images
Conversation(name='deepseek', system_template='{system_message}', system_message='', roles=('<|User|>', '<|Assistant|>'), messages=[['<|User|>', ('<image>\n<image>\n<image>\n能帮我用这几个食材做一道菜吗?', [<PIL.Image.Image image mode=RGB size=1024x701 at 0x7D6158534520>, <PIL.Image.Image image mode=RGB size=450x308 at 0x7D6158534430>, <PIL.Image.Image image mode=RGB size=1280x720 at 0x7D61585345B0>])], ['<|Assistant|>', '']], offset=0, sep_style=<SeparatorStyle.DeepSeek: 1>, sep='\n\n', sep2='', stop_str=['User:', ''], stop_token_ids=[100001])
  • 该部分展示了如何使用 generate_prompt_with_history 函数生成包含图片的对话。

10. 总结

本文详细介绍了 DeepSeek-VL2 的环境配置、模型下载与运行、多 GPU 支持等内容。希望这篇指南能帮助您快速上手 DeepSeek-VL2。如果您有任何问题,欢迎在评论区留言讨论!


希望这篇博客对您有所帮助!

相关文章:

  • Sass更新:@import——>@use
  • 硬件-电源-隔离与非隔离的区别
  • Mac配置Flutter开发环境
  • 腾讯云Windows系统搭建ftp服务器上传图片
  • elementUI表单校验失败自动聚焦到失败input/select等输入框
  • 嵌入式硬件篇---OpenMV的硬件流和软件流
  • Ansible 自动化 Linux 运维:解放你的双手,让运维变得简单
  • Java进阶:Dubbo
  • C语言-结构体
  • Python爬虫-猫眼电影的影院数据
  • 【后端发展路径】基础技术栈、工程能力进阶、高阶方向、职业发展路径
  • oracle 19c安装DBRU补丁时报错CheckSystemSpace的处理
  • AI在网络安全中的应用:构建智能防护体系
  • 如果网络中断,Promise.race 如何处理?
  • 48. c++线程
  • Linux-文件基本操作1
  • 空间复杂度O(m) O(n) O是什么,m是什么,n是什么
  • 使用多种机器学习算法进行鸢尾花分类
  • Deepseek本地部署和网页版本区别
  • Redis 的缓存雪崩、缓存穿透和缓存击穿详解,并提供多种解决方案
  • 安徽凤阳县明中都鼓楼楼宇顶部瓦片部分脱落,无人员伤亡
  • 河北邯郸回应被曝涉生猪未检疫、注水问题:将严厉查处违法行为
  • 马上评|中药液涉嫌添加安眠药?药品安全儿戏不得
  • 女巫的继承者们
  • 中国证监会副主席李明:目前A股估值水平仍处于相对低位
  • 人民日报头版:紧盯“学查改”,推动作风建设走深走实