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

【vLLM 学习】Encoder Decoder Multimodal

vLLM 是一款专为大语言模型推理加速而设计的框架,实现了 KV 缓存内存几乎零浪费,解决了内存管理瓶颈问题。

更多 vLLM 中文文档及教程可访问 →https://vllm.hyper.ai/

*在线运行 vLLM 入门教程:零基础分步指南

源码 examples/offline_inference/encoder_decoder_multimodal.py

# SPDX-License-Identifier: Apache-2.0"""
此示例显示了如何使用 vLLM 进行离线推理
文本生成的 enc-dec LMMS 上的显式/隐式提示格式。
"""
import time
from collections.abc import Sequence
from dataclasses import asdict
from typing import NamedTuplefrom vllm import LLM, EngineArgs, PromptType, SamplingParams
from vllm.assets.audio import AudioAsset
from vllm.assets.image import ImageAsset
from vllm.utils import FlexibleArgumentParserclass ModelRequestData(NamedTuple):engine_args: EngineArgsprompts: Sequence[PromptType]def run_florence2():engine_args = EngineArgs(model="microsoft/Florence-2-large",tokenizer="facebook/bart-large",max_num_seqs=8,trust_remote_code=True,limit_mm_per_prompt={"image": 1},dtype="half",)prompts = [{   # implicit prompt with task token"prompt": "<DETAILED_CAPTION>","multi_modal_data": {"image": ImageAsset("stop_sign").pil_image},},{   # explicit encoder/decoder prompt"encoder_prompt": {"prompt": "Describe in detail what is shown in the image.","multi_modal_data": {"image": ImageAsset("cherry_blossom").pil_image},},"decoder_prompt": "",},]return ModelRequestData(engine_args=engine_args,prompts=prompts,)def run_mllama():engine_args = EngineArgs(model="meta-llama/Llama-3.2-11B-Vision-Instruct",max_model_len=4096,max_num_seqs=2,limit_mm_per_prompt={"image": 1},dtype="half",)prompts = [{   # Implicit prompt # 隐式提示"prompt": "<|image|><|begin_of_text|>What is the content of this image?",   # noqa: E501"multi_modal_data": {"image": ImageAsset("stop_sign").pil_image,},},{   # Explicit prompt # 显示提示"encoder_prompt": {"prompt": "<|image|>","multi_modal_data": {"image": ImageAsset("stop_sign").pil_image,},},"decoder_prompt": "<|image|><|begin_of_text|>Please describe the image.",   # noqa: E501},]return ModelRequestData(engine_args=engine_args,prompts=prompts,)def run_whisper():engine_args = EngineArgs(model="openai/whisper-large-v3-turbo",max_model_len=448,max_num_seqs=16,limit_mm_per_prompt={"audio": 1},dtype="half",)prompts = [{   # Test implicit prompt # 测试隐式提示"prompt": "<|startoftranscript|>","multi_modal_data": {"audio": AudioAsset("mary_had_lamb").audio_and_sample_rate,},},{   # Test explicit encoder/decoder prompt # 测试显式 编码/解码提示"encoder_prompt": {"prompt": "","multi_modal_data": {"audio": AudioAsset("winning_call").audio_and_sample_rate,},},"decoder_prompt": "<|startoftranscript|>",}]return ModelRequestData(engine_args=engine_args,prompts=prompts,)model_example_map = {"florence2": run_florence2,"mllama": run_mllama,"whisper": run_whisper,
}def main(args):model = args.model_typeif model not in model_example_map:raise ValueError(f"Model type {model} is not supported.")req_data = model_example_map[model]()engine_args = asdict(req_data.engine_args) | {"seed": args.seed}llm = LLM(**engine_args)prompts = req_data.prompts# 创建一个采样参数对象。sampling_params = SamplingParams(temperature=0,top_p=1.0,max_tokens=64,)start = time.time()# 从提示中生成输出 token 。# 输出是包含提示的对象,生成了文本和其他信息。outputs = llm.generate(prompts, sampling_params)# 打印输出。for output in outputs:prompt = output.promptgenerated_text = output.outputs[0].textprint(f"Decoder prompt: {prompt!r}, "f"Generated text: {generated_text!r}")duration = time.time() - startprint("Duration:", duration)print("RPS:", len(prompts) / duration)if __name__ == "__main__":parser = FlexibleArgumentParser(description='Demo on using vLLM for offline inference with ''vision language models for text generation')parser.add_argument('--model-type','-m',type=str,default="mllama",choices=model_example_map.keys(),help='Huggingface "model_type".')parser.add_argument("--seed",type=int,default=None,help="Set the seed when initializing `vllm.LLM`.")args = parser.parse_args()main(args)
http://www.dtcms.com/a/286480.html

相关文章:

  • Kotlin集合过滤
  • 有效的括号数据结构oj题(力口20)
  • 无人机传感器模组运行与技术难点分析
  • Axure RP 10 预览显示“无标题文档”的空白问题探索【护航版】
  • 美团闪购最新版 mtgsig1.2
  • LP-MSPM0G3507学习--04GPIO控制
  • 消息队列 2.RabbitMQ
  • Elasticsearch:ES|QL 改进的时间线
  • [3-02-01].第01章:框架概述 - Spring生态
  • 表单、表格字段,输入完毕后立即点击【保存】,导致数据未更新就被保存
  • 【教程】基于无人机的大豆光合效率研究
  • 赛思SLIC芯片、语音芯片原厂 赛思SLIC语音芯片ASX630:国产强“芯”赋能FTTR全光网络​
  • vscode 一直连不上远程,网络是通的,ssh 也能直接登录远程
  • 【科研绘图系列】R语言绘制分组箱线图
  • SDC Specical check setting的描述 - false path
  • Docker笔记-部署Redis集群
  • leetcode15.三数之和题解:逻辑清晰带你分析
  • AWS(基础)
  • 网络基础10 :ACL真机实验
  • Redis原理之哨兵机制(Sentinel)
  • 【洛谷P1417】烹调方案 题解
  • ONNX模型使用指南:从零开始掌握跨领域模型部署
  • 图片平铺下去总是有个缝隙的解决方案
  • 塞舌尔公司的查册报告Certificate of Official Search是什么?有什么信息
  • 瀚高数据库开启Oracle兼容模块
  • vue2 面试题及详细答案150道(101 - 120)
  • ubuntu20.04使用unity3d做机器人仿真环境搭建
  • Python单例模式详解:从原理到实战的完整指南
  • 详解Linux(Ubuntu/RedHat/CentOS)及国产服务器统一加域管理方案
  • GoC 上册课程