《DeepSeek大模型高性能核心技术与多模态融合开发(人工智能技术丛书)》(王晓华)【摘要 书评 试读】- 京东图书
DeepSeek-VL2是一款引人注目的MoE(Mixture-of-Experts)大语言模型,由于MoE的设计与使用,使得此模型在推断时极大提升了计算效率。通过创新的MLA机制,该模型不仅降低了计算复杂度,还显著减少了显存占用,同时结合强化学习技术,使其在各种基准测试中表现卓越,特别是在中文和代码生成任务上成绩斐然。
DeepSeek-VL2的应用前景广阔,无论是在自然语言处理、文本生成,还是机器翻译、智能问答等领域,都能提供高效且准确的解决方案。其开源和可免费商用的特点更是让它成为企业和开发者的优选之一。展望未来,随着技术进步和应用拓展,DeepSeek-VL2有望在AI技术领域发挥更广泛的作用,推动整个行业的创新与发展。
Linux版本DeepSeek-VL2代码下载与与图像问答示例
首先我们可以登录github完成DeepSeek-VL2的代码下载。为了简便起见,作者在这里提供了下载好的代码,如下所示:
import torch
from transformers import AutoModelForCausalLM
from deepseek_vl2.models import DeepseekVLV2Processor, DeepseekVLV2ForCausalLM
from deepseek_vl2.utils.io import load_pil_images
model_path = "deepseek-ai/deepseek-vl2-tiny"
vl_chat_processor: DeepseekVLV2Processor = DeepseekVLV2Processor.from_pretrained(model_path)
tokenizer = vl_chat_processor.tokenizer
vl_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进行模型设计。由于模型的权重和编码器需要从网上下载,读者可以到魔搭社区下载这个迷你模型:
https://modelscope.cn/models/deepseek-ai/deepseek-vl2-tiny/files
对于下载有困难的读者,作者在配套代码库中准备了下载好的权重与文件,读者可以直接更改model_path地址到本地。代码如下所示:
model_path = "C:/Users/xiaohua/.cache/huggingface/hub/models--deepseek-ai--deepseek-vl2-tiny/snapshots/66c54660eae7e90c9ba259bfdf92d07d6e3ce8aa"
在Linux系统下,读者在安装对应的Python包后,可直接运行代码,结果如下所示:
<|User|>: This is image_1: <image>
This is image_2: <image>
This is image_3: <image>
请告诉我这幅画里面画的是什么?
<|Assistant|>: 这幅画展示了三根胡萝卜。胡萝卜呈橙色,顶部带有绿色的叶子。它们被堆叠在一起,看起来非常新鲜。胡萝卜通常用于烹饪,可以生吃、炒菜或炖煮。<|end▁of▁sentence|>