Prompt Embedding Inputs¶
本頁面將教您如何將提示嵌入輸入傳遞給 vLLM。
什麼是提示嵌入?¶
大型語言模型處理文字資料的傳統流程是從文字到 token ID(透過分詞器),然後從 token ID 到提示嵌入。對於傳統的僅解碼器模型(如 meta-llama/Llama-3.1-8B-Instruct),將 token ID 轉換為提示嵌入的這一步是透過從學習到的嵌入矩陣中查詢來實現的,但模型不限於僅處理與其 token 詞彙對應的嵌入。
離線推理¶
要輸入多模態資料,請遵循 vllm.inputs.EmbedsPrompt 中的此架構
prompt_embeds:一個 torch 張量,表示一系列提示/token 嵌入。其形狀為 (sequence_length, hidden_size),其中 sequence length 是 token 嵌入的數量,hidden_size 是模型的隱藏大小(嵌入大小)。
Hugging Face Transformers 輸入¶
您可以將 Hugging Face Transformers 模型的提示嵌入傳遞到提示嵌入字典的 'prompt_embeds' 欄位,如下面的示例所示
examples/offline_inference/prompt_embed_inference.py
線上服務¶
我們的 OpenAI 相容伺服器透過 Completions API 接受提示嵌入輸入。提示嵌入輸入透過 JSON 包中的新 'prompt_embeds' 鍵新增,並透過 vllm serve 中的 --enable-prompt-embeds 標誌啟用。
當在單個請求中同時提供 'prompt_embeds' 和 'prompt' 輸入時,提示嵌入始終先返回。
提示嵌入以 base64 編碼的 torch 張量形式傳遞。
警告
如果傳遞了形狀不正確的嵌入,vLLM 引擎可能會崩潰。僅為受信任的使用者啟用此標誌!
透過 OpenAI 客戶端的 Transformers 輸入¶
首先,啟動 OpenAI 相容伺服器
vllm serve meta-llama/Llama-3.2-1B-Instruct --runner generate \
--max-model-len 4096 --enable-prompt-embeds
然後,您可以像這樣使用 OpenAI 客戶端
examples/online_serving/prompt_embed_inference_with_openai_client.py