快捷方式

Llama3VisionTransform

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)[源代码]

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

此变换可用作指南和生成中分词器的直接替代品,但会处理来自 __call__ 方法的额外变换。

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

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

  • patch_size (int) – CLIP 视觉 Transformer 模型中使用的 patch 的大小。这用于计算每张图像的图像嵌入数量。

  • 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 模型文件中包含所有已注册特殊 token 的 tokenizer.json 文件的路径,或结构类似的本地 json 文件。默认为 None,使用规范的 Llama3 特殊 token。

  • max_seq_len (Optional[int]) – 分词单个消息列表后的最大序列长度,超出此长度的输入将被截断。默认为 None。

  • image_mean (Optional[Tuple[float, float, float]]) – 各通道的平均值,用于归一化。

  • image_std (Optional[Tuple[float, float, float]]) – 各通道的标准差,用于归一化。

  • prompt_template (Optional[PromptTemplate]) –

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

    • 结构化文本用于以下三种场景

    • 任务特定模板,用于使模型适应训练后期望的特定任务

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

    社区标准化模板,例如 ChatMLTemplate 额外的文本仍将作为普通文本进行分词,而非特殊 token。默认为 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[源代码]

将 token ID 列表解码为字符串。

参数:
  • token_ids (List[int]) – token ID 列表。

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

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

返回:

解码后的字符串。

返回类型:

str

tokenize_message(message: Message, tokenize_header: bool = True, tokenize_end: bool = True) List[int][源代码]

将消息分词为 token ID 列表。

参数:
  • message (Message) – 要分词的消息。

  • tokenize_header (bool) – 是否在消息前附加已分词的头部。

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

返回:

token ID 列表。

返回类型:

List[int]

tokenize_messages(messages: List[Message], add_eos: bool = True) Tuple[List[int], List[bool]][源代码]

将消息列表分词为 token ID 列表和掩码列表。

参数:
  • messages (List[Message]) – 要分词的消息列表。

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

返回:

token ID 列表和掩码列表。

返回类型:

Tuple[List[int], List[bool]]

文档

访问 PyTorch 的全面开发者文档

查看文档

教程

获取面向初学者和高级开发者的深度教程

查看教程

资源

查找开发资源并获取解答

查看资源