vLLM部署多模态大模型

在这里插入图片描述

一. vLLM简介

vLLM 是一个高效的推理和部署框架,专为大规模语言模型(LLM)优化。它采用 PagedAttention 技术,显著提高 GPU 显存利用率,支持高吞吐量推理。vLLM 兼容 Hugging Face Transformers 和 OpenAI API 接口,便于集成现有模型。其高效的 KV 缓存管理减少重复计算,适用于流式生成、批量处理和多用户推理场景。vLLM 还支持 FlashAttention,可进一步提升推理速度。相比传统推理框架,vLLM 具备更低的延迟和更高的并发能力,适用于部署 GPT-4 级别的大模型。
在这里插入图片描述
vLLM 通过这些优化,实现了 高吞吐量、低延迟、大模型推理加速,尤其适用于 多用户并发推理 和 大模型部署。

二. vLLM部署Qwen2.5 vl多模态大模型实战

  1. 要准备Qwen2.5 vl多模态大模型和对应的环境,可参考:
    多模态大模型Qwen2.5 vl本地部署指南
  2. 安装vLLM
pip install vllm==0.7.3
  1. 测试代码
from transformers import AutoProcessor
from vllm import LLM, SamplingParams
from qwen_vl_utils import process_vision_info


class QwenVLModel:
    def __init__(self, model_path="./Qwen2.5-VL-7B-Instruct"):
        self.model_path = model_path

        self.llm = LLM(
            model=self.model_path,
            limit_mm_per_prompt={"image": 1, "video": 1},
            tensor_parallel_size=1,      # 设置为1以减少GPU内存使用
            gpu_memory_utilization=0.9,  # 控制GPU内存使用率
            max_model_len=2048,          # 限制最大序列长度
            # quantization="awq",        # 使用AWQ量化来减少内存使用
        )

        self.sampling_params = SamplingParams(
            temperature=0.1,
            top_p=0.001,
            repetition_penalty=1.05,
            max_tokens=512,
            stop_token_ids=[],
        )

        self.processor = AutoProcessor.from_pretrained(self.model_path)

    def generate(self, messages):
        prompt = self.processor.apply_chat_template(
            messages,
            tokenize=False,
            add_generation_prompt=True,
        )
        image_inputs, video_inputs = process_vision_info(messages)

        mm_data = {}
        if image_inputs is not None:
            mm_data["image"] = image_inputs
        if video_inputs is not None:
            mm_data["video"] = video_inputs

        llm_inputs = {
            "prompt": prompt,
            "multi_modal_data": mm_data,
        }

        outputs = self.llm.generate([llm_inputs], sampling_params=self.sampling_params)
        return outputs[0].outputs[0].text


if __name__ == "__main__":
    from tqdm import tqdm
    img_path = "/home/xxx/xxx/workspace/Qwen2.5/test.jpg"  
    prompt_str = "提取图片中的关键信息(包含身份证号码),输出的键值对尽量用中文输出,并以json形式输出"
    image_messages = [
        {"role": "system", "content": "You are a helpful assistant."},
        {
            "role": "user",
            "content": [
                {
                    "type": "image",
                    "image": img_path,
                    "min_pixels": 256 * 28 * 28,
                    "max_pixels": 1280 * 28 * 28,
                },
                {"type": "text", "text": prompt_str},
            ],
        },
    ]
    model = QwenVLModel()
    output_text = model.generate(image_messages)
    print(output_text)

输出结果:

{
    "银行名称": "招商银行",
    "卡号": "5236498888888888",
    "持卡人姓名": "XIAO ZHAO",
    "银行卡类型": "MasterCard"
}
<think>好的,我需要回答用户关于千文2.5多模态模型(Qwen2.5-VL)的部署条件和环境要求的问题。首先,用户提到了引用的内容,其中引用[1]提到了Qwen2.5-VL有三个模型尺寸:3B、7B和72B,并且完全开源,可以在Hugging Face和ModelScope下载。引用[2]则具体提到了在Windows上本地部署7B模型的指南,并给出了Hugging Face的模型地址。 接下来,我需要整理部署Qwen2.5-VL模型所需的环境条件。根据常见的深度学习模型部署经验,尤其是大语言模型和多模态模型,通常需要考虑以下几个因素: 1. **硬件要求**:模型尺寸越大,对显存和内存的需求越高。例如,7B模型可能需要至少16GB的显存,尤其是在使用全精度(FP32)时。如果使用量化技术(如FP16或INT8),显存需求可能会降低。此外,CPU和RAM的配置也需要足够强大来处理模型推理。 2. **软件依赖**:需要安装适当的深度学习框架,如PyTorch或TensorFlow,以及相关的库,比如Transformers、Hugging Face的Accelerate、bitsandbytes(用于量化)等。CUDA和cuDNN的版本也需要与PyTorch版本匹配,以确保GPU加速有效。 3. **操作系统**:虽然用户提到的是Windows部署,但通常这类模型在Linux环境下更为常见,因此可能需要确认Windows下的兼容性,或者使用WSL(Windows Subsystem for Linux)。 4. **存储空间**:模型文件的大小也需要考虑,例如7B模型可能占用数十GB的存储空间,尤其是在下载完整的模型权重和依赖文件时。 5. **Python环境**:需要特定版本的Python,可能3.8或更高版本,以及通过pip或conda安装的依赖包。 接下来需要验证这些信息是否符合Qwen2.5-VL的具体要求。查阅引用[2]提到的部署指南,可能包含具体的步骤,例如安装Hugging Face的库、下载模型权重、配置运行时环境等。此外,Hugging Face的模型页面通常会有“How to Use”部分,提供代码示例和环境要求。 另外,用户提供的引用中提到了模型是完全开源的,所以应该可以直接从Hugging Face或ModelScope下载,可能需要使用Git LFS(大文件存储)来下载模型文件,这需要安装Git LFS客户端。 可能还需要考虑多模态部分的依赖,比如处理图像需要的库(Pillow、OpenCV等),以及多模态模型特有的预处理和后处理步骤。 关于硬件要求,不同模型尺寸的具体需求可能不同。例如,3B模型可能在消费级GPU(如RTX 3080)上可以运行,而72B模型需要更专业的硬件或多个GPU进行并行计算。需要根据模型尺寸给出不同的建议。 软件方面,需要确认PyTorch版本是否支持模型代码,例如是否使用了最新的特性。Hugging Face的Transformers库可能需要特定版本,如果模型是最近发布的,可能需要安装最新版本或某个指定版本。 还需要注意操作系统的兼容性问题,例如某些库可能在Windows上安装较为复杂,可能需要额外步骤或依赖。引用[2]提到了Windows篇的部署指南,说明官方可能已经提供了针对Windows的解决方案,可能包括预编译的二进制文件或特定的安装指令。 最后,生成相关问题需要考虑用户可能的后续疑问,例如量化方法、性能优化、多GPU支持、推理速度等,以及与其他模型的对比或应用场景。</think>千文2.5多模态模型(Qwen2.5-VL)的部署条件和环境要求如下: ### 一、硬件要求 1. **显存需求** - **3B/7B模型**:推荐使用至少16GB显存的GPU(如NVIDIA RTX 3090/4090) - **72B模型**:需专业级显卡(如A100/H100)或通过多卡并行实现[^1] - *量化优化*:使用`bitsandbytes`库支持FP16/INT8量化时,显存需求可降低30%-50%[^2] 2. **内存与存储** - 内存建议≥32GB(72B模型需≥64GB) - 存储空间需预留≥50GB(包含模型权重、依赖库及数据集) ### 二、软件环境 1. **操作系统** - 支持Windows/Linux,推荐Ubuntu 20.04+或Windows 11(需WSL2)[^2] 2. **核心依赖库** - Python ≥3.8 - PyTorch ≥2.0(需与CUDA版本匹配) - Transformers ≥4.36.0 ```bash pip install torch torchvision --index-url https://download.pytorch.org/whl/cu118 pip install transformers accelerate bitsandbytes ``` 3. **多模态组件** - 图像处理:`Pillow`, `opencv-python` - 模型加载:需安装`git-lfs`下载大文件 ```bash sudo apt-get install git-lfs # Linux git lfs install ``` ### 三、部署步骤(以7B模型为例) 1. 下载模型权重 ```python from transformers import AutoModelForCausalLM, AutoTokenizer model = AutoModelForCausalLM.from_pretrained("Qwen/Qwen2.5-VL-7B-Instruct", device_map="auto") tokenizer = AutoTokenizer.from_pretrained("Qwen/Qwen2.5-VL-7B-Instruct") ``` 2. 运行推理示例 ```python inputs = tokenizer("描述下图内容:", images="image.jpg", return_tensors="pt").to("cuda") outputs = model.generate(**inputs, max_new_tokens=100) print(tokenizer.decode(outputs[0])) ``` ### 四、性能优化建议 1. 使用`vLLM`加速推理:支持动态批处理和PagedAttention技术 2. 启用FlashAttention-2减少显存占用(需Ampere架构以上GPU)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值