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 = 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.rhkb.cn/news/18095.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

EasyRTC轻量级SDK:智能硬件音视频通信资源的高效利用方案

在智能硬件这片广袤天地里&#xff0c;每一份资源的精打细算都关乎产品的生死存亡。随着物联网技术的疾速演进&#xff0c;实时音视频通信功能已成为众多设备的标配。然而&#xff0c;硬件资源的捉襟见肘&#xff0c;让开发者们常常陷入两难境地。EasyRTC&#xff0c;以它的极致…

Github Action自动流翻译README文档【CI/CD】

翻译自述文件操作 一、自述文件翻译 英语简体中文繁体中文印地语法语阿拉伯 GitHub Action 将自述文件翻译成任何语言 这是一个 GitHub Action&#xff0c;可以自动将你的 repo 中的自述文件翻译成指定的语言。 二、设置 添加工作流文件到您的项目&#xff08;例如.githu…

张弛语言课退费动漫配音与人物的深度剖析退费

在动漫的奇幻世界里&#xff0c;精彩的画面固然吸睛&#xff0c;而配音更是赋予角色灵魂的关键要素&#xff0c;它与人物之间存在着千丝万缕的紧密联系。 《火影忍者》中的鸣人&#xff0c;他的配音充满活力与朝气&#xff0c;声音高亢且坚定&#xff0c;将鸣人的热血、乐观和…

Nginx负载均衡

一。Nginx负载均衡的算法以及过程 二。nginx四层负载均衡的配置&#xff08;四层&#xff09; 1.vi /etc/nginx/conf.d/lb.conf 比较常见&#xff1a;weight&#xff1a;设置权重&#xff0c;backup&#xff1a;当其他主机全部用不了&#xff0c;这个作为备份 2.systemctl r…

Python爬虫实战:股票分时数据抓取与存储 (1)

在金融数据分析中&#xff0c;股票分时数据是投资者和分析师的重要资源。它能够帮助我们了解股票在交易日内的价格波动情况&#xff0c;从而为交易决策提供依据。然而&#xff0c;获取这些数据往往需要借助专业的金融数据平台&#xff0c;其成本较高。幸运的是&#xff0c;通过…

json-schema 的编辑器

最近在找一个 json-schema 的编辑器&#xff0c;在网上找了找&#xff0c;以下两个项目用的比较多 一、两款json-schema-editor 1、vue-json-schema-editor-visual 一个高效易用的基于 Vue Element UI 的 json-schema 编辑器。 git地址&#xff1a;https://github.com/gis…

记一次Self XSS+CSRF组合利用

视频教程在我主页简介或专栏里 &#xff08;不懂都可以来问我 专栏找我哦&#xff09; 目录&#xff1a;  确认 XSS 漏洞 确认 CSRF 漏洞 这个漏洞是我在应用程序的订阅表单中发现的一个 XSS 漏洞&#xff0c;只能通过 POST 请求进行利用。通常情况下&#xff0c;基于 POST 的…

API网关基础知识总结

什么是网关&#xff1f; 微服务背景下&#xff0c;一个系统被拆分为多个服务&#xff0c;但是像安全认证&#xff0c;流量控制&#xff0c;日志&#xff0c;监控等功能是每个服务都需要的&#xff0c;没有网关的话&#xff0c;我们就需要在每个服务中单独实现&#xff0c;这使…

Redis存储⑥Redis五大数据类型之 Zset

目录 1. Zset 有序集合 1.1 Zset 有序集合常见命令 zadd zcard zcount zrange zrevrange zrangebyscore&#xff08;弃用&#xff09; zpopmax bzpopmax zpopmin bzpopmin zrank zrevrank zscore zrem zremrangebyrank zremrangebyscore zincrby 1.2 Zset有…

景联文科技:以精准标注赋能AI未来,打造高质量数据基石

在人工智能蓬勃发展的时代&#xff0c;数据已成为驱动技术革新的核心燃料&#xff0c;而高质量的数据标注则是让AI模型从“感知”走向“认知”的关键桥梁。作为深耕数据服务领域的创新者&#xff0c;景联文科技始终以“精准、高效、安全”为核心理念&#xff0c;为全球AI企业提…

Wireshark TS | 再谈虚假的 TCP Spurious Retransmission

前言 在之前的《虚假的 TCP Spurious Retransmission》文章中曾提到一个错误判断为 TCP Spurious Retransmission&#xff0c;实际为 TCP Out-Of-Order 的案例&#xff0c;本次继续探讨一个虚假的 TCP Spurious Retransmission 案例。 问题背景 TCP Spurious Retransmission…

Redis常用的五种数据结构详解

一、Redis 数据库介绍 Redis 是一种键值&#xff08;Key-Value&#xff09;数据库。相对于关系型数据库&#xff08;比如 MySQL&#xff09;&#xff0c;Redis 也被叫作非关系型数据库。 像 MySQL 这样的关系型数据库&#xff0c;表的结构比较复杂&#xff0c;会包含很多字段&…

Effective Objective-C 2.0 读书笔记——内存管理(上)

Effective Objective-C 2.0 读书笔记——内存管理&#xff08;上&#xff09; 文章目录 Effective Objective-C 2.0 读书笔记——内存管理&#xff08;上&#xff09;引用计数属性存取方法中的内存管理autorelease保留环 ARCARC必须遵循的方法命名原则ARC 的自动优化&#xff1…

PyTorch 混合精度训练中的警告处理与代码适配指南

在最近的 PyTorch 项目开发中&#xff0c;遇到了两个与混合精度训练相关的警告信息。这些警告主要涉及 torch.cuda.amp 模块的部分 API 已被标记为弃用&#xff08;deprecated&#xff09;。本文将详细介绍这些警告的原因、解决方法以及最佳实践。 警告内容 警告 1: torch.cud…

STM32自学记录(九)

STM32自学记录 文章目录 STM32自学记录前言一、DMA杂记二、实验1.学习视频2.复现代码 总结 前言 DMA 一、DMA杂记 DMA&#xff08;Direct Memory Access&#xff09;直接存储器存取 DMA可以提供外设和存储器或者存储器和存储器之间的高速数据传输&#xff0c;无须CPU干预&…

鸿蒙Harmony-UIAbility内状态-LocalStorage详细介绍

鸿蒙Harmony-UIAbility内状态-LocalStorage详细介绍 1.1 Localstorage的概念 LocalStorage是页面级的UI状态存储&#xff0c;通过Entry装饰器接收的参数可以在页面内共享同一个LocalStorage实例&#xff0c;LocalStorage也可以在UIAbility内&#xff0c;页面间共享状态 1.2 Lo…

SiliconCloud 支持deepseek,送2000w token

SiliconCloud SiliconCloud 邀请奖励持续进行&#xff0c;2000 万 Tokens 送不停&#xff01; 邀请好友赚 2000 万 Tokens&#xff1a;每成功邀请一位新用户通过手机号码注册&#xff0c;您将获得 2000 万 Tokens&#xff1b;注册即送 2000 万 Tokens&#xff1a;受邀好友作为…

ubuntu服务器部署

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

排序算法——人无完人

没有哪一个排序方法是完美的&#xff0c;对于不同的需求&#xff0c;排序算法各有自己的优势。金无足赤&#xff0c;人无完人。 &#xff08;这里不再重复所讲排序算法的实现&#xff0c;网上已有很多好的教学。&#xff09; 排序方法除了依靠时间复杂度和空间复杂度来区分&am…

3D模型可视化引擎HOOPS Visualize在桌面端的支持有哪些特点?

在数字化转型日益加速的今天&#xff0c;工业和工程领域的专业人员面临着越来越复杂的设计和数据分析需求。3D模型可视化技术应运而生&#xff0c;并成为了加速设计和制造流程的关键工具。作为业界领先的3D可视化引擎之一&#xff0c;HOOPS Visualize提供了一系列强大的桌面端支…