Skip to main content
Version: Next

数据处理

*在线运行 vLLM 入门教程:零基础分步指南

模块内容

vllm.multimodal.processing.**PromptSeq**

[source]

一个 token 序列(token ID 列表)或文本。

别名为 Union[strlist[int]]

*class***vllm.multimodal.processing.**PromptIndex**(*getmatch_index:**Callable[[transformers.PreTrainedTokenizer | transformers.PreTrainedTokenizerFast | TokenizerBase,*str|list[int*]],int|None_]***)**

[source]

解析为提示中的索引。

vllm.multimodal.processing.**PromptTarget**

[source]

要更新的 token 序列或文本。

别名为 Union[strlist[int], PromptIndex]

*class***vllm.multimodal.processing.**PromptUpdateDetails**(*full: _S***,*features: _S***)**

[source]

关于更新中包含的 token 序列或文本的详细信息。

full***: _S***

[source]

完整内容。

features***: _S***

[source]

与特征占位符对应的部分内容;在模型推理期间,这部分内容将被视觉编码器的输出替换。

vllm.multimodal.processing.**PromptUpdateInfo**

[source]

更新中包含的 token 序列或文本。

如果只有部分内容对应于特征占位符,则可以使用 PromptUpdateDetails 来指定哪一部分。

别名为 Union[strlist[int], PromptUpdateDetails]

vllm.multimodal.processing.**PromptUpdateContent**

[source]

给定 modality 中处理项的索引,输出相应的 token 序列(或文本)。

为了方便起见,如果 token 序列(或文本)不依赖于 Importing,则可以直接传入 token 序列(或文本)而不是函数。

别名为 Union[Callable[intUnion[strlist[int], PromptUpdateDetails]], strlist[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]

定义如何使用占位符 token 更新提示。

modality***:***str

[source]

为其进行更新的模态。

target***:str|list[int] |***PromptIndex

[source]

要更新的 token 序列(或文本)。

*abstract property***content***:Callable[[int],str|list[int] |PromptUpdateDetails] |str|list[int**] |***PromptUpdateDetails

[source]

更新中包含的占位符 token。

*abstract property***mode*****:***UpdateMode

[source]

定义如何更新提示。

*class***vllm.multimodal.processing.**PromptInsertion**(*modality:*str,*target:str|list[int] |*PromptIndex,*insertion:Callable[[int],str|list[int] |PromptUpdateDetails] |str|list[int] |*PromptUpdateDetails)**

[source]

定义如何将占位符 token 插入提示中。

示例

对于每个图像,在 <s> token 后插入与视觉编码器特征大小相等的 <image> 特征占位符:

PromptInsertion(
modality="image",
target="<s>",
insertion="<image>" * image_feature_size,
)

在提示的开头插入这些 token:

PromptInsertion(
modality="image",
target=PromptIndexTargets.start(),
insertion="<image>" * image_feature_size,
)

在前缀 Images: 后插入这些 token:

PromptInsertion(
modality="image",
target=PromptIndexTargets.prefix("Images:"),
insertion="<image>" * image_feature_size,
)

在提示的末尾插入这些 token:

PromptInsertion(
modality="image",
target=PromptIndexTargets.end(),
insertion="<image>" * image_feature_size,
)

insertion***:Callable[[int],str|list[int] |PromptUpdateDetails] |str|list[int] |***PromptUpdateDetails

[source]

给定 modality 中处理项的索引,输出要在 target 后插入的 token 序列(或文本)。

为了方便起见,如果 token 序列(或文本)不依赖于 Importing,则可以直接传入 token 序列(或文本)而不是函数。

*property***content***:Callable[[int],str|list[int] |PromptUpdateDetails] |str|list[int**] |***PromptUpdateDetails

[source]

更新中包含的占位符 token。

*property***mode*****:***UpdateMode

[source]

定义如何更新提示。

*class***vllm.multimodal.processing.**PromptReplacement**(*modality:*str,*target:str|list[int] |*PromptIndex,*replacement:Callable[[int],str|list[int] |PromptUpdateDetails] |str|list[int] |*PromptUpdateDetails)**

[source]

定义如何用占位符 token 替换输入提示的部分内容。

示例

对于每个图像,将提示中的一个 <image> 输入占位符替换为与视觉编码器特征大小相等的 <image> 特征占位符:

PromptReplacement(
modality="image",
target="<image>",
replacement="<image>" * image_feature_size,
)

如上所述,但进一步用 <image_bos> 和 <image_eos> 填充特征占位符,这些 token 不应传递给视觉编码器:

PromptReplacement(
modality="image",
target="<image>",
replacement=PromptUpdateDetails(
full="".join([
"<image_bos>",
"<image>" * image_feature_size,
"<image_eos>",
]),
features="<image>" * image_feature_size,
),
)

为了避免在提示替换期间不必要的 token 化,建议传递 token 序列而不是文本:

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 的 token 序列(或文本)。

为了方便起见,如果 token 序列(或文本)不依赖于 Importing,则可以直接传入 token 序列(或文本)而不是函数。

*property***content***:Callable[[int],str|list[int] |PromptUpdateDetails] |str|list[int**] |***PromptUpdateDetails

[source]

更新中包含的占位符 token。

*property***mode*****:***UpdateMode

[source]

定义如何更新提示。

vllm.multimodal.processing.**fullgroupby_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]

一个绑定到 tokenizer 的 PromptUpdate,用于自动在 token 序列和文本表示之间转换 target 和 get_content() 的结果。

*property***target*****: _BoundPromptSequence |***PromptIndex

[source]

要更新的 token 序列(或文本)。

*property***content***:Callable[[int],str|list[int] |PromptUpdateDetails] |str|list[int**] |***PromptUpdateDetails

[source]

更新中包含的占位符 token。

*property***mode*****:***UpdateMode

[source]

定义如何更新提示。

get_content**(*item_idx:*int)**→ _BoundPromptContent

[source]

给定 modality 中处理项的索引,输出要更新的 token 序列(或文本)。

vllm.multimodal.processing.**itertoken_matches**(***token_ids:**list[int]*,*match_ids:list[int_]*)**→Generator[_TokenMatch]**

[source]

生成 token_ids 中 match_ids 的每次出现。

注意,空匹配会被忽略。

vllm.multimodal.processing.**replacetoken_matches**(***token_ids:**list[int]*,*match_ids:list[int]*,*new_ids:list[int_]*)**→list[int]**

[source]

将 token_ids 中 match_ids 的每次出现替换为 new_ids

注意,空匹配会被忽略。

*class***vllm.multimodal.processing.**PromptTargetMatch**(*_origin:*vllm.multimodal.processing.BoundPromptUpdate)**

[source]

*class***vllm.multimodal.processing.**PlaceholderFeaturesInfo**(*modality:*str,*itemidx:*int,*start_idx:*int,*tokens:**list[int_]***)**

[source]

vllm.multimodal.processing.**findtoken_matches**(***prompt:**list[int]*,*prompt_updates:Sequence[BoundPromptUpdate_]*)**→Sequence[PromptTargetMatch]**

[source]

返回在 prompt 中找到的 prompt_updates 的每个目标。

vllm.multimodal.processing.**findtext_matches**(***prompt:*str,*prompt_updates:**Sequence[BoundPromptUpdate_]*)**→Sequence[PromptTargetMatch]**

[source]

返回在 prompt 中找到的 prompt_updates 的每个目标。

vllm.multimodal.processing.**applytoken_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.**applytext_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]

提供数据处理所需信息的基类。

get_hf_processor**(*****kwargs:*object)**→ transformers.ProcessorMixin

[source]

子类可以重写此方法以处理来自模型配置或用户输入的特定 kwargs。

*abstract***get_supported_mm_limits**()**Mapping[str,int|None]**

[source]

返回每个模态支持的最大项数。

值为 None 表示项数无限制。

如果返回的字典中省略了某个模态,则表示完全不支持该模态。

*abstract***getmm_max_tokens_per_item**(***seq_len:*int,*mm_counts:**Mapping[str,int_]*)**→Mapping[str,int]**

[source]

获取每个模态的每个数据项的最大可能 token 数。

此方法返回的字典应与 get_supported_mm_limits() 返回的字典具有相同的键。

*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]*,*mmdata:**Mapping[str,Any|list[Any]]*,*hf_processor_mm_kwargs:Mapping[str,object]*,*return_mm_hashes:bool _=* *False*)**→**MultiModalInputs

[source]

处理多模态输入以用于 vLLM。

主要步骤包括:

  1. 将 HF 处理器应用于提示文本和多模态数据,输出 token ID 和处理后的张量。

  2. 在 token ID 中找到并用占位符 token 更新序列。占位符 token 的数量等于多模态编码器输出的多模态数据的特征大小。

  3. 从处理后的 token ID 中提取占位符 token 的信息。

*class***vllm.multimodal.processing.**EncDecMultiModalProcessor**(*info: I**,*dummy_inputs:***BaseDummyInputsBuilder_[I]*,*******,*cache: ProcessingCache |**None =* *None*,*enable_sanity_checks:bool _=* *True***)**

[source]

*abstract***createencoder_prompt**(***prompt:**str|list[int]*,*mm_data:Mapping[str,Any|list[Any_]]*)**→str|list[int]**

[source]

为编码器创建输入提示。在分析和生成期间,HF 处理器将应用于此提示。

create_decoder_prompt**(*prompt:str|list[int]*,*mmdata:**Mapping[str,Any|list[Any_]]*)**→str|list[int]**

[source]

为解码器创建输入提示。

apply**(*prompt:str|list[int]*,*mmdata:**Mapping[str,Any|list[Any]]*,*hf_processor_mm_kwargs:Mapping[str,object]*,*return_mm_hashes:bool _=* *False*)**→ MultiModalEncDecInputs**

[source]

处理多模态输入以用于 vLLM。主要处理步骤修改为适应编码器-解码器模型:1. 从输入提示文本创建编码器提示。2. 将 HF 处理器应用于编码器提示。3. 将输入提示文本复制为解码器提示输入。