LLM 类#
- class vllm.LLM(model: str, tokenizer: str | None = None, tokenizer_mode: str = 'auto', skip_tokenizer_init: bool = False, trust_remote_code: bool = False, tensor_parallel_size: int = 1, dtype: str = 'auto', quantization: str | None = None, revision: str | None = None, tokenizer_revision: str | None = None, seed: int = 0, gpu_memory_utilization: float = 0.9, swap_space: float = 4, cpu_offload_gb: float = 0, enforce_eager: bool | None = None, max_context_len_to_capture: int | None = None, max_seq_len_to_capture: int = 8192, disable_custom_all_reduce: bool = False, disable_async_output_proc: bool = False, mm_processor_kwargs: Dict[str, Any] | None = None, **kwargs)[源代码]#
基类:
object
一个用于根据给定的提示和采样参数生成文本的大型语言模型。
此类包含一个分词器、一个语言模型(可能分布在多个GPU上),以及为中间状态(即KV缓存)分配的GPU内存空间。给定一批提示和采样参数,此类使用智能批处理机制和高效的内存管理,从模型生成文本。
- 参数:
model – HuggingFace Transformers 模型的名称或路径。
tokenizer – HuggingFace Transformers 分词器的名称或路径。
tokenizer_mode – 分词器模式。”auto” 将使用快速分词器(如果可用),而 “slow” 将始终使用慢速分词器。
skip_tokenizer_init – 如果为真,跳过分词器和解分词器的初始化。期望输入中提供有效的 prompt_token_ids 和 None 作为提示。
trust_remote_code – 在下载模型和分词器时信任远程代码(例如来自HuggingFace的代码)。
tensor_parallel_size – 用于分布式执行的张量并行GPU数量。
dtype – 模型权重和激活的数据类型。目前,我们支持 float32、float16 和 bfloat16。如果设置为 auto,我们将使用模型配置文件中指定的 torch_dtype 属性。然而,如果配置中的 torch_dtype 是 float32,我们将改为使用 float16。
quantization – 用于量化模型权重的方法。目前,我们支持“awq”、“gptq”和“fp8”(实验性)。如果为None,我们首先检查模型配置文件中的`quantization_config`属性。如果该属性为None,我们假设模型权重未量化,并使用`dtype`来确定权重的数据类型。
revision – 要使用的特定模型版本。它可以是一个分支名称、标签名称或提交ID。
tokenizer_revision – 要使用的特定分词器版本。它可以是一个分支名称、标签名称或提交ID。
seed – 用于初始化随机数生成器的种子,以便进行采样。
gpu_memory_utilization – 用于模型权重、激活和KV缓存的GPU内存的比率(介于0和1之间)。较高的值将增加KV缓存的大小,从而提高模型的吞吐量。然而,如果值过高,可能会导致内存不足(OOM)错误。
swap_space – 每个GPU使用的CPU内存大小(GiB)作为交换空间。当请求的 best_of 采样参数大于1时,这可以用于临时存储请求的状态。如果所有请求都将有 best_of=1,您可以安全地将其设置为0。否则,过小的值可能会导致内存不足(OOM)错误。
cpu_offload_gb – 用于卸载模型权重的CPU内存大小(GiB)。这实际上增加了你可以用于保存模型权重的GPU内存空间,但代价是每次前向传递都需要进行CPU-GPU数据传输。
enforce_eager – 是否强制执行急切执行。如果为 True,我们将禁用 CUDA 图并始终在急切模式下执行模型。如果为 False,我们将使用 CUDA 图和混合急切执行。
max_context_len_to_capture – CUDA 图覆盖的最大上下文长度。当序列的上下文长度超过此值时,我们将回退到急切模式(已弃用。请改用 max_seq_len_to_capture)。
max_seq_len_to_capture – CUDA 图覆盖的最大序列长度。当序列的上下文长度大于此值时,我们将回退到急切模式。此外,对于编码器-解码器模型,如果编码器输入的序列长度大于此值,我们将回退到急切模式。
disable_custom_all_reduce – 查看 ParallelConfig
**kwargs – 用于
EngineArgs
的参数。(参见 引擎参数)
备注
此类旨在用于离线推理。对于在线服务,请改用
AsyncLLMEngine
类。- beam_search(prompts: List[str | List[int]], params: BeamSearchParams) List[BeamSearchOutput] [源代码]#
使用束搜索生成序列。
- 参数:
prompts – 提示列表。每个提示可以是字符串或一组标记ID。
params – 束搜索参数。
TODO: 束搜索如何与长度惩罚、频率惩罚、停止标准等一起工作?
- chat(messages: List[ChatCompletionSystemMessageParam | ChatCompletionUserMessageParam | ChatCompletionAssistantMessageParam | ChatCompletionToolMessageParam | ChatCompletionFunctionMessageParam | CustomChatCompletionMessageParam] | List[List[ChatCompletionSystemMessageParam | ChatCompletionUserMessageParam | ChatCompletionAssistantMessageParam | ChatCompletionToolMessageParam | ChatCompletionFunctionMessageParam | CustomChatCompletionMessageParam]], sampling_params: SamplingParams | List[SamplingParams] | None = None, use_tqdm: bool = True, lora_request: LoRARequest | None = None, chat_template: str | None = None, add_generation_prompt: bool = True, continue_final_message: bool = False, tools: List[Dict[str, Any]] | None = None, mm_processor_kwargs: Dict[str, Any] | None = None) List[RequestOutput] [源代码]#
生成聊天对话的响应。
聊天对话通过分词器转换为文本提示,并调用
generate()
方法生成响应。多模态输入可以以传递给OpenAI API的相同方式传递。
- 参数:
messages – 对话列表或单个对话。 - 每个对话表示为一个消息列表。 - 每条消息是一个包含 ‘role’ 和 ‘content’ 键的字典。
sampling_params – 文本生成的采样参数。如果为 None,则使用默认的采样参数。当它是一个单一值时,它适用于每个提示。当它是一个列表时,列表的长度必须与提示的长度相同,并且它与提示一一对应。
use_tqdm – 是否使用 tqdm 来显示进度条。
lora_request – 用于生成的LoRA请求,如果有的话。
chat_template – 用于结构化聊天的模板。如果未提供,将使用模型的默认聊天模板。
add_generation_prompt – 如果为真,则为每条消息添加一个生成模板。
continue_final_message – 如果为 True,则在对话中继续最终消息,而不是开始新的对话。如果 add_generation_prompt 也为 True,则不能为 True。
mm_processor_kwargs – 多模态处理器 kwarg 覆盖此聊天请求。仅用于离线请求。
- 返回:
包含生成的响应的
RequestOutput
对象列表,顺序与输入消息相同。
- encode(prompts: str, pooling_params: PoolingParams | Sequence[PoolingParams] | None = None, prompt_token_ids: List[int] | None = None, use_tqdm: bool = True, lora_request: List[LoRARequest] | LoRARequest | None = None) List[EmbeddingRequestOutput] [源代码]#
- encode(prompts: List[str], pooling_params: PoolingParams | Sequence[PoolingParams] | None = None, prompt_token_ids: List[List[int]] | None = None, use_tqdm: bool = True, lora_request: List[LoRARequest] | LoRARequest | None = None) List[EmbeddingRequestOutput]
- encode(prompts: str | None = None, pooling_params: PoolingParams | Sequence[PoolingParams] | None = None, *, prompt_token_ids: List[int], use_tqdm: bool = True, lora_request: List[LoRARequest] | LoRARequest | None = None) List[EmbeddingRequestOutput]
- encode(prompts: List[str] | None = None, pooling_params: PoolingParams | Sequence[PoolingParams] | None = None, *, prompt_token_ids: List[List[int]], use_tqdm: bool = True, lora_request: List[LoRARequest] | LoRARequest | None = None) List[EmbeddingRequestOutput]
- encode(prompts: None, pooling_params: None, prompt_token_ids: List[int] | List[List[int]], use_tqdm: bool = True, lora_request: List[LoRARequest] | LoRARequest | None = None) List[EmbeddingRequestOutput]
- encode(prompts: PromptType | Sequence[PromptType], /, *, pooling_params: PoolingParams | Sequence[PoolingParams] | None = None, use_tqdm: bool = True, lora_request: List[LoRARequest] | LoRARequest | None = None) List[EmbeddingRequestOutput]
生成输入提示的补全。
此类会根据内存限制自动批处理给定的提示。为了获得最佳性能,请将所有提示放入一个列表中,并将其传递给此方法。
- 参数:
prompts – LLM 的提示。你可以传递一系列提示用于批量推理。关于每个提示的格式,请参阅
PromptType
了解更多详情。pooling_params – 池化参数用于池化。如果为 None,我们使用默认的池化参数。
use_tqdm – 是否使用 tqdm 来显示进度条。
lora_request – 用于生成的LoRA请求,如果有的话。
prompt_adapter_request – 提示适配器请求用于生成,如果有的话。
- 返回:
包含 EmbeddingRequestOutput 对象的列表,生成的嵌入内容与输入提示的顺序相同。
备注
使用
prompts
和prompt_token_ids
作为关键字参数被视为遗留做法,未来可能会被弃用。你应该通过inputs
参数来传递它们。
- generate(prompts: str, sampling_params: SamplingParams | List[SamplingParams] | None = None, prompt_token_ids: List[int] | None = None, use_tqdm: bool = True, lora_request: List[LoRARequest] | LoRARequest | None = None) List[RequestOutput] [源代码]#
- generate(prompts: List[str], sampling_params: SamplingParams | List[SamplingParams] | None = None, prompt_token_ids: List[List[int]] | None = None, use_tqdm: bool = True, lora_request: List[LoRARequest] | LoRARequest | None = None) List[RequestOutput]
- generate(prompts: str | None = None, sampling_params: SamplingParams | List[SamplingParams] | None = None, *, prompt_token_ids: List[int], use_tqdm: bool = True, lora_request: List[LoRARequest] | LoRARequest | None = None) List[RequestOutput]
- generate(prompts: List[str] | None = None, sampling_params: SamplingParams | List[SamplingParams] | None = None, *, prompt_token_ids: List[List[int]], use_tqdm: bool = True, lora_request: List[LoRARequest] | LoRARequest | None = None) List[RequestOutput]
- generate(prompts: None, sampling_params: None, prompt_token_ids: List[int] | List[List[int]], use_tqdm: bool = True, lora_request: List[LoRARequest] | LoRARequest | None = None) List[RequestOutput]
- generate(prompts: PromptType | Sequence[PromptType], /, *, sampling_params: SamplingParams | Sequence[SamplingParams] | None = None, use_tqdm: bool = True, lora_request: List[LoRARequest] | LoRARequest | None = None) List[RequestOutput]
生成输入提示的补全。
此类会根据内存限制自动批处理给定的提示。为了获得最佳性能,请将所有提示放入一个列表中,并将其传递给此方法。
- 参数:
prompts – LLM 的提示。你可以传递一系列提示用于批量推理。关于每个提示的格式,请参阅
PromptType
了解更多详情。sampling_params – 文本生成的采样参数。如果为 None,则使用默认的采样参数。当它是一个单一值时,它适用于每个提示。当它是一个列表时,列表的长度必须与提示的长度相同,并且它与提示一一对应。
use_tqdm – 是否使用 tqdm 来显示进度条。
lora_request – 用于生成的LoRA请求,如果有的话。
prompt_adapter_request – 提示适配器请求用于生成,如果有的话。
priority – 请求的优先级(如果有)。仅在启用优先级调度策略时适用。
- 返回:
包含生成的完整内容的
RequestOutput
对象列表,顺序与输入提示相同。
备注
使用
prompts
和prompt_token_ids
作为关键字参数被视为遗留做法,未来可能会被弃用。你应该通过inputs
参数来传递它们。