Linux版本DeepSeek-VL2代码下载与图像识别示例

《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|>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值