数据处理#
模块内容#
-
class vllm.multimodal.processing.PromptIndex(get_match_index: Callable[[transformers.PreTrainedTokenizer | transformers.PreTrainedTokenizerFast | TokenizerBase, str | list[
int
]], int | None])[source]# 解析为提示中的索引。
- vllm.multimodal.processing.PromptTarget[source]#
要更新的令牌序列或文本。
别名为
Union
[str
,list
[int
],PromptIndex
]
- class vllm.multimodal.processing.PromptUpdateDetails(full: _S, is_embed: Callable[[_BoundPromptSequence], torch.Tensor] | None = None)[source]#
关于作为更新一部分的令牌序列或文本的详细信息。
- vllm.multimodal.processing.PromptUpdateInfo[source]#
作为更新一部分的令牌序列或文本。
如果只有部分内容对应于特征占位符,则可以使用
PromptUpdateDetails
来指定哪个部分。别名为
Union
[str
,list
[int
],PromptUpdateDetails
]
- vllm.multimodal.processing.PromptUpdateContent[source]#
给定
modality
中已处理项的索引,输出相应的令牌序列(或文本)。为方便起见,如果令牌序列(或文本)不依赖于输入,则可以直接传入令牌序列(或文本),而不是函数。
别名为
Union
[Callable
[int
,Union
[str
,list
[int
],PromptUpdateDetails
]],str
,list
[int
],PromptUpdateDetails
]
- class vllm.multimodal.processing.UpdateMode(value, names=_not_given, *values, module=None, qualname=None, type=None, start=1, boundary=None)[source]#
-
class vllm.multimodal.processing.PromptUpdate(modality: str, target: str | list[
int
] | PromptIndex)[source]# 定义如何使用占位符令牌更新提示。
-
target: str | list[
int
] | PromptIndex 要更新的令牌序列(或文本)。
-
abstract property content: Callable[[
int
],str
|list
[int
] |PromptUpdateDetails
] |str
|list
[int
],PromptUpdateDetails
作为更新一部分的占位符令牌。
-
abstract property mode:
UpdateMode
定义如何更新提示。
-
target: str | list[
-
class vllm.multimodal.processing.PromptInsertion(modality: str, target: str | list[
int
] | PromptIndex, insertion: Callable[[int
], str |list
[int
] |PromptUpdateDetails
] | str |list
[int
],PromptUpdateDetails
定义如何将占位符令牌插入到提示中。
示例
对于每张图像,在
<s>
令牌之后插入与视觉编码器的特征大小相等的<image>
特征占位符PromptInsertion( modality="image", target="<s>", insertion="<image>" * image_feature_size, )
在提示的开头插入这些令牌
PromptInsertion( modality="image", target=PromptIndexTargets.start(), insertion="<image>" * image_feature_size, )
在前缀
Images:
之后插入这些令牌PromptInsertion( modality="image", target=PromptIndexTargets.prefix("Images:"), insertion="<image>" * image_feature_size, )
在提示的末尾插入这些令牌
PromptInsertion( modality="image", target=PromptIndexTargets.end(), insertion="<image>" * image_feature_size, )
-
insertion: Callable[[
int
],str
|list
[int
],PromptUpdateDetails
给定
modality
中已处理项的索引,输出要紧跟在target
之后插入的令牌序列(或文本)。为方便起见,如果令牌序列(或文本)不依赖于输入,则可以直接传入令牌序列(或文本),而不是函数。
- property content: Callable[[int], str | list[int] | PromptUpdateDetails] | str | list[int] | PromptUpdateDetails[source]#
作为更新一部分的占位符令牌。
- property mode: UpdateMode[source]#
定义如何更新提示。
-
insertion: Callable[[
- class vllm.multimodal.processing.PromptReplacement(modality: str, target: str | list[int] | PromptIndex, replacement: Callable[[int], str | list[int] | PromptUpdateDetails] | str | list[int] | PromptUpdateDetails)[source]#
定义了如何用占位符令牌替换输入提示的部分内容。
示例
对于每张图像,将提示中的一个
<image>
输入占位符替换为多个<image>
特征占位符,占位符的数量等于视觉编码器的特征大小PromptReplacement( modality="image", target="<image>", replacement="<image>" * image_feature_size, )
与上述相同,但进一步使用
<image_bos>
和 <image_eos>` 填充特征占位符,这些占位符不应传递给视觉编码器PromptReplacement( modality="image", target="<image>", replacement=PromptUpdateDetails( full="".join([ "<image_bos>", "<image>" * image_feature_size, "<image_eos>", ]), features="<image>" * image_feature_size, ), )
为了避免在提示替换期间进行不必要的令牌化,我们建议传递令牌序列而不是文本
PromptReplacement( modality="image", target=[image_token_id], replacement=PromptUpdateDetails( full=([image_bos_id] + [image_token_id] * image_feature_size + [image_eos_id]), features=[image_token_id] * image_feature_size, ), )
- replacement: Callable[[int], str | list[int] | PromptUpdateDetails] | str | list[int] | PromptUpdateDetails[source]#
给定
modality
中已处理项的索引,输出要替换target
的令牌序列(或文本)。为方便起见,如果令牌序列(或文本)不依赖于输入,则可以直接传入令牌序列(或文本),而不是函数。
- property content: Callable[[int], str | list[int] | PromptUpdateDetails] | str | list[int] | PromptUpdateDetails[source]#
作为更新一部分的占位符令牌。
- property mode: UpdateMode[source]#
定义如何更新提示。
- vllm.multimodal.processing.full_groupby_modality(values: Iterable[_M]) ItemsView[str, list[_M]] [source]#
方便函数,用于基于模态应用
full_groupby()
。
- class vllm.multimodal.processing.BoundPromptUpdate(_origin: PromptUpdate, tokenizer: transformers.PreTrainedTokenizer | transformers.PreTrainedTokenizerFast | TokenizerBase)[source]#
绑定到分词器的
PromptUpdate
,用于自动在令牌序列和文本表示之间转换target
和get_content()
的结果。- property target: _BoundPromptSequence | PromptIndex[source]#
要更新的令牌序列(或文本)。
- property content: Callable[[int], str | list[int] | PromptUpdateDetails] | str | list[int] | PromptUpdateDetails[source]#
作为更新一部分的占位符令牌。
- property mode: UpdateMode[source]#
定义如何更新提示。
- vllm.multimodal.processing.iter_token_matches(token_ids: list[int], match_ids: list[int]) Generator[_TokenMatch] [source]#
在
token_ids
中产生每次出现的match_ids
。请注意,空匹配项将被忽略。
- vllm.multimodal.processing.replace_token_matches(token_ids: list[int], match_ids: list[int], new_ids: list[int]) list[int] [source]#
用
new_ids
替换token_ids
中每次出现的match_ids
。请注意,空匹配项将被忽略。
- class vllm.multimodal.processing.PromptTargetMatch(_origin: vllm.multimodal.processing.BoundPromptUpdate)[source]#
- class vllm.multimodal.processing.PlaceholderFeaturesInfo(modality: str, item_idx: int, start_idx: int, tokens: list[int], is_embed: torch.Tensor | None)[source]#
- vllm.multimodal.processing.find_token_matches(prompt: list[int], prompt_updates: Sequence[BoundPromptUpdate]) Sequence[PromptTargetMatch] [source]#
返回在
prompt
中找到的prompt_updates
的每个目标。
- vllm.multimodal.processing.find_text_matches(prompt: str, prompt_updates: Sequence[BoundPromptUpdate]) Sequence[PromptTargetMatch] [source]#
返回在
prompt
中找到的prompt_updates
的每个目标。
- vllm.multimodal.processing.apply_token_matches(prompt: list[int], mm_matches: Mapping[str, Sequence[PromptTargetMatch]], mm_item_counts: Mapping[str, int]) list[int] [source]#
将
mm_matches
中的更新应用于prompt
。
- vllm.multimodal.processing.apply_text_matches(prompt: str, mm_matches: Mapping[str, Sequence[PromptTargetMatch]], mm_item_counts: Mapping[str, int]) str [source]#
将
mm_matches
中的更新应用于prompt
。
- class vllm.multimodal.processing.BaseProcessingInfo(ctx: InputProcessingContext)[source]#
提供数据处理所需信息的基础类。
- 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], return_mm_hashes: bool = False) MultiModalInputs [source]#
处理多模态输入以在 vLLM 中使用。
主要步骤包括:
将 HF Processor 同时应用于提示文本和多模态数据,输出 token IDs 和处理后的张量。
在 token IDs 中查找并使用占位符 token 更新序列。占位符 token 的数量等于多模态编码器输出的多模态数据的特征大小。
从处理后的 token IDs 中提取有关占位符 token 的信息。
- class vllm.multimodal.processing.EncDecMultiModalProcessor(info: _I, dummy_inputs: BaseDummyInputsBuilder[_I], *, cache: ProcessingCache | None = None, enable_sanity_checks: bool = True)[source]#
- abstract create_encoder_prompt(prompt: str | list[int], mm_data: Mapping[str, Any | list[Any]]) str | list[int] [source]#
为编码器创建输入提示。HF processor 将在 profiling 和生成过程中应用于此提示。