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

news/2025/2/15 15:22:26/

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 = 0for 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 += 1device_map['vision'] = 0device_map['projector'] = 0device_map['image_newline'] = 0device_map['view_seperator'] = 0device_map['language.model.embed_tokens'] = 0device_map['language.model.norm'] = 0device_map['language.lm_head'] = 0device_map[f'language.model.layers.{num_layers - 1}'] = 0return device_mapdef load_model(model_path, dtype=torch.bfloat16):vl_chat_processor = DeepseekVLV2Processor.from_pretrained(model_path)tokenizer = vl_chat_processor.tokenizer# csdn2kdevice_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。如果您有任何问题,欢迎在评论区留言讨论!


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


http://www.ppmy.cn/news/1572270.html

相关文章

LeetCode 热门100题-和为 K 的子数组

题目描述&#xff1a; 给你一个整数数组 nums 和一个整数 k &#xff0c;请你统计并返回 该数组中和为 k 的子数组的个数 。 子数组是数组中元素的连续非空序列。 示例 1&#xff1a; 输入&#xff1a;nums [1,1,1], k 2 输出&#xff1a;2 class Solution { public:int…

1、Prometheus 监控系统(上)

Prometheus 监控系统&#xff08;上&#xff09; 认识一下 PrometheusPrometheus 的特点Prometheus 的生态组件Prometheus 的工作模式Prometheus 的工作流程Prometheus 的局限性&#xff1a; 部署 PrometheusPrometheust Server 端安装和相关配置部署 Exporters部署 Node Expor…

基于SpringBoot的电影院售票管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;…

Ubuntu 24.04 上安装 Nginx

在 Ubuntu 24.04 上安装 Nginx&#xff0c;可以按照以下步骤进行&#xff1a; 更新系统包 首先&#xff0c;确保你的包管理器是最新的。打开终端并执行&#xff1a; sudo apt update sudo apt upgrade安装 Nginx 安装 Nginx 只需要运行以下命令&#xff1a; sudo apt install n…

基于Flask的影视剧热度数据可视化分析系统的设计与实现

【FLask】基于Flask的影视剧热度数据可视化分析系统的设计与实现&#xff08;完整系统源码开发笔记详细部署教程&#xff09;✅ 目录 一、项目简介二、项目界面展示三、项目视频展示 一、项目简介 随着互联网技术的飞速发展&#xff0c;影视剧行业的数据量呈爆炸性增长&#x…

好好说话:深度学习扫盲

大创项目是和目标检测算法YOLO相关的&#xff0c;浅浅了解了一些有关深度学习的知识。在这里根据本人的理解做一些梳理。 深度学习是什么&#xff1f; 之前经常听到AI&#xff0c;机器学习&#xff0c;深度学习这三个概念&#xff0c;但是对于三者的区别一直很模糊。 AI&…

聊聊 IP 地址和端口号的区别

在计算机网络中&#xff0c;两个基本概念对于理解设备如何通过网络进行通信至关重要。IP 地址和端口号是 TCP/IP 的典型特征&#xff0c;其定义如下&#xff1a;IP 地址是分配给连接到网络的每台机器的唯一地址&#xff0c;用于定位机器并与其通信。相反&#xff0c;端口号用于…

AnythingLLM打造私有知识库

一、 OllamaDeepSeek安装 https://blog.csdn.net/Stestack/article/details/145405151?spm1001.2014.3001.5502二、 nomic-embed-text nomic-embed-text主要用于文本嵌入和句子相似度任务&#xff0c;能够将这些任务应用于分类、聚类、检索等多种自然语言处理场景。该模型在…