From 45ea34dc2671e9780be49efbcb9fb57eaa7aa9b3 Mon Sep 17 00:00:00 2001 From: Artem Yatsenko Date: Mon, 21 Jul 2025 18:50:26 +0000 Subject: [PATCH 01/28] add new attn --- torchtitan/models/__init__.py | 1 + torchtitan/models/mistral3/__init__.py | 100 ++ .../models/mistral3/infra/parallelize.py | 380 +++++++ torchtitan/models/mistral3/infra/pipeline.py | 145 +++ .../mistral3/model/configuration_pixtral.py | 106 ++ torchtitan/models/mistral3/model/model.py | 997 ++++++++++++++++++ .../models/mistral3/model/modeling_pixtral.py | 532 ++++++++++ .../train_configs/mistral24b_sft.toml | 70 ++ .../train_configs/mistral24b_sft_vision | 71 ++ 9 files changed, 2402 insertions(+) create mode 100644 torchtitan/models/mistral3/__init__.py create mode 100644 torchtitan/models/mistral3/infra/parallelize.py create mode 100644 torchtitan/models/mistral3/infra/pipeline.py create mode 100644 torchtitan/models/mistral3/model/configuration_pixtral.py create mode 100644 torchtitan/models/mistral3/model/model.py create mode 100644 torchtitan/models/mistral3/model/modeling_pixtral.py create mode 100644 torchtitan/models/mistral3/train_configs/mistral24b_sft.toml create mode 100644 torchtitan/models/mistral3/train_configs/mistral24b_sft_vision diff --git a/torchtitan/models/__init__.py b/torchtitan/models/__init__.py index 378f886658..9168385bb3 100644 --- a/torchtitan/models/__init__.py +++ b/torchtitan/models/__init__.py @@ -9,3 +9,4 @@ # will be called. import torchtitan.models.deepseek_v3 # noqa: F401 import torchtitan.models.llama3 # noqa: F401 +import torchtitan.models.mistral3 diff --git a/torchtitan/models/mistral3/__init__.py b/torchtitan/models/mistral3/__init__.py new file mode 100644 index 0000000000..58cb3b954a --- /dev/null +++ b/torchtitan/models/mistral3/__init__.py @@ -0,0 +1,100 @@ +# Copyright (c) 2025, Anthropic Research Labs +# All rights reserved. + +from torchtitan.datasets import build_hf_dataloader +from torchtitan.datasets.tokenizer import TikTokenizer +from torchtitan.models.mistral3.model import ( + ModelArgs, + Mistral3RMSNorm, + Mistral3PatchMerger, + Mistral3MultiModalProjector, + VisionEncoder, + MultimodalDecoder, + Mistral3ForConditionalGeneration, +) +from torchtitan.optimizer import build_lr_schedulers, build_optimizers +from torchtitan.train_spec import register_train_spec, TrainSpec + +from .parallelize_mistral3 import parallelize_mistral3 +from .pipeline_mistral3 import pipeline_mistral3 + + +from torchtitan.components.loss import build_cross_entropy_loss +from torchtitan.components.lr_scheduler import build_lr_schedulers +from torchtitan.components.optimizer import build_optimizers +from torchtitan.components.tokenizer import build_hf_tokenizer +from torchtitan.components.validate import build_validator +from torchtitan.datasets.hf_datasets import build_hf_dataloader +from torchtitan.protocols.train_spec import register_train_spec, TrainSpec + +from .infra.parallelize import parallelize_mistral3 +from .infra.pipeline import pipeline_mistral3 +#from .model.args import ModelArgs +from .model.model import Mistral3ForConditionalGeneration + + +__all__ = [ + "parallelize_mistral3", + "pipeline_mistral3", + "ModelArgs", + "Mistral3RMSNorm", + "Mistral3PatchMerger", + "Mistral3MultiModalProjector", + "VisionEncoder", + "MultimodalDecoder", + "Mistral3ForConditionalGeneration", + "mistral3_configs", +] + +# Define model configurations +mistral3_configs = { + "24B": ModelArgs( + # vision encoder part + vision_embed_dim=1024, + vision_num_layers=24, + vision_num_heads=16, + vision_feature_layer=-2, + patch_size=14, + image_size=1540, + in_channels=3, + spatial_merge_size=2, + + # projection part + num_layers_projection=8, + projector_hidden_act="gelu", + multimodal_projector_bias=False, + + # decoder part + decoder_embed_dim=5120, + decoder_num_layers=40, + decoder_num_heads=32, + decoder_num_kv_heads=8, + fusion_interval=8, + image_token_index=10, + + # common part + vocab_size=131072, + multiple_of=256, + ffn_dim_multiplier=None, + norm_eps=1e-5, + rope_theta=1000000000.0, + max_seq_len=131072, + ), +} + + + +# Register the model +register_train_spec( + TrainSpec( + name="mistral3", + cls=Mistral3ForConditionalGeneration, + config=mistral3_configs, + parallelize_fn=parallelize_mistral3, + pipelining_fn=pipeline_mistral3, + build_optimizers_fn=build_optimizers, + build_lr_schedulers_fn=build_lr_schedulers, + build_dataloader_fn=build_hf_dataloader, + tokenizer_cls=TikTokenizer, + ) +) \ No newline at end of file diff --git a/torchtitan/models/mistral3/infra/parallelize.py b/torchtitan/models/mistral3/infra/parallelize.py new file mode 100644 index 0000000000..ef27a16502 --- /dev/null +++ b/torchtitan/models/mistral3/infra/parallelize.py @@ -0,0 +1,380 @@ +# Copyright (c) Meta Platforms, Inc. and affiliates. +# All rights reserved. +# +# This source code is licensed under the BSD-style license found in the +# LICENSE file in the root directory of this source tree. + +# This file applies the PT-D parallelisms (except pipeline parallelism) and various +# training techniques (e.g. activation checkpointing and compile) to the Llama model. + +from collections import defaultdict + +import torch +import torch.nn as nn + +from torch.distributed import DeviceMesh +from torch.distributed._composable.fsdp import ( + CPUOffloadPolicy, + fully_shard, + MixedPrecisionPolicy, +) +from torch.distributed._composable.replicate import replicate +from torch.distributed._tensor import Replicate, Shard +from torch.distributed.algorithms._checkpoint.checkpoint_wrapper import ( + checkpoint_wrapper as ptd_checkpoint_wrapper, +) +from torch.distributed.tensor.parallel import ( + ColwiseParallel, + parallelize_module, + PrepareModuleInput, + RowwiseParallel, + SequenceParallel, +) + +from torchtitan.config_manager import JobConfig, TORCH_DTYPE_MAP +from torchtitan.logging import logger +from torchtitan.parallelisms import ParallelDims + + +def parallelize_mistral3( + model: nn.Module, + world_mesh: DeviceMesh, + parallel_dims: ParallelDims, + job_config: JobConfig, +): + """ + Apply tensor parallelism, activation checkpointing, torch.compile, and data + parallelism to the model. + + NOTE: The passed-in model preferably should be on meta device. Otherwise, + the model must fit on GPU or CPU memory. + """ + + if parallel_dims.tp_enabled: + if ( + job_config.experimental.enable_async_tensor_parallel + and not job_config.training.compile + ): + raise RuntimeError("Async TP requires --training.compile") + enable_float8_linear = "float8" in job_config.model.converters + apply_tp( + model, + world_mesh["tp"], + loss_parallel=parallel_dims.loss_parallel_enabled, + enable_float8=enable_float8_linear, + enable_async_tp=job_config.experimental.enable_async_tensor_parallel, + ) + + if job_config.activation_checkpoint.mode != "none": + apply_ac(model, job_config.activation_checkpoint) + + # turn on per-TransformerBlock compile after AC wrapping and before FSDP + if job_config.training.compile: + apply_compile(model) + + if ( + parallel_dims.dp_shard_enabled or parallel_dims.cp_enabled + ): # apply FSDP or HSDP, potentially with Context Parallel + if parallel_dims.dp_replicate_enabled: + dp_mesh_dim_names = ("dp_replicate", "dp_shard_cp") + else: + dp_mesh_dim_names = ("dp_shard_cp",) + + apply_fsdp( + model, + world_mesh[tuple(dp_mesh_dim_names)], + param_dtype=TORCH_DTYPE_MAP[job_config.training.mixed_precision_param], + reduce_dtype=TORCH_DTYPE_MAP[job_config.training.mixed_precision_reduce], + pp_enabled=parallel_dims.pp_enabled, + cpu_offload=job_config.training.enable_cpu_offload, + reshard_after_forward_policy=job_config.training.fsdp_reshard_after_forward, + ) + + if parallel_dims.dp_replicate_enabled: + logger.info("Applied HSDP to the model") + else: + logger.info("Applied FSDP to the model") + + if parallel_dims.cp_enabled: + logger.info("Applied Context Parallel to the model") + + if job_config.training.enable_cpu_offload: + logger.info("Applied CPU Offloading to the model") + elif parallel_dims.dp_replicate_enabled: + if world_mesh.ndim > 1: + raise RuntimeError("DDP has not supported > 1D parallelism") + apply_ddp( + model, + world_mesh, + enable_compile=job_config.training.compile, + enable_compiled_autograd=job_config.experimental.enable_compiled_autograd, + ) + + +def apply_tp( + model: nn.Module, + tp_mesh: DeviceMesh, + loss_parallel: bool, + enable_float8: bool, + enable_async_tp: bool, +): + """Apply tensor parallelism.""" + # 1. Parallelize the embedding and shard its outputs (which are the first + # transformer block's inputs) + # 2. Parallelize the root norm layer over the sequence dim + # 3. Parallelize the final linear output layer + parallelize_module( + model.language_model, + tp_mesh, + { + "tok_embeddings": RowwiseParallel( + input_layouts=Replicate(), + output_layouts=Shard(1), + use_local_output=False, + ), + "norm": SequenceParallel(), + "output": ColwiseParallel( + input_layouts=Shard(1), + output_layouts=Shard(-1) if loss_parallel else Replicate(), + use_local_output=not loss_parallel, + ), + }, + ) + + # Parallel styles used for transformer block linear weights and their + # inputs may be different for float8 linears + if enable_float8: + # TODO(vkuzo): once float8 configuration supports delayed scaling, + # add a check here to enforce supported float8 all-gather configurations + # TODO(vkuzo): add the items below to __init__.py of torchao.float8 and import from there + from torchao.float8.float8_tensor_parallel import ( + Float8ColwiseParallel, + Float8RowwiseParallel, + PrepareFloat8ModuleInput, + ) + + rowwise_parallel, colwise_parallel, prepare_module_input = ( + Float8RowwiseParallel, + Float8ColwiseParallel, + PrepareFloat8ModuleInput, + ) + else: + rowwise_parallel, colwise_parallel, prepare_module_input = ( + RowwiseParallel, + ColwiseParallel, + PrepareModuleInput, + ) + + # Apply tensor + sequence parallelism to every transformer block + # NOTE: At the cost of model code change, we can accelerate Sequence Parallel + # by folding (and unfolding) the batch dimension and the sequence dimension. + # Examples can be found at https://github.com/pytorch/torchtitan/pull/437 + for layer_id, transformer_block in model.language_model.layers.items(): + layer_plan = { + "ln_attn": SequenceParallel(), + "attn": prepare_module_input( + input_layouts=(Shard(1), None), + desired_input_layouts=(Replicate(), None), + ), + "attn.wq": colwise_parallel(), + "attn.wk": colwise_parallel(), + "attn.wv": colwise_parallel(), + "attn.wo": rowwise_parallel(output_layouts=Shard(1), use_local_output=False), + "ln_mlp": SequenceParallel(), + "mlp": prepare_module_input( + input_layouts=(Shard(1),), + desired_input_layouts=(Replicate(),), + ), + "mlp.w1": colwise_parallel(), + "mlp.w2": rowwise_parallel(output_layouts=Shard(1), use_local_output=False), + "mlp.w3": colwise_parallel(), + } + + parallelize_module( + module=transformer_block, + device_mesh=tp_mesh, + parallelize_plan=layer_plan, + ) + + if enable_async_tp: + from torch.distributed._symmetric_memory import enable_symm_mem_for_group + + torch._inductor.config._micro_pipeline_tp = True + enable_symm_mem_for_group(tp_mesh.get_group().group_name) + + logger.info( + f"Applied {'Float8 ' if enable_float8 else ''}{'Async ' if enable_async_tp else ''}" + "Tensor Parallelism to the model" + ) + + +# for selective op activation checkpointing +_save_list = { + torch.ops.aten.mm.default, + torch.ops.aten._scaled_dot_product_efficient_attention.default, + torch.ops.aten._scaled_dot_product_flash_attention.default, + torch.ops._c10d_functional.reduce_scatter_tensor.default, + # for low precision training, it's useful to always save + # the result of max, since the absolute maximum is + # used to compute the scaling factor for quantization. + torch.ops.aten.max.default, +} + + +def _apply_ac_to_transformer_block(module: nn.Module, ac_config): + valid_ac_modes = ("full", "selective") + if ac_config.mode not in valid_ac_modes: + raise ValueError( + f"Invalid AC mode: {ac_config.mode}. Valid modes: {valid_ac_modes}" + ) + + if ac_config.mode == "full": + return ptd_checkpoint_wrapper(module, preserve_rng_state=False) + + assert ac_config.mode == "selective", f"{ac_config.mode}" + use_op_sac = ac_config.selective_ac_option == "op" + use_layer_sac = ac_config.selective_ac_option.isdigit() + if not use_op_sac and not use_layer_sac: + raise ValueError( + f"Invalid selective AC option: {ac_config.selective_ac_option}. " + f"Valid options: 'op' or a positive int representing layer frequency" + ) + if use_op_sac: + from torch.utils.checkpoint import ( + CheckpointPolicy, + create_selective_checkpoint_contexts, + ) + + def _get_custom_policy(meta): + def _custom_policy(ctx, func, *args, **kwargs): + mode = "recompute" if ctx.is_recompute else "forward" + mm_count_key = f"{mode}_mm_count" + if func == torch.ops.aten.mm.default: + meta[mm_count_key] += 1 + # Saves output of all compute ops, except every second mm + to_save = func in _save_list and not ( + func == torch.ops.aten.mm.default and meta[mm_count_key] % 2 == 0 + ) + return ( + CheckpointPolicy.MUST_SAVE + if to_save + else CheckpointPolicy.PREFER_RECOMPUTE + ) + + return _custom_policy + + def selective_checkpointing_context_fn(): + meta = defaultdict(int) + return create_selective_checkpoint_contexts(_get_custom_policy(meta)) + + return ptd_checkpoint_wrapper( + module, + context_fn=selective_checkpointing_context_fn, + preserve_rng_state=False, + ) + elif use_layer_sac: + # Checkpoint every `ac_freq` of the modules passed to this function + ac_freq = int(ac_config.selective_ac_option) + ptd_checkpoint_wrapper.__dict__.setdefault("_count", 0) + ptd_checkpoint_wrapper._count += 1 + if not ac_freq or ptd_checkpoint_wrapper._count % ac_freq == 0: + return ptd_checkpoint_wrapper(module, preserve_rng_state=False) + else: + return module + + +def apply_ac(model: nn.Module, ac_config): + """Apply activation checkpointing to the model.""" + for layer_id, transformer_block in model.language_model.layers.named_children(): + transformer_block = _apply_ac_to_transformer_block(transformer_block, ac_config) + model.language_model.layers.register_module(layer_id, transformer_block) + + logger.info(f"Applied {ac_config.mode} activation checkpointing to the model") + + +def apply_compile(model: nn.Module): + """ + Apply torch.compile to each TransformerBlock, which makes compilation efficient due to + repeated structure. Alternatively one can compile the whole model (after applying DP). + """ + for layer_id, transformer_block in model.language_model.layers.named_children(): + transformer_block = torch.compile(transformer_block, fullgraph=True) + model.language_model.layers.register_module(layer_id, transformer_block) + + logger.info("Compiling each TransformerBlock with torch.compile") + + +def apply_fsdp( + model: nn.Module, + dp_mesh: DeviceMesh, + param_dtype: torch.dtype, + reduce_dtype: torch.dtype, + pp_enabled: bool, + cpu_offload: bool = False, + reshard_after_forward_policy: str = "default", +): + """ + Apply data parallelism (via FSDP2) to the model. + + Args: + model (nn.Module): The model to apply data parallelism to. + dp_mesh (DeviceMesh): The device mesh to use for data parallelism. + param_dtype (torch.dtype): The data type to use for model parameters. + reduce_dtype (torch.dtype): The data type to use for reduction operations. + pp_enabled (bool): Whether pipeline parallelism is enabled. + cpu_offload (bool, optional): Whether to offload model parameters to CPU. Defaults to False. + reshard_after_forward_policy (str, optional): The policy to use for resharding after forward pass. Defaults to "default". + Other options: "never", "always". + - "default" applies default resharding behavior, implementing "smart defaults" for known optimal scenarios. + - "always" will enable `reshard_after_forward` for all forward passes. + - "never" will disable `reshard_after_forward` for all forward passes. + + """ + mp_policy = MixedPrecisionPolicy(param_dtype=param_dtype, reduce_dtype=reduce_dtype) + fsdp_config = {"mesh": dp_mesh, "mp_policy": mp_policy} + if cpu_offload: + fsdp_config["offload_policy"] = CPUOffloadPolicy() + + for layer_id, transformer_block in model.language_model.layers.items(): + if reshard_after_forward_policy == "always": + reshard_after_forward = True + elif reshard_after_forward_policy == "never": + reshard_after_forward = False + elif reshard_after_forward_policy == "default": + if pp_enabled: + # For PP, do not reshard after forward to avoid per-microbatch + # all-gathers, which can be expensive and non-overlapped + reshard_after_forward = False + else: + # As an optimization, do not reshard after forward for the last + # transformer block since FSDP would prefetch it immediately + reshard_after_forward = int(layer_id) < len(model.language_model.layers) - 1 + else: + raise ValueError( + f"Invalid reshard_after_forward_policy: {reshard_after_forward_policy}." + ) + fully_shard( + transformer_block, + **fsdp_config, + reshard_after_forward=reshard_after_forward, + ) + fully_shard(model, **fsdp_config, reshard_after_forward=not pp_enabled) + + +def apply_ddp( + model: nn.Module, + dp_mesh: DeviceMesh, + enable_compile: bool, + enable_compiled_autograd: bool, +): + if enable_compile: + if enable_compiled_autograd: + torch._dynamo.config.optimize_ddp = ( + "python_reducer_without_compiled_forward" + ) + else: + torch._dynamo.config.optimize_ddp = "ddp_optimizer" + + replicate(model, device_mesh=dp_mesh, bucket_cap_mb=100) + + logger.info("Applied DDP to the model") diff --git a/torchtitan/models/mistral3/infra/pipeline.py b/torchtitan/models/mistral3/infra/pipeline.py new file mode 100644 index 0000000000..463b5171a4 --- /dev/null +++ b/torchtitan/models/mistral3/infra/pipeline.py @@ -0,0 +1,145 @@ +# Copyright (c) Meta Platforms, Inc. and affiliates. +# All rights reserved. +# +# This source code is licensed under the BSD-style license found in the +# LICENSE file in the root directory of this source tree. + +# This file applies the PT-D pipeline parallelism to the Llama model. + +import copy +from typing import Callable, Optional, Union + +import torch +import torch.nn as nn +from torch.distributed import DeviceMesh +from torch.distributed.pipelining import PipelineStage +from torch.distributed.pipelining.schedules import _PipelineSchedule, get_schedule_class + +from torchtitan.config_manager import JobConfig +from torchtitan.logging import logger +from torchtitan.parallelisms import ParallelDims +from torchtitan.parallelisms.pipeline import ( + build_pipeline_schedule, + generate_split_points, + stage_ids_this_rank, +) + +from .model import ModelArgs + + +DeviceType = Union[int, str, torch.device] + + +def pipeline_mistral3( + model: nn.Module, + pp_mesh: DeviceMesh, + parallel_dims: ParallelDims, + job_config: JobConfig, + device: DeviceType, + model_config: ModelArgs, + loss_fn: Callable[..., torch.Tensor], +) -> tuple[_PipelineSchedule, list[nn.Module], bool, bool]: + stages, models = pipeline_llama_manual_split( + model.language_model, pp_mesh, parallel_dims, job_config, device, model_config + ) + + pp_schedule = build_pipeline_schedule(job_config, stages, loss_fn) + + # This is used in the train loop to determine whether to pass in the input_ids and labels + has_first_stage = False + has_last_stage = False + for stage in stages: + if stage.is_first: + has_first_stage = True + if stage.is_last: + has_last_stage = True + + return pp_schedule, models, has_first_stage, has_last_stage + + +def pipeline_llama_manual_split( + whole_model: nn.Module, + pp_mesh: DeviceMesh, + parallel_dims: ParallelDims, + job_config: JobConfig, + device: DeviceType, + model_config: ModelArgs, +) -> tuple[list[PipelineStage], list[nn.Module]]: + """ + This API extracts one torch.nn.Module objects for the part of the model configured to run inside this stage. + + It wraps the model chunk in a ManualPipelineStage object and returns both the stage and model objects. + + The stage object is used to create a pipeline schedule, and the model object can be used for applying SPMD + parallelism. + """ + pp_rank = pp_mesh.get_local_rank() + pp_size = pp_mesh.size() + + splits = ( + job_config.experimental.pipeline_parallel_split_points + or generate_split_points(job_config, parallel_dims.pp, model_config.n_layers) + ) + + def _build_stage( + stage_idx: int, + start_layer: Optional[str], + stop_layer: Optional[str], + is_first: bool = False, + is_last: bool = False, + ) -> tuple[PipelineStage, nn.Module]: + model = copy.deepcopy(whole_model) + if not is_first: + model.tok_embeddings = None + + drop_layers = start_layer is not None + for name in list(model.layers.keys()): + # we keep layers in a contiguous region between start (inclusive) and stop (exclusive) + if f"layers.{name}" == start_layer: + drop_layers = False + if f"layers.{name}" == stop_layer: + drop_layers = True + if drop_layers: + del model.layers[name] + + if not is_last: + model.norm = None + model.output = None + + stage = PipelineStage( + model, + stage_idx, + num_stages, + device, + group=pp_mesh.get_group("pp"), + ) + return stage, model + + num_stages = len(splits) + 1 + stage_idx = pp_rank + + stages = [] + models = [] + + schedule_class = get_schedule_class( + job_config.experimental.pipeline_parallel_schedule + ) + style = "loop" + + for stage_idx in stage_ids_this_rank(pp_rank, pp_size, num_stages, style=style): + start_layer = splits[stage_idx - 1] if stage_idx > 0 else None + stop_layer = splits[stage_idx] if stage_idx < num_stages - 1 else None + stage, model_chunk = _build_stage( + stage_idx, + start_layer, + stop_layer, + is_first=stage_idx == 0, + is_last=stage_idx == num_stages - 1, + ) + logger.info( + f"PP rank {pp_rank} is building stage_idx {stage_idx}" + f" with start_layer {start_layer}, stop_layer {stop_layer}" + ) + stages.append(stage) + models.append(model_chunk) + return stages, models diff --git a/torchtitan/models/mistral3/model/configuration_pixtral.py b/torchtitan/models/mistral3/model/configuration_pixtral.py new file mode 100644 index 0000000000..7b0fad0052 --- /dev/null +++ b/torchtitan/models/mistral3/model/configuration_pixtral.py @@ -0,0 +1,106 @@ +# coding=utf-8 +# Copyright 2024 HuggingFace Inc. team. All rights reserved. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +"""Pixtral model configuration""" + +from transformers.configuration_utils import PretrainedConfig +from transformers.utils import logging + + +logger = logging.get_logger(__name__) + + +class PixtralVisionConfig(PretrainedConfig): + r""" + This is the configuration class to store the configuration of a [`PixtralVisionModel`]. It is used to instantiate an + Pixtral vision encoder according to the specified arguments, defining the model architecture. Instantiating a configuration + with the defaults will yield a similar configuration to the vision encoder used by Pixtral-12B. + + e.g. [pixtral-hf/pixtral-9b](https://huggingface.co/pixtral-hf/pixtral-9b) + + Configuration objects inherit from [`PretrainedConfig`] and can be used to control the model outputs. Read the + documentation from [`PretrainedConfig`] for more information. + + Args: + hidden_size (`int`, *optional*, defaults to 1024): + Dimension of the hidden representations. + intermediate_size (`int`, *optional*, defaults to 4096): + Dimension of the MLP representations. + num_hidden_layers (`int`, *optional*, defaults to 24): + Number of hidden layers in the Transformer encoder. + num_attention_heads (`int`, *optional*, defaults to 16): + Number of attention heads in the Transformer encoder. + num_channels (`int`, *optional*, defaults to 3): + Number of input channels in the input images. + image_size (`int`, *optional*, defaults to 1024): + Max dimension of the input images. + patch_size (`int`, *optional*, defaults to 16): + Size of the image patches. + hidden_act (`str`, *optional*, defaults to `"gelu"`): + Activation function used in the hidden layers. + attention_dropout (`float`, *optional*, defaults to 0.0): + Dropout probability for the attention layers. + rope_theta (`float`, *optional*, defaults to 10000.0): + The base period of the RoPE embeddings. + initializer_range (`float`, *optional*, defaults to 0.02): + The standard deviation of the truncated_normal_initializer for initializing all weight matrices. + + Example: + + ```python + >>> from transformers import PixtralVisionModel, PixtralVisionConfig + + >>> # Initializing a Pixtral-12B style configuration + >>> config = PixtralVisionConfig() + + >>> # Initializing a model (with randomly initialized weights) from the configuration + >>> model = PixtralVisionModel(configuration) + + >>> # Accessing the model configuration + >>> configuration = model.config + ```""" + + model_type = "pixtral" + + def __init__( + self, + hidden_size=1024, + intermediate_size=4096, + num_hidden_layers=24, + num_attention_heads=16, + num_channels=3, + image_size=1024, + patch_size=16, + hidden_act="gelu", + attention_dropout=0.0, + rope_theta=10000.0, + initializer_range=0.02, + **kwargs, + ): + super().__init__(**kwargs) + + self.hidden_size = hidden_size + self.intermediate_size = intermediate_size + self.num_hidden_layers = num_hidden_layers + self.num_attention_heads = num_attention_heads + self.num_channels = num_channels + self.patch_size = patch_size + self.image_size = image_size + self.attention_dropout = attention_dropout + self.hidden_act = hidden_act + self.rope_theta = rope_theta + self.head_dim = hidden_size // num_attention_heads + self.initializer_range = initializer_range + + +__all__ = ["PixtralVisionConfig"] diff --git a/torchtitan/models/mistral3/model/model.py b/torchtitan/models/mistral3/model/model.py new file mode 100644 index 0000000000..2a97bcc08a --- /dev/null +++ b/torchtitan/models/mistral3/model/model.py @@ -0,0 +1,997 @@ +import math +from dataclasses import dataclass +from typing import Any, Dict, List, Optional, Tuple, Union + +import torch +import torch.nn as nn +import torch.nn.functional as F + +from torchtitan.models.norms import RMSNorm +from torchtitan.models.norms import build_norm +from time import sleep + + +from torchtitan.logging import logger +from torchtitan.train_spec import ModelProtocol +from torchtitan.models.attention import build_attention, init_attention_mask +from torch.distributed._tensor import Replicate, Shard, distribute_tensor + +@dataclass +class ModelArgs: + # vision encoder part + vision_embed_dim: int = 1024 + vision_num_layers: int = 24 + vision_num_heads: int = 16 + vision_feature_layer: int = -1 + patch_size: int = 14 + image_size: int = 1540 + in_channels: int = 3 + # For merging patches + spatial_merge_size: int = 2 + + # projection part + num_layers_projection: int = 8 + projector_hidden_act: str = "gelu" + multimodal_projector_bias: bool = False + + # decoder part + decoder_embed_dim: int = 5120 + decoder_num_layers: int = 40 + decoder_num_heads: int = 32 + decoder_num_kv_heads: int = 8 + fusion_interval: int = 8 # Interval for fusion of vision features into text model + image_token_index: int = 10 # Token ID representing an image in the text + + # common part + vocab_size: int = 131072 + multiple_of: int = 256 # make SwiGLU hidden layer size multiple of large power of 2 + ffn_dim_multiplier: Optional[float] = None + norm_eps: float = 1e-5 + rope_theta: float = 1000000000.0 + max_seq_len: int = 131072 + activation: nn.Module = nn.GELU() + depth_init: bool = True + + n_layers: int = 40 + n_heads: int = 32 + n_embd: int = 5120 + dim: int = 4096 + + +class Mistral3RMSNorm(nn.Module): + def __init__(self, hidden_size, eps=1e-6): + """ + Mistral3RMSNorm is equivalent to T5LayerNorm + """ + super().__init__() + self.weight = nn.Parameter(torch.ones(hidden_size)) + self.variance_epsilon = eps + + def forward(self, hidden_states): + input_dtype = hidden_states.dtype + hidden_states = hidden_states.to(torch.float32) + variance = hidden_states.pow(2).mean(-1, keepdim=True) + hidden_states = hidden_states * torch.rsqrt(variance + self.variance_epsilon) + return self.weight * hidden_states.to(input_dtype) + + +def get_sub_grids( + x: torch.Tensor, + image_sizes: list[tuple[int, int]], + spatial_merge_size: int, +) -> list[torch.Tensor]: + # image_sizes specified in tokens + tokens_per_image = [h * w for h, w in image_sizes] + d = x.shape[-1] + all_img_sub_grids: list[torch.Tensor] = [] + sub_grid_size = spatial_merge_size + + for image_index, image_tokens in enumerate(x.split(tokens_per_image)): + # Reshape image_tokens into a 2D grid + h, w = image_sizes[image_index] + image_grid = image_tokens.view(h, w, d).permute(2, 0, 1)[None, :, :, :] # 1 x d x h x w + sub_grids = torch.nn.functional.unfold(image_grid, kernel_size=sub_grid_size, stride=sub_grid_size) + sub_grids = sub_grids.view( + 1, d, sub_grid_size, sub_grid_size, -1 + ) # 1 x d x sub_grid_size x sub_grid_size x n_patches + + all_img_sub_grids.append(sub_grids[0]) + + return all_img_sub_grids + +class Mistral3PatchMerger(nn.Module): + """ + Learned merging of spatial_merge_size ** 2 patches + """ + + def __init__(self, config: ModelArgs): + super().__init__() + self.config = config + + hidden_size = config.vision_embed_dim + self.spatial_merge_size = config.spatial_merge_size + self.patch_size = self.config.patch_size + self.merging_layer = nn.Linear(hidden_size * self.spatial_merge_size**2, hidden_size, bias=False) + + + def forward(self, image_features: torch.Tensor, image_sizes: torch.Tensor) -> torch.Tensor: + image_sizes = [ + (image_size[0] // self.patch_size, image_size[1] // self.patch_size) for image_size in image_sizes + ] + + tokens_per_image = [h * w for h, w in image_sizes] + d = image_features.shape[-1] + + permuted_tensor = [] + for image_index, image_tokens in enumerate(image_features.split(tokens_per_image)): + # Reshape image_tokens into a 2D grid + h, w = image_sizes[image_index] + image_grid = image_tokens.view(h, w, d).permute(2, 0, 1).unsqueeze(0) + grid = torch.nn.functional.unfold( + image_grid, kernel_size=self.spatial_merge_size, stride=self.spatial_merge_size + ) + grid = grid.view(d * self.spatial_merge_size**2, -1).t() + permuted_tensor.append(grid) + + image_features = torch.cat(permuted_tensor, dim=0) + image_features = self.merging_layer(image_features) + + return image_features.unsqueeze(0) + + +class Mistral3MultiModalProjector(nn.Module): + def __init__(self, config: ModelArgs): + super().__init__() + self.norm = build_norm("rmsnorm", config.vision_embed_dim, config.norm_eps) + self.patch_merger = Mistral3PatchMerger(config) + # We have hidden_size * the number of vision feature layers + num_feature_layers = 1 if isinstance(config.vision_feature_layer, int) else len(config.vision_feature_layer) + self.linear_1 = nn.Linear( + config.vision_embed_dim * num_feature_layers, + config.decoder_embed_dim, + bias=config.multimodal_projector_bias, + ) + self.act = config.activation + self.linear_2 = nn.Linear( + config.decoder_embed_dim, config.decoder_embed_dim, bias=config.multimodal_projector_bias + ) + + def forward(self, image_features: torch.Tensor, image_sizes: torch.Tensor): + image_features = self.norm(image_features) + + image_features = self.patch_merger(image_features, image_sizes) + hidden_states = self.linear_1(image_features) + hidden_states = self.act(hidden_states) + hidden_states = self.linear_2(hidden_states) + return hidden_states + + +def precompute_freqs_cis(dim: int, end: int, theta: float = 10000.0) -> torch.Tensor: + """ + Precompute the frequency tensor for complex exponentials (cis) with given dimensions. + + This function calculates a frequency tensor with complex exponentials using the given dimension 'dim' + and the end index 'end'. The 'theta' parameter scales the frequencies. + The returned tensor contains complex values in complex64 data type. + + Args: + dim (int): Dimension of the frequency tensor. + end (int): End index for precomputing frequencies. + theta (float, optional): Scaling factor for frequency computation. Defaults to 10000.0. + + Returns: + torch.Tensor: Precomputed frequency tensor with complex exponentials. + """ + + freqs = 1.0 / (theta ** (torch.arange(0, dim, 2)[: (dim // 2)].float() / dim)) + t = torch.arange(end, device=freqs.device) + freqs = torch.outer(t, freqs).float() + freqs_cis = torch.polar(torch.ones_like(freqs), freqs) # complex64 + + return freqs_cis + + +def reshape_for_broadcast(freqs_cis: torch.Tensor, x: torch.Tensor) -> torch.Tensor: + """ + Reshape frequency tensor for broadcasting it with another tensor. + + This function reshapes the frequency tensor to have the same shape as the target tensor 'x' + for the purpose of broadcasting the frequency tensor during element-wise operations. + + The input freqs_cis tensor is assumed to be of shape (max_seqlen, dim), + and the first seqlen elements will be sliced, but dim must match x. + + Args: + freqs_cis (torch.Tensor): Frequency tensor to be reshaped. + x (torch.Tensor): Target tensor for broadcasting compatibility. + + Returns: + torch.Tensor: Reshaped frequency tensor. + """ + ndim = x.ndim + assert 0 <= 1 < ndim + seqlen = x.shape[1] + freqs_cis = freqs_cis[0:seqlen] + #logger.info(freqs_cis.shape) + #logger.info(x.shape) + assert freqs_cis.shape == (seqlen, x.shape[-1]) + shape = [d if i == 1 or i == ndim - 1 else 1 for i, d in enumerate(x.shape)] + return freqs_cis.view(*shape) + + +def apply_rotary_emb( + xq: torch.Tensor, + xk: torch.Tensor, + freqs_cis: torch.Tensor, + position_ids: Optional[torch.Tensor] = None, +) -> Tuple[torch.Tensor, torch.Tensor]: + """ + Apply rotary embeddings to input tensors using the given frequency tensor. + + This function applies rotary embeddings to the given query 'xq' and key 'xk' tensors using the provided + frequency tensor 'freqs_cis'. The input tensors are reshaped as complex numbers, and the frequency tensor + is reshaped for broadcasting compatibility. The resulting tensors contain rotary embeddings and are + returned as real tensors. + + Args: + xq (torch.Tensor): Query tensor to apply rotary embeddings. + xk (torch.Tensor): Key tensor to apply rotary embeddings. + freqs_cis (torch.Tensor): Precomputed frequency tensor for complex exponentials. + position_ids (torch.Tensor, optional): Custom position IDs of shape [batch_size, seq_len]. + If provided, will use these to index into freqs_cis. + + Returns: + Tuple[torch.Tensor, torch.Tensor]: Tuple of modified query tensor and key tensor with rotary embeddings. + """ + xq_ = torch.view_as_complex(xq.float().reshape(*xq.shape[:-1], -1, 2)) + xk_ = torch.view_as_complex(xk.float().reshape(*xk.shape[:-1], -1, 2)) + + if position_ids is not None: + # Custom position_ids handling + bs, seqlen = position_ids.shape + + # Create output tensors + xq_out = torch.empty_like(xq) + xk_out = torch.empty_like(xk) + + # Apply rotations batch by batch + for i in range(bs): + # Get frequencies for this batch element's positions + batch_freqs = freqs_cis[position_ids[i]] # [seqlen, head_dim//2] + # Reshape for broadcasting + batch_freqs = batch_freqs.view(1, seqlen, 1, -1) # [1, seqlen, 1, head_dim//2] + + # Apply rotation to this batch element + batch_xq = xq_[i:i+1] # [1, seqlen, heads, head_dim//2] + batch_xk = xk_[i:i+1] + + # Multiply by complex exponential + batch_xq_out = batch_xq * batch_freqs + batch_xk_out = batch_xk * batch_freqs + + # Convert back to real and store in output tensors + xq_out[i:i+1] = torch.view_as_real(batch_xq_out).flatten(3) + xk_out[i:i+1] = torch.view_as_real(batch_xk_out).flatten(3) + + return xq_out.type_as(xq), xk_out.type_as(xk) + else: + # Standard case with sequential positions + freqs_cis = reshape_for_broadcast(freqs_cis, xq_) + xq_out = torch.view_as_real(xq_ * freqs_cis).flatten(3) + xk_out = torch.view_as_real(xk_ * freqs_cis).flatten(3) + return xq_out.type_as(xq), xk_out.type_as(xk) + + +def repeat_kv(x: torch.Tensor, num_rep: int) -> torch.Tensor: + """torch.repeat_interleave(x, dim=2, repeats=num_rep)""" + bsz, seq_len, num_kv_heads, head_dim = x.shape + if num_rep == 1: + return x + return ( + torch.unsqueeze(x, dim=3) + .expand(bsz, seq_len, num_kv_heads, num_rep, head_dim) + .reshape(bsz, seq_len, num_kv_heads * num_rep, head_dim) + ) + + +class SelfAttention(nn.Module): + """ + Multi-head self attention module with rotary position encoding. + """ + + def __init__(self, config: ModelArgs, is_vision=True): + super().__init__() + if is_vision: + self.num_heads = config.vision_num_heads + self.num_kv_heads = config.vision_num_heads + self.head_dim = config.vision_embed_dim // config.vision_num_heads + self.embed_dim = config.vision_embed_dim + self.is_causal = False + else: + self.num_heads = config.decoder_num_heads + self.num_kv_heads = ( + config.decoder_num_heads if config.decoder_num_kv_heads is None else config.decoder_num_kv_heads + ) + self.head_dim = config.decoder_embed_dim // config.decoder_num_heads + self.embed_dim = config.decoder_embed_dim + self.is_causal = True + + self.num_rep = self.num_heads // self.num_kv_heads + + + self.wq = nn.Linear(self.embed_dim, int(self.num_heads * self.head_dim * 0.8), bias=False) + self.wk = nn.Linear(self.embed_dim, int(self.num_kv_heads * self.head_dim * 0.8), bias=False) + self.wv = nn.Linear(self.embed_dim, int(self.num_kv_heads * self.head_dim * 0.8), bias=False) + self.wo = nn.Linear(int(self.num_heads * self.head_dim * 0.8), self.embed_dim, bias=False) + + self.sdpa = build_attention(True, "causal") + + + + + def init_weights(self, init_std: float): + for linear in (self.wq, self.wk, self.wv): + nn.init.trunc_normal_(linear.weight, mean=0.0, std=0.02) + nn.init.trunc_normal_(self.wo.weight, mean=0.0, std=init_std) + + def forward(self, x: torch.Tensor, freqs_cis: Optional[torch.Tensor] = None, position_ids: Optional[torch.Tensor] = None): + """ + Forward pass of the attention module. + + Args: + x (torch.Tensor): Input tensor. + freqs_cis (torch.Tensor, optional): Precomputed frequency tensor. + position_ids (torch.Tensor, optional): Custom position ids tensor of shape [batch, seq_len]. + + Returns: + torch.Tensor: Output tensor after attention. + """ + + bs, seqlen, _ = x.shape + xq, xk, xv = self.wq(x), self.wk(x), self.wv(x) + + # Use -1 instead of `num_heads` (or `num_kv_heads`) to infer the actual + # local heads from sizes of xq, xk, and xv as TP may have sharded them + # after the above linear ops. + xq = xq.view(bs, seqlen, -1, 128) + xk = xk.view(bs, seqlen, -1, 128) + xv = xv.view(bs, seqlen, -1, 128) + + if freqs_cis is not None: + # Apply RoPE with position_ids if provided + xq, xk = apply_rotary_emb(xq, xk, freqs_cis=freqs_cis, position_ids=position_ids) + + # repeat k/v heads if num_kv_heads < num_heads + keys = repeat_kv(xk, self.num_rep) # (bs, seqlen, n_local_heads, head_dim) + values = repeat_kv(xv, self.num_rep) # (bs, seqlen, n_local_heads, head_dim) + + xq = xq.transpose(1, 2) # (bs, n_local_heads, seqlen, head_dim) + xk = keys.transpose(1, 2) # (bs, n_local_heads, seqlen, head_dim) + xv = values.transpose(1, 2) # (bs, n_local_heads, seqlen, head_dim) + + output = self.sdpa(xq, xk, xv) + + output = output.transpose(1, 2).contiguous() # (bs, seqlen, n_local_heads, head_dim) + output = output.view(bs, seqlen, -1) + return self.wo(output) + +class FeedForward(nn.Module): + """ + FeedForward module + + Args: + dim (int): Input dimension. + hidden_dim (int): Hidden dimension of the feedforward layer. + multiple_of (int): Value to ensure hidden dimension is a multiple of this value. + ffn_dim_multiplier (Optional[float]): Custom multiplier for hidden dimension. Defaults to None. + activation: (nn.Module): Activation function to use. Defaults to nn.silu. + + Attributes: + w1 (Linear): Linear transformation for the first layer. + w2 (Linear): Linear transformation for the second layer. + """ + + def __init__( + self, + dim: int, + hidden_dim: int, + multiple_of: int, + ffn_dim_multiplier: Optional[float], + activation: nn.Module = nn.SiLU(), + ): + super().__init__() + hidden_dim = int(2 * hidden_dim / 3) + # custom dim factor multiplier + if ffn_dim_multiplier is not None: + hidden_dim = int(ffn_dim_multiplier * hidden_dim) + hidden_dim = multiple_of * ((hidden_dim + multiple_of - 1) // multiple_of) + hidden_dim = 32768 + self.activation = activation + + self.w1 = nn.Linear(dim, hidden_dim, bias=False) + self.w2 = nn.Linear(hidden_dim, dim, bias=False) + + def forward(self, x): + return self.w2(self.activation(self.w1(x))) + + def init_weights(self, init_std: float): + nn.init.trunc_normal_(self.w1.weight, mean=0.0, std=0.02) + nn.init.trunc_normal_(self.w2.weight, mean=0.0, std=init_std) + + +class FeedForwardForDecoder(nn.Module): + """ + FeedForward module for the decoder. It's different from the one in the encoder. + This is the component which is originally used in Mistral3/Llama3. + """ + + def __init__( + self, + dim: int, + hidden_dim: int, + multiple_of: int, + ffn_dim_multiplier: Optional[float], + ): + super().__init__() + hidden_dim = int(2 * hidden_dim / 3) + # custom dim factor multiplier + if ffn_dim_multiplier is not None: + hidden_dim = int(ffn_dim_multiplier * hidden_dim) + hidden_dim = multiple_of * ((hidden_dim + multiple_of - 1) // multiple_of) + hidden_dim = 32768 + + self.w1 = nn.Linear(dim, hidden_dim, bias=False) + self.w2 = nn.Linear(hidden_dim, dim, bias=False) + self.w3 = nn.Linear(dim, hidden_dim, bias=False) + + def forward(self, x): + return self.w2(F.silu(self.w1(x)) * self.w3(x)) + + def init_weights(self, init_std: float): + nn.init.trunc_normal_(self.w1.weight, mean=0.0, std=0.02) + for linear in (self.w2, self.w3): + nn.init.trunc_normal_(linear.weight, mean=0.0, std=init_std) + + +class TanhGate(nn.Module): + """Implements a basic learnable gate to scale layer outputs""" + + def __init__(self) -> None: + super().__init__() + self.scale = nn.Parameter(torch.zeros(1)) + + def forward(self, x: torch.Tensor) -> torch.Tensor: + """ + Args: + x (torch.Tensor): input tensor to gate + + Returns: + torch.Tensor: The output tensor after gating. Has the same shape as ``x``. + """ + return x * self.scale.tanh() + + +class VisionTransformerBlock(nn.Module): + def __init__( + self, + config: ModelArgs, + attn_scale: Optional[nn.Module] = None, + mlp_scale: Optional[nn.Module] = None, + ): + super().__init__() + self.attn = SelfAttention(config, is_vision=True) + self.ln_attn = build_norm("rmsnorm", config.vision_embed_dim, config.norm_eps) + self.mlp = FeedForward( + dim=config.vision_embed_dim, + hidden_dim=4 * config.vision_embed_dim, + multiple_of=config.multiple_of, + ffn_dim_multiplier=config.ffn_dim_multiplier, + activation=config.activation, + ) + self.ln_mlp = build_norm("rmsnorm", config.vision_embed_dim, config.norm_eps) + self.attn_scale = attn_scale or nn.Identity() + self.mlp_scale = mlp_scale or nn.Identity() + + def forward( + self, + x: torch.Tensor, + mask: Optional[torch.Tensor] = None, + ): + x = x + self.attn(x=self.ln_attn(x), freqs_cis=None) + x = x + self.mlp(self.ln_mlp(x)) + return x + + +class DecoderTransformerSelfAttnBlock(nn.Module): + def __init__( + self, + config: ModelArgs, + ): + super().__init__() + self.attn = SelfAttention(config, is_vision=False) + self.ln_attn = build_norm("rmsnorm", config.decoder_embed_dim, config.norm_eps) + self.mlp = FeedForwardForDecoder( + dim=config.decoder_embed_dim, + hidden_dim=4 * config.decoder_embed_dim, + multiple_of=config.multiple_of, + ffn_dim_multiplier=config.ffn_dim_multiplier, + ) + self.ln_mlp = build_norm("rmsnorm", config.decoder_embed_dim, config.norm_eps) + + def forward( + self, + x: torch.Tensor, + freqs_cis: torch.Tensor, + position_ids: Optional[torch.Tensor] = None, + **kwargs: Dict, + ): + # Handle custom position_ids if provided + if position_ids is not None: + # Custom handling for position_ids + # We need to index into freqs_cis with the position_ids + # First, we'll do a custom reshape_for_broadcast implementation that uses position_ids + x_norm = self.ln_attn(x) + # Get the appropriate freqs_cis based on position_ids + x = x + self.attn(x_norm, freqs_cis, position_ids=position_ids) + else: + # Standard forwarding without custom position_ids + x = x + self.attn(self.ln_attn(x), freqs_cis) + + x = x + self.mlp(self.ln_mlp(x)) + return x + + +class VisionEncoder(nn.Module): + """Vision encoder model using Pixtral Vision for Mistral3. This integrates the Pixtral vision encoder + with a projection to connect to the multimodal decoder. + + Args: + config (ModelArgs): configs for the vision encoder. + """ + + def __init__(self, config: ModelArgs) -> None: + super().__init__() + + # Import Pixtral components here to avoid circular imports + from .modeling_pixtral import PixtralVisionModel, PixtralVisionConfig + + # Create a PixtralVisionConfig based on the ModelArgs + pixtral_config = PixtralVisionConfig( + hidden_size=config.vision_embed_dim, + intermediate_size=4 * config.vision_embed_dim, # Standard multiplier + num_hidden_layers=config.vision_num_layers, + num_attention_heads=config.vision_num_heads, + num_channels=config.in_channels, + image_size=config.image_size, + patch_size=config.patch_size, + hidden_act="gelu", # Standard activation + attention_dropout=0.0, # No dropout by default + rope_theta=config.rope_theta, + initializer_range=0.02 # Standard initialization + ) + + # Initialize the Pixtral vision model + self.pixtral_vision = PixtralVisionModel(pixtral_config) + + # Add projection to connect to the decoder + self.multi_modal_projector = Mistral3MultiModalProjector(config) + + def forward(self, pixel_values: torch.Tensor, image_sizes: torch.Tensor, output_hidden_states: Optional[bool] = None, return_dict: Optional[bool] = None) -> torch.Tensor: + """ + Args: + pixel_values (torch.Tensor): + Input image tensor with shape [batch_size, channels, height, width]. + image_sizes (torch.Tensor): + Tensor with actual image sizes (height, width) for each image in the batch. + + Returns: + Tensor: output tensor of embeddings [batch_size, seq_len, decoder_embed_dim] + """ + # Pass through Pixtral vision model + vision_outputs = self.pixtral_vision( + pixel_values=pixel_values, + image_sizes=image_sizes, + output_hidden_states=output_hidden_states, + return_dict=return_dict + ) + + return vision_outputs + + + # Get the last hidden state + image_features = vision_outputs.last_hidden_state + + # Project to decoder dimension + return self.multi_modal_projector(image_features, image_sizes) + +class MultimodalDecoder(nn.Module): + """Decoder multimodal model for Mistral3. + + Args: + config (ModelArgs): configs for the model. + """ + + def __init__(self, config: ModelArgs): + super().__init__() + + self.register_buffer( + "freqs_cis", self._precompute_freqs_cis(config), persistent=True + ) + + self.layers = nn.ModuleDict() + for idx in range(config.decoder_num_layers): + # define a llama3-like decoder layer + decoder_layer = DecoderTransformerSelfAttnBlock(config) + # cross attention layers, mixing text and vision, + # placed every `fusion_interval` layers + """ + if idx % config.fusion_interval == 0: + cross_attn_layer = DecoderTransformerCrossAttnBlock(config) + fusion_layer = FusionLayer( + layer=decoder_layer, fusion_layer=cross_attn_layer + ) + self.layers[str(idx)] = fusion_layer + else: + """ + self.layers[str(idx)] = decoder_layer + + self.tok_embeddings = nn.Embedding(131072, config.decoder_embed_dim) + self.norm = build_norm( + config.norm_type, dim=config.decoder_embed_dim, eps=config.norm_eps + ) + self.output = nn.Linear( + config.decoder_embed_dim, 131072, bias=False + ) + + def _precompute_freqs_cis(self, config) -> torch.Tensor: + return precompute_freqs_cis( + int(config.decoder_embed_dim // config.decoder_num_heads * 0.8), + # Need to compute until at least the max token limit for generation + # (use 2x max sequence length to be safe) + config.max_seq_len, + config.rope_theta, + ) + + def forward( + self, + tokens: torch.Tensor, + *, + encoder_input: Optional[torch.Tensor] = None, + encoder_mask: Optional[torch.Tensor] = None, + inputs_embeds: Optional[torch.Tensor] = None, + position_ids: Optional[torch.Tensor] = None, + ) -> torch.Tensor: + """ + Args: + tokens (torch.Tensor): input tensor with shape ``[b x s]`` + encoder_input (Optional[torch.Tensor]): Optional input embeds from the encoder. Shape ``[b x s_e x d_e]`` + encoder_mask (Optional[torch.Tensor]): Boolean tensor defining a relational matrix between + tokens and encoder embeddings. Shape ``[b x s x s_e]``. Default is None. + position_ids (Optional[torch.Tensor]): Optional tensor of position ids with shape ``[b x s]``. + If provided, will use these position ids to index into freqs_cis. + """ + # input tensor of shape [b, s] + bsz, seq_len = tokens.shape + + # shape: [b, s, d] + if inputs_embeds is None: + h = self.tok_embeddings(tokens) + else: + h = inputs_embeds + + # Setup freqs_cis based on position_ids or sequence length + if position_ids is not None: + # Use custom position_ids to index into freqs_cis + # We still need freqs_cis with the right device/dtype + freqs_cis = self.freqs_cis + else: + # Default: use standard positions based on sequence length + freqs_cis = self.freqs_cis + + for layer in self.layers.values(): + # shape: [b, s, d] + h = layer( + h, + freqs_cis=freqs_cis, + encoder_input=encoder_input, + encoder_mask=encoder_mask, + position_ids=position_ids, + ) + + # shape: [b, s, d] + h = self.norm(h) + output = self.output(h) + + return output + + +class Mistral3ForConditionalGeneration(nn.Module, ModelProtocol): + """ + Mistral3 model which consists of a vision backbone and a language model. + + Args: + config (ModelArgs): Configuration for the model. + """ + + def __init__(self, config: ModelArgs): + super().__init__() + self.config = config + + # Language model decoder + self.language_model = MultimodalDecoder(config) + + # Special token for representing images in the text + self.image_token_index = config.image_token_index + + self.vision_model_initialized = False + + + def init_weights( + self, + buffer_device: Optional[torch.device] = None, + ): + """ + [Note: On ``init_weights`` vs. ``reset_parameters``] + Modules may define ``reset_parameters`` to initialize parameter values. + ``reset_parameters`` is meant to only initialize directly owned + parameters/buffers, not those of their child modules, and it can be + used to give the initial values for these tensors. + Separately, users may want custom initialization for their modules, + different from that in ``reset_parameters``. For this, we define + ``init_weights``. We only call it in the constructor of this + ``Transformer`` root module to avoid reinitializing tensors. + """ + + buffer_device = buffer_device or self.language_model.freqs_cis.device + with torch.device(buffer_device): + self.language_model._precompute_freqs_cis(self.config) + + + def get_image_features( + self, + pixel_values: torch.FloatTensor, + vision_feature_layer: Union[int, List[int]], + image_sizes: torch.Tensor, + **kwargs, + ): + kwargs = {k: v for k, v in kwargs.items() if v is not None} + #image_outputs = self.vision_tower(pixel_values.to(dtype=torch.float16), image_sizes=image_sizes, output_hidden_states=True) + + # this is not memory efficient at all (output_hidden_states=True) will save all the hidden states. + #with open("my_file.txt", "w") as f: + # #print(pixel_values, file=f) + + with torch.no_grad(): + image_outputs = self.vision_tower(pixel_values, image_sizes=image_sizes, output_hidden_states=False) + # If we have one vision feature layer, return the corresponding hidden states, + # otherwise, select the hidden states of each feature layer and concatenate them + if isinstance(vision_feature_layer, int): + selected_image_feature = image_outputs.last_hidden_state #[vision_feature_layer] + else: + hs_pool = [image_outputs.hidden_states[layer_idx] for layer_idx in vision_feature_layer] + selected_image_feature = torch.cat(hs_pool, dim=-1) + + image_features = self.multi_modal_projector(selected_image_feature.squeeze(0), image_sizes) + return image_features + + + + def forward( + self, + input_ids: torch.LongTensor = None, + pixel_values: Optional[torch.FloatTensor] = None, + attention_mask: Optional[torch.Tensor] = None, + position_ids: Optional[torch.Tensor] = None, + image_sizes: Optional[torch.Tensor] = None, + labels: Optional[torch.LongTensor] = None, + inputs_embeds: Optional[torch.FloatTensor] = None, + image_features: Optional[torch.FloatTensor] = None, + tp_mesh: Optional[Any] = None, + device: Optional[Any] = None, + vision_tower: Optional[Any] = None, + ): + if not self.vision_model_initialized: + from transformers import Mistral3ForConditionalGeneration as Mistral3Model + from accelerate import init_empty_weights, load_checkpoint_and_dispatch + + full = Mistral3Model.from_pretrained( + "mistralai/Mistral-Small-3.1-24B-Instruct-2503", trust_remote_code=True, device_map="auto", torch_dtype=torch.float16 + ).eval() + + from safetensors.torch import load_file + + if device == None: + device = torch.device("cuda") + + self.vision_tower = full.vision_tower.eval().to(device, dtype=torch.bfloat16) + + self.multi_modal_projector = full.multi_modal_projector.eval().to(device, dtype=torch.bfloat16) + + del full + self.vision_model_initialized = True + + if pixel_values is not None and image_sizes is not None: + + inputs_embeds = self.language_model.tok_embeddings(input_ids) + + if type(inputs_embeds) is torch.Tensor: + + if image_features is None: + image_features = self.get_image_features( + pixel_values=pixel_values, + vision_feature_layer=-1, + image_sizes=image_sizes + ).to(device=device, dtype=inputs_embeds.dtype) + + image_token_index = self.config.image_token_index + + special_image_mask = (input_ids == self.config.image_token_index).unsqueeze(-1) + special_image_mask = special_image_mask.expand_as(inputs_embeds) + image_features = image_features.to(inputs_embeds.device, inputs_embeds.dtype) + inputs_embeds = inputs_embeds.masked_scatter(special_image_mask, image_features) #.detach().contiguous() + + else: + # dtensor + inputs_embeds = inputs_embeds.redistribute(tp_mesh, [Replicate()]).to_local() # all-gather + + image_features = self.get_image_features( + pixel_values=pixel_values, + vision_feature_layer=-1, + image_sizes=image_sizes, + ).to(device=device, dtype=inputs_embeds.dtype) + + image_token_index = self.config.image_token_index + + special_image_mask = (input_ids == self.config.image_token_index).unsqueeze(-1) + special_image_mask = special_image_mask.expand_as(inputs_embeds) + image_features = image_features.to(inputs_embeds.device, inputs_embeds.dtype) + + + leaf = inputs_embeds.masked_scatter(special_image_mask, image_features).detach().contiguous() + + rep_dt = distribute_tensor(leaf, tp_mesh, [Replicate()]) # OK now + sharded_dt = rep_dt.redistribute(tp_mesh, [Shard(1)]) # reduce-scatter + + inputs_embeds = sharded_dt + + logits = self.language_model( + tokens=input_ids, + encoder_input=inputs_embeds, + encoder_mask=None, + position_ids=position_ids + ) + else: + if position_ids is not None: + # for the case where we want to do sequence packing, we need to pass the nonstandard position_ids + logits = self.language_model( + tokens=input_ids, + encoder_mask=None, + position_ids=position_ids + ) + else: + logits = self.language_model( + tokens=input_ids, + encoder_mask=None, + ) + + return logits + + def generate( + self, + input_ids: torch.LongTensor, + pixel_values: Optional[torch.FloatTensor] = None, + image_features: Optional[torch.FloatTensor] = None, + image_sizes: Optional[torch.Tensor] = None, + position_ids: Optional[torch.Tensor] = None, + max_length: int = 100, + temperature: float = 1.0, + top_k: Optional[int] = None, + **kwargs + ): + """ + Generate text from a prompt with optional image input. + + Args: + input_ids (torch.LongTensor): The input token IDs. + pixel_values (torch.FloatTensor, optional): The input pixel values. + image_features (torch.FloatTensor, optional): Pre-extracted image features. + image_sizes (torch.Tensor, optional): The sizes of the images. + position_ids (torch.Tensor, optional): Custom position ids of shape [batch, seq_len]. + max_length (int): Maximum length of the generated sequence. + temperature (float): Sampling temperature for generation. + top_k (int, optional): If set, only use the top k tokens for sampling. + + Returns: + torch.LongTensor: The generated token IDs. + """ + # Ensure batch dimension (T,) --> (B, T) + + if pixel_values is not None and image_features is not None: + raise ValueError("You can't provide both pixel_values and image_features at the same time") + + # Handle image sizes if not provided + if pixel_values is not None and image_sizes is None: + # If image_sizes not provided, use the dimensions of pixel_values + image_sizes = torch.tensor([[p.shape[1], p.shape[2]] for p in pixel_values]) + + # Process image features if provided through pixel_values + vision_output = None + if pixel_values is not None: + # Process pixel values with the vision encoder to get image features + vision_output = self.vision_tower(pixel_values, image_sizes) + elif image_features is not None: + vision_output = image_features + + # Start with the input_ids and incrementally generate tokens + generated_ids = input_ids.clone() + + # Set up RNG for sampling + rng = None + if "seed" in kwargs and kwargs["seed"] is not None: + rng = torch.Generator(input_ids.device).manual_seed(kwargs["seed"]) + + # Initialize position_ids tracking if custom positions are provided + current_position_ids = position_ids + + for i in range(max_length): + # For generation we need to handle position_ids specially + # If position_ids were provided for the input, we need to extend them for each new token + if current_position_ids is not None: + # For the next token, we'll need to extend position_ids with the next position + if i > 0: # Only need to extend after the first iteration + # Calculate the next position values based on the last position in each sequence + # This logic may need to be customized based on your specific position_ids encoding + last_positions = current_position_ids[:, -1].unsqueeze(-1) + # Add 1 to get the next position (this assumes sequential positions) + next_positions = last_positions + 1 + # Append to current position_ids + current_position_ids = torch.cat([current_position_ids, next_positions], dim=1) + + # Generate next token + outputs = self.forward( + input_ids=generated_ids, + pixel_values=None, # Don't pass pixel_values again after first token + image_features=vision_output, # Pass pre-extracted features + image_sizes=image_sizes, + position_ids=current_position_ids + ) + + # Get the next token's logits (last token in the sequence) + next_token_logits = outputs[:, -1, :] + + # Apply temperature and top-k if specified + if temperature != 1.0 or top_k is not None: + from scripts.generate._generation import logits_to_probs, multinomial_sample_one + + # Convert logits to probabilities + probs = logits_to_probs(next_token_logits, temperature, top_k) + + # Sample from the distribution + next_token = multinomial_sample_one(probs, rng=rng) + else: + # Greedy decoding + next_token = torch.argmax(next_token_logits, dim=-1, keepdim=True) + + # Concatenate to the generated sequence + generated_ids = torch.cat([generated_ids, next_token], dim=1) + + # Check for EOS token + eos_token_id = kwargs.get("eos_token_id", -1) + if eos_token_id >= 0 and (next_token == eos_token_id).any(): + break + + return generated_ids + + @classmethod + def from_model_args(cls, model_args: ModelArgs) -> "Transformer": + """ + Initialize a Transformer model from a TransformerModelArgs object. + + Args: + model_args (TransformerModelArgs): Model configuration arguments. + + Returns: + Transformer: Transformer model. + + """ + return cls(model_args) diff --git a/torchtitan/models/mistral3/model/modeling_pixtral.py b/torchtitan/models/mistral3/model/modeling_pixtral.py new file mode 100644 index 0000000000..84c877ca5f --- /dev/null +++ b/torchtitan/models/mistral3/model/modeling_pixtral.py @@ -0,0 +1,532 @@ +# coding=utf-8 +# Copyright 2024 Mistral and the HuggingFace Inc. team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +"""PyTorch Pixtral model.""" + +from typing import Optional, Tuple, Union + +import torch +import torch.utils.checkpoint +from torch import nn + +from transformers import PreTrainedModel +from transformers.activations import ACT2FN +from transformers.modeling_outputs import BaseModelOutput +from transformers.utils import ( + add_start_docstrings, + add_start_docstrings_to_model_forward, + logging, +) +from .configuration_pixtral import PixtralVisionConfig + + +logger = logging.get_logger(__name__) + + +def position_ids_in_meshgrid(patch_embeds_list, max_width): + positions = [] + for patch in patch_embeds_list: + height, width = patch.shape[-2:] + mesh = torch.meshgrid(torch.arange(height), torch.arange(width), indexing="ij") + h_grid, v_grid = torch.stack(mesh, dim=-1).reshape(-1, 2).chunk(2, -1) + ids = h_grid * max_width + v_grid + positions.append(ids[:, 0]) + return torch.cat(positions) + + +class PixtralRotaryEmbedding(nn.Module): + """ + The key with pixtral embedding is just that you have a frequency for each pixel positions. + If you have height x width pixels (or embedding pixels), then the frequency used for ROPE + is given by indexing the pre_computed frequency on the width and height. + + What you output is of dimension (batch, height * width, dim) with dim the embed dim. + + This simply means that for each image hidden state, you are going to add + a corresponding positional embedding, based on its index in the grid. + """ + + def __init__(self, config, device=None): + super().__init__() + self.rope_type = "default" + self.dim = config.head_dim + self.base = config.rope_theta + max_patches_per_side = config.image_size // config.patch_size + freqs = 1.0 / (self.base ** (torch.arange(0, self.dim, 2).float() / self.dim)) + + h = torch.arange(max_patches_per_side, device=freqs.device) + w = torch.arange(max_patches_per_side, device=freqs.device) + + freqs_h = torch.outer(h, freqs[::2]).float() + freqs_w = torch.outer(w, freqs[1::2]).float() + inv_freq = torch.cat( + [ + freqs_h[:, None, :].repeat(1, max_patches_per_side, 1), + freqs_w[None, :, :].repeat(max_patches_per_side, 1, 1), + ], + dim=-1, + ).reshape(-1, self.dim // 2) # we reshape to only index on the position indexes, not tuple of indexes + # Different from paper, but it uses a different permutation in order to obtain the same calculation + + # TODO maybe make it torch compatible later on. We can also just slice + self.register_buffer("inv_freq", torch.cat((inv_freq, inv_freq), dim=-1), persistent=False) + + @torch.no_grad() + def forward(self, x, position_ids): + if "dynamic" in self.rope_type: + self._dynamic_frequency_update(position_ids, device=x.device) + + # Core RoPE block + freqs = self.inv_freq[position_ids] + # Force float32 (see https://github.com/huggingface/transformers/pull/29285) + device_type = x.device.type + device_type = device_type if isinstance(device_type, str) and device_type != "mps" else "cpu" + with torch.autocast(device_type=device_type, enabled=False): + emb = freqs + cos = emb.cos() + sin = emb.sin() + return cos.to(dtype=x.dtype), sin.to(dtype=x.dtype) + + def _dynamic_frequency_update(self, position_ids, device): + """ + dynamic RoPE layers should recompute `inv_freq` in the following situations: + 1 - growing beyond the cached sequence length (allow scaling) + 2 - the current sequence length is in the original scale (avoid losing precision with small sequences) + """ + seq_len = torch.max(position_ids) + 1 + if seq_len > self.max_seq_len_cached: # growth + inv_freq, self.attention_scaling = self.rope_init_fn( + self.config, device, seq_len=seq_len, **self.rope_kwargs + ) + self.register_buffer("inv_freq", inv_freq, persistent=False) # TODO joao: may break with compilation + self.max_seq_len_cached = seq_len + + if seq_len < self.original_max_seq_len and self.max_seq_len_cached > self.original_max_seq_len: # reset + self.register_buffer("inv_freq", self.original_inv_freq, persistent=False) + self.max_seq_len_cached = self.original_max_seq_len + + +# Copied from transformers.models.llama.modeling_llama.rotate_half +def rotate_half(x): + """Rotates half the hidden dims of the input.""" + x1 = x[..., : x.shape[-1] // 2] + x2 = x[..., x.shape[-1] // 2 :] + return torch.cat((-x2, x1), dim=-1) + + +def apply_rotary_pos_emb(q, k, cos, sin, position_ids=None, unsqueeze_dim=1): + """Applies Rotary Position Embedding to the query and key tensors. + + Args: + q (`torch.Tensor`): The query tensor. + k (`torch.Tensor`): The key tensor. + cos (`torch.Tensor`): The cosine part of the rotary embedding. + sin (`torch.Tensor`): The sine part of the rotary embedding. + position_ids (`torch.Tensor`, *optional*): + Deprecated and unused. + unsqueeze_dim (`int`, *optional*, defaults to 1): + The 'unsqueeze_dim' argument specifies the dimension along which to unsqueeze cos[position_ids] and + sin[position_ids] so that they can be properly broadcasted to the dimensions of q and k. For example, note + that cos[position_ids] and sin[position_ids] have the shape [batch_size, seq_len, head_dim]. Then, if q and + k have the shape [batch_size, heads, seq_len, head_dim], then setting unsqueeze_dim=1 makes + cos[position_ids] and sin[position_ids] broadcastable to the shapes of q and k. Similarly, if q and k have + the shape [batch_size, seq_len, heads, head_dim], then set unsqueeze_dim=2. + Returns: + `tuple(torch.Tensor)` comprising of the query and key tensors rotated using the Rotary Position Embedding. + """ + cos = cos.unsqueeze(unsqueeze_dim) + sin = sin.unsqueeze(unsqueeze_dim) + q_embed = (q * cos) + (rotate_half(q) * sin) + k_embed = (k * cos) + (rotate_half(k) * sin) + return q_embed, k_embed + + +class PixtralAttention(nn.Module): + """Multi-headed attention from 'Attention Is All You Need' paper""" + + def __init__(self, config): + super().__init__() + self.config = config + self.embed_dim = config.hidden_size + self.num_heads = config.num_attention_heads + self.head_dim = self.embed_dim // self.num_heads + + self.scale = self.head_dim**-0.5 + self.dropout = config.attention_dropout + + self.k_proj = nn.Linear(self.embed_dim, self.embed_dim, bias=False) + self.v_proj = nn.Linear(self.embed_dim, self.embed_dim, bias=False) + self.q_proj = nn.Linear(self.embed_dim, self.embed_dim, bias=False) + self.o_proj = nn.Linear(self.embed_dim, self.embed_dim, bias=False) + + def forward( + self, + hidden_states: torch.Tensor, + attention_mask: Optional[torch.Tensor] = None, + position_embeddings: Optional[Tuple[torch.Tensor, torch.Tensor]] = None, + output_attentions: Optional[bool] = False, + ) -> Tuple[torch.Tensor, Optional[torch.Tensor]]: + """Input shape: Batch x Time x Channel""" + + batch_size, patches, _ = hidden_states.size() + + query_states = self.q_proj(hidden_states) + key_states = self.k_proj(hidden_states) + value_states = self.v_proj(hidden_states) + + query_states = query_states.view(batch_size, patches, self.num_heads, self.head_dim).transpose(1, 2) + key_states = key_states.view(batch_size, patches, self.num_heads, self.head_dim).transpose(1, 2) + value_states = value_states.view(batch_size, patches, self.num_heads, self.head_dim).transpose(1, 2) + + cos, sin = position_embeddings + query_states, key_states = apply_rotary_pos_emb(query_states, key_states, cos, sin, unsqueeze_dim=0) + + attn_weights = torch.matmul(query_states, key_states.transpose(2, 3)) * self.scale + + if attention_mask is not None: + attn_weights = attn_weights + attention_mask + + # upcast attention to fp32 + attn_weights = nn.functional.softmax(attn_weights, dim=-1, dtype=torch.float32).to(query_states.dtype) + attn_weights = nn.functional.dropout(attn_weights, p=self.dropout, training=self.training) + attn_output = torch.matmul(attn_weights, value_states) + + attn_output = attn_output.transpose(1, 2).contiguous() + attn_output = attn_output.reshape(batch_size, patches, -1) + + attn_output = self.o_proj(attn_output) + + return attn_output, attn_weights + + +# Copied from transformers.models.mistral.modeling_mistral.MistralMLP with Mistral->Pixtral +class PixtralMLP(nn.Module): + def __init__(self, config): + super().__init__() + self.config = config + self.hidden_size = config.hidden_size + self.intermediate_size = config.intermediate_size + self.gate_proj = nn.Linear(self.hidden_size, self.intermediate_size, bias=False) + self.up_proj = nn.Linear(self.hidden_size, self.intermediate_size, bias=False) + self.down_proj = nn.Linear(self.intermediate_size, self.hidden_size, bias=False) + self.act_fn = ACT2FN[config.hidden_act] + + def forward(self, x): + down_proj = self.down_proj(self.act_fn(self.gate_proj(x)) * self.up_proj(x)) + return down_proj + + +# Copied from transformers.models.llama.modeling_llama.LlamaRMSNorm with Llama->Pixtral +class PixtralRMSNorm(nn.Module): + def __init__(self, hidden_size, eps=1e-6): + """ + PixtralRMSNorm is equivalent to T5LayerNorm + """ + super().__init__() + self.weight = nn.Parameter(torch.ones(hidden_size)) + self.variance_epsilon = eps + + def forward(self, hidden_states): + input_dtype = hidden_states.dtype + hidden_states = hidden_states.to(torch.float32) + variance = hidden_states.pow(2).mean(-1, keepdim=True) + hidden_states = hidden_states * torch.rsqrt(variance + self.variance_epsilon) + return self.weight * hidden_states.to(input_dtype) + + def extra_repr(self): + return f"{tuple(self.weight.shape)}, eps={self.variance_epsilon}" + + +class PixtralAttentionLayer(nn.Module): + def __init__(self, config): + super().__init__() + self.attention_norm = PixtralRMSNorm(config.hidden_size, eps=1e-5) + self.feed_forward = PixtralMLP(config) + self.attention = PixtralAttention(config) + self.ffn_norm = PixtralRMSNorm(config.hidden_size, eps=1e-5) + + def forward( + self, + hidden_states: torch.Tensor, + attention_mask: torch.Tensor, + position_embeddings: Optional[Tuple[torch.Tensor, torch.Tensor]] = None, + output_attentions: Optional[bool] = None, + ) -> Tuple[torch.FloatTensor]: + """ + Args: + hidden_states (`torch.FloatTensor`): + Input to the layer of shape `(batch, seq_len, embed_dim)`. + attention_mask (`torch.FloatTensor`): + Attention mask of shape `(batch, 1, q_len, k_v_seq_len)` where padding elements are indicated by very large negative values. + output_attentions (`bool`, *optional*, defaults to `False`): + Whether or not to return the attentions tensors of all attention layers. See `attentions` under + returned tensors for more detail. + """ + residual = hidden_states + + hidden_states = self.attention_norm(hidden_states) + hidden_states, attn_weights = self.attention( + hidden_states=hidden_states, + attention_mask=attention_mask, + position_embeddings=position_embeddings, + output_attentions=output_attentions, + ) + hidden_states = residual + hidden_states + + residual = hidden_states + hidden_states = self.ffn_norm(hidden_states) + hidden_states = self.feed_forward(hidden_states) + hidden_states = residual + hidden_states + + outputs = (hidden_states,) + + if output_attentions: + outputs += (attn_weights,) + return outputs + + +class PixtralTransformer(nn.Module): + def __init__(self, config): + super().__init__() + self.config = config + self.layers = torch.nn.ModuleList() + for _ in range(config.num_hidden_layers): + self.layers.append(PixtralAttentionLayer(config)) + self.gradient_checkpointing = False + + def forward( + self, + inputs_embeds, + attention_mask: Optional[torch.Tensor] = None, + position_embeddings: Optional[Tuple[torch.Tensor, torch.Tensor]] = None, + output_attentions: Optional[bool] = None, + output_hidden_states: Optional[bool] = None, + return_dict: Optional[bool] = None, + ) -> Union[Tuple, BaseModelOutput]: + r""" + Args: + inputs_embeds (`torch.FloatTensor` of shape `(batch_size, sequence_length, hidden_size)`): + Embeddings which serve as input to the Transformer. + attention_mask (`torch.Tensor` of shape `(batch_size, sequence_length)`, *optional*): + Mask to avoid performing attention on padding token indices. Mask values selected in `[0, 1]`: + + - 1 for tokens that are **not masked**, + - 0 for tokens that are **masked**. + + [What are attention masks?](../glossary#attention-mask) + output_attentions (`bool`, *optional*): + Whether or not to return the attentions tensors of all attention layers. See `attentions` under + returned tensors for more detail. + output_hidden_states (`bool`, *optional*): + Whether or not to return the hidden states of all layers. See `hidden_states` under returned tensors + for more detail. + return_dict (`bool`, *optional*): + Whether or not to return a [`~utils.ModelOutput`] instead of a plain tuple. + """ + output_attentions = output_attentions if output_attentions is not None else self.config.output_attentions + output_hidden_states = ( + output_hidden_states if output_hidden_states is not None else self.config.output_hidden_states + ) + return_dict = return_dict if return_dict is not None else self.config.use_return_dict + + encoder_states = () if output_hidden_states else None + all_attentions = () if output_attentions else None + + hidden_states = inputs_embeds + for encoder_layer in self.layers: + if output_hidden_states: + encoder_states = encoder_states + (hidden_states,) + if self.gradient_checkpointing and self.training: + layer_outputs = self._gradient_checkpointing_func( + encoder_layer.__call__, + hidden_states, + attention_mask, + position_embeddings, + output_attentions, + ) + else: + layer_outputs = encoder_layer( + hidden_states, + attention_mask, + position_embeddings=position_embeddings, + output_attentions=output_attentions, + ) + + hidden_states = layer_outputs[0] + + if output_attentions: + all_attentions = all_attentions + (layer_outputs[1],) + + if output_hidden_states: + encoder_states = encoder_states + (hidden_states,) + + if not return_dict: + return tuple(v for v in [hidden_states, encoder_states, all_attentions] if v is not None) + return BaseModelOutput( + last_hidden_state=hidden_states, hidden_states=encoder_states, attentions=all_attentions + ) + + +PIXTRAL_START_DOCSTRING = r""" + This model inherits from [`PreTrainedModel`]. Check the superclass documentation for the generic methods the + library implements for all its model (such as downloading or saving, resizing the input embeddings, pruning heads + etc.) + + This model is also a PyTorch [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) subclass. + Use it as a regular PyTorch Module and refer to the PyTorch documentation for all matter related to general usage + and behavior. + + Parameters: + config ([`PixtralVisionConfig`]): + Model configuration class with all the parameters of the vision encoder. Initializing with a config file does not + load the weights associated with the model, only the configuration. Check out the + [`~PreTrainedModel.from_pretrained`] method to load the model weights. +""" + + +class PixtralPreTrainedModel(PreTrainedModel): + config_class = PixtralVisionConfig + base_model_prefix = "model" + main_input_name = "pixel_values" + supports_gradient_checkpointing = True + _no_split_modules = ["PixtralAttentionLayer"] + + def _init_weights(self, module): + std = ( + self.config.initializer_range + if hasattr(self.config, "initializer_range") + else self.config.initializer_range + ) + + if isinstance(module, (nn.Linear, nn.Conv2d)): + module.weight.data.normal_(mean=0.0, std=std) + if module.bias is not None: + module.bias.data.zero_() + elif isinstance(module, nn.Embedding): + module.weight.data.normal_(mean=0.0, std=std) + if module.padding_idx is not None: + module.weight.data[module.padding_idx].zero_() + + +PIXTRAL_INPUTS_DOCSTRING = r""" + Args: + pixel_values (`torch.FloatTensor` of shape `(batch_size, num_channels, height, width)`): + Pixel values. Pixel values can be obtained using [`AutoImageProcessor`]. See [`AutoImageProcessor.__call__`] + for details. + image_sizes (`torch.LongTensor` of shape `(batch_size, 2)`, *optional*): + The sizes of the images in the batch, being (height, width) for each image. + output_attentions (`bool`, *optional*): + Whether or not to return the attentions tensors of all attention layers. See `attentions` under returned + tensors for more detail. + output_hidden_states (`bool`, *optional*): + Whether or not to return the hidden states of all layers. See `hidden_states` under returned tensors for + more detail. + return_dict (`bool`, *optional*): + Whether or not to return a [`~utils.ModelOutput`] instead of a plain tuple. +""" + + +def generate_block_attention_mask(patch_embeds_list, tensor): + dtype = tensor.dtype + device = tensor.device + seq_len = tensor.shape[1] + d_min = torch.finfo(dtype).min + causal_mask = torch.full((seq_len, seq_len), fill_value=d_min, dtype=dtype, device=device) + + block_end_idx = torch.tensor(patch_embeds_list).cumsum(-1) + block_start_idx = torch.tensor([0] + patch_embeds_list[:-1]).cumsum(-1) + for start, end in zip(block_start_idx, block_end_idx): + causal_mask[start:end, start:end] = 0 + + causal_mask = causal_mask[None, None, :, :].expand(tensor.shape[0], 1, -1, -1) + return causal_mask + + +@add_start_docstrings( + "The bare Pixtral vision encoder outputting raw hidden-states without any specific head on top.", + PIXTRAL_START_DOCSTRING, +) +class PixtralVisionModel(PixtralPreTrainedModel): + base_model_prefix = "vision_encoder" + + def __init__(self, config): + super().__init__(config) + self.config = config + self.patch_conv = nn.Conv2d( + in_channels=config.num_channels, + out_channels=config.hidden_size, + kernel_size=config.patch_size, + stride=config.patch_size, + bias=False, + ) + self.patch_size = config.patch_size + self.ln_pre = PixtralRMSNorm(config.hidden_size, eps=1e-5) + self.transformer = PixtralTransformer(config) + self.patch_positional_embedding = PixtralRotaryEmbedding(config) + + self.post_init() + + def get_input_embeddings(self): + return self.patch_conv + + @add_start_docstrings_to_model_forward(PIXTRAL_INPUTS_DOCSTRING) + def forward( + self, + pixel_values: torch.Tensor, + image_sizes: torch.Tensor, + output_hidden_states: Optional[bool] = None, + output_attentions: Optional[bool] = None, + return_dict: Optional[bool] = None, + *args, + **kwargs, + ) -> Union[Tuple, BaseModelOutput]: + """ + Returns: + pixel_values: tensor of token features for + all tokens of all images of shape (N_toks, D) + """ + # pass images through initial convolution independently + patch_embeds = self.patch_conv(pixel_values) + patch_embeds_list = [ + embed[..., : (size[0] // self.patch_size), : (size[1] // self.patch_size)] + for embed, size in zip(patch_embeds, image_sizes) + ] + + # flatten to a single sequence + patch_embeds = torch.cat([p.flatten(1).T for p in patch_embeds_list], dim=0).unsqueeze(0) + patch_embeds = self.ln_pre(patch_embeds) + + # positional embeddings + position_ids = position_ids_in_meshgrid( + patch_embeds_list, max_width=self.config.image_size // self.config.patch_size + ) + position_embeddings = self.patch_positional_embedding(patch_embeds, position_ids) + + attention_mask = generate_block_attention_mask( + [p.shape[-2] * p.shape[-1] for p in patch_embeds_list], patch_embeds + ) + + out = self.transformer( + patch_embeds, + attention_mask=attention_mask, + position_embeddings=position_embeddings, + output_hidden_states=output_hidden_states, + output_attentions=output_attentions, + return_dict=return_dict, + ) + + return out + + +__all__ = ["PixtralVisionModel", "PixtralPreTrainedModel"] diff --git a/torchtitan/models/mistral3/train_configs/mistral24b_sft.toml b/torchtitan/models/mistral3/train_configs/mistral24b_sft.toml new file mode 100644 index 0000000000..e7131fa559 --- /dev/null +++ b/torchtitan/models/mistral3/train_configs/mistral24b_sft.toml @@ -0,0 +1,70 @@ +# torchtitan Config.toml +# NOTE: this toml config is a preset for 8 H100 GPUs. + +[job] +dump_folder = "./24b_test_2" +description = "Mistral 24B training" + +[profiling] +enable_profiling = false +save_traces_folder = "profile_trace" +profile_freq = 100 + +[metrics] +log_freq = 1 +enable_tensorboard = false +save_tb_folder = "tb" +enable_wandb = true +wandb_project = "artem_deephermes_24b_simpletrainer" +seed = 42 + +[model] +name = "mistral3" +flavor = "24B" +norm_type = "rmsnorm" # layernorm / np_layernorm / rmsnorm +tokenizer_path = "mistralai/Mistral-Small-3.1-24B-Instruct-2503" +#tokenizer_path = "/mnt/weka/home/artem/new2/simple-trainer/mistral-2503-base-hf" +# converters = "float8" + +[optimizer] +name = "AdamW" +lr = 1e-6 + +[training] +base_model_dir = "/mnt/weka/home/artem/new2/simple-trainer/mistral-2503-base-dcp" +train_type = "sft" +seed=42 +batch_size = 2 +seq_len = 16384 +gradient_accumulation_steps = 1 +warmup_steps = 200 # lr scheduler warm up +lr_ramp_type = "cosine" +lr_ramp_end_lr_ratio = 0.0 +max_norm = 1.0 # grad norm clipping +steps = 700 +data_parallel_replicate_degree = 1 +data_parallel_shard_degree = -1 +tensor_parallel_degree = 8 +compile = false +dataset = "metamath" + +[experimental] +context_parallel_degree = 1 +pipeline_parallel_degree = 1 + +[checkpoint] +enable_checkpoint = true +folder = "checkpoint" +interval_type = "steps" +interval = 72000 +model_weights_only = false +export_dtype = "float32" +async_mode = "disabled" # ["disabled", "async", "async_with_pinned_mem"] + +[activation_checkpoint] +mode = 'full' # ['none', 'selective', 'full'] +#selective_ac_option = 'op' # 'int' = ac every positive int layer or 'op', ac based on ops policy + +[float8] +enable_fsdp_float8_all_gather = true +precompute_float8_dynamic_scale_for_fsdp = true diff --git a/torchtitan/models/mistral3/train_configs/mistral24b_sft_vision b/torchtitan/models/mistral3/train_configs/mistral24b_sft_vision new file mode 100644 index 0000000000..d2f7cc9850 --- /dev/null +++ b/torchtitan/models/mistral3/train_configs/mistral24b_sft_vision @@ -0,0 +1,71 @@ +# torchtitan Config.toml +# NOTE: this toml config is a preset for 8 H100 GPUs. + +[job] +dump_folder = "./vision-test" +description = "Mistral 24B training" + +[profiling] +enable_profiling = false +save_traces_folder = "profile_trace" +profile_freq = 100 + +[metrics] +log_freq = 1 +enable_tensorboard = false +save_tb_folder = "tb" +enable_wandb = true +wandb_project = "artem_deephermes_24b_simpletrainer" +seed = 42 + +[model] +name = "mistral3" +flavor = "24B" +norm_type = "rmsnorm" # layernorm / np_layernorm / rmsnorm +#tokenizer_path = "mistralai/Mistral-Small-3.1-24B-Instruct-2503" +tokenizer_path = "/mnt/weka/home/artem/new_pr_2/simple-trainer/mistral-2503-instruct-hf" +#tokenizer_path = "/mnt/weka/home/artem/new2/simple-trainer/mistral-2503-base-hf" +# converters = "float8" + +[optimizer] +name = "AdamW" +lr = 1e-6 + +[training] +base_model_dir = "/mnt/weka/home/artem/new2/simple-trainer/mistral-dcp-correct" +train_type = "sft_vision" +seed=42 +batch_size = 1 +seq_len = 12000 +gradient_accumulation_steps = 1 +warmup_steps = 200 # lr scheduler warm up +lr_ramp_type = "cosine" +lr_ramp_end_lr_ratio = 0.0 +max_norm = 1.0 # grad norm clipping +steps = 700 +data_parallel_replicate_degree = 1 +data_parallel_shard_degree = -1 +tensor_parallel_degree = 8 +compile = false +dataset = "vision" + +[experimental] +context_parallel_degree = 1 +pipeline_parallel_degree = 1 + +[checkpoint] +enable_checkpoint = true +folder = "checkpoint" +interval_type = "steps" +interval = 72000 +model_weights_only = false +export_dtype = "float32" +async_mode = "disabled" # ["disabled", "async", "async_with_pinned_mem"] + +[activation_checkpoint] +mode = 'full' # ['none', 'selective', 'full'] +#selective_ac_option = 'op' # 'int' = ac every positive int layer or 'op', ac based on ops policy + +[float8] +enable_fsdp_float8_all_gather = true +precompute_float8_dynamic_scale_for_fsdp = true From d0c4cbaca73348e7d95feee06a1f90c9911afc92 Mon Sep 17 00:00:00 2001 From: Artem Yatsenko Date: Wed, 23 Jul 2025 22:40:53 +0000 Subject: [PATCH 02/28] fix imports --- torchtitan/models/mistral3/__init__.py | 25 ++++++------------- .../models/mistral3/infra/parallelize.py | 14 ++++++----- torchtitan/models/mistral3/infra/pipeline.py | 8 +++--- torchtitan/models/mistral3/model/model.py | 12 ++++----- 4 files changed, 25 insertions(+), 34 deletions(-) diff --git a/torchtitan/models/mistral3/__init__.py b/torchtitan/models/mistral3/__init__.py index 58cb3b954a..6337a7b699 100644 --- a/torchtitan/models/mistral3/__init__.py +++ b/torchtitan/models/mistral3/__init__.py @@ -1,22 +1,13 @@ # Copyright (c) 2025, Anthropic Research Labs # All rights reserved. -from torchtitan.datasets import build_hf_dataloader -from torchtitan.datasets.tokenizer import TikTokenizer -from torchtitan.models.mistral3.model import ( - ModelArgs, - Mistral3RMSNorm, - Mistral3PatchMerger, - Mistral3MultiModalProjector, - VisionEncoder, - MultimodalDecoder, - Mistral3ForConditionalGeneration, -) -from torchtitan.optimizer import build_lr_schedulers, build_optimizers -from torchtitan.train_spec import register_train_spec, TrainSpec +from torchtitan.datasets.hf_datasets import build_hf_dataloader -from .parallelize_mistral3 import parallelize_mistral3 -from .pipeline_mistral3 import pipeline_mistral3 +from .model.configuration_pixtral import PixtralVisionConfig +from .model.model import Mistral3ForConditionalGeneration, ModelArgs, Mistral3RMSNorm, Mistral3PatchMerger, Mistral3MultiModalProjector, VisionEncoder, MultimodalDecoder + +from .infra.parallelize import parallelize_mistral3 +from .infra.pipeline import pipeline_mistral3 from torchtitan.components.loss import build_cross_entropy_loss @@ -24,7 +15,7 @@ from torchtitan.components.optimizer import build_optimizers from torchtitan.components.tokenizer import build_hf_tokenizer from torchtitan.components.validate import build_validator -from torchtitan.datasets.hf_datasets import build_hf_dataloader +#from torchtitan.datasets.hf_datasets import build_hf_dataloader from torchtitan.protocols.train_spec import register_train_spec, TrainSpec from .infra.parallelize import parallelize_mistral3 @@ -88,13 +79,11 @@ register_train_spec( TrainSpec( name="mistral3", - cls=Mistral3ForConditionalGeneration, config=mistral3_configs, parallelize_fn=parallelize_mistral3, pipelining_fn=pipeline_mistral3, build_optimizers_fn=build_optimizers, build_lr_schedulers_fn=build_lr_schedulers, build_dataloader_fn=build_hf_dataloader, - tokenizer_cls=TikTokenizer, ) ) \ No newline at end of file diff --git a/torchtitan/models/mistral3/infra/parallelize.py b/torchtitan/models/mistral3/infra/parallelize.py index ef27a16502..5131eacbcc 100644 --- a/torchtitan/models/mistral3/infra/parallelize.py +++ b/torchtitan/models/mistral3/infra/parallelize.py @@ -32,8 +32,8 @@ ) from torchtitan.config_manager import JobConfig, TORCH_DTYPE_MAP -from torchtitan.logging import logger -from torchtitan.parallelisms import ParallelDims +#from torchtitan.logging import logger +from torchtitan.distributed import ParallelDims def parallelize_mistral3( @@ -89,6 +89,7 @@ def parallelize_mistral3( cpu_offload=job_config.training.enable_cpu_offload, reshard_after_forward_policy=job_config.training.fsdp_reshard_after_forward, ) + """ if parallel_dims.dp_replicate_enabled: logger.info("Applied HSDP to the model") @@ -100,6 +101,7 @@ def parallelize_mistral3( if job_config.training.enable_cpu_offload: logger.info("Applied CPU Offloading to the model") + """ elif parallel_dims.dp_replicate_enabled: if world_mesh.ndim > 1: raise RuntimeError("DDP has not supported > 1D parallelism") @@ -202,10 +204,10 @@ def apply_tp( torch._inductor.config._micro_pipeline_tp = True enable_symm_mem_for_group(tp_mesh.get_group().group_name) - logger.info( - f"Applied {'Float8 ' if enable_float8 else ''}{'Async ' if enable_async_tp else ''}" - "Tensor Parallelism to the model" - ) + #logger.info( + # f"Applied {'Float8 ' if enable_float8 else ''}{'Async ' if enable_async_tp else ''}" + # "Tensor Parallelism to the model" + #) # for selective op activation checkpointing diff --git a/torchtitan/models/mistral3/infra/pipeline.py b/torchtitan/models/mistral3/infra/pipeline.py index 463b5171a4..29d39cbf3d 100644 --- a/torchtitan/models/mistral3/infra/pipeline.py +++ b/torchtitan/models/mistral3/infra/pipeline.py @@ -16,15 +16,15 @@ from torch.distributed.pipelining.schedules import _PipelineSchedule, get_schedule_class from torchtitan.config_manager import JobConfig -from torchtitan.logging import logger -from torchtitan.parallelisms import ParallelDims -from torchtitan.parallelisms.pipeline import ( +from torchtitan.tools.logging import logger +from torchtitan.distributed import ParallelDims +from torchtitan.distributed.pipeline import ( build_pipeline_schedule, generate_split_points, stage_ids_this_rank, ) -from .model import ModelArgs +from ..model.model import ModelArgs DeviceType = Union[int, str, torch.device] diff --git a/torchtitan/models/mistral3/model/model.py b/torchtitan/models/mistral3/model/model.py index 2a97bcc08a..2b4cc3bf6d 100644 --- a/torchtitan/models/mistral3/model/model.py +++ b/torchtitan/models/mistral3/model/model.py @@ -6,13 +6,12 @@ import torch.nn as nn import torch.nn.functional as F -from torchtitan.models.norms import RMSNorm -from torchtitan.models.norms import build_norm -from time import sleep +#from torchtitan.models.norms import build_norm -from torchtitan.logging import logger -from torchtitan.train_spec import ModelProtocol +#from torchtitan.logging import logger +#from torchtitan.train_spec import ModelProtocol +from torchtitan.protocols.train_spec import ModelProtocol from torchtitan.models.attention import build_attention, init_attention_mask from torch.distributed._tensor import Replicate, Shard, distribute_tensor @@ -142,7 +141,8 @@ def forward(self, image_features: torch.Tensor, image_sizes: torch.Tensor) -> to class Mistral3MultiModalProjector(nn.Module): def __init__(self, config: ModelArgs): super().__init__() - self.norm = build_norm("rmsnorm", config.vision_embed_dim, config.norm_eps) + ##self.norm = build_norm("rmsnorm", config.vision_embed_dim, config.norm_eps) + self.norm = nn.RMSNorm(config.vision_embed_dim, eps=config.norm_eps) self.patch_merger = Mistral3PatchMerger(config) # We have hidden_size * the number of vision feature layers num_feature_layers = 1 if isinstance(config.vision_feature_layer, int) else len(config.vision_feature_layer) From 32c18ccd43d2fdc2eb307090bb9ec6805d6cc3d8 Mon Sep 17 00:00:00 2001 From: Artem Yatsenko Date: Sat, 26 Jul 2025 01:05:46 +0000 Subject: [PATCH 03/28] jul 24 changes --- torchtitan/models/mistral3/__init__.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/torchtitan/models/mistral3/__init__.py b/torchtitan/models/mistral3/__init__.py index 6337a7b699..3dd81cb981 100644 --- a/torchtitan/models/mistral3/__init__.py +++ b/torchtitan/models/mistral3/__init__.py @@ -79,8 +79,12 @@ register_train_spec( TrainSpec( name="mistral3", - config=mistral3_configs, parallelize_fn=parallelize_mistral3, + model_cls=Mistral3ForConditionalGeneration, + model_args=mistral3_configs, + build_tokenizer_fn=build_hf_tokenizer, + build_loss_fn=build_cross_entropy_loss, + build_validator_fn=build_validator, pipelining_fn=pipeline_mistral3, build_optimizers_fn=build_optimizers, build_lr_schedulers_fn=build_lr_schedulers, From 3fb558c41e614b6dacd02b7eb8f1cb0061470c60 Mon Sep 17 00:00:00 2001 From: Artem Yatsenko Date: Sat, 26 Jul 2025 02:41:28 +0000 Subject: [PATCH 04/28] works but ooms? --- torchtitan/models/mistral3/__init__.py | 35 +++++++++ .../models/mistral3/infra/parallelize.py | 34 ++++++-- torchtitan/models/mistral3/model/model.py | 77 ++++++++++++++++--- .../train_configs/mistral24b_sft.toml | 24 +++--- 4 files changed, 141 insertions(+), 29 deletions(-) diff --git a/torchtitan/models/mistral3/__init__.py b/torchtitan/models/mistral3/__init__.py index 3dd81cb981..962995616a 100644 --- a/torchtitan/models/mistral3/__init__.py +++ b/torchtitan/models/mistral3/__init__.py @@ -73,6 +73,41 @@ ), } +mistral3_configs = { + "Test": ModelArgs( + # vision encoder part + vision_embed_dim=1024, + vision_num_layers=24, + vision_num_heads=16, + vision_feature_layer=-2, + patch_size=14, + image_size=1540, + in_channels=3, + spatial_merge_size=2, + + # projection part + num_layers_projection=8, + projector_hidden_act="gelu", + multimodal_projector_bias=False, + + # decoder part + decoder_embed_dim=5120, + decoder_num_layers=2, + decoder_num_heads=32, + decoder_num_kv_heads=8, + fusion_interval=8, + image_token_index=10, + + # common part + vocab_size=131072, + multiple_of=256, + ffn_dim_multiplier=None, + norm_eps=1e-5, + rope_theta=1000000000.0, + max_seq_len=131072, + ), +} + # Register the model diff --git a/torchtitan/models/mistral3/infra/parallelize.py b/torchtitan/models/mistral3/infra/parallelize.py index 5131eacbcc..12b8a8594d 100644 --- a/torchtitan/models/mistral3/infra/parallelize.py +++ b/torchtitan/models/mistral3/infra/parallelize.py @@ -33,12 +33,13 @@ from torchtitan.config_manager import JobConfig, TORCH_DTYPE_MAP #from torchtitan.logging import logger + +from torchtitan.tools.logging import logger from torchtitan.distributed import ParallelDims def parallelize_mistral3( model: nn.Module, - world_mesh: DeviceMesh, parallel_dims: ParallelDims, job_config: JobConfig, ): @@ -48,8 +49,21 @@ def parallelize_mistral3( NOTE: The passed-in model preferably should be on meta device. Otherwise, the model must fit on GPU or CPU memory. + """ + world_mesh = parallel_dims.world_mesh + # TODO: TP currently cannot handle uneven seq_len because we set + # `use_local_output=True` to use plain Tensors for legacy reasons. + # Need to revisit this. + assert ( + job_config.training.seq_len % parallel_dims.seq_len_divisor == 0 + ), f""" + Sequence length {job_config.training.seq_len} must be divisible by the product of TP degree + ({parallel_dims.tp}) and 2 * CP degree ({parallel_dims.cp}). + """ + + if parallel_dims.tp_enabled: if ( job_config.experimental.enable_async_tensor_parallel @@ -57,11 +71,21 @@ def parallelize_mistral3( ): raise RuntimeError("Async TP requires --training.compile") enable_float8_linear = "float8" in job_config.model.converters + float8_is_rowwise = job_config.float8.recipe_name in ( + "rowwise", + "rowwise_with_gw_hp", + ) + + # For now, float8 all-gather with TP is only supported for tensorwise + # float8 scaling recipes. For rowwise recipes, we use regular TP and + # all-gather happens in high precision. + enable_float8_tensorwise_tp = enable_float8_linear and not float8_is_rowwise + apply_tp( model, world_mesh["tp"], loss_parallel=parallel_dims.loss_parallel_enabled, - enable_float8=enable_float8_linear, + enable_float8=enable_float8_tensorwise_tp, enable_async_tp=job_config.experimental.enable_async_tensor_parallel, ) @@ -87,9 +111,8 @@ def parallelize_mistral3( reduce_dtype=TORCH_DTYPE_MAP[job_config.training.mixed_precision_reduce], pp_enabled=parallel_dims.pp_enabled, cpu_offload=job_config.training.enable_cpu_offload, - reshard_after_forward_policy=job_config.training.fsdp_reshard_after_forward, + reshard_after_forward_policy=job_config.parallelism.fsdp_reshard_after_forward, ) - """ if parallel_dims.dp_replicate_enabled: logger.info("Applied HSDP to the model") @@ -101,7 +124,7 @@ def parallelize_mistral3( if job_config.training.enable_cpu_offload: logger.info("Applied CPU Offloading to the model") - """ + elif parallel_dims.dp_replicate_enabled: if world_mesh.ndim > 1: raise RuntimeError("DDP has not supported > 1D parallelism") @@ -111,6 +134,7 @@ def parallelize_mistral3( enable_compile=job_config.training.compile, enable_compiled_autograd=job_config.experimental.enable_compiled_autograd, ) + return model def apply_tp( diff --git a/torchtitan/models/mistral3/model/model.py b/torchtitan/models/mistral3/model/model.py index 2b4cc3bf6d..19d3cfd577 100644 --- a/torchtitan/models/mistral3/model/model.py +++ b/torchtitan/models/mistral3/model/model.py @@ -7,16 +7,18 @@ import torch.nn.functional as F -#from torchtitan.models.norms import build_norm - #from torchtitan.logging import logger #from torchtitan.train_spec import ModelProtocol from torchtitan.protocols.train_spec import ModelProtocol from torchtitan.models.attention import build_attention, init_attention_mask from torch.distributed._tensor import Replicate, Shard, distribute_tensor +from torchtitan.protocols.train_spec import BaseModelArgs +from torchtitan.components.tokenizer import BaseTokenizer +from torchtitan.config_manager import JobConfig + @dataclass -class ModelArgs: +class ModelArgs(BaseModelArgs): # vision encoder part vision_embed_dim: int = 1024 vision_num_layers: int = 24 @@ -57,6 +59,50 @@ class ModelArgs: dim: int = 4096 + def update_from_config( + self, job_config: JobConfig, tokenizer: BaseTokenizer + ) -> None: + self.vocab_size = tokenizer.get_vocab_size() + self.max_seq_len = job_config.training.seq_len + self.eos_id = tokenizer.eos_id + + if job_config.activation_checkpoint.mode == "selective" and self.use_flex_attn: + raise ValueError( + "FlexAttention is not compatible with selective AC yet. " + "See https://github.com/pytorch/pytorch/issues/147879" + ) + + if job_config.parallelism.context_parallel_degree > 1 and self.use_flex_attn: + raise ValueError( + "FlexAttention is not compatible with CP yet. " + "We are still working on this." + ) + + def get_nparams_and_flops(self, model: nn.Module, seq_len: int) -> tuple[int, int]: + nparams = sum(p.numel() for p in model.parameters()) + nparams_embedding = sum( + sum(p.numel() for p in m.parameters()) + for m in model.children() + if isinstance(m, nn.Embedding) + ) + + l, h, q, t = ( + self.n_layers, + self.n_heads, + self.dim // self.n_heads, + seq_len, + ) + # Reasoning behind the factor of 12 for the self-attention part of the formula: + # 1. each self-attention has 2 matmul in the forward and 4 in the backward (6) + # 2. the flash attention does 1 more matmul recomputation in the backward + # but recomputation should not be counted in calculating MFU (+0) + # 3. each matmul performs 1 multiplication and 1 addition (*2) + # 4. we follow the convention and do not account for sparsity in causal attention + num_flops_per_token = 6 * (nparams - nparams_embedding) + 12 * l * h * q * t + + return nparams, num_flops_per_token + + class Mistral3RMSNorm(nn.Module): def __init__(self, hidden_size, eps=1e-6): """ @@ -480,7 +526,8 @@ def __init__( ): super().__init__() self.attn = SelfAttention(config, is_vision=True) - self.ln_attn = build_norm("rmsnorm", config.vision_embed_dim, config.norm_eps) + self.ln_attn = nn.LayerNorm(config.vision_embed_dim, eps=config.norm_eps) + #self.ln_attn = build_norm("rmsnorm", config.vision_embed_dim, config.norm_eps) self.mlp = FeedForward( dim=config.vision_embed_dim, hidden_dim=4 * config.vision_embed_dim, @@ -488,7 +535,8 @@ def __init__( ffn_dim_multiplier=config.ffn_dim_multiplier, activation=config.activation, ) - self.ln_mlp = build_norm("rmsnorm", config.vision_embed_dim, config.norm_eps) + #self.ln_mlp = build_norm("rmsnorm", config.vision_embed_dim, config.norm_eps) + self.ln_mlp = nn.LayerNorm(config.vision_embed_dim, eps=config.norm_eps) self.attn_scale = attn_scale or nn.Identity() self.mlp_scale = mlp_scale or nn.Identity() @@ -509,14 +557,16 @@ def __init__( ): super().__init__() self.attn = SelfAttention(config, is_vision=False) - self.ln_attn = build_norm("rmsnorm", config.decoder_embed_dim, config.norm_eps) + #self.ln_attn = build_norm("rmsnorm", config.decoder_embed_dim, config.norm_eps) + self.ln_attn = Mistral3RMSNorm(config.decoder_embed_dim, config.norm_eps) self.mlp = FeedForwardForDecoder( dim=config.decoder_embed_dim, hidden_dim=4 * config.decoder_embed_dim, multiple_of=config.multiple_of, ffn_dim_multiplier=config.ffn_dim_multiplier, ) - self.ln_mlp = build_norm("rmsnorm", config.decoder_embed_dim, config.norm_eps) + #self.ln_mlp = build_norm("rmsnorm", config.decoder_embed_dim, config.norm_eps) + self.ln_mlp = Mistral3RMSNorm(config.decoder_embed_dim, config.norm_eps) def forward( self, @@ -636,9 +686,9 @@ def __init__(self, config: ModelArgs): self.layers[str(idx)] = decoder_layer self.tok_embeddings = nn.Embedding(131072, config.decoder_embed_dim) - self.norm = build_norm( - config.norm_type, dim=config.decoder_embed_dim, eps=config.norm_eps - ) + #self.norm = build_norm( + # config.norm_type, dim=config.decoder_embed_dim, eps=config.norm_eps + self.norm=nn.LayerNorm(config.decoder_embed_dim, eps=config.norm_eps) self.output = nn.Linear( config.decoder_embed_dim, 131072, bias=False ) @@ -790,9 +840,14 @@ def forward( device: Optional[Any] = None, vision_tower: Optional[Any] = None, ): + + + init_attention_mask(input_ids, eos_id=self.config.eos_id) + + + if not self.vision_model_initialized: from transformers import Mistral3ForConditionalGeneration as Mistral3Model - from accelerate import init_empty_weights, load_checkpoint_and_dispatch full = Mistral3Model.from_pretrained( "mistralai/Mistral-Small-3.1-24B-Instruct-2503", trust_remote_code=True, device_map="auto", torch_dtype=torch.float16 diff --git a/torchtitan/models/mistral3/train_configs/mistral24b_sft.toml b/torchtitan/models/mistral3/train_configs/mistral24b_sft.toml index e7131fa559..47389aa71f 100644 --- a/torchtitan/models/mistral3/train_configs/mistral24b_sft.toml +++ b/torchtitan/models/mistral3/train_configs/mistral24b_sft.toml @@ -20,9 +20,9 @@ seed = 42 [model] name = "mistral3" -flavor = "24B" +flavor = "Test" norm_type = "rmsnorm" # layernorm / np_layernorm / rmsnorm -tokenizer_path = "mistralai/Mistral-Small-3.1-24B-Instruct-2503" +tokenizer_path = "./assets/tokenizer/Mistral-Small-3.1-24B-Instruct-2503" #tokenizer_path = "/mnt/weka/home/artem/new2/simple-trainer/mistral-2503-base-hf" # converters = "float8" @@ -31,22 +31,20 @@ name = "AdamW" lr = 1e-6 [training] -base_model_dir = "/mnt/weka/home/artem/new2/simple-trainer/mistral-2503-base-dcp" -train_type = "sft" -seed=42 -batch_size = 2 -seq_len = 16384 +#base_model_dir = "/mnt/weka/home/artem/new2/simple-trainer/mistral-2503-base-dcp" +#train_type = "sft" +#seed=42 +batch_size = 1 +seq_len = 1000 gradient_accumulation_steps = 1 warmup_steps = 200 # lr scheduler warm up lr_ramp_type = "cosine" lr_ramp_end_lr_ratio = 0.0 max_norm = 1.0 # grad norm clipping -steps = 700 -data_parallel_replicate_degree = 1 -data_parallel_shard_degree = -1 -tensor_parallel_degree = 8 -compile = false -dataset = "metamath" +steps = 10 +compile = "false" +local_batch_size = 1 +dataset = "c4_test" # supported datasets: c4_test (2K), c4 (177M) [experimental] context_parallel_degree = 1 From b508deabbabe3da9d4cb726dc2283e5455763793 Mon Sep 17 00:00:00 2001 From: Artem Yatsenko Date: Sat, 26 Jul 2025 02:48:22 +0000 Subject: [PATCH 05/28] temp remove vision encoder --- torchtitan/models/mistral3/__init__.py | 32 +++++++ torchtitan/models/mistral3/model/model.py | 84 ++----------------- .../train_configs/mistral24b_sft.toml | 9 +- 3 files changed, 46 insertions(+), 79 deletions(-) diff --git a/torchtitan/models/mistral3/__init__.py b/torchtitan/models/mistral3/__init__.py index 962995616a..6794fecad1 100644 --- a/torchtitan/models/mistral3/__init__.py +++ b/torchtitan/models/mistral3/__init__.py @@ -74,6 +74,38 @@ } mistral3_configs = { + "24B": ModelArgs( + # vision encoder part + vision_embed_dim=1024, + vision_num_layers=24, + vision_num_heads=16, + vision_feature_layer=-2, + patch_size=14, + image_size=1540, + in_channels=3, + spatial_merge_size=2, + + # projection part + num_layers_projection=8, + projector_hidden_act="gelu", + multimodal_projector_bias=False, + + # decoder part + decoder_embed_dim=5120, + decoder_num_layers=40, + decoder_num_heads=32, + decoder_num_kv_heads=8, + fusion_interval=8, + image_token_index=10, + + # common part + vocab_size=131072, + multiple_of=256, + ffn_dim_multiplier=None, + norm_eps=1e-5, + rope_theta=1000000000.0, + max_seq_len=131072, + ), "Test": ModelArgs( # vision encoder part vision_embed_dim=1024, diff --git a/torchtitan/models/mistral3/model/model.py b/torchtitan/models/mistral3/model/model.py index 19d3cfd577..33904690ae 100644 --- a/torchtitan/models/mistral3/model/model.py +++ b/torchtitan/models/mistral3/model/model.py @@ -844,90 +844,18 @@ def forward( init_attention_mask(input_ids, eos_id=self.config.eos_id) - - - if not self.vision_model_initialized: - from transformers import Mistral3ForConditionalGeneration as Mistral3Model - - full = Mistral3Model.from_pretrained( - "mistralai/Mistral-Small-3.1-24B-Instruct-2503", trust_remote_code=True, device_map="auto", torch_dtype=torch.float16 - ).eval() - - from safetensors.torch import load_file - - if device == None: - device = torch.device("cuda") - - self.vision_tower = full.vision_tower.eval().to(device, dtype=torch.bfloat16) - - self.multi_modal_projector = full.multi_modal_projector.eval().to(device, dtype=torch.bfloat16) - - del full - self.vision_model_initialized = True - - if pixel_values is not None and image_sizes is not None: - - inputs_embeds = self.language_model.tok_embeddings(input_ids) - - if type(inputs_embeds) is torch.Tensor: - - if image_features is None: - image_features = self.get_image_features( - pixel_values=pixel_values, - vision_feature_layer=-1, - image_sizes=image_sizes - ).to(device=device, dtype=inputs_embeds.dtype) - - image_token_index = self.config.image_token_index - - special_image_mask = (input_ids == self.config.image_token_index).unsqueeze(-1) - special_image_mask = special_image_mask.expand_as(inputs_embeds) - image_features = image_features.to(inputs_embeds.device, inputs_embeds.dtype) - inputs_embeds = inputs_embeds.masked_scatter(special_image_mask, image_features) #.detach().contiguous() - - else: - # dtensor - inputs_embeds = inputs_embeds.redistribute(tp_mesh, [Replicate()]).to_local() # all-gather - - image_features = self.get_image_features( - pixel_values=pixel_values, - vision_feature_layer=-1, - image_sizes=image_sizes, - ).to(device=device, dtype=inputs_embeds.dtype) - - image_token_index = self.config.image_token_index - - special_image_mask = (input_ids == self.config.image_token_index).unsqueeze(-1) - special_image_mask = special_image_mask.expand_as(inputs_embeds) - image_features = image_features.to(inputs_embeds.device, inputs_embeds.dtype) - - - leaf = inputs_embeds.masked_scatter(special_image_mask, image_features).detach().contiguous() - - rep_dt = distribute_tensor(leaf, tp_mesh, [Replicate()]) # OK now - sharded_dt = rep_dt.redistribute(tp_mesh, [Shard(1)]) # reduce-scatter - - inputs_embeds = sharded_dt - + if position_ids is not None: + # for the case where we want to do sequence packing, we need to pass the nonstandard position_ids logits = self.language_model( tokens=input_ids, - encoder_input=inputs_embeds, encoder_mask=None, position_ids=position_ids ) else: - if position_ids is not None: - # for the case where we want to do sequence packing, we need to pass the nonstandard position_ids - logits = self.language_model( - tokens=input_ids, - encoder_mask=None, - position_ids=position_ids - ) - else: - logits = self.language_model( - tokens=input_ids, - encoder_mask=None, - ) + logits = self.language_model( + tokens=input_ids, + encoder_mask=None, + ) return logits diff --git a/torchtitan/models/mistral3/train_configs/mistral24b_sft.toml b/torchtitan/models/mistral3/train_configs/mistral24b_sft.toml index 47389aa71f..a7a1828725 100644 --- a/torchtitan/models/mistral3/train_configs/mistral24b_sft.toml +++ b/torchtitan/models/mistral3/train_configs/mistral24b_sft.toml @@ -20,7 +20,7 @@ seed = 42 [model] name = "mistral3" -flavor = "Test" +flavor = "24B" norm_type = "rmsnorm" # layernorm / np_layernorm / rmsnorm tokenizer_path = "./assets/tokenizer/Mistral-Small-3.1-24B-Instruct-2503" #tokenizer_path = "/mnt/weka/home/artem/new2/simple-trainer/mistral-2503-base-hf" @@ -66,3 +66,10 @@ mode = 'full' # ['none', 'selective', 'full'] [float8] enable_fsdp_float8_all_gather = true precompute_float8_dynamic_scale_for_fsdp = true + +[parallelism] +data_parallel_replicate_degree = 1 +data_parallel_shard_degree = -1 +tensor_parallel_degree = 1 +pipeline_parallel_degree = 1 +context_parallel_degree = 1 From 71839a6d91a86bcf94595903ad50facf84627d6b Mon Sep 17 00:00:00 2001 From: Artem Yatsenko Date: Sat, 26 Jul 2025 03:30:25 +0000 Subject: [PATCH 06/28] final --- .../models/mistral3/train_configs/mistral24b_sft.toml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/torchtitan/models/mistral3/train_configs/mistral24b_sft.toml b/torchtitan/models/mistral3/train_configs/mistral24b_sft.toml index a7a1828725..f51735acca 100644 --- a/torchtitan/models/mistral3/train_configs/mistral24b_sft.toml +++ b/torchtitan/models/mistral3/train_configs/mistral24b_sft.toml @@ -28,10 +28,10 @@ tokenizer_path = "./assets/tokenizer/Mistral-Small-3.1-24B-Instruct-2503" [optimizer] name = "AdamW" -lr = 1e-6 +lr = 1e-3 [training] -#base_model_dir = "/mnt/weka/home/artem/new2/simple-trainer/mistral-2503-base-dcp" +#base_model_dir = "/home/ubuntu/torchtitan/llama_dcp" #train_type = "sft" #seed=42 batch_size = 1 @@ -41,7 +41,7 @@ warmup_steps = 200 # lr scheduler warm up lr_ramp_type = "cosine" lr_ramp_end_lr_ratio = 0.0 max_norm = 1.0 # grad norm clipping -steps = 10 +steps = 10000 compile = "false" local_batch_size = 1 dataset = "c4_test" # supported datasets: c4_test (2K), c4 (177M) From 7e50705a09f014929e2485041bd4889dbc073eeb Mon Sep 17 00:00:00 2001 From: Artem Yatsenko Date: Thu, 31 Jul 2025 00:30:31 +0000 Subject: [PATCH 07/28] add mistral conversion --- scripts/convert_mistral_hf_to_dcp.py | 196 +++++++++++++++++++++++++++ 1 file changed, 196 insertions(+) create mode 100644 scripts/convert_mistral_hf_to_dcp.py diff --git a/scripts/convert_mistral_hf_to_dcp.py b/scripts/convert_mistral_hf_to_dcp.py new file mode 100644 index 0000000000..3bc04b5019 --- /dev/null +++ b/scripts/convert_mistral_hf_to_dcp.py @@ -0,0 +1,196 @@ +# Copyright (c) Meta Platforms, Inc. and affiliates. +# All rights reserved. +# +# This source code is licensed under the BSD-style license found in the +# LICENSE file in the root directory of this source tree. + +import argparse +from pathlib import Path + +import torch +import torch.distributed.checkpoint as DCP + +from torchtitan.tools.logging import logger +from torchtitan.models.mistral3.model.model import precompute_freqs_cis + +from transformers import AutoTokenizer, Mistral3Config + + +# permute for sliced rotary +def permute(w, n_heads, dim1, dim2): + return ( + w.view(n_heads, dim1 // n_heads // 2, 2, dim2) + .transpose(1, 2) + .reshape(dim1, dim2) + ) + + +# And reversed +def reverse_permute(w, n_heads, dim1, dim2): + return ( + w.view(n_heads, 2, dim1 // n_heads // 2, dim2) + .transpose(1, 2) + .reshape(dim1, dim2) + ) + + +@torch.inference_mode() +def convert_mistral3_weights(mistral_model, output_dir, max_seq_len: int): + # Loading the model directly might be too large, so we'll use safetensors to load the weights + from safetensors import safe_open + import os + import json + + # Load the config + config_path = os.path.join(mistral_model, "config.json") + with open(config_path, "r") as f: + config_dict = json.load(f) + + config = Mistral3Config.from_dict(config_dict) + tok = AutoTokenizer.from_pretrained(mistral_model) + + # Find all safetensors files + index_path = os.path.join(mistral_model, "model.safetensors.index.json") + if os.path.exists(index_path): + with open(index_path, "r") as f: + index = json.load(f) + weight_map = index["weight_map"] + all_files = set(weight_map.values()) + else: + # If no index, look for a single safetensors file + safetensors_files = [f for f in os.listdir(mistral_model) if f.endswith(".safetensors")] + if len(safetensors_files) == 1: + all_files = [safetensors_files[0]] + else: + raise ValueError("Multiple safetensors files found without an index file") + + # Extract language model parameters from the text config + text_config = config.text_config + n_layers = text_config.num_hidden_layers + n_heads = text_config.num_attention_heads + dim = text_config.hidden_size + dims_per_head = dim // n_heads + + logger.info(f"Loading original Mistral3 weights from {mistral_model}") + + state_dict = {} + n_heads_per_shard = n_heads + num_key_value_heads = text_config.num_key_value_heads + n_kv_heads_per_shard = num_key_value_heads + key_value_dim = dims_per_head * num_key_value_heads + + # Load and process weights + hf_state_dict = {} + for filename in all_files: + filepath = os.path.join(mistral_model, filename) + with safe_open(filepath, framework="pt") as f: + for key in f.keys(): + hf_state_dict[key] = f.get_tensor(key) + + # Process language model layers + for layer in range(n_layers): + # Map from HF to torchtitan structure + # Based on the keys we found in the checkpoint + + # Norm layers + state_dict[f"language_model.layers.{layer}.ln_attn.weight"] = hf_state_dict[ + f"language_model.model.layers.{layer}.input_layernorm.weight" + ] + state_dict[f"language_model.layers.{layer}.ln_mlp.weight"] = hf_state_dict[ + f"language_model.model.layers.{layer}.post_attention_layernorm.weight" + ] + + # Attention layers + for wn, hn, nh in [ + ("wq", "q_proj", n_heads_per_shard), + ("wk", "k_proj", n_kv_heads_per_shard), + ("wv", "v_proj", n_kv_heads_per_shard), + ]: + if wn != "wv": + # Need to reverse the permutation for sliced rotary + + state_dict[f"language_model.layers.{layer}.attn.{wn}.weight"] = reverse_permute( + hf_state_dict[f"language_model.model.layers.{layer}.self_attn.{hn}.weight"], + n_heads if wn == "wq" else num_key_value_heads, + dim1=4096 if wn == "wq" else int(key_value_dim*0.8), + dim2=dim, + ) + else: + + state_dict[f"language_model.layers.{layer}.attn.{wn}.weight"] = hf_state_dict[ + f"language_model.model.layers.{layer}.self_attn.{hn}.weight" + ] + + state_dict[f"language_model.layers.{layer}.attn.wo.weight"] = hf_state_dict[ + f"language_model.model.layers.{layer}.self_attn.o_proj.weight" + ] + + # Feed-forward layers + state_dict[f"language_model.layers.{layer}.mlp.w1.weight"] = hf_state_dict[ + f"language_model.model.layers.{layer}.mlp.gate_proj.weight" + ] + state_dict[f"language_model.layers.{layer}.mlp.w2.weight"] = hf_state_dict[ + f"language_model.model.layers.{layer}.mlp.down_proj.weight" + ] + state_dict[f"language_model.layers.{layer}.mlp.w3.weight"] = hf_state_dict[ + f"language_model.model.layers.{layer}.mlp.up_proj.weight" + ] + + # Language model norm and embeddings + state_dict["language_model.norm.weight"] = hf_state_dict["language_model.model.norm.weight"] + + # Handling embeddings + state_dict["language_model.tok_embeddings.weight"] = hf_state_dict["language_model.model.embed_tokens.weight"] + # If fusion embedding exists in the HF model + + state_dict["language_model.output.weight"] = hf_state_dict["language_model.lm_head.weight"] + + # Vision tower components + if "vision_tower.ln_pre.weight" in hf_state_dict: + # Copy over vision tower weights, restructuring to put them under model.vision_encoder.pixtral_vision + vision_keys = [k for k in hf_state_dict.keys() if k.startswith("vision_tower.")] + for key in vision_keys: + # Replace vision_tower with vision_encoder.pixtral_vision in the key path + new_key = key.replace("vision_tower", "vision_encoder.pixtral_vision") + state_dict[new_key] = hf_state_dict[key] + + # Multi-modal projector + mm_keys = [k for k in hf_state_dict.keys() if k.startswith("multi_modal_projector.")] + for key in mm_keys: + state_dict["vision_encoder." + key] = hf_state_dict[key] + + # TODO figure out how to not hardcode + dims_per_head = 128 + + # NOTE: precompute freqs_cis because must be persisted by default in torchtitan + state_dict["language_model.freqs_cis"] = precompute_freqs_cis( + dims_per_head, + max_seq_len, + text_config.rope_theta, + ) + + logger.info(f"Writing to DCP at '{output_dir}'") + output_dir.mkdir(parents=True, exist_ok=True) + storage_writer = DCP.filesystem.FileSystemWriter(output_dir, thread_count=8) + + DCP.save({"model": state_dict}, storage_writer=storage_writer) + tokenizer_dir = output_dir / "tokenizer" + tokenizer_dir.mkdir(parents=True, exist_ok=True) + tok.save_pretrained(tokenizer_dir) + + +if __name__ == "__main__": + parser = argparse.ArgumentParser(description="Convert Mistral3 weights to DCP format.") + parser.add_argument("mistral_model", type=Path, help="HF Model in Mistral3 format") + parser.add_argument("output_dir", type=Path, help="Output directory for DCP.") + parser.add_argument( + "--max_seq_len", + type=int, + default=131072, + help="The maximum sequence length of the model.", + ) + args = parser.parse_args() + + convert_mistral3_weights( + args.mistral_model, args.output_dir, max_seq_len=args.max_seq_len + ) From 8b3fef81e5eb5fde8481e4734a76a54d4843df87 Mon Sep 17 00:00:00 2001 From: Artem Yatsenko Date: Thu, 31 Jul 2025 20:52:33 +0000 Subject: [PATCH 08/28] fix checkpoint loading, add finetuning script mirroring qwen --- scripts/convert_mistral_hf_to_dcp.py | 4 +- torchtitan/models/mistral3/model/model.py | 149 +++++++++++++++--- .../train_configs/mistral24b_finetuning.toml | 65 ++++++++ .../train_configs/mistral24b_sft.toml | 13 +- 4 files changed, 199 insertions(+), 32 deletions(-) create mode 100644 torchtitan/models/mistral3/train_configs/mistral24b_finetuning.toml diff --git a/scripts/convert_mistral_hf_to_dcp.py b/scripts/convert_mistral_hf_to_dcp.py index 3bc04b5019..c4fc6f9aea 100644 --- a/scripts/convert_mistral_hf_to_dcp.py +++ b/scripts/convert_mistral_hf_to_dcp.py @@ -169,11 +169,13 @@ def convert_mistral3_weights(mistral_model, output_dir, max_seq_len: int): text_config.rope_theta, ) + print(state_dict.keys()) + logger.info(f"Writing to DCP at '{output_dir}'") output_dir.mkdir(parents=True, exist_ok=True) storage_writer = DCP.filesystem.FileSystemWriter(output_dir, thread_count=8) - DCP.save({"model": state_dict}, storage_writer=storage_writer) + DCP.save(state_dict, storage_writer=storage_writer) tokenizer_dir = output_dir / "tokenizer" tokenizer_dir.mkdir(parents=True, exist_ok=True) tok.save_pretrained(tokenizer_dir) diff --git a/torchtitan/models/mistral3/model/model.py b/torchtitan/models/mistral3/model/model.py index 33904690ae..7626253898 100644 --- a/torchtitan/models/mistral3/model/model.py +++ b/torchtitan/models/mistral3/model/model.py @@ -119,6 +119,12 @@ def forward(self, hidden_states): hidden_states = hidden_states * torch.rsqrt(variance + self.variance_epsilon) return self.weight * hidden_states.to(input_dtype) + def reset_parameters(self): + """ + Reset parameters following the Llama3 pattern. + """ + nn.init.ones_(self.weight) + def get_sub_grids( x: torch.Tensor, @@ -159,6 +165,13 @@ def __init__(self, config: ModelArgs): self.merging_layer = nn.Linear(hidden_size * self.spatial_merge_size**2, hidden_size, bias=False) + def init_weights(self): + """ + Initialize weights following the Llama3 pattern. + """ + # Initialize merging layer with truncated normal + nn.init.trunc_normal_(self.merging_layer.weight, mean=0.0, std=0.02) + def forward(self, image_features: torch.Tensor, image_sizes: torch.Tensor) -> torch.Tensor: image_sizes = [ (image_size[0] // self.patch_size, image_size[1] // self.patch_size) for image_size in image_sizes @@ -202,6 +215,24 @@ def __init__(self, config: ModelArgs): config.decoder_embed_dim, config.decoder_embed_dim, bias=config.multimodal_projector_bias ) + def init_weights(self): + """ + Initialize weights following the Llama3 pattern. + """ + # Initialize norm layer + if hasattr(self.norm, 'reset_parameters'): + self.norm.reset_parameters() + + # Initialize patch merger + if hasattr(self.patch_merger, 'init_weights'): + self.patch_merger.init_weights() + + # Initialize linear layers with truncated normal + for linear in (self.linear_1, self.linear_2): + nn.init.trunc_normal_(linear.weight, mean=0.0, std=0.02) + if linear.bias is not None: + nn.init.zeros_(linear.bias) + def forward(self, image_features: torch.Tensor, image_sizes: torch.Tensor): image_features = self.norm(image_features) @@ -372,9 +403,6 @@ def __init__(self, config: ModelArgs, is_vision=True): self.sdpa = build_attention(True, "causal") - - - def init_weights(self, init_std: float): for linear in (self.wq, self.wk, self.wv): nn.init.trunc_normal_(linear.weight, mean=0.0, std=0.02) @@ -407,6 +435,7 @@ def forward(self, x: torch.Tensor, freqs_cis: Optional[torch.Tensor] = None, pos # Apply RoPE with position_ids if provided xq, xk = apply_rotary_emb(xq, xk, freqs_cis=freqs_cis, position_ids=position_ids) + # repeat k/v heads if num_kv_heads < num_heads keys = repeat_kv(xk, self.num_rep) # (bs, seqlen, n_local_heads, head_dim) values = repeat_kv(xv, self.num_rep) # (bs, seqlen, n_local_heads, head_dim) @@ -415,6 +444,7 @@ def forward(self, x: torch.Tensor, freqs_cis: Optional[torch.Tensor] = None, pos xk = keys.transpose(1, 2) # (bs, n_local_heads, seqlen, head_dim) xv = values.transpose(1, 2) # (bs, n_local_heads, seqlen, head_dim) + #output = torch.nn.functional.scaled_dot_product_attention(xq, xk, xv) output = self.sdpa(xq, xk, xv) output = output.transpose(1, 2).contiguous() # (bs, seqlen, n_local_heads, head_dim) @@ -540,6 +570,18 @@ def __init__( self.attn_scale = attn_scale or nn.Identity() self.mlp_scale = mlp_scale or nn.Identity() + def init_weights(self): + """ + Initialize weights following the Llama3 pattern. + """ + # Initialize attention and feedforward components + self.attn.init_weights(0.02) # Use standard init_std for attention + self.mlp.init_weights(0.02) # Use standard init_std for feedforward + + # Initialize norm layers + for norm in (self.ln_attn, self.ln_mlp): + norm.reset_parameters() + def forward( self, x: torch.Tensor, @@ -568,6 +610,18 @@ def __init__( #self.ln_mlp = build_norm("rmsnorm", config.decoder_embed_dim, config.norm_eps) self.ln_mlp = Mistral3RMSNorm(config.decoder_embed_dim, config.norm_eps) + def init_weights(self): + """ + Initialize weights following the Llama3 pattern. + """ + # Initialize attention and feedforward components + self.attn.init_weights(0.02) # Use standard init_std for attention + self.mlp.init_weights(0.02) # Use standard init_std for feedforward + + # Initialize norm layers + for norm in (self.ln_attn, self.ln_mlp): + norm.reset_parameters() + def forward( self, x: torch.Tensor, @@ -626,6 +680,18 @@ def __init__(self, config: ModelArgs) -> None: # Add projection to connect to the decoder self.multi_modal_projector = Mistral3MultiModalProjector(config) + def init_weights(self): + """ + Initialize weights for the vision encoder components. + """ + # Initialize pixtral vision model if it has init_weights + if hasattr(self.pixtral_vision, 'init_weights'): + self.pixtral_vision.init_weights() + + # Initialize multimodal projector if it has init_weights + if hasattr(self.multi_modal_projector, 'init_weights'): + self.multi_modal_projector.init_weights() + def forward(self, pixel_values: torch.Tensor, image_sizes: torch.Tensor, output_hidden_states: Optional[bool] = None, return_dict: Optional[bool] = None) -> torch.Tensor: """ Args: @@ -665,34 +731,53 @@ def __init__(self, config: ModelArgs): super().__init__() self.register_buffer( - "freqs_cis", self._precompute_freqs_cis(config), persistent=True + "freqs_cis", self._precompute_freqs_cis(config), persistent=False ) self.layers = nn.ModuleDict() for idx in range(config.decoder_num_layers): # define a llama3-like decoder layer decoder_layer = DecoderTransformerSelfAttnBlock(config) - # cross attention layers, mixing text and vision, - # placed every `fusion_interval` layers - """ - if idx % config.fusion_interval == 0: - cross_attn_layer = DecoderTransformerCrossAttnBlock(config) - fusion_layer = FusionLayer( - layer=decoder_layer, fusion_layer=cross_attn_layer - ) - self.layers[str(idx)] = fusion_layer - else: - """ self.layers[str(idx)] = decoder_layer self.tok_embeddings = nn.Embedding(131072, config.decoder_embed_dim) #self.norm = build_norm( # config.norm_type, dim=config.decoder_embed_dim, eps=config.norm_eps - self.norm=nn.LayerNorm(config.decoder_embed_dim, eps=config.norm_eps) + #self.norm=nn.LayerNorm(config.decoder_embed_dim, eps=config.norm_eps) + self.norm = nn.RMSNorm(config.decoder_embed_dim, eps=config.norm_eps) self.output = nn.Linear( config.decoder_embed_dim, 131072, bias=False ) + def init_weights(self): + """ + Initialize weights following the Llama3 pattern. + """ + # Initialize token embeddings + if self.tok_embeddings is not None: + nn.init.normal_(self.tok_embeddings.weight) + + # Initialize all layers + for layer in self.layers.values(): + if layer is not None: + layer.init_weights() + + # Initialize norm layer + if self.norm is not None: + self.norm.reset_parameters() + + # Initialize output layer with truncated normal + if self.output is not None: + final_out_std = self.output.in_features**-0.5 + cutoff_factor = 3 + nn.init.trunc_normal_( + self.output.weight, + mean=0.0, + std=final_out_std, + a=-cutoff_factor * final_out_std, + b=cutoff_factor * final_out_std, + ) + def _precompute_freqs_cis(self, config) -> torch.Tensor: return precompute_freqs_cis( int(config.decoder_embed_dim // config.decoder_num_heads * 0.8), @@ -792,10 +877,29 @@ def init_weights( ``Transformer`` root module to avoid reinitializing tensors. """ + + buffer_device = buffer_device or self.language_model.freqs_cis.device with torch.device(buffer_device): self.language_model._precompute_freqs_cis(self.config) - + + # Initialize language model components + if hasattr(self.language_model, 'init_weights'): + self.language_model.init_weights() + + ## Initialize vision tower if it exists + if hasattr(self, 'vision_tower') and self.vision_tower is not None: + if hasattr(self.vision_tower, 'init_weights'): + self.vision_tower.init_weights() + + ## Initialize multimodal projector if it exists + if hasattr(self, 'multi_modal_projector') and self.multi_modal_projector is not None: + if hasattr(self.multi_modal_projector, 'init_weights'): + self.multi_modal_projector.init_weights() + + print("MODEL WEIGHTS") + print(self.state_dict().keys()) + def get_image_features( self, @@ -805,12 +909,6 @@ def get_image_features( **kwargs, ): kwargs = {k: v for k, v in kwargs.items() if v is not None} - #image_outputs = self.vision_tower(pixel_values.to(dtype=torch.float16), image_sizes=image_sizes, output_hidden_states=True) - - # this is not memory efficient at all (output_hidden_states=True) will save all the hidden states. - #with open("my_file.txt", "w") as f: - # #print(pixel_values, file=f) - with torch.no_grad(): image_outputs = self.vision_tower(pixel_values, image_sizes=image_sizes, output_hidden_states=False) # If we have one vision feature layer, return the corresponding hidden states, @@ -826,6 +924,7 @@ def get_image_features( + @torch.compiler.disable() def forward( self, input_ids: torch.LongTensor = None, @@ -842,8 +941,10 @@ def forward( ): + init_attention_mask(input_ids, eos_id=self.config.eos_id) + if position_ids is not None: # for the case where we want to do sequence packing, we need to pass the nonstandard position_ids logits = self.language_model( @@ -856,7 +957,7 @@ def forward( tokens=input_ids, encoder_mask=None, ) - + return logits def generate( diff --git a/torchtitan/models/mistral3/train_configs/mistral24b_finetuning.toml b/torchtitan/models/mistral3/train_configs/mistral24b_finetuning.toml new file mode 100644 index 0000000000..759517743b --- /dev/null +++ b/torchtitan/models/mistral3/train_configs/mistral24b_finetuning.toml @@ -0,0 +1,65 @@ +# torchtitan Config.toml +# NOTE: this toml config is a preset for 64 A100 GPUs. + +[job] +dump_folder = "./outputs" +description = "Mistral 24B training" + + +[profiling] +enable_profiling = true +save_traces_folder = "profile_trace" +profile_freq = 100 + +[metrics] +log_freq = 10 +enable_tensorboard = false +enable_wandb = true +save_tb_folder = "tb" + +[model] +name = "mistral3" +flavor = "24B" +tokenizer_path = "/home/artem_nous/tt/torchtitan/assets/tokenizer/Mistral-Small-3.1-24B-Base-2503" +# converters = ["float8"] + +[optimizer] +name = "AdamW" +lr = 2e-4 +eps = 1e-8 + +[lr_scheduler] +warmup_steps = 200 # lr scheduler warm up + +[training] +local_batch_size = 1 +seq_len = 2048 +max_norm = 1.0 # grad norm clipping +steps = 1000 +compile = false +dataset = "c4" + +[parallelism] +data_parallel_replicate_degree = 1 +data_parallel_shard_degree = -1 +tensor_parallel_degree = 1 +pipeline_parallel_degree = 1 +context_parallel_degree = 1 + +[checkpoint] +enable_checkpoint = true +initial_load_path = "/home/artem_nous/tt/torchtitan/mistral-small-base-dcp" +folder = "checkpoint" +interval = 500 +last_save_model_weights_only = false +export_dtype = "float32" +async_mode = "disabled" # ["disabled", "async", "async_with_pinned_mem"] + +[activation_checkpoint] +mode = "none" # ["none", "selective", "full"] +selective_ac_option = "op" # "int" = ac every positive int layer or 'op', ac based on ops policy + +[float8] +enable_fsdp_float8_all_gather = false +precompute_float8_dynamic_scale_for_fsdp = false +filter_fqns = ["output"] diff --git a/torchtitan/models/mistral3/train_configs/mistral24b_sft.toml b/torchtitan/models/mistral3/train_configs/mistral24b_sft.toml index f51735acca..6942c0396f 100644 --- a/torchtitan/models/mistral3/train_configs/mistral24b_sft.toml +++ b/torchtitan/models/mistral3/train_configs/mistral24b_sft.toml @@ -2,7 +2,7 @@ # NOTE: this toml config is a preset for 8 H100 GPUs. [job] -dump_folder = "./24b_test_2" +dump_folder = "./mistral-small-24b-sft" description = "Mistral 24B training" [profiling] @@ -22,9 +22,7 @@ seed = 42 name = "mistral3" flavor = "24B" norm_type = "rmsnorm" # layernorm / np_layernorm / rmsnorm -tokenizer_path = "./assets/tokenizer/Mistral-Small-3.1-24B-Instruct-2503" -#tokenizer_path = "/mnt/weka/home/artem/new2/simple-trainer/mistral-2503-base-hf" -# converters = "float8" +tokenizer_path = "/home/artem_nous/tt/torchtitan/assets/tokenizer/Mistral-Small-3.1-24B-Base-2503" [optimizer] name = "AdamW" @@ -32,8 +30,8 @@ lr = 1e-3 [training] #base_model_dir = "/home/ubuntu/torchtitan/llama_dcp" -#train_type = "sft" -#seed=42 +#base_model_dir = "/home/artem_nous/tt/torchtitan/mistral-small-base-dcp" + batch_size = 1 seq_len = 1000 gradient_accumulation_steps = 1 @@ -52,10 +50,11 @@ pipeline_parallel_degree = 1 [checkpoint] enable_checkpoint = true +initial_load_path = "/home/artem_nous/tt/torchtitan/mistral-small-base-dcp" +last_save_model_weights_only = false folder = "checkpoint" interval_type = "steps" interval = 72000 -model_weights_only = false export_dtype = "float32" async_mode = "disabled" # ["disabled", "async", "async_with_pinned_mem"] From 0d43ccb449cc564ac40ff0a1bc0d96f1f2cf01b1 Mon Sep 17 00:00:00 2001 From: Artem Yatsenko Date: Thu, 31 Jul 2025 22:02:15 +0000 Subject: [PATCH 09/28] cleanup of mistral3 code --- torchtitan/models/mistral3/__init__.py | 91 +-- torchtitan/models/mistral3/infra/pipeline.py | 6 +- torchtitan/models/mistral3/model/args.py | 113 ++++ torchtitan/models/mistral3/model/model.py | 601 ++----------------- 4 files changed, 170 insertions(+), 641 deletions(-) create mode 100644 torchtitan/models/mistral3/model/args.py diff --git a/torchtitan/models/mistral3/__init__.py b/torchtitan/models/mistral3/__init__.py index 6794fecad1..c96f5218a8 100644 --- a/torchtitan/models/mistral3/__init__.py +++ b/torchtitan/models/mistral3/__init__.py @@ -2,9 +2,10 @@ # All rights reserved. from torchtitan.datasets.hf_datasets import build_hf_dataloader +from torchtitan.datasets.dataloader import build_dataloader from .model.configuration_pixtral import PixtralVisionConfig -from .model.model import Mistral3ForConditionalGeneration, ModelArgs, Mistral3RMSNorm, Mistral3PatchMerger, Mistral3MultiModalProjector, VisionEncoder, MultimodalDecoder +from .model.model import VLMArgs, VisionEncoder, VLM from .infra.parallelize import parallelize_mistral3 from .infra.pipeline import pipeline_mistral3 @@ -15,31 +16,25 @@ from torchtitan.components.optimizer import build_optimizers from torchtitan.components.tokenizer import build_hf_tokenizer from torchtitan.components.validate import build_validator -#from torchtitan.datasets.hf_datasets import build_hf_dataloader from torchtitan.protocols.train_spec import register_train_spec, TrainSpec from .infra.parallelize import parallelize_mistral3 from .infra.pipeline import pipeline_mistral3 -#from .model.args import ModelArgs -from .model.model import Mistral3ForConditionalGeneration +from .model.model import VLM __all__ = [ "parallelize_mistral3", "pipeline_mistral3", - "ModelArgs", - "Mistral3RMSNorm", - "Mistral3PatchMerger", - "Mistral3MultiModalProjector", + "VLMArgs", "VisionEncoder", - "MultimodalDecoder", - "Mistral3ForConditionalGeneration", + "VLM", "mistral3_configs", ] # Define model configurations mistral3_configs = { - "24B": ModelArgs( + "24B": VLMArgs( # vision encoder part vision_embed_dim=1024, vision_num_layers=24, @@ -70,84 +65,18 @@ norm_eps=1e-5, rope_theta=1000000000.0, max_seq_len=131072, + use_flex_attn=True, + attn_mask_type="block_causal_by_sequence_lengths", ), } -mistral3_configs = { - "24B": ModelArgs( - # vision encoder part - vision_embed_dim=1024, - vision_num_layers=24, - vision_num_heads=16, - vision_feature_layer=-2, - patch_size=14, - image_size=1540, - in_channels=3, - spatial_merge_size=2, - - # projection part - num_layers_projection=8, - projector_hidden_act="gelu", - multimodal_projector_bias=False, - - # decoder part - decoder_embed_dim=5120, - decoder_num_layers=40, - decoder_num_heads=32, - decoder_num_kv_heads=8, - fusion_interval=8, - image_token_index=10, - - # common part - vocab_size=131072, - multiple_of=256, - ffn_dim_multiplier=None, - norm_eps=1e-5, - rope_theta=1000000000.0, - max_seq_len=131072, - ), - "Test": ModelArgs( - # vision encoder part - vision_embed_dim=1024, - vision_num_layers=24, - vision_num_heads=16, - vision_feature_layer=-2, - patch_size=14, - image_size=1540, - in_channels=3, - spatial_merge_size=2, - - # projection part - num_layers_projection=8, - projector_hidden_act="gelu", - multimodal_projector_bias=False, - - # decoder part - decoder_embed_dim=5120, - decoder_num_layers=2, - decoder_num_heads=32, - decoder_num_kv_heads=8, - fusion_interval=8, - image_token_index=10, - - # common part - vocab_size=131072, - multiple_of=256, - ffn_dim_multiplier=None, - norm_eps=1e-5, - rope_theta=1000000000.0, - max_seq_len=131072, - ), -} - - # Register the model register_train_spec( TrainSpec( name="mistral3", parallelize_fn=parallelize_mistral3, - model_cls=Mistral3ForConditionalGeneration, + model_cls=VLM, model_args=mistral3_configs, build_tokenizer_fn=build_hf_tokenizer, build_loss_fn=build_cross_entropy_loss, @@ -155,6 +84,6 @@ pipelining_fn=pipeline_mistral3, build_optimizers_fn=build_optimizers, build_lr_schedulers_fn=build_lr_schedulers, - build_dataloader_fn=build_hf_dataloader, + build_dataloader_fn=build_dataloader, ) ) \ No newline at end of file diff --git a/torchtitan/models/mistral3/infra/pipeline.py b/torchtitan/models/mistral3/infra/pipeline.py index 29d39cbf3d..f67cc1f64a 100644 --- a/torchtitan/models/mistral3/infra/pipeline.py +++ b/torchtitan/models/mistral3/infra/pipeline.py @@ -24,7 +24,7 @@ stage_ids_this_rank, ) -from ..model.model import ModelArgs +from ..model.args import VLMArgs DeviceType = Union[int, str, torch.device] @@ -36,7 +36,7 @@ def pipeline_mistral3( parallel_dims: ParallelDims, job_config: JobConfig, device: DeviceType, - model_config: ModelArgs, + model_config: VLMArgs, loss_fn: Callable[..., torch.Tensor], ) -> tuple[_PipelineSchedule, list[nn.Module], bool, bool]: stages, models = pipeline_llama_manual_split( @@ -63,7 +63,7 @@ def pipeline_llama_manual_split( parallel_dims: ParallelDims, job_config: JobConfig, device: DeviceType, - model_config: ModelArgs, + model_config: VLMArgs, ) -> tuple[list[PipelineStage], list[nn.Module]]: """ This API extracts one torch.nn.Module objects for the part of the model configured to run inside this stage. diff --git a/torchtitan/models/mistral3/model/args.py b/torchtitan/models/mistral3/model/args.py new file mode 100644 index 0000000000..449d7f3abb --- /dev/null +++ b/torchtitan/models/mistral3/model/args.py @@ -0,0 +1,113 @@ + +from dataclasses import dataclass +from typing import Any, Dict, List, Optional, Tuple, Union + +import torch +import torch.nn as nn +import torch.nn.functional as F + +from torchtitan.protocols.train_spec import ModelProtocol +from torchtitan.models.attention import build_attention, init_attention_mask + +from torchtitan.protocols.train_spec import BaseModelArgs +from torchtitan.components.tokenizer import BaseTokenizer +from torchtitan.config_manager import JobConfig + + +from dataclasses import dataclass + +from dataclasses import dataclass + +from torch import nn + +from torchtitan.components.tokenizer import BaseTokenizer +from torchtitan.config_manager import JobConfig +from torchtitan.protocols.train_spec import BaseModelArgs + +@dataclass +class VLMArgs(BaseModelArgs): + # vision encoder part + vision_embed_dim: int = 1024 + vision_num_layers: int = 24 + vision_num_heads: int = 16 + vision_feature_layer: int = -1 + patch_size: int = 14 + image_size: int = 1540 + in_channels: int = 3 + # For merging patches + spatial_merge_size: int = 2 + + # projection part + num_layers_projection: int = 8 + projector_hidden_act: str = "gelu" + multimodal_projector_bias: bool = False + + # decoder part + decoder_embed_dim: int = 5120 + decoder_num_layers: int = 40 + decoder_num_heads: int = 32 + decoder_num_kv_heads: int = 8 + fusion_interval: int = 8 # Interval for fusion of vision features into text model + image_token_index: int = 10 # Token ID representing an image in the text + + # common part + vocab_size: int = 131072 + multiple_of: int = 256 # make SwiGLU hidden layer size multiple of large power of 2 + ffn_dim_multiplier: Optional[float] = None + norm_eps: float = 1e-5 + rope_theta: float = 1000000000.0 + max_seq_len: int = 131072 + activation: nn.Module = nn.GELU() + depth_init: bool = True + + n_layers: int = 40 + n_heads: int = 32 + n_embd: int = 5120 + dim: int = 4096 + + use_flex_attn: bool = False + attn_mask_type: str = "block_causal_by_sequence_lengths" + eos_id: int = 0 + + def update_from_config( + self, job_config: JobConfig, tokenizer: BaseTokenizer + ) -> None: + self.vocab_size = tokenizer.get_vocab_size() + self.max_seq_len = job_config.training.seq_len + self.eos_id = tokenizer.eos_id + + if job_config.activation_checkpoint.mode == "selective" and self.use_flex_attn: + raise ValueError( + "FlexAttention is not compatible with selective AC yet. " + "See https://github.com/pytorch/pytorch/issues/147879" + ) + + if job_config.parallelism.context_parallel_degree > 1 and self.use_flex_attn: + raise ValueError( + "FlexAttention is not compatible with CP yet. " + "We are still working on this." + ) + + def get_nparams_and_flops(self, model: nn.Module, seq_len: int) -> tuple[int, int]: + nparams = sum(p.numel() for p in model.parameters()) + nparams_embedding = sum( + sum(p.numel() for p in m.parameters()) + for m in model.children() + if isinstance(m, nn.Embedding) + ) + + l, h, q, t = ( + self.n_layers, + self.n_heads, + self.dim // self.n_heads, + seq_len, + ) + # Reasoning behind the factor of 12 for the self-attention part of the formula: + # 1. each self-attention has 2 matmul in the forward and 4 in the backward (6) + # 2. the flash attention does 1 more matmul recomputation in the backward + # but recomputation should not be counted in calculating MFU (+0) + # 3. each matmul performs 1 multiplication and 1 addition (*2) + # 4. we follow the convention and do not account for sparsity in causal attention + num_flops_per_token = 6 * (nparams - nparams_embedding) + 12 * l * h * q * t + + return nparams, num_flops_per_token \ No newline at end of file diff --git a/torchtitan/models/mistral3/model/model.py b/torchtitan/models/mistral3/model/model.py index 7626253898..bcfd0bc604 100644 --- a/torchtitan/models/mistral3/model/model.py +++ b/torchtitan/models/mistral3/model/model.py @@ -1,4 +1,11 @@ -import math +# Copyright (c) Meta Platforms, Inc. and affiliates. +# All rights reserved. +# +# This source code is licensed under the BSD-style license found in the +# LICENSE file in the root directory of this source tree. +# +# Copyright (c) Meta Platforms, Inc. All Rights Reserved. + from dataclasses import dataclass from typing import Any, Dict, List, Optional, Tuple, Union @@ -6,242 +13,14 @@ import torch.nn as nn import torch.nn.functional as F - -#from torchtitan.logging import logger -#from torchtitan.train_spec import ModelProtocol from torchtitan.protocols.train_spec import ModelProtocol from torchtitan.models.attention import build_attention, init_attention_mask -from torch.distributed._tensor import Replicate, Shard, distribute_tensor from torchtitan.protocols.train_spec import BaseModelArgs from torchtitan.components.tokenizer import BaseTokenizer from torchtitan.config_manager import JobConfig -@dataclass -class ModelArgs(BaseModelArgs): - # vision encoder part - vision_embed_dim: int = 1024 - vision_num_layers: int = 24 - vision_num_heads: int = 16 - vision_feature_layer: int = -1 - patch_size: int = 14 - image_size: int = 1540 - in_channels: int = 3 - # For merging patches - spatial_merge_size: int = 2 - - # projection part - num_layers_projection: int = 8 - projector_hidden_act: str = "gelu" - multimodal_projector_bias: bool = False - - # decoder part - decoder_embed_dim: int = 5120 - decoder_num_layers: int = 40 - decoder_num_heads: int = 32 - decoder_num_kv_heads: int = 8 - fusion_interval: int = 8 # Interval for fusion of vision features into text model - image_token_index: int = 10 # Token ID representing an image in the text - - # common part - vocab_size: int = 131072 - multiple_of: int = 256 # make SwiGLU hidden layer size multiple of large power of 2 - ffn_dim_multiplier: Optional[float] = None - norm_eps: float = 1e-5 - rope_theta: float = 1000000000.0 - max_seq_len: int = 131072 - activation: nn.Module = nn.GELU() - depth_init: bool = True - - n_layers: int = 40 - n_heads: int = 32 - n_embd: int = 5120 - dim: int = 4096 - - - def update_from_config( - self, job_config: JobConfig, tokenizer: BaseTokenizer - ) -> None: - self.vocab_size = tokenizer.get_vocab_size() - self.max_seq_len = job_config.training.seq_len - self.eos_id = tokenizer.eos_id - - if job_config.activation_checkpoint.mode == "selective" and self.use_flex_attn: - raise ValueError( - "FlexAttention is not compatible with selective AC yet. " - "See https://github.com/pytorch/pytorch/issues/147879" - ) - - if job_config.parallelism.context_parallel_degree > 1 and self.use_flex_attn: - raise ValueError( - "FlexAttention is not compatible with CP yet. " - "We are still working on this." - ) - - def get_nparams_and_flops(self, model: nn.Module, seq_len: int) -> tuple[int, int]: - nparams = sum(p.numel() for p in model.parameters()) - nparams_embedding = sum( - sum(p.numel() for p in m.parameters()) - for m in model.children() - if isinstance(m, nn.Embedding) - ) - - l, h, q, t = ( - self.n_layers, - self.n_heads, - self.dim // self.n_heads, - seq_len, - ) - # Reasoning behind the factor of 12 for the self-attention part of the formula: - # 1. each self-attention has 2 matmul in the forward and 4 in the backward (6) - # 2. the flash attention does 1 more matmul recomputation in the backward - # but recomputation should not be counted in calculating MFU (+0) - # 3. each matmul performs 1 multiplication and 1 addition (*2) - # 4. we follow the convention and do not account for sparsity in causal attention - num_flops_per_token = 6 * (nparams - nparams_embedding) + 12 * l * h * q * t - - return nparams, num_flops_per_token - - -class Mistral3RMSNorm(nn.Module): - def __init__(self, hidden_size, eps=1e-6): - """ - Mistral3RMSNorm is equivalent to T5LayerNorm - """ - super().__init__() - self.weight = nn.Parameter(torch.ones(hidden_size)) - self.variance_epsilon = eps - - def forward(self, hidden_states): - input_dtype = hidden_states.dtype - hidden_states = hidden_states.to(torch.float32) - variance = hidden_states.pow(2).mean(-1, keepdim=True) - hidden_states = hidden_states * torch.rsqrt(variance + self.variance_epsilon) - return self.weight * hidden_states.to(input_dtype) - - def reset_parameters(self): - """ - Reset parameters following the Llama3 pattern. - """ - nn.init.ones_(self.weight) - - -def get_sub_grids( - x: torch.Tensor, - image_sizes: list[tuple[int, int]], - spatial_merge_size: int, -) -> list[torch.Tensor]: - # image_sizes specified in tokens - tokens_per_image = [h * w for h, w in image_sizes] - d = x.shape[-1] - all_img_sub_grids: list[torch.Tensor] = [] - sub_grid_size = spatial_merge_size - - for image_index, image_tokens in enumerate(x.split(tokens_per_image)): - # Reshape image_tokens into a 2D grid - h, w = image_sizes[image_index] - image_grid = image_tokens.view(h, w, d).permute(2, 0, 1)[None, :, :, :] # 1 x d x h x w - sub_grids = torch.nn.functional.unfold(image_grid, kernel_size=sub_grid_size, stride=sub_grid_size) - sub_grids = sub_grids.view( - 1, d, sub_grid_size, sub_grid_size, -1 - ) # 1 x d x sub_grid_size x sub_grid_size x n_patches - - all_img_sub_grids.append(sub_grids[0]) - - return all_img_sub_grids - -class Mistral3PatchMerger(nn.Module): - """ - Learned merging of spatial_merge_size ** 2 patches - """ - - def __init__(self, config: ModelArgs): - super().__init__() - self.config = config - - hidden_size = config.vision_embed_dim - self.spatial_merge_size = config.spatial_merge_size - self.patch_size = self.config.patch_size - self.merging_layer = nn.Linear(hidden_size * self.spatial_merge_size**2, hidden_size, bias=False) - - - def init_weights(self): - """ - Initialize weights following the Llama3 pattern. - """ - # Initialize merging layer with truncated normal - nn.init.trunc_normal_(self.merging_layer.weight, mean=0.0, std=0.02) - - def forward(self, image_features: torch.Tensor, image_sizes: torch.Tensor) -> torch.Tensor: - image_sizes = [ - (image_size[0] // self.patch_size, image_size[1] // self.patch_size) for image_size in image_sizes - ] - - tokens_per_image = [h * w for h, w in image_sizes] - d = image_features.shape[-1] - - permuted_tensor = [] - for image_index, image_tokens in enumerate(image_features.split(tokens_per_image)): - # Reshape image_tokens into a 2D grid - h, w = image_sizes[image_index] - image_grid = image_tokens.view(h, w, d).permute(2, 0, 1).unsqueeze(0) - grid = torch.nn.functional.unfold( - image_grid, kernel_size=self.spatial_merge_size, stride=self.spatial_merge_size - ) - grid = grid.view(d * self.spatial_merge_size**2, -1).t() - permuted_tensor.append(grid) - - image_features = torch.cat(permuted_tensor, dim=0) - image_features = self.merging_layer(image_features) - - return image_features.unsqueeze(0) - - -class Mistral3MultiModalProjector(nn.Module): - def __init__(self, config: ModelArgs): - super().__init__() - ##self.norm = build_norm("rmsnorm", config.vision_embed_dim, config.norm_eps) - self.norm = nn.RMSNorm(config.vision_embed_dim, eps=config.norm_eps) - self.patch_merger = Mistral3PatchMerger(config) - # We have hidden_size * the number of vision feature layers - num_feature_layers = 1 if isinstance(config.vision_feature_layer, int) else len(config.vision_feature_layer) - self.linear_1 = nn.Linear( - config.vision_embed_dim * num_feature_layers, - config.decoder_embed_dim, - bias=config.multimodal_projector_bias, - ) - self.act = config.activation - self.linear_2 = nn.Linear( - config.decoder_embed_dim, config.decoder_embed_dim, bias=config.multimodal_projector_bias - ) - - def init_weights(self): - """ - Initialize weights following the Llama3 pattern. - """ - # Initialize norm layer - if hasattr(self.norm, 'reset_parameters'): - self.norm.reset_parameters() - - # Initialize patch merger - if hasattr(self.patch_merger, 'init_weights'): - self.patch_merger.init_weights() - - # Initialize linear layers with truncated normal - for linear in (self.linear_1, self.linear_2): - nn.init.trunc_normal_(linear.weight, mean=0.0, std=0.02) - if linear.bias is not None: - nn.init.zeros_(linear.bias) - - def forward(self, image_features: torch.Tensor, image_sizes: torch.Tensor): - image_features = self.norm(image_features) - - image_features = self.patch_merger(image_features, image_sizes) - hidden_states = self.linear_1(image_features) - hidden_states = self.act(hidden_states) - hidden_states = self.linear_2(hidden_states) - return hidden_states - +from .args import VLMArgs def precompute_freqs_cis(dim: int, end: int, theta: float = 10000.0) -> torch.Tensor: """ @@ -324,35 +103,14 @@ def apply_rotary_emb( xk_ = torch.view_as_complex(xk.float().reshape(*xk.shape[:-1], -1, 2)) if position_ids is not None: - # Custom position_ids handling - bs, seqlen = position_ids.shape - - # Create output tensors - xq_out = torch.empty_like(xq) - xk_out = torch.empty_like(xk) - - # Apply rotations batch by batch - for i in range(bs): - # Get frequencies for this batch element's positions - batch_freqs = freqs_cis[position_ids[i]] # [seqlen, head_dim//2] - # Reshape for broadcasting - batch_freqs = batch_freqs.view(1, seqlen, 1, -1) # [1, seqlen, 1, head_dim//2] - - # Apply rotation to this batch element - batch_xq = xq_[i:i+1] # [1, seqlen, heads, head_dim//2] - batch_xk = xk_[i:i+1] - - # Multiply by complex exponential - batch_xq_out = batch_xq * batch_freqs - batch_xk_out = batch_xk * batch_freqs - - # Convert back to real and store in output tensors - xq_out[i:i+1] = torch.view_as_real(batch_xq_out).flatten(3) - xk_out[i:i+1] = torch.view_as_real(batch_xk_out).flatten(3) - + gathered_freqs = freqs_cis[position_ids] # [bs, seqlen, head_dim/2] + gathered_freqs = gathered_freqs.unsqueeze(2) # [bs, seqlen, 1, head_dim/2] + + xq_out = torch.view_as_real(xq_ * gathered_freqs).flatten(3) + xk_out = torch.view_as_real(xk_ * gathered_freqs).flatten(3) + return xq_out.type_as(xq), xk_out.type_as(xk) else: - # Standard case with sequential positions freqs_cis = reshape_for_broadcast(freqs_cis, xq_) xq_out = torch.view_as_real(xq_ * freqs_cis).flatten(3) xk_out = torch.view_as_real(xk_ * freqs_cis).flatten(3) @@ -371,12 +129,9 @@ def repeat_kv(x: torch.Tensor, num_rep: int) -> torch.Tensor: ) -class SelfAttention(nn.Module): - """ - Multi-head self attention module with rotary position encoding. - """ +class Attention(nn.Module): - def __init__(self, config: ModelArgs, is_vision=True): + def __init__(self, config: VLMArgs, is_vision=True): super().__init__() if is_vision: self.num_heads = config.vision_num_heads @@ -401,7 +156,7 @@ def __init__(self, config: ModelArgs, is_vision=True): self.wv = nn.Linear(self.embed_dim, int(self.num_kv_heads * self.head_dim * 0.8), bias=False) self.wo = nn.Linear(int(self.num_heads * self.head_dim * 0.8), self.embed_dim, bias=False) - self.sdpa = build_attention(True, "causal") + self.sdpa = build_attention(True, config.attn_mask_type) def init_weights(self, init_std: float): for linear in (self.wq, self.wk, self.wv): @@ -451,51 +206,8 @@ def forward(self, x: torch.Tensor, freqs_cis: Optional[torch.Tensor] = None, pos output = output.view(bs, seqlen, -1) return self.wo(output) -class FeedForward(nn.Module): - """ - FeedForward module - - Args: - dim (int): Input dimension. - hidden_dim (int): Hidden dimension of the feedforward layer. - multiple_of (int): Value to ensure hidden dimension is a multiple of this value. - ffn_dim_multiplier (Optional[float]): Custom multiplier for hidden dimension. Defaults to None. - activation: (nn.Module): Activation function to use. Defaults to nn.silu. - - Attributes: - w1 (Linear): Linear transformation for the first layer. - w2 (Linear): Linear transformation for the second layer. - """ - - def __init__( - self, - dim: int, - hidden_dim: int, - multiple_of: int, - ffn_dim_multiplier: Optional[float], - activation: nn.Module = nn.SiLU(), - ): - super().__init__() - hidden_dim = int(2 * hidden_dim / 3) - # custom dim factor multiplier - if ffn_dim_multiplier is not None: - hidden_dim = int(ffn_dim_multiplier * hidden_dim) - hidden_dim = multiple_of * ((hidden_dim + multiple_of - 1) // multiple_of) - hidden_dim = 32768 - self.activation = activation - - self.w1 = nn.Linear(dim, hidden_dim, bias=False) - self.w2 = nn.Linear(hidden_dim, dim, bias=False) - - def forward(self, x): - return self.w2(self.activation(self.w1(x))) - - def init_weights(self, init_std: float): - nn.init.trunc_normal_(self.w1.weight, mean=0.0, std=0.02) - nn.init.trunc_normal_(self.w2.weight, mean=0.0, std=init_std) - -class FeedForwardForDecoder(nn.Module): +class FeedForward(nn.Module): """ FeedForward module for the decoder. It's different from the one in the encoder. This is the component which is originally used in Mistral3/Llama3. @@ -528,87 +240,23 @@ def init_weights(self, init_std: float): for linear in (self.w2, self.w3): nn.init.trunc_normal_(linear.weight, mean=0.0, std=init_std) - -class TanhGate(nn.Module): - """Implements a basic learnable gate to scale layer outputs""" - - def __init__(self) -> None: - super().__init__() - self.scale = nn.Parameter(torch.zeros(1)) - - def forward(self, x: torch.Tensor) -> torch.Tensor: - """ - Args: - x (torch.Tensor): input tensor to gate - - Returns: - torch.Tensor: The output tensor after gating. Has the same shape as ``x``. - """ - return x * self.scale.tanh() - - -class VisionTransformerBlock(nn.Module): - def __init__( - self, - config: ModelArgs, - attn_scale: Optional[nn.Module] = None, - mlp_scale: Optional[nn.Module] = None, - ): - super().__init__() - self.attn = SelfAttention(config, is_vision=True) - self.ln_attn = nn.LayerNorm(config.vision_embed_dim, eps=config.norm_eps) - #self.ln_attn = build_norm("rmsnorm", config.vision_embed_dim, config.norm_eps) - self.mlp = FeedForward( - dim=config.vision_embed_dim, - hidden_dim=4 * config.vision_embed_dim, - multiple_of=config.multiple_of, - ffn_dim_multiplier=config.ffn_dim_multiplier, - activation=config.activation, - ) - #self.ln_mlp = build_norm("rmsnorm", config.vision_embed_dim, config.norm_eps) - self.ln_mlp = nn.LayerNorm(config.vision_embed_dim, eps=config.norm_eps) - self.attn_scale = attn_scale or nn.Identity() - self.mlp_scale = mlp_scale or nn.Identity() - - def init_weights(self): - """ - Initialize weights following the Llama3 pattern. - """ - # Initialize attention and feedforward components - self.attn.init_weights(0.02) # Use standard init_std for attention - self.mlp.init_weights(0.02) # Use standard init_std for feedforward - - # Initialize norm layers - for norm in (self.ln_attn, self.ln_mlp): - norm.reset_parameters() - - def forward( - self, - x: torch.Tensor, - mask: Optional[torch.Tensor] = None, - ): - x = x + self.attn(x=self.ln_attn(x), freqs_cis=None) - x = x + self.mlp(self.ln_mlp(x)) - return x - - -class DecoderTransformerSelfAttnBlock(nn.Module): +class TransformerBlock(nn.Module): def __init__( self, - config: ModelArgs, + config: VLMArgs, ): super().__init__() - self.attn = SelfAttention(config, is_vision=False) + self.attn = Attention(config, is_vision=False) #self.ln_attn = build_norm("rmsnorm", config.decoder_embed_dim, config.norm_eps) - self.ln_attn = Mistral3RMSNorm(config.decoder_embed_dim, config.norm_eps) - self.mlp = FeedForwardForDecoder( + self.ln_attn = nn.RMSNorm(config.decoder_embed_dim, config.norm_eps) + self.mlp = FeedForward( dim=config.decoder_embed_dim, hidden_dim=4 * config.decoder_embed_dim, multiple_of=config.multiple_of, ffn_dim_multiplier=config.ffn_dim_multiplier, ) #self.ln_mlp = build_norm("rmsnorm", config.decoder_embed_dim, config.norm_eps) - self.ln_mlp = Mistral3RMSNorm(config.decoder_embed_dim, config.norm_eps) + self.ln_mlp = nn.RMSNorm(config.decoder_embed_dim, config.norm_eps) def init_weights(self): """ @@ -650,10 +298,10 @@ class VisionEncoder(nn.Module): with a projection to connect to the multimodal decoder. Args: - config (ModelArgs): configs for the vision encoder. + config (VLMArgs): configs for the vision encoder. """ - def __init__(self, config: ModelArgs) -> None: + def __init__(self, config: VLMArgs) -> None: super().__init__() # Import Pixtral components here to avoid circular imports @@ -678,7 +326,7 @@ def __init__(self, config: ModelArgs) -> None: self.pixtral_vision = PixtralVisionModel(pixtral_config) # Add projection to connect to the decoder - self.multi_modal_projector = Mistral3MultiModalProjector(config) + #self.multi_modal_projector = Mistral3MultiModalProjector(config) def init_weights(self): """ @@ -693,16 +341,7 @@ def init_weights(self): self.multi_modal_projector.init_weights() def forward(self, pixel_values: torch.Tensor, image_sizes: torch.Tensor, output_hidden_states: Optional[bool] = None, return_dict: Optional[bool] = None) -> torch.Tensor: - """ - Args: - pixel_values (torch.Tensor): - Input image tensor with shape [batch_size, channels, height, width]. - image_sizes (torch.Tensor): - Tensor with actual image sizes (height, width) for each image in the batch. - - Returns: - Tensor: output tensor of embeddings [batch_size, seq_len, decoder_embed_dim] - """ + # Pass through Pixtral vision model vision_outputs = self.pixtral_vision( pixel_values=pixel_values, @@ -715,19 +354,19 @@ def forward(self, pixel_values: torch.Tensor, image_sizes: torch.Tensor, output_ # Get the last hidden state - image_features = vision_outputs.last_hidden_state + #image_features = vision_outputs.last_hidden_state # Project to decoder dimension - return self.multi_modal_projector(image_features, image_sizes) + #return self.multi_modal_projector(image_features, image_sizes) -class MultimodalDecoder(nn.Module): +class Transformer(nn.Module): """Decoder multimodal model for Mistral3. Args: - config (ModelArgs): configs for the model. + config (VLMArgs): configs for the model. """ - def __init__(self, config: ModelArgs): + def __init__(self, config: VLMArgs): super().__init__() self.register_buffer( @@ -737,7 +376,7 @@ def __init__(self, config: ModelArgs): self.layers = nn.ModuleDict() for idx in range(config.decoder_num_layers): # define a llama3-like decoder layer - decoder_layer = DecoderTransformerSelfAttnBlock(config) + decoder_layer = TransformerBlock(config) self.layers[str(idx)] = decoder_layer self.tok_embeddings = nn.Embedding(131072, config.decoder_embed_dim) @@ -796,15 +435,7 @@ def forward( inputs_embeds: Optional[torch.Tensor] = None, position_ids: Optional[torch.Tensor] = None, ) -> torch.Tensor: - """ - Args: - tokens (torch.Tensor): input tensor with shape ``[b x s]`` - encoder_input (Optional[torch.Tensor]): Optional input embeds from the encoder. Shape ``[b x s_e x d_e]`` - encoder_mask (Optional[torch.Tensor]): Boolean tensor defining a relational matrix between - tokens and encoder embeddings. Shape ``[b x s x s_e]``. Default is None. - position_ids (Optional[torch.Tensor]): Optional tensor of position ids with shape ``[b x s]``. - If provided, will use these position ids to index into freqs_cis. - """ + # input tensor of shape [b, s] bsz, seq_len = tokens.shape @@ -840,20 +471,20 @@ def forward( return output -class Mistral3ForConditionalGeneration(nn.Module, ModelProtocol): +class VLM(nn.Module, ModelProtocol): """ Mistral3 model which consists of a vision backbone and a language model. Args: - config (ModelArgs): Configuration for the model. + config (VLMArgs): Configuration for the model. """ - def __init__(self, config: ModelArgs): + def __init__(self, config: VLMArgs): super().__init__() self.config = config # Language model decoder - self.language_model = MultimodalDecoder(config) + self.language_model = Transformer(config) # Special token for representing images in the text self.image_token_index = config.image_token_index @@ -865,19 +496,6 @@ def init_weights( self, buffer_device: Optional[torch.device] = None, ): - """ - [Note: On ``init_weights`` vs. ``reset_parameters``] - Modules may define ``reset_parameters`` to initialize parameter values. - ``reset_parameters`` is meant to only initialize directly owned - parameters/buffers, not those of their child modules, and it can be - used to give the initial values for these tensors. - Separately, users may want custom initialization for their modules, - different from that in ``reset_parameters``. For this, we define - ``init_weights``. We only call it in the constructor of this - ``Transformer`` root module to avoid reinitializing tensors. - """ - - buffer_device = buffer_device or self.language_model.freqs_cis.device with torch.device(buffer_device): @@ -897,10 +515,6 @@ def init_weights( if hasattr(self.multi_modal_projector, 'init_weights'): self.multi_modal_projector.init_weights() - print("MODEL WEIGHTS") - print(self.state_dict().keys()) - - def get_image_features( self, pixel_values: torch.FloatTensor, @@ -922,28 +536,17 @@ def get_image_features( image_features = self.multi_modal_projector(selected_image_feature.squeeze(0), image_sizes) return image_features - - - @torch.compiler.disable() def forward( self, input_ids: torch.LongTensor = None, pixel_values: Optional[torch.FloatTensor] = None, attention_mask: Optional[torch.Tensor] = None, position_ids: Optional[torch.Tensor] = None, - image_sizes: Optional[torch.Tensor] = None, - labels: Optional[torch.LongTensor] = None, - inputs_embeds: Optional[torch.FloatTensor] = None, - image_features: Optional[torch.FloatTensor] = None, - tp_mesh: Optional[Any] = None, - device: Optional[Any] = None, - vision_tower: Optional[Any] = None, + sequence_lengths: list[torch.Tensor] | None = None, ): - - - init_attention_mask(input_ids, eos_id=self.config.eos_id) - + if self.config.use_flex_attn: + init_attention_mask(input_ids, eos_id=self.config.eos_id, sequence_lengths=sequence_lengths) if position_ids is not None: # for the case where we want to do sequence packing, we need to pass the nonstandard position_ids @@ -960,122 +563,6 @@ def forward( return logits - def generate( - self, - input_ids: torch.LongTensor, - pixel_values: Optional[torch.FloatTensor] = None, - image_features: Optional[torch.FloatTensor] = None, - image_sizes: Optional[torch.Tensor] = None, - position_ids: Optional[torch.Tensor] = None, - max_length: int = 100, - temperature: float = 1.0, - top_k: Optional[int] = None, - **kwargs - ): - """ - Generate text from a prompt with optional image input. - - Args: - input_ids (torch.LongTensor): The input token IDs. - pixel_values (torch.FloatTensor, optional): The input pixel values. - image_features (torch.FloatTensor, optional): Pre-extracted image features. - image_sizes (torch.Tensor, optional): The sizes of the images. - position_ids (torch.Tensor, optional): Custom position ids of shape [batch, seq_len]. - max_length (int): Maximum length of the generated sequence. - temperature (float): Sampling temperature for generation. - top_k (int, optional): If set, only use the top k tokens for sampling. - - Returns: - torch.LongTensor: The generated token IDs. - """ - # Ensure batch dimension (T,) --> (B, T) - - if pixel_values is not None and image_features is not None: - raise ValueError("You can't provide both pixel_values and image_features at the same time") - - # Handle image sizes if not provided - if pixel_values is not None and image_sizes is None: - # If image_sizes not provided, use the dimensions of pixel_values - image_sizes = torch.tensor([[p.shape[1], p.shape[2]] for p in pixel_values]) - - # Process image features if provided through pixel_values - vision_output = None - if pixel_values is not None: - # Process pixel values with the vision encoder to get image features - vision_output = self.vision_tower(pixel_values, image_sizes) - elif image_features is not None: - vision_output = image_features - - # Start with the input_ids and incrementally generate tokens - generated_ids = input_ids.clone() - - # Set up RNG for sampling - rng = None - if "seed" in kwargs and kwargs["seed"] is not None: - rng = torch.Generator(input_ids.device).manual_seed(kwargs["seed"]) - - # Initialize position_ids tracking if custom positions are provided - current_position_ids = position_ids - - for i in range(max_length): - # For generation we need to handle position_ids specially - # If position_ids were provided for the input, we need to extend them for each new token - if current_position_ids is not None: - # For the next token, we'll need to extend position_ids with the next position - if i > 0: # Only need to extend after the first iteration - # Calculate the next position values based on the last position in each sequence - # This logic may need to be customized based on your specific position_ids encoding - last_positions = current_position_ids[:, -1].unsqueeze(-1) - # Add 1 to get the next position (this assumes sequential positions) - next_positions = last_positions + 1 - # Append to current position_ids - current_position_ids = torch.cat([current_position_ids, next_positions], dim=1) - - # Generate next token - outputs = self.forward( - input_ids=generated_ids, - pixel_values=None, # Don't pass pixel_values again after first token - image_features=vision_output, # Pass pre-extracted features - image_sizes=image_sizes, - position_ids=current_position_ids - ) - - # Get the next token's logits (last token in the sequence) - next_token_logits = outputs[:, -1, :] - - # Apply temperature and top-k if specified - if temperature != 1.0 or top_k is not None: - from scripts.generate._generation import logits_to_probs, multinomial_sample_one - - # Convert logits to probabilities - probs = logits_to_probs(next_token_logits, temperature, top_k) - - # Sample from the distribution - next_token = multinomial_sample_one(probs, rng=rng) - else: - # Greedy decoding - next_token = torch.argmax(next_token_logits, dim=-1, keepdim=True) - - # Concatenate to the generated sequence - generated_ids = torch.cat([generated_ids, next_token], dim=1) - - # Check for EOS token - eos_token_id = kwargs.get("eos_token_id", -1) - if eos_token_id >= 0 and (next_token == eos_token_id).any(): - break - - return generated_ids - @classmethod - def from_model_args(cls, model_args: ModelArgs) -> "Transformer": - """ - Initialize a Transformer model from a TransformerModelArgs object. - - Args: - model_args (TransformerModelArgs): Model configuration arguments. - - Returns: - Transformer: Transformer model. - - """ + def from_model_args(cls, model_args: VLMArgs) -> "Transformer": return cls(model_args) From d1d7673b5bc8979865b37463ec0a10713971fd8d Mon Sep 17 00:00:00 2001 From: Artem Yatsenko Date: Fri, 1 Aug 2025 00:55:54 +0000 Subject: [PATCH 10/28] pt 1 multimodal sample packing preprocessing func --- scripts/preprocess_multimodal_data.py | 666 ++++++++++++++++++++++++++ 1 file changed, 666 insertions(+) create mode 100644 scripts/preprocess_multimodal_data.py diff --git a/scripts/preprocess_multimodal_data.py b/scripts/preprocess_multimodal_data.py new file mode 100644 index 0000000000..7f90c57e86 --- /dev/null +++ b/scripts/preprocess_multimodal_data.py @@ -0,0 +1,666 @@ +""" + +post of data processing script for multimodal data +that looks like this: +[ + { + "messages": [ + { + "role": "system", + "content": [ + {"type": "text", "text": "You are a helpful assistant."} + ] + }, + { + "role": "user", + "content": [ + {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/bee.jpg"}, + {"type": "text", "text": "Describe this image in detail."} + ] + }, + { + "role": "assistant", + "content": [ + {"type": "text", "text": "The image is a bee."} + ] + } + ] + } +] +""" +import argparse +import os +import shutil +import multiprocessing +import numpy as np +import pyarrow as pa +import pyarrow.dataset as pa_ds +import random +import json +from mistral_common.protocol.instruct.request import ChatCompletionRequest +from mistral_common.tokens.tokenizers.mistral import MistralTokenizer + +from typing import List, Optional, Tuple +from torch.nn import functional as F +from torch.utils.data import Dataset +from tqdm import tqdm +from datasets import load_dataset, Dataset as DatasetsDataset +from transformers import AutoTokenizer + +SCHEMA = pa.schema( + [ + pa.field("inputs", pa.large_list(pa.int32())), + pa.field("labels", pa.large_list(pa.int32())), + pa.field("position_ids", pa.large_list(pa.int32())), + pa.field("sequence_lengths", pa.large_list(pa.int64())), + ] +) + +DATASET_INFO = r"""{ + "citation": "", + "description": "", + "features": { + "inputs": { + "feature": { + "dtype": "int32", + "_type": "Value" + }, + "_type": "LargeList" + }, + "labels": { + "feature": { + "dtype": "int32", + "_type": "Value" + }, + "_type": "LargeList" + }, + "position_ids": { + "feature": { + "dtype": "int32", + "_type": "Value" + }, + "_type": "LargeList" + }, + "sequence_lengths": { + "feature": { + "dtype": "int64", + "_type": "Value" + }, + "_type": "LargeList" + } + }, + "homepage": "", + "license": "" +}""" + + +def process_packing_shard(shard, args, tokenizer_pad_id, rank, world_size): + packer = PackedDataset( + shard, + max_seq_len=args.pack_to_sequence_length, + padding_idx=tokenizer_pad_id, + split_across_pack=not args.chat, + show_pbar=rank == 0, + ) + + if args.save_to_disk: + # create a schema that uses int64 for list sizes + + example = ( + { + "inputs": packer.packs[0]["inputs"], + "labels": packer.packs[0]["labels"], + "position_ids": packer.packs[0]["position_ids"], + "sequence_lengths": packer.packs[0]["sequence_lengths"], + } + if len(packer.packs) > 0 + else None + ) + + oriented_data = { + "inputs": [pack["inputs"] for pack in packer.packs], + "labels": [pack["labels"] for pack in packer.packs], + "position_ids": [pack["position_ids"] for pack in packer.packs], + "sequence_lengths": [pack["sequence_lengths"] for pack in packer.packs], + } + pa_table = pa.Table.from_pydict(oriented_data, schema=SCHEMA) + del oriented_data + + pa_ds.write_dataset( + pa_table, + os.path.join(args.save_to_disk, str(rank)), + format="arrow", + ) + + filename = f"data-{rank:05d}-of-{world_size:05d}.arrow" + + shutil.move( + os.path.join(args.save_to_disk, str(rank), "part-0.arrow"), + os.path.join(args.save_to_disk, filename), + ) + + os.rmdir(os.path.join(args.save_to_disk, str(rank))) + else: + filename = None + + return packer.total_tokens, packer.packed_tokens, packer.dropped, filename, example + + +# https://github.com/pytorch/torchtune/blob/9d91fe39f08661952da4180b9e7fb2eba5a7a5e7/torchtune/datasets/_packed.py +class PackedDataset(Dataset): + """ + Performs greedy sample packing on a provided dataset. This is done as a single + preprocessing step before training begins. Shuffling is done outside of this + class on packed samples with a ``Sampler`` as part of the dataloader. Currently, + this only supports in-memory map-style datasets. + + The class loads, tokenizes, and packs examples on initialization - no tokenization is done during training. + + The general flow on initialization is: load tokenized sample -> add to buffer -> + when buffer is long enough, add to ``self.packs``. + + During training, returns self.packs[idx] as input, label, attention mask, and + position ids. The attention mask is a lower triangular block mask to prevent + samples from cross-attending within a pack. The position ids indicate the position + of each token relative to its sample within a pack. These are all padded to max + sequence length, so a batch-wise collator is not needed. + + A packed sample is made up of individual smaller sequence length samples jammed together + within ``max_seq_len``. For example, if max_seq_len is 6 and there are varied + length samples:: + + tokens = [ + [S1, S1, S1, S2, S2, pad], + [S3, S3, S4, S4, pad, pad], + ..., + ] + + To prevent cross-contamination, the following mask would be returned for the + first pack in the example:: + + mask = [ + [1, 0, 0, 0, 0, 0], + [1, 1, 0, 0, 0, 0], + [1, 1, 1, 0, 0, 0], + [0, 0, 0, 1, 0, 0], + [0, 0, 0, 1, 1, 0], + [0, 0, 0, 0, 0, 1], + ] + + The position ids would be:: + + input_pos = [ + [0, 1, 2, 0, 1, 2], + [0, 1, 0, 1, 2, 3], + ..., + ] + + The identity matrix is used in the mask for pad tokens instead of a causal mask. + For position ids for pad tokens, we simply continue to increment from the previous + sample normally. + + Args: + ds (Dataset): dataset to sample pack. This should return a dictionary with field + "tokens" and "labels" containing the tokenized and label samples. + max_seq_len (int): Maximum number of tokens to pack + padding_idx (int): padding index for the tokenizer. Default is 0. + max_packs (Optional[int]): Maximum number of packs. Default is None, which will create as many + packs as possible. + split_across_pack (bool): if the last sample in a pack does not fit in ``max_seq_len``, + split the sample into the next pack, or move it entirely to the beginning of the next pack. + For pre-training, typically this is set to True for general text completion. For + fine-tuning, typically this is set to False to avoid truncating sentences in instruct + tuning. Default is False. + """ + + def __init__( + self, + ds: Dataset, + *, + max_seq_len: int, + padding_idx: int = 0, + max_packs: Optional[int] = None, + split_across_pack: bool = False, + group_size: int = 5000, + show_pbar=True, + ) -> None: + self.ds = ds + self.max_seq_len = max_seq_len + self.padding_idx = padding_idx + self.max_packs = max_packs + self.split_across_pack = split_across_pack + self.packs = [] + self.previous_sample_boundary: int = 0 + self.packed_tokens: int = 0 + self.total_tokens: int = 0 + self.dropped: int = 0 + self.show_pbar = show_pbar + self.group_size = group_size + if split_across_pack: + self._pack_greedy() + else: + self._pack_ffd() + + def _get_empty_pack(self): + + return { + "inputs": np.empty(0, dtype=np.int32), + "labels": np.empty(0, dtype=np.int32), + "position_ids": np.empty(0, dtype=np.int32), + "sequence_lengths": [], + } + + def _pack_ffd(self) -> None: + ds_iterator = iter(self.ds) + finished_iterating = False + + pbar = ( + tqdm( + total=len(self.ds), + desc="Packing dataset (FFD)", + dynamic_ncols=True, + ) + if self.show_pbar + else None + ) + + while not finished_iterating: + # 1. Fetch a large group of samples into memory. + group = [] + try: + for _ in range(self.group_size): + sample = next(ds_iterator) + seq_len = len(sample["inputs"]) + + if seq_len > self.max_seq_len: + self.dropped += 1 + continue + # Store sample and its length for sorting + group.append({"sample": sample, "seq_len": seq_len}) + except StopIteration: + finished_iterating = True + + if not group: + break + + # 2. Sort the group by length in descending order (the "Decreasing" part of FFD). + group.sort(key=lambda x: x["seq_len"], reverse=True) + + # 3. Pack this group using the "First-Fit" heuristic. + # Each bin holds the samples it contains and its remaining space. + bins = [] # List of {"samples": [], "remaining_space": max_seq_len} + + for item in group: + placed = False + # Try to place the item in the first available bin. + for bin in bins: + if bin["remaining_space"] >= item["seq_len"]: + bin["samples"].append(item["sample"]) + bin["remaining_space"] -= item["seq_len"] + placed = True + break + + # If no existing bin could accommodate the item, create a new one. + if not placed: + bins.append( + { + "samples": [item["sample"]], + "remaining_space": self.max_seq_len - item["seq_len"], + } + ) + + # 4. Convert the completed bins from this group into final, padded packs. + for bin_info in bins: + if self._should_stop_packing(): + break + + current_pack = self._get_empty_pack() + for sample in bin_info["samples"]: + tokens = np.array(sample["inputs"], dtype=np.int32) + labels = np.array(sample["labels"], dtype=np.int32) + seq_len = len(tokens) + + current_pack["inputs"] = np.concatenate( + (current_pack["inputs"], tokens) + ) + current_pack["labels"] = np.concatenate( + (current_pack["labels"], labels) + ) + current_pack["position_ids"] = np.concatenate( + ( + current_pack["position_ids"], + np.arange(seq_len, dtype=np.int32), + ) + ) + current_pack["sequence_lengths"].append(seq_len) + + self._add_pack(current_pack) + + if pbar: + pbar.update(len(group)) + + if self._should_stop_packing(): + # Ensure the outer loop breaks if max_packs is reached. + break + + if pbar: + # Manually set pbar to total to show 100% at the end + pbar.n = pbar.total + pbar.refresh() + pbar.close() + + def _pack_greedy(self) -> None: + """Iterate through the dataset. Use a buffer to hold samples until max_seq_len, + then append the buffer to self.packs as a single "packed" sample. Continue + until max_packs or end of dataset.""" + + current_pack = self._get_empty_pack() + + pbar = ( + tqdm(total=len(self.ds), desc="Packing dataset", dynamic_ncols=True) + if self.show_pbar + else None + ) + + for sample in self.ds: + tokens = np.array(sample["inputs"], dtype=np.int32) + labels = np.array(sample["labels"], dtype=np.int32) + + seq_len = len(tokens) + if seq_len > self.max_seq_len and not self.split_across_pack: + # print( + # f"Dropping sample that is too long ({seq_len} > {self.max_seq_len})" + # ) + self.dropped += 1 + continue + + current_pack["inputs"] = np.concatenate((current_pack["inputs"], tokens)) + current_pack["labels"] = np.concatenate((current_pack["labels"], labels)) + + position_ids = np.arange(seq_len, dtype=np.int32) + current_pack["position_ids"] = np.concatenate( + (current_pack["position_ids"], position_ids) + ) + + current_pack["sequence_lengths"] += [seq_len] + + while ( + len(current_pack["inputs"]) > self.max_seq_len + and not self._should_stop_packing() + ): + current_pack = self._split_and_add_pack(current_pack) + + if pbar: + pbar.update() + + self.previous_sample_boundary = len(current_pack["inputs"]) + + if self._should_stop_packing(): + break + + if len(current_pack["inputs"]) > 0 and ( + self.max_packs is None or len(self.packs) < self.max_packs + ): + self._add_pack(current_pack) + + def _should_stop_packing(self) -> bool: + """If max packs is set, stop packing when we reach that number.""" + + if self.max_packs is not None and len(self.packs) == self.max_packs: + return True + return False + + def _split_and_add_pack(self, current_pack): + """Splits the current pack at the boundary, processes it, adds it to ``self.packs`` and + returns the start of the next pack.""" + + if self.split_across_pack: + boundary = self.max_seq_len + # The last elem in ``seq_lens`` ensures that ``sum(seq_lens) == self.max_seq_len`` + leftover_seq_len = self.max_seq_len - sum(current_pack["seq_lens"][:-1]) + seq_len_padding = [leftover_seq_len] if leftover_seq_len > 0 else [] + else: + boundary = self.previous_sample_boundary + # If we aren't splitting across packs, we leave out the last sample b/c + # it will go into the next pack + seq_len_padding = [] + + pack = { + "inputs": current_pack["inputs"][:boundary], + "labels": current_pack["labels"][:boundary], + "position_ids": current_pack["position_ids"][:boundary], + "sequence_lengths": current_pack["sequence_lengths"][:-1] + seq_len_padding, + } + + self._add_pack(pack) + + # Return the length of the first sample in next pack if we are splitting across packs, + # otherwise return the length of the last sample in the current pack + next_seq_len = ( + len(current_pack["inputs"][boundary:]) + if self.split_across_pack + else current_pack["sequence_lengths"][-1] + ) + + return { + "inputs": current_pack["inputs"][boundary:], + "labels": current_pack["labels"][boundary:], + "position_ids": current_pack["position_ids"][boundary:], + "sequence_lengths": [next_seq_len], + } + + def _add_pack(self, pack) -> None: + """Processes, pads and adds a pack to ``self.packs``.""" + pack = self._pad_pack(pack, padding_idx=self.padding_idx) + self.packs.append(pack) + + def _pad_pack(self, pack, padding_idx: int): + """Pads a pack to ``self.max_seq_len``.""" + num_tokens = len(pack["inputs"]) + num_padding_tokens = self.max_seq_len - num_tokens + + self.packed_tokens += num_tokens + self.total_tokens += self.max_seq_len + + padded_inputs = np.pad( + pack["inputs"], (0, num_padding_tokens), constant_values=self.padding_idx + ) + padded_labels = np.pad( + pack["labels"], (0, num_padding_tokens), constant_values=-100 + ) + + if num_padding_tokens > 0: + # don't care much about padded position_ids, but create them for consistency + start_pos = int(pack["position_ids"][-1] + 1) if num_tokens > 0 else 0 + pad_positions = np.arange( + start_pos, start_pos + num_padding_tokens, dtype=np.int32 + ) + padded_position_ids = np.concatenate((pack["position_ids"], pad_positions)) + else: + padded_position_ids = pack["position_ids"] + + padded_seq_lens = pack["sequence_lengths"] + if num_padding_tokens > 0: + padded_seq_lens.append(num_padding_tokens) + + return { + "inputs": padded_inputs, + "labels": padded_labels, + "position_ids": padded_position_ids, + "sequence_lengths": padded_seq_lens, + } + + def __len__(self) -> int: + return len(self.packs) + + def __getitem__(self, idx: int) -> dict[str, np.ndarray]: + return self.packs[idx] + + +def main(args): + + from datasets import load_dataset + + SYSTEM_PROMPT = "You are a helpful assistant." + image_url = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/bee.jpg" + + ds = [{"messages": [ + { + "role": "user", + "content": [ + { + "type": "text", + "text": "What action do you think I should take in this situation? List all the possible actions and explain why you think they are good or bad.", + }, + {"type": "image_url", "image_url": {"url": image_url}}, + ], + }, +]}] + + ds = ds * 10 + + + with open('dataset.json', 'w') as f: + json.dump(ds, f) + + dataset = load_dataset('json', data_files='dataset.json')['train'] + + def remove_none_recursively(obj): + if isinstance(obj, dict): + return {k: remove_none_recursively(v) for k, v in obj.items() if v is not None} + elif isinstance(obj, list): + return [remove_none_recursively(item) for item in obj] + else: + return obj + + #dataset = load_dataset(args.dataset, name=args.subset, split=args.split) + #tokenizer = AutoTokenizer.from_pretrained(args.tokenizer) + tokenizer = MistralTokenizer.from_hf_hub(args.preprocessor) + + def _tokenize_mistral(sample): + messages = sample["messages"] + cleaned_messages = remove_none_recursively(messages) + print(f"CLEANED MESSAGES: {cleaned_messages}") + tokenized = tokenizer.encode_chat_completion(ChatCompletionRequest(messages=cleaned_messages)) + return tokenized.__dict__ + + dataset = dataset.shuffle(args.seed) + + original_column_names = list(dataset.features.keys()) + + + dataset = dataset.map( + _tokenize_mistral, + #batched=True, + #3batch_size=args.batch_size, + #num_proc=args.num_proc, + ) + + dataset = dataset.remove_columns(original_column_names) + + efficiency = 1.0 + dropped = 0 + if args.pack_to_sequence_length: + num_shards = 64 # args.num_proc + shards = [ + dataset.shard(num_shards=num_shards, index=i) for i in range(num_shards) + ] + with multiprocessing.Pool(processes=num_shards) as pool: + process_args = [ + (shard, args, tokenizer.pad_token_id, index, num_shards) + for index, shard in enumerate(shards) + ] + + results = pool.starmap(process_packing_shard, process_args) + + examples = [] + filenames = [] + total_tokens = 0 + packed_tokens = 0 + + for total, packed, dropped_, filename, example in tqdm(results): + if example: + examples.append(example) + if filename: + filenames.append(filename) + total_tokens += total + packed_tokens += packed + dropped += dropped_ + + if total_tokens > 0: + efficiency = packed_tokens / total_tokens + + example = examples[0] + + + + if args.save_to_disk: + with open(os.path.join(args.save_to_disk, "dataset_info.json"), "wb") as f: + f.write(DATASET_INFO.encode()) + + # verify we can open and do any conversion needed + dataset = load_dataset(args.save_to_disk, num_proc=args.num_proc) + + else: + if args.drop_larger_than: + len_before = len(dataset) + dataset = dataset.filter( + lambda x: len(x["inputs"]) <= args.drop_larger_than + ) + dropped = len_before - len(dataset) + + if args.save_to_disk: + print(f"Saving to {args.save_to_disk}") + dataset.save_to_disk(args.save_to_disk) + + example = dataset[0] + + if args.show_example: + inputs = example["inputs"] + labels = example["labels"] if "labels" in example else None + position_ids = example["position_ids"] if "position_ids" in example else None + + example_out = "" + for i in range(0, len(inputs)): + token = inputs[i] + label = labels[i] if labels is not None else token + position_id = position_ids[i] if position_ids is not None else None + + decoded = tokenizer.decode(token) + + if label == -100: + example_out += f"\033[31m{decoded}\033[0m({token}" + else: + example_out += f"\033[32m{decoded}\033[0m({token}" + + if position_id != None: + example_out += f"@{position_id})" + else: + example_out += ")" + + print(example_out) + + if dropped > 0: + print(f"Dropped {dropped} too-long samples") + print(f"Efficiency: {efficiency * 100:.1f}%") + + +if __name__ == "__main__": + parser = argparse.ArgumentParser() + parser.add_argument("--dataset", type=str, required=True) + parser.add_argument("--subset", type=str) + parser.add_argument("--split", type=str, default="train") + parser.add_argument("--preprocessor", type=str, required=True) + parser.add_argument("--batch-size", type=int, default=1000) + parser.add_argument("--num-proc", type=int) + parser.add_argument("--seed", type=int, default=42) + parser.add_argument("--limit", type=int) + parser.add_argument("--chat", action="store_true") + parser.add_argument("--multiturn-only", action="store_true") + parser.add_argument("--pack-to-sequence-length", type=int) + parser.add_argument("--drop-larger-than", type=int) + parser.add_argument("--save-to-disk", type=str) + parser.add_argument("--show-example", action="store_true") + args = parser.parse_args() + + main(args) From e3a0056a06b00fa3e2ec4bafe0b6516b9df4c04b Mon Sep 17 00:00:00 2001 From: Artem Yatsenko Date: Mon, 4 Aug 2025 23:44:05 +0000 Subject: [PATCH 11/28] add packing with images --- scripts/preprocess_multimodal_data.py | 131 +++++++++++++++++++++++--- 1 file changed, 116 insertions(+), 15 deletions(-) diff --git a/scripts/preprocess_multimodal_data.py b/scripts/preprocess_multimodal_data.py index 7f90c57e86..203eac2af0 100644 --- a/scripts/preprocess_multimodal_data.py +++ b/scripts/preprocess_multimodal_data.py @@ -47,6 +47,15 @@ from datasets import load_dataset, Dataset as DatasetsDataset from transformers import AutoTokenizer +from datetime import datetime, timedelta +import torch + +from mistral_common.protocol.instruct.request import ChatCompletionRequest +from mistral_common.tokens.tokenizers.mistral import MistralTokenizer +from huggingface_hub import hf_hub_download +from transformers import Mistral3ForConditionalGeneration + + SCHEMA = pa.schema( [ pa.field("inputs", pa.large_list(pa.int32())), @@ -88,6 +97,20 @@ }, "_type": "LargeList" } + "pixel_values": { + "feature": { + "dtype": "bfloat16", + "_type": "Value" + }, + "_type": "LargeList" + } + "image_sizes": { + "feature": { + "dtype": "bfloat16", + "_type": "Value" + }, + "_type": "LargeList" + } }, "homepage": "", "license": "" @@ -95,7 +118,7 @@ def process_packing_shard(shard, args, tokenizer_pad_id, rank, world_size): - packer = PackedDataset( + packer = MultimodalPackedDataset( shard, max_seq_len=args.pack_to_sequence_length, padding_idx=tokenizer_pad_id, @@ -103,6 +126,8 @@ def process_packing_shard(shard, args, tokenizer_pad_id, rank, world_size): show_pbar=rank == 0, ) + print(packer.packs) + if args.save_to_disk: # create a schema that uses int64 for list sizes @@ -112,6 +137,8 @@ def process_packing_shard(shard, args, tokenizer_pad_id, rank, world_size): "labels": packer.packs[0]["labels"], "position_ids": packer.packs[0]["position_ids"], "sequence_lengths": packer.packs[0]["sequence_lengths"], + "pixel_values": packer.packs[0]["pixel_values"], + "image_sizes": packer.packs[0]["image_sizes"], } if len(packer.packs) > 0 else None @@ -122,6 +149,8 @@ def process_packing_shard(shard, args, tokenizer_pad_id, rank, world_size): "labels": [pack["labels"] for pack in packer.packs], "position_ids": [pack["position_ids"] for pack in packer.packs], "sequence_lengths": [pack["sequence_lengths"] for pack in packer.packs], + "pixel_values": [pack["pixel_values"] for pack in packer.packs], + "image_sizes": [pack["image_sizes"] for pack in packer.packs], } pa_table = pa.Table.from_pydict(oriented_data, schema=SCHEMA) del oriented_data @@ -147,7 +176,7 @@ def process_packing_shard(shard, args, tokenizer_pad_id, rank, world_size): # https://github.com/pytorch/torchtune/blob/9d91fe39f08661952da4180b9e7fb2eba5a7a5e7/torchtune/datasets/_packed.py -class PackedDataset(Dataset): +class MultimodalPackedDataset(Dataset): """ Performs greedy sample packing on a provided dataset. This is done as a single preprocessing step before training begins. Shuffling is done outside of this @@ -248,6 +277,8 @@ def _get_empty_pack(self): "labels": np.empty(0, dtype=np.int32), "position_ids": np.empty(0, dtype=np.int32), "sequence_lengths": [], + "pixel_values": [], + "image_sizes": [], } def _pack_ffd(self) -> None: @@ -318,8 +349,12 @@ def _pack_ffd(self) -> None: for sample in bin_info["samples"]: tokens = np.array(sample["inputs"], dtype=np.int32) labels = np.array(sample["labels"], dtype=np.int32) + images = sample["images"] seq_len = len(tokens) + pixel_values = torch.tensor(images).to(dtype=torch.bfloat16) + image_sizes = torch.tensor([[pixel_values.shape[-2], pixel_values.shape[-1]]] * len(images)) + current_pack["inputs"] = np.concatenate( (current_pack["inputs"], tokens) ) @@ -333,6 +368,8 @@ def _pack_ffd(self) -> None: ) ) current_pack["sequence_lengths"].append(seq_len) + current_pack["pixel_values"].extend(pixel_values) + current_pack["image_sizes"].extend(image_sizes) self._add_pack(current_pack) @@ -488,6 +525,8 @@ def _pad_pack(self, pack, padding_idx: int): "labels": padded_labels, "position_ids": padded_position_ids, "sequence_lengths": padded_seq_lens, + "pixel_values": pack["pixel_values"], + "image_sizes": pack["image_sizes"], } def __len__(self) -> int: @@ -500,6 +539,7 @@ def __getitem__(self, idx: int) -> dict[str, np.ndarray]: def main(args): from datasets import load_dataset + """ SYSTEM_PROMPT = "You are a helpful assistant." image_url = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/bee.jpg" @@ -519,11 +559,13 @@ def main(args): ds = ds * 10 - with open('dataset.json', 'w') as f: json.dump(ds, f) + """ - dataset = load_dataset('json', data_files='dataset.json')['train'] + dataset = load_dataset('json', data_files='/home/artem_nous/cambrian_set/output2.json')['train'] + + #dataset = load_dataset(args.dataset, name=args.subset, split=args.split) def remove_none_recursively(obj): if isinstance(obj, dict): @@ -537,10 +579,70 @@ def remove_none_recursively(obj): #tokenizer = AutoTokenizer.from_pretrained(args.tokenizer) tokenizer = MistralTokenizer.from_hf_hub(args.preprocessor) - def _tokenize_mistral(sample): + def _tokenize_chat_multimodal(sample): + inputs = [] + labels = [] + images = [] + + for conversation in sample["messages"]: + for message in conversation: + + keys = list(message.keys()) + + if "from" in keys and "value" in keys: + # sharegpt format + message_from = message.pop("from") + if message_from == "gpt": + message["role"] = "assistant" + elif message_from == "human": + message["role"] = "user" + else: + message["role"] = message_from + + message["content"] = message.pop("value") + elif "role" in keys and "content" in keys: + pass + else: + raise RuntimeError(f"Unknown chat format, keys are {keys}") + + + conversation = remove_none_recursively(conversation) + + tokenized = tokenizer.encode_chat_completion(ChatCompletionRequest(messages=conversation)) + tokens = tokenized.tokens #tokenizer.apply_chat_template(conversation, tokenize=True) + image = tokenized.images + label = [] + + current_len = 0 + for i in range(len(conversation)): + if i + 1 == len(conversation): + next_tokens = tokenizer.encode_chat_completion(ChatCompletionRequest(messages=conversation)).tokens[current_len:] + else: + if "assistant" == conversation[i + 1]["role"]: + next_tokens = tokenizer.encode_chat_completion(ChatCompletionRequest(messages=conversation[: i + 1])).tokens[current_len:] + else: + next_tokens = tokenizer.encode_chat_completion(ChatCompletionRequest(messages=conversation[: i + 1])).tokens[current_len:] + + if conversation[i]["role"] == "assistant": + label.extend(next_tokens) + else: + label.extend([-100] * len(next_tokens)) + + current_len += len(next_tokens) + + inputs.append(tokens) + labels.append(label) + images.append(image) + + return { + "inputs": inputs, + "labels": labels, + "images": images, + } + + def _tokenize_mistral_format(sample): messages = sample["messages"] cleaned_messages = remove_none_recursively(messages) - print(f"CLEANED MESSAGES: {cleaned_messages}") tokenized = tokenizer.encode_chat_completion(ChatCompletionRequest(messages=cleaned_messages)) return tokenized.__dict__ @@ -548,12 +650,11 @@ def _tokenize_mistral(sample): original_column_names = list(dataset.features.keys()) - dataset = dataset.map( - _tokenize_mistral, - #batched=True, - #3batch_size=args.batch_size, - #num_proc=args.num_proc, + _tokenize_chat_multimodal, + batched=True, + batch_size=args.batch_size, + num_proc=args.num_proc, ) dataset = dataset.remove_columns(original_column_names) @@ -561,13 +662,15 @@ def _tokenize_mistral(sample): efficiency = 1.0 dropped = 0 if args.pack_to_sequence_length: - num_shards = 64 # args.num_proc + num_shards = 1 # args.num_proc shards = [ dataset.shard(num_shards=num_shards, index=i) for i in range(num_shards) ] + + with multiprocessing.Pool(processes=num_shards) as pool: process_args = [ - (shard, args, tokenizer.pad_token_id, index, num_shards) + (shard, args, tokenizer.instruct_tokenizer.tokenizer.pad_id, index, num_shards) for index, shard in enumerate(shards) ] @@ -592,8 +695,6 @@ def _tokenize_mistral(sample): example = examples[0] - - if args.save_to_disk: with open(os.path.join(args.save_to_disk, "dataset_info.json"), "wb") as f: f.write(DATASET_INFO.encode()) From dc8f6cd56522d2d45eea4bb610ae3d363452e6df Mon Sep 17 00:00:00 2001 From: Artem Yatsenko Date: Tue, 5 Aug 2025 00:51:07 +0000 Subject: [PATCH 12/28] hf preprocess instead of mistral --- scripts/preprocess_multimodal_data.py | 60 ++++++++++++++++++--------- 1 file changed, 40 insertions(+), 20 deletions(-) diff --git a/scripts/preprocess_multimodal_data.py b/scripts/preprocess_multimodal_data.py index 203eac2af0..b45ead3c86 100644 --- a/scripts/preprocess_multimodal_data.py +++ b/scripts/preprocess_multimodal_data.py @@ -302,6 +302,7 @@ def _pack_ffd(self) -> None: for _ in range(self.group_size): sample = next(ds_iterator) seq_len = len(sample["inputs"]) + print(seq_len) if seq_len > self.max_seq_len: self.dropped += 1 @@ -403,7 +404,6 @@ def _pack_greedy(self) -> None: tokens = np.array(sample["inputs"], dtype=np.int32) labels = np.array(sample["labels"], dtype=np.int32) - seq_len = len(tokens) if seq_len > self.max_seq_len and not self.split_across_pack: # print( # f"Dropping sample that is too long ({seq_len} > {self.max_seq_len})" @@ -563,7 +563,7 @@ def main(args): json.dump(ds, f) """ - dataset = load_dataset('json', data_files='/home/artem_nous/cambrian_set/output2.json')['train'] + dataset = load_dataset('json', data_files='/home/artem_nous/cambrian_set/output2.json')['train'].select(range(100)) #dataset = load_dataset(args.dataset, name=args.subset, split=args.split) @@ -577,18 +577,32 @@ def remove_none_recursively(obj): #dataset = load_dataset(args.dataset, name=args.subset, split=args.split) #tokenizer = AutoTokenizer.from_pretrained(args.tokenizer) - tokenizer = MistralTokenizer.from_hf_hub(args.preprocessor) + #tokenizer = MistralTokenizer.from_hf_hub(args.preprocessor) + from transformers import AutoProcessor + tokenizer = AutoProcessor.from_pretrained(args.preprocessor, use_fast=True) + def _tokenize_chat_multimodal(sample): inputs = [] labels = [] images = [] - for conversation in sample["messages"]: + for conversation in [sample["messages"]]: for message in conversation: keys = list(message.keys()) + """ + for content in message['content']: + if content.get('base64'): + content['type'] = 'image_url' + content['image_url'] = content['base64'] + content['image_url'] = f"data:image/jpeg;base64,{content['base64']}" + #print(content['base64'][:100]) + # remove base64 + content.pop('base64') + """ + if "from" in keys and "value" in keys: # sharegpt format message_from = message.pop("from") @@ -608,20 +622,27 @@ def _tokenize_chat_multimodal(sample): conversation = remove_none_recursively(conversation) - tokenized = tokenizer.encode_chat_completion(ChatCompletionRequest(messages=conversation)) - tokens = tokenized.tokens #tokenizer.apply_chat_template(conversation, tokenize=True) - image = tokenized.images - label = [] + #print(conversation) + + #tokenized = tokenizer.encode_chat_completion(ChatCompletionRequest(messages=conversation)) + tokenized = tokenizer.apply_chat_template(conversation, tokenize=True, return_dict=True) + tokens = tokenized["input_ids"][0] #tokenizer.apply_chat_template(conversation, tokenize=True) + image = tokenized["pixel_values"][0] current_len = 0 + label = [] for i in range(len(conversation)): if i + 1 == len(conversation): - next_tokens = tokenizer.encode_chat_completion(ChatCompletionRequest(messages=conversation)).tokens[current_len:] + next_tokens = tokenizer.apply_chat_template(conversation, + tokenize=True, return_dict=True, return_tensors="pt")["input_ids"][0][current_len:] else: if "assistant" == conversation[i + 1]["role"]: - next_tokens = tokenizer.encode_chat_completion(ChatCompletionRequest(messages=conversation[: i + 1])).tokens[current_len:] + next_tokens = tokenizer.apply_chat_template(conversation[: i + 1], + add_generation_prompt=True, tokenize=True, return_dict=True)["input_ids"][0][current_len:] else: - next_tokens = tokenizer.encode_chat_completion(ChatCompletionRequest(messages=conversation[: i + 1])).tokens[current_len:] + next_tokens = tokenizer.apply_chat_template(conversation[: i + 1], + tokenize=True, return_dict=True)["input_ids"][0][current_len:] + #next_tokens = tokenizer.encode_chat_completion(ChatCompletionRequest(messages=conversation[: i + 1])).tokens[current_len:] if conversation[i]["role"] == "assistant": label.extend(next_tokens) @@ -634,11 +655,11 @@ def _tokenize_chat_multimodal(sample): labels.append(label) images.append(image) - return { - "inputs": inputs, - "labels": labels, - "images": images, - } + return { + "inputs": tokens, + "labels": label, + "images": image, + } def _tokenize_mistral_format(sample): messages = sample["messages"] @@ -652,9 +673,8 @@ def _tokenize_mistral_format(sample): dataset = dataset.map( _tokenize_chat_multimodal, - batched=True, - batch_size=args.batch_size, - num_proc=args.num_proc, + #batched=True, + #batch_size=args.batch_size, ) dataset = dataset.remove_columns(original_column_names) @@ -670,7 +690,7 @@ def _tokenize_mistral_format(sample): with multiprocessing.Pool(processes=num_shards) as pool: process_args = [ - (shard, args, tokenizer.instruct_tokenizer.tokenizer.pad_id, index, num_shards) + (shard, args, tokenizer.tokenizer.pad_token_id, index, num_shards) for index, shard in enumerate(shards) ] From cba826ee39af762b93940bb750db0583f226d175 Mon Sep 17 00:00:00 2001 From: Artem Yatsenko Date: Thu, 14 Aug 2025 01:06:25 +0000 Subject: [PATCH 13/28] add back vision encoder, make change to preprocess (we now only keep image filepaths) --- scripts/convert_mistral_hf_to_dcp.py | 10 +- scripts/preprocess_multimodal_data.py | 131 ++++---- torchtitan/models/mistral3/__init__.py | 5 +- .../models/mistral3/infra/parallelize.py | 9 +- torchtitan/models/mistral3/model/args.py | 1 + torchtitan/models/mistral3/model/model.py | 283 +++++++++++++----- .../train_configs/mistral24b_finetuning.toml | 6 +- 7 files changed, 288 insertions(+), 157 deletions(-) diff --git a/scripts/convert_mistral_hf_to_dcp.py b/scripts/convert_mistral_hf_to_dcp.py index c4fc6f9aea..23d30aa75a 100644 --- a/scripts/convert_mistral_hf_to_dcp.py +++ b/scripts/convert_mistral_hf_to_dcp.py @@ -150,14 +150,16 @@ def convert_mistral3_weights(mistral_model, output_dir, max_seq_len: int): # Copy over vision tower weights, restructuring to put them under model.vision_encoder.pixtral_vision vision_keys = [k for k in hf_state_dict.keys() if k.startswith("vision_tower.")] for key in vision_keys: - # Replace vision_tower with vision_encoder.pixtral_vision in the key path - new_key = key.replace("vision_tower", "vision_encoder.pixtral_vision") - state_dict[new_key] = hf_state_dict[key] + state_dict[key] = hf_state_dict[key] + # # Replace vision_tower with vision_encoder.pixtral_vision in the key path + # new_key = key.replace("vision_tower", "vision_encoder.pixtral_vision") + # state_dict[new_key] = hf_state_dict[key] + #state_dict[''] # Multi-modal projector mm_keys = [k for k in hf_state_dict.keys() if k.startswith("multi_modal_projector.")] for key in mm_keys: - state_dict["vision_encoder." + key] = hf_state_dict[key] + state_dict[ key] = hf_state_dict[key] # TODO figure out how to not hardcode dims_per_head = 128 diff --git a/scripts/preprocess_multimodal_data.py b/scripts/preprocess_multimodal_data.py index b45ead3c86..cd6e57ebea 100644 --- a/scripts/preprocess_multimodal_data.py +++ b/scripts/preprocess_multimodal_data.py @@ -37,6 +37,10 @@ import pyarrow.dataset as pa_ds import random import json +import base64 +import uuid +from PIL import Image +import io from mistral_common.protocol.instruct.request import ChatCompletionRequest from mistral_common.tokens.tokenizers.mistral import MistralTokenizer @@ -56,12 +60,15 @@ from transformers import Mistral3ForConditionalGeneration +LOCAL_IMAGE_DIR = "/home/artem_nous/tt/torchtitan/scripts/images" + SCHEMA = pa.schema( [ pa.field("inputs", pa.large_list(pa.int32())), pa.field("labels", pa.large_list(pa.int32())), pa.field("position_ids", pa.large_list(pa.int32())), pa.field("sequence_lengths", pa.large_list(pa.int64())), + pa.field("images", pa.large_list(pa.string())), ] ) @@ -97,16 +104,9 @@ }, "_type": "LargeList" } - "pixel_values": { - "feature": { - "dtype": "bfloat16", - "_type": "Value" - }, - "_type": "LargeList" - } - "image_sizes": { + "images": { "feature": { - "dtype": "bfloat16", + "dtype": "str", "_type": "Value" }, "_type": "LargeList" @@ -126,7 +126,6 @@ def process_packing_shard(shard, args, tokenizer_pad_id, rank, world_size): show_pbar=rank == 0, ) - print(packer.packs) if args.save_to_disk: # create a schema that uses int64 for list sizes @@ -137,8 +136,7 @@ def process_packing_shard(shard, args, tokenizer_pad_id, rank, world_size): "labels": packer.packs[0]["labels"], "position_ids": packer.packs[0]["position_ids"], "sequence_lengths": packer.packs[0]["sequence_lengths"], - "pixel_values": packer.packs[0]["pixel_values"], - "image_sizes": packer.packs[0]["image_sizes"], + "images": packer.packs[0]["images"], } if len(packer.packs) > 0 else None @@ -149,8 +147,7 @@ def process_packing_shard(shard, args, tokenizer_pad_id, rank, world_size): "labels": [pack["labels"] for pack in packer.packs], "position_ids": [pack["position_ids"] for pack in packer.packs], "sequence_lengths": [pack["sequence_lengths"] for pack in packer.packs], - "pixel_values": [pack["pixel_values"] for pack in packer.packs], - "image_sizes": [pack["image_sizes"] for pack in packer.packs], + "images": [pack["images"] for pack in packer.packs], } pa_table = pa.Table.from_pydict(oriented_data, schema=SCHEMA) del oriented_data @@ -277,8 +274,7 @@ def _get_empty_pack(self): "labels": np.empty(0, dtype=np.int32), "position_ids": np.empty(0, dtype=np.int32), "sequence_lengths": [], - "pixel_values": [], - "image_sizes": [], + "images": [], } def _pack_ffd(self) -> None: @@ -302,7 +298,7 @@ def _pack_ffd(self) -> None: for _ in range(self.group_size): sample = next(ds_iterator) seq_len = len(sample["inputs"]) - print(seq_len) + if seq_len > self.max_seq_len: self.dropped += 1 @@ -315,6 +311,7 @@ def _pack_ffd(self) -> None: if not group: break + # 2. Sort the group by length in descending order (the "Decreasing" part of FFD). group.sort(key=lambda x: x["seq_len"], reverse=True) @@ -341,6 +338,7 @@ def _pack_ffd(self) -> None: } ) + # 4. Convert the completed bins from this group into final, padded packs. for bin_info in bins: if self._should_stop_packing(): @@ -353,8 +351,6 @@ def _pack_ffd(self) -> None: images = sample["images"] seq_len = len(tokens) - pixel_values = torch.tensor(images).to(dtype=torch.bfloat16) - image_sizes = torch.tensor([[pixel_values.shape[-2], pixel_values.shape[-1]]] * len(images)) current_pack["inputs"] = np.concatenate( (current_pack["inputs"], tokens) @@ -369,11 +365,12 @@ def _pack_ffd(self) -> None: ) ) current_pack["sequence_lengths"].append(seq_len) - current_pack["pixel_values"].extend(pixel_values) - current_pack["image_sizes"].extend(image_sizes) + current_pack["images"].append(images) + self._add_pack(current_pack) + if pbar: pbar.update(len(group)) @@ -525,8 +522,7 @@ def _pad_pack(self, pack, padding_idx: int): "labels": padded_labels, "position_ids": padded_position_ids, "sequence_lengths": padded_seq_lens, - "pixel_values": pack["pixel_values"], - "image_sizes": pack["image_sizes"], + "images": pack["images"], } def __len__(self) -> int: @@ -539,34 +535,9 @@ def __getitem__(self, idx: int) -> dict[str, np.ndarray]: def main(args): from datasets import load_dataset - """ - - SYSTEM_PROMPT = "You are a helpful assistant." - image_url = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/bee.jpg" - - ds = [{"messages": [ - { - "role": "user", - "content": [ - { - "type": "text", - "text": "What action do you think I should take in this situation? List all the possible actions and explain why you think they are good or bad.", - }, - {"type": "image_url", "image_url": {"url": image_url}}, - ], - }, -]}] - - ds = ds * 10 - - with open('dataset.json', 'w') as f: - json.dump(ds, f) - """ dataset = load_dataset('json', data_files='/home/artem_nous/cambrian_set/output2.json')['train'].select(range(100)) - #dataset = load_dataset(args.dataset, name=args.subset, split=args.split) - def remove_none_recursively(obj): if isinstance(obj, dict): return {k: remove_none_recursively(v) for k, v in obj.items() if v is not None} @@ -587,21 +558,39 @@ def _tokenize_chat_multimodal(sample): labels = [] images = [] - for conversation in [sample["messages"]]: + for conversation in sample["messages"]: + + image = None + conversation = remove_none_recursively(conversation) + for message in conversation: keys = list(message.keys()) - """ - for content in message['content']: - if content.get('base64'): - content['type'] = 'image_url' - content['image_url'] = content['base64'] - content['image_url'] = f"data:image/jpeg;base64,{content['base64']}" - #print(content['base64'][:100]) - # remove base64 - content.pop('base64') - """ + for item in message['content']: + if 'base64' in item.keys(): + # save image in local folder as PIL image with uuid + # Decode base64 image data + image_data = base64.b64decode(item['base64']) + image = Image.open(io.BytesIO(image_data)) + + # Generate UUID4 filename + image_filename = f"{uuid.uuid4()}.jpg" + image_path = os.path.join(LOCAL_IMAGE_DIR, image_filename) + + # Ensure directory exists + os.makedirs(LOCAL_IMAGE_DIR, exist_ok=True) + + # Save image as JPG + image.save(image_path, 'JPEG') + + # remove base64 key, set type image + item.pop('base64') + item['type'] = 'image' + item['path'] = image_path + + image = image_path + if "from" in keys and "value" in keys: # sharegpt format @@ -620,14 +609,10 @@ def _tokenize_chat_multimodal(sample): raise RuntimeError(f"Unknown chat format, keys are {keys}") - conversation = remove_none_recursively(conversation) - - #print(conversation) + tokenized = tokenizer.apply_chat_template(conversation, tokenize=True, return_dict=True, return_tensors="pt") - #tokenized = tokenizer.encode_chat_completion(ChatCompletionRequest(messages=conversation)) - tokenized = tokenizer.apply_chat_template(conversation, tokenize=True, return_dict=True) tokens = tokenized["input_ids"][0] #tokenizer.apply_chat_template(conversation, tokenize=True) - image = tokenized["pixel_values"][0] + current_len = 0 label = [] @@ -655,11 +640,12 @@ def _tokenize_chat_multimodal(sample): labels.append(label) images.append(image) - return { - "inputs": tokens, - "labels": label, - "images": image, - } + + return { + "inputs": inputs, + "labels": labels, + "images": images, + } def _tokenize_mistral_format(sample): messages = sample["messages"] @@ -673,16 +659,17 @@ def _tokenize_mistral_format(sample): dataset = dataset.map( _tokenize_chat_multimodal, - #batched=True, + batched=True, #batch_size=args.batch_size, ) dataset = dataset.remove_columns(original_column_names) + #print(dataset[0]['images']) efficiency = 1.0 dropped = 0 if args.pack_to_sequence_length: - num_shards = 1 # args.num_proc + num_shards = 32 # args.num_proc shards = [ dataset.shard(num_shards=num_shards, index=i) for i in range(num_shards) ] diff --git a/torchtitan/models/mistral3/__init__.py b/torchtitan/models/mistral3/__init__.py index c96f5218a8..54ebbb4b9a 100644 --- a/torchtitan/models/mistral3/__init__.py +++ b/torchtitan/models/mistral3/__init__.py @@ -4,8 +4,8 @@ from torchtitan.datasets.hf_datasets import build_hf_dataloader from torchtitan.datasets.dataloader import build_dataloader -from .model.configuration_pixtral import PixtralVisionConfig -from .model.model import VLMArgs, VisionEncoder, VLM +#from .model.configuration_pixtral import PixtralVisionConfig +from .model.model import VLMArgs, VLM from .infra.parallelize import parallelize_mistral3 from .infra.pipeline import pipeline_mistral3 @@ -27,7 +27,6 @@ "parallelize_mistral3", "pipeline_mistral3", "VLMArgs", - "VisionEncoder", "VLM", "mistral3_configs", ] diff --git a/torchtitan/models/mistral3/infra/parallelize.py b/torchtitan/models/mistral3/infra/parallelize.py index 12b8a8594d..8c9378717f 100644 --- a/torchtitan/models/mistral3/infra/parallelize.py +++ b/torchtitan/models/mistral3/infra/parallelize.py @@ -65,11 +65,13 @@ def parallelize_mistral3( if parallel_dims.tp_enabled: + """ if ( job_config.experimental.enable_async_tensor_parallel and not job_config.training.compile ): raise RuntimeError("Async TP requires --training.compile") + """ enable_float8_linear = "float8" in job_config.model.converters float8_is_rowwise = job_config.float8.recipe_name in ( "rowwise", @@ -84,9 +86,10 @@ def parallelize_mistral3( apply_tp( model, world_mesh["tp"], - loss_parallel=parallel_dims.loss_parallel_enabled, - enable_float8=enable_float8_tensorwise_tp, - enable_async_tp=job_config.experimental.enable_async_tensor_parallel, + loss_parallel=False, + enable_float8=False, + enable_async_tp=False, + #enable_async_tp=job_config.experimental.enable_async_tensor_parallel, ) if job_config.activation_checkpoint.mode != "none": diff --git a/torchtitan/models/mistral3/model/args.py b/torchtitan/models/mistral3/model/args.py index 449d7f3abb..b99aa85bc1 100644 --- a/torchtitan/models/mistral3/model/args.py +++ b/torchtitan/models/mistral3/model/args.py @@ -68,6 +68,7 @@ class VLMArgs(BaseModelArgs): use_flex_attn: bool = False attn_mask_type: str = "block_causal_by_sequence_lengths" eos_id: int = 0 + image_token_id: int = 10 def update_from_config( self, job_config: JobConfig, tokenizer: BaseTokenizer diff --git a/torchtitan/models/mistral3/model/model.py b/torchtitan/models/mistral3/model/model.py index bcfd0bc604..11706d6979 100644 --- a/torchtitan/models/mistral3/model/model.py +++ b/torchtitan/models/mistral3/model/model.py @@ -12,6 +12,7 @@ import torch import torch.nn as nn import torch.nn.functional as F +from transformers.image_utils import load_image from torchtitan.protocols.train_spec import ModelProtocol from torchtitan.models.attention import build_attention, init_attention_mask @@ -129,6 +130,100 @@ def repeat_kv(x: torch.Tensor, num_rep: int) -> torch.Tensor: ) +class Mistral3PatchMerger(nn.Module): + """ + Learned merging of spatial_merge_size ** 2 patches + """ + + def __init__(self, config: VLMArgs): + super().__init__() + self.config = config + + hidden_size = config.vision_embed_dim + self.spatial_merge_size = config.spatial_merge_size + self.patch_size = config.patch_size + self.merging_layer = nn.Linear(hidden_size * self.spatial_merge_size**2, hidden_size, bias=False) + + + def init_weights(self): + """ + Initialize weights following the Llama3 pattern. + """ + # Initialize merging layer with truncated normal + nn.init.trunc_normal_(self.merging_layer.weight, mean=0.0, std=0.02) + + def forward(self, image_features: torch.Tensor, image_sizes: torch.Tensor) -> torch.Tensor: + image_sizes = [ + (image_size[0] // self.patch_size, image_size[1] // self.patch_size) for image_size in image_sizes + ] + + tokens_per_image = [h * w for h, w in image_sizes] + d = image_features.shape[-1] + + permuted_tensor = [] + for image_index, image_tokens in enumerate(image_features.split(tokens_per_image)): + # Reshape image_tokens into a 2D grid + h, w = image_sizes[image_index] + image_grid = image_tokens.view(h, w, d).permute(2, 0, 1).unsqueeze(0) + grid = torch.nn.functional.unfold( + image_grid, kernel_size=self.spatial_merge_size, stride=self.spatial_merge_size + ) + grid = grid.view(d * self.spatial_merge_size**2, -1).t() + permuted_tensor.append(grid) + + image_features = torch.cat(permuted_tensor, dim=0) + image_features = self.merging_layer(image_features) + + return image_features.unsqueeze(0) + + + +class Mistral3MultiModalProjector(nn.Module): + def __init__(self, config: VLMArgs): + super().__init__() + self.norm = nn.RMSNorm(config.vision_embed_dim, eps=config.norm_eps) + self.patch_merger = Mistral3PatchMerger(config) + # We have hidden_size * the number of vision feature layers + num_feature_layers = 1 if isinstance(config.vision_feature_layer, int) else len(config.vision_feature_layer) + self.linear_1 = nn.Linear( + config.vision_embed_dim * num_feature_layers, + config.decoder_embed_dim, + bias=config.multimodal_projector_bias, + ) + self.act = config.activation + self.linear_2 = nn.Linear( + config.decoder_embed_dim, config.decoder_embed_dim, bias=config.multimodal_projector_bias + ) + + def init_weights(self): + """ + Initialize weights following the Llama3 pattern. + """ + # Initialize norm layer + if hasattr(self.norm, 'reset_parameters'): + self.norm.reset_parameters() + + # Initialize patch merger + if hasattr(self.patch_merger, 'init_weights'): + self.patch_merger.init_weights() + + # Initialize linear layers with truncated normal + for linear in (self.linear_1, self.linear_2): + nn.init.trunc_normal_(linear.weight, mean=0.0, std=0.02) + if linear.bias is not None: + nn.init.zeros_(linear.bias) + + def forward(self, image_features: torch.Tensor, image_sizes: torch.Tensor): + image_features = self.norm(image_features) + + image_features = self.patch_merger(image_features, image_sizes) + hidden_states = self.linear_1(image_features) + hidden_states = self.act(hidden_states) + hidden_states = self.linear_2(hidden_states) + return hidden_states + + + class Attention(nn.Module): def __init__(self, config: VLMArgs, is_vision=True): @@ -258,6 +353,8 @@ def __init__( #self.ln_mlp = build_norm("rmsnorm", config.decoder_embed_dim, config.norm_eps) self.ln_mlp = nn.RMSNorm(config.decoder_embed_dim, config.norm_eps) + self.image_token_id = config.image_token_id + def init_weights(self): """ Initialize weights following the Llama3 pattern. @@ -292,73 +389,6 @@ def forward( x = x + self.mlp(self.ln_mlp(x)) return x - -class VisionEncoder(nn.Module): - """Vision encoder model using Pixtral Vision for Mistral3. This integrates the Pixtral vision encoder - with a projection to connect to the multimodal decoder. - - Args: - config (VLMArgs): configs for the vision encoder. - """ - - def __init__(self, config: VLMArgs) -> None: - super().__init__() - - # Import Pixtral components here to avoid circular imports - from .modeling_pixtral import PixtralVisionModel, PixtralVisionConfig - - # Create a PixtralVisionConfig based on the ModelArgs - pixtral_config = PixtralVisionConfig( - hidden_size=config.vision_embed_dim, - intermediate_size=4 * config.vision_embed_dim, # Standard multiplier - num_hidden_layers=config.vision_num_layers, - num_attention_heads=config.vision_num_heads, - num_channels=config.in_channels, - image_size=config.image_size, - patch_size=config.patch_size, - hidden_act="gelu", # Standard activation - attention_dropout=0.0, # No dropout by default - rope_theta=config.rope_theta, - initializer_range=0.02 # Standard initialization - ) - - # Initialize the Pixtral vision model - self.pixtral_vision = PixtralVisionModel(pixtral_config) - - # Add projection to connect to the decoder - #self.multi_modal_projector = Mistral3MultiModalProjector(config) - - def init_weights(self): - """ - Initialize weights for the vision encoder components. - """ - # Initialize pixtral vision model if it has init_weights - if hasattr(self.pixtral_vision, 'init_weights'): - self.pixtral_vision.init_weights() - - # Initialize multimodal projector if it has init_weights - if hasattr(self.multi_modal_projector, 'init_weights'): - self.multi_modal_projector.init_weights() - - def forward(self, pixel_values: torch.Tensor, image_sizes: torch.Tensor, output_hidden_states: Optional[bool] = None, return_dict: Optional[bool] = None) -> torch.Tensor: - - # Pass through Pixtral vision model - vision_outputs = self.pixtral_vision( - pixel_values=pixel_values, - image_sizes=image_sizes, - output_hidden_states=output_hidden_states, - return_dict=return_dict - ) - - return vision_outputs - - - # Get the last hidden state - #image_features = vision_outputs.last_hidden_state - - # Project to decoder dimension - #return self.multi_modal_projector(image_features, image_sizes) - class Transformer(nn.Module): """Decoder multimodal model for Mistral3. @@ -388,6 +418,8 @@ def __init__(self, config: VLMArgs): config.decoder_embed_dim, 131072, bias=False ) + self.image_token_id = config.image_token_id + def init_weights(self): """ Initialize weights following the Llama3 pattern. @@ -425,6 +457,30 @@ def _precompute_freqs_cis(self, config) -> torch.Tensor: config.max_seq_len, config.rope_theta, ) + + def get_placeholder_mask( + self, input_ids: torch.LongTensor, inputs_embeds: torch.FloatTensor, image_features: torch.FloatTensor + ) -> torch.BoolTensor: + """ + Obtains multimodal placeholdr mask from `input_ids` or `inputs_embeds`, and checks that the placeholder token count is + equal to the length of multimodal features. If the lengths are different, an error is raised. + """ + if input_ids is None: + special_image_mask = inputs_embeds == self.get_input_embeddings()( + torch.tensor(self.image_token_id, dtype=torch.long, device=inputs_embeds.device) + ) + special_image_mask = special_image_mask.all(-1) + else: + special_image_mask = input_ids == self.image_token_id + + n_image_tokens = special_image_mask.sum() + special_image_mask = special_image_mask.unsqueeze(-1).expand_as(inputs_embeds).to(inputs_embeds.device) + n_image_features = image_features.shape[0] * image_features.shape[1] + if inputs_embeds[special_image_mask].numel() != image_features.numel(): + raise ValueError( + f"Image features and image tokens do not match: tokens: {n_image_tokens}, features {n_image_features}" + ) + return special_image_mask def forward( self, @@ -434,6 +490,7 @@ def forward( encoder_mask: Optional[torch.Tensor] = None, inputs_embeds: Optional[torch.Tensor] = None, position_ids: Optional[torch.Tensor] = None, + image_features: Optional[torch.Tensor] = None, ) -> torch.Tensor: # input tensor of shape [b, s] @@ -444,6 +501,16 @@ def forward( h = self.tok_embeddings(tokens) else: h = inputs_embeds + + if image_features is not None: + + image_features = image_features.unsqueeze(0) + + special_image_mask = self.get_placeholder_mask( + input_ids=tokens, inputs_embeds=h, image_features=image_features + ) + + h= h.masked_scatter(special_image_mask, image_features) # Setup freqs_cis based on position_ids or sequence length if position_ids is not None: @@ -491,6 +558,30 @@ def __init__(self, config: VLMArgs): self.vision_model_initialized = False + from .modeling_pixtral import PixtralVisionModel, PixtralVisionConfig + + # Create a PixtralVisionConfig based on the ModelArgs + pixtral_config = PixtralVisionConfig( + hidden_size=config.vision_embed_dim, + intermediate_size=4 * config.vision_embed_dim, # Standard multiplier + num_hidden_layers=config.vision_num_layers, + num_attention_heads=config.vision_num_heads, + num_channels=config.in_channels, + image_size=config.image_size, + patch_size=config.patch_size, + hidden_act="gelu", # Standard activation + attention_dropout=0.0, # No dropout by default + rope_theta=config.rope_theta, + initializer_range=0.02 # Standard initialization + ) + + self.vision_tower = PixtralVisionModel(pixtral_config) + + # Add projection to connect to the decoder + self.multi_modal_projector = Mistral3MultiModalProjector(config) + + from transformers import AutoProcessor + self.preprocessor = AutoProcessor.from_pretrained("mistralai/Mistral-Small-3.1-24B-Instruct-2503", use_fast=True) def init_weights( self, @@ -535,7 +626,7 @@ def get_image_features( image_features = self.multi_modal_projector(selected_image_feature.squeeze(0), image_sizes) return image_features - + def forward( self, input_ids: torch.LongTensor = None, @@ -543,24 +634,70 @@ def forward( attention_mask: Optional[torch.Tensor] = None, position_ids: Optional[torch.Tensor] = None, sequence_lengths: list[torch.Tensor] | None = None, + images: Optional[list] = None ): + image_features = None + + if position_ids is not None: + + all_image_features = [] + for i, batch in enumerate(images): + image_features_batch = [] + images = [load_image(im) if isinstance(im, str) else im for im in batch] + + image_inputs = self.preprocessor.image_processor(images, patch_size=self.config.patch_size * 2) + + image_encoder_outputs = self.get_image_features(image_inputs["pixel_values"].to(self.vision_tower.device, dtype=torch.bfloat16), 2, image_inputs["image_sizes"]) + + # Collect image features from all images in the batch + all_image_features.append(image_encoder_outputs) + + # Concatenate all image features along the sequence dimension (dim=1) + if all_image_features: + image_features = torch.cat(all_image_features, dim=1) # Shape: (1, sum_of_image_patches_of_all_images) + else: + image_features = None + + #special_image_mask = self.get_placeholder_mask(input_ids, inputs_embeds, image_features) + + #input_ids[special_image_mask] = self.config.image_token_id + + #exit(0) + else: + return NotImplementedError("Position IDs are required for multimodal input.") + + if self.config.use_flex_attn: init_attention_mask(input_ids, eos_id=self.config.eos_id, sequence_lengths=sequence_lengths) if position_ids is not None: - # for the case where we want to do sequence packing, we need to pass the nonstandard position_ids - logits = self.language_model( + if image_features is not None: + logits = self.language_model( + tokens=input_ids, + encoder_mask=None, + position_ids=position_ids, + image_features=image_features, + ) + else: + logits = self.language_model( tokens=input_ids, encoder_mask=None, - position_ids=position_ids + position_ids=position_ids, ) else: - logits = self.language_model( + if image_features is not None: + logits = self.language_model( + tokens=input_ids, + encoder_mask=None, + image_features=image_features, + ) + else: + logits = self.language_model( tokens=input_ids, encoder_mask=None, ) - + return logits @classmethod diff --git a/torchtitan/models/mistral3/train_configs/mistral24b_finetuning.toml b/torchtitan/models/mistral3/train_configs/mistral24b_finetuning.toml index 759517743b..ced812ef07 100644 --- a/torchtitan/models/mistral3/train_configs/mistral24b_finetuning.toml +++ b/torchtitan/models/mistral3/train_configs/mistral24b_finetuning.toml @@ -33,11 +33,13 @@ warmup_steps = 200 # lr scheduler warm up [training] local_batch_size = 1 -seq_len = 2048 +seq_len = 8000 max_norm = 1.0 # grad norm clipping steps = 1000 compile = false -dataset = "c4" +dataset = "hermes4" +dataset_path = "/home/artem_nous/tt/torchtitan/scripts/dataset_multimodal" +dataset_type = "preprocessed_multimodal" [parallelism] data_parallel_replicate_degree = 1 From ad0e63e44e5f669de54e9e6530789f3c6a4de19c Mon Sep 17 00:00:00 2001 From: Artem Yatsenko Date: Thu, 14 Aug 2025 01:11:37 +0000 Subject: [PATCH 14/28] add multimodal packed ds, update to conversion script --- torchtitan/datasets/dataloader.py | 2 + torchtitan/datasets/preprocessed.py | 163 ++++++++++++++++++ .../train_configs/mistral24b_finetuning.toml | 7 +- 3 files changed, 168 insertions(+), 4 deletions(-) diff --git a/torchtitan/datasets/dataloader.py b/torchtitan/datasets/dataloader.py index 4924cc1c42..cf95940b2d 100644 --- a/torchtitan/datasets/dataloader.py +++ b/torchtitan/datasets/dataloader.py @@ -5,10 +5,12 @@ from .hf_datasets import build_hf_dataloader from .preprocessed import build_preprocessed_dataloader +from .preprocessed import build_preprocessed_multimodal_dataloader DATALOADERS = { "huggingface": build_hf_dataloader, "preprocessed": build_preprocessed_dataloader, + "preprocessed_multimodal": build_preprocessed_multimodal_dataloader, } diff --git a/torchtitan/datasets/preprocessed.py b/torchtitan/datasets/preprocessed.py index 1f2396893a..dd7c4432d9 100644 --- a/torchtitan/datasets/preprocessed.py +++ b/torchtitan/datasets/preprocessed.py @@ -146,6 +146,136 @@ def collate_fn(batch): return args, labels_tensor +class PreprocessedMultimodalDataset(IterableDataset, Stateful): + def __init__( + self, + dataset_name: str, + dataset_path: str | None, + tokenizer: Tokenizer, + seq_len: int = 2048, + dp_rank: int = 0, + dp_world_size: int = 1, + infinite: bool = False, + shuffle_seed: int | None = 42, + ) -> None: + ds = load_dataset(dataset_path if dataset_path else dataset_name, split="train") + + if shuffle_seed is not None: + ds = ds.shuffle(shuffle_seed) + + logger.info(f"Loaded preprocessed dataset with {len(ds)} samples") + + self._data = split_dataset_by_node(ds, dp_rank, dp_world_size) + self._tokenizer = tokenizer + self.seq_len = seq_len + self.infinite = infinite + self.dataset_name = dataset_name + self.dp_rank = dp_rank + + # Variables for checkpointing + self._sample_idx = 0 + + def _get_data_iter(self): + # For map-style datasets, resume by skipping to the correct index + # For iterable-style datasets, the underlying iterator already points to the correct index + if isinstance(self._data, Dataset): + if self._sample_idx == len(self._data): + return iter([]) + else: + return iter(self._data.skip(self._sample_idx)) + + return iter(self._data) + + def __iter__(self): + while True: + for sample in self._get_data_iter(): + self._sample_idx += 1 + + keys = list(sample.keys()) + + inputs = torch.LongTensor(sample["inputs"]) + labels = torch.LongTensor(sample["labels"] if "labels" in keys else sample["inputs"]) + images = sample["images"] + + labels = torch.roll(labels, shifts=-1, dims=0) + labels[-1] = -100 + + args = { + "input": inputs, + } + if "position_ids" in keys: + args["position_ids"] = torch.LongTensor(sample["position_ids"]) + if "sequence_lengths" in keys: + args["sequence_lengths"] = torch.LongTensor(sample["sequence_lengths"]) + + yield args, labels, images + + if not self.infinite: + logger.warning(f"Dataset {self.dataset_name} has run out of data") + break + else: + self._sample_idx = 0 + logger.warning(f"Dataset {self.dataset_name} is being re-looped") + if not isinstance(self._data, Dataset): + if hasattr(self._data, "set_epoch") and hasattr( + self._data, "epoch" + ): + self._data.set_epoch(self._data.epoch + 1) + + def __len__(self): + return len(self._data) + + def load_state_dict(self, state_dict): + + if isinstance(self._data, Dataset): + self._sample_idx = state_dict["sample_idx"] + else: + assert "data" in state_dict + self._data.load_state_dict(state_dict["data"]) + + def state_dict(self): + _state_dict = {} + + if isinstance(self._data, Dataset): + _state_dict["sample_idx"] = self._sample_idx + else: + # Save the iterable dataset's state to later efficiently resume from it + # https://huggingface.co/docs/datasets/v3.5.0/en/stream#save-a-dataset-checkpoint-and-resume-iteration + _state_dict["data"] = self._data.state_dict() + + return _state_dict + + +def collate_fn_multimodal(batch): + inputs, labels, images = zip(*batch) + + expected_len = len(inputs[0]["input"]) + for i, (input_item, label_item, image_item) in enumerate(batch): + input_len = len(input_item["input"]) + label_len = len(label_item) + + if input_len != expected_len or label_len != expected_len: + raise ValueError( + f"All tensors in the batch must have the same length. " + f"Expected length {expected_len} (from item 0), but item {i} has " + f"an input length of {input_len} and a label length of {label_len}." + ) + + args = {"input": torch.stack([x["input"] for x in inputs]), "images": images} + + if "position_ids" in inputs[0]: + args["position_ids"] = torch.stack([x["position_ids"] for x in inputs]) + if "sequence_lengths" in inputs[0]: + args["sequence_lengths"] = [x["sequence_lengths"] for x in inputs] + + images_list = images + #images_list = [x["image"][0] for x in images] + + labels_tensor = torch.stack(list(labels)) + + return args, labels_tensor + + def build_preprocessed_dataloader( dp_world_size: int, dp_rank: int, @@ -176,3 +306,36 @@ def build_preprocessed_dataloader( batch_size=batch_size, collate_fn=collate_fn, ) + + +def build_preprocessed_multimodal_dataloader( + dp_world_size: int, + dp_rank: int, + tokenizer: Tokenizer, + job_config: JobConfig, + infinite: bool = True, +) -> ParallelAwareDataloader: + """Build a data loader for HuggingFace datasets.""" + dataset_name = job_config.training.dataset + dataset_path = job_config.training.dataset_path + batch_size = job_config.training.local_batch_size + seq_len = job_config.training.seq_len + + ds = PreprocessedMultimodalDataset( + dataset_name=dataset_name, + dataset_path=dataset_path, + tokenizer=tokenizer, + seq_len=seq_len, + dp_rank=dp_rank, + dp_world_size=dp_world_size, + infinite=infinite, + ) + + return ParallelAwareDataloader( + dataset=ds, + dp_rank=dp_rank, + dp_world_size=dp_world_size, + batch_size=batch_size, + collate_fn=collate_fn_multimodal, + ) + diff --git a/torchtitan/models/mistral3/train_configs/mistral24b_finetuning.toml b/torchtitan/models/mistral3/train_configs/mistral24b_finetuning.toml index ced812ef07..eb263a5a95 100644 --- a/torchtitan/models/mistral3/train_configs/mistral24b_finetuning.toml +++ b/torchtitan/models/mistral3/train_configs/mistral24b_finetuning.toml @@ -3,7 +3,7 @@ [job] dump_folder = "./outputs" -description = "Mistral 24B training" +description = "Mistral 24B multimodal training" [profiling] @@ -20,8 +20,7 @@ save_tb_folder = "tb" [model] name = "mistral3" flavor = "24B" -tokenizer_path = "/home/artem_nous/tt/torchtitan/assets/tokenizer/Mistral-Small-3.1-24B-Base-2503" -# converters = ["float8"] +tokenizer_path = "/home/shared/torchtitan-conversions/mistral_small_3.1_instruct/tokenizer" [optimizer] name = "AdamW" @@ -50,7 +49,7 @@ context_parallel_degree = 1 [checkpoint] enable_checkpoint = true -initial_load_path = "/home/artem_nous/tt/torchtitan/mistral-small-base-dcp" +initial_load_path = "/home/shared/torchtitan-conversions/mistral_small_3.1_instruct" folder = "checkpoint" interval = 500 last_save_model_weights_only = false From c11f1ddebea6116b1f0b752a039c8a2e4e47efe5 Mon Sep 17 00:00:00 2001 From: Artem Yatsenko Date: Thu, 14 Aug 2025 01:38:33 +0000 Subject: [PATCH 15/28] add instructions, set better default configs --- README.md | 21 +++++++++++++++++++ .../train_configs/mistral24b_finetuning.toml | 4 ++-- .../train_configs/qwen3_8b_finetuning.toml | 7 +++++-- 3 files changed, 28 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index fa9b3ba35c..b8752e4904 100644 --- a/README.md +++ b/README.md @@ -158,6 +158,27 @@ srun torchrun --nnodes 2 If your gpu count per node is not 8, adjust `--nproc_per_node` in the torchrun command and `#SBATCH --gpus-per-task` in the SBATCH command section. +## (NOUS) training with sample packing and multimodality + +### Training Qwen3-8B with sample packing +To preprocess and pack a textonly chat dataset, run `scripts/preprocess_data.py`: +``` +python3 scripts/preprocess_data.py --dataset NousResearch/Hermes-3-Dataset --tokenizer Qwen/Qwen3-8B --chat --pack-to-sequence-length 8000 --split "train[:1000]" --save-to-disk ./dataset +``` + +Qwen3-8B can be trained using this dataset: +``` +CONFIG_FILE="./torchtitan/models/qwen3/train_configs/qwen3_8b_finetuning.toml" ./run_train.sh +``` + +## Training Mistral Small 3.1 with multimodal sample packing +To preprocess and pack a multimodal chat dataset, run `scripts/preprocess_multimodal_data.py`: +``` +python3 scripts/preprocess_multimodal_data.py --dataset /home/shared/datasets/cambrian_sample.json --preprocessor mistralai/Mistral-Small-3.1-24B-Instruct-2503 --chat --pack-to-sequence-length 8000 --split "train" --save-to-disk ./multimodal_dataset +``` + +Mistral Small 3.1 can be trained using this dataset: +CONFIG_FILE="./torchtitan/models/mistral3/train_configs/mistral24b_finetuning.toml" ./run_train.sh ## Citation diff --git a/torchtitan/models/mistral3/train_configs/mistral24b_finetuning.toml b/torchtitan/models/mistral3/train_configs/mistral24b_finetuning.toml index eb263a5a95..23227d3b7c 100644 --- a/torchtitan/models/mistral3/train_configs/mistral24b_finetuning.toml +++ b/torchtitan/models/mistral3/train_configs/mistral24b_finetuning.toml @@ -3,7 +3,7 @@ [job] dump_folder = "./outputs" -description = "Mistral 24B multimodal training" +description = "Mistral 24B training" [profiling] @@ -37,7 +37,7 @@ max_norm = 1.0 # grad norm clipping steps = 1000 compile = false dataset = "hermes4" -dataset_path = "/home/artem_nous/tt/torchtitan/scripts/dataset_multimodal" +dataset_path = "./multimodal_dataset" dataset_type = "preprocessed_multimodal" [parallelism] diff --git a/torchtitan/models/qwen3/train_configs/qwen3_8b_finetuning.toml b/torchtitan/models/qwen3/train_configs/qwen3_8b_finetuning.toml index 3a23b48bcd..e962c15bf1 100644 --- a/torchtitan/models/qwen3/train_configs/qwen3_8b_finetuning.toml +++ b/torchtitan/models/qwen3/train_configs/qwen3_8b_finetuning.toml @@ -32,11 +32,14 @@ warmup_steps = 200 # lr scheduler warm up [training] local_batch_size = 1 -seq_len = 8192 +seq_len = 8000 max_norm = 1.0 # grad norm clipping steps = 1000 compile = false -dataset = "c4" +dataset = "hermes4" +dataset_path = "./dataset" +dataset_type = "preprocessed" + [parallelism] data_parallel_replicate_degree = 1 From 46cb25e6bc3e4c1bfb23be675435e91bfd5de6fc Mon Sep 17 00:00:00 2001 From: Artem Yatsenko Date: Thu, 14 Aug 2025 01:41:49 +0000 Subject: [PATCH 16/28] limit for testing preproc multimodal --- scripts/preprocess_multimodal_data.py | 13 +- scripts/preprocess_multimodal_old.py | 800 ++++++++++++++++++++++++++ 2 files changed, 811 insertions(+), 2 deletions(-) create mode 100644 scripts/preprocess_multimodal_old.py diff --git a/scripts/preprocess_multimodal_data.py b/scripts/preprocess_multimodal_data.py index cd6e57ebea..3425b795ba 100644 --- a/scripts/preprocess_multimodal_data.py +++ b/scripts/preprocess_multimodal_data.py @@ -60,7 +60,7 @@ from transformers import Mistral3ForConditionalGeneration -LOCAL_IMAGE_DIR = "/home/artem_nous/tt/torchtitan/scripts/images" +LOCAL_IMAGE_DIR = "./images" SCHEMA = pa.schema( [ @@ -536,7 +536,15 @@ def main(args): from datasets import load_dataset - dataset = load_dataset('json', data_files='/home/artem_nous/cambrian_set/output2.json')['train'].select(range(100)) + #dataset = load_dataset('json', data_files='/home/artem_nous/cambrian_set/output2.json')['train'].select(range(100)) + + if 'json' in args.dataset: + dataset = load_dataset('json', data_files=args.dataset)['train'] + if args.limit is not None: + dataset = dataset.select(range(args.limit)) + else: + dataset = load_dataset(args.dataset, name=args.subset, split=args.split) + def remove_none_recursively(obj): if isinstance(obj, dict): @@ -769,6 +777,7 @@ def _tokenize_mistral_format(sample): parser.add_argument("--drop-larger-than", type=int) parser.add_argument("--save-to-disk", type=str) parser.add_argument("--show-example", action="store_true") + parser.add_argument("--limit", type=int, default=None) args = parser.parse_args() main(args) diff --git a/scripts/preprocess_multimodal_old.py b/scripts/preprocess_multimodal_old.py new file mode 100644 index 0000000000..44a9548665 --- /dev/null +++ b/scripts/preprocess_multimodal_old.py @@ -0,0 +1,800 @@ +""" + +post of data processing script for multimodal data +that looks like this: +[ + { + "messages": [ + { + "role": "system", + "content": [ + {"type": "text", "text": "You are a helpful assistant."} + ] + }, + { + "role": "user", + "content": [ + {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/bee.jpg"}, + {"type": "text", "text": "Describe this image in detail."} + ] + }, + { + "role": "assistant", + "content": [ + {"type": "text", "text": "The image is a bee."} + ] + } + ] + } +] +""" +import argparse +import os +import shutil +import multiprocessing +import numpy as np +import pyarrow as pa +import pyarrow.dataset as pa_ds +import random +import json +from mistral_common.protocol.instruct.request import ChatCompletionRequest +from mistral_common.tokens.tokenizers.mistral import MistralTokenizer + +from typing import List, Optional, Tuple +from torch.nn import functional as F +from torch.utils.data import Dataset +from tqdm import tqdm +from datasets import load_dataset, Dataset as DatasetsDataset +from transformers import AutoTokenizer + +from datetime import datetime, timedelta +import torch + +from mistral_common.protocol.instruct.request import ChatCompletionRequest +from mistral_common.tokens.tokenizers.mistral import MistralTokenizer +from huggingface_hub import hf_hub_download +from transformers import Mistral3ForConditionalGeneration + + +SCHEMA = pa.schema( + [ + pa.field("inputs", pa.large_list(pa.int32())), + pa.field("labels", pa.large_list(pa.int32())), + pa.field("position_ids", pa.large_list(pa.int32())), + pa.field("sequence_lengths", pa.large_list(pa.int64())), + ] +) + +DATASET_INFO = r"""{ + "citation": "", + "description": "", + "features": { + "inputs": { + "feature": { + "dtype": "int32", + "_type": "Value" + }, + "_type": "LargeList" + }, + "labels": { + "feature": { + "dtype": "int32", + "_type": "Value" + }, + "_type": "LargeList" + }, + "position_ids": { + "feature": { + "dtype": "int32", + "_type": "Value" + }, + "_type": "LargeList" + }, + "sequence_lengths": { + "feature": { + "dtype": "int64", + "_type": "Value" + }, + "_type": "LargeList" + } + "pixel_values": { + "feature": { + "dtype": "bfloat16", + "_type": "Value" + }, + "_type": "LargeList" + } + "image_sizes": { + "feature": { + "dtype": "bfloat16", + "_type": "Value" + }, + "_type": "LargeList" + } + }, + "homepage": "", + "license": "" +}""" + + +def process_packing_shard(shard, args, tokenizer_pad_id, rank, world_size): + packer = MultimodalPackedDataset( + shard, + max_seq_len=args.pack_to_sequence_length, + padding_idx=tokenizer_pad_id, + split_across_pack=not args.chat, + show_pbar=rank == 0, + ) + + + if args.save_to_disk: + # create a schema that uses int64 for list sizes + + example = ( + { + "inputs": packer.packs[0]["inputs"], + "labels": packer.packs[0]["labels"], + "position_ids": packer.packs[0]["position_ids"], + "sequence_lengths": packer.packs[0]["sequence_lengths"], + "pixel_values": packer.packs[0]["pixel_values"], + "image_sizes": packer.packs[0]["image_sizes"], + } + if len(packer.packs) > 0 + else None + ) + + oriented_data = { + "inputs": [pack["inputs"] for pack in packer.packs], + "labels": [pack["labels"] for pack in packer.packs], + "position_ids": [pack["position_ids"] for pack in packer.packs], + "sequence_lengths": [pack["sequence_lengths"] for pack in packer.packs], + "pixel_values": [pack["pixel_values"] for pack in packer.packs], + "image_sizes": [pack["image_sizes"] for pack in packer.packs], + } + pa_table = pa.Table.from_pydict(oriented_data, schema=SCHEMA) + del oriented_data + + pa_ds.write_dataset( + pa_table, + os.path.join(args.save_to_disk, str(rank)), + format="arrow", + ) + + filename = f"data-{rank:05d}-of-{world_size:05d}.arrow" + + shutil.move( + os.path.join(args.save_to_disk, str(rank), "part-0.arrow"), + os.path.join(args.save_to_disk, filename), + ) + + os.rmdir(os.path.join(args.save_to_disk, str(rank))) + else: + filename = None + + return packer.total_tokens, packer.packed_tokens, packer.dropped, filename, example + + +# https://github.com/pytorch/torchtune/blob/9d91fe39f08661952da4180b9e7fb2eba5a7a5e7/torchtune/datasets/_packed.py +class MultimodalPackedDataset(Dataset): + """ + Performs greedy sample packing on a provided dataset. This is done as a single + preprocessing step before training begins. Shuffling is done outside of this + class on packed samples with a ``Sampler`` as part of the dataloader. Currently, + this only supports in-memory map-style datasets. + + The class loads, tokenizes, and packs examples on initialization - no tokenization is done during training. + + The general flow on initialization is: load tokenized sample -> add to buffer -> + when buffer is long enough, add to ``self.packs``. + + During training, returns self.packs[idx] as input, label, attention mask, and + position ids. The attention mask is a lower triangular block mask to prevent + samples from cross-attending within a pack. The position ids indicate the position + of each token relative to its sample within a pack. These are all padded to max + sequence length, so a batch-wise collator is not needed. + + A packed sample is made up of individual smaller sequence length samples jammed together + within ``max_seq_len``. For example, if max_seq_len is 6 and there are varied + length samples:: + + tokens = [ + [S1, S1, S1, S2, S2, pad], + [S3, S3, S4, S4, pad, pad], + ..., + ] + + To prevent cross-contamination, the following mask would be returned for the + first pack in the example:: + + mask = [ + [1, 0, 0, 0, 0, 0], + [1, 1, 0, 0, 0, 0], + [1, 1, 1, 0, 0, 0], + [0, 0, 0, 1, 0, 0], + [0, 0, 0, 1, 1, 0], + [0, 0, 0, 0, 0, 1], + ] + + The position ids would be:: + + input_pos = [ + [0, 1, 2, 0, 1, 2], + [0, 1, 0, 1, 2, 3], + ..., + ] + + The identity matrix is used in the mask for pad tokens instead of a causal mask. + For position ids for pad tokens, we simply continue to increment from the previous + sample normally. + + Args: + ds (Dataset): dataset to sample pack. This should return a dictionary with field + "tokens" and "labels" containing the tokenized and label samples. + max_seq_len (int): Maximum number of tokens to pack + padding_idx (int): padding index for the tokenizer. Default is 0. + max_packs (Optional[int]): Maximum number of packs. Default is None, which will create as many + packs as possible. + split_across_pack (bool): if the last sample in a pack does not fit in ``max_seq_len``, + split the sample into the next pack, or move it entirely to the beginning of the next pack. + For pre-training, typically this is set to True for general text completion. For + fine-tuning, typically this is set to False to avoid truncating sentences in instruct + tuning. Default is False. + """ + + def __init__( + self, + ds: Dataset, + *, + max_seq_len: int, + padding_idx: int = 0, + max_packs: Optional[int] = None, + split_across_pack: bool = False, + group_size: int = 5000, + show_pbar=True, + ) -> None: + self.ds = ds + self.max_seq_len = max_seq_len + self.padding_idx = padding_idx + self.max_packs = max_packs + self.split_across_pack = split_across_pack + self.packs = [] + self.previous_sample_boundary: int = 0 + self.packed_tokens: int = 0 + self.total_tokens: int = 0 + self.dropped: int = 0 + self.show_pbar = show_pbar + self.group_size = group_size + if split_across_pack: + self._pack_greedy() + else: + self._pack_ffd() + + def _get_empty_pack(self): + + return { + "inputs": np.empty(0, dtype=np.int32), + "labels": np.empty(0, dtype=np.int32), + "position_ids": np.empty(0, dtype=np.int32), + "sequence_lengths": [], + "pixel_values": [], + "image_sizes": [], + } + + def _pack_ffd(self) -> None: + ds_iterator = iter(self.ds) + finished_iterating = False + + pbar = ( + tqdm( + total=len(self.ds), + desc="Packing dataset (FFD)", + dynamic_ncols=True, + ) + if self.show_pbar + else None + ) + + while not finished_iterating: + # 1. Fetch a large group of samples into memory. + group = [] + try: + for _ in range(self.group_size): + sample = next(ds_iterator) + seq_len = len(sample["inputs"]) + + + if seq_len > self.max_seq_len: + self.dropped += 1 + continue + # Store sample and its length for sorting + group.append({"sample": sample, "seq_len": seq_len}) + except StopIteration: + finished_iterating = True + + if not group: + break + + + print("done") + + # 2. Sort the group by length in descending order (the "Decreasing" part of FFD). + group.sort(key=lambda x: x["seq_len"], reverse=True) + print("sorted") + + # 3. Pack this group using the "First-Fit" heuristic. + # Each bin holds the samples it contains and its remaining space. + bins = [] # List of {"samples": [], "remaining_space": max_seq_len} + + for item in group: + placed = False + # Try to place the item in the first available bin. + for bin in bins: + if bin["remaining_space"] >= item["seq_len"]: + bin["samples"].append(item["sample"]) + bin["remaining_space"] -= item["seq_len"] + placed = True + break + + # If no existing bin could accommodate the item, create a new one. + if not placed: + bins.append( + { + "samples": [item["sample"]], + "remaining_space": self.max_seq_len - item["seq_len"], + } + ) + + print("bins") + + # 4. Convert the completed bins from this group into final, padded packs. + for bin_info in bins: + if self._should_stop_packing(): + break + + current_pack = self._get_empty_pack() + for sample in bin_info["samples"]: + tokens = np.array(sample["inputs"], dtype=np.int32) + labels = np.array(sample["labels"], dtype=np.int32) + images = sample["images"] + seq_len = len(tokens) + + + + pixel_values = torch.tensor(images).to(dtype=torch.bfloat16) + + + image_sizes = torch.tensor([[pixel_values.shape[-2], pixel_values.shape[-1]]] * len(images)) + + + current_pack["inputs"] = np.concatenate( + (current_pack["inputs"], tokens) + ) + current_pack["labels"] = np.concatenate( + (current_pack["labels"], labels) + ) + current_pack["position_ids"] = np.concatenate( + ( + current_pack["position_ids"], + np.arange(seq_len, dtype=np.int32), + ) + ) + current_pack["sequence_lengths"].append(seq_len) + current_pack["pixel_values"].extend(pixel_values) + current_pack["image_sizes"].extend(image_sizes) + + self._add_pack(current_pack) + + print("done") + + if pbar: + pbar.update(len(group)) + + if self._should_stop_packing(): + # Ensure the outer loop breaks if max_packs is reached. + break + + if pbar: + # Manually set pbar to total to show 100% at the end + pbar.n = pbar.total + pbar.refresh() + pbar.close() + + def _pack_greedy(self) -> None: + """Iterate through the dataset. Use a buffer to hold samples until max_seq_len, + then append the buffer to self.packs as a single "packed" sample. Continue + until max_packs or end of dataset.""" + + current_pack = self._get_empty_pack() + + pbar = ( + tqdm(total=len(self.ds), desc="Packing dataset", dynamic_ncols=True) + if self.show_pbar + else None + ) + + for sample in self.ds: + tokens = np.array(sample["inputs"], dtype=np.int32) + labels = np.array(sample["labels"], dtype=np.int32) + + if seq_len > self.max_seq_len and not self.split_across_pack: + # print( + # f"Dropping sample that is too long ({seq_len} > {self.max_seq_len})" + # ) + self.dropped += 1 + continue + + current_pack["inputs"] = np.concatenate((current_pack["inputs"], tokens)) + current_pack["labels"] = np.concatenate((current_pack["labels"], labels)) + + position_ids = np.arange(seq_len, dtype=np.int32) + current_pack["position_ids"] = np.concatenate( + (current_pack["position_ids"], position_ids) + ) + + current_pack["sequence_lengths"] += [seq_len] + + while ( + len(current_pack["inputs"]) > self.max_seq_len + and not self._should_stop_packing() + ): + current_pack = self._split_and_add_pack(current_pack) + + if pbar: + pbar.update() + + self.previous_sample_boundary = len(current_pack["inputs"]) + + if self._should_stop_packing(): + break + + if len(current_pack["inputs"]) > 0 and ( + self.max_packs is None or len(self.packs) < self.max_packs + ): + self._add_pack(current_pack) + + def _should_stop_packing(self) -> bool: + """If max packs is set, stop packing when we reach that number.""" + + if self.max_packs is not None and len(self.packs) == self.max_packs: + return True + return False + + def _split_and_add_pack(self, current_pack): + """Splits the current pack at the boundary, processes it, adds it to ``self.packs`` and + returns the start of the next pack.""" + + if self.split_across_pack: + boundary = self.max_seq_len + # The last elem in ``seq_lens`` ensures that ``sum(seq_lens) == self.max_seq_len`` + leftover_seq_len = self.max_seq_len - sum(current_pack["seq_lens"][:-1]) + seq_len_padding = [leftover_seq_len] if leftover_seq_len > 0 else [] + else: + boundary = self.previous_sample_boundary + # If we aren't splitting across packs, we leave out the last sample b/c + # it will go into the next pack + seq_len_padding = [] + + pack = { + "inputs": current_pack["inputs"][:boundary], + "labels": current_pack["labels"][:boundary], + "position_ids": current_pack["position_ids"][:boundary], + "sequence_lengths": current_pack["sequence_lengths"][:-1] + seq_len_padding, + } + + self._add_pack(pack) + + # Return the length of the first sample in next pack if we are splitting across packs, + # otherwise return the length of the last sample in the current pack + next_seq_len = ( + len(current_pack["inputs"][boundary:]) + if self.split_across_pack + else current_pack["sequence_lengths"][-1] + ) + + return { + "inputs": current_pack["inputs"][boundary:], + "labels": current_pack["labels"][boundary:], + "position_ids": current_pack["position_ids"][boundary:], + "sequence_lengths": [next_seq_len], + } + + def _add_pack(self, pack) -> None: + """Processes, pads and adds a pack to ``self.packs``.""" + pack = self._pad_pack(pack, padding_idx=self.padding_idx) + self.packs.append(pack) + + def _pad_pack(self, pack, padding_idx: int): + """Pads a pack to ``self.max_seq_len``.""" + num_tokens = len(pack["inputs"]) + num_padding_tokens = self.max_seq_len - num_tokens + + self.packed_tokens += num_tokens + self.total_tokens += self.max_seq_len + + padded_inputs = np.pad( + pack["inputs"], (0, num_padding_tokens), constant_values=self.padding_idx + ) + padded_labels = np.pad( + pack["labels"], (0, num_padding_tokens), constant_values=-100 + ) + + if num_padding_tokens > 0: + # don't care much about padded position_ids, but create them for consistency + start_pos = int(pack["position_ids"][-1] + 1) if num_tokens > 0 else 0 + pad_positions = np.arange( + start_pos, start_pos + num_padding_tokens, dtype=np.int32 + ) + padded_position_ids = np.concatenate((pack["position_ids"], pad_positions)) + else: + padded_position_ids = pack["position_ids"] + + padded_seq_lens = pack["sequence_lengths"] + if num_padding_tokens > 0: + padded_seq_lens.append(num_padding_tokens) + + return { + "inputs": padded_inputs, + "labels": padded_labels, + "position_ids": padded_position_ids, + "sequence_lengths": padded_seq_lens, + "pixel_values": pack["pixel_values"], + "image_sizes": pack["image_sizes"], + } + + def __len__(self) -> int: + return len(self.packs) + + def __getitem__(self, idx: int) -> dict[str, np.ndarray]: + return self.packs[idx] + + +def main(args): + + from datasets import load_dataset + """ + + SYSTEM_PROMPT = "You are a helpful assistant." + image_url = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/bee.jpg" + + ds = [{"messages": [ + { + "role": "user", + "content": [ + { + "type": "text", + "text": "What action do you think I should take in this situation? List all the possible actions and explain why you think they are good or bad.", + }, + {"type": "image_url", "image_url": {"url": image_url}}, + ], + }, +]}] + + ds = ds * 10 + + with open('dataset.json', 'w') as f: + json.dump(ds, f) + """ + + dataset = load_dataset('json', data_files='/home/artem_nous/cambrian_set/output2.json')['train'].select(range(10)) + + #dataset = load_dataset(args.dataset, name=args.subset, split=args.split) + + def remove_none_recursively(obj): + if isinstance(obj, dict): + return {k: remove_none_recursively(v) for k, v in obj.items() if v is not None} + elif isinstance(obj, list): + return [remove_none_recursively(item) for item in obj] + else: + return obj + + #dataset = load_dataset(args.dataset, name=args.subset, split=args.split) + #tokenizer = AutoTokenizer.from_pretrained(args.tokenizer) + #tokenizer = MistralTokenizer.from_hf_hub(args.preprocessor) + from transformers import AutoProcessor + tokenizer = AutoProcessor.from_pretrained(args.preprocessor, use_fast=True) + + + def _tokenize_chat_multimodal(sample): + inputs = [] + labels = [] + images = [] + + for conversation in sample["messages"]: + for message in conversation: + + keys = list(message.keys()) + + """ + for content in message['content']: + if content.get('base64'): + content['type'] = 'image_url' + content['image_url'] = content['base64'] + content['image_url'] = f"data:image/jpeg;base64,{content['base64']}" + #print(content['base64'][:100]) + # remove base64 + content.pop('base64') + """ + + if "from" in keys and "value" in keys: + # sharegpt format + message_from = message.pop("from") + if message_from == "gpt": + message["role"] = "assistant" + elif message_from == "human": + message["role"] = "user" + else: + message["role"] = message_from + + message["content"] = message.pop("value") + elif "role" in keys and "content" in keys: + pass + else: + raise RuntimeError(f"Unknown chat format, keys are {keys}") + + + conversation = remove_none_recursively(conversation) + + #print(conversation) + + #tokenized = tokenizer.encode_chat_completion(ChatCompletionRequest(messages=conversation)) + tokenized = tokenizer.apply_chat_template(conversation, tokenize=True, return_dict=True, return_tensors="pt") + tokens = tokenized["input_ids"][0] #tokenizer.apply_chat_template(conversation, tokenize=True) + image = tokenized["pixel_values"] + + current_len = 0 + label = [] + for i in range(len(conversation)): + if i + 1 == len(conversation): + next_tokens = tokenizer.apply_chat_template(conversation, + tokenize=True, return_dict=True, return_tensors="pt")["input_ids"][0][current_len:] + else: + if "assistant" == conversation[i + 1]["role"]: + next_tokens = tokenizer.apply_chat_template(conversation[: i + 1], + add_generation_prompt=True, tokenize=True, return_dict=True)["input_ids"][0][current_len:] + else: + next_tokens = tokenizer.apply_chat_template(conversation[: i + 1], + tokenize=True, return_dict=True)["input_ids"][0][current_len:] + #next_tokens = tokenizer.encode_chat_completion(ChatCompletionRequest(messages=conversation[: i + 1])).tokens[current_len:] + + if conversation[i]["role"] == "assistant": + label.extend(next_tokens) + else: + label.extend([-100] * len(next_tokens)) + + current_len += len(next_tokens) + + inputs.append(tokens) + labels.append(label) + images.append(image) + + return { + "inputs": inputs, + "labels": labels, + "images": images, + } + + def _tokenize_mistral_format(sample): + messages = sample["messages"] + cleaned_messages = remove_none_recursively(messages) + tokenized = tokenizer.encode_chat_completion(ChatCompletionRequest(messages=cleaned_messages)) + return tokenized.__dict__ + + dataset = dataset.shuffle(args.seed) + + original_column_names = list(dataset.features.keys()) + + dataset = dataset.map( + _tokenize_chat_multimodal, + batched=True, + #batch_size=args.batch_size, + ) + + dataset = dataset.remove_columns(original_column_names) + print(dataset[0]['images']) + + efficiency = 1.0 + dropped = 0 + if args.pack_to_sequence_length: + num_shards = 1 # args.num_proc + shards = [ + dataset.shard(num_shards=num_shards, index=i) for i in range(num_shards) + ] + + + with multiprocessing.Pool(processes=num_shards) as pool: + process_args = [ + (shard, args, tokenizer.tokenizer.pad_token_id, index, num_shards) + for index, shard in enumerate(shards) + ] + + results = pool.starmap(process_packing_shard, process_args) + + examples = [] + filenames = [] + total_tokens = 0 + packed_tokens = 0 + + for total, packed, dropped_, filename, example in tqdm(results): + if example: + examples.append(example) + if filename: + filenames.append(filename) + total_tokens += total + packed_tokens += packed + dropped += dropped_ + + if total_tokens > 0: + efficiency = packed_tokens / total_tokens + + example = examples[0] + + if args.save_to_disk: + with open(os.path.join(args.save_to_disk, "dataset_info.json"), "wb") as f: + f.write(DATASET_INFO.encode()) + + # verify we can open and do any conversion needed + dataset = load_dataset(args.save_to_disk, num_proc=args.num_proc) + + else: + if args.drop_larger_than: + len_before = len(dataset) + dataset = dataset.filter( + lambda x: len(x["inputs"]) <= args.drop_larger_than + ) + dropped = len_before - len(dataset) + + if args.save_to_disk: + print(f"Saving to {args.save_to_disk}") + dataset.save_to_disk(args.save_to_disk) + + example = dataset[0] + + if args.show_example: + inputs = example["inputs"] + labels = example["labels"] if "labels" in example else None + position_ids = example["position_ids"] if "position_ids" in example else None + + example_out = "" + for i in range(0, len(inputs)): + token = inputs[i] + label = labels[i] if labels is not None else token + position_id = position_ids[i] if position_ids is not None else None + + decoded = tokenizer.decode(token) + + if label == -100: + example_out += f"\033[31m{decoded}\033[0m({token}" + else: + example_out += f"\033[32m{decoded}\033[0m({token}" + + if position_id != None: + example_out += f"@{position_id})" + else: + example_out += ")" + + print(example_out) + + if dropped > 0: + print(f"Dropped {dropped} too-long samples") + print(f"Efficiency: {efficiency * 100:.1f}%") + + +if __name__ == "__main__": + parser = argparse.ArgumentParser() + parser.add_argument("--dataset", type=str, required=True) + parser.add_argument("--subset", type=str) + parser.add_argument("--split", type=str, default="train") + parser.add_argument("--preprocessor", type=str, required=True) + parser.add_argument("--batch-size", type=int, default=1000) + parser.add_argument("--num-proc", type=int) + parser.add_argument("--seed", type=int, default=42) + parser.add_argument("--limit", type=int) + parser.add_argument("--chat", action="store_true") + parser.add_argument("--multiturn-only", action="store_true") + parser.add_argument("--pack-to-sequence-length", type=int) + parser.add_argument("--drop-larger-than", type=int) + parser.add_argument("--save-to-disk", type=str) + parser.add_argument("--show-example", action="store_true") + args = parser.parse_args() + + main(args) From a9fedf508fc14dedac7b1556b6d7d4d468ed38e8 Mon Sep 17 00:00:00 2001 From: Artem Yatsenko Date: Thu, 14 Aug 2025 02:10:42 +0000 Subject: [PATCH 17/28] update readme --- README.md | 2 +- scripts/multimodal.py | 80 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 81 insertions(+), 1 deletion(-) create mode 100644 scripts/multimodal.py diff --git a/README.md b/README.md index b8752e4904..bf76a29ac4 100644 --- a/README.md +++ b/README.md @@ -174,7 +174,7 @@ CONFIG_FILE="./torchtitan/models/qwen3/train_configs/qwen3_8b_finetuning.toml" . ## Training Mistral Small 3.1 with multimodal sample packing To preprocess and pack a multimodal chat dataset, run `scripts/preprocess_multimodal_data.py`: ``` -python3 scripts/preprocess_multimodal_data.py --dataset /home/shared/datasets/cambrian_sample.json --preprocessor mistralai/Mistral-Small-3.1-24B-Instruct-2503 --chat --pack-to-sequence-length 8000 --split "train" --save-to-disk ./multimodal_dataset +python3 scripts/preprocess_multimodal_data.py --dataset /home/shared/datasets/cambrian_sample.json --preprocessor mistralai/Mistral-Small-3.1-24B-Instruct-2503 --chat --pack-to-sequence-length 8000 --split "train" --save-to-disk ./multimodal_dataset --limit 1000 ``` Mistral Small 3.1 can be trained using this dataset: diff --git a/scripts/multimodal.py b/scripts/multimodal.py new file mode 100644 index 0000000000..f3895b732c --- /dev/null +++ b/scripts/multimodal.py @@ -0,0 +1,80 @@ +from datetime import datetime, timedelta +import torch +import time + +from mistral_common.protocol.instruct.request import ChatCompletionRequest +from mistral_common.tokens.tokenizers.mistral import MistralTokenizer +from huggingface_hub import hf_hub_download +from transformers import Mistral3ForConditionalGeneration + + +def load_system_prompt(repo_id: str, filename: str) -> str: + file_path = hf_hub_download(repo_id=repo_id, filename=filename) + with open(file_path, "r") as file: + system_prompt = file.read() + today = datetime.today().strftime("%Y-%m-%d") + yesterday = (datetime.today() - timedelta(days=1)).strftime("%Y-%m-%d") + model_name = repo_id.split("/")[-1] + return system_prompt.format(name=model_name, today=today, yesterday=yesterday) + + +model_id = "mistralai/Mistral-Small-3.2-24B-Instruct-2506" +SYSTEM_PROMPT = load_system_prompt(model_id, "SYSTEM_PROMPT.txt") + +tokenizer = MistralTokenizer.from_hf_hub(model_id) + +model = Mistral3ForConditionalGeneration.from_pretrained( + model_id, torch_dtype=torch.bfloat16 +) + +image_url = "https://static.wikia.nocookie.net/essentialsdocs/images/7/70/Battle.png/revision/latest?cb=20220523172438" + +messages = [ + {"role": "system", "content": SYSTEM_PROMPT}, + { + "role": "user", + "content": [ + { + "type": "text", + "text": "What action do you think I should take in this situation? List all the possible actions and explain why you think they are good or bad.", + }, + {"type": "image_url", "image_url": {"url": image_url}}, + {"type": "image_url", "image_url": {"url": image_url}}, + {"type": "image_url", "image_url": {"url": image_url}}, + {"type": "image_url", "image_url": {"url": image_url}}, + {"type": "image_url", "image_url": {"url": image_url}}, + {"type": "image_url", "image_url": {"url": image_url}}, + {"type": "image_url", "image_url": {"url": image_url}}, + {"type": "image_url", "image_url": {"url": image_url}}, + {"type": "image_url", "image_url": {"url": image_url}}, + {"type": "image_url", "image_url": {"url": image_url}}, + ], + }, +] + +tokenized = tokenizer.encode_chat_completion(ChatCompletionRequest(messages=messages)) + +input_ids = torch.tensor([tokenized.tokens]) +attention_mask = torch.ones_like(input_ids) + +pixel_values = torch.tensor(tokenized.images).to(dtype=torch.bfloat16) +image_sizes = torch.tensor([[pixel_values.shape[-2], pixel_values.shape[-1]]] * len(tokenized.images)) + + +t1 = time.time() + +for i in range(10): + with torch.no_grad(): # For inference efficiency + image_features = model.get_image_features( + pixel_values=pixel_values, + image_sizes=image_sizes + ) + + print(len(image_features)) + print(image_features[0].shape) + + tensor_size_in_bytes = image_features[0].nelement() * image_features[0].element_size() + print(f"Tensor size: {tensor_size_in_bytes / 1024 / 1024} MB") + +t2 = time.time() +print(f"Time taken: {t2 - t1} seconds") From b4865345525787382e0db27048c6128bfe2aa783 Mon Sep 17 00:00:00 2001 From: Artem Yatsenko Date: Thu, 14 Aug 2025 02:28:37 +0000 Subject: [PATCH 18/28] add interleaved packed ds --- scripts/preprocess_interleaved_data.py | 861 +++++++++++++++++++++++++ 1 file changed, 861 insertions(+) create mode 100644 scripts/preprocess_interleaved_data.py diff --git a/scripts/preprocess_interleaved_data.py b/scripts/preprocess_interleaved_data.py new file mode 100644 index 0000000000..e78f7b2f47 --- /dev/null +++ b/scripts/preprocess_interleaved_data.py @@ -0,0 +1,861 @@ +""" + +Preprocessing script for interleaved data that contains both text-only and multimodal examples. +This script can process datasets that have examples like: + +Text-only examples: +[ + { + "text": "Some text content here..." + } +] + +Multimodal examples: +[ + { + "messages": [ + { + "role": "system", + "content": [ + {"type": "text", "text": "You are a helpful assistant."} + ] + }, + { + "role": "user", + "content": [ + {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/bee.jpg"}, + {"type": "text", "text": "Describe this image in detail."} + ] + }, + { + "role": "assistant", + "content": [ + {"type": "text", "text": "The image is a bee."} + ] + } + ] + } +] +""" +import argparse +import os +import shutil +import multiprocessing +import numpy as np +import pyarrow as pa +import pyarrow.dataset as pa_ds +import random +import json +import base64 +import uuid +from PIL import Image +import io +from mistral_common.protocol.instruct.request import ChatCompletionRequest +from mistral_common.tokens.tokenizers.mistral import MistralTokenizer + +from typing import List, Optional, Tuple +from torch.nn import functional as F +from torch.utils.data import Dataset +from tqdm import tqdm +from datasets import load_dataset, Dataset as DatasetsDataset +from transformers import AutoTokenizer, AutoProcessor + +from datetime import datetime, timedelta +import torch + +from mistral_common.protocol.instruct.request import ChatCompletionRequest +from mistral_common.tokens.tokenizers.mistral import MistralTokenizer +from huggingface_hub import hf_hub_download +from transformers import Mistral3ForConditionalGeneration + + +LOCAL_IMAGE_DIR = "./images" + +SCHEMA = pa.schema( + [ + pa.field("inputs", pa.large_list(pa.int32())), + pa.field("labels", pa.large_list(pa.int32())), + pa.field("position_ids", pa.large_list(pa.int32())), + pa.field("sequence_lengths", pa.large_list(pa.int64())), + pa.field("images", pa.large_list(pa.string())), + ] +) + +DATASET_INFO = r"""{ + "citation": "", + "description": "", + "features": { + "inputs": { + "feature": { + "dtype": "int32", + "_type": "Value" + }, + "_type": "LargeList" + }, + "labels": { + "feature": { + "dtype": "int32", + "_type": "Value" + }, + "_type": "LargeList" + }, + "position_ids": { + "feature": { + "dtype": "int32", + "_type": "Value" + }, + "_type": "LargeList" + }, + "sequence_lengths": { + "feature": { + "dtype": "int64", + "_type": "Value" + }, + "_type": "LargeList" + }, + "images": { + "feature": { + "dtype": "str", + "_type": "Value" + }, + "_type": "LargeList" + } + }, + "homepage": "", + "license": "" +}""" + + +def process_packing_shard(shard, args, tokenizer_pad_id, rank, world_size): + packer = InterleavedPackedDataset( + shard, + max_seq_len=args.pack_to_sequence_length, + padding_idx=tokenizer_pad_id, + split_across_pack=not args.chat, + show_pbar=rank == 0, + ) + + if args.save_to_disk: + # create a schema that uses int64 for list sizes + + example = ( + { + "inputs": packer.packs[0]["inputs"], + "labels": packer.packs[0]["labels"], + "position_ids": packer.packs[0]["position_ids"], + "sequence_lengths": packer.packs[0]["sequence_lengths"], + "images": packer.packs[0]["images"], + } + if len(packer.packs) > 0 + else None + ) + + oriented_data = { + "inputs": [pack["inputs"] for pack in packer.packs], + "labels": [pack["labels"] for pack in packer.packs], + "position_ids": [pack["position_ids"] for pack in packer.packs], + "sequence_lengths": [pack["sequence_lengths"] for pack in packer.packs], + "images": [pack["images"] for pack in packer.packs], + } + pa_table = pa.Table.from_pydict(oriented_data, schema=SCHEMA) + del oriented_data + + pa_ds.write_dataset( + pa_table, + os.path.join(args.save_to_disk, str(rank)), + format="arrow", + ) + + filename = f"data-{rank:05d}-of-{world_size:05d}.arrow" + + shutil.move( + os.path.join(args.save_to_disk, str(rank), "part-0.arrow"), + os.path.join(args.save_to_disk, filename), + ) + + os.rmdir(os.path.join(args.save_to_disk, str(rank))) + else: + filename = None + + return packer.total_tokens, packer.packed_tokens, packer.dropped, filename, example + + +# https://github.com/pytorch/torchtune/blob/9d91fe39f08661952da4180b9e7fb2eba5a7a5e7/torchtune/datasets/_packed.py +class InterleavedPackedDataset(Dataset): + """ + Performs greedy sample packing on a provided dataset. This is done as a single + preprocessing step before training begins. Shuffling is done outside of this + class on packed samples with a ``Sampler`` as part of the dataloader. Currently, + this only supports in-memory map-style datasets. + + The class loads, tokenizes, and packs examples on initialization - no tokenization is done during training. + + The general flow on initialization is: load tokenized sample -> add to buffer -> + when buffer is long enough, add to ``self.packs``. + + During training, returns self.packs[idx] as input, label, attention mask, and + position ids. The attention mask is a lower triangular block mask to prevent + samples from cross-attending within a pack. The position ids indicate the position + of each token relative to its sample within a pack. These are all padded to max + sequence length, so a batch-wise collator is not needed. + + A packed sample is made up of individual smaller sequence length samples jammed together + within ``max_seq_len``. For example, if max_seq_len is 6 and there are varied + length samples:: + + tokens = [ + [S1, S1, S1, S2, S2, pad], + [S3, S3, S4, S4, pad, pad], + ..., + ] + + To prevent cross-contamination, the following mask would be returned for the + first pack in the example:: + + mask = [ + [1, 0, 0, 0, 0, 0], + [1, 1, 0, 0, 0, 0], + [1, 1, 1, 0, 0, 0], + [0, 0, 0, 1, 0, 0], + [0, 0, 0, 1, 1, 0], + [0, 0, 0, 0, 0, 1], + ] + + The position ids would be:: + + input_pos = [ + [0, 1, 2, 0, 1, 2], + [0, 1, 0, 1, 2, 3], + ..., + ] + + The identity matrix is used in the mask for pad tokens instead of a causal mask. + For position ids for pad tokens, we simply continue to increment from the previous + sample normally. + + Args: + ds (Dataset): dataset to sample pack. This should return a dictionary with field + "tokens" and "labels" containing the tokenized and label samples. + max_seq_len (int): Maximum number of tokens to pack + padding_idx (int): padding index for the tokenizer. Default is 0. + max_packs (Optional[int]): Maximum number of packs. Default is None, which will create as many + packs as possible. + split_across_pack (bool): if the last sample in a pack does not fit in ``max_seq_len``, + split the sample into the next pack, or move it entirely to the beginning of the next pack. + For pre-training, typically this is set to True for general text completion. For + fine-tuning, typically this is set to False to avoid truncating sentences in instruct + tuning. Default is False. + """ + + def __init__( + self, + ds: Dataset, + *, + max_seq_len: int, + padding_idx: int = 0, + max_packs: Optional[int] = None, + split_across_pack: bool = False, + group_size: int = 5000, + show_pbar=True, + ) -> None: + self.ds = ds + self.max_seq_len = max_seq_len + self.padding_idx = padding_idx + self.max_packs = max_packs + self.split_across_pack = split_across_pack + self.packs = [] + self.previous_sample_boundary: int = 0 + self.packed_tokens: int = 0 + self.total_tokens: int = 0 + self.dropped: int = 0 + self.show_pbar = show_pbar + self.group_size = group_size + if split_across_pack: + self._pack_greedy() + else: + self._pack_ffd() + + def _get_empty_pack(self): + return { + "inputs": np.empty(0, dtype=np.int32), + "labels": np.empty(0, dtype=np.int32), + "position_ids": np.empty(0, dtype=np.int32), + "sequence_lengths": [], + "images": [], + } + + def _pack_ffd(self) -> None: + ds_iterator = iter(self.ds) + finished_iterating = False + + pbar = ( + tqdm( + total=len(self.ds), + desc="Packing dataset (FFD)", + dynamic_ncols=True, + ) + if self.show_pbar + else None + ) + + while not finished_iterating: + # 1. Fetch a large group of samples into memory. + group = [] + try: + for _ in range(self.group_size): + sample = next(ds_iterator) + seq_len = len(sample["inputs"]) + + if seq_len > self.max_seq_len: + self.dropped += 1 + continue + # Store sample and its length for sorting + group.append({"sample": sample, "seq_len": seq_len}) + except StopIteration: + finished_iterating = True + + if not group: + break + + # 2. Sort the group by length in descending order (the "Decreasing" part of FFD). + group.sort(key=lambda x: x["seq_len"], reverse=True) + + # 3. Pack this group using the "First-Fit" heuristic. + # Each bin holds the samples it contains and its remaining space. + bins = [] # List of {"samples": [], "remaining_space": max_seq_len} + + for item in group: + placed = False + # Try to place the item in the first available bin. + for bin in bins: + if bin["remaining_space"] >= item["seq_len"]: + bin["samples"].append(item["sample"]) + bin["remaining_space"] -= item["seq_len"] + placed = True + break + + # If no existing bin could accommodate the item, create a new one. + if not placed: + bins.append( + { + "samples": [item["sample"]], + "remaining_space": self.max_seq_len - item["seq_len"], + } + ) + + # 4. Convert the completed bins from this group into final, padded packs. + for bin_info in bins: + if self._should_stop_packing(): + break + + current_pack = self._get_empty_pack() + for sample in bin_info["samples"]: + tokens = np.array(sample["inputs"], dtype=np.int32) + labels = np.array(sample["labels"], dtype=np.int32) + images = sample.get("images", []) + seq_len = len(tokens) + + current_pack["inputs"] = np.concatenate( + (current_pack["inputs"], tokens) + ) + current_pack["labels"] = np.concatenate( + (current_pack["labels"], labels) + ) + current_pack["position_ids"] = np.concatenate( + ( + current_pack["position_ids"], + np.arange(seq_len, dtype=np.int32), + ) + ) + current_pack["sequence_lengths"].append(seq_len) + current_pack["images"].append(images) + + self._add_pack(current_pack) + + if pbar: + pbar.update(len(group)) + + if self._should_stop_packing(): + # Ensure the outer loop breaks if max_packs is reached. + break + + if pbar: + # Manually set pbar to total to show 100% at the end + pbar.n = pbar.total + pbar.refresh() + pbar.close() + + def _pack_greedy(self) -> None: + """Iterate through the dataset. Use a buffer to hold samples until max_seq_len, + then append the buffer to self.packs as a single "packed" sample. Continue + until max_packs or end of dataset.""" + + current_pack = self._get_empty_pack() + + pbar = ( + tqdm(total=len(self.ds), desc="Packing dataset", dynamic_ncols=True) + if self.show_pbar + else None + ) + + for sample in self.ds: + tokens = np.array(sample["inputs"], dtype=np.int32) + labels = np.array(sample["labels"], dtype=np.int32) + images = sample.get("images", []) + + seq_len = len(tokens) + if seq_len > self.max_seq_len and not self.split_across_pack: + # print( + # f"Dropping sample that is too long ({seq_len} > {self.max_seq_len})" + # ) + self.dropped += 1 + continue + + current_pack["inputs"] = np.concatenate((current_pack["inputs"], tokens)) + current_pack["labels"] = np.concatenate((current_pack["labels"], labels)) + + position_ids = np.arange(seq_len, dtype=np.int32) + current_pack["position_ids"] = np.concatenate( + (current_pack["position_ids"], position_ids) + ) + + current_pack["sequence_lengths"] += [seq_len] + current_pack["images"].append(images) + + while ( + len(current_pack["inputs"]) > self.max_seq_len + and not self._should_stop_packing() + ): + current_pack = self._split_and_add_pack(current_pack) + + if pbar: + pbar.update() + + self.previous_sample_boundary = len(current_pack["inputs"]) + + if self._should_stop_packing(): + break + + if len(current_pack["inputs"]) > 0 and ( + self.max_packs is None or len(self.packs) < self.max_packs + ): + self._add_pack(current_pack) + + def _should_stop_packing(self) -> bool: + """If max packs is set, stop packing when we reach that number.""" + + if self.max_packs is not None and len(self.packs) == self.max_packs: + return True + return False + + def _split_and_add_pack(self, current_pack): + """Splits the current pack at the boundary, processes it, adds it to ``self.packs`` and + returns the start of the next pack.""" + + if self.split_across_pack: + boundary = self.max_seq_len + # The last elem in ``seq_lens`` ensures that ``sum(seq_lens) == self.max_seq_len`` + leftover_seq_len = self.max_seq_len - sum(current_pack["seq_lens"][:-1]) + seq_len_padding = [leftover_seq_len] if leftover_seq_len > 0 else [] + else: + boundary = self.previous_sample_boundary + # If we aren't splitting across packs, we leave out the last sample b/c + # it will go into the next pack + seq_len_padding = [] + + pack = { + "inputs": current_pack["inputs"][:boundary], + "labels": current_pack["labels"][:boundary], + "position_ids": current_pack["position_ids"][:boundary], + "sequence_lengths": current_pack["sequence_lengths"][:-1] + seq_len_padding, + "images": current_pack["images"][:-1], + } + + self._add_pack(pack) + + # Return the length of the first sample in next pack if we are splitting across packs, + # otherwise return the length of the last sample in the current pack + next_seq_len = ( + len(current_pack["inputs"][boundary:]) + if self.split_across_pack + else current_pack["sequence_lengths"][-1] + ) + + return { + "inputs": current_pack["inputs"][boundary:], + "labels": current_pack["labels"][boundary:], + "position_ids": current_pack["position_ids"][boundary:], + "sequence_lengths": [next_seq_len], + "images": [current_pack["images"][-1]] if current_pack["images"] else [], + } + + def _add_pack(self, pack) -> None: + """Processes, pads and adds a pack to ``self.packs``.""" + pack = self._pad_pack(pack, padding_idx=self.padding_idx) + self.packs.append(pack) + + def _pad_pack(self, pack, padding_idx: int): + """Pads a pack to ``self.max_seq_len``.""" + num_tokens = len(pack["inputs"]) + num_padding_tokens = self.max_seq_len - num_tokens + + self.packed_tokens += num_tokens + self.total_tokens += self.max_seq_len + + padded_inputs = np.pad( + pack["inputs"], (0, num_padding_tokens), constant_values=self.padding_idx + ) + padded_labels = np.pad( + pack["labels"], (0, num_padding_tokens), constant_values=-100 + ) + + if num_padding_tokens > 0: + # don't care much about padded position_ids, but create them for consistency + start_pos = int(pack["position_ids"][-1] + 1) if num_tokens > 0 else 0 + pad_positions = np.arange( + start_pos, start_pos + num_padding_tokens, dtype=np.int32 + ) + padded_position_ids = np.concatenate((pack["position_ids"], pad_positions)) + else: + padded_position_ids = pack["position_ids"] + + padded_seq_lens = pack["sequence_lengths"] + if num_padding_tokens > 0: + padded_seq_lens.append(num_padding_tokens) + + return { + "inputs": padded_inputs, + "labels": padded_labels, + "position_ids": padded_position_ids, + "sequence_lengths": padded_seq_lens, + "images": pack["images"], + } + + def __len__(self) -> int: + return len(self.packs) + + def __getitem__(self, idx: int) -> dict[str, np.ndarray]: + return self.packs[idx] + + +def main(args): + from datasets import load_dataset + + if 'json' in args.dataset: + dataset = load_dataset('json', data_files=args.dataset)['train'] + if args.limit is not None: + dataset = dataset.select(range(args.limit)) + else: + dataset = load_dataset(args.dataset, name=args.subset, split=args.split) + + def remove_none_recursively(obj): + if isinstance(obj, dict): + return {k: remove_none_recursively(v) for k, v in obj.items() if v is not None} + elif isinstance(obj, list): + return [remove_none_recursively(item) for item in obj] + else: + return obj + + # Initialize both tokenizer and processor + tokenizer = AutoTokenizer.from_pretrained(args.tokenizer, use_fast=True) + processor = AutoProcessor.from_pretrained(args.preprocessor, use_fast=True) + + def _detect_sample_type(sample): + """Detect whether a sample is text-only or multimodal based on its structure.""" + if "text" in sample: + return "text_only" + elif "messages" in sample: + return "multimodal" + else: + # Default to text-only if we can't determine + return "text_only" + + def _tokenize_text_only(sample): + """Tokenize text-only samples.""" + inputs = tokenizer.batch_encode_plus(sample["text"]).input_ids + for x in inputs: + x.append(tokenizer.eos_token_id) + return {"inputs": inputs, "labels": inputs, "images": []} + + def _tokenize_chat_multimodal(sample): + """Tokenize multimodal chat samples.""" + inputs = [] + labels = [] + images = [] + + for conversation in sample["messages"]: + image = None + conversation = remove_none_recursively(conversation) + + for message in conversation: + keys = list(message.keys()) + + for item in message['content']: + if 'base64' in item.keys(): + # save image in local folder as PIL image with uuid + # Decode base64 image data + image_data = base64.b64decode(item['base64']) + image = Image.open(io.BytesIO(image_data)) + + # Generate UUID4 filename + image_filename = f"{uuid.uuid4()}.jpg" + image_path = os.path.join(LOCAL_IMAGE_DIR, image_filename) + + # Ensure directory exists + os.makedirs(LOCAL_IMAGE_DIR, exist_ok=True) + + # Save image as JPG + image.save(image_path, 'JPEG') + + # remove base64 key, set type image + item.pop('base64') + item['type'] = 'image' + item['path'] = image_path + + image = image_path + + if "from" in keys and "value" in keys: + # sharegpt format + message_from = message.pop("from") + if message_from == "gpt": + message["role"] = "assistant" + elif message_from == "human": + message["role"] = "user" + else: + message["role"] = message_from + + message["content"] = message.pop("value") + elif "role" in keys and "content" in keys: + pass + else: + raise RuntimeError(f"Unknown chat format, keys are {keys}") + + tokenized = processor.apply_chat_template(conversation, tokenize=True, return_dict=True, return_tensors="pt") + + tokens = tokenized["input_ids"][0] + + current_len = 0 + label = [] + for i in range(len(conversation)): + if i + 1 == len(conversation): + next_tokens = processor.apply_chat_template(conversation, + tokenize=True, return_dict=True, return_tensors="pt")["input_ids"][0][current_len:] + else: + if "assistant" == conversation[i + 1]["role"]: + next_tokens = processor.apply_chat_template(conversation[: i + 1], + add_generation_prompt=True, tokenize=True, return_dict=True)["input_ids"][0][current_len:] + else: + next_tokens = processor.apply_chat_template(conversation[: i + 1], + tokenize=True, return_dict=True)["input_ids"][0][current_len:] + + if conversation[i]["role"] == "assistant": + label.extend(next_tokens) + else: + label.extend([-100] * len(next_tokens)) + + current_len += len(next_tokens) + + inputs.append(tokens) + labels.append(label) + images.append(image) + + return { + "inputs": inputs, + "labels": labels, + "images": images, + } + + def _tokenize_chat_text_only(sample): + """Tokenize text-only chat samples.""" + inputs = [] + labels = [] + + for conversation in sample["conversations"]: + for message in conversation: + keys = list(message.keys()) + + if "from" in keys and "value" in keys: + # sharegpt format + message_from = message.pop("from") + if message_from == "gpt": + message["role"] = "assistant" + elif message_from == "human": + message["role"] = "user" + else: + message["role"] = message_from + + message["content"] = message.pop("value") + elif "role" in keys and "content" in keys: + pass + else: + raise RuntimeError(f"Unknown chat format, keys are {keys}") + + tokens = tokenizer.apply_chat_template(conversation, tokenize=True) + label = [] + + current_len = 0 + for i in range(len(conversation)): + if i + 1 == len(conversation): + next_tokens = tokenizer.apply_chat_template(conversation)[ + current_len: + ] + else: + if "assistant" == conversation[i + 1]["role"]: + next_tokens = tokenizer.apply_chat_template( + conversation[: i + 1], add_generation_prompt=True + )[current_len:] + else: + next_tokens = tokenizer.apply_chat_template( + conversation[: i + 1] + )[current_len:] + + if conversation[i]["role"] == "assistant": + label.extend(next_tokens) + else: + label.extend([-100] * len(next_tokens)) + + current_len += len(next_tokens) + + inputs.append(tokens) + labels.append(label) + + return { + "inputs": inputs, + "labels": labels, + "images": [], + } + + def _tokenize_interleaved(sample): + """Main tokenization function that handles both text-only and multimodal samples.""" + sample_type = _detect_sample_type(sample) + + if sample_type == "text_only": + if "text" in sample: + return _tokenize_text_only(sample) + elif "conversations" in sample: + return _tokenize_chat_text_only(sample) + else: + raise ValueError(f"Unknown text-only format: {list(sample.keys())}") + elif sample_type == "multimodal": + return _tokenize_chat_multimodal(sample) + else: + raise ValueError(f"Unknown sample type: {sample_type}") + + dataset = dataset.shuffle(args.seed) + + original_column_names = list(dataset.features.keys()) + + dataset = dataset.map( + _tokenize_interleaved, + batched=True, + #batch_size=args.batch_size, + ) + + dataset = dataset.remove_columns(original_column_names) + + efficiency = 1.0 + dropped = 0 + if args.pack_to_sequence_length: + num_shards = 32 # args.num_proc + shards = [ + dataset.shard(num_shards=num_shards, index=i) for i in range(num_shards) + ] + + with multiprocessing.Pool(processes=num_shards) as pool: + process_args = [ + (shard, args, tokenizer.pad_token_id, index, num_shards) + for index, shard in enumerate(shards) + ] + + results = pool.starmap(process_packing_shard, process_args) + + examples = [] + filenames = [] + total_tokens = 0 + packed_tokens = 0 + + for total, packed, dropped_, filename, example in tqdm(results): + if example: + examples.append(example) + if filename: + filenames.append(filename) + total_tokens += total + packed_tokens += packed + dropped += dropped_ + + if total_tokens > 0: + efficiency = packed_tokens / total_tokens + + example = examples[0] + + if args.save_to_disk: + with open(os.path.join(args.save_to_disk, "dataset_info.json"), "wb") as f: + f.write(DATASET_INFO.encode()) + + # verify we can open and do any conversion needed + dataset = load_dataset(args.save_to_disk, num_proc=args.num_proc) + + else: + if args.drop_larger_than: + len_before = len(dataset) + dataset = dataset.filter( + lambda x: len(x["inputs"]) <= args.drop_larger_than + ) + dropped = len_before - len(dataset) + + if args.save_to_disk: + print(f"Saving to {args.save_to_disk}") + dataset.save_to_disk(args.save_to_disk) + + example = dataset[0] + + if args.show_example: + inputs = example["inputs"] + labels = example["labels"] if "labels" in example else None + position_ids = example["position_ids"] if "position_ids" in example else None + + example_out = "" + for i in range(0, len(inputs)): + token = inputs[i] + label = labels[i] if labels is not None else token + position_id = position_ids[i] if position_ids is not None else None + + decoded = tokenizer.decode(token) + + if label == -100: + example_out += f"\033[31m{decoded}\033[0m({token}" + else: + example_out += f"\033[32m{decoded}\033[0m({token}" + + if position_id != None: + example_out += f"@{position_id})" + else: + example_out += ")" + + print(example_out) + + if dropped > 0: + print(f"Dropped {dropped} too-long samples") + print(f"Efficiency: {efficiency * 100:.1f}%") + + +if __name__ == "__main__": + parser = argparse.ArgumentParser() + parser.add_argument("--dataset", type=str, required=True) + parser.add_argument("--subset", type=str) + parser.add_argument("--split", type=str, default="train") + parser.add_argument("--tokenizer", type=str, required=True) + parser.add_argument("--preprocessor", type=str, required=True) + parser.add_argument("--batch-size", type=int, default=1000) + parser.add_argument("--num-proc", type=int) + parser.add_argument("--seed", type=int, default=42) + parser.add_argument("--limit", type=int) + parser.add_argument("--chat", action="store_true") + parser.add_argument("--multiturn-only", action="store_true") + parser.add_argument("--pack-to-sequence-length", type=int) + parser.add_argument("--drop-larger-than", type=int) + parser.add_argument("--save-to-disk", type=str) + parser.add_argument("--show-example", action="store_true") + args = parser.parse_args() + + main(args) From 84b2b7ce2e35717d7a1fbaf9b160b45d09fc1a57 Mon Sep 17 00:00:00 2001 From: Artem Yatsenko Date: Fri, 15 Aug 2025 20:09:01 +0000 Subject: [PATCH 19/28] add interleaved text-image and textonly preprocess script & functionality --- README.md | 2 + scripts/preprocess_interleaved_data.py | 176 +++++++------------------ 2 files changed, 50 insertions(+), 128 deletions(-) diff --git a/README.md b/README.md index bf76a29ac4..074189aa5e 100644 --- a/README.md +++ b/README.md @@ -178,7 +178,9 @@ python3 scripts/preprocess_multimodal_data.py --dataset /home/shared/datasets/ca ``` Mistral Small 3.1 can be trained using this dataset: +``` CONFIG_FILE="./torchtitan/models/mistral3/train_configs/mistral24b_finetuning.toml" ./run_train.sh +``` ## Citation diff --git a/scripts/preprocess_interleaved_data.py b/scripts/preprocess_interleaved_data.py index e78f7b2f47..500b186e1c 100644 --- a/scripts/preprocess_interleaved_data.py +++ b/scripts/preprocess_interleaved_data.py @@ -1,16 +1,7 @@ """ -Preprocessing script for interleaved data that contains both text-only and multimodal examples. -This script can process datasets that have examples like: - -Text-only examples: -[ - { - "text": "Some text content here..." - } -] - -Multimodal examples: +post of data processing script for multimodal data +that looks like this: [ { "messages": [ @@ -58,7 +49,7 @@ from torch.utils.data import Dataset from tqdm import tqdm from datasets import load_dataset, Dataset as DatasetsDataset -from transformers import AutoTokenizer, AutoProcessor +from transformers import AutoTokenizer from datetime import datetime, timedelta import torch @@ -112,7 +103,7 @@ "_type": "Value" }, "_type": "LargeList" - }, + } "images": { "feature": { "dtype": "str", @@ -127,7 +118,7 @@ def process_packing_shard(shard, args, tokenizer_pad_id, rank, world_size): - packer = InterleavedPackedDataset( + packer = MultimodalPackedDataset( shard, max_seq_len=args.pack_to_sequence_length, padding_idx=tokenizer_pad_id, @@ -135,6 +126,7 @@ def process_packing_shard(shard, args, tokenizer_pad_id, rank, world_size): show_pbar=rank == 0, ) + if args.save_to_disk: # create a schema that uses int64 for list sizes @@ -181,7 +173,7 @@ def process_packing_shard(shard, args, tokenizer_pad_id, rank, world_size): # https://github.com/pytorch/torchtune/blob/9d91fe39f08661952da4180b9e7fb2eba5a7a5e7/torchtune/datasets/_packed.py -class InterleavedPackedDataset(Dataset): +class MultimodalPackedDataset(Dataset): """ Performs greedy sample packing on a provided dataset. This is done as a single preprocessing step before training begins. Shuffling is done outside of this @@ -276,6 +268,7 @@ def __init__( self._pack_ffd() def _get_empty_pack(self): + return { "inputs": np.empty(0, dtype=np.int32), "labels": np.empty(0, dtype=np.int32), @@ -306,6 +299,7 @@ def _pack_ffd(self) -> None: sample = next(ds_iterator) seq_len = len(sample["inputs"]) + if seq_len > self.max_seq_len: self.dropped += 1 continue @@ -317,6 +311,7 @@ def _pack_ffd(self) -> None: if not group: break + # 2. Sort the group by length in descending order (the "Decreasing" part of FFD). group.sort(key=lambda x: x["seq_len"], reverse=True) @@ -343,6 +338,7 @@ def _pack_ffd(self) -> None: } ) + # 4. Convert the completed bins from this group into final, padded packs. for bin_info in bins: if self._should_stop_packing(): @@ -352,9 +348,10 @@ def _pack_ffd(self) -> None: for sample in bin_info["samples"]: tokens = np.array(sample["inputs"], dtype=np.int32) labels = np.array(sample["labels"], dtype=np.int32) - images = sample.get("images", []) + images = sample["images"] seq_len = len(tokens) + current_pack["inputs"] = np.concatenate( (current_pack["inputs"], tokens) ) @@ -370,8 +367,10 @@ def _pack_ffd(self) -> None: current_pack["sequence_lengths"].append(seq_len) current_pack["images"].append(images) + self._add_pack(current_pack) + if pbar: pbar.update(len(group)) @@ -401,9 +400,7 @@ def _pack_greedy(self) -> None: for sample in self.ds: tokens = np.array(sample["inputs"], dtype=np.int32) labels = np.array(sample["labels"], dtype=np.int32) - images = sample.get("images", []) - seq_len = len(tokens) if seq_len > self.max_seq_len and not self.split_across_pack: # print( # f"Dropping sample that is too long ({seq_len} > {self.max_seq_len})" @@ -420,7 +417,6 @@ def _pack_greedy(self) -> None: ) current_pack["sequence_lengths"] += [seq_len] - current_pack["images"].append(images) while ( len(current_pack["inputs"]) > self.max_seq_len @@ -468,7 +464,6 @@ def _split_and_add_pack(self, current_pack): "labels": current_pack["labels"][:boundary], "position_ids": current_pack["position_ids"][:boundary], "sequence_lengths": current_pack["sequence_lengths"][:-1] + seq_len_padding, - "images": current_pack["images"][:-1], } self._add_pack(pack) @@ -486,7 +481,6 @@ def _split_and_add_pack(self, current_pack): "labels": current_pack["labels"][boundary:], "position_ids": current_pack["position_ids"][boundary:], "sequence_lengths": [next_seq_len], - "images": [current_pack["images"][-1]] if current_pack["images"] else [], } def _add_pack(self, pack) -> None: @@ -539,8 +533,11 @@ def __getitem__(self, idx: int) -> dict[str, np.ndarray]: def main(args): + from datasets import load_dataset + #dataset = load_dataset('json', data_files='/home/artem_nous/cambrian_set/output2.json')['train'].select(range(100)) + if 'json' in args.dataset: dataset = load_dataset('json', data_files=args.dataset)['train'] if args.limit is not None: @@ -548,6 +545,7 @@ def main(args): else: dataset = load_dataset(args.dataset, name=args.subset, split=args.split) + def remove_none_recursively(obj): if isinstance(obj, dict): return {k: remove_none_recursively(v) for k, v in obj.items() if v is not None} @@ -556,38 +554,22 @@ def remove_none_recursively(obj): else: return obj - # Initialize both tokenizer and processor - tokenizer = AutoTokenizer.from_pretrained(args.tokenizer, use_fast=True) - processor = AutoProcessor.from_pretrained(args.preprocessor, use_fast=True) - - def _detect_sample_type(sample): - """Detect whether a sample is text-only or multimodal based on its structure.""" - if "text" in sample: - return "text_only" - elif "messages" in sample: - return "multimodal" - else: - # Default to text-only if we can't determine - return "text_only" - - def _tokenize_text_only(sample): - """Tokenize text-only samples.""" - inputs = tokenizer.batch_encode_plus(sample["text"]).input_ids - for x in inputs: - x.append(tokenizer.eos_token_id) - return {"inputs": inputs, "labels": inputs, "images": []} + from transformers import AutoProcessor + tokenizer = AutoProcessor.from_pretrained(args.preprocessor, use_fast=True) + def _tokenize_chat_multimodal(sample): - """Tokenize multimodal chat samples.""" inputs = [] labels = [] images = [] for conversation in sample["messages"]: + image = None conversation = remove_none_recursively(conversation) for message in conversation: + keys = list(message.keys()) for item in message['content']: @@ -612,7 +594,9 @@ def _tokenize_chat_multimodal(sample): item['type'] = 'image' item['path'] = image_path - image = image_path + # NOTE: possible to have multiple images in one message + images.append(image_path) + if "from" in keys and "value" in keys: # sharegpt format @@ -629,24 +613,28 @@ def _tokenize_chat_multimodal(sample): pass else: raise RuntimeError(f"Unknown chat format, keys are {keys}") + - tokenized = processor.apply_chat_template(conversation, tokenize=True, return_dict=True, return_tensors="pt") + tokenized = tokenizer.apply_chat_template(conversation, tokenize=True, return_dict=True, return_tensors="pt") - tokens = tokenized["input_ids"][0] + tokens = tokenized["input_ids"][0] #tokenizer.apply_chat_template(conversation, tokenize=True) + + # NOTE: if image is None, we keep it as None current_len = 0 label = [] for i in range(len(conversation)): if i + 1 == len(conversation): - next_tokens = processor.apply_chat_template(conversation, + next_tokens = tokenizer.apply_chat_template(conversation, tokenize=True, return_dict=True, return_tensors="pt")["input_ids"][0][current_len:] else: if "assistant" == conversation[i + 1]["role"]: - next_tokens = processor.apply_chat_template(conversation[: i + 1], + next_tokens = tokenizer.apply_chat_template(conversation[: i + 1], add_generation_prompt=True, tokenize=True, return_dict=True)["input_ids"][0][current_len:] else: - next_tokens = processor.apply_chat_template(conversation[: i + 1], + next_tokens = tokenizer.apply_chat_template(conversation[: i + 1], tokenize=True, return_dict=True)["input_ids"][0][current_len:] + #next_tokens = tokenizer.encode_chat_completion(ChatCompletionRequest(messages=conversation[: i + 1])).tokens[current_len:] if conversation[i]["role"] == "assistant": label.extend(next_tokens) @@ -657,113 +645,45 @@ def _tokenize_chat_multimodal(sample): inputs.append(tokens) labels.append(label) - images.append(image) - - return { - "inputs": inputs, - "labels": labels, - "images": images, - } - - def _tokenize_chat_text_only(sample): - """Tokenize text-only chat samples.""" - inputs = [] - labels = [] - - for conversation in sample["conversations"]: - for message in conversation: - keys = list(message.keys()) - - if "from" in keys and "value" in keys: - # sharegpt format - message_from = message.pop("from") - if message_from == "gpt": - message["role"] = "assistant" - elif message_from == "human": - message["role"] = "user" - else: - message["role"] = message_from - - message["content"] = message.pop("value") - elif "role" in keys and "content" in keys: - pass - else: - raise RuntimeError(f"Unknown chat format, keys are {keys}") - - tokens = tokenizer.apply_chat_template(conversation, tokenize=True) - label = [] - - current_len = 0 - for i in range(len(conversation)): - if i + 1 == len(conversation): - next_tokens = tokenizer.apply_chat_template(conversation)[ - current_len: - ] - else: - if "assistant" == conversation[i + 1]["role"]: - next_tokens = tokenizer.apply_chat_template( - conversation[: i + 1], add_generation_prompt=True - )[current_len:] - else: - next_tokens = tokenizer.apply_chat_template( - conversation[: i + 1] - )[current_len:] - if conversation[i]["role"] == "assistant": - label.extend(next_tokens) - else: - label.extend([-100] * len(next_tokens)) - - current_len += len(next_tokens) - - inputs.append(tokens) - labels.append(label) return { "inputs": inputs, "labels": labels, - "images": [], + "images": images, } - def _tokenize_interleaved(sample): - """Main tokenization function that handles both text-only and multimodal samples.""" - sample_type = _detect_sample_type(sample) - - if sample_type == "text_only": - if "text" in sample: - return _tokenize_text_only(sample) - elif "conversations" in sample: - return _tokenize_chat_text_only(sample) - else: - raise ValueError(f"Unknown text-only format: {list(sample.keys())}") - elif sample_type == "multimodal": - return _tokenize_chat_multimodal(sample) - else: - raise ValueError(f"Unknown sample type: {sample_type}") + def _tokenize_mistral_format(sample): + messages = sample["messages"] + cleaned_messages = remove_none_recursively(messages) + tokenized = tokenizer.encode_chat_completion(ChatCompletionRequest(messages=cleaned_messages)) + return tokenized.__dict__ dataset = dataset.shuffle(args.seed) original_column_names = list(dataset.features.keys()) dataset = dataset.map( - _tokenize_interleaved, + _tokenize_chat_multimodal, batched=True, #batch_size=args.batch_size, ) dataset = dataset.remove_columns(original_column_names) + #print(dataset[0]['images']) efficiency = 1.0 dropped = 0 if args.pack_to_sequence_length: - num_shards = 32 # args.num_proc + num_shards = 32 # args.num_proc shards = [ dataset.shard(num_shards=num_shards, index=i) for i in range(num_shards) ] + with multiprocessing.Pool(processes=num_shards) as pool: process_args = [ - (shard, args, tokenizer.pad_token_id, index, num_shards) + (shard, args, tokenizer.tokenizer.pad_token_id, index, num_shards) for index, shard in enumerate(shards) ] @@ -844,7 +764,6 @@ def _tokenize_interleaved(sample): parser.add_argument("--dataset", type=str, required=True) parser.add_argument("--subset", type=str) parser.add_argument("--split", type=str, default="train") - parser.add_argument("--tokenizer", type=str, required=True) parser.add_argument("--preprocessor", type=str, required=True) parser.add_argument("--batch-size", type=int, default=1000) parser.add_argument("--num-proc", type=int) @@ -856,6 +775,7 @@ def _tokenize_interleaved(sample): parser.add_argument("--drop-larger-than", type=int) parser.add_argument("--save-to-disk", type=str) parser.add_argument("--show-example", action="store_true") + parser.add_argument("--limit", type=int, default=None) args = parser.parse_args() main(args) From 8c079d734d1439b8135fc896aa9479a97f07cf34 Mon Sep 17 00:00:00 2001 From: Artem Yatsenko Date: Mon, 18 Aug 2025 22:41:18 +0000 Subject: [PATCH 20/28] bugfix: limit keyword in multimodal data prprocess script --- .../data-00000-of-00032.arrow | Bin 0 -> 50146 bytes .../data-00001-of-00032.arrow | Bin 0 -> 74290 bytes .../data-00002-of-00032.arrow | Bin 0 -> 98434 bytes .../data-00003-of-00032.arrow | Bin 0 -> 98434 bytes .../data-00004-of-00032.arrow | Bin 0 -> 74290 bytes .../data-00005-of-00032.arrow | Bin 0 -> 74290 bytes .../data-00006-of-00032.arrow | Bin 0 -> 74290 bytes .../data-00007-of-00032.arrow | Bin 0 -> 25994 bytes .../data-00008-of-00032.arrow | Bin 0 -> 26098 bytes .../data-00009-of-00032.arrow | Bin 0 -> 50146 bytes .../data-00010-of-00032.arrow | Bin 0 -> 74290 bytes .../data-00011-of-00032.arrow | Bin 0 -> 74290 bytes .../data-00012-of-00032.arrow | Bin 0 -> 74290 bytes .../data-00013-of-00032.arrow | Bin 0 -> 25994 bytes .../data-00014-of-00032.arrow | Bin 0 -> 25994 bytes .../data-00015-of-00032.arrow | Bin 0 -> 74290 bytes .../data-00016-of-00032.arrow | Bin 0 -> 74290 bytes .../data-00017-of-00032.arrow | Bin 0 -> 74290 bytes .../data-00018-of-00032.arrow | Bin 0 -> 50146 bytes .../data-00019-of-00032.arrow | Bin 0 -> 50146 bytes .../data-00020-of-00032.arrow | Bin 0 -> 50146 bytes .../data-00021-of-00032.arrow | Bin 0 -> 74290 bytes .../data-00022-of-00032.arrow | Bin 0 -> 74290 bytes .../data-00023-of-00032.arrow | Bin 0 -> 50146 bytes .../data-00024-of-00032.arrow | Bin 0 -> 50146 bytes .../data-00025-of-00032.arrow | Bin 0 -> 25994 bytes .../data-00026-of-00032.arrow | Bin 0 -> 74290 bytes .../data-00027-of-00032.arrow | Bin 0 -> 74290 bytes .../data-00028-of-00032.arrow | Bin 0 -> 74290 bytes .../data-00029-of-00032.arrow | Bin 0 -> 50146 bytes .../data-00030-of-00032.arrow | Bin 0 -> 50146 bytes .../data-00031-of-00032.arrow | Bin 0 -> 50146 bytes scripts/dataset_multimodal/dataset_info.json | 43 +++++++++++++ scripts/preprocess_multimodal_data.py | 6 +- torchtitan/models/mistral3/model/model.py | 59 +++++++++--------- 35 files changed, 75 insertions(+), 33 deletions(-) create mode 100644 scripts/dataset_multimodal/data-00000-of-00032.arrow create mode 100644 scripts/dataset_multimodal/data-00001-of-00032.arrow create mode 100644 scripts/dataset_multimodal/data-00002-of-00032.arrow create mode 100644 scripts/dataset_multimodal/data-00003-of-00032.arrow create mode 100644 scripts/dataset_multimodal/data-00004-of-00032.arrow create mode 100644 scripts/dataset_multimodal/data-00005-of-00032.arrow create mode 100644 scripts/dataset_multimodal/data-00006-of-00032.arrow create mode 100644 scripts/dataset_multimodal/data-00007-of-00032.arrow create mode 100644 scripts/dataset_multimodal/data-00008-of-00032.arrow create mode 100644 scripts/dataset_multimodal/data-00009-of-00032.arrow create mode 100644 scripts/dataset_multimodal/data-00010-of-00032.arrow create mode 100644 scripts/dataset_multimodal/data-00011-of-00032.arrow create mode 100644 scripts/dataset_multimodal/data-00012-of-00032.arrow create mode 100644 scripts/dataset_multimodal/data-00013-of-00032.arrow create mode 100644 scripts/dataset_multimodal/data-00014-of-00032.arrow create mode 100644 scripts/dataset_multimodal/data-00015-of-00032.arrow create mode 100644 scripts/dataset_multimodal/data-00016-of-00032.arrow create mode 100644 scripts/dataset_multimodal/data-00017-of-00032.arrow create mode 100644 scripts/dataset_multimodal/data-00018-of-00032.arrow create mode 100644 scripts/dataset_multimodal/data-00019-of-00032.arrow create mode 100644 scripts/dataset_multimodal/data-00020-of-00032.arrow create mode 100644 scripts/dataset_multimodal/data-00021-of-00032.arrow create mode 100644 scripts/dataset_multimodal/data-00022-of-00032.arrow create mode 100644 scripts/dataset_multimodal/data-00023-of-00032.arrow create mode 100644 scripts/dataset_multimodal/data-00024-of-00032.arrow create mode 100644 scripts/dataset_multimodal/data-00025-of-00032.arrow create mode 100644 scripts/dataset_multimodal/data-00026-of-00032.arrow create mode 100644 scripts/dataset_multimodal/data-00027-of-00032.arrow create mode 100644 scripts/dataset_multimodal/data-00028-of-00032.arrow create mode 100644 scripts/dataset_multimodal/data-00029-of-00032.arrow create mode 100644 scripts/dataset_multimodal/data-00030-of-00032.arrow create mode 100644 scripts/dataset_multimodal/data-00031-of-00032.arrow create mode 100644 scripts/dataset_multimodal/dataset_info.json diff --git a/scripts/dataset_multimodal/data-00000-of-00032.arrow b/scripts/dataset_multimodal/data-00000-of-00032.arrow new file mode 100644 index 0000000000000000000000000000000000000000..4de8feb177088a315c48e79dd7af1b77a99c5d38 GIT binary patch literal 50146 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 literal 0 HcmV?d00001 diff --git a/scripts/dataset_multimodal/data-00001-of-00032.arrow b/scripts/dataset_multimodal/data-00001-of-00032.arrow new file mode 100644 index 0000000000000000000000000000000000000000..98008b375377ef552bbecf3f5c8b55eb6219975f GIT binary patch literal 74290 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

1?e%Mj+d0lYP$6 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 literal 0 HcmV?d00001 diff --git a/scripts/dataset_multimodal/data-00004-of-00032.arrow b/scripts/dataset_multimodal/data-00004-of-00032.arrow new file mode 100644 index 0000000000000000000000000000000000000000..053a0cdd8eeb1038eef770245c799165723fa01a GIT binary patch literal 74290 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 A1^@s6 literal 0 HcmV?d00001 diff --git a/scripts/dataset_multimodal/data-00005-of-00032.arrow b/scripts/dataset_multimodal/data-00005-of-00032.arrow new file mode 100644 index 0000000000000000000000000000000000000000..29a9c1b2d87d98efbac0699c856ad9779efa203f GIT binary patch literal 74290 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 H=L-K9lLgXB literal 0 HcmV?d00001 diff --git a/scripts/dataset_multimodal/data-00006-of-00032.arrow b/scripts/dataset_multimodal/data-00006-of-00032.arrow new file mode 100644 index 0000000000000000000000000000000000000000..ff409aa888f69fe012170d1e5ab22ebc8ae58c8e GIT binary patch literal 74290 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 Y`d9w%W)!xdt^aODH|?c);oo5SUy-vSLI3~& literal 0 HcmV?d00001 diff --git a/scripts/dataset_multimodal/data-00008-of-00032.arrow b/scripts/dataset_multimodal/data-00008-of-00032.arrow new file mode 100644 index 0000000000000000000000000000000000000000..b5098f95a7b3583766e58be42637c3996e7bed8d GIT binary patch literal 26098 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 Pzt7QGywpnlt(X4+z#?Jy literal 0 HcmV?d00001 diff --git a/scripts/dataset_multimodal/data-00009-of-00032.arrow b/scripts/dataset_multimodal/data-00009-of-00032.arrow new file mode 100644 index 0000000000000000000000000000000000000000..bb8d556faa66116e8e554dd3a0cad9a9e107188b GIT binary patch literal 50146 zcmeI*d7w?@-ze~P%%n(^3aN~l=Q*>?v!qN1$CP)-$bVeb;f;e)fJ=&6X{jwJjAz=RGQ> zilVGhcw~w)N9m%pQ3kI(64F?XEM@RB&4r(l?NKy6A&N?}*X#DlTcfD;pXblZlq0+4 zTo=|!5{2b-^y-_~BWZ9HO^|L(EN$9QZ%)z>9^tvykfgrh^-5`$UQ}kG3)@4Pc?o$3 zCk-5$)URt&r#?yjdJO5Q^e8$e&yiTZRR5~{L&<5Pgc|Z>)ek9c&u2NbBh(Z2BlN+5 z{)2lB>D9kqr(WHX>!>e%omifKSx4FAG*LocWemBfj(^raeGkA%E_sP=q)@e_`5cw~;QybwW|lS__Lr%67(hquMHhZxIgONgcrV|{dTI7W*2 z$0Nr-Uj6$QAy&d8YIqd7uzh80G5Kfc z?~D66tX!BSdDB0B{NLUl;_%|f-^>5|a!T4m>0_@_+855n%Q@^vNdaALaTFb~Lpulh z{iKp>$yQZ$MR`eikxLll*>{&M<-4!kJ;mL7lQJAHi=b$>I8Ubr-h zmYqn5E|a&#wNZ4t^j&I2(dax;G*tZut^eqy>c57Z7oI~~a&Yy9b>Vf` z7M8E%H+f!EMRhkxLG@y7JbSzTw(jEmVLw9t zUh-e#xuEThwae~AsR`%ae-~Z%-&R-Hr+9t;cl$fupYi_u&-|{4$4fk3;_>oV48+fe zzxv`o6Bqwc+IWA)`}04FjeoZOzdK%BI{14xA^O_i>XrQMo#=1;aD8#c^-kss*LNq& z{B^CetYhr&`iZ#`{&9^G{$8I~-gQoaDC*?8V7u#}*-fKpv9iMTz}bebYc5<1WGNfF zE(zBKf4D{o*DI4pxJGm>60SY`AN_Kn9o^(VHad1)8rl-dctg5N+C@==8)N0PZ<-MO zZhgqxSKZGYPKaujj9quEDiuXb)UmihLUP`4T~bWC5}rHoBlD)%f9qCx9on?>>L_Yf zBZ_Jl)DZ0m>!x40j$3&8ueN9MCSEA7OYzvX;rN!y(Px9?Dd)h3>(rh4A!WZq8KGZ8 zd4;trTyqUBEv;+4a6LAHux;R#3CY_FC?{NFhIN%)ONHy{@OqqU>S3*8eUjVyP=01* zWUUZOzqE4fI=99(|Mob9Yq5#?E~MX*H;QssN=R-`FMSi*73zB2zK4G7Gd3aly@1f> zP;ZEZjD`McXLz6BE&G`Fk|^3NV8byUEiMkYw%u!8XlFRK2V2G3+0k(c^{(3+i=EE) zVVgGRx=wx8ryRS*^I~}yC%NWLjG}h>G#rC)4O+5{I@C3Q;f-VEyjx7qOLuq(f-ipm#f5%!E1NgpXRYVba2;o3dq z+wg1by@0T9f2eD!^x=3VG>`RNpU^&OL;as$cs=OuglO6p?}2D*D0i;@3fJl(U%G1& zlKZUsoWEkMhxbQvIi4wfky3YW*WMvMj$i5gyl^~1jBa**g<~^8oAx(~)p6>QzmDZW z=Ri2FA#YV}3Tc<-i|t1d*W;6FB_v<}hkg#}Qu?-o;}VWlIETY=eZG(D@D8zd{bo7* zeh9G?`XyugSiO&V@8?tP2zAYJ-F{k}g&26maSmmLm<)ZeXlSgiefm6XU$EZ!>LNd+ z3FU=&3uVmi7F!-NJ9ZpHpM>|iR1p{NgLn+YV;~*_@fe85Ks*NGF%XY|cnrj2;J-8m z67;Xjn)vv+YqR+HdF&cBK7RgRJ9h1DmjAMG_;}g>zHj4w67LglQT|WQxp}lza~YPuDDu~s(t8zR z<6~iccz-{<-(JLcL(lxi#f({m&*p{CI9Bw&e#$shlMA0?Ok*4_=>u;2h{Mo&b zH{~;ZHH=?`amC!q3gZs>3F8W-{Hu1Sj75B{ z+%S$YY?OV`j!;Lx?0=2rTs(gDyYY9erkVT>c}TPSyR%~+d4 z-+ga9EsSBzQO_Gb-+70$p}y)@%qC?c=#U(&~fIN1?7TewQ*v zmC|QbtovEo9`%h?)`*pxR4s~Dbn#hA{V{5FYz*t*Q?dOz{#_K6l0MYGqnq|LGsco8 zwy)K-FN{TXyES&adKm``p9Kw{s|;-zp{|f`m3D^De-5jg5Utd%4~$)fV-eDa{p_R8 z1I1(e)AFl?D4TLqj@8EnqU7=7P+q$Hv3~m~XF@dGxK1cLjE99|9mcvszuY`5R!$hl zt99WxpQ`MtO235kFX_)P4jjh3MmG1E(zC`uEr0*pU&rKg^(1L$I4b2Ss`lyZLkn;KF z@OkLE)@9L8A$~)?pORv6xZ61!+8)li`SvZ;of7}8l^fEA{@(ax6n$ekjGcz%8Db%n z7e0#}K5HG~Jf)to$_(dA7(WeZLpfn=dhAi@Jcl+<&@bWK3^6*sOst-&cG7P0N&d=Gi1vaom*eY-YR{_%dXeG2^@&hyZwTo;uQ_PyZTSZs7KrXAW9+OR)c zEPXh4_D+kf3+H9%kL_YO{Ei4Q9nO{O?Q2(Y9F|{kPKGp-kH*GELm!>!kPyw(=V5(_ zyVKSGildZvAJo3EJ?wjU4*AyB)_;C?q#W1K{t&Yv-op0K&J%v84aptroQ>G<`rSO|58vD1?JE0mY-q;@JVLI}JO<)15RZZXmoea-h~&rLzn4DG{0DLIK8VLa zJO<)15RZX)48&s~9s}_hh{r%Y2I4UgkAeT+Vj%v#^eBpdFFpRf^zb>6`1jKP`pm`u zZ@;JF?TP=}8IOT@48&s~9s}_hh{r%Y2I4UgkAZj$#A6^H1MwJ$$3Q#=;xQ19fp`qW zV;~*_@fi5ui-9l}82?^+{Cnx~@1?t6Rgu_tl;ht^kAE-yKl)yJ{NI`Xy?LI}JO<)15RZX)48&s~9s~d9G4LOKFFmX`16}exr&4?Nap%Z%Y+*XR z$ninhp9Z(%ya$TW13Y4MWhi#KImWE#52baas^4x=kEwPa*! zz{oAUB2xxNreloUYAZ5jT;vvDkz1lgc`IX1A7O+3$Lwy>3LZ07}DWCuIh#cp2WWnN(qd)ddU?B_KOaFEwI#2dWH zTfEIXyvutW=6yckLq6hTKH*c2@EMzUBnq@GakQl2d%oX@1~Ge&P&g z`I%q%m2>>Y@BG1^oF|<838W%5rdEy8l8*FbAS0P@%e^QwmvR|d$jaqp;|fgU8RfvO z9iyu-RcdrKZUY!yi(6?%xyi$IQ3Jl%*Wy zG1YHW5x0Mg!W67ks7f_%#w`=08q}l~wW)*YCZl@XLVeseGHQsaL!-vHZDQ1vX1Fb4 z)Pk0nS~qG<8*Zg7x6zK5=#Vp|&ma>fHtY9V2vWnHLVJ+)e&vR^GBb#`h&1_*S z+t|(vyvPoAvWwlk#LK+G9`>@2SJ}^N9N-|YbBH&1lec)AcX*fgIL!Nez=wRq$9%%4 z9N{xQ=P1Ycf-m`s<9y8tzTsQG<0Pl}p40rmkNm_L&hj(A@GIx|jo+=a4T)OjdtA59kizd9qB}866r!$x{*Y8deDOIgNpRc84}00itL*1B4sejyIm8>h$y>b5JG{$#9OivK;6py*V?N!uGZs11pk)Hw- zq!5LQ=J;rq!zWQLtW}|3-xJ0LmJVT zCN!lP&1pePTG5&|+)7(+qaC+%2kq%VM>^4&M7q$GZY0s29`vLay}6S<^ravD8NfgW zF_<9?Wf*rcoVyvpJ&fdDMlqT(jAb0-nZQKu<9;Ub0F#-*RHpGD4>6q?%;aGn;ZYuA z7PEPrIm~4q^Lc^=EaXX^;%OGKm?b>JQkJot6|Cf0RhnIm{0hW zBYei^9OW2a@FibyoUb{-H+;)?oa7YWbDAIck)JrjS$^ghe&rm$@jHL;C+CUMIR8mS zYSNIFbfhQDou83#-}p<&%%xmL7P4|V*|>r*e|rwXy!%&?lQ7?Zn2SHmpC9JG&rKe# zBQMu;12>Y7{1hPE7o!k`xrrhar5MF2K}kwcnlhB79ObD%MJiF5DpaK!H&dM&)T9=* zsY6}raSQcnKtmeQm?ku(8O>=yOIp#IHrz^EZlfKy6YitYo(^=R6P-z<3tj0(65Z)R zPkPatJLyAT`q7^O3}g_48NyJ8aTmk6n-Sc@NbY46qZz|k#xb4=OyoZ9XA%!EnJG+V z8V~Xi)0x3c9_A4qW)X{7!ZR#o8OvG0N}gpEt69TZ z*0G-F*uX|M@jRQ^!dAAiofmkK9qeQmyLpM1d4)afWgoAypVv6RL0;z&Z}28>@iy=9 zF7I)e_xXSi`G}ACgikrbXME04j`0Ow@)gJVniG7(w|vJ*PVqgb`GFt#i8Gw#XMW*V z&hZ<+^9O%&o+z#JpH!qK4QWY7dNPoaOk6@{E+yPYBnw%&oNQb{c5)Ezr*RcIxtePT z_sGaaZt`#)dAXh&xRHE>drlM}+?%5i;oc`VQG}utqc|lfNhwNGhO(5SJQb)&CBnTl zs!)|`+)Q<9P?K8JrVe$f$1T*S0S#$HW17&EW;CY-Eont-+Hfmvxs7(*&KF`p+`z(StnDV}B#i&?@m zEM*zXS;0!4WfiMg!&=s{p6A%WMmF(0o7uuvwy~WTc#$3KWEZ=6iI;hWJ?v#4ud<)l zIKV+(=MZo3CU5aJ@9-|~ahUh{fDieIkNJd8Il^ar&QXr>1z++N$N8EQe8abV$4O4{ zJ*WABANh$hoaJYJ;aAS_8^7}he{!BEo%5emq$Uk%Nk@7zkdaJWLS`=IGP01B%gM$S zWG4q#auqqbns861Ysp1!@^Bq_xt<%ik$mJQ%)L{PLKNmEicpkd6sH8?{!gVSO&Q8k zj`CEXBH_L?m8n8is&O;bsX^4&M7q$GZY0s29`vLay}6S<^ravD8NfgWF_<9?Wf*rcoVyvpJ&fdD zMlqT(jAb0-nZQKu<9;Ub0F#-*RHpGD4>6q?%;aGn;ZYuA7PEPrIm~4q^Lc^=EaXX^ z;%OGKm?b>JQkJot6|Cf0RhnIm{0hWBYei^9OW2a@FibyoUb{- zH+;)?oa7YWbDAIck)JrjS$^ghe&rm$@jHL;C+CUMJO4>VYSNIFbfhN(8Og*YWad&X zBMVu%oNQb{c5-kfSCNyexrS@WMQ-wN9eKH)8@Q2txS8tIpeD7bO&#h|k6Wlu0~*qZ#x$WR&1g;wTGEQvgnOLb zN?UHD9k+7_?dd>AI?~>h7WPByL}J2|+L ztH{aKT*I~GA~$)sj=WsY4ctgR@>76<6rwOUQG}utqc|lfNhwNGhO(5SJQb)&B`Q;e zs#N19$gP!!FH+Ry9zVxF%0~p941~Y`A4C5|_b2lTnhmqXNC`L1ev5aFp6PU<- z+|MK)U@}vf$}}G2A*M5fnLNxRJj!FtVm6O6hq=sSK2NZKg*?eqJk25&vxH|@$}*O- zf|WeWDps?GwX9=3&#{4xY~pz~vxTi}V>>VKB0Jd0E_U-0FY^j}*vmd%Wk0WRfP=iw zA>QCk-r{ZE;a%S2Fz@pLAMz0&^9i4FgwOb#qa5Q4zT_*8^ED^BomjAnM=8hEM(Q3Jl%*WysX#?4QJE@K zr5ZO=of_1n7PYBEUFvZQ^=Uvu8qt_0G^H8MX+cX`(V8~gN?UHD9k+7_?dd>AI?~>h7hL}6~C2t_GIaY|5MX zpGiExWTr5cX*|e7OlJl&d6-9dl*gFGY#wJ0bD76{o?rnBd6K7innf&T3D2;UWh`d} zD|wbxtY!^sS;u;wV*?x6#Pe)s3tQR7c3$8`cCeFO?B*q2<`wp^mwmj-eqQ4M2YH=C zyuq8i#oN5YyS&F?-sb~8t(vyLVWa1Jsb19dRg{)joHm)E$Ik=Lm z$jQ}Q!?olhH+i^@yj;%>+(L=&-k399ODbV<^8-Kf z6K6Qf&-}u#oZ~ls=MVnmJW(3wKdDGf8q$)E^kg6-nYe_^T*_r+AuE@YjVs7b4zA=X za&k4-a4osWO&+czFV}MeHDP6V7%oL_FjR$#%>C9jz5Az6*@))z2&Ew2rF7uer6D(jMPx2H`vxvnk;Te{)jODCg zCC{>o)vRGH>sZfoY+xgsc%IE{VJq9%&I`QA4tBDO-Mqxhyuu##vX58U&ubjuAg^Pn6dAPbyNAhP0$3JsHSICN3c}mvR|d$jaqp;|j8qgDbg; zoLtQ{TuUx;lZWfb%k|vAjpQRg1t>@%3Ud=hC`vJkQ-YF|qBLbFOF7C@fr?b3GF7Nb zHEyOlHK<7~YEy^0)Z-TF(}0FFqA^WqN;8_%f|j(RHEp<+w%kTLZs!i#(}9k3qBDtf zp)1`;qB}k4NiTYHCw=HkKl(F(fed0WLm0|1?qWE1GlF{<$-RtXG-DXcIL0%9iQLEi zOyU71Gli*4<3S!`Iy0Eb!#u*HJjN_$^Eh*u%RJ`u1PfTmlRU-KEMhTBc!s4cV>v5W z$+N6tHEUSQI@a?X8`#Juo@X;#*vdAx^8zojgPrVRH!txruds)`?BiAT^BM;@$m<;9 z4c_D}-sTV2Bl*Zr0SZ!x!rVj=ic*Z?l%OP~C`}p4QjYRepdyv1Ockn9 zjhm@X4Qf)0+SH*g^|*!lG@v1kXiO8D(v0S`pe3znO&e~dEw|B*+qr}Gbf6=h=u9GA z=t?(|=uQuM(u>~QNgw*skNyl`AcGjp5QZ|0yBN;hjNl$daxbG8%^1cqj`2)jBKL7W zlX!s1Okpb1c#wyf&J1SqFpuykk1>ncJkA{EGLQK@!2%ZYBv0`)i&)GOo?$7=Sk4Mo z@+_-Z%^KFSj`cjp1~#&Z=h@5_wz7@wyugd>U?;oS%}cz@E9_w}`*@Z8yv6|z@;Zlj zgEx7Lw|R$md5^=q&j)lYxw6;u11*DVLFjtXxhut{^)(xRR^L z$<MNIvpYfPxgFFgHhfil%qTqs7NI$Q-!Kj z<7TQ;gPPQ$Hg%{=J#L{s4QNOs8qQ6^rAO+(ucnEqdx-}$RGwYgrN-ME{1bABe;i=+{-9NGlsE@V>}a>$bH<; zBpzTgQ<%y$9^@gWGlQ8t%p*L?W6WYUk28n4%ws-Juz-a;$x}SdA{MiRXIRQIma~GD zJj*Ipvxc>-V?EEYfsJh9c{a0!t!!gEFYqEe*vT$-^Aa!f3VYbgK3-)%uW^8byiUp^ zypTM>)x$f zmttiTE0!vjnAoL!v65vIyL2m8x^$_eZi&Tv59slqE45OY(q+4qN=z(Pwp^Eresn8U ztV^jR&t>i51FJtQ1NO?RA^@vj(l3)3~ zLHncA%7YXuwb zed+7O^8Cv>%EpdELSAJIxu}kR)<1m`yCn5d`XcET{x6h0{i3oDT~v0cEA(gRr_g7~ zecx}u&>_lBll))kyX=l{jf?#8$q0G5lXS z&vjnE=UnIY`rhwcGjRWBcC58m{Py0nV`gf#YSp}bnMmZCN9FjDNSa7^B#)$wB#tDC zB=yQ8UP8kWLrMKjc;j!x^hjiJyhx-pXT9!xeQG4q=Fe-_B+8K9aP}MH%n}L1iRnM6 zd*9w8B9ZCln-ZNjQCMzf5)vNax&O%CgTm|G=GlHzo`r8r4|(P$q#e$OXBqyOVwuS;BdNw4P<*B?pEn^cMr4Ic4w z`(v@!8j7FL$KjDOlJQ0arM#YVBtgRK{aZL&XwC3QZaAfUqcJwn=+H+Au1|~p$#B!_ ze|?$z#)!D*xao1jC%Z()T)y!fH$84RZobG}aZ_$Q-x!WdfAZ1)I6ZDSF8$?ynI1PB zmwr>0xcWx(i5reffAU|Z#|@XhvDk0^WqRCjT>3Ow|6~4f!=Ww1BlnHz@o$vrttT#$N%Z+A@**5{A>RIIvh9er6kc;n^H%gAuYqiS&6P5_#;F zNMy(7@gk|DZJ8|+>1h5QwIh+qIU|u#mVd$cw^BtS$4f;bQ@jq#&r0SS&!H?C$Z}&` zcpavN;f(wy&EuBQM8J>uPtxZwPh6VZH(rOdA>XRz{~$*s(o30&s7pQ1bF75PlSLwL zTS5CMS7?VYy`rGlXa4ZIl(y<^p0i&6X?mEih-q=-2in-ZtL=-~K!y7DRJJf*eC1qX zIBXz7S;O+Kik+~GeOIE-?-^fO`Y>&{vSd@P)1HUlSat!=hbQWn6XbA8)`(_H0}R2WeIH(E6?BeN34Bf?epK+cEsW*7C*80 z`TH1%wNI>l{yQ=7-$@(WKL35}IW&lD?h=W7=Dm0o@2$Ig4`0Xo>)Sqz7pdp@NsXW0 zd-Z*eZ^H3k>hjU|;NkV>+Z^j=j6}NSjvjM_ag_>3BIi5(b?kDXbTr*$Z`QL}M#kci z>&Jd!-h=Xf_r7?MOWyy-9lJd=DBktsmp2bMhEuq3EEA3qx;REjGunH9@B72JaC{ZU z?|&l_xpXuVDY4t}xqMohencI@vBj6pKZIkt{I^9ST^)~1-X1;1xa9b2xVnZi3{m!Q zd>85-${5N~Or1jdhJt5g!RRr|JZ%t;JN7n@PJ6Y*U*)(eeK;0sZW)`aMUTzGygx`E z@(s(0tN#be63YKc*XVON9(uv+#@b^0vFN;aIW`OB3iE}uNoG19XcQ||4{dv+at_(piZ zhDBqfpt^+lnmVqo;}|sLTVLO`(N3Z5(mH;9FH7`wm@k#~819_Inq6X}O*9trC{w6o zI05&d*B@x7(B|(eLnucLd4&E*BL5Wf|62NI3q|wnX;~-bS-@~OW)90(+#=rf82wV3 zkZ(E1^WnMrAaSM*-Y5~R$1-V4SmqAP3uXP$>ss66MH-5;F#qk!(!sL(8Xsb+y5)vr z{?PAX{;;eiE1gd;F4X(}a*l^b#*4I7p0CXlrZ@^&wy?HKPWP&md zEGBMCM#nW=6)%!U+Q&1-yT0Cp#Wm%$se&U zDr;Ol!+DJrOPrf%7OhV>=Fg#QFKeq!SK>u#dVOrZepnEREWKhIqJ2ZT7FY*DABFsH z-WI$xJ`#CeUxxZD92YOr!E-nl5Yntww!8b=j@S32dP(GWeVHCT=E>=-Dxh*aoeYl_1QHsm`NXm z^IzdPv~!4~kprU3xm4YD@kT7vGj0Bhk;oVFjc0uxs^8=Kw3D`tTR(2DPgsA$`LIx* zdFm795BdLGU)z<6M8ftcOiQ3Y!Zz>1&gi+N&umXa-^KOI*dozot-fr%toc{pg!MDT zL+F=qjwtlsIP2<*(uRD)Ha@N`!nBmyIxgnJx{|3(yhuCSl=I3K@@lUAzSK@}eb%I* zI8ooQeLiGc^-H&C9pd&OC+bFr&)7Cs5DSaMc39rNm!ka^>KiE5X>GKwVR|?}6&K?p z>qYYmF`mX%jCo(iyWZ!aZA1Ou%o2%wV;zn=Uzet6l}| zPY* zdpHN%#&dJa33a(u9?g12_j#e+&)c8=Y@H767wQ)G-sGod(KdtXwwLEDFXn|O~E;^enRw&?|;!ymW#YugkNTUncU|EWA7?!)#wZrdE%HuOp8 zkG|Hm|6MZv%%?s_dMw^ClVY~OTyu)@NH!PFH&Z6w5>v) z3>L%R=-1FMVR)K(GHTOapZ~}H3-6V0UWZ$Zi7t1s<<;J0f2*BC`VFnU=NR}`|0Vl0 z+Fv1dL*H!IpW%Fd*bii@>RRs|(R}iY&3)Q4)Med`vV`&v{p#=AIBx&ZvUD_UxSkQ( zI&R+^-s6Sg(8h7=R#?X9N%0~%3PkHYN*jc6r>w6#PTF^A)42Bu>reEnVCvDk~n-rvQ?KRGQHd$HL2C*$ky@{Yw`EcX5` zKK{vRvDk~n-ai>%f0uVG_F}R3ck%I0PWzu2doBrIzYlX|-RQlT;dmxeqhN*}I$E*luVKc!y* z*PGWnNA22cxQ-ro-^kU%(fb0!J&ZL=M6WT2d(D!&z8sbxmL2Bx|N4Cm|GMm(%NVZB zPpuHWUnX25{m;q}%9O;l+s3Y^hWjeU^P^>aVf_5_@vh&8*lKmOPT^j-aDQc7xkJ51 z-)M`3`IO7`*D!9M>&=;5SPj>r!|>tZ(fb*byY4zcyHs|MKwLSG=Z@Y}lGQx}7p4DB zn$GI}y7XaLq0Awl%&t$z-SZRLD5Os#xNmOHa6LY>RS)Ci+A7rVS9SY(QS|Suz9VND_a|6hD1Us*2zBhF?3;T<)5kv+ZMzx;EXTb9 zaqSfsd*_{X22;Pt6mHzgYbJQ?d2$%%N_mf zTgtb6ma1a3j7?6(i{u~bbG<&J7k5r4lp}n8u~mMbYw$VCa6W0i^q~%6Ijb#u*V8^f z`*CzR6{zUwyj{qC{v zcaMF)yWhrhPgLyt-J|z_#lGMDuiwUqeZPC```u&T?;iVp_t^KlM}I3QY!CmZe!u&F z_x*G%ee9Sl76Y*uh{ZrG24XP~i-A}S#9|;81F;y0#Xu|uVlfblfmjU0Vjva+u^5QO zKr9AgF%XM^SPaBsAQl6$82CRC1L0o2*!R2t^?muV?{|;h%k^LVe)sLC{ECymR5Q~9W48&sKe|ijrb8-Juzu*0Tdf&zB7u!C? zVjva+u^5QOKr9AgF%XM^SPaBsAQl6$7>LC{ECymR@bAXJ|J(Pwhw0%r)Z>!?U#k)E z6;u(Yjv{_iFOn2LL+E!3qu&=Fels)tZlRwijQHukh@bO|q{UD4MbhCX0wWp7h@a_; zWF`w)$wqc^kds{GCJ%YZho1?I6rdo5C`=KGQjFr1pd_X6Gl7vZl*LaMM#@tGKS>y= zL}jW_m1_7Y!blBn!_NywYEp~Z)S)i*s80j@>|mr3jcGztn&GDvBh6_+OIpzyKd%^R zOFP=rfjj9)CpyywKYtkMN;kUGgP!!FH+|?!Kl(F(yBWwJ1~Y`A3}ZMW7|AF`GlsE@ zV>}bMhlxyLGEv5W$tqT}hPA9?Jsa4_ zeQe@>9$+(D*vd8@WIH?9$u4%YhrR4$KLdpRbJzD-r!B%;%(mHT`uz;@ACm4@(~~N z37_&ApYsJ@@)cM3ns4})@A#e{xXO?G#LxV~ul&aE{K21GBdq-Kh))6%l8D44At}j7 zP6|?T3#mv=8q#tr=}1ooGLnhRWFafr$W9J&l8fBrAusvJPXP*2h{6=1D8(pF2})9m z(v+brs7?)T<92FNi`vwoF7>ES0~*qZ#x$WR&A5Z+w4f!e@Uy3p zHngQ3?diasbfgoV>B3!fr5oMpK~H+on?CfVAAUA9GJv}o$RGwYgrN*$I3pOzC`L1e zv5aFp6S#+oOky%qn94NnWjZsM$t-3whq=sSJ_}gLA{MiRr7UAPD_F@YR|;L%ILIL$;xG?$ghx2aF&^bOCwPpd-r-#?^B(W>0Uz=a zAM**H@)@7=1z++NSNNK5_?GYZo*%f%kNm{X{KBvN#_#;WpIjsC_~Q|u1SBL8iAh3I zl98Mgq~sP-k(xB5o(yCp6Pd|ERP^DMC?-QJfN# zq!gtoLs`mEo(fc?5|yb!RjN^)8r;V1)T9=*sY6}rQJ)4hq!Ep2LQ|S?2hC|gOIp#I zHngQ3?diasbfgoV>B3!fr5oMpK~H+on?CfVAN?7?-3(+9gBik5hB2HGjARs}8N*n{ zF`fzB!$c-AnJG+V8uv1t8O&rBvzfzO<}sfIEMyUjS;A75v78mGWEHDf!&=s{o(*i| zJ~nYb53rdnY-Jk{vYj35WEZ>H!(R5Wp937^5D#&fhdII{9OW2~a-0)9#^api2~KgE zGd#&tJk432;T-3Amgl&@MK19?FYqES@iMRQDzEW6Z}28>@iy=9E|+hfil%qTqs7NI$Q-!KjqdGOXjoYb7EoxJTy40gS4QNOs8qQ6^rAO?=u1EPGl07p$RGwYgrN*$I3pOzC`L1ev5aFp z6S#+oOky%qn94NnWjZsM$t-3whq=sSJ_}gLA{MiRr7UAPD_F@YR|;L%ILIL$;xG?$ghx2aF&^bOCwPpd-r-#?^B(W>0Uz=aAM**H z@)@7=1z++NSNNK5_?GYZo*%f%kNm{X{KBvN#_#;WpIjr7(E3k&5|EHYBqj+-Nk;g- z%@m~M7E+O#G^FKL(vhAFWF!-r$wF4Lk)0gmBp12KLtgTcp8^!55QQm1QHoKV5|pGA zr71&M%2A#QRHPD>sX|q%QJosx#_iOk7PYBEUFuPv1~jA*jcGztnsEosX+cX`(V8~2 zr5)|*z@2oY6P@Y8U38@z-RVJ3deNIc^ravD8Nl5PWDtWH!cc}WoDqy<6r&l#SjI7) z3Eaa(CNY^QOl2DPGMyRBWEQiT!(8Sup9L&r5sO*EQkJot6|7_xt69TZ*0G)qY~(&R zaX$~RnJsK(8xOLb9qeQmyV=8D_OYJ>9OMuWahQiW!Xq5z7>{zC6FkP_oa6~kahfwc z$x}SdS)Sn>=XsXrxWGj&@jNf^A}{eWukb3b@j7qtCU5aJ@9-{{d5`z`fDieIkNJd8 z`Hau`f-m`sD}2p2e9L!y&ktPXM}FdGe&JVs<9GhxPp%P3Wc?>T2}npH5|f0aBqKQ~ zNXadvA~k79%dMm%JsHSICNh(StYjlQImk&aa+8O=uq!q1c zLtEO>o(|keM>^4&F5E>|y3w5;^rRQP=|f-o(Vqd_%|He*m>~>h7{eLCNJcT5F^pv# zoy79`jkiLKd-@B`jqb%UQunR}4POIlw^<@eqf3m?J#GQI7E_$2q}cJkCj;;1s7h z!;?J4)12iQ&T*b+d5#NQ|B1oG|hP2#DI?|JYjASA+S;$H@vXg_HI4f|8V? zG-W7DIm%Okid3R9Rj5ies#Am8xSg8RqBeD?OFin-fQB@pF->SnGwz@{EoezATGNKM zw4*&8xRZ`_qBC8%i>`E|J3Z)0FM895zVxF%1Gt-k3}P@t7|Jk)GlG$fVl-nI%Q(g} zfqR(9BqlS3sZ8TurZa-QWF#jA zDY=DIq$Uk%xs`OJCj%MDL}s#(m26}u2RX?_Zt{?qeB`G91t~;ficpkd6sH6wDMe|@ zP?mC(rveqJL}jW_m1QI+@)TaRrX+&e1(3ED}L33Krl2){)4Q**h zdpd9@9qB}8x^Nd==|*>Y(34*DrVoATM}G!zHv<{OV1_W1VGL&kBN@eL#xRy~jAsJ( zFp)`2W(rf8#=T5u1~Zw(Z00bRdCX@43t7Zsmavp%EN2BPS;cDBu$FbKX9F9#k4@aq z18imsTiM2gY-a~M*~M=5u$O)8=Ku#e#6ukBVUF+!M>)o$9Ond&@i-@Wf>WI43{UbD zPji-MILCRO28a;C3a5{2hw;BnPlah?&q#z}?kc!l#AuYF(j`U<8Bbmrd z7P69!?BpOPxyVf(@{*7I6rdo5C`=KGQjFr1pd_UzO&Q8kj`CEXB9*926{=E=>eS#i zZl@--s7)Q}QjhvHpdpQDOcR>Yj5}yf3tG~O*0iB5?PyO2?xZ7~=u8*xqAT6#P7iw0 zi{A91Fa7Ax0PbcWgBZ*ZhBA!dj9?_A7|j^QGLG>~;2tJ2iOEc1D$}@^>C9jzvzW~s z<}#1@EMOsvSj-ZZvW(@dU?rKg;#lv*Lj0Cd5gDshj+Qmd%VvFe8@+9%qM)xXMD~Ve92c_;cLF(TfXCae&8xU z@)JMv3%~Lkzw-xwa*eR^$0I%oNJt_QlZ2!sBRMHZ$t|QJHEBr8t)wG88OTT`GLwa@ zWFtE{$Vo18lZU+IBR>TwNFfSSgrXFqI3*}aDN0j@vXrAd6{tuhDpQ53RHHgIxQ*MX zNiAwqhq~0GJ`HF{BO23$rZnRYn$v=ow4ya_XiGcV(}6qbNGCeeg}dlVH@eelxi$tXrMhOvxeJQKKwiA-WLQ<%y$?qxbNn8_?=Gl#j% zV?GO5$RZZAgrzKFIV)JnDps?GwX9=38`#KwY~p?%U^83T$~GQkJ3H9PE_Snrz3gK@ z2RO(f9^x<$bA(4Y$}t}0I45|F$2rLpoZ>WRc#@}hnzKB^InMJe&vAi^T;h3N;6+~I zWnSS`UgLG%;7#7*ZQkKsF7qDm^8p|75g+pjpYj=>^95h>6<7G0Z}^t)_?{oQ%8&fS z&-}u#{KoJ6!Jk|s65skyd=ik5L?k8&Nl8X>Qjn5cNJVPWkd|9XM|v`lkxXPJ3t7oV zc5;xDT;wJXdC5n93Q&+j6s8D8DMoQhP?A!VrVM2%M|mnxkxEpi3RS5_b!u=Mw^Nf^ z)TRz~sYiVp(2zznrU^}H#vL@L1ubbsYueD3cC@DhchZqgbfyb;(Uop=rw2XhMQ{4h zmwxnT0CzKxK@4UHLm9?!Mlh05jAjgD8OL}ga1Rri#AK#0m1*3|bY?J-EM^HyS;lf!u##1*W({ju$9gufk^9)h{XD>Cwy>3LJjix-u#;WvW)FMW$9@iQ zkV8DgVIJlPk8qS@Jj!uS@EDJCk|#LDY0mH@Pw_Nod4_YG=UJZP0vEZ&^Sr=|yu{1A z!mGT->%766yv5tR!@FGOJ>KU7KI9`l<`X{UGd|}FzT_*e@HOA?E#L7yKX8>F`H7$T zg7w)1f-RMpadeV#D^r0{P z=+6M|W*~zY%n*h$jNy!6B%>J37{)S=@l4e7U?#Je%^c=3kNGTM zA&Xed5|*-z<*Z;Ot60q%*0PTEY+xhzv5EV6fX!@SE8BRG?d)JDyV%Vh_Og%t9N-{_ zc!iS6tz1zTsQG<9mMKDnIfQKl2N} z@*BVN2Y+&nNJ8sB@ku~J5|NlBBqbTiNkK|(Ar+}fLt1Vn9qGwHMlz9^EMz4c*~vjp za*>-ng4+(}0|(U~sXMOV7fogVb07rp62U;5FX z0o=_%1~Hf+3}qO@8NohnIm{0hW&-k1#_>!-RyxYfP^F>F-b^DGLn;ml-xopQj>eGORG@>z0Xi78gpgApQNh?~@hPJe$Jsr4{j&!0kUAT*`bfY^x=t(bn(}%wFqdx<< zn}G~sFhdy1ForXNk&I$AV;IXg#xsF?n8+k1Gli*4<6fpSgPF`?HglNEJm#~2g)Cw* zOIXS>ma~GDtYS55Sj#%rvw@A=$0qLQ0XDORt!(2#wzGqs>|!^2*vmflbAW>!;vo+6 zFh_WVqa5Q=j&p*?c$||w!6{C2h9`N7r#Z_roZ~#t@*Eeq$R(cV1zzMOUgi~E(_tNh4M{LC->%5VJ6 zANNkn3jkd$O3Cj}|Fg;b;_4QaWRbfhN(8OcOuvXGT*WG4qX$whAR zke7VqrvL>hL}7|hlwuU81SKg&Y06NRa+Ie66{$pJs!)|`RHp{FaXU4sMQ!R(mwMEv z0S#$HW17&EX52w@TF{bKw5APhX-9iHa3>wh6 z8N^_QFqB~oX9Ob|#c0MbmT`<{0{1YHNla!6Q<=uSOlJl&nZ<18Fqe7EX8{XY#A24P zlw~Yu1uI#_YSyrpb*yIt8@Z27+|L7SW(!-{#)E8U2RqrtZuYR3eeCA|2RXz;9Ohw; z@CZja#-kkP1ds7JCwYQXoaPKq@)S>VmS;G}d7kAtE^v`cJkJZf$Vb5JG{$f-s62f;6py*V?NGbm1<#(v9x)peMcPO&|KwkNyncZU!=l z!3<$2!x+v8Mly=gjA1O}7|#UmVIq^5%oL_FjeD8S3}!Nm+00=s^O(;97P5%NEMY0j zSk4MovWnHLVJ+)e&jvPfADg(J2iVLOwz7=}+0G7jvWwm9VK4jG&jAi{h=(}L!yMre zj&h7gInD_l<8e;%1gAL78J^@Rp5`piaE|jl%X3`dBH?l4G-ng4+(}0|(U~sXMOV7fogVb07rp62U;5FX0o=_%1~Hf+3}qO@8NohnIm{0hW z&-k1#_>!-RyWF`w)$wqc^kds{GCJ%YZM}7)WkU|uu2t_GIaY|5+=(3WELd)dc+4seh|Jj7uh<_M2)lw&-~aZd0Uk8_eIIK^qs@FY+1 zG-r8+bDZZ{p5p=+xy19lz>B=Z%e=y?yvFOi!JE9r+q}cOT;@IA=L0_EBR=L6KIJn$ z=L^2%E3WW0-|#Kp@jX9ql^^+upZSGf`HkQCgFm@OB);{Z_#_}9iAYQml9G(%q#z}? zkc!l#AuYF(j`U<8Bbmrd7P69!?BpOPxyVf(@{*7I6rdo5C`=KGQjFr1pd_UzO&Q8k zj`CEXB9*926{=E=>eS#iZl@--s7)Q}QjhvHpdpQDOcR>Yj5}yf3tG~O*0iB5?PyO2 z?xZ7~=u8*xqAT6#P7iw0i{A91Fa7Ax0PbcWgBZ*ZhBA!dj9?_A7|j^QGLG>~;2tJ2 ziOEc1D$}@^>C9jzvzW~s<}#1@EMOsvSj-ZZvW(@dU?rKg;#lv*Lj0Cd5gDshj+Qmd%VvFe8@+9%qM)xXMD~V ze92c_;cLF(TfXCae&8xU@)JMv3%~Lkzw-xwa*gn&KOXT(Ktd9cm?R`68OcdON^T() zsYydxZY3S*$v{Rjk(n%HB^%kvK~8d!n>^$tANeUjK?+frA{3<<#VJ8aN>Q3Jl%*Wy zsX#?4QJE@Kr5e?#!EM}5O=?k_I@F~e^=Uvu8qt_0G^H7L(3}>uq!q1cLtEO>o(|ke zM>^4&F5E>|y3w5;^rRQP=|f-o(Vqd_%|He*m>~>h7{eLCNJcT5F^pv#oy79`jkiLKd-@B`jqb%UQunR}4POIlw^<@eqf3m?J#GQI7E_$2q}cJkCj;;1s7h!;?J4)12iQ z&T*b+d5#NQ|B1oG| zhP2#DI?|JYjASA+S;$H@vXg_HI4f|8V?G-W7DIm%Ok zid3R9Rj5ies#Am8xSg8RqBeD?OFin-fQB@pF->SnGwz@{EoezATGNKMw4*&8xRZ`_ zqBC8%i>`E|J3Z)0FM895zVxF%1Gt-k3}P@t7|Jk)GlG$fVl-nI%Q(g}fqR(9BqlS3 zsZ8TurZa-QWF#jADY=DIq$Uk% zxs`OJCj%MDL}s#(m26}u2RX?_Zt{?qeB`G91t~;ficpkd6sH6wDMe|@P?mC(rveqJ zL}jW_m1QI+@)TaRrX+&e1(3ED}L33Krl2){)4Q**hdpd9@9qB}8 zx^Nd==|*>Y(34*DrVoATM}G!zHv<{OV1_W1VGL&kBN@eL#xRy~jAsJ(Fp)`2W(rf8 z#=T5u1~Zw(Z00bRdCX@43t7Zsmavp%EN2BPS;cDBu$FbKX9F9#k4@aq18imsTiM2g zY-a~M*~M=5u$O)8=Ku#e#6ukBVUF+!M>)o$9Ond&@i-@Wf>WI43{UbDPji-MILCRO zs7?)T<92FNi`vwoF7>ES0~*qZ#x$WR&A5Z+w4f!eXiXd1(vJ3Y;7&TyiOzK4 zF1pf_iqVW=EaMo@1nyxXlbFmDrZSCt zna&JmGK<;FVJ`ES&jJ>*h{Y^nDa%;S3Rbd;)vRGH>sZeQHgX@ExSt2u%oet?jR)Dz z4tBDO-Rxm6``FI`4swWxILyNw;Sr8 zo(yCp6Pd|ERP^DMC?-QJfN#q!gtoLs`mEo(fc?5|yb! zRjN^)8r;V1)T9=*sY6}rQJ)4hq!Ep2LQ|S?2hC|gOIp#IHngQ3?diasbfgoV>B3!f zr5oMpK~H+on?CfVAN?7?-3(+9gBik5hB2HGjARs}8N*n{F`fzB!$c-AnJG+V8uv1t z8O&rBvzfzO<}sfIEMyUjS;A75v78mGWEHDf!&=s{o(*i|J~nYb53rdnY-Jk{vYj35 zWEZ>H!(R5Wp937^5D#&fhdII{9OW2~a-0)9#^api2~KgEGd#&tJk432;T-3Amgl&@ zMdBXeR9bk1x76VgR;};|>w0*EYjfcdwj1FQKb(8_2tHKNqWk)=is8Q!zs$o?a{4=y#L=kWeRM~*1f ze^B?ny+@Sl)xBr$iap9zF43!8#hxX~_bFYmMCG!5N|&fqrcZ_Ly?d7L)vI#(k^_eJ z{V(QPwsPt2<;(Rf(W_U*J|)VR>0P!&kDiq(l_*!POr<_OdsHgZqkGT)dah;4l_^)c zLY49*D#@fo`5qO^l;}~qT)7gxx|iwMr&qZ$m3#Ln7jlg@*fo#vDh(;!g^<{t3n>ky zygoVM_4@+ydmWlNv~9y14cp?zbKz`pEpD54{jP_EH~wBfM7n;RtF&3d_2AAo@@eyD zSZ2Ho=?!PUF)rj1hC??;8{Il(zA4dp6NU0+Ca$}~bAO%ZDYDx<+i%LV@QwLGp1BEW zNAw;xs`ucYy}J(VJ-F}4ej|*Ed??N3Xu9}+m;a^f^F-p+lqSvf_KKGM=5`772yHfW z$cX+U`wto1wSTYc%V=o+y3sU$yNvSDeu$S_9wTpB#(&m61H1R=Jy7mj%(v;^$b0ck zd0)CI@35@6ehqDQz3m4N9W_$k39tVPZI@nuCXOVzUb{5c+fv_MuS;BdNw4P<*B>E* Yl1h;@OfYk9f4Yg6TCG|&Z(rvB0qedwnE(I) literal 0 HcmV?d00001 diff --git a/scripts/dataset_multimodal/data-00011-of-00032.arrow b/scripts/dataset_multimodal/data-00011-of-00032.arrow new file mode 100644 index 0000000000000000000000000000000000000000..e217a40689014b8fd328ce121c9cf7816dce341d GIT binary patch literal 74290 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 literal 0 HcmV?d00001 diff --git a/scripts/dataset_multimodal/data-00012-of-00032.arrow b/scripts/dataset_multimodal/data-00012-of-00032.arrow new file mode 100644 index 0000000000000000000000000000000000000000..5c8395ba5176eed32e71ea4347a601c60d575db9 GIT binary patch literal 74290 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 literal 0 HcmV?d00001 diff --git a/scripts/dataset_multimodal/data-00013-of-00032.arrow b/scripts/dataset_multimodal/data-00013-of-00032.arrow new file mode 100644 index 0000000000000000000000000000000000000000..2fa4a002830709348cf3f08ce190847656087521 GIT binary patch literal 25994 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 Y$5-m_W@JXtv41zCt9YrO`8Qbp3k!bU*#H0l literal 0 HcmV?d00001 diff --git a/scripts/dataset_multimodal/data-00014-of-00032.arrow b/scripts/dataset_multimodal/data-00014-of-00032.arrow new file mode 100644 index 0000000000000000000000000000000000000000..e80befeddc9abfe6d7546e89b82ca348b1a47a4d GIT binary patch literal 25994 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 literal 0 HcmV?d00001 diff --git a/scripts/dataset_multimodal/data-00015-of-00032.arrow b/scripts/dataset_multimodal/data-00015-of-00032.arrow new file mode 100644 index 0000000000000000000000000000000000000000..4f45051f649aee41c9b6f4a4eddb7c0db3dd3065 GIT binary patch literal 74290 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 literal 0 HcmV?d00001 diff --git a/scripts/dataset_multimodal/data-00019-of-00032.arrow b/scripts/dataset_multimodal/data-00019-of-00032.arrow new file mode 100644 index 0000000000000000000000000000000000000000..aff5f9b8072ea93f1551164035decf5dbb5440c9 GIT binary patch literal 50146 zcmeI*2ecH`x**^>NX{rpf`TGJat6r=h)NJdPy~sGB$)%42qHm1B}h~RBne1Tf=G}k zf&nmNM#QWrDk=t;Z=a^GJm=lJ-mIBBYrUCn{Z4m<9cu5ts;S-GRSjCVZrQG46rJ^` zktT|AM&Xe;${MAQ(nT4)@<>W+Ix>~f-?ZocMwUm>)TAh?z<#egq%Mu3HfPSBl_*bc z(}m8>vq}`E)6=_Om!8Q(qG+u3M#t7o7s|~~TEZhd_fARf7hbQj&hqo}EO~Bu$g>C` z?U3X_LzDY=OYYP+xqr`;UUHA3+||cS`R8{X6yUo?1pz>oNnIyODk6`R^UC8c-f2_+3vHKMf2NNzq;6f#bN!!`x-IealBVVp?~jbu z%_v2P29Km7{wVfrQ}Gk}I6SgOdCx^q*3_J%3(}_c?~!e>MLw z^7wQ-{r;{0F@1bGp8n|HmdB@y#FPD_z0S=zHyux(|8L9V(;-&FqvW~et74O>e?xnp z-_Bv?!W^lK{_*Gk^zsmg=Rf|Q|KF$M>mJS!dlj!=*cWqg#GeWRy3W!lI%9_R!E8WSWQPktLD0(hi6s`Cw zDatNwtAbI~-uhh|M$xECqG+h{51Rje_9)s`K8i+r9m+32{&UZvE_t~4+`RBQEDO_l z`CXbF%D7&j5BX2h7q(73O_6i2L)wty@%BKEJQP`AD0WE)?6|Zt51+OQW9CqzMOxP}fl2 zseG|A)}Dwxe{6mQ>BF+Y>QYd>_IMtAuIwv3Z?wN0z3^O~@`~4Ss5Bv6e&vMq!a8qx z?jpZa7scur>YquT4@wuWQ&_je>?ry{op>RmZ9LO-W9<}TCA3R7^S3-^ zJ@MYtyjrEA=(PD^y>5+S>xFW{{IES?erV^g&7sWo${yS#R>z;)Yj5+;Pan1;r0*?# z0na5YZ>C;0C%S;J@BO=Is()MFq0Wi?|8@H&+9%OI|2zA3B7PF_lZc;x9RrE>Nwm*D zi-E-P^IykCqJ0wW^UwC3|H}MC{3PP%zY-_^Y@L61{1`fj7I%!ISAYgscuhge4{4|{o)OABKTVjoPnuID|4Q?Y^r3F4<3+|^!gxzaH_CuU zQ+4>dX>8qk>!PTWv{OeUMW1F&N*#v^^?i1JtWKdl;_VRX8`{+WQ6cRgrgLkfkoSW6 zvAzlUhq@jZloZX7Z`jtbU76G^tQWR7^x>fmK8NtSnK8T2pP_B)8@mdx<6~^QOozO_ zv>oU7^T@SH(b`Lmzb%NOzxR2Dim~ksZIW7!HY?UTR(8oUQMB`wSlcDniN!@&r(Zeo zba|`}k4l%#m{ce?ENf|gyUwv?hdRZ^?|#*ep+DpO_;&TA)czU2L6a#>V1eXU*95*0YVF?+<9JP;U7vV)gv3Ky3Q#yjUG(soMcU|A+Q0 zqYqNY?-nMd#@T889+vIw5gQK-eObPGY~5Ft5%Nx{8bv3q7smJMR!aIudpFgW#l^5jT8R{7J#Y(n+DWR;;mLF`5q8jQ|y_?TJD#hxwN4cSllMXCn z=Kj^MnbRaiVY|<7zpupjjbfpu{VwGB?uALI@fz>PFy1;q9EUXVe#xo)&`pTZTG@^5gLk z@(pE%G2GMIAx!r%rX1?qP5w*m18d9=F@C4^3-imH-*;^kjqDmbUhTii{B!$bNFU<; zJ82G9i1kHCv&-}y>K|T*zWvg38QT*2dyDnr?H1a3xAq#Z-NJf{^i{|+zORIB?`<2y zJ`uJr?EhhV!gy_H!=+V{qFINMqFmY~Oo!vk8tW&kUpP*M{ddQ??FfAw*16A^ZfNsR z?-`y$x%XFzq8lt5?wAnTChQ;aI+W91m)VDYof+Gnz9oIWH{3DgTtA2O!@D>hDJyJS zsOMtGkfNqPly7g_9oiwsH9iN>XJPx|eH+qFtMyl(x3_MnTS!~znC;&9SO3S472$YX zzpUe%bxZ57(Dq?p8!Amo-B?+_DWjXu+RmT1bJ$<~F-qHfe6GzWz9a4(r&8mt*k9!x zljk3|#oBwE_KhD;-Y6N%C+tI^4a2sz(?-kIMA6HoV)?|6S*F%}1z4}WZJ_88-8On>tbDh(%IRCiFU+acC-kBOiQR}L)x`wh|bzBSi{$`y&&mDh4--KnWm&J~MlRG6vqs3CFPgE>+Y#e)C z(m(1L;_aAnLLK`Ow&~ckSia%&gs^QZw0XP^Egb(N@gLr6!{!M)C}w3x(H9lViu7BGQI>+v|6LOA-}Cq7P~PA7$#6Uj@ew{-$*yi8-*{h!_nCNKhW)6g{kqxazxp!S zF{F_9fvoBj>L1@X=ZuK0Q)6Tl&9_ci7Ph6MeK)jIcs~#OK|IbUjgP%=p5M-Yf6olZ zqV3utv~{TKQgIcI@geVQ55?x4=@mQfg)%nx^`2iOR>qR{v2sKH;kX$3Hh%1H?)@g- zw_)Eo*&^021J0$*s{P~pLTLL?UcB#@JLb&P2fM{U*p@}&cY2FhTpd-%TWx!&%gw!G zu^W!PbGz$H@fhkc#W6G-XT$qgs6+UCR2L*9+TedH29mU&x7Wny=k~G0=jX9wP2%(O zfA448-p>DRpUWrm{-4`6(I$yD`DbI0=g&{XNg__pkB5KuIuR%TcjLsVPqb-L>|86H zABXdy-#f<6hi3GTqR*Tc)jggRrPDECTsy0Cw{Y%t!uWdpd~$^`lki={aIQVac~!_G zd@nDIh0k-onx=Scyn4HH%{k8NmO8%+=b=Ae_tzLk80Qb?Uj9!Vrw(Ozx8CtlvAPv@ zejCp1GBt9(=A3T30P5d2b`Dt8`Q6pT&mSukiH)6vF`*vLO^38a+2Om5q0aY~j*aVu zbHeGTlA@7&|2mfp<9>OhdB0d}-C=EF<%jJK=kVQ}+jg?8;oLKf|Alk;R`P8!G>R&l zw^=>Iw*77_>QiF{p-y2eCZr3WL4@_=;}Bt6_TLpdPhF{PzpxFP=ETN!6X&3b^Y6qM zL?Q+fF_4IXL<}TiAQ1zJ7)ZoGA_fvMkcfdq3?yP85d(=B_{{Fl4d9Htu zkZ6NM3?yP85d(=BNW?%Q1`;ulh=D{5Bw`>D1Bn<Thj5;2g7fkX`a_lSYS@6ylv zy51Q^`@ZPX`o5#;JG9}qvx(oO$F3KW_+5GwC4QIgngWU6rALY1rT@qG%>Q40 zm!9}H?SGGd(D1Bn>;?;QhSoI3Hlbie6OeE&A_ z{o_OoBw`>D1Bn<Thj5;2g7fkX@>VjvL%i5N)4Kq3YbF_4IX|A%AX+|SaZzyB^h z%n#Rm57%zI0GE1LPN<%E;IHBA0+ny*_pL?Y_%MM&bIKF8dg{)Mey$2&vbL zcNxyeB_$)bBZ%B`BywrU$gOrFm!*u{;vjN+ipVV}BA2v`Ty8SDgm7z(BDl3dbQx~n z5^hHkU4hGQMkOdoDXye6WpG=Ss2t^SIm@UbZqX4{#w9r;w+x9~!ZUJPpr{6J{Sdhw zPUIFYQElo_mwMEv0S&ntm$!@>(}Zhi%C)%cXLLQyXif`Sas#bs&5gM9W^@xS-x;;z zW^Tc4B%)jCKu27DH0nfWy3mzwbSIe}^rRQP>BH^xr62tnz(58u7?#?B@V4@)9re3I{pFVP54mUgr(o@l#e;a zCmiQfKI3z~;7h*ZYrf%IPVgPybCMtUk)Jrl&-}u#oaQ%v=MVnm3}*>De-dt$6|__a*~4C*XCE)Hp98$eOT5f0 z9OMv(d6n0Aoi})sw|JW)yu-V^$NPN1hkV3QKIRyoaGX#1jL-RkFZqhE`G#*f!FPPm zNq*o*e&Q5A^9#Rnn&0@HKlqa~oF%;RCy|B=NJ~1>lYxw6A~RXYN;a~SgPi2zLM|dV zdB{sX@^di-C`cg+a|xGHgrZ!=eGORTumby(}Zhi%C%g_^)#b7EojLNw4yaP(uSL8OFM4n7TR+w9q7ny zbfPm|=t?)blS~hK(u>~o;dc7ckNyl`AcGjp5KL zD_F^stYS55Sj#$|;%U~ifsJh988-7QTiD7rw(}f2*vT$-vxmJr&puvYKL>b`mw1_1 zILILm^D3|LI&bhMZ}B!qc!zg+kN5e25BZ3re9SRE;W(f28K3h7U-A`S^9|o}g75gA zll;Js{KP4K<`;hDG{5mXfAA+~I7|3Pe-df9fV89|JsHSICNh(StYjlQImk&aF61I| zlZU+IBR>~YfPxgFFqd#CMJUQ;Tuw2rpg1KcNhz+RG-W7DIm%Okid3R9Rj5ies#AlS zTtzKvQ-`|LqdpC2$kjBWF-^FJrd-Q)Tu(Ea(}I@VKr32vBW<{ewzT7BZlOK5(t(cL zMkhMcg|2j?JIVB*C%x!RA8w~F{pimC1~Q1j3?YS~3}ZNVa3^f}n8_?=Gl#i6!lTUNG3K*?g*?t87PEw{2WgPrVRH+$I2^X%gV_H%$2d5M>K zg@YX8Ft73&uk!|P@)mD%gm-wC_jsQV_>hk{%Euhz6OQvKpYb_g@FidIHQ(?pC-{!< zImr+F$WNT&XMW*VPV*bT^9O%&hO^kg6-naE5QvXYJLru_ zRjEdGYEYA_s6}n+P?vhtrvVMQnnpCH3D?k+Yq^f=X-0Ee(2{UJ+E%pYM%r)_ZE45N z+(LV9r2`$gjZSo?3tj0(carHrPkPatKHN@U`q7^O3}g_48A1v}8OCt#;7;!1Zth_O zBN@eL?qv-3F_v+RX9D*#kx5ME0UqQbrZAOhOy^-{Fq2u#W)5?Cgh!djW6Wm(3wfMH zEM^HyS;iAAX9X*Hl2xo`4QpA)Q#{RjHn5RRJi}(5WeZ!`#&(`#2RqrtZuYR3=h?># z?B@V4@)9re3I{pFVP54mUgr(o@l#e;aCmiQfKI3z~;7h*Z zYrf%IPVgPybCMtUk)Jrl&-}u#oaQ%v=MVnm3}=bb+5bty1*9b%>B&GwGLe}qWF;Hn zUb8vKNiHtrB65?5yyPQ47gK<6FPuUY<`OQY2t~P!%PB^<7f*3YP?B)pnky+y8OlHNAl?eB;sX|q%QJospB;4b+7PYBEUFuPv1~lYq8qt_0Ttic?=yOKzYQ zt+|ml+(cX2aWl8jo?GcaM{c7No#{eXy3w6vdeDv8qkodX+*eheG{&sDc5ox z*VByVw4fz7(2CaFNE>dVE$z6OTWHU%bf6=*(TUDJ3y^P^L#xjoaOyGVdGKtANz=J%*6s9tb={(E~ zW-^P}%waB%@F??mjQK2JA&;|&#Vlbd%Xot2tY9TivWnHLVJ+);il%766yv5rb;T_)PJ>KU7 zKI9{g@-fHwgyVe5XMD~Ve92dQ%{P3@3BKcdPVxgk@)M`{nP2#o)BMKo{K21`;Ve-G z`#)*8fV89|JsHSICNh(StYjlQImk&aF61I|lZU+IBR>~YfPxgFFqd#CMJUQ;Tuw2r zpg1KcNhz+RG-W7DIm%Okid3R9Rj5ies#AlSTtzKvQ-`|LqdpC2$kjBWF-^FJrd-Q) zTu(Ea(}I@VKr32vBW<{ewzT7BZlOK5(t(cLMkhMcg|2j?JIVB*C%x!RA8w~F{pimC z1~Q1j3?YS~3}ZNVa3^f} zn8_?=Gl#i6!lTUNG3K*?g*?t87PEw{2WgPrVRH+$I2^X%gV_H%$2d5M>Kg@YU-JkAZHN9RtbqjPVoQCOUjOk^et zS;#?B@V4@)9re3I{pFVP54mUgr(o@l#e;aCmiQfKI3z~ z;7h*ZYrf%IPVgPybCMtUk)Jrl&-}u#oaQ%v=MVnm3}*>De-df9fV89|JsHSICNh(S ztYjlQImk&aF61I|lZU+IBR>~YfPxgFFqd#CMJUQ;Tuw2rpg1KcNhz+RG-W7DIm%Ok zid3R9Rj5ies#AlSTtzKvQ-`|LqdpC2$kjBWF-^FJrd-Q)Tu(Ea(}I@VKr32vBW<{e zwzT7BZlOK5(t(cLMkhMcg|2j?JIVB*C%x!RA8w~F{pimC1~Q1j3?YS~3}ZNVa3^f}n8_?=Gl#i6!lTUNG3K*? zg*?t87PEw{2WgPrVRH+$I2 z^X%gV_H%$2d5M>Kg@YX8Ft73&uk!|P@)mD%gm-wC_jsQV_>hk{%Euhz6OQvKpYb_g z@FidIHQ(?pC-{!^kg6-naE5Q zvXYJLs7?)Pauv0xO&#h|kNPyAAy?Cg#x&s?nsP1IaXrmwP77Lc1FdMyjkMt= z+R~1jxrO%JN(VY}8=dG(7rN4o?j+NLp7f$OeYl;z^rJrm7|0+7GlUd|GK}He!JXX2 z-Q2?nMly=g+{+m5V=Uts&jjvgB9oZR13bt>Okpb1n9jq@U?#Je%^c?P2#+$4$C%Fo z7V8rHIor+Aw6Y+xgsc!te9%NDk>jqNb55#Hfl-s62f;6py*C?9i-PdLt}e8%T| z!Iyl+*L=gboZvgY=OjPyBR_G9pZSGfIn8hU&L8~A8O{>^(Vs*bE+8%GNKXbbl8MY@ zAuHL)P7ZRCiwn7k+~grI`N+@36rdo5D9j~XN)d{38JAOxD=1D0N>Yj|DNPy5QjYRe zpdyv1Ockn9jq22(CRb65+SH*g^{7t+8gey_XiO8Xp()pL9oN&0=Cq(CH_(dK+(;X4 zqAl&XnOkVjt#qIxx6z5tbfGKV=uR>{=t(bn(}&yXOF#NEfPoBRFhfXTD8m@e9o)%X z+|50VU?ig$&Ap7_KE^VR@l4=;CNhc1JivoI#1y77jp;nh3}!Nm+00=skMJn-c#Qch zU?GpQh{Y^nDa&|*<*Z;OPqK>DtYIzdc#5Z4&jvQKiD%f%vut52+t|)?>|iIm*v%gH z@;v)^f&CodMPA}%Ug02zILxcO#_PPno4m!_9N`__9Q-FdLqA-_mDMcvCWn4}%uAn$2C`l=tHOF7C@ zfr?b3GF7NbHL6pCnp{OKYEy^0)T2HPXvozxqA^XlhNfK0bzDy~n$v=o+(0W@b0clI ziMF)kW^SQ9x6*-*+(sul(}k{dqdUp;peMcPO&@NjFa7Ax00uIM!3-gVp$ua5L1}SG^X<~GnmONW;2JmJi?>Q<1yy5 zfQ3BHA{MiRr7YtKma~GDJjp6nvxc>-<0+nIJsa4_CZ1t4&$5NBY-2mmv4frLVmEu( z%k%8x1@?1*7kP=7d4+=<;xMoB8n5#PZ}JvzbA)$zm-l#|5BQLeILgNy;}eeaDWCB< zU+^Vg@ipJ@EhqSn?>Wg2{K!w7;%9#0S5EUAzw-xwa)z@+>Focc;R4cJlYH}5|s7)Q}QjhvHpdnY&h{iPG8k%w~*Ks|~Xif`Sas#bs&5g9- zCfd@Do4JMd+)4*JavPoKOc%P+jqW7VgP!!FH+{IBzVxF%0~p941~Y^dhBA!d+`*mP z#ogS)2u3oB(cH@z?qe+D7|#UmXCjlB%mX~gLrh^R)0ob~%wQ(7n9UsK@(7PIkH?tL z0v7T(i&)GOma>c|Sk4Mo@+7NR%^KFSj;DB<^=x1xn|OxJJj)igvW@LL#}0O~i{0#D zFVC}&7ue4MUgRZS<`oWdh{L?fYrM`IyvbX<%@N+=UEbq;KHx(>;wT?;j88bur+mie ze8HD|#n*hpx18WRzUL%A@FPEQil6y~UpdWh{LUZz$r;WPrMLf+h6_kbI?|JYjASA+ zS;$H@vXg_Hvz-t^&i`qGd73}7IG7|ak-7|Jk)a|d^F z7k6_HBN)jjMsqJ?xR0@nV>}bMpNULjG7s<|4>5(QOk+9^GlQATVm5P_%OgC>JRV~{ z3s}hGEMhTBSjsY@Fs8ZHb;1ecX^NZ`G61kh@*VWF+SlqpYj=> z^95h>6<_lW-*STQ_@0yez>oaIDSqY`e&sa3@jHL;CucZIl)?T_8ZIC$=}1ooGLnhR zWFafr$W9J&l8Xzuh}`5MFZsyN#T1|*g(%D=TuKp&av7IXj4LQk2})9mD=AGG%2JN< zRG=c2s7w{AQjO}=pe9#Qi`vwoF7>ES0~&HQjc800uAwQ{avj&xjOMhUB{$HD*4#)N zZlW#ixS3mM&#iQzBe&6s&UB$G-RMp-J?Kdv)Q%Sy>rXLXQSbfGn{LC?2NAvn~cH`e0apu zhu3WhpL2#s`CbG1C716qI3>AXr~U(m4k@3KQa)wC;BLKAdZ%>hUw%lp!Mz8j3@P8c zUzeWAL&|rpSffjgYSp@y?N+05<+4?htJW-Avr3KXWxIB*(xq#+>NUG}tx>gHpMgF9 z*K(~{wR`sp-K$h6Tcc~u>Se1`uF<7zm*k4w%T`LRRI_5u>eahdtZwZV z=S>wP44=z(AT(#2Goj3+Jh{CtbZ%bAJ4}Z|T&!`#w)IBG)=d}cm!Eidgy-HG*;BO2 zI?KfJrHjHcFa6if3j%cv6ThomC%NI9>J|EzubcIlej zSME!!xA4D^_tf+9K73x@p{&r3p`AjTrM7+lfkRW|oi_Eq&~~}?XZk2Z>el5_ps>x;p@%Ptp8J)1#a&T%gjZXcWCtB;n4%S zMR)EOJ)q~XUP=#wYw}!)%@_agm47iNO%Sh|JZbbpT-)HEk6Vw+xBaj7$F0ZZFEKhUXY6y_dR+dxf3-hu zJud&5L;o><+_lI%#=jE@<|LgU*v=@`azKUyKcrK>pvWF4^y2_d$xZ;405BBp( zCE3Wpmtln)gJ43BAh=N^2=e=3HKSt?l(juA1HumcQ~rZJ|H$`k?jY##au6I%6$BeT zix=D>Z?kMc&|dnkHG*Jl&L9}B{`0oKeMb-+E*=EqybkNnO6J?oVOuhi<@UDlb+|8F z&&03t98*UFfj;zaL*Iai+W2SeD_ zu)gbe#@4aztJvqOwwI7U+&4s9vT4^z&qHq4eUIlo&X+6cZkMU7xHb-#C(M^wJz=^q z%_YxK%DbLEwvA!?lPPnSd~t0G)8=0o1m9`%3GYexJ~z_dl#VOx8CJO!hY#y z`@yBsiT9qiRW29=KieLr>sB*1U06@JJv^Rpd)Uw6F^6^TQumPBv2FaZz5cfC&-ugS z2=n)rKda~b_BYfnhZ7_qJooM#eT8%wA~eZoZ&G?SBV`T5BI0l?$zaD z%hBn8P~4wp^;?8jJRadAhg`5N_Z0MZB0koYE~`Oqz50CG3ltl+70e zos=D3D;eD&2==+|5!M}+7548a*NnonVV})!6I{AKX|R1RdoIuj7QrHsqmr z!HF!f`xd(P5Wdf!*LAFpb8*u@+SE;*ac$3YA-4XK+WF0|;^lV!@K|otj(xAgc7)gI zghE854K}a` z{jcng#8o7&{ws0wkMcy~>VIBbh2uL{eV&i|j$m@*B5`9kwfwFbj@=~pUCHpXdPa%k zz9SfZeh)vdhvNz1cTD5PeZuc5c3T(_`S+7ZH=q(V!o4D*z19#mFxMJ ztUlWtcZn+_{LW?E7|`&UvENON8}lesIJUlpzPtFTyiq>yPuUm*TW^mYe5#yN+JB^G z>~|mI>gjDPB5X^B`s(q0%#`=U3li8Cez&ukv~lAq;qk>CQ`~Wc{Svk@97_ntcQP37 z2!HPk)AiY_{;RQlvoWuB+a6bELH*F%vG3qv+r#`#&c@c&s7LH`ICj>}_{yYuv3(mi zR`R#{>CgSM#)%xZ>HAWDyB*>2g!LuW7yFERh2=-aKO*Bkk+H8x3`Ale5(AMKh{Ql7 z1|l&KiGfHAL}DNk1Cbbr#6Tnl{{N2wLwzyJU;kbD68Ardi1a}u1|l&KiGfHAL}DNk z1Cbbr#6TnlA~6t&fk+HQVjvO&kr;@?KqLktF%XG?NDM?`AQA)rQ)3|Vcj=M8OaJfq zyY&C5=TqdkBmb5}VjvO&kr;@?KqLktF%XG?NDM?`AQA(S7>LBcziSLc{x1EGzu*7A z^>^w2uJ3iEU6G$dkr;@?KqLktF%XG?NDM?`AQA(S7>L9`BnBce5Q%|E3`An!Uyp(R z)8D0s+rxXlhx0as^G~~_Vc?dD;WQ(G+cySoofx>iV$40S!}}M6_b(0aXX)0IfhjTq zw}XtiU%cBO25$QpxV2Zo+2GNfl%qTqs7NI$b1$YA3951* z)u>Jl?x!ZTs7)Q};?|CV+gb(qSk4MovWnHLVJ+)e z&jvQKiOp!V%Px*|``GPO`im&;G zZ~2bz`GM>F$WPqhXMW*Ve&cs;a*OcfkB2FJf&?Ta5s67cQj(FJ6r>~-caWMiq$M5c z$v{RjaVMF{LRPX7PGOXToZLk&a+8O<$%|XZ2KmTO0SZ!x!W5w>#VAe*N>Yl_l%Xu; zC{G0{Qi;mkOBJeeAJwQ%4eqBVwWv)U>QayTG@v1kXiO8D(v0S`pe3znO&i+Mj`lo2 z2RhP;&U7J)u5_b2(e$7vz35FJ`qGd73}7IG7|alcGK}Fo$OuMax}V@-M)3%v8N*n{ zF`fxbWD=8^!c-n*8q=A?VuJIus@iCw9DWCB&ACLGXAR&oJOcIikjO3&sC8@ZB)TALT z=}1ooGLnfq$xIfql8x--ASZW`i`?YlZt`*u`N&TJ3Q~x|6rm`^C{77VQi{@)p)BPn zPX#JciOSqd6{>O{)u>Jl?x!ZTs7)Q}QjhvHpdpQDOcR>YjOMhUC9P;p8`{#2_B=ob zI?{>GbRmkabfY`b^q?ob=uIE`(vSWOU?77S%n*h$jNv@U2uAV{4>O8K7|j^QGLG>~ zU?P*4%oL{bDASnE3}!Nm**wM^<}#1Rd4l;YU?GcmlBZbA5|;8b%UI3|R8kcyT%e=vxyv5tR!@Io46|V9=A8?Hi`G}ACgira5&-sEc`HHXk zhHv?f@A-l2{K!w-;Aei}SAOGnZgPw8m;QLfCjkjbL}HSVlw>3)1u03z9i%1=X-P+V zGLVr>+(~A#kd)nb9OnclImNR)$7#;+JTGvTbG*oT zE^v{Tc$rstmDjk$>s;my-sCOb<{jSUJ+5$-_xXTpe8@+9%qM)xXMD~Ve92dQ%{P3@ zcYMzeT<1rA;s!tS3%~LkzjKpY1PPu0#3um>Nkn3jkd$PE^GKv1C8@ZB)TALT=}1pF zFG5Dbxe)FoGg-(=HnNk0oZLk&a+8O<$;&eS$VY7)-LQJXr{r5^QZKtmeQm?ku(8O>=yOIp#IHngQ3 z?RkI>bfgoV=|U7;=|*>==|N9=(VIT>r62tnz(58um>~>h7{hsx5sc&^9%dAeFq$!p zWgO#~z(gi7nJG-=QKm7S8O&rBvw4g;%w-;r^91u*z(N-BBu}xJB`oD>ma&`_tYj6d zS;Jb^v7QZVWD}d&!dAAiogM6C7rWWRUiPt{103WKhdIJgj`0k~Il)Oz@hs1Anln7l z3!LQ~FLIs>T;wHQ<`rJ$H7@ZwmwAIXd5gDshj)38D_rG$KHwT3@(~~N37_&ApYsJ@ z@)ck64d3z|-}3|4`H`Qv!O#4{ul&aE+~gKPBIiHxNkBppk(eYTB^k*{K}u2)ekUz8 zX-G>t(vyLVWa3UTlZC8=^V?)62RXTmT;wJXcaxWJ?w5RobG;NGoL8n0g(*T&icy>r zl%y1;DMMMxQJxA^B%IH&GWSx2s@z94s#AmesYxwrQ-`|LqdpC2NFy54gr+p3IW1^O zD_YZrwzQ)?572>*bfPm|h@vaq=uR{}=t(bn(}%wFqdx-}$RGw2&a)HFqce=*Jje(} z@(|(tIHP!k(Trg%;~38bCNhc1OkpaIGL7lXU?#Je&11}AF7tStCz#Iy7P5#Zd5Xm> zVJT0ujODCgC97D?8rHIo^=x1xo7l`2wz7@w>|iIm*v%gHvXA{7;2?)M%n^=qjAuB` z2~Ki~XL*j(oZ)$1;4J5Ok@H;OA}{eWukb3baf#Qt%p1JPTfEIXyvuuB;VSR*0oVAD zkNB8R_>|B1oG`peMcPO&|KwkNyl`AcGjp5QZ|0 zaQ?6d8No;%;$cSd2%{OpSjI7)2~1=XlbOO)9%UNSnZZnEF`LJj!(8U^I8QL21uSF{ zPx2ItS;A7DW*N&_!Ae%Knl-Ft9qZY^MmDjTEo@~Q+u6ZRcCnj1>}4POIlw^Tw zNFfSSgrXFqI3*}aDN0j@vXrAd6{tuhDswMYsLFj*qdGOXpPJO7Hg%{=J?hhdhBTrv zO=wCpn$v=ow4ya_XiGcV^8g*_NGCeeg($kxjqXI#gP!yvoLjFCed$Mk1~8C83}y&J z8OCrPWCSC5h=&=)BaCJYV;RSICNPmnOlAsGd6a2PX9hEw#cUp94s)5u<2=E97O;>- zJjqimW(iAqnq@3!1uI#_YSyrpb*yIt8`;EWwy>3LY-a~M*~M=5u$O)8=Ku#e#9@wb zlw&-@aZYfOQ#{LaoaPMA^8#l%$BUfj0^xFd7(KZCaXPsD&uS3vPD(P8lY*3_;to=i zhP0$3JsHSIChjCNS;$H@vXg_H+(j;OlZU&>%RS^HKLsdAAqrE3q7hfi zl%qTqs7NI$b1zk>%6(L$IyJbTn$)5;b*M`{>eGORG@>z0Xi77h(}I??qBU)3OFP>0 z03GN^Cpy!GD7w;(?nKjrp7f$OedtR+`ZIum3}P@t7|Jk)^B^M_$wNHMC>~)nV;IXg z#xsG5Oky%qn98F}V>&aK$t-5`7;~7*JRau>=Cgo>EaFL?Vlhit%F`@kIV)JnDps?G zwX9=38`#JuHnWATY-2k+*vT$-vxmLxV?PHt$RQ4Mgrgke8IE&;lbqsNp5ruUc%BzH z%Q;@;JQujgOT5f0yvl1_;&m?b25<5fZ}SfC@*Y>X%KLo4H9q7cKIRiXBolX%nJi=_8`;T0PVOQXxyi%by5`9`$KJLmJVTCN!lP&1pePTG5&|w51*Gd4LXd zq!XR#LKI!;Mt7p=K~H+on?CfVAN?7?Kn5|GAq-_0!+DSqjN~C6W)zPwnlX%J9OIe5 zL?$trDNN;2rZJrv%w!g`d5k&CWgd_71oK(ILKg8PPqCOKEahpIv78mGWEHDf!&=s{ zo(*hd6Pww>R<^O79qeQmyV=8D_OYJ>9OMv(Il@tn@eIc~!AVZ>EYES8Gd#}=oaG!Z za-IuZ^95h>6<_lW z-|`*b^8?rUk)OE1&-}u#{KoIxXtLsYydx(vhAF zWF!-Jl9?=IB^%kvK~C->7rDv9-Q?vS@{ykc6r>P^DMC?-QJfN#q!gtoLs`mEo(fc? z5|z1^Dpch@s!^R9+)qtvQJXr{r5^QZKtmeQm?ku(8O>=yOIp#IHngQ3?RkI>bfgoV z=|U7;=|*>==|N9=(VIT>r62tnz(58um>~>h7{hsx5sc&^9%dAeFq$!pWgO#~z(gi7 znJG-=QKm7S8O&rBvw4g;%w-;r^91u*z(N-BBu}xJB`oD>ma&`_tYj6dS;Jb^v7QZV zWD}d&!dAAiogM6C7rWWRUiPt{103WKhdIJgj`0k~Il)Oz@hs1Anln7l3!LQ~FLIs> zT;wHQ<`rJ$H7@ZwmwAIXd5gDshj)38D_rG$KHwT3@(~~N37_&ApYsJ@@)ck64d3z| z-}3|4`H`Qv!O#4{ul&aE+~gMFFa7a|PXZE>h{PlzDalAq3R04aJ4j6$(vpt!WFRA% zxRcCeAuHL)P7ZQ%7rDqy9_}VD_mGeL6rdo5C`=KGQjFr1pd_UzO&Q8kj`CEXB9*Aj zy;Pwp_fd`N)Zl(~op)dXD&j1E8h`|hDD8m@egN$G#5AiUgc!bf6VJzbq&jcniiOEc1 zDvvUa>C9jzvzX0e%waC`c$_Dg&jJ>*h$nf9#VlbdPqU2WtY9UpSj`&NvX1p^U?ZE@ z%oet?jqU7UC%f3q9`>@2{T$#Rhd9g;j&h7=IL--9a*Ahpj?hnIm{0hW&-k1#_>!;qns4})@A#e{ zxXzFK#0`Gt7k=e8e&;5)2ogH~iBAF&l8D44At}j7P6|?ziaSV68q$)E^kg6-nYfe8 zWFafr$W9J&au>PCO&;zhFZYm-{1l)dg(yrBic*Z?l%OP~C`}p4QjYRepdyv1%)L~h zD)&*1>eS$VYEp~Z)S)i*s80hL(ul@1p()L1P77Mniq^EDE$wK}19YGxo#;##qUcID zx)V(gdeV#D^r0{P=+6KKGKj$pVJO2G&V!6#BoFa0qj-eTjA1O}7|#SIGKtAdVJeR@ zjp@u_CbO8$W6WVL^LU&mn9l+hvWO>nip4BpDNnPE<*Z;Ot60q%*0PTEY+xgs*vuBT zvW@NRU?;oS%^vo$kNq6rAcr{25sq?O&ZdYj`U<8Bbm69%w!=e z*~m@~a&i~B$W0#ZCNKApkNgy%AcZJQ5sFfb;*_8yr6^4q%2JN7ozA&H@Xu| z4|>vz-t?g_{pimC1~Q1j3}Gn47|w%?U?dOmFr#>c(Trg%;~38bCNhc1OkpaIGL7lX zU?#Je&11}AF7tStCz#Iy7P5#Zd5Xm>VJT0ujODCgC97D?8rHIo^=x1xo7l`2wz7@w z>|iIm*v%gHvXA{7;2?)M%n^=qjAuB`2~Ki~XL*j(oZ)$1;4J5Ok@H;OA}{eWukb3b zaf#Qt%p1JPTfEIXyvuuB;VSR*0oVADkNB8R_>|B1oGHNAm8i_URG}*OQH|=< z;C^aSi`vwoF7>ES0~*qZ#x$WR&1g;wTGEQvw4p8SXwL(5pd+2=Oc$c)N;kR_O%Hm~ zi{A91Fa7Ax00uIM!3<$2!x+wkj9?@W@i3!!gwc#)EaMo@1ST?x$xLA?k1~zv%wQ(7 zn9XC%VJ`D{oF|yi0v57}CwYp+EMX~6vyA1eU?rb5JG{$#T;VG3^8wfRkdOG7PxzG2_?$2JlCSuhZ}^t)_?{oQ&X4@W4Swbq ze&siQ=O(uZk~sf~PXZE>h{PlzDalAq3R04aJ4j6$(vpt!WFRA%xRcCeAuHL)P7ZQ% z7rDqy9_}VD_mGeL6rdo5C`=KGQjFr1pd_UzO&Q8kj`CEXB9*Ajy;Pwp_fd`N)Zl(< zQj6Nup)U2PPXij#h{iObDa~k33tG~O*0iB5?P$*fbf6=h=u8))=t?)b6HO0#(u>~o zp)dXD&j1E8h`|hDD8m@egN$G#5AiUgc!bf6VJzbq&jcniiOEc1DvvUa>C9jzvzX0e z%waC`c$_Dg&jJ>*h$nf9#VlbdPqU2WtY9UpSj`&NvX1p^U?ZE@%oet?jqU7UC%f3q z9`>@2{T$#Rhd9g;j&h7=IL--9a*Ahpj?M;DDMSF&Q!G9{zR7wy`; zZ1(h{qhzr@gL?jRrIw2BQL1$J=+Z?iM3pF0v`pFPZbd6bMMV`YRl0nI za%H=gDcz%M#jw<{y{3texvZGR>y*9?kk~f}Qu>xa%5bONDdRD3%qu^4JlDN_;7xBo zUk)$O-d>W%eET5b?Z=ppDlylaO2`;qm+e5!Rzd|w}oYg>*3oF+c{!e zx^b~-6NT-|Ox)WMKKItio`TKNtp8J)1#YJc%gjZXcWCtB;n4%SMR)EOJ)q~XUPEmP zuE}#HHedX|SN_GAG(o&-@}!CBuh_Q#xnIKL2>Wc%z@fc|^&U8&bMNjkb<~x96szcB2%k#3~BOS-$eJEXfi6bV5>R6q#{DG_NAkWdK~1d$NLLToG)ush+q z7Q=nyoZoYv=hXMT&v)J#y_lK3_sacWd+xpVM4h&6TXiZEiClH7oFEcO8wt1Mk(80d zkwlTC9=XLO^gQBOQvW8r{%^$kNMwFoBvP7V9(TL8HWF!ncC^riU3Ab=RcwGPC;qg}6Y`P)OBG=c4Jo6CJj_p5seE$)B z`}Z8yf5gCXgXA8Gd?L;HXu1S{FaI;wwu!{mmL{!!h_8DA&qF;zIiVe)4@Qj~J9ymS zkt2Ez?su(>#~w-57NUl4yEzdru?!S2x|=da(#uaAEozg?t9{F>|c*Pq9yKe+#2uaAEopZ@&6 zSs(vAKK+`k@$HS~6aPFu{lR~;KK^;>>&1TaZ`Q{@k58XA+rQ2~{(0!jaLaRjeS#Y{ z3uF4meh%A>${hav>-ImrKE&RQw||@ezkMFR?U^LeM{CkV@8jzknv;%m{wXc<8tWsG z^BQ(&wBwYZ&rSxu3_s-%TBf94HluO!GLDpN%Zn??YWO zlJ)ws@Hngs&olA6G|wrcnSdYrH`3>{O?;X>*B^(pA>XRD|2StP(oda=YD)w6_Zo!B zlSLx$8K48yEA&HHUr|tOw|#hAN?-N2%`uO!SRb}4YF+&DVGed5==)+0P@%nj)h%q7 zKs^_D9u5$puA#gi#ZD+=`&ZHX4=pb(eONa}U9zj!VfSOMmtD~Po+#Yn8bV*T}x#?*gj{Xc7bIW>+v+C37v=v=glbIab& zVY7Q2<~llNid>tgnE!h8y!V3jH9v`qG_bC5{^)sj%@mPHPv^Q*H$@_yH8Qbzi*W9L zzFpk4d4q6%JKa3T$UKoq3g^6`jO^v2`R%f8{JCvy=g{%xhdGcimlDo%x3w~F;QTnu zEo{pgJ%119_o0k12k@hLhaZbXw=Jf=@#oZM=11oV!ufWhk`rcdt<}5*b9OPf?v2+Pm5O z#PemM{d2m`U-KBnYX8*-p`XLt$9GkueNk&iv>(?CvX(=l`OTja7dfhZ>CFv=c?bVT za;Q&8+jo#QS(i6yB(j5S(uIBY<{0y*k3}N+Jq~jn$uC8hZ?{c1LOowB8tsoH>KM|z zl{4;IABHlrnHTvqseSiKTqJ?{%Y628$S1TvYUuj>Mhg!|2&7$$q*5iLK zK5}dK1al^*@jVu(2G`%PKJoItc{-n5B_G~1wO1odv z{*uy%{@gPwx;}n<9n}|Mzwf?Nd})8EZ-}7>(kMed1INZ)i|f3WUF-8t^;?0sNDt}a z$HKXT(L5)QkBc;UD=v~qc^A~Ft!+YGLcfN1+deNYGR}S}ob9jn&u?hX(3lK!mtosY zgX1E3jJfc*?&wG)jr&H%NvKzt%L~gx-BX#z>!2S)doM4FyVkFv@8;Z4udr>1nal~J zV=rv?PJzGnamq=5jk|v|zQewLfv{ggfBmKnAx)@v=$DeE|BA;>DWdx=jP28whxPaA z-}rcq7z3g2W><*DL#Suwg3&k*?djVt5?Nj-+DGY((Qu5Jpj{KKE3h^a8D26H`C7T5 zPbSE#vT+mgd#&-&Q1<6yznMONMSO&PUd!W9UO4V` zuM|BN^E+= z8jhi%ziSzjVObin_>ubEZ@dq!9ete$$IB2GX--G`C8?MRbJ(FhGX^+j+CI#g_Ag{? z*l&#wM7uZ`&4gTvUG8 z51~$>tnFfShFTH3JeTkRigoP^~e?|vPl+a6Je z)Sideh%o0prDxo=aTU^pHij|>tAA+w_hqALa#e{QL&6+#b}<%WC9{1Tj(Lmkh?WuR zd+AKvwfW_@XB!{Z$B)HE1Ea6We`-tE=UtT%`lF$~8(z`tsr;5(SIGTqrCoza9T%Bm zc^C^5+eRX5#9^4XK4hB(+7Xr|)3;&!kWbi$J&fH@pKxplZ3xH07LJ{vFGH-x$9s0| z8gE>0=@PB?d9je#HsLtG{foGN$#4DoxJa`MasTr7LpyCBSma;FivX$ zmU&F{SQzSmV_n1Z(EsuKB7W=)w9ntLk3zpZHS@3W7vi9{mtXsaEuOZx$!tqvqv<)aGVRrw~+29$BQt=LM+B#I|;{$aEw?c zuTWN5?Z4F6H41ILXxmWNbETqn&%Y|VO?X|bZ@W3;&ha{9h7HCSM2U++~!T|@7HS4aUJ6AO|O-q-otHsKcTDzOI&x7KI9Re zcY7o5+H2Z38=`gV=sx5*#Op&C=bvyQZ=ZZukJ015!86oY+JkdJEA2&mvWhx%M#xqM> z!tvqS--zkru8q;KzeBq4x4~uo8pdsCQ#Sn;-{!D=sDFr|U!RWFXZeV~$_%g9p^i&C z8xOPmeJK5%N22+}|DB&eC~Ia+tPlP}F%YMpgktRaxv>eJB{fYQLKE`8l^*`UIe``O*`Z?Cme=9EjyUYG>iz}z=k%N8A1>}m( zD~5CYdd@%NuOm%37(J&A=c~PXN9U4;IB(sRJ38O;x;f1@)`j_-aPE82`F=QmJ?1=r ziF4$vPCWj|Wfuh)-MA{6&~c z33ERAc17pUTG%GM@3Wx%Lb?NequYeXUCpP3_mUP>-c9bqwXC!PB+Mg*GEKgeq`7}D$H(A;+ zR}kiT7N~p3=a+_&$o|&RxyCOhM3)^gw-MHTEp52(pVydg7xyo7ggc6RzAG-WNZsS- zqC#2W+CeMr3iCQE)c=yS;Tlw^Yka?kYZdREkLLUL`Z$#Py8W_3ULk#$_XztSJdW?* z_<5*sZ6nNMg>rvwWiC*e@%uPF77pGTi9BO2G^7vL`9l6DY#W~UDiuxJtYmbKBz|70 zZdvbVzTTdbuK$GjoG{-Q-|wM~p%4C6St0*M)`j`R0Y%~>t;E4-^DUu{3ok|@$IYik z#7Wrh4fA&!?2i!JVf`ESQ+&TR)u$V)N8^8zx#JM0x0H^id%sq+{vjqq|A#s6YEAx{ zgK95+;`^w7mT2rA*QX&C!#IhL?^kRW=7y^8jkYDe9@EU9h4d5T-9$fxx`zG=`|`$p z7nXRSBi=1{02=nqG{!c4s zr*f0miRQn{+~h?49OnO06WUcvc^?oS-xxPx{Dyu1;U9nX!QN(n?f3Y2`1g)IVO*^G zAe!%uV?B)V5Z`n8Zf&$)p^ooub*)z)hqi}nOxNb@&PLaVV_=AnQ}v@`IqbI(ry*{> zS#AFEdTfW-2KdE z;-QQ_C0u_H%b}k`J(l&0E)UnB|M)!a+BJdrF%`zs1aqVDbCzL$=a+wc-Z%Dpe4TDw z7Gf;ypD^d2mviP&LmlGt53dWM4q=;Vu8+m%8~QVTKZj#z$UA{hR&-3P4`MM8i-A}S z#9|;81F;y0#Xu|uVlfblf&b$%5W9Zv{LOh$F86M{p$~=+5X3`t(lVf zhk3@z{l|UuAL++`v`ws^WBvS(V&uQFJ{DK8xcaZe%|A*Li>p{%{i7K9udI*7RV=Rl zD{=FW(!}EGe|KDk_uZTn1if4v4cAD+wb1x$q-VX)rF)*}wbA3PT?4Nl{ajGkF1>5E zVY}u&4-~Hbjwt7IH0|B{{N}mGeJ1zjXnvJPN7IMTT%UIRH+)7ryx*XP@IZ(Y~&&-mtW8hBqs^S|CZ65qzqhGb)-p9c=#o%Z{t=zA4bd9T7g*ULkjPx?&E zC<9{Y#ArF;GgqN530=cpQ!v_|%PqYJWXfOfRk^5+A@6kWMf+*>9nt$x@4o6-KUefU z2^W+x&3gzQP}kVC=-4&**!vJ-F%XM^SPaBsAQl6$7>LC{ECymR5Q~BTUJN*mymtHd zzTbVN-xG+5^+7BKVlfblfmjU0Vjva+u^5QOKr9AgF%XM^SPaBsAQl6$7>LEdKSK<} zzTZ9i{oe84{~!B)_vrgu&K-=tS0(oS?$O^Hh<(3%^fxHuzhn46@_QGt?{|-Vzx$2f znI68=d!qNN#lGJ?_Wka$?{|;>-pcLC{ECymR z5Q~9W48&p}76Y*u_}>}>;dkQVKaU$eKN=qYqwkdtpGA#*zkBq%{$t8^;7>LC{ECymR5Q~9W48&p}76Y*uh{ZrG24XP~ zi-A}S#9|;81F;y0#Xu|uVlfblfmjU0Vjva+u^9MgiGg3dcjf=K?|1)a>HAncV#k44 z48&p}76Y*uh{ZrG24XP~i-A}S#A4w8Z!vKF>)j*&-uJtQ_2DQI+@)TaRrX+&e1(3EEQnY2g?{G?f=6|HGQ zTiW60-Xb07NGCdTD_!VHH@ee` zVJXXah~=zcC97D?!>r*E*77LpSkDGFvWd-X;W4)IINR9H4xV5qyV%Vhp5!T>W-t5L z&jFs{S)St{hj^aD9N`6y@*>AL&IwNP5~n!L%bejAUgb4j=MB#CCg*sIw|R$md5`z` zfb)FFM|{jDe98qr<8v-@iOYP!mwd(7e8abV$M^iekNm{X{KBvN#_#;WpIqT8VerS1 zfSd4Bg^@%gCJ9MNMsiY+l2oK74QWZo&7>y-8OcOuvXGT*WG4qX$whARke7VqrvL>h zL}7|hlv^l9aY|5Y7O;>-Jjh~} zu#{yy#Bx@!l2xqcVb<^nYk8D)tY-ro*~DhH@EBWpoNa7p2T!n*UF>ELPx2H`vzLAB z=K#;}EYER}Lp;x6j_?9Ud68or=L9EtiBp{BWzO&luksqN^9E;mlXJYq+q}cOyvO@| zzkY~pd_UzO&Q8kj`CEXB9*926{=E=>eQenwWv)U>QayTG@v1kXiO8D(v0S` zpe3znO&i+Mj`nn*Bc15Xt#qL)-RMpadeV#D^r0{P=+6KKGKj$pVJO2G&Im>_iqVW= zEaMo@ZQRZT?qDL5n9LOJWGd6Ri|Nc@CbPJk+1$gu+{YZ|GLQRtfcY$7A&YpB#Vlbd z%Xo<8tY9UpSk1$%;StvIDC=0y1~#&Z&1~T@w(>aJ*v<}~U?;oS%^sfQDV}C8``FI` zp5a-Z;~*>e8HD|#n*hpw|vL<{J@X=#LxV~ul&aE{K21G;VR*e{x}kF z6A4K~Vv>-QWF#jADM>|Y(vX&P+)R2hkdaJeCJR}~Ms{+LlU(E`4|&N)ehN^KLKLP5 zMY)Ay6sH6wDMe|@P?mC(rveqJL}jW_m1+=(3WW(;E) z$9Qhzb|!EK6Pd(hrf?@ynZ{jAX9hEw#of&29`5Bn<}jCe+|L8dX8{XY#Dgqm2}@bV zLo89<`;hDH-6_2{^SZ*i6k`sNx)4c zBoT>8LQ;~EoD`%a6{$%>TGDYd=?UM=_rE7{0S4sw!<+~grI`N&TJ3Q~yh zo99I+$}JS5I3*}aDN0j@vXrAd6{tuhDpQ53RHHgIs7WnqQ-`|LqdpC2NFy54gr+p3 zIW1^OD_YZrwzQ)?9q33WI&&*s=t?)b(}SM$qBni$OF#NEfPoBRFhdy1ForXNk&I$A zV;IXg#&a9DGl4sp$Rs8+g*%zbH11+LGnmON?q)Xka4+{Uhq=t-ejZ>x3s}e^9%L~~ zSjsXUVmT{V$tqU!Fl%^(wLHo?*0X_)Y+^H8c#N$)&NjBQgD2R@E_SnrCwYpe*~>om zbAV@fmghLgA)ekY~pd_UzO&Q8kj`CEXB9*926{=E=>eQenwWv)U>QayTG@v1kXiO8D(v0S` zpe3znO&i+Mj`nn*Bc15Xt#qL)-RMpadeV#D^r0{P=+6KKGKj$pVJO2G&Im>_iqVWA ze4qI^#&a9DGl4q@-&H+{$xPu+rZSDYn9dAlGK;&J%{|=9eavAl^SGY}n9l+hvWN#+ z%o3KejE7jx3Rbd;)jZ4^9$_tyvX1p^U?ZE@%oZMFE042{?d;$QcCw4z?BPkC;%WA> zkNq6r8J^`i4swX+Im{7W;3zM0jN_c(BrkD_)4a?XUg1?<<8|KPEN^m-w|JX(c$fEh zpAR_ChkV4xe8Q((;4?nwBA2+#7ktTAe9bp}%XfUw5B$ha{LC->%5VJ6AN^jASA+S;$H@vXg_HES0~*qZ#x$WR z&1g;wTGEQvw4p8SXio<^(uvO8N*B7)jqdcIC%x!RANtad{tRFsgBZ*ZhBA!dj9?_A z7|j^QGLG@w#_det4kj{*$xPu+rZSDYn9dAlGK;&J%{|=9eavAl^SGY}n9l+hvWN#+ z%o3KejE7jx3Rbd;)jZ4^9$_tyvX1p^U?ZE@%oZMFE042{?d;$QcCw4z?BPkC;%WA> zkNq6r8J^`i4swX+Im{7W;3zM0jN_c(BrkD_)4a?XUg1?<<8|KPEN^m-w|JX(c$fEh zpAR_ChkV4xe8Q((;4?nwBA2+#7ktTAe9bp}%XfUw5B$ha{LC->%5VJ6AN^jASA+S;$H@vXg_Hx3s}e^9%L~~ zSjsXUVmT{V$tqU!Fl%^(wLHo?*0X_)Y+^H8c#N$)&NjBQgD2R@E_SnrCwYpe*~>om zbAV@fmghLgA)eP^DMC?hp%}#}K}kwcnlhB7 z9ObD%MJiF5DpaK!)u};EYEhdy)TJKvX+T37(U>MQr5Vj>K}%ZEnl`kh9qs8rM>^4& zTj@eqy3w5;^rRQP=|f-o(VqbfWDtWH!cc}WoDqy<6r&l#SjI7)+qj(x+`&X9F_|gc z$yBCs7t@)+OlEO6v$={?qQ#{RH_OYJ>Jj1g*$3YJ9Jcl{L3moM| zj&Yn5oa7}=ahjJo!z;YXYrM`IoaIf<@fL6M4)5|F@ACoY`H+wJm{0hW3w*}sT;vj$ z`GPO`im&;GZ~2bz`GFt#iJ$p}U-^yS`GY^X!d1fHk0Sv$k&r|rCJ9MNMsiY+l2oK7 z4QWZo&7>y-8OcOuvXGT*WG4qX$whARke7VqrvL>hL}7|hlv^l9aY|5Y7O;>-Jjh~}u#{yy#Bx@!l2xqcVb<^nYk8D) ztY-ro*~DhH@EBWpoNa7p2T!n*UF>ELPx2H`vzLAB=K#;}EYER}Lp;x6j_?9Ud68or z=L9EtiBp{BWzO&luksqN^9E;mlXJYq+q}cOyvO@|zP^DMC?hp%}#}K}kwcnlhB79ObD% zMJiF5DpaK!)u};EYEhdy)TJKvX+T37(U>MQr5Vj>K}%ZEnl`kh9qs8rM>^4&Tj@eq zy3w5;^rRQP=|f-o(VqbfWDtWH!cc}WoDqy<6r&l#SjI7)+qj(x+`&X9F_|gc$yBCs z7t@)+OlEO6v$={?qQ#{RH_OYJ>Jj1g*$3YJ9Jcl{L3moM|j&Yn5 zoa7}=ahjJo!z;YXYrM`IoaIf<@fL6M4)5|F@ACoY`H+wJm{0hW3w*}sT;vj$`GPO` zim&;GZ~2bz`GFt#iJ$p}U-^yS`GY^X!d1c_{c$AVCK8f}#3Ugp$w*ELQj&_)q#-To zxS8~1AS0Q`Oct_|jqKzgC%MQ?9`cfp{1l)dg(yrBigF9ZC{77VQi{@)p)BPnPX#Jc ziON)=D%Ge?4Qf)0+SH*g^{7t+8q$cyG@&WYXif`S(u&r!p)KubPX{{EiO$?g7rN4o z?)0E1z35FJ`qGd73}7IG7|alcGK}GjU?ig$%^1cqj`7^a?M&bfCNhc1OyN$ZGL5^K z&J1QUi@TZ4J>1KE%waC`xSt1@&jJ>*hzD8B5|*-zhgi-ER~yv!M1;Z84CZ*q>ec$;^4m-l#|4>-?hfil%qTqs7NI$ zQ-!KjqdGOHNiAwqhq~0GJ`HF{BO23$rZl5DEoezATGNKMw4*&8=tw6zb1PlwN;kUG zgP!!FH+|?!Kl(F(fed0WLm0|1hBJbZjAArn7|S@ua~roafjgMUBqlS3JDJKf?qWJK zn8_^eW;XY5FZVHrxy<8!9$-ETSjZwCWHC!v$}%2eIV)JnDpvC_Yj}jUJjy!Ovw@9l zVl!KKjIBJ*Hny{aC)mj@cC&{kd5Wjm%RcsVfMHNAm8eV= zs#1;W)SxD{s7)Q}QjhvHpdpQDOcR>YjOMhUC9P;p8`{#2_H>{lo#@Q1bfGKV=uQuM z(u>~op)dXD&j1E8h`|hDD8m@e2u3oB(Trg%;~39v+|C5C9jz zv$&ht+{3-x#~kJ|kNbIm`7B@|i+GU5EMY0jc!=e!U?rsZeQHnNG$ zY~eAs@;KYr&JLbnC%f3q9-ibWo@Oum*v|o;;aQ&JAcuIK!yMrSj`AYMIL--9@)D;w z&C8tO6<*~vUgr(Y@+Rkai??})cX^NZ`GE6$$VYt4Cw$5UKI3yPa*4})!Iyl+*L=gb ze8>0vz>oaI&-}u#{KoJ6!Jk~=Dv`v-KMA;rgd`#{Nk~dEl9Pgzq#`wGNJ~0yCOsL* zNG39qg{)*FJ2}WnE^?EHyyPQ41t>@%3R8rl+(I#mQ-YF|qBLbFOF7C@fr?b3GF7Nb zHL6pCn$)5;b*M`{>eGORG@>z0Xi77h(}I??qBU)3OFP=rfsS;dGq=)(u5_b2J?Kd< zdeeu#^rJrm7|0+7GlZcGV>lxi$tXrMhOvxeJhyQ>6S#wkOky%qxRa?&<1VH%gPF|Y zZf0{2_i`U|n9Drw=KVu zbB0%VmDhNkH#p0ioZ~It<{jSUJ>KU7&hsH3@iCw9DHr&R&$-AYF7pLn@)ck64d3z| z-}3`M@)JMv3%~Lkzw-xwa)qlzk{JIa;3g81h{PlzDalAq3R04a)TALT>A0EnWFRA% z$V?Wpl8x--ASb!VO&;=+kNgy%AcZJQ5sGpP#VAe*N>Yl_l%Xu;C{G0{Qi;k`p(@p= zP7P{Oi`vwoF7>ES0~*qZ#x$WR&1g;wTGEQvw4p8SXio<^(uvO8N*B7)jqdcIC%x!R zANtad{tRFsgBZ*ZhBA!dj9?_A7|j^QGLG@w#_det4kj{*$xPu+rZSDYn9dAlGK;&J z%{|=9eavAl^SGY}n9l+hvWN#+%o3KejE7jx3Rbd;)jZ4^9$_tyvX1p^U?ZE@%oZMF zE042{?d;$QcCw4z?BPkC;%WA>kNq6r8J^`i4swX+Im{7W;3zM0jN_c(BrkD_)4WW$ zU7tpeTtA(TTz^@Ogw;t&MsiY+l2oK74QWZo&7>y-8OcOuvXGT*WG4qX$whARke7Vq zrvL>hL}7|hlv^l9aY|5Y7O;>- zJjh~}u#{yy#Bx@!l2xqcVb<^nYk8D)tY-ro*~DhH@EBWpoNa7p2T!n*UF>ELPx2H` zvzLAB=K#;}EYER}Lp;x6j_?9Ud68or=L9EtiBp{BWzO&luksqN^9E;mlXJYq+q}cO zyvO@|z~-sYydx(s48C$v{Rjk(n%HB^%kvK~8d!n>^$tANeUj zK?+frA{6Boicy>rl%y1;DMMMxQJxA^q!N{>LRG3!of_1n7PYBEUFuPv1~jA*jcGzt zn$esVw4@cSX+vAu(Vh-;q!XRFl`eFp8{O$aPkPatKJ=v@{TaYO1~Hf+3}qO@8NoP9ZX~rlbOPuOl2B(F`XIAWEOWbn|rvI`?+u6Yr>|__a*~61O#nbF% zANx7LGd#<49OMwsbC@H%z)@c07{@umNnYXEIvZ}B$o@GkH1 zJ|A$N5BZ3X`Giloz-N5UMJ{ofFZhzL_?mC{mhbqUANY}<_?ch$mEZWCKlqa?TqTmg z_$L83k&r|rCJ9MNMsiY+l2oK74QWZo&7>y-8OcOuvXGT*WG4qX$whARke7VqrvL>h zL}7|hlv^l9aY|5Y7O;>-Jjh~} zu#{yy#Bx@!l2xqcVb<^nYk8D)tY-ro*~DhH@EBWpoNa7p2T!n*UF>ELPx2H`vzLAB z=K#;}EYER}Lp;x6j_?9Ud68or=L9EtiBp{BWzO&luksqN^9E;mlXJYq+q}cOyvO@| zz>lc`MOE~YbsnatvDW^)hsavyV;%RKJq0p_!Sg)HJh7PEw< zEaM@Tvx1eZVl@x5hDTV-qpV{+8`#JuHnWAt*vjK>%|f}QMQH+y)Jr+AvZ>|;L% zc!p6<_lW-|`*b^8-Kf6F>6{zw#Tu^9O%&g{wpo8vi8V zCK8f}#3Ugp$w*ELQj&_)q#-ToxS8~1AS0Q`Oct_|jqKzgC%MQ?9`cfp{1l)dg(yrB zigF9ZC{77VQi{@)p)BPnPX#JciON)=D%Ge?4Qf)0+SH*g^{7t+8q$cyG@&WYXif`S z(u&r!p)KubPX{{EiO$?g7rN4o?)0E1z35FJ`qGd73}7IG7|alcGK}GjU?ig$%^1cq zj`7^a?M&bfCNhc1OyN$ZGL5^K&J1QUi@TZ4J>1KE%waC`xSt1@&jJ>*hzD8B5|*-z zhgi-ER~yv!M1;Z84CZ*q>ec$;^4m-l#|4>-?< ze8k6m!lzu|Gd|}cm$=Lqe92dQ%{P3@cYMze{K!xI%rE@PZ~V?5{K*xr5=mtIlYpB@ zNFoxGgrp=RIVnghfil%qTqs7NI$Q-!KjqdGOHNiAwqhq~0GJ`HF{BO23$rZl5DEoezA zTGNKMw4*&8=tw6zb1PlwN;kUGgP!!FH+|?!Kl(F(fed0WLm0|1hBJbZjAArn7|S@u za~roafjgMUBqlS3JDJKf?qWJKn8_^eW;XY5FZVHrxy<8!9$-ETSjZwCWHC!v$}%2e zIV)JnDpvC_Yj}jUJjy!Ovw@9lVl!KKjIBJ*Hny{aC)mj@cC&{kd5Wjm%RcsVfMHNAm8eV=s#1;W)SxD{s7)Q}QjhvHpdpQDOcR>YjOMhUC9P;p z8`{#2_H>{lo#@Q1bfGKV=uQuM(u>~op)dXD&j1E8h`|hDD8m@e2u3oB(Trg%;~39v z+|C5C9jzv$&ht+{3-x#~kJ|kNbIm`7B@|i+GU5EMY0jc!=e! zU?rsZeQHnNG$Y~eAs@;KYr&JLbnC%f3q9-ibWo@Oum*v|o;;aQ&J zAcuIK!yMrSj`AYMIL--9@)D;w&C8tO6<*~vUgr(Y@+Rkai??})cX^NZ`GE6$$VYt4 zCw$5UKI3yPa*4})!Iyl+*L=gbe8>0vz>oaI&-}u#{KoJ6!Jk~=Dv>0{KMA;rgd`#{ zNk~dEl9Pgzq#`wGNJ~0yCOsL*NG39qg{)*FJ2}WnE^?EHyyPQ41t>@%3R8rl+(I#m zQ-YF|qBLbFOF7C@fr?b3GF7NbHL6pCn$)5;b*M`{>eGORG@>z0Xi77h(}I??qBU)3 zOFP=rfsS;dGq=)(u5_b2J?Kdlxi$tXrMhOvxeJhyQ> z6S#wkOky%qxRa?&<1VH%gPF|YZf0{2_i`U|n9Drw=KVu6MqX+Y2ghwp$BgSgyyu9KaUnl}h(3*T3I@0VOI_s9dH*`3ik1mZ(y?f7ueH ztMo11yJCeZmHYQ8UvkK(f&aN&EBCKlrd+wo6-rd8*spAf^1aJcE>XF3`N}0KmM&eX zcbSS6`c)`b?mwSvrLz48lrLR*K#4MC%c*O*0cA_{u26PBiHc=qIG}%-{=G|A4!K4< z>Z)6Kl$MmG>s@7UJY?~7!Q?{UYxYwvnUc>UjN zr%2bXbCtG9xE|c?dOq#1gfinYX7D`6^<^QK@I37QXr~)fwwo5+Hc_Zw7OwC1Yxjfg zJc}Y*ZL{fyJd0f4F65bqkaleU(c}A%=-a>Nu>Kr@%uIO*|okOF>3rcc_+N~U+B9G_GjWql54F? od#x|+yK8NUPcP}e+8-f;l1h;@tgvw&|MU_sb=tOV)v3(?1Imz~{Qv*} literal 0 HcmV?d00001 diff --git a/scripts/dataset_multimodal/data-00022-of-00032.arrow b/scripts/dataset_multimodal/data-00022-of-00032.arrow new file mode 100644 index 0000000000000000000000000000000000000000..4cc57f070cd37876b7b8805f4f61ce3a05325a8e GIT binary patch literal 74290 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 literal 0 HcmV?d00001 diff --git a/scripts/dataset_multimodal/data-00023-of-00032.arrow b/scripts/dataset_multimodal/data-00023-of-00032.arrow new file mode 100644 index 0000000000000000000000000000000000000000..2d322d71e2c0b60711feb1c10ea7cf254c33a091 GIT binary patch literal 50146 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 literal 0 HcmV?d00001 diff --git a/scripts/dataset_multimodal/data-00025-of-00032.arrow b/scripts/dataset_multimodal/data-00025-of-00032.arrow new file mode 100644 index 0000000000000000000000000000000000000000..8a7b43185527ff6136937ccf52ad6eeb9bc5f54c GIT binary patch literal 25994 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 LmnPYNgXO;fQItFL literal 0 HcmV?d00001 diff --git a/scripts/dataset_multimodal/data-00026-of-00032.arrow b/scripts/dataset_multimodal/data-00026-of-00032.arrow new file mode 100644 index 0000000000000000000000000000000000000000..f49b0f7cb2d4e92f23cba4f562e4c9c88dc8f589 GIT binary patch literal 74290 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 R3;3tEc&XpEZL3Zd{s-ZRedquH literal 0 HcmV?d00001 diff --git a/scripts/dataset_multimodal/data-00027-of-00032.arrow b/scripts/dataset_multimodal/data-00027-of-00032.arrow new file mode 100644 index 0000000000000000000000000000000000000000..f4a70e1b31aa93c66bd8dc8a7f41f1943fda4f9b GIT binary patch literal 74290 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 literal 0 HcmV?d00001 diff --git a/scripts/dataset_multimodal/data-00028-of-00032.arrow b/scripts/dataset_multimodal/data-00028-of-00032.arrow new file mode 100644 index 0000000000000000000000000000000000000000..6010eadd58fedacd48656bc7ddad2789759328ca GIT binary patch literal 74290 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 literal 0 HcmV?d00001 diff --git a/scripts/dataset_multimodal/data-00029-of-00032.arrow b/scripts/dataset_multimodal/data-00029-of-00032.arrow new file mode 100644 index 0000000000000000000000000000000000000000..a4926bf93cfa467f1bd4304dc6923af54a7c4f60 GIT binary patch literal 50146 zcmeI*3D`|#zc}Fannh7j<|#tvnG7LQWF|6CuPO78N-|F&LzJ0BC}UEQl%$kMX)Yy2 zvr;Lg_}|aFyI5dhTSZ+*g+0nyY8f;x+wpC9VX zM<_cqaq#fO0o@Zj_e&hmYgli!N71Ls9Ep`n@pttfOj;&NsHse5aY$}^LC-@w!g|7X zgcuAOIJD2OJ_84I?$aY_9StmBCsyWf*HJ!cnJ6KjI)+`aj=zdezpmX9`>B1U<(B^w zb?t>T99oCiH{t&aI*bf*qe3-gZCH)s-mqmZ3iP9!*UFP%spOCaI$>kMIswcTW z(pfg05+NJh67u=SYR@&0KcSDqEn{@W`3%aKRCAOvRZ{=Hvm-V?nF&e zk5uuGTh@O(`u`ttKnAU{QPyX zr%C^YcwZRjFmZXNq*?#?=f8V?$ioY7f3E+}&y$xum^St(xqV?@yp(tRQ(8h-Ulm11 zY|yU3j!#ySlPr7_R`_rfjq4djr;A5XVF#;e9iym%>6bDf1n`3L+k5>{?qvQb>iK#U z?YuaO)_$1~U7~FBoKe)y^4)4j(dax;G~D_RnEt^fQM98}6pisXtUm|Y&fkZ&WF`Cg zY2k607oK0i8D*Zajz$uF=wFo2ZJFdU`OZHMWkbE!TK<#VQPe}5irSXC?x))ME=nIo zhwYd>wJXFS%&%z2+GzRkxRh8WT4t}uXUz}G6*Vt;dOwNtk(d|D72DqK+7^~ep`Ejp z2?vJI*08=)SH{+{@kH$YW7A73ALb3wmYmwP+x?L9>n`MetNrE3W#{WuS8^MND-+6P zv!1YASmrJFUDbE$@>m-~`_rp)hH}Ym3d4|IV=^oh4jUS)?KKJ7BiN`0tfBk(9{5$dS(K{MGJvNpRKI?Y$p*5$^y;XdU zy|`5r_3vTb#ty<~;`*=qEId9oKhF?j2F43EO^KqhJ|Cy`Sv-r+%;B^717%`kF%xGS zf3bqy^`q#~YEkrVmFykC3)RleO3>j<+m7TN&b9Y z)93imt}ri*!-Vmi@L799Q)3s}5XLup`CK3BI=(lGzV-Y-=~!FB`i~k@2_8H zIjemk9-%!2&yQz>n1*f4tkeE3rb91Dh!$6jjj43DO|wQNM90!4MDN=6FzyuU4C6S* zZFd-}deJf_{bgT+yTp?_acKEyxF|HSxcxDVqv;XaHNg*w7E zhB2k&?FwTx<&|6N{#3bDAP);A$$HRVy5 zzfbOcSVH-NvDhY$m+dq?wBzsMm6U_>F7)l;nX%<8-$7|+#?LB=3M z4u_mej>`$_y2A1yF8%8!{9}I%<5SygYXSRNXm@vg6WVexPeOF6NUUwkzmIKO82bzB zZ?(f%TK3p_LkvUQLd=>P_iTA(LQ=bO%uo17{4$RGBhN3~=aSw=`)pI{nz4R4 zUCwzB`%cK$(9Z?c9okiGWo-Wl+to)rHgkvRt;Ogv(>|xJ=gIqU$iaKe8!2x>`HJ;p z`(wzT(C!eUb+#*v-CkJ!G20iGKV@t#)DikOYd)FAVsU1-WhtyVV=yf@KEZ607@F+Zu8v^m|xeC>z=oaxlat)F1jZ zIbT9f)-M!`%fUyYXtL!({2x+BCi6lY!|Tiy|3+rs~rh9D<{W4EpB$q$cCAN-`Gu20lMbm_&eL3VwI4+FX7%TtHHL?9W z^lzy5J@E;zdu>Up@4~c@KOqmdpN_?KX^B|f1srEb**B_|jiMFHV*Ocjcx;=`XkYSc zM+bFOS3Vp|!umu0HL)!-#WD0#$c@m?8LTsGN66tJb#0GWhxs9{7se*UKfHz~$G1>X z$3F3!slPr`CY%FFIzH*!5Ti`?yYBk2^x0VMhS$E3FR$3oLR(I#E968Q{gT{&nhu6x`kIApG$;aan&Ah%;7$i`&vG&ygt@v7an^;yE@vJmx)8@_u=hg%ZK+zNqwLl zvu{dBI+lm|;T+3hebHLZB=2v{Z1aD1j0)!(R;VMC?I`x4EuF-$llB%+?$2#$Z+pV) zMyUJ1wXs;AP)EqSurFrO&hVb?uW~%(b10Xb&tYBRdB~mjmM0`Vu6Mrwj%80ssx#zF zwT7`+^|Wm#)cWiSU4E;L6KKYgBRn&D%yh0npvFgw5KbkEeYTq>0)`Rw) zu-&!AKD1@SwuFDY285XXXYW}<%r;o(p~|uM9dp{o;t;kaIakB`l0UCI-S&i}@p+ET;n?|czS!|P)ERQ;32hH`g?&8qQ&?}|&aoJ!tf+s^_iZ>XrqF#E;{Mmh zAVJ?q_xSm9`5Zrg9y=by&!2nGWS{se4%2@*{jZk&@0u20=l@*HGO5>Q2(c+V`J~3{&1cudmrcPl>N=)u!`Y&mkRao zYLbvtSA$Kl`%q`nGTWl)<`oH1f^%NCwu-fBPm5T6VVTrh6Oy(!taFa`gmZyme82wr zc7Nm?!FuZ-kv57}ACH}rS*P6blFt2DHf&FI=WD{bnXtZH&WD8dgvVh$lN(0SmmY_8 zCAaZI=RLwYay$1DmTi>JIZlJmYX`@cn`hn0F}N_!;k<8%TZq~1+O=Q*CC9JeFV3rp z`^Xc{k(nPq-w;3F5K;yDn{ zfp`wYb0D4r@f?WfKs*QHIS|i*cn-vKAf5y99Ej&YJO|F5`>Wp=2GAKS$G?{z{(dO_z4Sl+<|_WZ^#A(z(&O*FPVh+T=m;S%& zd+Gldb12^C_^~gZ1MwV)=RiCM;yLhtCkOts@1=+7;WyvI@8qP!pV>zKlqUR)Pvob5 z!lh^;Kd+PY8`t5x^Wk^6!tW^giJ-{O>_mS0Kk4`4FLUqbfg+a>h_d3c5K;I!AeU)~ z{8UfmGA)ryqeS8I4Swz?a=DGjr_}QVT6fR#7 zmBA$wB0t>}m8SwOI}laEB^#nDxO7ESm1kxQo$@VJzbq&jcniiOEc1Dt9xD z>CE6BW-^P}%;8?KJrt5t0+hzuBI?WD9SYyqc|lfNhwNGhO(5y zslv5Xr5e?#!FANc<$j{tTu&Wb9xbXzeHw5B4Qa%U_^GwX&#Xl*=M*)gIW2H`!l)Ik zafzO&4Q;uZcC@Dh9qB}8y3mzwbf*W2^rRQP=|f*`p&$Jjz(58um>~>h7{j@h5!}Y@ z+`&lh#N`2_yBN(F#xjoaOkg6Dn9LNWayQeM&J6BhCbO8$9PVW<^SF=una=_ivWUej zVJXX4&I7FAK~}Pghgi)T*77iqu#WX?U?ZE@%%g1KF}CtJPw*t$*v?bz;AwX949~KQ z=h)5j?BNAoWG^rAGW&Ri{T$#`4)PkWbBH&1lec)AcX*fgc%KhA%!ho$5kBT9pYSQi zIL>E$&KG>iSA5MkoZwr&<0Rkn13z+#pZJ;6{KBuC;WvKgEawO>{0XEWC8Yl_l%Xu;C{G0{Qi;k`;aaLvjq23kI%-mj+FVZ^>QayTG~fmr(uf;rOcR>YjOMhU zC9P=9O|+pcH`9*xbf6=h=u8*7(v9x)Ad#N*qBni$%PsVyKLZ%ZAOEMhTB zSjsY%^8hP&kd>_BAy%`7wLHuttYbYJ*vKX}^C(+*jIBJ*6FkW_w(}G_c$%F&!?Wz- zId=0rdw78t*~?43%syUWKL>b~gS^J;9O4b$6<_lWC-|1{ILY_?z>l2bCw}HMzwj$(_>JE=%Q?cE{sdBxl2oK74QWY7 zdM+XZ8M&BC$V6r?E6GN7a*&f;v8gK&*X~c~*rU^}HMsr%w zl2)|lCfd-Jn`uXTI?$0$bfybk=|*>YkVsE@(VIT>$Vyi65UW|kS{~*R*0G)qY-AIgd6X?Y##SEZ37%vd+j)u|Jk3s?;aPU^ z9J_g*J-on+?Byk1W*@Jxp98$gL0;o^4)F$W@)mFN4)5|F@ACnN`H+t|!p9ut6F%h_ z$N7xU`GPO`im&;G6MV~eoaB3c;73mJ6F+mBU-*?X{KoH`i<68OX@RTtX%?6RvX^uAO^1;dgkm5`KF(T;n(!*~vjpa*>-n^4&E_9_E-RVIhJ?TYn`p}nK=tqAB zFpxnEW(Y$W#&B+B1h;WJcQBGW8O2?UW(;E)$9N_%kx5Ku3RAh8X-sDZ_b`)L%w`Vv zGM9PW$NkJ_0Sj5gVwSL!Wi00bR`4JzS;a%FW({k3m`7O0dN#0;O>E{-w(uBRd7LMB zl5K3~DR%HQJ9&m@*~N40=6Uw;0xz-;bCgf`lw%y{Gd|}FzT_*u<{M7%E#GmH@A-irImJ)>%xQk%SI+PozjKyz zM5*onq#z}!NKLp7Zd%fjo{PvpMlL2?+cguJxs=PeoGfG|T#xlivXPw}gzxC(A~$)+ zOFr^bfU77-xCZIfgli-hA^c|eH58*bB`8TLN>hfil%qTqs7NI$Q-y1(N;SfDkZW)q zHK|2yuBQ%lsYiVpa03l##Emqj2~BB6b6U`nRi_wf>EaMo@1ST?x z$xLA?cQcLY%-|koGK<;F;a=u4kNdcv`7B@|i&)GOma>fHJirPbWF@P3h}EoNEf4bu z>sZeQHnNG$JjxaxV=IsI1W&S!?L5T}o@OV{@GQG{j@>-Z9$w%@_VN-hvyWHU&jDWL zAg}Q{hj@cGd5gDshj)38_xXUse8@)};bV^S37>L|<9x>Fe8HD|#n*hp3BKh!PVzlJ z@FS=AiJv*mFZ{|Ge&ct}a*imC{ht)1Bo(PiLt4_2o{PvpMlR+OGLe}}xs1yR*Fn$9 z6hfil%qTqs7NI$6R!1e zEmf&Tb!u=OHK|2y!nL>SP?vhtrvW$6kVf1{W17&EW;CY-Eont-ZlVosxtVZn==OA= zBc13>7rN4o?(`s$p7f$Oedxq`mg4?*AI~d8GjN&dvGlsE@ zV>}a>$Rs8+g{j=lG^R6ydzi^AW;2I-nae!x<9_C|fQ2k#F-us=GM4iID|nEVtl}Y7 zvxc=i%pAEJkAq5$u_q06gzmDojk*{?BY3g^E`Waffw1!OT5fJ zUSU56c$I^^#_Js74c_D}-sTUnMs{+LlU(E`4|&N)ehP3E1u4YU6s8D8xrSmCrvxP_MQO@VmU5J*0u`x5 zWvXy3RjEdGYH%GjsYPwBrw(i#UhZlH}y}ZQB z?Bf;obAVR~xAVj3(fNE6GN7a*&f; zv8gK&*X~c~*rU^}HMsr%wl2)|lCfd-Jn`uXTI?$0$bfybk=|*>YkVsE@ z(VIT>$Vyi65UW|kS{~*R*0G)qY-AIg zd6X?Y##SEZ37%vd+j)u|Jk3s?;aPU^9J_g*J-on+?Byk1W*@Jxp98$gL0;o^4)F$W z@)mFN4)5|F@ACnN`H+t|!p9ut6F%h_$N7xU`GPO`im&;G6MV~eoaB3c;73mJ6F+mB zU-*?X{KoH`Pap*;NkwYXkd}0$=OQwYk&C&6Ol0O#F5_~tkd-UAl5Aur2RX?_ zZt{?qeB`G9S5c5cTuot$P?T#ZMsZ3|l2VkW3}q=tc`8tmN>ru_*HV>gRHp{lQIlHK z=6dQ-mwMEv0XNW)M%+kan$VPHG^YhEX+>*pq77}inRc|N10Cr^XS&dpZgi&yiS(ow zz3D?=ZlNFj8NfgWF_<9?Wf;S`l@Z*=?cBjg?qn2qF`6-qWgO#~z(gi7nJG-=Zl*Dv z8QjB6W-*&N+{;|%aUb_Hp9L&r5sO*EQkJot2Ux*_tYj4rv6?lka}gQH$i-YjCNgs=mvK2+$jTL5Nj9>RgPi0d zH+jfQKJrt5t0+hzuBI?WD9SYyqc|lfNhwNGhO(5SJQb)&B`Q;eYpF^#s#AmOs7Wnq zb3JvaOFin-fE#E?BW|QIO=wCpn$v=ow4yaP(T29%Ogq}sfsS;dGhOIPH@ee~U?P*4%oL__H`AET z4DMkjvzW~s?qx3XxR3jp&jJ>*h{Y^nDa%;S1FYadRYn@Fd&V&Qt8*X?F4q&$5f>*v<3o;RRk~FE8;j`*?-@9N<+B@*1ymh&OnX zw|JX(c$fEhpAR_9hkV2lKISN&@F~YQ&S!ki7ktTAe9bqU;9I`qB;WG`KXQtn_?grE z!mpg+H-6_V=Lm256G%ZyQjwZ8q$M5cxrhv8^$tANeW3RTQKUS5ufG6y+L!nJ#pt8{O$aB0cFv zZ~D-eTj)oB1~8C83}y&J8OCsKWdyfzJ9jXWI~m1YjAjgD8OL}gFp)`2W(rfen`umE z2KO+NS^w=P7pZG&^~QXW7Mb?B;p)@B%NgmzQ{%eZ0bc4)7`md5zaO#2dWH zTfEIXyvuvM&j%dlLq6gNA9IvX_>^ND=QBR%3%=wlzUCWF@GakQlJEI}A34QO{LE>7 z;aAS^8^3dwb401^|D+%#sYp#4(vpt!Tto&kaxs^XiOgKeWn4}cvT_Ail8x--ASb!V zO&;=+kNgziDhg7Ft0_zoigFFbC{77VQi{@)p)BPnPX#JciON*rTB=fw>eS#mYEp~Z zTu&Y9QjhvH;07Afh#P546PnVD=Cq(Ct!T|nw4p6G(~kCZpd+2=Oc%P+jqdayk)HIT zH+|^KE%c*50~p941~Y`A3}ZOAGJ@NXJjph;^AtOHnw>nuv+UwIcJn-Yc!3w$%S*h>K3-uz2Y8i(yvFMs;tk&9 zE#BrG-sL^s=K~J&As=ysk2%UGe9AG7^BJG>1z++NU-Jzo_?GWD$@l!gkDTHse&#g4 z@GEEdjo&%TIil3|e^QW=RHP;iX-P+VE+PXNxtL4HL}o7KGA<_zS-FBM$wqc^kds{G zCJ%YZM}7)$6$L58)fA=(MY)Dz6sH6wDMe|@P?mC(rveqJL}jXQEmf&Tb!u=OHK|2y zuBQ%lsYiVpa03l##Emqj2~BB6b6U`nR8PDXJTqZz|k#xb4=Ok@(1nZi`=W*XC( z!9C1m7PFbdz074E_i;b-S-?UTv6v++Wf{wPfE7H*N>=d@t69TZ9_A6&v7QZVWD}ct zlr22QRvzaGo@5)_d5Rr8%}$=-S$6RpyLp~Hyugd>VLM^5n*KXaO2 z_?0vK#_ycv98ntkKPgB_DpHe%w4@_F7mVWih>m4Y6???qFh5Uic^A;l%h0cC`&oYQ-O+9qB2#uma0^vIyJbCn$)5; z*HeeO)T2HPxPgW=;zkTGEl8i^xDmF6I(4k(o=mjLXSFR<7VmvXPw}Q3Jl%*WysX#?4QJE@SOI4~-of=$6O=?k_ z>#0Ls>QSEt+(1JbaU+dsLQ|U2oEEgC6|K36Hnint+R>g4bfgoV=|We!(VZS7(vx2F zrVo9&g?{vB00SAsV1_W1VGQS1MsORqa|a{2lTqBoXvQ#>ag1jI6Pd(hrZAPenZ|Tx za1S$?#cbwqFLRm4ecaD{7O;>-EM^HyS;lf6UlM38dQTD_=1gAj{PZvcA8r>;zRB}&o-^D^^&Z$iu~gR~!xH;<9x!nD&{D&O zl^Qm1NcY~u`V8wjpw!UrL;4IFHndcq{#|<|4lPx>Yq_pH%a!g~qHD#T6-tyZ+byv~ zx60)!mME84sYkhrU8|I-T)9lizJq%G*J>?OrgXP%iDfF4=w7x*w-V*6sJd&F3Z+X_ z?om0hY!6Snb*~(14efQA_@vW{nLW-@A(cX%ESak1dY zZOe^`Et@*DFB{4I74G{8vb$)VW!79!XOZ*Eg*x*Q$_`B&JUnqg_r%Wq5(o4e)_bT) z(WlBBiIq$7cl94kS|&=UsZ8dic*WX&VO+v?gqRH)IJD2OJ_84I?$aY_9StmBCsyWf z*HJ#!4+;6yG3Gl5#fEs;oM>FyEALX^=8)lW4C^1@9wUuuCD&|=5*EB-8GswZ_=i86kRb@N*qNQ zqA;b7(niUnWKl}*Oo@`3kIbd?GwHRTk@ZnDJy8^u;*j_4uC9%umY1(wkts`N^Es|9 zlOziB$?4U%bC0;eQ8ZS%QSoV$h3#f1DPan)y@tf~4ewV(^sQPo+oES$R&y=S%#bm4D)DnkZ3qc`|5+gu3T5AL6YAnh;GP#`TiLac--;Wd8l-{wbEi(fM5+H1o4g!zPgYyW9|!hAyhQja9$jDJm-Psm^Y zpVlYLC*(i0{om(Lm`})m>Yvsp%;!qT_K)_uw&2=)LjLUkv_4@z#A=udU0c60e)j6m z(B9X#b6B`I{nb_f`0@XGeTc*Br++U0pXU?Oo=6e@E}?$mT+GNxKS~Mcs!OBjlpWeL z(C3ql+(Kr)4I5k$MWee%(Qn0~sGtw4$?c=4yyY3`7aH)o{M&l`TfPgqqp16vQM4;v z6fOTcQFMd6&2EXJw$gX08AT&=M$u5)KW_O)H$>5nl2J6u`>_3+$$srM)FlfyU0W93 zhjn2-D}Tzf+cp{s^uhlk|E)(iOHYVR;{c^Qks3nj?OHyQ*7AmsmY#$P+#o zLS4i5E@q40#+vWqUr$?JO8&5JkhgHFT3r8 zbRo^VUOOxA;*Ifj4E0Z?%&GDv)G4GbI6I1dROh{pNjT1p)i!o+VkNXo zSIf68kWRe!ulhu+L$e>uq~b-S|5G(pGz0c76V^ zA0dA)`ET}G(E3K|Wp|<^gmdqInkM@n-$vMn*mnM2JIC5B)^4%$=kLWptleVmmhkUq z>~r+*#X_vzV(k|D9Q}JS5No$syCwYl<5D#`UHsp!4O6?w`@%I}wX=z$IqvNNUv{Yt^G-@SM{9N z%IcNS7NMUYTyOtJZ5FPlXE(B)0r7n&Deuq@4HHGZT>D?tUaPGS*WTmGDc^j!UcXq# z{$ID9(BJTxdM1=p)UkQU`mj9ogM>Vx&mvs=caUzg^`Rdkq-*O~C0x@>77d*e-|rLh zBuc`}**idyPY$!ng|@pVW@_m<-t`hG&5(62Cs)+-W4pH_&XosLWBOUhU`ioUOs zD4N+%zfR%!`b{YR@7t&3CH+}~v9E1b9~$2$5&B&!_tzH62yNL&U&r8U{WN8cB#Oqj z(zl^b3HuwCT~UuJmX*{O8u~NBacEe=@z?iL%|3qOHPq?+o$>9`)%Lp8i7#WG<(Z0T z4Eq}PZ&6mHq{A1~|e;_?W+ zadfS1&)fGV+AJK`-z-ar{}2O<^^0{DpW!%#{Nb}DT{=fFt{d4>MA@B9)OG12y;}@szE40n^ zb*iPFVSe;C@%1<^P3<4z`|jQ;o9Jr2|7a9N59=E*V4GX^#+MWJC)DdR<({@bVLnCa z_`c1AI)*l0rj5dR8v1|}&fz)QHiLFLs{Y|Ph0o&-7GmudYq!|v=--QhSiAlGb~6MN9o2xHjO~T-sqkHd zgfX@qUE{~HYFVD}cL?F{-&f^{qJ_q>!Z>6Z<>3u(UeeT&`dQowxpoBr^34`KO2`+9Cy{Pqf~M=#@-*QX6*YYBBe*(!?i){ft| zEyk`xoo+B_mhRnu-(Csne<`C~ZMUDXxJt%E6WTPiPZ)Cx+iGB}H(`u6v_*;O@!Kn; zE_Fs5)0M7=IwrJ9*yk`7zp7CbO)~Bq-iLJwWyZ$wV&j;xaoku8#9|;81F;y0#Xu|u zVlfblf&YJFz~#-=>7T!sKHvQhVq$F&i-A}S#9|;81F;y0#Xu|uVlfblfmjU0Vjva+ zu^5QOKr9AgG4Q_;1F`R=$A6bO_PzA@zhQ`dFFpP~4zcg0$A51X@_Xt38=rBp zZN&a9jm1DL24XP~i-A}S#9|;81F;y0#Xu|uVlfblfmjU0Vjva+u^5QOKr9AgF%XM^ zSPaBsAQl6$7>Io@{lE9U^w>EQJ7;1s5Q~9W48&p}76Y*uh{ZrG24XSr|7Q&RN8d{i z%fmh2!+oZb;7|V|x1b7-6pGy9Dsl_3$Zf5z-s?KtcOcx;Fx+3vZLT7>_=?>6>gxUC z-QFwmn4id_ZX&n$in8K%R*_qTMIJR2d6Z4$)>)BTj74rY7P&Q8bQ`(w*qX@g$D+LC zBR>Twh}(5V9>WtAp(w>DP6S5%gAl*cX1BDX(_JPIoED4(bbx8t!ukw^DL z)o{zNs5&*MiQ9TbwW&j0>QSEt+(kp&rYma9-87*o&1g;wTH>~1QES?84{oIvwdFqA z(Vh-;q!XR#LRY#GM|XPAlV0@Ze)`ate)MMm0~y3%hA@<2Jiu@s3LY-a~M*~M;NVGn!R$E)n;00%k5VUBQ= zW4y+3UgrdF@Fs8ZHt+B*?{Sj%`G61kh>!V%PdUYDKI05$`J6BKlCL<&*PQ1YzU4c< z=LatEBR}yo7x{%>`HkQCgFm^%UtH!2;p9(5Vv>-QWF#jADM>|Y(vX&P+(3FVkdaK> zNM<~CEy_wZvU3wRa|=1Rm7Ls0E^?EHyyPQ41t>@%3R8rl6r(sLC`leQenwWv)U>QayTG~g~gN-%0fWA3I2O=(7RTF?@Ywu@TR zhI_adk9v&mqaE$(fJeGTo#;##y3&m}y3>Q6^rAQS(}%wFqdx-}$RGwYgrN-M0fzG+ z4>5v=d4xw9$tWIUG-DXcIL0%9$C=0^CNqVpJi#=kGlM62ikZyfX=XErXPC=8=Cgo> zEMhUw@*K~zgr&T|i!5U~D|m^OtYS55Sj)?-V?7(#$R;+kg{^F3J3H9PE_U+@d)Ui9 zUS&TAILILmbA+QD<28=+IwyF8H+hStZXi7w$Vet`Br{paN;a}{6E|}UIk=Ua+(s^PlZU+IBR>TwNFfSSgrXFqI3*}a zDN0j@vXrAd6{tuhDpQ5qxr3@y<4&qmgPPQ$Hg%{=J?hhdyJ$!w8gn;IXi77h(}I?? zqBU)}hkI$ueYB%J9q33WI@5)&bR&-L^q?ob=*|7~p)dXD&j1E8h`|hDD8qPw;XKGg zjNoA&;Za61ipLnu7{)S=@l4=xCNhc1OkpZdFpcTV;7OihCbM{&+05Y?<}#1@EMOsv zSj@9L$MY;GbfGKVh@(3_=t(bnb3c9POF#NEfPoBRFhdy1Fdkqy5AqNr zc$i0cl#z_$F-9|nv5aFp6L_47Oky%qn937OV>&Z!;xI=z$}wK!IInYpH+Yk`c$;^4m-jfy`+UHMe8k6m!l#_#G@o&XvwY4Me92dw z<7>|I4d3z|-}3_(_>rIZnT!0wul&aE{K21G;x8_9g(#`>pTr~~DalAq3c_=3QxTr~ zoQAZd;|9XLtTT|2@Vw+33HP(kLbxAxHp2G^!*g-NGjGH5y%U}#p40pAZ17x!=jG-h zFZsw%0mA*l3sION6r~u&DM3j}QJON8r5xp{Kt(E1nehDT@LcOVs7f{Nq&hXINw_C^ zZNjtJ>r#*Ugy)xsXQwwLJo~&c;ThyjXi77h(}I??qBU)}hkI#Dcph*&+S7rKbfPm| z=t?)@=uQuM(u>~QPapcykNyl`AcGjp5QZ|02N=$SJj4hd<`EucB%^qY(Trg%;~38b z9%mwxn9LNW@&wbE&J3R9DP}T@r5|;7;FS3l~tl%Y9 zvWnHLVJ$DSj`eI{Bb(UF7PhjD?d)JDyV%Vu>|rnac$NJe;2?)M%n^=qjMq5M>zv>X z-sCOb<{jSUJx=mIAMha`@iCw9DW^EiXPn_IpYsJ@@)hU!n)7_aw|vL<{J;f%t!aeTOlYxw6;zlx)h438p zY-HyqZYJC>KL@vxliSEeZt{?qe1!Y$C*0S+koVyk*hMHxF^W@yl9Zw}WhhHI%2R=g zRH8CfxSczwN;U4JIyIzg(}bopqd6^TNh?~@hI_b|w%kWM z+S7rKbfPm|=t?)@=uQuM(u>~QPapcykNyl`AcF|cMi|0ShVcNyd64joh7ml>BRtAT zM)4S<8N*n{F`fxL&O|0LnJG-=38pcf89d2T%w!f%Gn+X)!(8Sup9L&r5sP`2=Xjna zEae4WWEsm@!Aq=U6{}gpT3%)y>)F6YHnEv4Y-JnU*}+bBv71-e!(R6BD*HLWK@M@4 zBOK)zuW_8$Il&ve$y>b5JG{$#oaB8z;6py*V?N!=L^2%E6(vX=lOy5`9`$L!T{NT-jk%j9G^H8MX+cX`(V8~g z!@acSKHAZq4s@gwo#{eXx)DcrdeD-Eaq9B z<9U{_loxoBWh`d}FR_wUtY!^sd6{*rX9FAA#Addzm2GTi2RqrtZeC#zd)ddU?B@Un zImBU(aFk=b#&KTf1aI&rZ}B$o@GkFhlK1(55BZ3X`Gik7#c4j{3}^YAFZhzLILFtV z=NrD|JHF=!F7P8i@iQ0sgTGDX? z>B&GwGI1lB$wF4Lk)4~knOn%gt>ol3a*>-nDpQ5qxr3@y<4&qmgPPQ$Hg%{=J?hhdyJ$!w8gn;IXi77h(}I??qBU)} zhkI$ueYB%J9q33WI@5)&bR&-L^q?ob=*|7~p)dXD&j1E8h`|hDD8qPw;XKGgjNoA& z;Za61ipLnu7{)S=@l4=xCNhc1OkpZdFpcTV;7OihCbM{&+05Y?<}#1@EMOsvSj@9L z$MY;slx5tK~<`8 zC)KGzO=?k_I@F~e^=ZIeG^7!Yxtk_5r5Vj>K}%ZEnl{|Sy|m>%+R>g4bfgoV=|We! z5l44=(34*D=6?FnmwxnT00SAsV1_W1VLZTa9^@fL@Gy_?C?grgV~l1DV;RSICh#~D znZ#tKFqJ2m#&l-zBu_DuSv<{b=I{)2na6w z@iy=9F7I)Y_xXSi`G}ACgikreX+Gl&XZf5j_>!+U$Jd3)1u02IYSNIFblgCCGLVr>+(>4!kd@0trU*qTMsZ3|l2VkW3}q=tc`8tmN>ru_w{r(osm7gD zrv^2tMQ!R(mwMEv0e8`mMl|Mbn$VPHG^YhEX+>+=a1Zy=miuT&dpgjOPIRUVUFk*~ z-RVJ3deNKv=|f-o(VqbfWDtWH!cd0s0K<8ZhZw=bJi?=lWE77vnlX%J9OIe5<4j}{ zlbOO)o?sf&nZc7h#Y|@LG_#q*Gt6Zk^I5<`7O|LTd5-5CJ9MNMsiY+l2oK74QWZo4WuUn8Og+rWF`w)$wqc=;%06k z2e*=w+sH+3@{pH&jqgT;?&K1uSF{i+Pskc%CIJ(_3;f7W{LDpu;a7g+ zcmCi{F7X$axkC7*KM{#ZLQ;~EoD`%a6{$%>TGDX?>B&GwGI1lB$wF4Lk)4~knOn%g zt>ol3a*>-n^4&E_9_Eadf8# zJ?TYn?xzoZ=|_JCFpxnEW(Y$W#sduJK^|fR5Az6*GLlg|#%RVcmT`<{0*^D1Nla!6 zQ+a}EOlJm9@)R?f#na4Y4$m-`dCX@43t7Zsp5-~7X9-JrffrfEa#rvXD_O;A*07eB zS;u-du#rt{W(!-{#&&kFlU?lQ751=~eZ0zk4seh|9Oei|ImT-o=XFl-25<5fZ}SfC z@*XF7pAYzukNB8R_>@ze<}=Q4me2WuFZqgde9d{j;ak4rdw$>oKk^elbCF;8mEZWC zKlqbN{KaLi5G8f~lb9qVB^k*{K}u4Qnlz*(9XF7k3}hq|HU zPHrO?xyeIb@{ykc6r>P^DMC?-QJfN#q!gtoLs`mEo(fc?5|ydK?c70Cs&OaPsXfDieIkNJd8ImKx{;|yo{oGWuNkUSRk(?ByBo(PiLt4^t1L?^?Mlx|DnaM&{vXPyexS3nX!L8)v zHgb`hJme)G`6)m_3Q?FM6r~u&DM3j}QJON8r5xp{Kt(E1nJV1Q9aNTqaE$(Ku0>!nJ#pt8*y}}2R-RU zZ|)o89OrdT@CI-47H{(o@A4ie zd7lsXkdOG7PxzEmoaQsmaF);cf-m`sb9~KtzTsQG<9mMK0zdK-KXZ{^_?6%Ioj>@K zOZ>%Ut`H@6{*#y_BqbTiNkK|dk(xB5B^@`Ao(yCp6E~8XEMz4c*|~|ExrH3uN=|Mg z7rDtpUhrl%y1;DMMMxQJxA^q!N{>!tLBaRjP3()u};EYEhdy z)TJKvX~11Hq!Ep|n=yOIp#IHr&I#wB3LY-a~M*~M;NVGn!R$E)n;00%k5VUBQ=W4y+3UgrdF@Fs8ZHt+B*?{Sj% z`G61kh>!V%PdUYDKI05$`J6BKlCL<&*PQ1YzU4c<=LatEBR}yo7x{%>`HkQCgFm^% zUtH!2Q3~fjiAh3Il98Mgq$CxoNkdxFaRceeKt?igBbmuUR^$tANeUjK?+frA{3<<#VJ8aN>Q3Jl%*WysX#?4QJE^-&K*>x8h28i8q}l~wW&j0 z>QSEt+(kng(U`kwLQ|U2oEEgC6|HH*J={xM?xP*;=|D$1(U~rEr5kZ{rw2XhMQ`q> z4}IxJe+Dp+K@4UHLm9>c4Cg@}VgwKK2#+$7Q9Q78S;lf!@DeLo#cI~DmX}$_dN#0; zO>AZhTiM2TcCeFO?B*5ru$O(j%6<-TkV72i2uC@_YaHiw5~k3V7N+nkb(q5M5@AYr zZAJKT*=OZhQ#&l*suT4!6kdJ)s$98vmr|7~7q3vd zTeotRDwK~a*R@oM-UE94_e!nMwNk0La@{HvFI}cg=i=qcbT41LbLp~i#k<5+?%cg= z#qy=gm8uX*4fXYy_^ZQ;8N5&HuK|+#3xc%%N+4}msddWvneXa5pF3XbU)%Af*IrMC z0orR*%Bz2Uko4NmtCuQQ$D2yY7{+DW5t_B-<*>~}Su%T{hff`+FtQ>zrJ0)5N?)os+5zIJ?`|8yJW z;*Ue3T*?@7-8TMJ`}FDDC9aRsmq@qxzfkt{>&iZHUD;tr5soHC6_$^>Ue|*N-0N5>rIJr`O!(d)M(zkNt@FD2Z;wq A%K!iX literal 0 HcmV?d00001 diff --git a/scripts/dataset_multimodal/data-00031-of-00032.arrow b/scripts/dataset_multimodal/data-00031-of-00032.arrow new file mode 100644 index 0000000000000000000000000000000000000000..3a9db86d1219100214faba74c8540789230d5104 GIT binary patch literal 50146 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 literal 0 HcmV?d00001 diff --git a/scripts/dataset_multimodal/dataset_info.json b/scripts/dataset_multimodal/dataset_info.json new file mode 100644 index 0000000000..915e5d633b --- /dev/null +++ b/scripts/dataset_multimodal/dataset_info.json @@ -0,0 +1,43 @@ +{ + "citation": "", + "description": "", + "features": { + "inputs": { + "feature": { + "dtype": "int32", + "_type": "Value" + }, + "_type": "LargeList" + }, + "labels": { + "feature": { + "dtype": "int32", + "_type": "Value" + }, + "_type": "LargeList" + }, + "position_ids": { + "feature": { + "dtype": "int32", + "_type": "Value" + }, + "_type": "LargeList" + }, + "sequence_lengths": { + "feature": { + "dtype": "int64", + "_type": "Value" + }, + "_type": "LargeList" + } + "images": { + "feature": { + "dtype": "str", + "_type": "Value" + }, + "_type": "LargeList" + } + }, + "homepage": "", + "license": "" +} \ No newline at end of file diff --git a/scripts/preprocess_multimodal_data.py b/scripts/preprocess_multimodal_data.py index 3425b795ba..6ac5203b18 100644 --- a/scripts/preprocess_multimodal_data.py +++ b/scripts/preprocess_multimodal_data.py @@ -554,9 +554,6 @@ def remove_none_recursively(obj): else: return obj - #dataset = load_dataset(args.dataset, name=args.subset, split=args.split) - #tokenizer = AutoTokenizer.from_pretrained(args.tokenizer) - #tokenizer = MistralTokenizer.from_hf_hub(args.preprocessor) from transformers import AutoProcessor tokenizer = AutoProcessor.from_pretrained(args.preprocessor, use_fast=True) @@ -770,14 +767,13 @@ def _tokenize_mistral_format(sample): parser.add_argument("--batch-size", type=int, default=1000) parser.add_argument("--num-proc", type=int) parser.add_argument("--seed", type=int, default=42) - parser.add_argument("--limit", type=int) + parser.add_argument("--limit", type=int, required=False) parser.add_argument("--chat", action="store_true") parser.add_argument("--multiturn-only", action="store_true") parser.add_argument("--pack-to-sequence-length", type=int) parser.add_argument("--drop-larger-than", type=int) parser.add_argument("--save-to-disk", type=str) parser.add_argument("--show-example", action="store_true") - parser.add_argument("--limit", type=int, default=None) args = parser.parse_args() main(args) diff --git a/torchtitan/models/mistral3/model/model.py b/torchtitan/models/mistral3/model/model.py index 11706d6979..6a95d23150 100644 --- a/torchtitan/models/mistral3/model/model.py +++ b/torchtitan/models/mistral3/model/model.py @@ -490,7 +490,7 @@ def forward( encoder_mask: Optional[torch.Tensor] = None, inputs_embeds: Optional[torch.Tensor] = None, position_ids: Optional[torch.Tensor] = None, - image_features: Optional[torch.Tensor] = None, + image_features: Optional[list] = None, ) -> torch.Tensor: # input tensor of shape [b, s] @@ -502,15 +502,18 @@ def forward( else: h = inputs_embeds + if image_features is not None: - - image_features = image_features.unsqueeze(0) - - special_image_mask = self.get_placeholder_mask( - input_ids=tokens, inputs_embeds=h, image_features=image_features - ) - - h= h.masked_scatter(special_image_mask, image_features) + for i, i_image_features in enumerate(image_features): + if i_image_features is not None: + image_features = i_image_features.unsqueeze(0) + special_image_mask = self.get_placeholder_mask( + input_ids=tokens[i].unsqueeze(0), inputs_embeds=h[i].unsqueeze(0), image_features=image_features + ) + h[i] = h[i].masked_scatter(special_image_mask, image_features) + if image_features is None: + print("image features is None") + # Setup freqs_cis based on position_ids or sequence length if position_ids is not None: @@ -638,46 +641,46 @@ def forward( ): image_features = None + all_image_features = [] if position_ids is not None: all_image_features = [] + for i, batch in enumerate(images): - image_features_batch = [] - images = [load_image(im) if isinstance(im, str) else im for im in batch] + i_image_features = None - image_inputs = self.preprocessor.image_processor(images, patch_size=self.config.patch_size * 2) + if batch is not None: + i_image_features = None + image_features_batch = [] + images = [load_image(im) if isinstance(im, str) else im for im in batch] - image_encoder_outputs = self.get_image_features(image_inputs["pixel_values"].to(self.vision_tower.device, dtype=torch.bfloat16), 2, image_inputs["image_sizes"]) + image_inputs = self.preprocessor.image_processor(images, patch_size=self.config.patch_size * 2) - # Collect image features from all images in the batch - all_image_features.append(image_encoder_outputs) + image_encoder_outputs = self.get_image_features(image_inputs["pixel_values"].to(self.vision_tower.device, dtype=torch.bfloat16), 2, image_inputs["image_sizes"]) - # Concatenate all image features along the sequence dimension (dim=1) - if all_image_features: - image_features = torch.cat(all_image_features, dim=1) # Shape: (1, sum_of_image_patches_of_all_images) - else: - image_features = None + # Collect image features from all images in the batch + i_image_features = image_encoder_outputs - #special_image_mask = self.get_placeholder_mask(input_ids, inputs_embeds, image_features) + if i_image_features.shape[0] > 1: + i_image_features = torch.cat(i_image_features, dim=0) # Shape: (1, sum_of_image_patches_of_all_images) + i_image_features = i_image_features.unsqueeze(0) - #input_ids[special_image_mask] = self.config.image_token_id + all_image_features.append(i_image_features) - #exit(0) else: return NotImplementedError("Position IDs are required for multimodal input.") - if self.config.use_flex_attn: init_attention_mask(input_ids, eos_id=self.config.eos_id, sequence_lengths=sequence_lengths) if position_ids is not None: - if image_features is not None: + if all_image_features is not None: logits = self.language_model( tokens=input_ids, encoder_mask=None, position_ids=position_ids, - image_features=image_features, + image_features=all_image_features, ) else: logits = self.language_model( @@ -686,11 +689,11 @@ def forward( position_ids=position_ids, ) else: - if image_features is not None: + if all_image_features is not None: logits = self.language_model( tokens=input_ids, encoder_mask=None, - image_features=image_features, + image_features=all_image_features, ) else: logits = self.language_model( From 24d6a7c2b19d9c902ea3006ec0771f3623ab3454 Mon Sep 17 00:00:00 2001 From: Artem Yatsenko Date: Wed, 20 Aug 2025 06:39:09 +0000 Subject: [PATCH 21/28] add conversion script back for mistral --- scripts/convert_mistral_dcp_to_hf.py | 215 ++++++++++++++++++ .../data-00000-of-00032.arrow | Bin 50146 -> 0 bytes .../data-00001-of-00032.arrow | Bin 74290 -> 0 bytes .../data-00002-of-00032.arrow | Bin 98434 -> 0 bytes .../data-00003-of-00032.arrow | Bin 98434 -> 0 bytes .../data-00004-of-00032.arrow | Bin 74290 -> 0 bytes .../data-00005-of-00032.arrow | Bin 74290 -> 0 bytes .../data-00006-of-00032.arrow | Bin 74290 -> 0 bytes .../data-00007-of-00032.arrow | Bin 25994 -> 0 bytes .../data-00008-of-00032.arrow | Bin 26098 -> 0 bytes .../data-00009-of-00032.arrow | Bin 50146 -> 0 bytes .../data-00010-of-00032.arrow | Bin 74290 -> 0 bytes .../data-00011-of-00032.arrow | Bin 74290 -> 0 bytes .../data-00012-of-00032.arrow | Bin 74290 -> 0 bytes .../data-00013-of-00032.arrow | Bin 25994 -> 0 bytes .../data-00014-of-00032.arrow | Bin 25994 -> 0 bytes .../data-00015-of-00032.arrow | Bin 74290 -> 0 bytes .../data-00016-of-00032.arrow | Bin 74290 -> 0 bytes .../data-00017-of-00032.arrow | Bin 74290 -> 0 bytes .../data-00018-of-00032.arrow | Bin 50146 -> 0 bytes .../data-00019-of-00032.arrow | Bin 50146 -> 0 bytes .../data-00020-of-00032.arrow | Bin 50146 -> 0 bytes .../data-00021-of-00032.arrow | Bin 74290 -> 0 bytes .../data-00022-of-00032.arrow | Bin 74290 -> 0 bytes .../data-00023-of-00032.arrow | Bin 50146 -> 0 bytes .../data-00024-of-00032.arrow | Bin 50146 -> 0 bytes .../data-00025-of-00032.arrow | Bin 25994 -> 0 bytes .../data-00026-of-00032.arrow | Bin 74290 -> 0 bytes .../data-00027-of-00032.arrow | Bin 74290 -> 0 bytes .../data-00028-of-00032.arrow | Bin 74290 -> 0 bytes .../data-00029-of-00032.arrow | Bin 50146 -> 0 bytes .../data-00030-of-00032.arrow | Bin 50146 -> 0 bytes .../data-00031-of-00032.arrow | Bin 50146 -> 0 bytes scripts/dataset_multimodal/dataset_info.json | 43 ---- 34 files changed, 215 insertions(+), 43 deletions(-) create mode 100644 scripts/convert_mistral_dcp_to_hf.py delete mode 100644 scripts/dataset_multimodal/data-00000-of-00032.arrow delete mode 100644 scripts/dataset_multimodal/data-00001-of-00032.arrow delete mode 100644 scripts/dataset_multimodal/data-00002-of-00032.arrow delete mode 100644 scripts/dataset_multimodal/data-00003-of-00032.arrow delete mode 100644 scripts/dataset_multimodal/data-00004-of-00032.arrow delete mode 100644 scripts/dataset_multimodal/data-00005-of-00032.arrow delete mode 100644 scripts/dataset_multimodal/data-00006-of-00032.arrow delete mode 100644 scripts/dataset_multimodal/data-00007-of-00032.arrow delete mode 100644 scripts/dataset_multimodal/data-00008-of-00032.arrow delete mode 100644 scripts/dataset_multimodal/data-00009-of-00032.arrow delete mode 100644 scripts/dataset_multimodal/data-00010-of-00032.arrow delete mode 100644 scripts/dataset_multimodal/data-00011-of-00032.arrow delete mode 100644 scripts/dataset_multimodal/data-00012-of-00032.arrow delete mode 100644 scripts/dataset_multimodal/data-00013-of-00032.arrow delete mode 100644 scripts/dataset_multimodal/data-00014-of-00032.arrow delete mode 100644 scripts/dataset_multimodal/data-00015-of-00032.arrow delete mode 100644 scripts/dataset_multimodal/data-00016-of-00032.arrow delete mode 100644 scripts/dataset_multimodal/data-00017-of-00032.arrow delete mode 100644 scripts/dataset_multimodal/data-00018-of-00032.arrow delete mode 100644 scripts/dataset_multimodal/data-00019-of-00032.arrow delete mode 100644 scripts/dataset_multimodal/data-00020-of-00032.arrow delete mode 100644 scripts/dataset_multimodal/data-00021-of-00032.arrow delete mode 100644 scripts/dataset_multimodal/data-00022-of-00032.arrow delete mode 100644 scripts/dataset_multimodal/data-00023-of-00032.arrow delete mode 100644 scripts/dataset_multimodal/data-00024-of-00032.arrow delete mode 100644 scripts/dataset_multimodal/data-00025-of-00032.arrow delete mode 100644 scripts/dataset_multimodal/data-00026-of-00032.arrow delete mode 100644 scripts/dataset_multimodal/data-00027-of-00032.arrow delete mode 100644 scripts/dataset_multimodal/data-00028-of-00032.arrow delete mode 100644 scripts/dataset_multimodal/data-00029-of-00032.arrow delete mode 100644 scripts/dataset_multimodal/data-00030-of-00032.arrow delete mode 100644 scripts/dataset_multimodal/data-00031-of-00032.arrow delete mode 100644 scripts/dataset_multimodal/dataset_info.json diff --git a/scripts/convert_mistral_dcp_to_hf.py b/scripts/convert_mistral_dcp_to_hf.py new file mode 100644 index 0000000000..6868965a87 --- /dev/null +++ b/scripts/convert_mistral_dcp_to_hf.py @@ -0,0 +1,215 @@ +# Copyright (c) Meta Platforms, Inc. and affiliates. +# All rights reserved. +# +# This source code is licensed under the BSD-style license found in the +# LICENSE file in the root directory of this source tree. + +import argparse +from pathlib import Path + +import torch +import torch.distributed.checkpoint +import torch.distributed.checkpoint.format_utils + +from torchtitan.tools.logging import init_logger, logger + +from transformers import AutoTokenizer, AutoConfig, Mistral3ForConditionalGeneration# noqa F401 + + + + + +def permute_1d(w: torch.Tensor, n_heads: int, dim1: int) -> torch.Tensor: + return w.view(n_heads, dim1 // n_heads // 2, 2).transpose(1, 2).reshape(dim1) + + + + +# permute for sliced rotary +def permute(w, n_heads, dim1, dim2): + print("n_heads ", n_heads) + print("dim1 ", dim1) + print("dim2 ", dim2) + return ( + w.view(n_heads, dim1 // n_heads // 2, 2, dim2) + .transpose(1, 2) + .reshape(dim1, dim2) + ) + + +# And reversed +def reverse_permute(w, n_heads, dim1, dim2): + print("n_heads ", n_heads) + print("dim1 ", dim1) + print("dim2 ", dim2) + return ( + w.view(n_heads, 2, dim1 // n_heads // 2, dim2) + .transpose(1, 2) + .reshape(dim1, dim2) + ) + + +def param_to_hf_processing( + name: str, + param: torch.Tensor, + num_heads: int, + hidden_size: int, + kv_dim: int, + num_kv_heads: int, +): + # language model layers + if name.startswith("language_model.layers."): + # Example: language_model.layers.{L}.ln_attn.weight + if name.endswith(".ln_attn.weight"): + out_name = name.replace( + "language_model.layers.", "model.language_model.layers." + ).replace(".ln_attn.weight", ".input_layernorm.weight") + return out_name, param + if name.endswith(".ln_mlp.weight"): + out_name = name.replace( + "language_model.layers.", "model.language_model.layers." + ).replace(".ln_mlp.weight", ".post_attention_layernorm.weight") + return out_name, param + + # Attention projections + if ".attn.wq.weight" in name: + out_name = name.replace( + "language_model.layers.", "model.language_model.layers." + ).replace(".attn.wq.weight", ".self_attn.q_proj.weight") + #out_param = permute(param.detach(), num_heads, 4096, hidden_size) + out_param = reverse_permute(param.detach(), 32, 4096, 5120) + return out_name, out_param + if ".attn.wk.weight" in name: + out_name = name.replace( + "language_model.layers.", "model.language_model.layers." + ).replace(".attn.wk.weight", ".self_attn.k_proj.weight") + #out_param = permute(param.detach(), num_kv_heads, kv_dim, hidden_size) + out_param = reverse_permute(param.detach(), 8, 1024, 5120) + return out_name, out_param + if ".attn.wv.weight" in name: + out_name = name.replace( + "language_model.layers.", "model.language_model.layers." + ).replace(".attn.wv.weight", ".self_attn.v_proj.weight") + return out_name, param + if ".attn.wo.weight" in name: + out_name = name.replace( + "language_model.layers.", "model.language_model.layers." + ).replace(".attn.wo.weight", ".self_attn.o_proj.weight") + return out_name, param + + # Optional q_norm / k_norm 1D weights (not present in current Mistral3 export, but safe to handle) + if ".attn.q_norm.weight" in name: + out_name = name.replace( + "language_model.layers.", "model.language_model.layers." + ).replace(".attn.q_norm.weight", ".self_attn.q_norm.weight") + out_param = permute_1d(param.detach(), 1, param.shape[0]) + return out_name, out_param + if ".attn.k_norm.weight" in name: + out_name = name.replace( + "language_model.layers.", "model.language_model.layers." + ).replace(".attn.k_norm.weight", ".self_attn.k_norm.weight") + out_param = permute_1d(param.detach(), 1, param.shape[0]) + return out_name, out_param + + # MLP + if ".mlp.w1.weight" in name: + out_name = name.replace( + "language_model.layers.", "model.language_model.layers." + ).replace(".mlp.w1.weight", ".mlp.gate_proj.weight") + return out_name, param + if ".mlp.w2.weight" in name: + out_name = name.replace( + "language_model.layers.", "model.language_model.layers." + ).replace(".mlp.w2.weight", ".mlp.down_proj.weight") + return out_name, param + if ".mlp.w3.weight" in name: + out_name = name.replace( + "language_model.layers.", "model.language_model.layers." + ).replace(".mlp.w3.weight", ".mlp.up_proj.weight") + return out_name, param + + # language model top-level components + if name == "language_model.norm.weight": + return "model.language_model.norm.weight", param + if name == "language_model.tok_embeddings.weight": + return "model.language_model.embed_tokens.weight", param + if name == "language_model.output.weight": + return "lm_head.weight", param + + # Vision tower and multimodal projector: keep the same keys (HF uses the same prefix here in our export) + if name.startswith("vision_tower."): + return name.replace("vision_tower.", "model.vision_tower."), param + if name.startswith("multi_modal_projector."): + return name.replace("multi_modal_projector.", "model.multi_modal_projector."), param + + # Unknown/unhandled: return None to skip + return None, None + + +@torch.inference_mode() +def convert_mistral_weights(input_dir: Path, output_dir: Path, model_base: str, tokenizer: str | None) -> None: + hf_model = Mistral3ForConditionalGeneration.from_pretrained(model_base) + tok = AutoTokenizer.from_pretrained(tokenizer if tokenizer else model_base) + config: AutoConfig = hf_model.config + + # Mistral3 models store text config under text_config; fall back to top-level for generic models + text_cfg = getattr(config, "text_config", config) + hidden_size: int = int(text_cfg.hidden_size) + num_heads: int = int(text_cfg.num_attention_heads) + num_kv_heads: int = int(getattr(text_cfg, "num_key_value_heads", num_heads)) + dims_per_head: int = 128 #hidden_size // num_heads + kv_dim: int = dims_per_head * num_kv_heads + + hf_state_dict = hf_model.state_dict() + + logger.info(f"Loading TorchTitan Mistral DCP weights from {input_dir}") + sd: dict[str, torch.Tensor] = {} + torch.distributed.checkpoint.format_utils._load_state_dict( + sd, + torch.distributed.checkpoint.filesystem.FileSystemReader(input_dir), + planner=torch.distributed.checkpoint.format_utils._EmptyStateDictLoadPlanner(), + no_dist=True, + ) + + # Some checkpoints might nest parameters under 'model' + if "model" in sd: + sd = sd["model"] + + skipped = {"language_model.freqs_cis", "train_state", "optimizer", "dataloader", "lr_scheduler"} + + for name, param in sd.items(): + if any(name == s or name.startswith(s + ".") for s in skipped): + continue + out_name, out_param = param_to_hf_processing( + name, param, num_heads, hidden_size, kv_dim, num_kv_heads + ) + if out_name is None: + logger.debug(f"Skipping unrecognized key: {name}") + continue + hf_state_dict[out_name] = out_param + logger.info(f"Converted {name} -> {out_name}") + + # Load updated weights into the HF model + + print("my state dict", hf_state_dict.keys()) + print("model state dict", hf_model.state_dict().keys()) + hf_model.load_state_dict(hf_state_dict) + + # Save in bf16 + hf_model = hf_model.to(dtype=torch.bfloat16) + hf_model.save_pretrained(output_dir) + tok.save_pretrained(output_dir) + + +if __name__ == "__main__": + init_logger() + parser = argparse.ArgumentParser(description="Convert TorchTitan Mistral DCP weights to HF format.") + parser.add_argument("input_dir", type=Path, help="Input directory containing DCP checkpoint") + parser.add_argument("output_dir", type=Path, help="Output directory for HF model") + parser.add_argument("mistral_model", type=str, help="Base HF model to load config and architecture from") + parser.add_argument("--tokenizer", type=str, help="Optional tokenizer source; defaults to base model", default=None) + args = parser.parse_args() + + convert_mistral_weights(args.input_dir, args.output_dir, args.mistral_model, args.tokenizer) + + diff --git a/scripts/dataset_multimodal/data-00000-of-00032.arrow b/scripts/dataset_multimodal/data-00000-of-00032.arrow deleted file mode 100644 index 4de8feb177088a315c48e79dd7af1b77a99c5d38..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50146 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 diff --git a/scripts/dataset_multimodal/data-00001-of-00032.arrow b/scripts/dataset_multimodal/data-00001-of-00032.arrow deleted file mode 100644 index 98008b375377ef552bbecf3f5c8b55eb6219975f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 74290 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

1?e%Mj+d0lYP$6 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 diff --git a/scripts/dataset_multimodal/data-00004-of-00032.arrow b/scripts/dataset_multimodal/data-00004-of-00032.arrow deleted file mode 100644 index 053a0cdd8eeb1038eef770245c799165723fa01a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 74290 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 A1^@s6 diff --git a/scripts/dataset_multimodal/data-00005-of-00032.arrow b/scripts/dataset_multimodal/data-00005-of-00032.arrow deleted file mode 100644 index 29a9c1b2d87d98efbac0699c856ad9779efa203f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 74290 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 H=L-K9lLgXB diff --git a/scripts/dataset_multimodal/data-00006-of-00032.arrow b/scripts/dataset_multimodal/data-00006-of-00032.arrow deleted file mode 100644 index ff409aa888f69fe012170d1e5ab22ebc8ae58c8e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 74290 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 Y`d9w%W)!xdt^aODH|?c);oo5SUy-vSLI3~& diff --git a/scripts/dataset_multimodal/data-00008-of-00032.arrow b/scripts/dataset_multimodal/data-00008-of-00032.arrow deleted file mode 100644 index b5098f95a7b3583766e58be42637c3996e7bed8d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26098 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 Pzt7QGywpnlt(X4+z#?Jy diff --git a/scripts/dataset_multimodal/data-00009-of-00032.arrow b/scripts/dataset_multimodal/data-00009-of-00032.arrow deleted file mode 100644 index bb8d556faa66116e8e554dd3a0cad9a9e107188b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50146 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 Yl1h;@OfYk9f4Yg6TCG|&Z(rvB0qedwnE(I) diff --git a/scripts/dataset_multimodal/data-00011-of-00032.arrow b/scripts/dataset_multimodal/data-00011-of-00032.arrow deleted file mode 100644 index e217a40689014b8fd328ce121c9cf7816dce341d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 74290 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 diff --git a/scripts/dataset_multimodal/data-00012-of-00032.arrow b/scripts/dataset_multimodal/data-00012-of-00032.arrow deleted file mode 100644 index 5c8395ba5176eed32e71ea4347a601c60d575db9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 74290 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 diff --git a/scripts/dataset_multimodal/data-00013-of-00032.arrow b/scripts/dataset_multimodal/data-00013-of-00032.arrow deleted file mode 100644 index 2fa4a002830709348cf3f08ce190847656087521..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25994 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 Y$5-m_W@JXtv41zCt9YrO`8Qbp3k!bU*#H0l diff --git a/scripts/dataset_multimodal/data-00014-of-00032.arrow b/scripts/dataset_multimodal/data-00014-of-00032.arrow deleted file mode 100644 index e80befeddc9abfe6d7546e89b82ca348b1a47a4d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25994 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 diff --git a/scripts/dataset_multimodal/data-00015-of-00032.arrow b/scripts/dataset_multimodal/data-00015-of-00032.arrow deleted file mode 100644 index 4f45051f649aee41c9b6f4a4eddb7c0db3dd3065..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 74290 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 diff --git a/scripts/dataset_multimodal/data-00019-of-00032.arrow b/scripts/dataset_multimodal/data-00019-of-00032.arrow deleted file mode 100644 index aff5f9b8072ea93f1551164035decf5dbb5440c9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50146 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 diff --git a/scripts/dataset_multimodal/data-00022-of-00032.arrow b/scripts/dataset_multimodal/data-00022-of-00032.arrow deleted file mode 100644 index 4cc57f070cd37876b7b8805f4f61ce3a05325a8e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 74290 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 diff --git a/scripts/dataset_multimodal/data-00023-of-00032.arrow b/scripts/dataset_multimodal/data-00023-of-00032.arrow deleted file mode 100644 index 2d322d71e2c0b60711feb1c10ea7cf254c33a091..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50146 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 diff --git a/scripts/dataset_multimodal/data-00025-of-00032.arrow b/scripts/dataset_multimodal/data-00025-of-00032.arrow deleted file mode 100644 index 8a7b43185527ff6136937ccf52ad6eeb9bc5f54c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25994 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 LmnPYNgXO;fQItFL diff --git a/scripts/dataset_multimodal/data-00026-of-00032.arrow b/scripts/dataset_multimodal/data-00026-of-00032.arrow deleted file mode 100644 index f49b0f7cb2d4e92f23cba4f562e4c9c88dc8f589..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 74290 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 R3;3tEc&XpEZL3Zd{s-ZRedquH diff --git a/scripts/dataset_multimodal/data-00027-of-00032.arrow b/scripts/dataset_multimodal/data-00027-of-00032.arrow deleted file mode 100644 index f4a70e1b31aa93c66bd8dc8a7f41f1943fda4f9b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 74290 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 diff --git a/scripts/dataset_multimodal/data-00028-of-00032.arrow b/scripts/dataset_multimodal/data-00028-of-00032.arrow deleted file mode 100644 index 6010eadd58fedacd48656bc7ddad2789759328ca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 74290 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 diff --git a/scripts/dataset_multimodal/data-00029-of-00032.arrow b/scripts/dataset_multimodal/data-00029-of-00032.arrow deleted file mode 100644 index a4926bf93cfa467f1bd4304dc6923af54a7c4f60..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50146 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 A%K!iX diff --git a/scripts/dataset_multimodal/data-00031-of-00032.arrow b/scripts/dataset_multimodal/data-00031-of-00032.arrow deleted file mode 100644 index 3a9db86d1219100214faba74c8540789230d5104..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50146 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 diff --git a/scripts/dataset_multimodal/dataset_info.json b/scripts/dataset_multimodal/dataset_info.json deleted file mode 100644 index 915e5d633b..0000000000 --- a/scripts/dataset_multimodal/dataset_info.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "citation": "", - "description": "", - "features": { - "inputs": { - "feature": { - "dtype": "int32", - "_type": "Value" - }, - "_type": "LargeList" - }, - "labels": { - "feature": { - "dtype": "int32", - "_type": "Value" - }, - "_type": "LargeList" - }, - "position_ids": { - "feature": { - "dtype": "int32", - "_type": "Value" - }, - "_type": "LargeList" - }, - "sequence_lengths": { - "feature": { - "dtype": "int64", - "_type": "Value" - }, - "_type": "LargeList" - } - "images": { - "feature": { - "dtype": "str", - "_type": "Value" - }, - "_type": "LargeList" - } - }, - "homepage": "", - "license": "" -} \ No newline at end of file From 69684361e67dc8e15d911096daabb4ff77c81fd8 Mon Sep 17 00:00:00 2001 From: Artem Yatsenko Date: Thu, 21 Aug 2025 19:00:55 +0000 Subject: [PATCH 22/28] fix freqs_cis bug. add more configs --- scripts/convert_deepseek_hf_to_dcp.py | 317 +++++++++--------- scripts/convert_mistral_hf_to_dcp_2.py | 218 ++++++++++++ scripts/preprocess_data.py | 3 +- torchtitan/models/mistral3/__init__.py | 102 ++++++ torchtitan/models/mistral3/model/args.py | 3 +- torchtitan/models/mistral3/model/model.py | 120 +++++-- .../train_configs/mistral24b_debug.toml | 66 ++++ .../train_configs/mistral24b_finetuning.toml | 10 +- .../train_configs/mistral24b_inference.toml | 66 ++++ 9 files changed, 712 insertions(+), 193 deletions(-) create mode 100644 scripts/convert_mistral_hf_to_dcp_2.py create mode 100644 torchtitan/models/mistral3/train_configs/mistral24b_debug.toml create mode 100644 torchtitan/models/mistral3/train_configs/mistral24b_inference.toml diff --git a/scripts/convert_deepseek_hf_to_dcp.py b/scripts/convert_deepseek_hf_to_dcp.py index ae01eed0dd..3bc04b5019 100644 --- a/scripts/convert_deepseek_hf_to_dcp.py +++ b/scripts/convert_deepseek_hf_to_dcp.py @@ -1,195 +1,196 @@ +# Copyright (c) Meta Platforms, Inc. and affiliates. +# All rights reserved. +# +# This source code is licensed under the BSD-style license found in the +# LICENSE file in the root directory of this source tree. + import argparse -import glob -import os from pathlib import Path import torch import torch.distributed.checkpoint as DCP -from huggingface_hub import snapshot_download -from safetensors import safe_open -from torchtitan.tools.logging import init_logger, logger +from torchtitan.tools.logging import logger +from torchtitan.models.mistral3.model.model import precompute_freqs_cis -from transformers import AutoConfig, AutoTokenizer # noqa F401 +from transformers import AutoTokenizer, Mistral3Config -@torch.inference_mode() -def convert_deepseekv3_weights(deepseek_model, output_dir): - # Download the model files locally - if os.path.exists(deepseek_model): - local_path = deepseek_model - else: - local_path = snapshot_download( - repo_id=deepseek_model, - allow_patterns=["*.safetensors", "config.json", "tokenizer*"], - ) - tok = AutoTokenizer.from_pretrained(local_path, trust_remote_code=True) - config = AutoConfig.from_pretrained(local_path, trust_remote_code=True) - n_layers = config.num_hidden_layers - dim = config.hidden_size - - logger.info( - f"Loading original DeepSeek V3 weights from {deepseek_model} using safetensors" +# permute for sliced rotary +def permute(w, n_heads, dim1, dim2): + return ( + w.view(n_heads, dim1 // n_heads // 2, 2, dim2) + .transpose(1, 2) + .reshape(dim1, dim2) ) - # Find all safetensors files - safetensors_files = glob.glob(f"{local_path}/*.safetensors") - if not safetensors_files: - raise ValueError( - "No safetensors files found in the downloaded model directory. Ensure the model uses safetensors format." - ) - # Load state dict directly from safetensors files - hf_state_dict = {} - for file in safetensors_files: - with safe_open(file, framework="pt", device="cpu") as f: - for key in f.keys(): - tensor = f.get_tensor(key) - logger.info(f"Read {key}, shape={tensor.shape}, dtype{tensor.dtype}") - hf_state_dict[key] = tensor +# And reversed +def reverse_permute(w, n_heads, dim1, dim2): + return ( + w.view(n_heads, 2, dim1 // n_heads // 2, dim2) + .transpose(1, 2) + .reshape(dim1, dim2) + ) + - logger.info("Converting...") +@torch.inference_mode() +def convert_mistral3_weights(mistral_model, output_dir, max_seq_len: int): + # Loading the model directly might be too large, so we'll use safetensors to load the weights + from safetensors import safe_open + import os + import json + + # Load the config + config_path = os.path.join(mistral_model, "config.json") + with open(config_path, "r") as f: + config_dict = json.load(f) + + config = Mistral3Config.from_dict(config_dict) + tok = AutoTokenizer.from_pretrained(mistral_model) + + # Find all safetensors files + index_path = os.path.join(mistral_model, "model.safetensors.index.json") + if os.path.exists(index_path): + with open(index_path, "r") as f: + index = json.load(f) + weight_map = index["weight_map"] + all_files = set(weight_map.values()) + else: + # If no index, look for a single safetensors file + safetensors_files = [f for f in os.listdir(mistral_model) if f.endswith(".safetensors")] + if len(safetensors_files) == 1: + all_files = [safetensors_files[0]] + else: + raise ValueError("Multiple safetensors files found without an index file") + + # Extract language model parameters from the text config + text_config = config.text_config + n_layers = text_config.num_hidden_layers + n_heads = text_config.num_attention_heads + dim = text_config.hidden_size + dims_per_head = dim // n_heads + + logger.info(f"Loading original Mistral3 weights from {mistral_model}") + state_dict = {} + n_heads_per_shard = n_heads + num_key_value_heads = text_config.num_key_value_heads + n_kv_heads_per_shard = num_key_value_heads + key_value_dim = dims_per_head * num_key_value_heads + + # Load and process weights + hf_state_dict = {} + for filename in all_files: + filepath = os.path.join(mistral_model, filename) + with safe_open(filepath, framework="pt") as f: + for key in f.keys(): + hf_state_dict[key] = f.get_tensor(key) + + # Process language model layers for layer in range(n_layers): - state_dict[f"layers.{layer}.attention_norm.weight"] = hf_state_dict[ - f"model.layers.{layer}.input_layernorm.weight" - ] - state_dict[f"layers.{layer}.ffn_norm.weight"] = hf_state_dict[ - f"model.layers.{layer}.post_attention_layernorm.weight" - ] + # Map from HF to torchtitan structure + # Based on the keys we found in the checkpoint - # Attention weights - if config.q_lora_rank is None: - state_dict[f"layers.{layer}.attention.wq.weight"] = hf_state_dict[ - f"model.layers.{layer}.self_attn.q_proj.weight" - ] - else: - state_dict[f"layers.{layer}.attention.wq_a.weight"] = hf_state_dict[ - f"model.layers.{layer}.self_attn.q_a_proj.weight" - ] - state_dict[f"layers.{layer}.attention.q_norm.weight"] = hf_state_dict[ - f"model.layers.{layer}.self_attn.q_a_layernorm.weight" - ] - state_dict[f"layers.{layer}.attention.wq_b.weight"] = hf_state_dict[ - f"model.layers.{layer}.self_attn.q_b_proj.weight" - ] - - state_dict[f"layers.{layer}.attention.wkv_a.weight"] = hf_state_dict[ - f"model.layers.{layer}.self_attn.kv_a_proj_with_mqa.weight" - ] - state_dict[f"layers.{layer}.attention.kv_norm.weight"] = hf_state_dict[ - f"model.layers.{layer}.self_attn.kv_a_layernorm.weight" - ] - state_dict[f"layers.{layer}.attention.wkv_b.weight"] = hf_state_dict[ - f"model.layers.{layer}.self_attn.kv_b_proj.weight" + # Norm layers + state_dict[f"language_model.layers.{layer}.ln_attn.weight"] = hf_state_dict[ + f"language_model.model.layers.{layer}.input_layernorm.weight" ] - state_dict[f"layers.{layer}.attention.wo.weight"] = hf_state_dict[ - f"model.layers.{layer}.self_attn.o_proj.weight" + state_dict[f"language_model.layers.{layer}.ln_mlp.weight"] = hf_state_dict[ + f"language_model.model.layers.{layer}.post_attention_layernorm.weight" ] - # MLP or MoE - if layer < config.first_k_dense_replace: - # Regular MLP (FeedForward) - state_dict[f"layers.{layer}.feed_forward.w1.weight"] = hf_state_dict[ - f"model.layers.{layer}.mlp.gate_proj.weight" - ] - state_dict[f"layers.{layer}.feed_forward.w3.weight"] = hf_state_dict[ - f"model.layers.{layer}.mlp.up_proj.weight" - ] - state_dict[f"layers.{layer}.feed_forward.w2.weight"] = hf_state_dict[ - f"model.layers.{layer}.mlp.down_proj.weight" - ] - else: - # MoE - num_experts = config.n_routed_experts - hidden_dim = config.moe_intermediate_size - - # Router - state_dict[f"layers.{layer}.moe.router.gate.weight"] = hf_state_dict[ - f"model.layers.{layer}.mlp.gate.weight" - ] - - # Experts - w1_list = [] - w2_list = [] - w3_list = [] - for i in range(num_experts): - w1_list.append( - hf_state_dict[ - f"model.layers.{layer}.mlp.experts.{i}.gate_proj.weight" - ].t() - ) - w3_list.append( - hf_state_dict[ - f"model.layers.{layer}.mlp.experts.{i}.up_proj.weight" - ].t() - ) - w2_list.append( - hf_state_dict[ - f"model.layers.{layer}.mlp.experts.{i}.down_proj.weight" - ].t() + # Attention layers + for wn, hn, nh in [ + ("wq", "q_proj", n_heads_per_shard), + ("wk", "k_proj", n_kv_heads_per_shard), + ("wv", "v_proj", n_kv_heads_per_shard), + ]: + if wn != "wv": + # Need to reverse the permutation for sliced rotary + + state_dict[f"language_model.layers.{layer}.attn.{wn}.weight"] = reverse_permute( + hf_state_dict[f"language_model.model.layers.{layer}.self_attn.{hn}.weight"], + n_heads if wn == "wq" else num_key_value_heads, + dim1=4096 if wn == "wq" else int(key_value_dim*0.8), + dim2=dim, ) + else: - state_dict[f"layers.{layer}.moe.experts.w1"] = torch.stack(w1_list) - state_dict[f"layers.{layer}.moe.experts.w3"] = torch.stack(w3_list) - state_dict[f"layers.{layer}.moe.experts.w2"] = torch.stack(w2_list) - - bias_key = f"model.layers.{layer}.mlp.gate.e_score_correction_bias" - if bias_key in hf_state_dict: - state_dict[f"layers.{layer}.moe.router.expert_bias"] = hf_state_dict[ - bias_key + state_dict[f"language_model.layers.{layer}.attn.{wn}.weight"] = hf_state_dict[ + f"language_model.model.layers.{layer}.self_attn.{hn}.weight" ] - # Ephemeral for training, but torchtitan expects it - state_dict[f"layers.{layer}.moe.tokens_per_expert"] = torch.zeros( - num_experts, dtype=torch.float32 - ) - # Shared expert (if exists) - if config.n_shared_experts is not None: - state_dict[f"layers.{layer}.moe.shared_expert.w1"] = ( - hf_state_dict[ - f"model.layers.{layer}.mlp.shared_experts.gate_proj.weight" - ] - .t() - .unsqueeze(0) - ) - state_dict[f"layers.{layer}.moe.shared_expert.w3"] = ( - hf_state_dict[ - f"model.layers.{layer}.mlp.shared_experts.up_proj.weight" - ] - .t() - .unsqueeze(0) - ) - state_dict[f"layers.{layer}.moe.shared_expert.w2"] = ( - hf_state_dict[ - f"model.layers.{layer}.mlp.shared_experts.down_proj.weight" - ] - .t() - .unsqueeze(0) - ) + state_dict[f"language_model.layers.{layer}.attn.wo.weight"] = hf_state_dict[ + f"language_model.model.layers.{layer}.self_attn.o_proj.weight" + ] - state_dict["norm.weight"] = hf_state_dict["model.norm.weight"] - state_dict["tok_embeddings.weight"] = hf_state_dict["model.embed_tokens.weight"] - state_dict["output.weight"] = hf_state_dict["lm_head.weight"] + # Feed-forward layers + state_dict[f"language_model.layers.{layer}.mlp.w1.weight"] = hf_state_dict[ + f"language_model.model.layers.{layer}.mlp.gate_proj.weight" + ] + state_dict[f"language_model.layers.{layer}.mlp.w2.weight"] = hf_state_dict[ + f"language_model.model.layers.{layer}.mlp.down_proj.weight" + ] + state_dict[f"language_model.layers.{layer}.mlp.w3.weight"] = hf_state_dict[ + f"language_model.model.layers.{layer}.mlp.up_proj.weight" + ] + + # Language model norm and embeddings + state_dict["language_model.norm.weight"] = hf_state_dict["language_model.model.norm.weight"] + + # Handling embeddings + state_dict["language_model.tok_embeddings.weight"] = hf_state_dict["language_model.model.embed_tokens.weight"] + # If fusion embedding exists in the HF model + + state_dict["language_model.output.weight"] = hf_state_dict["language_model.lm_head.weight"] + + # Vision tower components + if "vision_tower.ln_pre.weight" in hf_state_dict: + # Copy over vision tower weights, restructuring to put them under model.vision_encoder.pixtral_vision + vision_keys = [k for k in hf_state_dict.keys() if k.startswith("vision_tower.")] + for key in vision_keys: + # Replace vision_tower with vision_encoder.pixtral_vision in the key path + new_key = key.replace("vision_tower", "vision_encoder.pixtral_vision") + state_dict[new_key] = hf_state_dict[key] + + # Multi-modal projector + mm_keys = [k for k in hf_state_dict.keys() if k.startswith("multi_modal_projector.")] + for key in mm_keys: + state_dict["vision_encoder." + key] = hf_state_dict[key] + + # TODO figure out how to not hardcode + dims_per_head = 128 + + # NOTE: precompute freqs_cis because must be persisted by default in torchtitan + state_dict["language_model.freqs_cis"] = precompute_freqs_cis( + dims_per_head, + max_seq_len, + text_config.rope_theta, + ) logger.info(f"Writing to DCP at '{output_dir}'") output_dir.mkdir(parents=True, exist_ok=True) - storage_writer = DCP.filesystem.FileSystemWriter(output_dir, thread_count=1) - DCP.save(state_dict, storage_writer=storage_writer, no_dist=True) + storage_writer = DCP.filesystem.FileSystemWriter(output_dir, thread_count=8) + + DCP.save({"model": state_dict}, storage_writer=storage_writer) tokenizer_dir = output_dir / "tokenizer" tokenizer_dir.mkdir(parents=True, exist_ok=True) tok.save_pretrained(tokenizer_dir) if __name__ == "__main__": - init_logger() - parser = argparse.ArgumentParser( - description="Convert DeepSeek V3 weights to DCP format." - ) + parser = argparse.ArgumentParser(description="Convert Mistral3 weights to DCP format.") + parser.add_argument("mistral_model", type=Path, help="HF Model in Mistral3 format") + parser.add_argument("output_dir", type=Path, help="Output directory for DCP.") parser.add_argument( - "deepseek_model", type=str, help="HF Model in DeepSeek V3 format" + "--max_seq_len", + type=int, + default=131072, + help="The maximum sequence length of the model.", ) - parser.add_argument("output_dir", type=Path, help="Output directory for DCP.") args = parser.parse_args() - convert_deepseekv3_weights(args.deepseek_model, args.output_dir) + convert_mistral3_weights( + args.mistral_model, args.output_dir, max_seq_len=args.max_seq_len + ) diff --git a/scripts/convert_mistral_hf_to_dcp_2.py b/scripts/convert_mistral_hf_to_dcp_2.py new file mode 100644 index 0000000000..ef544345ff --- /dev/null +++ b/scripts/convert_mistral_hf_to_dcp_2.py @@ -0,0 +1,218 @@ +# Copyright (c) Meta Platforms, Inc. and affiliates. +# All rights reserved. +# +# This source code is licensed under the BSD-style license found in the +# LICENSE file in the root directory of this source tree. + +import argparse +from pathlib import Path + +import torch +import torch.distributed.checkpoint as DCP + +from torchtitan.tools.logging import logger +from torchtitan.models.mistral3.model.model import precompute_freqs_cis + +from transformers import AutoTokenizer, Mistral3Config + + +# permute for sliced rotary +def permute(w, n_heads, dim1, dim2): + return ( + w.view(n_heads, dim1 // n_heads // 2, 2, dim2) + .transpose(1, 2) + .reshape(dim1, dim2) + ) + + +# And reversed +def reverse_permute(w, n_heads, dim1, dim2): + return ( + w.view(n_heads, 2, dim1 // n_heads // 2, dim2) + .transpose(1, 2) + .reshape(dim1, dim2) + ) + + +@torch.inference_mode() +def convert_mistral3_weights(mistral_model, output_dir, max_seq_len: int): + # Loading the model directly might be too large, so we'll use safetensors to load the weights + from safetensors import safe_open + import os + import json + + # Load the config + config_path = os.path.join(mistral_model, "config.json") + with open(config_path, "r") as f: + config_dict = json.load(f) + + config = Mistral3Config.from_dict(config_dict) + tok = AutoTokenizer.from_pretrained(mistral_model) + + # Find all safetensors files + index_path = os.path.join(mistral_model, "model.safetensors.index.json") + if os.path.exists(index_path): + with open(index_path, "r") as f: + index = json.load(f) + weight_map = index["weight_map"] + all_files = set(weight_map.values()) + else: + # If no index, look for a single safetensors file + safetensors_files = [f for f in os.listdir(mistral_model) if f.endswith(".safetensors")] + if len(safetensors_files) == 1: + all_files = [safetensors_files[0]] + else: + raise ValueError("Multiple safetensors files found without an index file") + + # Extract language model parameters from the text config + text_config = config.text_config + n_layers = text_config.num_hidden_layers + n_heads = text_config.num_attention_heads + dim = text_config.hidden_size + dims_per_head = dim // n_heads + + logger.info(f"Loading original Mistral3 weights from {mistral_model}") + + state_dict = {} + n_heads_per_shard = n_heads + num_key_value_heads = text_config.num_key_value_heads + n_kv_heads_per_shard = num_key_value_heads + key_value_dim = dims_per_head * num_key_value_heads + + # Load and process weights + hf_state_dict = {} + for filename in all_files: + filepath = os.path.join(mistral_model, filename) + with safe_open(filepath, framework="pt") as f: + for key in f.keys(): + hf_state_dict[key] = f.get_tensor(key) + + # Process language model layers + for layer in range(n_layers): + # Map from HF to torchtitan structure + # Based on the keys we found in the checkpoint + + # Norm layers + state_dict[f"language_model.layers.{layer}.ln_attn.weight"] = hf_state_dict[ + f"language_model.model.layers.{layer}.input_layernorm.weight" + ] + state_dict[f"language_model.layers.{layer}.ln_mlp.weight"] = hf_state_dict[ + f"language_model.model.layers.{layer}.post_attention_layernorm.weight" + ] + + # Attention layers + for wn, hn, nh in [ + ("wq", "q_proj", n_heads_per_shard), + ("wk", "k_proj", n_kv_heads_per_shard), + ("wv", "v_proj", n_kv_heads_per_shard), + ]: + if wn != "wv": + # Need to reverse the permutation for sliced rotary + + state_dict[f"language_model.layers.{layer}.attn.{wn}.weight"] = reverse_permute( + hf_state_dict[f"language_model.model.layers.{layer}.self_attn.{hn}.weight"], + n_heads if wn == "wq" else num_key_value_heads, + dim1=4096 if wn == "wq" else int(key_value_dim*0.8), + dim2=dim, + ) + else: + + state_dict[f"language_model.layers.{layer}.attn.{wn}.weight"] = hf_state_dict[ + f"language_model.model.layers.{layer}.self_attn.{hn}.weight" + ] + + state_dict[f"language_model.layers.{layer}.attn.wo.weight"] = hf_state_dict[ + f"language_model.model.layers.{layer}.self_attn.o_proj.weight" + ] + + # Feed-forward layers + state_dict[f"language_model.layers.{layer}.mlp.w1.weight"] = hf_state_dict[ + f"language_model.model.layers.{layer}.mlp.gate_proj.weight" + ] + state_dict[f"language_model.layers.{layer}.mlp.w2.weight"] = hf_state_dict[ + f"language_model.model.layers.{layer}.mlp.down_proj.weight" + ] + state_dict[f"language_model.layers.{layer}.mlp.w3.weight"] = hf_state_dict[ + f"language_model.model.layers.{layer}.mlp.up_proj.weight" + ] + + # Language model norm and embeddings + state_dict["language_model.norm.weight"] = hf_state_dict["language_model.model.norm.weight"] + + # Handling embeddings + state_dict["language_model.tok_embeddings.weight"] = hf_state_dict["language_model.model.embed_tokens.weight"] + # If fusion embedding exists in the HF model + + state_dict["language_model.output.weight"] = hf_state_dict["language_model.lm_head.weight"] + + + + # Vision tower components + if "vision_tower.ln_pre.weight" in hf_state_dict: + # Copy over vision tower weights, restructuring to put them under model.vision_encoder.pixtral_vision + vision_keys = [k for k in hf_state_dict.keys() if k.startswith("vision_tower.")] + for key in vision_keys: + state_dict[key] = hf_state_dict[key] + # # Replace vision_tower with vision_encoder.pixtral_vision in the key path + # new_key = key.replace("vision_tower", "vision_encoder.pixtral_vision") + # state_dict[new_key] = hf_state_dict[key] + #state_dict[''] + + # Multi-modal projector + mm_keys = [k for k in hf_state_dict.keys() if k.startswith("multi_modal_projector.")] + for key in mm_keys: + state_dict[ key] = hf_state_dict[key] + + # TODO figure out how to not hardcode + dims_per_head = 128 + + # NOTE: precompute freqs_cis because must be persisted by default in torchtitan + state_dict["language_model.freqs_cis"] = precompute_freqs_cis( + dims_per_head, + max_seq_len, + text_config.rope_theta, + ) + + # replace all language_model. with model.language_model. + new_state_dict = {} + for key, value in state_dict.items(): + if "language_model." in key: + new_key = key.replace("language_model.", "model.language_model.") + new_state_dict[new_key] = value + elif "vision_tower." in key: + new_key = key.replace("vision_tower.", "model.vision_tower.") + new_state_dict[new_key] = value + elif "multi_modal_projector." in key: + new_key = key.replace("multi_modal_projector.", "model.multi_modal_projector.") + new_state_dict[new_key] = value + else: + new_state_dict[key] = value + + state_dict = new_state_dict + + + logger.info(f"Writing to DCP at '{output_dir}'") + output_dir.mkdir(parents=True, exist_ok=True) + storage_writer = DCP.filesystem.FileSystemWriter(output_dir, thread_count=8) + + DCP.save(state_dict, storage_writer=storage_writer) + tokenizer_dir = output_dir / "tokenizer" + tokenizer_dir.mkdir(parents=True, exist_ok=True) + tok.save_pretrained(tokenizer_dir) + + +if __name__ == "__main__": + parser = argparse.ArgumentParser(description="Convert Mistral3 weights to DCP format.") + parser.add_argument("mistral_model", type=Path, help="HF Model in Mistral3 format") + parser.add_argument("output_dir", type=Path, help="Output directory for DCP.") + parser.add_argument( + "--max_seq_len", + type=int, + default=131072, + help="The maximum sequence length of the model.", + ) + args = parser.parse_args() + + convert_mistral3_weights( + args.mistral_model, args.output_dir, max_seq_len=args.max_seq_len + ) diff --git a/scripts/preprocess_data.py b/scripts/preprocess_data.py index 2ada83bd34..040b69ebc1 100644 --- a/scripts/preprocess_data.py +++ b/scripts/preprocess_data.py @@ -195,6 +195,7 @@ def __init__( self.ds = ds self.max_seq_len = max_seq_len self.padding_idx = padding_idx + self.padding_idx = 0 self.max_packs = max_packs self.split_across_pack = split_across_pack self.packs = [] @@ -653,4 +654,4 @@ def _tokenize_chat(sample): parser.add_argument("--show-example", action="store_true") args = parser.parse_args() - main(args) + main(args) \ No newline at end of file diff --git a/torchtitan/models/mistral3/__init__.py b/torchtitan/models/mistral3/__init__.py index 54ebbb4b9a..a2bd9fcc6b 100644 --- a/torchtitan/models/mistral3/__init__.py +++ b/torchtitan/models/mistral3/__init__.py @@ -33,6 +33,74 @@ # Define model configurations mistral3_configs = { + "24B_samplepacked": VLMArgs( + # vision encoder part + vision_embed_dim=1024, + vision_num_layers=24, + vision_num_heads=16, + vision_feature_layer=-2, + patch_size=14, + image_size=1540, + in_channels=3, + spatial_merge_size=2, + + # projection part + num_layers_projection=8, + projector_hidden_act="gelu", + multimodal_projector_bias=False, + + # decoder part + decoder_embed_dim=5120, + decoder_num_layers=40, + decoder_num_heads=32, + decoder_num_kv_heads=8, + fusion_interval=8, + image_token_index=10, + + # common part + vocab_size=131072, + multiple_of=256, + ffn_dim_multiplier=None, + norm_eps=1e-5, + rope_theta=1000000000.0, + max_seq_len=131072, + use_flex_attn=True, + attn_mask_type="block_causal_by_sequence_lengths", + ), + "debug_samplepacked": VLMArgs( + # vision encoder part + vision_embed_dim=1024, + vision_num_layers=24, + vision_num_heads=16, + vision_feature_layer=-2, + patch_size=14, + image_size=1540, + in_channels=3, + spatial_merge_size=2, + + # projection part + num_layers_projection=8, + projector_hidden_act="gelu", + multimodal_projector_bias=False, + + # decoder part + decoder_embed_dim=5120, + decoder_num_layers=1, + decoder_num_heads=32, + decoder_num_kv_heads=8, + fusion_interval=8, + image_token_index=10, + + # common part + vocab_size=131072, + multiple_of=256, + ffn_dim_multiplier=None, + norm_eps=1e-5, + rope_theta=1000000000.0, + max_seq_len=131072, + use_flex_attn=True, + attn_mask_type="block_causal_by_sequence_lengths", + ), "24B": VLMArgs( # vision encoder part vision_embed_dim=1024, @@ -57,6 +125,40 @@ fusion_interval=8, image_token_index=10, + # common part + vocab_size=131072, + multiple_of=256, + ffn_dim_multiplier=None, + norm_eps=1e-5, + rope_theta=1000000000.0, + max_seq_len=131072, + use_flex_attn=True, + attn_mask_type="block_causal", + ), + "debug": VLMArgs( + # vision encoder part + vision_embed_dim=1024, + vision_num_layers=24, + vision_num_heads=16, + vision_feature_layer=-2, + patch_size=14, + image_size=1540, + in_channels=3, + spatial_merge_size=2, + + # projection part + num_layers_projection=8, + projector_hidden_act="gelu", + multimodal_projector_bias=False, + + # decoder part + decoder_embed_dim=5120, + decoder_num_layers=2, + decoder_num_heads=32, + decoder_num_kv_heads=8, + fusion_interval=8, + image_token_index=10, + # common part vocab_size=131072, multiple_of=256, diff --git a/torchtitan/models/mistral3/model/args.py b/torchtitan/models/mistral3/model/args.py index b99aa85bc1..bd23edf76f 100644 --- a/torchtitan/models/mistral3/model/args.py +++ b/torchtitan/models/mistral3/model/args.py @@ -57,8 +57,9 @@ class VLMArgs(BaseModelArgs): norm_eps: float = 1e-5 rope_theta: float = 1000000000.0 max_seq_len: int = 131072 - activation: nn.Module = nn.GELU() + activation: nn.Module = nn.SiLU() depth_init: bool = True + norm_type: str = "rmsnorm" n_layers: int = 40 n_heads: int = 32 diff --git a/torchtitan/models/mistral3/model/model.py b/torchtitan/models/mistral3/model/model.py index 6a95d23150..dab6776b98 100644 --- a/torchtitan/models/mistral3/model/model.py +++ b/torchtitan/models/mistral3/model/model.py @@ -23,6 +23,64 @@ from .args import VLMArgs + +def build_norm(norm_type: str, dim: int, eps: float = 1e-6): + """ + Builds the specified normalization layer based on the norm_type. + + Args: + norm_type (str): The type of normalization layer to build. + Supported types: layernorm, np_layernorm, rmsnorm + dim (int): The dimension of the normalization layer. + eps (float, optional): The epsilon value for numerical stability. Defaults to 1e-6. + + Returns: + The built normalization layer. + + Raises: + NotImplementedError: If an unknown norm_type is provided. + """ + norm_type = norm_type.lower() # Normalize to lowercase + + if norm_type == "layernorm": + return nn.LayerNorm(dim, eps=eps, bias=False) + elif norm_type == "np_layernorm": + return nn.LayerNorm(dim, eps=eps, elementwise_affine=False, bias=False) + elif norm_type == "rmsnorm": + return RMSNorm(dim, eps=eps) + else: + raise NotImplementedError(f"Unknown norm_type: '{norm_type}'") + + +class RMSNorm(nn.Module): + """ + Initialize the RMSNorm normalization layer. + + Args: + dim (int): The dimension of the input tensor. + eps (float, optional): A small value added to the denominator for numerical stability. Default is 1e-6. + + Attributes: + eps (float): A small value added to the denominator for numerical stability. + weight (nn.Parameter): Learnable scaling parameter. + + """ + + def __init__(self, dim: int, eps: float = 1e-6): + super().__init__() + self.eps = eps + self.weight = nn.Parameter(torch.ones(dim)) + + def _norm(self, x: torch.Tensor): + return x * torch.rsqrt(x.pow(2).mean(-1, keepdim=True) + self.eps) + + def forward(self, x: torch.Tensor): + output = self._norm(x.float()).type_as(x) + return output * self.weight + + def reset_parameters(self): + torch.nn.init.ones_(self.weight) # type: ignore + def precompute_freqs_cis(dim: int, end: int, theta: float = 10000.0) -> torch.Tensor: """ Precompute the frequency tensor for complex exponentials (cis) with given dimensions. @@ -295,7 +353,8 @@ def forward(self, x: torch.Tensor, freqs_cis: Optional[torch.Tensor] = None, pos xv = values.transpose(1, 2) # (bs, n_local_heads, seqlen, head_dim) #output = torch.nn.functional.scaled_dot_product_attention(xq, xk, xv) - output = self.sdpa(xq, xk, xv) + #output = self.sdpa(xq, xk, xv) + output = torch.nn.functional.scaled_dot_product_attention(xq, xk, xv, is_causal=True) output = output.transpose(1, 2).contiguous() # (bs, seqlen, n_local_heads, head_dim) output = output.view(bs, seqlen, -1) @@ -334,7 +393,7 @@ def init_weights(self, init_std: float): nn.init.trunc_normal_(self.w1.weight, mean=0.0, std=0.02) for linear in (self.w2, self.w3): nn.init.trunc_normal_(linear.weight, mean=0.0, std=init_std) - + class TransformerBlock(nn.Module): def __init__( self, @@ -342,16 +401,16 @@ def __init__( ): super().__init__() self.attn = Attention(config, is_vision=False) - #self.ln_attn = build_norm("rmsnorm", config.decoder_embed_dim, config.norm_eps) - self.ln_attn = nn.RMSNorm(config.decoder_embed_dim, config.norm_eps) + self.ln_attn = build_norm("rmsnorm", config.decoder_embed_dim, config.norm_eps) + #self.ln_attn = nn.RMSNorm(config.decoder_embed_dim, config.norm_eps) self.mlp = FeedForward( dim=config.decoder_embed_dim, hidden_dim=4 * config.decoder_embed_dim, multiple_of=config.multiple_of, ffn_dim_multiplier=config.ffn_dim_multiplier, ) - #self.ln_mlp = build_norm("rmsnorm", config.decoder_embed_dim, config.norm_eps) - self.ln_mlp = nn.RMSNorm(config.decoder_embed_dim, config.norm_eps) + self.ln_mlp = build_norm("rmsnorm", config.decoder_embed_dim, config.norm_eps) + #self.ln_mlp = nn.RMSNorm(config.decoder_embed_dim, config.norm_eps) self.image_token_id = config.image_token_id @@ -400,7 +459,7 @@ def __init__(self, config: VLMArgs): super().__init__() self.register_buffer( - "freqs_cis", self._precompute_freqs_cis(config), persistent=False + "freqs_cis", self._precompute_freqs_cis(config), persistent=True ) self.layers = nn.ModuleDict() @@ -410,10 +469,11 @@ def __init__(self, config: VLMArgs): self.layers[str(idx)] = decoder_layer self.tok_embeddings = nn.Embedding(131072, config.decoder_embed_dim) - #self.norm = build_norm( - # config.norm_type, dim=config.decoder_embed_dim, eps=config.norm_eps + self.norm = build_norm( + config.norm_type, dim=config.decoder_embed_dim, eps=config.norm_eps + ) #self.norm=nn.LayerNorm(config.decoder_embed_dim, eps=config.norm_eps) - self.norm = nn.RMSNorm(config.decoder_embed_dim, eps=config.norm_eps) + #self.norm = nn.RMSNorm(config.decoder_embed_dim, eps=config.norm_eps) self.output = nn.Linear( config.decoder_embed_dim, 131072, bias=False ) @@ -505,12 +565,16 @@ def forward( if image_features is not None: for i, i_image_features in enumerate(image_features): + if i_image_features is not None: + + #image_features = i_image_features image_features = i_image_features.unsqueeze(0) special_image_mask = self.get_placeholder_mask( input_ids=tokens[i].unsqueeze(0), inputs_embeds=h[i].unsqueeze(0), image_features=image_features ) h[i] = h[i].masked_scatter(special_image_mask, image_features) + if image_features is None: print("image features is None") @@ -594,6 +658,7 @@ def init_weights( buffer_device = buffer_device or self.language_model.freqs_cis.device with torch.device(buffer_device): self.language_model._precompute_freqs_cis(self.config) + """ # Initialize language model components if hasattr(self.language_model, 'init_weights'): @@ -608,6 +673,7 @@ def init_weights( if hasattr(self, 'multi_modal_projector') and self.multi_modal_projector is not None: if hasattr(self.multi_modal_projector, 'init_weights'): self.multi_modal_projector.init_weights() + """ def get_image_features( self, @@ -643,33 +709,31 @@ def forward( image_features = None all_image_features = [] - if position_ids is not None: - - all_image_features = [] + for i, batch in enumerate(images): + i_image_features = None - for i, batch in enumerate(images): + if batch is not None: i_image_features = None + image_features_batch = [] + images = [load_image(im) if isinstance(im, str) else im for im in batch] - if batch is not None: - i_image_features = None - image_features_batch = [] - images = [load_image(im) if isinstance(im, str) else im for im in batch] + image_inputs = self.preprocessor.image_processor(images, patch_size=self.config.patch_size * 2) - image_inputs = self.preprocessor.image_processor(images, patch_size=self.config.patch_size * 2) + #image_encoder_outputs = self.get_image_features(image_inputs["pixel_values"].to(self.vision_tower.device, dtype=torch.float16), 2, image_inputs["image_sizes"]) + image_encoder_outputs = self.get_image_features(image_inputs["pixel_values"].to(self.vision_tower.device, dtype=self.vision_tower.dtype), 2, image_inputs["image_sizes"]) - image_encoder_outputs = self.get_image_features(image_inputs["pixel_values"].to(self.vision_tower.device, dtype=torch.bfloat16), 2, image_inputs["image_sizes"]) + # Collect image features from all images in the batch + i_image_features = image_encoder_outputs - # Collect image features from all images in the batch - i_image_features = image_encoder_outputs - if i_image_features.shape[0] > 1: - i_image_features = torch.cat(i_image_features, dim=0) # Shape: (1, sum_of_image_patches_of_all_images) - i_image_features = i_image_features.unsqueeze(0) + if i_image_features.shape[0] > 1: + i_image_features = torch.cat(i_image_features, dim=0) # Shape: (1, sum_of_image_patches_of_all_images) + i_image_features = i_image_features.unsqueeze(0) - all_image_features.append(i_image_features) + all_image_features.append(i_image_features) - else: - return NotImplementedError("Position IDs are required for multimodal input.") + #else: + # return NotImplementedError("Position IDs are required for multimodal input.") if self.config.use_flex_attn: init_attention_mask(input_ids, eos_id=self.config.eos_id, sequence_lengths=sequence_lengths) diff --git a/torchtitan/models/mistral3/train_configs/mistral24b_debug.toml b/torchtitan/models/mistral3/train_configs/mistral24b_debug.toml new file mode 100644 index 0000000000..4166d13259 --- /dev/null +++ b/torchtitan/models/mistral3/train_configs/mistral24b_debug.toml @@ -0,0 +1,66 @@ +# torchtitan Config.toml +# NOTE: this toml config is a preset for 64 A100 GPUs. + +[job] +dump_folder = "./outputs" +description = "Mistral 24B training" + + +[profiling] +enable_profiling = true +save_traces_folder = "profile_trace" +profile_freq = 100 + +[metrics] +log_freq = 1 +enable_tensorboard = false +enable_wandb = true +save_tb_folder = "tb" + +[model] +name = "mistral3" +flavor = "debug_samplepacked" +tokenizer_path = "/home/shared/torchtitan-conversions/mistral_small_3.1_instruct/tokenizer" + +[optimizer] +name = "AdamW" +lr = 2e-4 +eps = 1e-8 + +[lr_scheduler] +warmup_steps = 0 # lr scheduler warm up + +[training] +local_batch_size = 1 +seq_len = 8000 +max_norm = 1.0 # grad norm clipping +steps = 1000 +compile = false +dataset = "hermes4" +dataset_path = "./multimodal_dataset" +dataset_type = "preprocessed_multimodal" + +[parallelism] +data_parallel_replicate_degree = 1 +data_parallel_shard_degree = -1 +tensor_parallel_degree = 1 +pipeline_parallel_degree = 1 +context_parallel_degree = 1 + +[checkpoint] +enable_checkpoint = true +#initial_load_path = "/home/shared/torchtitan-conversions/mistral_small_3.1_instruct" +folder = "checkpoint" +interval = 500 +last_save_model_weights_only = false +export_dtype = "float32" +async_mode = "disabled" # ["disabled", "async", "async_with_pinned_mem"] + +[activation_checkpoint] +mode = "none" # ["none", "selective", "full"] +selective_ac_option = "op" # "int" = ac every positive int layer or 'op', ac based on ops policy + +[float8] +enable_fsdp_float8_all_gather = false +precompute_float8_dynamic_scale_for_fsdp = false +filter_fqns = ["output"] diff --git a/torchtitan/models/mistral3/train_configs/mistral24b_finetuning.toml b/torchtitan/models/mistral3/train_configs/mistral24b_finetuning.toml index 23227d3b7c..24ed2aa3aa 100644 --- a/torchtitan/models/mistral3/train_configs/mistral24b_finetuning.toml +++ b/torchtitan/models/mistral3/train_configs/mistral24b_finetuning.toml @@ -12,29 +12,29 @@ save_traces_folder = "profile_trace" profile_freq = 100 [metrics] -log_freq = 10 +log_freq = 1 enable_tensorboard = false enable_wandb = true save_tb_folder = "tb" [model] name = "mistral3" -flavor = "24B" +flavor = "24B_samplepacked" tokenizer_path = "/home/shared/torchtitan-conversions/mistral_small_3.1_instruct/tokenizer" [optimizer] name = "AdamW" -lr = 2e-4 +lr = 2e-6 eps = 1e-8 [lr_scheduler] -warmup_steps = 200 # lr scheduler warm up +warmup_steps = 0 # lr scheduler warm up [training] local_batch_size = 1 seq_len = 8000 max_norm = 1.0 # grad norm clipping -steps = 1000 +steps = 100 compile = false dataset = "hermes4" dataset_path = "./multimodal_dataset" diff --git a/torchtitan/models/mistral3/train_configs/mistral24b_inference.toml b/torchtitan/models/mistral3/train_configs/mistral24b_inference.toml new file mode 100644 index 0000000000..514c79036d --- /dev/null +++ b/torchtitan/models/mistral3/train_configs/mistral24b_inference.toml @@ -0,0 +1,66 @@ +# torchtitan Config.toml +# NOTE: this toml config is a preset for 64 A100 GPUs. + +[job] +dump_folder = "./outputs" +description = "Mistral 24B training" + + +[profiling] +enable_profiling = true +save_traces_folder = "profile_trace" +profile_freq = 100 + +[metrics] +log_freq = 10 +enable_tensorboard = false +enable_wandb = true +save_tb_folder = "tb" + +[model] +name = "mistral3" +flavor = "24B" +tokenizer_path = "/home/shared/torchtitan-conversions/mistral_small_3.1_instruct/tokenizer" + +[optimizer] +name = "AdamW" +lr = 2e-4 +eps = 1e-8 + +[lr_scheduler] +warmup_steps = 0 # lr scheduler warm up + +[training] +local_batch_size = 1 +seq_len = 16384 +max_norm = 1.0 # grad norm clipping +steps = 100 +compile = false +dataset = "hermes4" +dataset_path = "./multimodal_dataset" +dataset_type = "preprocessed_multimodal" + +[parallelism] +data_parallel_replicate_degree = 1 +data_parallel_shard_degree = -1 +tensor_parallel_degree = 1 +pipeline_parallel_degree = 1 +context_parallel_degree = 1 + +[checkpoint] +enable_checkpoint = true +initial_load_path = "/home/shared/torchtitan-conversions/mistral_small_3.1_instruct" +folder = "checkpoint" +interval = 500 +last_save_model_weights_only = false +export_dtype = "float32" +async_mode = "disabled" # ["disabled", "async", "async_with_pinned_mem"] + +[activation_checkpoint] +mode = "none" # ["none", "selective", "full"] +selective_ac_option = "op" # "int" = ac every positive int layer or 'op', ac based on ops policy + +[float8] +enable_fsdp_float8_all_gather = false +precompute_float8_dynamic_scale_for_fsdp = false +filter_fqns = ["output"] From f252e0d472b9e56e7882e10e67bc5d2fa9f9cd14 Mon Sep 17 00:00:00 2001 From: Artem Yatsenko Date: Thu, 21 Aug 2025 21:57:19 +0000 Subject: [PATCH 23/28] update gitignore --- .gitignore | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/.gitignore b/.gitignore index 5486de379e..39991378c0 100644 --- a/.gitignore +++ b/.gitignore @@ -42,3 +42,17 @@ Sessionx.vim # macOS dir files .DS_Store + +# Ignore everything inside scripts/ +scripts/* + +# Keep Python files in scripts/ +!scripts/*.py + +# Keep contents of these subdirectories +!scripts/example/ +!scripts/example/** +!scripts/generate/ +!scripts/generate/** +!scripts/estimate/ +!scripts/estimate/** From 220d7c80e755ac5e03a61ac927e8ac52441e713b Mon Sep 17 00:00:00 2001 From: Artem Yatsenko Date: Thu, 21 Aug 2025 21:57:38 +0000 Subject: [PATCH 24/28] small changes to scripts --- scripts/example/data-00000-of-00001.arrow | Bin 0 -> 290978 bytes scripts/example/data-00000-of-00032.arrow | Bin 0 -> 50146 bytes scripts/example/data-00000-of-00064.arrow | Bin 0 -> 193714 bytes scripts/example/data-00001-of-00032.arrow | Bin 0 -> 74290 bytes scripts/example/data-00001-of-00064.arrow | Bin 0 -> 481866 bytes scripts/example/data-00002-of-00032.arrow | Bin 0 -> 98434 bytes scripts/example/data-00002-of-00064.arrow | Bin 0 -> 577874 bytes scripts/example/data-00003-of-00032.arrow | Bin 0 -> 98434 bytes scripts/example/data-00003-of-00064.arrow | Bin 0 -> 385794 bytes scripts/example/data-00004-of-00032.arrow | Bin 0 -> 74290 bytes scripts/example/data-00004-of-00064.arrow | Bin 0 -> 289786 bytes scripts/example/data-00005-of-00032.arrow | Bin 0 -> 74290 bytes scripts/example/data-00005-of-00064.arrow | Bin 0 -> 673954 bytes scripts/example/data-00006-of-00032.arrow | Bin 0 -> 74290 bytes scripts/example/data-00006-of-00064.arrow | Bin 0 -> 481850 bytes scripts/example/data-00007-of-00032.arrow | Bin 0 -> 25994 bytes scripts/example/data-00007-of-00064.arrow | Bin 0 -> 481858 bytes scripts/example/data-00008-of-00032.arrow | Bin 0 -> 26098 bytes scripts/example/data-00008-of-00064.arrow | Bin 0 -> 385794 bytes scripts/example/data-00009-of-00032.arrow | Bin 0 -> 50146 bytes scripts/example/data-00009-of-00064.arrow | Bin 0 -> 385810 bytes scripts/example/data-00010-of-00032.arrow | Bin 0 -> 74290 bytes scripts/example/data-00010-of-00064.arrow | Bin 0 -> 385802 bytes scripts/example/data-00011-of-00032.arrow | Bin 0 -> 74290 bytes scripts/example/data-00011-of-00064.arrow | Bin 0 -> 385818 bytes scripts/example/data-00012-of-00032.arrow | Bin 0 -> 74290 bytes scripts/example/data-00012-of-00064.arrow | Bin 0 -> 481834 bytes scripts/example/data-00013-of-00032.arrow | Bin 0 -> 25994 bytes scripts/example/data-00013-of-00064.arrow | Bin 0 -> 385810 bytes scripts/example/data-00014-of-00032.arrow | Bin 0 -> 25994 bytes scripts/example/data-00014-of-00064.arrow | Bin 0 -> 481858 bytes scripts/example/data-00015-of-00032.arrow | Bin 0 -> 74290 bytes scripts/example/data-00015-of-00064.arrow | Bin 0 -> 481858 bytes scripts/example/data-00016-of-00032.arrow | Bin 0 -> 74290 bytes scripts/example/data-00016-of-00064.arrow | Bin 0 -> 289762 bytes scripts/example/data-00017-of-00032.arrow | Bin 0 -> 74290 bytes scripts/example/data-00017-of-00064.arrow | Bin 0 -> 577890 bytes scripts/example/data-00018-of-00032.arrow | Bin 0 -> 50146 bytes scripts/example/data-00018-of-00064.arrow | Bin 0 -> 481842 bytes scripts/example/data-00019-of-00032.arrow | Bin 0 -> 50146 bytes scripts/example/data-00019-of-00064.arrow | Bin 0 -> 385818 bytes scripts/example/data-00020-of-00032.arrow | Bin 0 -> 50146 bytes scripts/example/data-00020-of-00064.arrow | Bin 0 -> 481866 bytes scripts/example/data-00021-of-00032.arrow | Bin 0 -> 74290 bytes scripts/example/data-00021-of-00064.arrow | Bin 0 -> 385810 bytes scripts/example/data-00022-of-00032.arrow | Bin 0 -> 74290 bytes scripts/example/data-00022-of-00064.arrow | Bin 0 -> 385810 bytes scripts/example/data-00023-of-00032.arrow | Bin 0 -> 50146 bytes scripts/example/data-00023-of-00064.arrow | Bin 0 -> 481858 bytes scripts/example/data-00024-of-00032.arrow | Bin 0 -> 50146 bytes scripts/example/data-00024-of-00064.arrow | Bin 0 -> 577890 bytes scripts/example/data-00025-of-00032.arrow | Bin 0 -> 25994 bytes scripts/example/data-00025-of-00064.arrow | Bin 0 -> 577914 bytes scripts/example/data-00026-of-00032.arrow | Bin 0 -> 74290 bytes scripts/example/data-00026-of-00064.arrow | Bin 0 -> 481850 bytes scripts/example/data-00027-of-00032.arrow | Bin 0 -> 74290 bytes scripts/example/data-00027-of-00064.arrow | Bin 0 -> 385818 bytes scripts/example/data-00028-of-00032.arrow | Bin 0 -> 74290 bytes scripts/example/data-00028-of-00064.arrow | Bin 0 -> 385810 bytes scripts/example/data-00029-of-00032.arrow | Bin 0 -> 50146 bytes scripts/example/data-00029-of-00064.arrow | Bin 0 -> 289762 bytes scripts/example/data-00030-of-00032.arrow | Bin 0 -> 50146 bytes scripts/example/data-00030-of-00064.arrow | Bin 0 -> 385802 bytes scripts/example/data-00031-of-00032.arrow | Bin 0 -> 50146 bytes scripts/example/data-00031-of-00064.arrow | Bin 0 -> 385810 bytes scripts/example/data-00032-of-00064.arrow | Bin 0 -> 481858 bytes scripts/example/data-00033-of-00064.arrow | Bin 0 -> 481842 bytes scripts/example/data-00034-of-00064.arrow | Bin 0 -> 481858 bytes scripts/example/data-00035-of-00064.arrow | Bin 0 -> 577890 bytes scripts/example/data-00036-of-00064.arrow | Bin 0 -> 289746 bytes scripts/example/data-00037-of-00064.arrow | Bin 0 -> 577874 bytes scripts/example/data-00038-of-00064.arrow | Bin 0 -> 385810 bytes scripts/example/data-00039-of-00064.arrow | Bin 0 -> 385802 bytes scripts/example/data-00040-of-00064.arrow | Bin 0 -> 481826 bytes scripts/example/data-00041-of-00064.arrow | Bin 0 -> 577906 bytes scripts/example/data-00042-of-00064.arrow | Bin 0 -> 481858 bytes scripts/example/data-00043-of-00064.arrow | Bin 0 -> 481850 bytes scripts/example/data-00044-of-00064.arrow | Bin 0 -> 385778 bytes scripts/example/data-00045-of-00064.arrow | Bin 0 -> 289754 bytes scripts/example/data-00046-of-00064.arrow | Bin 0 -> 481842 bytes scripts/example/data-00047-of-00064.arrow | Bin 0 -> 385810 bytes scripts/example/data-00048-of-00064.arrow | Bin 0 -> 481850 bytes scripts/example/data-00049-of-00064.arrow | Bin 0 -> 577882 bytes scripts/example/data-00050-of-00064.arrow | Bin 0 -> 385802 bytes scripts/example/data-00051-of-00064.arrow | Bin 0 -> 577874 bytes scripts/example/data-00052-of-00064.arrow | Bin 0 -> 385810 bytes scripts/example/data-00053-of-00064.arrow | Bin 0 -> 577914 bytes scripts/example/data-00054-of-00064.arrow | Bin 0 -> 289762 bytes scripts/example/data-00055-of-00064.arrow | Bin 0 -> 673914 bytes scripts/example/data-00056-of-00064.arrow | Bin 0 -> 481842 bytes scripts/example/data-00057-of-00064.arrow | Bin 0 -> 481858 bytes scripts/example/data-00058-of-00064.arrow | Bin 0 -> 385802 bytes scripts/example/data-00059-of-00064.arrow | Bin 0 -> 385786 bytes scripts/example/data-00060-of-00064.arrow | Bin 0 -> 481850 bytes scripts/example/data-00061-of-00064.arrow | Bin 0 -> 385810 bytes scripts/example/data-00062-of-00064.arrow | Bin 0 -> 481842 bytes scripts/example/data-00063-of-00064.arrow | Bin 0 -> 385794 bytes scripts/example/dataset_info.json | 43 +++ .../__pycache__/_generation.cpython-311.pyc | Bin 0 -> 3623 bytes .../_vision_generation.cpython-311.pyc | Bin 0 -> 3784 bytes .../__pycache__/test_generate.cpython-311.pyc | Bin 0 -> 13313 bytes scripts/generate/_generation.py | 2 +- scripts/generate/_vision_generation.py | 83 +++++ scripts/generate/run_llama_generate.sh | 2 +- .../generate/run_vision_mistral_generate.sh | 44 +++ scripts/generate/test_generate.py | 2 +- scripts/generate/test_vision_generate.py | 341 ++++++++++++++++++ 107 files changed, 514 insertions(+), 3 deletions(-) create mode 100644 scripts/example/data-00000-of-00001.arrow create mode 100644 scripts/example/data-00000-of-00032.arrow create mode 100644 scripts/example/data-00000-of-00064.arrow create mode 100644 scripts/example/data-00001-of-00032.arrow create mode 100644 scripts/example/data-00001-of-00064.arrow create mode 100644 scripts/example/data-00002-of-00032.arrow create mode 100644 scripts/example/data-00002-of-00064.arrow create mode 100644 scripts/example/data-00003-of-00032.arrow create mode 100644 scripts/example/data-00003-of-00064.arrow create mode 100644 scripts/example/data-00004-of-00032.arrow create mode 100644 scripts/example/data-00004-of-00064.arrow create mode 100644 scripts/example/data-00005-of-00032.arrow create mode 100644 scripts/example/data-00005-of-00064.arrow create mode 100644 scripts/example/data-00006-of-00032.arrow create mode 100644 scripts/example/data-00006-of-00064.arrow create mode 100644 scripts/example/data-00007-of-00032.arrow create mode 100644 scripts/example/data-00007-of-00064.arrow create mode 100644 scripts/example/data-00008-of-00032.arrow create mode 100644 scripts/example/data-00008-of-00064.arrow create mode 100644 scripts/example/data-00009-of-00032.arrow create mode 100644 scripts/example/data-00009-of-00064.arrow create mode 100644 scripts/example/data-00010-of-00032.arrow create mode 100644 scripts/example/data-00010-of-00064.arrow create mode 100644 scripts/example/data-00011-of-00032.arrow create mode 100644 scripts/example/data-00011-of-00064.arrow create mode 100644 scripts/example/data-00012-of-00032.arrow create mode 100644 scripts/example/data-00012-of-00064.arrow create mode 100644 scripts/example/data-00013-of-00032.arrow create mode 100644 scripts/example/data-00013-of-00064.arrow create mode 100644 scripts/example/data-00014-of-00032.arrow create mode 100644 scripts/example/data-00014-of-00064.arrow create mode 100644 scripts/example/data-00015-of-00032.arrow create mode 100644 scripts/example/data-00015-of-00064.arrow create mode 100644 scripts/example/data-00016-of-00032.arrow create mode 100644 scripts/example/data-00016-of-00064.arrow create mode 100644 scripts/example/data-00017-of-00032.arrow create mode 100644 scripts/example/data-00017-of-00064.arrow create mode 100644 scripts/example/data-00018-of-00032.arrow create mode 100644 scripts/example/data-00018-of-00064.arrow create mode 100644 scripts/example/data-00019-of-00032.arrow create mode 100644 scripts/example/data-00019-of-00064.arrow create mode 100644 scripts/example/data-00020-of-00032.arrow create mode 100644 scripts/example/data-00020-of-00064.arrow create mode 100644 scripts/example/data-00021-of-00032.arrow create mode 100644 scripts/example/data-00021-of-00064.arrow create mode 100644 scripts/example/data-00022-of-00032.arrow create mode 100644 scripts/example/data-00022-of-00064.arrow create mode 100644 scripts/example/data-00023-of-00032.arrow create mode 100644 scripts/example/data-00023-of-00064.arrow create mode 100644 scripts/example/data-00024-of-00032.arrow create mode 100644 scripts/example/data-00024-of-00064.arrow create mode 100644 scripts/example/data-00025-of-00032.arrow create mode 100644 scripts/example/data-00025-of-00064.arrow create mode 100644 scripts/example/data-00026-of-00032.arrow create mode 100644 scripts/example/data-00026-of-00064.arrow create mode 100644 scripts/example/data-00027-of-00032.arrow create mode 100644 scripts/example/data-00027-of-00064.arrow create mode 100644 scripts/example/data-00028-of-00032.arrow create mode 100644 scripts/example/data-00028-of-00064.arrow create mode 100644 scripts/example/data-00029-of-00032.arrow create mode 100644 scripts/example/data-00029-of-00064.arrow create mode 100644 scripts/example/data-00030-of-00032.arrow create mode 100644 scripts/example/data-00030-of-00064.arrow create mode 100644 scripts/example/data-00031-of-00032.arrow create mode 100644 scripts/example/data-00031-of-00064.arrow create mode 100644 scripts/example/data-00032-of-00064.arrow create mode 100644 scripts/example/data-00033-of-00064.arrow create mode 100644 scripts/example/data-00034-of-00064.arrow create mode 100644 scripts/example/data-00035-of-00064.arrow create mode 100644 scripts/example/data-00036-of-00064.arrow create mode 100644 scripts/example/data-00037-of-00064.arrow create mode 100644 scripts/example/data-00038-of-00064.arrow create mode 100644 scripts/example/data-00039-of-00064.arrow create mode 100644 scripts/example/data-00040-of-00064.arrow create mode 100644 scripts/example/data-00041-of-00064.arrow create mode 100644 scripts/example/data-00042-of-00064.arrow create mode 100644 scripts/example/data-00043-of-00064.arrow create mode 100644 scripts/example/data-00044-of-00064.arrow create mode 100644 scripts/example/data-00045-of-00064.arrow create mode 100644 scripts/example/data-00046-of-00064.arrow create mode 100644 scripts/example/data-00047-of-00064.arrow create mode 100644 scripts/example/data-00048-of-00064.arrow create mode 100644 scripts/example/data-00049-of-00064.arrow create mode 100644 scripts/example/data-00050-of-00064.arrow create mode 100644 scripts/example/data-00051-of-00064.arrow create mode 100644 scripts/example/data-00052-of-00064.arrow create mode 100644 scripts/example/data-00053-of-00064.arrow create mode 100644 scripts/example/data-00054-of-00064.arrow create mode 100644 scripts/example/data-00055-of-00064.arrow create mode 100644 scripts/example/data-00056-of-00064.arrow create mode 100644 scripts/example/data-00057-of-00064.arrow create mode 100644 scripts/example/data-00058-of-00064.arrow create mode 100644 scripts/example/data-00059-of-00064.arrow create mode 100644 scripts/example/data-00060-of-00064.arrow create mode 100644 scripts/example/data-00061-of-00064.arrow create mode 100644 scripts/example/data-00062-of-00064.arrow create mode 100644 scripts/example/data-00063-of-00064.arrow create mode 100644 scripts/example/dataset_info.json create mode 100644 scripts/generate/__pycache__/_generation.cpython-311.pyc create mode 100644 scripts/generate/__pycache__/_vision_generation.cpython-311.pyc create mode 100644 scripts/generate/__pycache__/test_generate.cpython-311.pyc create mode 100644 scripts/generate/_vision_generation.py create mode 100755 scripts/generate/run_vision_mistral_generate.sh create mode 100644 scripts/generate/test_vision_generate.py diff --git a/scripts/example/data-00000-of-00001.arrow b/scripts/example/data-00000-of-00001.arrow new file mode 100644 index 0000000000000000000000000000000000000000..091bc221715e484b945b7cf08eaba72210ff9ddd GIT binary patch literal 290978 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 literal 0 HcmV?d00001 diff --git a/scripts/example/data-00000-of-00032.arrow b/scripts/example/data-00000-of-00032.arrow new file mode 100644 index 0000000000000000000000000000000000000000..e3f01ab7be5a31c273a63b129f4ce65302a422d0 GIT binary patch literal 50146 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 literal 0 HcmV?d00001 diff --git a/scripts/example/data-00000-of-00064.arrow b/scripts/example/data-00000-of-00064.arrow new file mode 100644 index 0000000000000000000000000000000000000000..5a51d675d57bfc3902928fad1c3c929b9f78b7a5 GIT binary patch literal 193714 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 literal 0 HcmV?d00001 diff --git a/scripts/example/data-00001-of-00032.arrow b/scripts/example/data-00001-of-00032.arrow new file mode 100644 index 0000000000000000000000000000000000000000..77328c3d98995a9952ccea6f37946823da738c4d GIT binary patch literal 74290 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

AHu0 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

G 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 literal 0 HcmV?d00001 diff --git a/scripts/example/data-00002-of-00064.arrow b/scripts/example/data-00002-of-00064.arrow new file mode 100644 index 0000000000000000000000000000000000000000..2911b13088318c99dcd852d358676f9d4a9b52af GIT binary patch literal 577874 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ǵ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 e=U(v literal 0 HcmV?d00001 diff --git a/scripts/example/data-00003-of-00064.arrow b/scripts/example/data-00003-of-00064.arrow new file mode 100644 index 0000000000000000000000000000000000000000..1c6f95c52282d5e3a19f286bd2f7af21cc2c625a GIT binary patch literal 385794 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

! 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