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。如果您有任何问题,欢迎在评论区留言讨论!


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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/969652.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Golang的并发编程问题解决思路

Golang的并发编程问题解决思路 一、并发编程基础 并发与并行 在计算机领域&#xff0c;“并发”和“并行”经常被混为一谈&#xff0c;但它们有着不同的含义。并发是指一段时间内执行多个任务&#xff0c;而并行是指同时执行多个任务。在 Golang 中&#xff0c;通过 goroutines…

多能互补综合能源系统,改变能源结构---安科瑞 吴雅芳

多能互补综合能源系统是一种通过整合多种能源的形势&#xff08;如电力、天然气、热能、冷能等&#xff09;和多种能源技术&#xff08;如可再生能源、储能技术、智能电网等&#xff09;&#xff0c;实现能源利用和配置调整的系统。其目标是通过多能互补和协同优化&#xff0c;…

Linux部署DeepSeek r1 模型训练

之前写过一篇windows下部署deepseekR1的文章&#xff0c;有小伙伴反馈提供一篇linux下部署DeepSeek r1 模型训练教程&#xff0c;在 Linux 环境下&#xff0c;我找了足够的相关资料&#xff0c;花费了一些时间&#xff0c;我成功部署了 DeepSeek R1 模型训练任务&#xff0c;结…

使用pyCharm创建Django项目

使用pyCharm创建Django项目 1. 创建Django项目虚拟环境&#xff08;最新版版本的Django) 使用pyCharm的创建项目功能&#xff0c;选择Django,直接创建。 2. 创建Django项目虚拟环境&#xff08;安装特定版本&#xff09; 2.1创建一个基础的python项目 2.2 安装指定版本的D…

基于vue3实现的课堂点名程序

设计思路 采用vue3实现的课堂点名程序&#xff0c;模拟课堂座位布局&#xff0c;点击开始点名按钮后&#xff0c;一朵鲜花在座位间传递&#xff0c;直到点击结束点名按钮&#xff0c;鲜花停留的座位被点名。 课堂点名 座位组件 seat.vue <script setup>//组合式APIimpo…

Springboot 中如何使用Sentinel

在 Spring Boot 中使用 Sentinel 非常方便&#xff0c;Spring Cloud Alibaba 提供了 spring-cloud-starter-alibaba-sentinel 组件&#xff0c;可以快速将 Sentinel 集成到你的 Spring Boot 应用中&#xff0c;并利用其强大的流量控制和容错能力。 下面是一个详细的步骤指南 …

IoTDB 导入数据时提示内存不足如何处理

问题现象 IoTDB 导入数据时提示内存不足&#xff0c;该如何处理&#xff1f; 解决方案 数据导入脚本会在触发内存不足的时候主动进行重试。当遇到此问题时&#xff0c;用户不用做任何操作&#xff0c;脚本也可以正确进行处理。如果想从根源减少此类提示&#xff0c;可以按照下…

计算机视觉中图像的基础认知

一、图像/视频的基本属性 在计算机视觉中&#xff0c;图像和视频的本质是多维数值矩阵。图像或视频数据的一些基本属性。 宽度&#xff08;W&#xff09; 和 高度&#xff08;H&#xff09; 定义了图像的像素分辨率&#xff0c;单位通常是像素。例如&#xff0c;一张 1920x10…

【React】组件通信

组件通信 父传子 - props function Article(props) {return (<div><h2>{props.title}</h2><p>{props.content}</p><p>状态&#xff1a; {props.active ? 显示 : 隐藏}</p></div>) } // 设置默认值方式一 // 使用 defaultPr…

Tomcat添加到Windows系统服务中,服务名称带空格

要将Tomcat添加到Windows系统服务中&#xff0c;可以通过Tomcat安装目录中“\bin\service.bat”来完成&#xff0c;如果目录中没有service.bat&#xff0c;则需要使用其它方法。 打到CMD命令行窗口&#xff0c;通过cd命令跳转到Tomcat安装目录的“\bin\”目录&#xff0c;然后执…

基于Python深度学习的【蘑菇识别】系统~卷积神经网络+TensorFlow+图像识别+人工智能

一、介绍 蘑菇识别系统&#xff0c;本系统使用Python作为主要开发语言&#xff0c;基于TensorFlow搭建卷积神经网络算法&#xff0c;并收集了9种常见的蘑菇种类数据集【“香菇&#xff08;Agaricus&#xff09;”, “毒鹅膏菌&#xff08;Amanita&#xff09;”, “牛肝菌&…

124 巨坑uni-app踩坑事件 uniCloud本地调试服务启动失败

1.事情是这样的 事情是这样的&#xff0c;我上午在运行项目的时候还是好好的&#xff0c;我什么都没干&#xff0c;没动代码&#xff0c;没更新&#xff0c;就啥也没干&#xff0c;代码我也还原成好好的之前的样子&#xff0c;就报这个错&#xff0c;但是我之前没用过这个服务呀…

Android Studio “Sync project with Gradle Files”按钮消失——文件层级打开不对

问题出现的背景 Android Studio显示&#xff0c;后来查找解决方案&#xff0c;里面提到“Sync project with Gradle Files”按钮&#xff0c;一检查发现自己的软件上面没有这个选项&#xff0c;于是参考 https://debugah.com/android-studio-can-not-find-sync-project-with-g…

什么是HTTP Error 429以及如何修复

为了有效管理服务器资源并确保所有用户都可以访问&#xff0c;主机提供商一般都会对主机的请求发送速度上做限制&#xff0c;一旦用户在规定时间内向服务器发送的请求超过了允许的限额&#xff0c;就可能会出现429错误。 例如&#xff0c;一个API允许每个用户每小时发送100个请…

LAWS是典型的人机环境系统

致命性自主武器系统&#xff08;Lethal Autonomous Weapons Systems&#xff0c;LAWS&#xff09;是一种典型的人机环境系统&#xff0c;它通过高度集成的传感器、算法和武器平台&#xff0c;在复杂的战场环境中自主执行任务。LAWS能够自主感知环境、识别目标、做出决策并实施攻…

IC-Portrait:打造逼真个性化肖像的新纪元!

在数字内容创作、虚拟形象、游戏和增强现实等领域&#xff0c;肖像生成已成为计算机图形学研究的热点。尽管近年来肖像生成模型取得了显著进展&#xff0c;能够生成越来越逼真和吸引人的肖像&#xff0c;但仍面临诸多挑战。 今天&#xff0c;给大家介绍一种个性化肖像生成框架I…

ubuntu服务器部署

关闭欢迎消息 服务器安装好 ubuntu 系统后&#xff0c;进行终端登录&#xff0c;会显示出很多的欢迎消息 通过在用户的根目录下执行 touch .hushlogin 命令&#xff0c;再次登录终端就不会出现欢迎消息 修改hostname显示 修改 /etc/hostname 文件内容为主机名&#xff0c;保…

【第3章:卷积神经网络(CNN)——3.5 CIFAR-10图像分类】

嘿,小伙伴们,今天咱们来聊聊一个超级酷炫的话题——卷积神经网络(CNN)及其在CIFAR-10图像分类中的应用。这不仅仅是一个技术话题,更是一场探索人工智能奥秘的旅程。准备好了吗?咱们这就发车! 一、CNN:人工智能的“千里眼” 首先,咱们得知道CNN是啥。CNN,全名Convol…

腿足机器人之二- 运动控制概览

腿足机器人之二运动控制概览 高层运动规划MPCRL 中层逆运动学和逆动力学底层执行器控制传感器校正 上一篇博客是腿足机器人的骨架和关节的机械和电气组件&#xff0c;关节不仅需要通过机械设计实现复杂的运动能力&#xff0c;还必须通过电子组件和控制系统来精确控制这些运动。…

无人机信号调制技术原理

一、调制技术的必要性 频谱搬移&#xff1a;将低频的基带信号搬移到高频的载波上&#xff0c;便于天线辐射和传播。 信道复用&#xff1a; 利用不同的载波频率或调制方式&#xff0c;实现多路信号同时传输&#xff0c;提高信道利用率。 抗干扰&#xff1a; 通过选择合适的调…