多模态#

vLLM 通过 vllm.multimodal 包为多模态模型提供实验性支持。

多模态输入可以与文本和令牌提示一起传递给 支持的模型 ,通过 vllm.inputs.PromptType 中的 multi_modal_data 字段。

目前,vLLM 仅内置支持图像数据。您可以按照 此指南 扩展 vLLM 以处理其他模态。

想要添加您自己的多模态模型?请按照列出的说明进行操作 这里

指南#

模块内容#

注册表#

vllm.multimodal.MULTIMODAL_REGISTRY = <vllm.multimodal.registry.MultiModalRegistry object>#

全局 MultiModalRegistry 被模型运行器用来根据其模态和目标模型分派数据处理。

参见

输入处理管道

class vllm.multimodal.MultiModalRegistry(*, plugins: Sequence[MultiModalPlugin] = DEFAULT_PLUGINS)[源代码]#

基类:object

一个注册表,将数据处理分派给每个模态的 MultiModalPlugin

create_input_mapper(model_config: ModelConfig)[源代码]#

为特定模型创建一个输入映射器(参见 map_input())。

get_max_multimodal_tokens(model_config: ModelConfig) int[源代码]#

获取用于分析模型内存使用的多模态令牌的最大数量。

更多详情请参见 MultiModalPlugin.get_max_multimodal_tokens()

备注

这应该在 init_mm_limits_per_prompt() 之后调用。

get_mm_limits_per_prompt(model_config: ModelConfig) Mapping[str, int][源代码]#

获取每个模态在每个提示中允许的最大多模态输入实例数,适用于某个模型类别。

备注

这应该在 init_mm_limits_per_prompt() 之后调用。

init_mm_limits_per_prompt(model_config: ModelConfig) None[源代码]#

为每个模态初始化模型类允许的每个提示的最大多模态输入实例数。

map_input(model_config: ModelConfig, data: MultiModalDataBuiltins | Mapping[str, object | List[object]], mm_processor_kwargs: Dict[str, Any] | None = None) MultiModalInputs[源代码]#

将输入映射器应用于传递给模型的数据。

每个模态的数据被传递给相应的插件,该插件通过为该模型注册的输入映射器将数据转换为关键字参数。

更多详情请参见 MultiModalPlugin.map_input()

备注

这应该在 init_mm_limits_per_prompt() 之后调用。

register_image_input_mapper(mapper: Callable[[InputContext, object | List[object]], MultiModalInputs] | None = None)[源代码]#

为图像数据注册一个输入映射器到模型类。

详情请参见 MultiModalPlugin.register_input_mapper()

register_input_mapper(data_type_key: str, mapper: Callable[[InputContext, object | List[object]], MultiModalInputs] | None = None)[源代码]#

为特定模态注册一个输入映射器到一个模型类。

详情请参见 MultiModalPlugin.register_input_mapper()

register_max_image_tokens(max_mm_tokens: int | Callable[[InputContext], int] | None = None)[源代码]#

注册传递给模型类的语言模型的单张图片对应的最大图像令牌数。

register_max_multimodal_tokens(data_type_key: str, max_mm_tokens: int | Callable[[InputContext], int] | None = None)[源代码]#

注册传递给模型类的语言模型的最大令牌数,这些令牌对应于属于特定模态的多模态数据的单个实例。

register_plugin(plugin: MultiModalPlugin) None[源代码]#

注册一个多模态插件,以便vLLM可以识别它。

参见

添加多模态插件

基类#

vllm.multimodal.NestedTensors#

Union[List[NestedTensors], List[Tensor], Tensor] 的别名

vllm.multimodal.BatchedTensorInputs#

Dict[str, Union[List[NestedTensors], List[Tensor], Tensor]] 的别名

final class vllm.multimodal.MultiModalDataBuiltins[源代码]#

基类:TypedDict

vLLM 预定义的模态类型。

audio: Tuple[ndarray, int | float] | List[Tuple[ndarray, int | float]]#

输入的音频项及其对应的采样率。

image: Image | List[Image]#

输入图像。

vllm.multimodal.MultiModalDataDict#

Union[MultiModalDataBuiltins, Mapping[str, Union[object, List[object]]]] 的别名

class vllm.multimodal.MultiModalInputs(dict=None, /, **kwargs)[源代码]#

基类:_MultiModalInputsBase

一个表示传递给 forward() 的关键字参数的字典。

static batch(inputs_list: List[MultiModalInputs]) Dict[str, List[List[NestedTensors] | List[torch.Tensor] | torch.Tensor] | List[torch.Tensor] | torch.Tensor][源代码]#

将多个输入批量组合成一个字典。

生成的字典具有与输入相同的键。如果每个输入的相应值是张量并且它们都共享相同的形状,则输出值是一个单独的批量张量;否则,输出值是一个包含每个输入的原始值的列表。

class vllm.multimodal.MultiModalPlugin[源代码]#

基类:ABC

定义特定模态数据处理逻辑的基类。

特别是,我们采用注册模式来根据所使用的模型分派数据处理(考虑到不同的模型可能以不同的方式处理相同的数据)。这个注册表反过来被 MultiModalRegistry 使用,它在更高的层次上起作用(即数据的模态)。

参见

添加多模态插件

abstract get_data_key() str[源代码]#

获取与模态对应的数据键。

get_max_multimodal_tokens(model_config: ModelConfig) int[源代码]#

获取用于分析模型内存使用的多模态令牌的最大数量。

如果此注册表不适用于该模型,则返回 0

该模型由 model_config 标识。

参见

启用多模态输入

map_input(model_config: ModelConfig, data: object | List[object], mm_processor_kwargs: Dict[str, Any]) MultiModalInputs[源代码]#

使用为该模型注册的输入映射器将数据转换为模型输入的字典。

该模型由 model_config 标识。

抛出:

TypeError – 如果数据类型不受支持。

参见

  • 输入处理管道

  • 启用多模态输入

register_input_mapper(mapper: Callable[[InputContext, object | List[object]], MultiModalInputs] | None = None)[源代码]#

将输入映射器注册到模型类。

当模型接收到与此插件所服务的模态匹配的输入数据时(参见 get_data_key()),提供的函数将被调用以将数据转换为模型输入的字典。

如果提供了 None,则使用默认的输入映射器。

参见

  • 输入处理管道

  • 启用多模态输入

register_max_multimodal_tokens(max_mm_tokens: int | Callable[[InputContext], int] | None = None)[源代码]#

注册多模态数据单个实例对应的最大令牌数,这些令牌会被传递给模型类中的语言模型。

如果提供了 None,则使用默认计算代替。

参见

启用多模态输入

图像类#

class vllm.multimodal.image.ImagePlugin[源代码]#

基类:MultiModalPlugin

用于图像数据的插件。

get_data_key() str[源代码]#

获取与模态对应的数据键。