Shortcuts

Llama3视觉变换

class torchtune.models.llama3_2_vision.Llama3VisionTransform(path: str, *, tile_size: int, patch_size: int, max_num_tiles: int = 4, special_tokens_path: Optional[str] = None, max_seq_len: Optional[int] = None, image_mean: Optional[Tuple[float, float, float]] = None, image_std: Optional[Tuple[float, float, float]] = None, prompt_template: Optional[PromptTemplate] = None)[source]

此转换结合了Llama 3.2 Vision不同模态的转换。它由以下转换组成: - torchtune.models.llama3.Llama3Tokenizer - torchtune.models.clip.CLIPImageTransform - torchtune.modules.transforms.VisionCrossAttentionMask

此转换可以用作配方和生成中分词器的直接替换,但处理来自__call__方法的额外转换。

Parameters:
  • path (str) – 预训练的tiktoken分词器文件的路径。

  • tile_size (int) – 将图像分割成的小块的大小。

  • patch_size (int) – 在CLIP视觉变换器模型中使用的补丁大小。这用于计算每张图像的图像嵌入数量。

  • max_num_tiles (int) – 仅在未提供possible_resolutions时使用。 将图像分割成的最大瓦片数。 这将用于生成possible_resolutions, 例如,如果max_num_tiles = 2且tile_size = 224,则生成[(224, 224), (224, 448), (448, 224)]。 默认值为4。

  • special_tokens_path (Optional[str]) – 指向Hugging Face模型文件中包含所有注册特殊标记的tokenizer.json的路径,或者结构类似的本地json文件。默认为None,以使用规范的Llama3特殊标记。

  • max_seq_len (可选[int]) – 用于对单个消息列表进行标记化的最大序列长度,超过此长度后输入将被截断。默认值为 None。

  • image_mean (可选[元组[float, float, float]]) – 每个通道的均值,用于归一化。

  • image_std (可选[元组[float, float, float]]) – 每个通道的标准差,用于归一化。

  • prompt_template (Optional[PromptTemplate]) –

    用于根据角色格式化消息的模板。这用于在实际消息周围添加结构化文本。结构化文本在三种场景中使用:

    • 特定任务的模板,用于在训练后为模型准备特定任务

    • 模型特定的模板,每当模型被提示时都需要,例如Llama2和Mistral中的[INST]标签

    • 社区标准化的模板,例如ChatMLTemplate

    额外的文本仍将作为普通文本进行标记化,而不是作为特殊标记。默认值为None。

示例

>>> model_transform = Llama3VisionTransform("/path/to/tokenizer.model", tile_size=224, patch_size=14)
>>> transformed_data = model_transform({"messages": user_message, "images": [img1, img2]})
>>> print(transformed_data["tokens"])
[1, 31587, 29644, 102, 2]
>>> print(transformed_data["images"][0].shape)
torch.Size([4, 3, 224, 224])
decode(token_ids: List[int], truncate_at_eos: bool = True, skip_special_tokens: bool = True) str[source]

将一系列令牌ID解码为字符串。

Parameters:
  • token_ids (List[int]) – 令牌ID的列表。

  • truncate_at_eos (bool) – 是否在序列结束标记处截断字符串。默认值为 True。

  • skip_special_tokens (bool) – 是否在解码后的字符串中显示或跳过特殊标记。 默认值为 True。

Returns:

解码后的字符串。

Return type:

str

tokenize_message(message: 消息, tokenize_header: bool = True, tokenize_end: bool = True) List[int][source]

将消息分词为一系列标记ID。

Parameters:
  • message (消息) – 要标记化的消息。

  • tokenize_header (bool) – 是否在消息前添加一个标记化的头部。

  • tokenize_end (bool) – 是否在消息末尾附加eot或eom id。

Returns:

令牌ID列表。

Return type:

列表[int]

tokenize_messages(messages: List[消息], add_eos: bool = True) Tuple[List[int], List[bool]][source]

将消息列表标记化为标记ID和掩码的列表。

Parameters:
  • messages (List[消息]) – 要标记化的消息列表。

  • add_eos (bool) – 是否添加分词器的eos_id。默认为True。

Returns:

令牌ID列表和掩码列表。

Return type:

元组[列表[int], 列表[bool]]