【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.pswp.cn/news/915278.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/915278.shtml
英文地址,請注明出處:http://en.pswp.cn/news/915278.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【MySQL筆記】視圖

目錄一、什么是視圖&#xff1f;二、使用視圖的優勢三、視圖的創建與使用四、不能更新視圖的場景五、刪除視圖六、總結一、什么是視圖&#xff1f; 視圖&#xff08;View&#xff09;是一種虛擬表&#xff0c;不存儲實際數據&#xff0c;而是通過執行預定義的查詢動態生成數據…

【RK3576】【Android14】分區劃分

獲取更多相關的【RK3576】【Android14】驅動開發&#xff0c;可收藏系列博文&#xff0c;持續更新中&#xff1a; 【RK3576】Android 14 驅動開發實戰指南

Datawhale 25年7月組隊學習coze-ai-assistant Task1學習筆記:動手實踐第一個AI Agent—英倫生活口語陪練精靈

Chap1 了解AI工作流 1.1什么是工作流 工作流 就像是一條流水線&#xff0c;把復雜的任務拆分成多個簡單的步驟&#xff0c;每一步都有明確的目標和流程。1.2智能體和工作流的區別 智能體&#xff08;AI Agent&#xff09; **是什么 &#xff1a;**智能體是一個自動化的“助手”…

Webpack插件開發深度指南:從原理到實戰

Webpack插件是前端工程化的核心引擎&#xff0c;本文將帶你深入插件開發全流程&#xff0c;實現一個功能完整的資源清單插件&#xff0c;并揭示Tapable事件系統的核心原理。 一、Webpack插件機制解析 1.1 插件架構核心&#xff1a;Tapable事件系統 Webpack基于Tapable構建了…

2、Redis持久化詳解

Redis持久化詳解 文章目錄 Redis持久化詳解 前言 RDB和AOF的區別 RDB和AOF的優缺點 Redis 持久化配置 1、RDB持久化配置 2、AOF持久化配置(嘗試修復會刪除aof文件內容) 3、AOF 重寫功能 新增知識點: 新增知識點: 前言 Redis是一種高級 key-value 型的NoSQL數據庫。它跟mem…

curl 命令詳解

curl 命令的 -d/–data 和 --data-urlencode 的區別 curl 命令的 -d/–data 和 --data-urlencode 都用于發送 HTTP POST 請求的數據&#xff0c;但關鍵區別在于 是否自動對數據進行 URL 編碼。以下是詳細對比&#xff1a; curl 命令的 -d/--data 和 --data-urlencode 都用于發送…

ubuntu下好用的錄屏工具

以下是 vokoscreen 的安裝教程&#xff0c;適用于 Linux 系統。vokoscreen 是一款簡單易用的屏幕錄制工具&#xff0c;支持錄制屏幕、攝像頭和音頻。 安裝 vokoscreen vokoscreen 提供了多種安裝方式&#xff0c;包括通過包管理器、Deb 包或 AppImage 文件。 方法 1&#xf…

筆試大題20分值(用兩個棧實現隊列)

目錄前言一、原題二、解題思路三、代碼實現&#xff08;c/c&#xff09;C語言代碼C代碼實現結語前言 目前博主在處于秋招求職的關鍵時期&#xff0c;在暑假這段時間會頻繁更新博客&#xff0c;想在暑假期間把一些常考的面試和筆試題過一下&#xff0c;利用這兩個月沉淀一下技術…

【知識掃盲】tokenizer.json中的vocab和merges是什么?

在自然語言處理里&#xff0c;tokenizer.json 文件一般是由 Hugging Face 的 Tokenizers 庫生成的&#xff0c;它是分詞器配置的核心文件。這里面的 vocab 和 merges 是子詞分詞算法&#xff08;像 BPE 這種&#xff09;的重要構成要素。下面為你詳細解釋它們的作用和工作原理&…

【安卓筆記】RxJava的Hook機制,整體攔截器

0. 環境&#xff1a; 電腦&#xff1a;Windows10 Android Studio: 2024.3.2 編程語言: Java Gradle version&#xff1a;8.11.1 Compile Sdk Version&#xff1a;35 Java 版本&#xff1a;Java11 1. 使用場景 整個項目都是用了RxJava&#xff0c;需要對 整個/部分 項目…

NX二次開發常用函數——從一個坐標系到另一個坐標系的轉換(UF_MTX4_csys_to_csys )相同體坐標轉化

再做項目時相信大家都會用到坐標轉化,例如,我之前寫的案例分享中的博客都用到過,之前總是找借口進行if else判斷,雖然可以實現,但是比起坐標變換無論代碼復雜程度還是運行速度都比較差,之前參加過曹大師的教學訓練營,但是明顯感覺到大佬寫代碼的邏輯性以及模塊化能力都比…

數據庫防止數組字符串序列化

請求接到數組["aa","bb"]后,后端需要轉換成字符串Java 8 使用 String.join()String[] arr {"aa", "bb"}; String str String.join(",", arr); // "aa,bb"如果采用其他轉換,在字段存入數據庫后會["\"a…

若依框架文件上傳返回路徑端口錯誤 - Nginx代理環境下serverConfig.getUrl()獲取端口異常

目錄一 、問題描述二、問題現象三、問題根本原因3.1 代碼分析3.2 問題核心四、解決方案五、總結一 、問題描述 在使用若依框架進行項目開發時&#xff0c;遇到了一個令人困擾的問題&#xff1a;文件上傳功能在本地開發環境運行正常&#xff0c;但部署到服務器后&#xff0c;上…

使用PyInstaller打包 Python 工程

引言:大模型是個好工具,盡管好多內容都是拼湊的,但是整理學到的就是自己的。因工作需要隱藏python源代碼,方法有PyInstaller 、Cpython等多種方法,PyInstaller更為常用,PyInstaller打包 Python 工程步驟整理如下: 一、確保系統環境準備就緒 安裝 Python 和 pip 確認版本…

Python 程序設計講義(1):PyCharm 安裝教程

Python 程序設計講義&#xff08;1&#xff09;&#xff1a;PyCharm 安裝教程 一、安裝 Python 解釋器 1、下載 Python 安裝文件 點擊如下鏈接進入 Python 官網&#xff1a; https://www.python.org/ 在彈出的頁面中單擊【Downloads】&#xff0c;然后單擊下面的【Download Pyt…

uniapp云打包安卓

1、基礎云打包 2、修改logo3、怎么實現下拉菜單4、修改啟動頁啟動頁默認這樣 5、URL Scheme頁面跳轉

Python----NLP自然語言處理(英文分詞器--NLTK)

一、NLTK_介紹NLTK&#xff08;Natural Language Toolkit&#xff0c;自然語言處理工具包&#xff09;&#xff0c;一個主要用于清洗和處理英文文本的Python工具包。它有很多的功能&#xff0c;我們主要使用的是它的分詞功能&#xff0c;之前講過中文分詞是比較復雜的&#xff…

傳統瀏覽器過時了?Dia如何用AI重新定義上網體驗

歡迎來到我的博客&#xff0c;代碼的世界里&#xff0c;每一行都是一個故事&#x1f38f;&#xff1a;你只管努力&#xff0c;剩下的交給時間 &#x1f3e0; &#xff1a;小破站 傳統瀏覽器過時了&#xff1f;Dia如何用AI重新定義上網體驗它是什么核心功能搜索編程左右互動感謝…

基于DTLC-AEC與DTLN的輕量級實時語音增強系統設計與實現

基于DTLC-AEC與DTLN的輕量級實時語音增強系統設計與實現 前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到網站。 1. 引言 在當今的互聯網通信時代,實時語音通信已成為人們日常生活中不可或缺的一部分。然而,語音通信質量常…

Attu-Milvus向量數據庫可視化工具

本文介紹了如何安裝可視化工具Attu&#xff0c;包括使用Docker鏡像啟動并訪問Attu服務。 目錄 前言 一、Attu安裝 1. Docker容器安裝 2. 桌面程序安裝 二、使用 Milvus Web U 前言 Attu是一款專為Milvus向量數據庫打造的開源數據庫管理工具&#xff0c;提供了便捷的圖形化…