多模态#
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()
之后调用。
- 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)[源代码]#
为图像数据注册一个输入映射器到模型类。
- register_input_mapper(data_type_key: str, mapper: Callable[[InputContext, object | List[object]], MultiModalInputs] | None = None)[源代码]#
为特定模态注册一个输入映射器到一个模型类。
- 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.BatchedTensorInputs#
Dict
[str
,Union
[List
[NestedTensors
],List
[Tensor
],Tensor
]] 的别名
- 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
使用,它在更高的层次上起作用(即数据的模态)。参见
添加多模态插件
- 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,则使用默认的输入映射器。
参见
输入处理管道
启用多模态输入