跳到内容

提示词嵌入输入

本页面将教您如何将提示词嵌入(prompt embedding)输入传递给 vLLM。

什么是提示词嵌入?

大语言模型的传统文本数据流是从文本到 token ID(通过分词器),再从 token ID 到提示词嵌入。对于传统的仅解码器(decoder-only)模型(例如 meta-llama/Llama-3.1-8B-Instruct),将 token ID 转换为提示词嵌入的步骤是通过从学习到的嵌入矩阵中查找来完成的,但模型并不局限于仅处理与其 token 词汇表相对应的嵌入。

离线推理

要输入多模态数据,请遵循 vllm.inputs.EmbedsPrompt 中的模式

  • prompt_embeds:一个表示提示词/token 嵌入序列的 torch 张量。其形状为 (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