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

embedded/2025/2/15 22:53:33/

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/embedded/162519.html

相关文章

Python与R机器学习(1)支持向量机

以下是对Python与R在支持向量机&#xff08;SVM&#xff09;实现上的核心区别分析及完整示例代码&#xff1a; 一、核心差异对比 特征Python (scikit-learn)R (e1071/kernlab)核心库sklearn.svm.SVC/SVRe1071::svm() 或 kernlab::ksvm()语法范式面向对象&#xff08;先初始化模…

高效训练,深度学习GPU服务器搭建

引言 在AI人工智能时代&#xff0c;深度学习的重要性日益凸显。拥有一台高性能的深度学习GPU服务器成为众多从业者的追求。然而&#xff0c;预算往往是一个限制因素。本文将指导你如何在有限的预算下配置一台性能尽可能拉满的深度学习GPU服务器。 GPU选购关键因素 GPU服务器…

用大模型学大模型03-数学基础 概率论 随机变量 概率分布

deepseek.com:什么是概率&#xff0c;什么是随机变量&#xff1f;深度学习中常用概率的分布有哪些&#xff1f; 1. 什么是概率&#xff1f; 概率是描述事件发生的可能性的数值&#xff0c;范围在 0 到 1 之间&#xff1a; 0&#xff1a;事件不可能发生。1&#xff1a;事件必…

二、通义灵码插件保姆级教学-IDEA(使用篇)

一、IntelliJ IDEA 中使用指南 1.1、代码解释 选择需要解释的代码 —> 右键 —> 通义灵码 —> 解释代码 解释代码很详细&#xff0c;感觉很强大有木有&#xff0c;关键还会生成流程图&#xff0c;对程序员理解业务非常有帮忙&#xff0c;基本能做到哪里不懂点哪里。…

第1章大型互联网公司的基础架构——1.5 服务发现

讲到这里&#xff0c;我们已经对一个客户端请求进入业务HTTP服务的过程有了较为详细的了解。业务HTTP服务在处理请求的过程中免不了与其他下游服务通信——可能会调用其他业务服务&#xff0c;可能需要访问数据库&#xff0c;可能会向消息中间件投递消息等&#xff0c;所以业务…

oracle使用动态sql将多层级组织展平

ERP或者其他企业管理软件中都会有一张组织机构表&#xff0c;可以写固定sql的方式将其展平获取组织表中的字段信息&#xff0c;如负责人、上级组织负责人、分管领导、成立时间等。但是这种方式有个缺陷&#xff0c;就是如果只写到处理4个层级&#xff0c;那么后期层级增多就无法…

深度学习-111-大语言模型LLM之基于langchain的结构化输出功能实现文本分类

文章目录 1 langchain的结构化输出1.1 推荐的使用流程1.2 模式定义1.3 返回结构化输出1.3.1 工具调用(方式一)1.3.2 JSON模式(方式二)1.3.3 结构化输出法(方式三)2 文本分类2.1 定义分类模式2.2 配置分类提示模板2.3 初始化分类模型2.4 分类示例3 参考附录1 langchain的结构化输…

蓝桥杯 Java B 组之简单数学问题(素数判断、最大公约数)

Day 4&#xff1a;简单数学问题&#xff08;素数判断、最大公约数&#xff09; 数学问题在蓝桥杯中非常重要&#xff0c;尤其是数论基础、数学优化、边界处理等知识。本日的学习目标&#xff1a; 素数判断&#xff08;Prime Number&#xff09;最大公约数&#xff08;Greates…