Llama3VisionTransform¶
- class torchtune.models.llama3_2_vision.Llama3VisionTransform(path: str, *, tile_size: int, patch_size: int, max_num_tiles: int = 4, special_tokens: Optional[Dict[str, int]] = 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__ 方法的其他转换。
- 参数:
path (str) – 预训练的 tiktoken 分词器文件路径。
tile_size (int) – 将图像分割成的瓦片的尺寸。
patch_size (int) – CLIP 视觉转换器模型中使用的补丁的尺寸。这用于计算每个图像的图像嵌入数量。
max_num_tiles (int) – 仅在未给出 possible_resolutions 时使用。将图像拆分成的最大瓦片数量。这将用于生成 possible_resolutions,例如 [(224, 224), (224, 448), (448, 224)] 如果 max_num_tiles = 2 且 tile_size = 224。默认值为 4。
special_tokens (Optional[Dict[str, int]]) – 包含特殊文本标记及其注册标记 ID 的映射。如果保留为 None,这将设置为规范的 Llama3 特殊标记。
max_seq_len (可选[int]) – 对单个消息列表进行标记时的最大序列长度,超过此长度将截断输入。默认值为 None。
image_mean (可选[Tuple[float, float, float]]) – 每个通道的平均值,用于归一化。
image_std (可选[Tuple[float, float, float]]) – 每个通道的标准差,用于归一化。
prompt_template (可选[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 列表解码为字符串。