数据处理#
模块内容#
- class vllm.multimodal.processing.PromptReplacementDetails(full: str | list[int], features: str | list[int])[source]#
关于替换令牌序列或文本的详细信息。
- vllm.multimodal.processing.PromptRepl[source]#
替换令牌序列或文本。
如果只有部分替换对应于特征占位符,您可以使用
PromptReplacementDetails
来指定哪部分。别名:
Union
[str
,list
[int
],PromptReplacementDetails
]
- class vllm.multimodal.processing.PromptReplacement(modality: str, target: str | list[int], replacement: Callable[[int], str | list[int] | PromptReplacementDetails] | str | list[int] | PromptReplacementDetails)[source]#
定义如何用占位符令牌替换输入提示的部分内容。
示例
对于每张图像,将提示中的一个
<image>
输入占位符替换为多个<image>
特征占位符,其数量等于视觉编码器的特征大小PromptReplacement( modality="image", target="<image>", replacement="<image>" * image_feature_size, )
与上面相同,但进一步使用
<image_bos>
和 <image_eos>` 填充特征占位符,这些占位符不应传递给视觉编码器PromptReplacement( modality="image", target="<image>", replacement=PromptReplacementDetails( full="".join([ "<image_bos>", "<image>" * image_feature_size, "<image_eos>", ]), features="<image>" * image_feature_size, ), )
为了避免在提示替换期间进行不必要的令牌化,我们建议传递令牌序列而不是文本
PromptReplacement( modality="image", target=[image_token_id], replacement=PromptReplacementDetails( full=([image_bos_id] + [image_token_id] * image_feature_size + [image_eos_id]), features=[image_token_id] * image_feature_size, ), )
- vllm.multimodal.processing.full_groupby_modality(values: Iterable[_M]) ItemsView[str, list[_M]] [source]#
基于模态应用
full_groupby()
的便捷函数。
- class vllm.multimodal.processing.BoundPromptReplacement(tokenizer: transformers.PreTrainedTokenizer | transformers.PreTrainedTokenizerFast | TokenizerBase, modality: str, _target: str | list[int], _replacement: Callable[[int], str | list[int] | PromptReplacementDetails] | str | list[int] | PromptReplacementDetails)[source]#
绑定到令牌器的
PromptReplacement
,用于自动在令牌序列和文本表示之间转换target
和get_replacement()
的结果。
- vllm.multimodal.processing.iter_token_matches(token_ids: list[int], match_ids: list[int]) Generator[_TokenMatch] [source]#
在
token_ids
中,产生每次出现的match_ids
。请注意,空匹配将被忽略。
- class vllm.multimodal.processing.PlaceholderFeaturesInfo(modality: str, item_idx: int, start_idx: int, tokens: list[int])[source]#
- vllm.multimodal.processing.find_token_matches(prompt: list[int], prompt_repls: Sequence[BoundPromptReplacement]) list[vllm.multimodal.processing._PromptReplacementTokenMatch] [source]#
返回在
prompt
中找到的prompt_repls
的每个目标。
- vllm.multimodal.processing.find_text_matches(prompt: str, prompt_repls: Sequence[BoundPromptReplacement]) list[vllm.multimodal.processing._PromptReplacementTextMatch] [source]#
返回在
prompt
中找到的prompt_repls
的每个目标。
- vllm.multimodal.processing.replace_token_matches(prompt: list[int], mm_matches: Mapping[str, Sequence[_PromptReplacementTokenMatch]], mm_item_counts: Mapping[str, int]) list[int] [source]#
将
mm_matches
中的替换项应用于prompt
。
- vllm.multimodal.processing.replace_text_matches(prompt: str, mm_matches: Mapping[str, Sequence[_PromptReplacementTextMatch]], mm_item_counts: Mapping[str, int]) str [source]#
将
mm_matches
中的替换项应用于prompt
。
- class vllm.multimodal.processing.BaseProcessingInfo(ctx: InputProcessingContext)[source]#
提供数据处理所需信息的基础类。
- get_hf_processor(**kwargs: object) transformers.ProcessorMixin [source]#
子类可以重写此方法来处理来自模型配置或用户输入的特定 kwargs。
- class vllm.multimodal.processing.BaseMultiModalProcessor(info: _I, dummy_inputs: BaseDummyInputsBuilder[_I], *, cache: ProcessingCache | None = None, enable_sanity_checks: bool = True)[source]#
用于处理 vLLM 中使用的多模态输入的抽象基类。
不要与
transformers.ProcessorMixin
混淆。- apply(prompt: str | list[int], mm_data: Mapping[str, Any | list[Any]], hf_processor_mm_kwargs: Mapping[str, object]) MultiModalInputs [source]#
处理要在 vLLM 中使用的多模态输入。
主要步骤包括:
将 HF Processor 同时应用于提示文本和多模态数据,输出 token ID 和处理后的张量。
在 token ID 中查找并替换占位符 token 序列。占位符 token 的数量等于多模态编码器输出的多模态数据的特征大小。
从处理后的 token ID 中提取有关占位符 token 的信息。
- class vllm.multimodal.processing.EncDecMultiModalProcessor(info: _I, dummy_inputs: BaseDummyInputsBuilder[_I], *, cache: ProcessingCache | None = None, enable_sanity_checks: bool = True)[source]#