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

多模态DeepSeek大模型的本地化部署

《DEEPSEEK原生应用与智能体开发实践 图书》【摘要 书评 试读】- 京东图书

本文指导读者如何在本地机器上成功安装和配置DeepSeek-VL2模型。这包括了环境准备、依赖安装以及模型文件的正确放置等步骤。我们将确保读者能够顺利地搭建起一个可用于学习和实验的本地环境。首先我们可以登录GitHub完成DeepSeek-VL2的代码下载。为了简便起见,我们在这里提供了下载好的代码,如下所示:

import torch
from transformers import AutoModelForCausalLMfrom deepseek_vl2.models import DeepseekVLV2Processor, DeepseekVLV2ForCausalLM
from deepseek_vl2.utils.io import load_pil_imagesmodel_path = "deepseek-ai/deepseek-vl2-tiny"
vl_chat_processor: DeepseekVLV2Processor = DeepseekVLV2Processor.from_pretrained(model_path)
tokenizer = vl_chat_processor.tokenizervl_gpt: DeepseekVLV2ForCausalLM = AutoModelForCausalLM.from_pretrained(model_path, trust_remote_code=True)
vl_gpt = vl_gpt.to(torch.bfloat16).cuda().eval()conversation = [{"role": "<|User|>","content": "This is image_1: <image>\n""This is image_2: <image>\n""This is image_3: <image>\n 请告诉我这幅画里面画的是什么?","images": ["images/multi_image_1.jpeg","images/multi_image_2.jpeg","images/multi_image_3.jpeg",],},{"role": "<|Assistant|>", "content": ""}
]pil_images = load_pil_images(conversation)
prepare_inputs = vl_chat_processor(conversations=conversation,images=pil_images,force_batchify=True,system_prompt=""
).to(vl_gpt.device)with torch.no_grad():inputs_embeds = vl_gpt.prepare_inputs_embeds(**prepare_inputs)inputs_embeds, past_key_values = vl_gpt.incremental_prefilling(input_ids=prepare_inputs.input_ids,images=prepare_inputs.images,images_seq_mask=prepare_inputs.images_seq_mask,images_spatial_crop=prepare_inputs.images_spatial_crop,attention_mask=prepare_inputs.attention_mask,chunk_size=512 )outputs = vl_gpt.generate(inputs_embeds=inputs_embeds,input_ids=prepare_inputs.input_ids,images=prepare_inputs.images,images_seq_mask=prepare_inputs.images_seq_mask,images_spatial_crop=prepare_inputs.images_spatial_crop,attention_mask=prepare_inputs.attention_mask,past_key_values=past_key_values,pad_token_id=tokenizer.eos_token_id,bos_token_id=tokenizer.bos_token_id,eos_token_id=tokenizer.eos_token_id,max_new_tokens=512,do_sample=False,use_cache=True,)answer = tokenizer.decode(outputs[0][len(prepare_ inputs.input_ids[0]):].cpu().tolist(), skip_special_tokens=False)print(f"{prepare_inputs['sft_format'][0]}", answer)

在本例中,我们定义了model_path = "deepseek-ai/deepseek-vl2-tiny",即使用一个迷你版本的DeepSeek-VL2进行模型设计,由于模型的权重和编码器需要从网上下载,对于下载有困难的读者,我们在配套代码库中准备了下载好的权重与文件,读者可以直接更改model_path地址到本地。代码如下所示:

model_path = "C:/Users/xiaohua/.cache/huggingface/hub/models--deepseek-ai--deepseek-vl2-tiny/snapshots/66c54660eae7e90c9ba259bfdf92d07d6e3ce8aa"

对于使用Windows系统的读者而言,在实际应用过程中,鉴于操作系统的差异性,读者可能需要手动安装一些必要的Python辅助包以确保程序的顺利运行。这里主要涉及两个关键的安装包,具体如下:

from flash_attn import flash_attn_qkvpacked_funcfrom xformers.ops import memory_efficient_attention

这里分别使用了flash_attn与xformers完成作为特殊的注意力架构,其中xformers可以使用如下的代码进行安装,如下所示:

pip install -U xformers --index-url https://download.pytorch.org/whl/cu118

上面安装代码建议使用PyTorch 2.6.0 + CUDA 11.8 + NVDIA3090。对于50系显卡暂时无法使用,具体安装的版本,读者可以自行斟酌。

对于flash_attn的安装,Windows版本的flash_attn无法直接安装,读者可以使用本书配套代码库中作者编译好的flash_attn安装,从而完成本地化的部署。或者读者可以到下面网站

https://github.com/Dao-AILab/flash-attention/releases/

选择如图12-5所示编译好的flash_attn包进行下载安装。

图12-5   编译好的Windows系统flash_attn安装包

同样,读者需要在安装时注意CUDA和PyTorch版本,具体使用上需要自行斟酌。

http://www.dtcms.com/a/265073.html

相关文章:

  • Colormind:优秀大模型赋能国产求解器,打造自主可控建模平台
  • 数学建模_拟合
  • 【Erdas实验教程】026:遥感图像辐射增强(去条带处理)
  • IDEA2025 Version Control 窗口 local changes显示
  • JavaScript 性能优化实战:减少 DOM 操作引发的重排与重绘
  • 操作系统考试大题-处理机调度算法-详解-2
  • 代码实现特殊的字段的基本功能
  • 用Rust编写的开源支付解决方案——Hyperswitch
  • springboot集成达梦数据库,取消MySQL数据库,解决问题和冲突
  • nohup java -jar 命令启动jar包,项目仍然会挂掉或者停止运行的解决方案
  • C++——手撕智能指针、单例模式、线程池、String
  • Vue + RuoYi 前后端分离入门手册
  • [深度学习环境踩坑记录]ubuntu22.04安装RTX3060驱动,黑屏、桌面只有壁纸和鼠标,一顿折腾
  • javaWeb02-Tomcat
  • java.sql.SQLSyntaxErrorException: Unknown column ‘user_name‘ in ‘field list‘
  • YOLOv11剪枝与量化(一)模型压缩的必要性
  • Qt写入excel
  • 整流电路Multisim电路仿真实验汇总——硬件工程师笔记
  • Rust实现FasterR-CNN目标检测全流程
  • 教程:国内如何免费用Claude4+GPT4o生成高质量科研绘图
  • vue动态绑定样式
  • Kalibr解毒填坑(一):相机标定失败
  • 408第三季part1 - 操作系统 - 文件基本概念
  • 基于STM32的土豆种植自动化灌溉系统设计与实现
  • java依赖注入方法
  • 【C语言】知识总结·文件操作
  • Redis在项目中的使用
  • 在移动端使用 Tailwind CSS (uniapp)
  • 在项目架构时,如何选择打包构建工具?
  • Nginx、Spring Cloud Gateway 与 Higress 的应用场景及核心区别