From b82a643d1dbdc602546c455f557c47ee89ff54ee Mon Sep 17 00:00:00 2001 From: Parth Mannan Date: Tue, 16 Dec 2025 15:53:40 -0800 Subject: [PATCH 01/52] Add DeepEP support to Megatron Policy Signed-off-by: Parth Mannan --- examples/configs/grpo_math_1B_megatron.yaml | 3 +++ examples/configs/sft_openmathinstruct2_megatron.yaml | 3 +++ nemo_rl/models/policy/workers/megatron_policy_worker.py | 9 +++++++++ pyproject.toml | 1 + 4 files changed, 16 insertions(+) diff --git a/examples/configs/grpo_math_1B_megatron.yaml b/examples/configs/grpo_math_1B_megatron.yaml index 95d85f74c7..5d998447c7 100644 --- a/examples/configs/grpo_math_1B_megatron.yaml +++ b/examples/configs/grpo_math_1B_megatron.yaml @@ -94,6 +94,9 @@ policy: moe_router_load_balancing_type: "none" # "seq_aux_loss" causes logprob error divergence for grpo moe_router_bias_update_rate: 0.0 # by default, disable bias updates for grpo moe_permute_fusion: false + moe_enable_deepep: false + moe_token_dispatcher_type: "allgather" + moe_shared_expert_overlap: false #gives ~20% training perf speedup with sequence packing apply_rope_fusion: True diff --git a/examples/configs/sft_openmathinstruct2_megatron.yaml b/examples/configs/sft_openmathinstruct2_megatron.yaml index b0f94fff6d..0925a5c29a 100644 --- a/examples/configs/sft_openmathinstruct2_megatron.yaml +++ b/examples/configs/sft_openmathinstruct2_megatron.yaml @@ -92,6 +92,9 @@ policy: # gives ~25% training perf speedup with sequence packing and apply_rope_fusion bias_activation_fusion: True moe_per_layer_logging: False + moe_enable_deepep: false + moe_token_dispatcher_type: "allgather" + moe_shared_expert_overlap: false env_vars: PYTORCH_CUDA_ALLOC_CONF: "expandable_segments:False" diff --git a/nemo_rl/models/policy/workers/megatron_policy_worker.py b/nemo_rl/models/policy/workers/megatron_policy_worker.py index 9d03f6c06b..37bdf52d3b 100644 --- a/nemo_rl/models/policy/workers/megatron_policy_worker.py +++ b/nemo_rl/models/policy/workers/megatron_policy_worker.py @@ -591,6 +591,15 @@ def __init__( model_cfg.moe_router_bias_update_rate = self.cfg["megatron_cfg"][ "moe_router_bias_update_rate" ] + model_cfg.moe_enable_deepep = self.cfg["megatron_cfg"][ + "moe_enable_deepep" + ] + model_cfg.moe_token_dispatcher_type = self.cfg["megatron_cfg"][ + "moe_token_dispatcher_type" + ] + model_cfg.moe_shared_expert_overlap = self.cfg["megatron_cfg"][ + "moe_shared_expert_overlap" + ] model_cfg.moe_permute_fusion = self.cfg["megatron_cfg"]["moe_permute_fusion"] if "layernorm_epsilon" in self.cfg["megatron_cfg"]: diff --git a/pyproject.toml b/pyproject.toml index 6225fe43a7..5fd65d2e8b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -98,6 +98,7 @@ mcore = [ # https://github.com/NVIDIA/TransformerEngine/blob/v2.3/transformer_engine/pytorch/attention/dot_product_attention/utils.py#L108 # https://github.com/facebookresearch/xformers/blob/8354497deb2c04c67fbb2e2ad911e86530da0e90/xformers/ops/fmha/flash.py#L76 "flash-attn==2.8.1", + "deep_ep @ git+https://github.com/deepseek-ai/DeepEP.git@e3908bf5bd0cc6265bcb225d15cd8c996d4759ef", ] nemo_gym = ["nemo_gym"] From 0488cee1e12499e59d24c0422dd541a6d3847ec9 Mon Sep 17 00:00:00 2001 From: Parth Mannan Date: Tue, 16 Dec 2025 22:59:45 -0800 Subject: [PATCH 02/52] Add example recipe and add to config dict Signed-off-by: Parth Mannan --- .../recipes/llm/grpo-dapomath17k-dsv3-megatron.yaml | 3 +++ nemo_rl/models/policy/__init__.py | 10 ++++++++++ 2 files changed, 13 insertions(+) diff --git a/examples/configs/recipes/llm/grpo-dapomath17k-dsv3-megatron.yaml b/examples/configs/recipes/llm/grpo-dapomath17k-dsv3-megatron.yaml index 6e00ecd37c..eb3528a99c 100644 --- a/examples/configs/recipes/llm/grpo-dapomath17k-dsv3-megatron.yaml +++ b/examples/configs/recipes/llm/grpo-dapomath17k-dsv3-megatron.yaml @@ -29,6 +29,9 @@ policy: sequence_parallel: true moe_permute_fusion: true apply_rope_fusion: false + moe_enable_deepep: true + moe_token_dispatcher_type: "flex" + moe_shared_expert_overlap: false optimizer: lr: 5.0e-07 min_lr: 5.0e-08 diff --git a/nemo_rl/models/policy/__init__.py b/nemo_rl/models/policy/__init__.py index 69323f4896..9458bcbc92 100644 --- a/nemo_rl/models/policy/__init__.py +++ b/nemo_rl/models/policy/__init__.py @@ -144,6 +144,16 @@ class MegatronConfig(TypedDict): # Force overwrite of the initial checkpoint even if it exists (default: False) force_overwrite_initial_ckpt: NotRequired[bool] moe_per_layer_logging: bool + # Set to true to enable DeepEP for expert parallel communication + # Must set moe_token_dispatcher_type to 'flex' + # Must set moe_shared_expert_overlap to False + moe_enable_deepep: NotRequired[bool] + # The type of token dispatcher to use. The default is 'allgather'. + # Options are 'allgather','alltoall' and 'flex' + # Use 'flex' when using DeepEP + moe_token_dispatcher_type: NotRequired[str] + # Can be used only with 'alltoall' token dispatcher + moe_shared_expert_overlap: NotRequired[bool] optimizer: MegatronOptimizerConfig scheduler: MegatronSchedulerConfig distributed_data_parallel_config: MegatronDDPConfig From 32a6794f00d13b63f061a964ef44103485765b9c Mon Sep 17 00:00:00 2001 From: Wenwen Gao <94138584+snowmanwwg@users.noreply.github.com> Date: Mon, 15 Dec 2025 21:43:00 -0800 Subject: [PATCH 03/52] docs: Revise news section for nemotron v3 and DAPO algorithm support (#1640) Signed-off-by: Wenwen Gao <94138584+snowmanwwg@users.noreply.github.com> Signed-off-by: Parth Mannan --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index eab95de9a7..f68db216e9 100644 --- a/README.md +++ b/README.md @@ -10,13 +10,12 @@ ## 📣 News +* [12/15/2025] NeMo-RL is the framework that trained [NVIDIA-NeMotron-3-Nano-30B-A3B-FP8](https://huggingface.co/nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-FP8)! [Reproducible code here](https://github.com/NVIDIA-NeMo/RL/tree/nano-v3) * [12/1/2025] [Release v0.4.0!](https://github.com/NVIDIA-NeMo/RL/releases/tag/v0.4.0) * First release with official NGC Container [nvcr.io/nvidia/nemo-rl:v0.4.0](https://registry.ngc.nvidia.com/orgs/nvidia/containers/nemo-rl/tags). * 📊 View the release run metrics on [Google Colab](https://colab.research.google.com/drive/1u5lmjHOsYpJqXaeYstjw7Qbzvbo67U0v?usp=sharing) to get a head start on your experimentation. * [10/10/2025] **DAPO Algorithm Support** - NeMo RL now supports [Decoupled Clip and Dynamic Sampling Policy Optimization (DAPO)](https://arxiv.org/pdf/2503.14476) algorithm. - DAPO extends GRPO with **Clip-Higher**, **Dynamic Sampling**, **Token-Level Policy Gradient Loss**, and **Overlong Reward Shaping** for more stable and efficient RL training. See the [DAPO guide](docs/guides/dapo.md) for more details. -* [9/30/2025] [Accelerated RL on GCP with NeMo RL!](https://discuss.google.dev/t/accelerating-reinforcement-learning-on-google-cloud-using-nvidia-nemo-rl/269579/4) + NeMo RL now supports [Decoupled Clip and Dynamic Sampling Policy Optimization (DAPO)](https://arxiv.org/pdf/2503.14476) algorithm that extends GRPO with **Clip-Higher**, **Dynamic Sampling**, **Token-Level Policy Gradient Loss**, and **Overlong Reward Shaping** for more stable and efficient RL training. See the [DAPO guide](docs/guides/dapo.md) for more details. * [9/27/2025] [FP8 Quantization in NeMo RL](https://github.com/NVIDIA-NeMo/RL/discussions/1216) * [9/25/2025] On-policy Distillation * Student generates on-policy sequences and aligns logits to a larger teacher via KL, achieving near-larger-model quality at lower cost than RL. See [On-policy Distillation](#on-policy-distillation). @@ -24,6 +23,7 @@
Previous News +* [9/30/2025] [Accelerated RL on GCP with NeMo RL!](https://discuss.google.dev/t/accelerating-reinforcement-learning-on-google-cloud-using-nvidia-nemo-rl/269579/4) * [8/15/2025] [NeMo-RL: Journey of Optimizing Weight Transfer in Large MoE Models by 10x](https://github.com/NVIDIA-NeMo/RL/discussions/1189) * [7/31/2025] [NeMo-RL V0.3: Scalable and Performant Post-training with Nemo-RL via Megatron-Core](https://github.com/NVIDIA-NeMo/RL/discussions/1161) * [7/25/2025] [Release v0.3.0!](https://github.com/NVIDIA-NeMo/RL/releases/tag/v0.3.0) From 1143d7ad2ed8cd66a2103323862124c1634a9dd7 Mon Sep 17 00:00:00 2001 From: Rayen Date: Wed, 17 Dec 2025 02:42:02 +0800 Subject: [PATCH 04/52] chore: fix grpo functional test metric (#1643) Signed-off-by: ruit Signed-off-by: Parth Mannan --- tests/functional/grpo.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/functional/grpo.sh b/tests/functional/grpo.sh index d19bf05e61..1504c95c83 100755 --- a/tests/functional/grpo.sh +++ b/tests/functional/grpo.sh @@ -38,5 +38,5 @@ uv run coverage run -a --data-file=$PROJECT_ROOT/tests/.coverage --source=$PROJE uv run tests/json_dump_tb_logs.py $LOG_DIR --output_path $JSON_METRICS uv run tests/check_metrics.py $JSON_METRICS \ - 'max(data["train/gen_kl_error"]) < 1.05' + 'max(data["train/gen_kl_error"]) < 0.001' From d148d8cdb791aeba578b112baadb608e1df97181 Mon Sep 17 00:00:00 2001 From: Terry Kong Date: Tue, 16 Dec 2025 18:54:15 -0800 Subject: [PATCH 05/52] feat: add support from building images using vllm from private repos (#1605) Signed-off-by: Terry Kong Signed-off-by: Terry Kong Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> Signed-off-by: Parth Mannan --- docker/Dockerfile | 2 +- docs/guides/use-custom-vllm.md | 77 +++++++++++++++++++++++++++++++++- tools/build-custom-vllm.sh | 4 +- 3 files changed, 80 insertions(+), 3 deletions(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index 2558a2269e..f78ba0ed62 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -85,7 +85,7 @@ COPY --from=nemo-rl tools/build-custom-vllm.sh ./tools/build-custom-vllm.sh COPY --from=nemo-rl --link research/ ./research/ COPY --from=nemo-rl --link 3rdparty/ ./3rdparty/ -RUN <<"EOF" bash -exu +RUN --mount=type=ssh <<"EOF" bash -exu uv venv --seed if [[ -n "${BUILD_CUSTOM_VLLM:-}" ]]; then bash tools/build-custom-vllm.sh diff --git a/docs/guides/use-custom-vllm.md b/docs/guides/use-custom-vllm.md index 61d686e659..f14de08c2e 100644 --- a/docs/guides/use-custom-vllm.md +++ b/docs/guides/use-custom-vllm.md @@ -78,4 +78,79 @@ docker buildx build \ --tag /nemo-rl:latest \ --push \ . -``` \ No newline at end of file +``` + +### SSH Setup for Private Repositories + +If your custom vLLM is hosted in a **private repository** (e.g., internal GitLab), you need to set up SSH agent forwarding for Docker to clone it during the build. + +#### Prerequisites +1. Your SSH key must be registered on the Git server (GitLab/GitHub) +2. The key must **not be expired** - check your Git server's SSH key settings +3. The key must be loaded into your local ssh-agent + +#### Step 1: Verify your SSH key works + +```sh +# For GitLab (adjust host/port as needed) +ssh -T git@gitlab.example.com -p 12051 + +# You should see: "Welcome to GitLab, @username!" +# If you see "Your SSH key has expired", renew it on the server +``` + +#### Step 2: Load your SSH key into the agent + +```sh +# Check if an ssh-agent is already running +echo $SSH_AUTH_SOCK + +# If empty, start one (this also sets SSH_AUTH_SOCK which `docker buildx` expects to be set when using `--ssh default`) +eval "$(ssh-agent -s)" + +# Clear any old/expired keys from the agent +ssh-add -D + +# Add your SSH key (use the key registered on your Git server) +ssh-add ~/.ssh/id_ed25519 + +# Verify it's loaded +ssh-add -l +``` + +#### Step 3: Run the Docker build with SSH forwarding + +```sh +docker buildx build \ + --build-arg BUILD_CUSTOM_VLLM=1 \ + --target release \ + --build-context nemo-rl=. \ + -f docker/Dockerfile \ + --ssh default \ + --tag /nemo-rl:latest \ + --push \ + . +``` + +## Running Applications with a Custom vLLM Container + +When using a container built with custom vLLM, **use the frozen environment workflow** (bare `python`) instead of `uv run` with `NRL_FORCE_REBUILD_VENVS=true`. + +```sh +# Recommended: use bare python (frozen environment) +python examples/run_grpo_math.py + +# NOT recommended with custom vLLM containers: +# uv run examples/run_grpo_math.py +# or +# NRL_FORCE_REBUILD_VENVS=true uv run examples/run_grpo_math.py +``` + +### Why Not Use `uv run` or Rebuild Venvs? + +Rebuilding worker virtual environments (via `uv run` or `NRL_FORCE_REBUILD_VENVS=true`) requires having the custom vLLM compiled locally. However, compiling vLLM requires a container environment with the correct CUDA toolchain—creating a chicken-and-egg problem. + +The container already has vLLM built and cached in the frozen environments. Using bare `python` leverages these pre-built environments directly, avoiding the need to recompile vLLM at runtime. + +> [!TIP] +> For more details on frozen environments and how they differ from `uv run`, see the [Dependency Management](../design-docs/dependency-management.md#frozen-environments) documentation. diff --git a/tools/build-custom-vllm.sh b/tools/build-custom-vllm.sh index 260dae7295..d3f17a785c 100644 --- a/tools/build-custom-vllm.sh +++ b/tools/build-custom-vllm.sh @@ -41,7 +41,9 @@ echo " Vllm Wheel location: $VLLM_PRECOMPILED_WHEEL_LOCATION" # Clone the repository echo "Cloning repository..." -git clone "$GIT_URL" "$BUILD_DIR" +# When running inside Docker with --mount=type=ssh, the known_hosts file is empty. +# Skip host key verification for internal builds (only applies to SSH URLs). +GIT_SSH_COMMAND="ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" git clone "$GIT_URL" "$BUILD_DIR" cd "$BUILD_DIR" git checkout "$GIT_REF" From 76ddbe1a08d62aa4bbd9252a7ba9ac0c2f64302a Mon Sep 17 00:00:00 2001 From: bxyu-nvidia Date: Tue, 16 Dec 2025 21:40:56 -0800 Subject: [PATCH 06/52] feat: Necessary changes for Gym GRPO tutorial (#1630) Signed-off-by: alexandery Signed-off-by: Brian Yu Signed-off-by: Yi-Fu Wu Signed-off-by: Sahil Modi Signed-off-by: ruit Signed-off-by: Jonas Yang Signed-off-by: ZeYi Lin <944270057@qq.com> Signed-off-by: Alexander Zhipa Signed-off-by: Yuki Huang Signed-off-by: Lawrence Lane Signed-off-by: Terry Kong Co-authored-by: alexandery-nvidia Co-authored-by: Yi-Fu Wu Co-authored-by: Peter Jin Co-authored-by: samodi-nv <141948907+samodi-nv@users.noreply.github.com> Co-authored-by: ruit Co-authored-by: Jonas Yang Co-authored-by: Ze-Yi LIN <58305964+Zeyi-Lin@users.noreply.github.com> Co-authored-by: Alexander Zhipa Co-authored-by: Alexander Zhipa Co-authored-by: Terry Kong Co-authored-by: Yuki Huang Co-authored-by: Manasa Manohara Co-authored-by: Lawrence Lane Co-authored-by: Yu Yao <54727607+yaoyu-33@users.noreply.github.com> Co-authored-by: Terry Kong Signed-off-by: Parth Mannan --- 3rdparty/Gym-workspace/Gym | 2 +- 3rdparty/Gym-workspace/setup.py | 1 + ...rkplace_assistant_nemotron_nano_v2_9b.yaml | 277 ++++++++++++++++++ .../launch_nemo_gym_multinode_training.sh | 49 ++++ nemo_rl/models/generation/vllm/config.py | 3 + .../generation/vllm/vllm_worker_async.py | 82 ++++-- .../models/generation/test_vllm_generation.py | 9 + uv.lock | 2 + 8 files changed, 405 insertions(+), 20 deletions(-) create mode 100644 examples/nemo_gym/grpo_workplace_assistant_nemotron_nano_v2_9b.yaml create mode 100755 examples/nemo_gym/launch_nemo_gym_multinode_training.sh diff --git a/3rdparty/Gym-workspace/Gym b/3rdparty/Gym-workspace/Gym index 39ee39e35b..c192ee407f 160000 --- a/3rdparty/Gym-workspace/Gym +++ b/3rdparty/Gym-workspace/Gym @@ -1 +1 @@ -Subproject commit 39ee39e35bfedef86ccf8d1ada9835ab8f62d267 +Subproject commit c192ee407ff71046015d11da7c8960082bd62418 diff --git a/3rdparty/Gym-workspace/setup.py b/3rdparty/Gym-workspace/setup.py index ddb5c62284..b6df0d66c0 100644 --- a/3rdparty/Gym-workspace/setup.py +++ b/3rdparty/Gym-workspace/setup.py @@ -42,6 +42,7 @@ "yappi", "ray[default]", "psutil", + "datasets", ] if src_dir.exists(): diff --git a/examples/nemo_gym/grpo_workplace_assistant_nemotron_nano_v2_9b.yaml b/examples/nemo_gym/grpo_workplace_assistant_nemotron_nano_v2_9b.yaml new file mode 100644 index 0000000000..dea76e41cf --- /dev/null +++ b/examples/nemo_gym/grpo_workplace_assistant_nemotron_nano_v2_9b.yaml @@ -0,0 +1,277 @@ +grpo: + max_num_epochs: 1 + num_prompts_per_step: 64 + num_generations_per_prompt: 16 + max_rollout_turns: 1 # for multi-turn rollouts. Workplace assistant has 1 turn but can have up to 6 tool-calling steps + max_num_steps: 1000000 + normalize_rewards: true + use_leave_one_out_baseline: true + val_period: 10 + val_at_start: true + overlong_filtering: false + max_val_samples: null # inferred from size of val dataset. for multi evals, repeat val ds via `num_repeats` in `ng_prepare_data`. + val_batch_size: null + seed: 42 + use_dynamic_sampling: false + dynamic_sampling_max_gen_batches: 10 + batch_multiplier: 1 + reward_shaping: + enabled: false + overlong_buffer_length: 128 + overlong_buffer_penalty: 1 + max_response_length: ${policy.max_total_sequence_length} + reward_scaling: + enabled: false + source_min: 0.0 + source_max: 1.0 + target_min: 0.0 + target_max: 1.0 + skip_reference_policy_logprobs_calculation: true + +loss_fn: + reference_policy_kl_penalty: 0 + reference_policy_kl_type: "k3" + kl_input_clamp_value: 20.0 + kl_output_clamp_value: 10.0 + ratio_clip_min: 0.2 + ratio_clip_max: 0.2 + ratio_clip_c: null + # (default off) loss formulation improvements (docs/guides/grpo.md#loss) + use_on_policy_kl_approximation: false + truncated_importance_sampling_ratio: null + use_importance_sampling_correction: false + token_level_loss: true + +checkpointing: + enabled: true + metric_name: "val:accuracy" + higher_is_better: true + keep_top_k: 3 + save_period: 6 # Save checkpoint every 6 steps (aligned with val_period) + checkpoint_must_save_by: null + +policy: + model_name: "nvidia/NVIDIA-Nemotron-Nano-9B-v2" + tokenizer: + name: ${policy.model_name} ## specify if you'd like to use a tokenizer different from the model's default + chat_template_kwargs: null # can be used to pass kwargs to the chat template, e.g., enable_thinking=true + hf_config_overrides: {} + train_global_batch_size: ${mul:${grpo.num_prompts_per_step}, ${grpo.num_generations_per_prompt}} # Match the total rollouts per step + train_micro_batch_size: 1 + logprob_batch_size: 1 + generation_batch_size: 32 # Only used when generating using HF backend + max_total_sequence_length: 8192 + precision: "bfloat16" + logprob_chunk_size: null # Disabled to allow defer_fp32_logits: false + + dtensor_cfg: + _v2: false + enabled: false + cpu_offload: False + sequence_parallel: false + activation_checkpointing: true + tensor_parallel_size: 2 + context_parallel_size: 1 + custom_parallel_plan: null + clear_cache_every_n_steps: null + + megatron_cfg: + enabled: true + bias_activation_fusion: false + tensor_model_parallel_size: 2 + # We might want to consider setting this value higher (e.g. to 1) and raising the vllm generation max mem utilization + empty_unused_memory_level: 0 + activation_checkpointing: true + # train_iters needs to be large enough to cover all training steps + train_iters: 100000 + expert_tensor_parallel_size: 1 + expert_model_parallel_size: 1 + pipeline_model_parallel_size: 1 + num_layers_in_first_pipeline_stage: null + num_layers_in_last_pipeline_stage: null + context_parallel_size: 1 + pipeline_dtype: ${policy.precision} + sequence_parallel: false + freeze_moe_router: true + moe_router_dtype: "fp64" + moe_router_load_balancing_type: "none" # "seq_aux_loss" causes logprob error divergence for grpo + moe_router_bias_update_rate: 0.0 # by default, disable bias updates for grpo + #gives ~20% training perf speedup with sequence packing + apply_rope_fusion: True + defer_fp32_logits: false + moe_permute_fusion: false + + optimizer: + optimizer: "adam" + lr: 5.0e-6 + min_lr: 5.0e-7 + weight_decay: 0.01 + bf16: true + fp16: false + params_dtype: "float32" + + #adam + adam_beta1: 0.9 + adam_beta2: 0.999 + adam_eps: 1e-8 + + #sgd + sgd_momentum: 0.9 + + #distributed optimizer + use_distributed_optimizer: true + use_precision_aware_optimizer: true + + # optimizer cpu offload + optimizer_cpu_offload: false + optimizer_offload_fraction: 0.0 + + clip_grad: ${policy.max_grad_norm} + + scheduler: + start_weight_decay: ${policy.megatron_cfg.optimizer.weight_decay} + end_weight_decay: ${policy.megatron_cfg.optimizer.weight_decay} + weight_decay_incr_style: "constant" + lr_decay_style: "constant" + lr_decay_iters: 100000 # Must be greater than lr_warmup_iters + lr_warmup_iters: 13 + lr_warmup_init: 5.0e-7 + override_opt_param_scheduler: true + + distributed_data_parallel_config: + grad_reduce_in_fp32: false + overlap_grad_reduce: true + overlap_param_gather: true + use_custom_fsdp: false + data_parallel_sharding_strategy: "optim_grads_params" + + env_vars: null + + # See docs/design-docs/sequence-packing-and-dynamic-batching.md + # for more details on dynamic batching and sequence packing. + dynamic_batching: + enabled: False + train_mb_tokens: ${mul:${policy.max_total_sequence_length}, ${policy.train_micro_batch_size}} + logprob_mb_tokens: ${mul:${policy.max_total_sequence_length}, ${policy.logprob_batch_size}} + sequence_length_round: 64 + + sequence_packing: + enabled: false + train_mb_tokens: ${mul:${policy.max_total_sequence_length}, ${policy.train_micro_batch_size}} + logprob_mb_tokens: ${mul:${policy.max_total_sequence_length}, ${policy.logprob_batch_size}} + algorithm: "modified_first_fit_decreasing" + sequence_length_round: 64 + + # makes the training sequence length divisible by the tensor parallel size + # this is useful for sequence parallel training + make_sequence_length_divisible_by: 1 + max_grad_norm: 1.0 + offload_optimizer_for_logprob: false # Only useful for non-colocated generation since colocated generation will always offload optimizer to cuda before refit + + optimizer: null + + scheduler: + - name: "torch.optim.lr_scheduler.ConstantLR" + kwargs: + factor: 1.0 + total_iters: 10000000000 + - milestones: [] + + generation: + backend: "vllm" + max_new_tokens: ${policy.max_total_sequence_length} + temperature: 1.0 + top_p: 1.0 + top_k: null + stop_token_ids: null + stop_strings: null + vllm_cfg: + async_engine: true + precision: ${policy.precision} + tensor_parallel_size: 1 + pipeline_parallel_size: 1 + enable_expert_parallel: false + expert_parallel_size: 1 + gpu_memory_utilization: 0.8 + max_model_len: ${policy.max_total_sequence_length} + enforce_eager: false + use_deep_gemm: False + num_last_layers_in_bf16: 0 + num_first_layers_in_bf16: 0 + kv_cache_dtype: "auto" + expose_http_server: true + skip_tokenizer_init: false + tool_parser_plugin: ??? + http_server_serving_chat_kwargs: + # Workplace assistant uses 26 tools, so we enable auto_tools. + # For Nemotron Nano v2, we use the dedicated `nemotron_json` tool parser + enable_auto_tools: true + tool_parser: nemotron_json + vllm_kwargs: + compilation_config: + # when enforce_eager is False, set ++policy.generation.vllm_kwargs.compilation_config.use_inductor=False for better accuracy, + # with the flag, vllm will use the custom CUDA kernels instead of the Triton kernels generated by torch.compile + # for more details, see convergence issue https://github.com/NVIDIA-NeMo/RL/issues/998 + use_inductor: False + # We need the Mamba cache to be set to fp32 for Nemotron Nano v2 + mamba_ssm_cache_dtype: "float32" + colocated: + # true: generation shares training GPUs + # false: uses dedicated generation resources + enabled: true + # only relevant when enabled is false + resources: + gpus_per_node: null # Decides num gpus to be dedicated to generation when there is one node in the cluster i.e cluster.num_nodes == 1 + num_nodes: null # Decides number of nodes to be dedicated to generation + +data: + # Using the prepared train and validation datasets (downloaded from HuggingFace and split 90/10) + # Train: 1129 samples, Validation: 126 samples + train_jsonl_fpath: 3rdparty/Gym-workspace/Gym/resources_servers/workplace_assistant/data/train.jsonl + validation_jsonl_fpath: 3rdparty/Gym-workspace/Gym/resources_servers/workplace_assistant/data/validation.jsonl + agent_name: workplace_assistant_simple_agent + shuffle: true + num_workers: 0 + +env: + should_use_nemo_gym: true + should_log_nemo_gym_responses: true # If you have low logging storage, set this to false + nemo_gym: # This is passed into NeMo-Gym as the initial_global_config_dict + config_paths: + - responses_api_models/vllm_model/configs/vllm_model_for_training.yaml # Required! And it must be *for_training + - resources_servers/workplace_assistant/configs/workplace_assistant.yaml + workplace_assistant_simple_agent: + responses_api_agents: + simple_agent: + max_steps: 6 # Workplace assistant allows up to 6 tool-calling steps per task + policy_model: + responses_api_models: + vllm_model: + # Disable reasoning! + uses_reasoning_parser: false + extra_body: + chat_template_kwargs: + enable_thinking: false + +logger: + log_dir: "logs/grpo-workplace-assistant-nemotron-nano-v2-9b" # Base directory for all logs + num_val_samples_to_print: 0 # Number of validation samples to pretty print on terminal + wandb_enabled: true + tensorboard_enabled: false + mlflow_enabled: false # Disable MLflow logging + swanlab_enabled: false + monitor_gpus: true # If true, will monitor GPU usage and log to wandb and/or tensorboard + wandb: + project: "grpo-workplace-assistant" + name: "nemotron-nano-v2-9b-workplace-assistant" + tensorboard: {} + mlflow: + experiment_name: "grpo-workplace-assistant" + run_name: "nemotron-nano-v2-9b-workplace-assistant" + gpu_monitoring: + collection_interval: 10 # How often to collect GPU usage metrics (in seconds) + flush_interval: 10 # How often to flush GPU usage metrics to the loggers (in seconds) + +cluster: + gpus_per_node: 8 + num_nodes: 1 # Single node by default; set to 2+ for multi-node training diff --git a/examples/nemo_gym/launch_nemo_gym_multinode_training.sh b/examples/nemo_gym/launch_nemo_gym_multinode_training.sh new file mode 100755 index 0000000000..37ede71772 --- /dev/null +++ b/examples/nemo_gym/launch_nemo_gym_multinode_training.sh @@ -0,0 +1,49 @@ +# Copyright (c) 2025, NVIDIA CORPORATION. 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. + +# ----- PARAMETERS ----- +# WANDB_API_KEY, EXP_NAME, NUM_ACTOR_NODES, REPO_LOCATION, CONTAINER_IMAGE_PATH, SLURM_ACCOUNT, SLURM_PARTITION + +# ray.sub needs to be launched from the NeMo-RL root directory +cd $REPO_LOCATION + +# Construct the command +read -r -d '' COMMAND < len( + template_prefix_token_ids + ), f"""Found possibly non-monotonically increasing trajectory! +Template prefix token IDs (everything before the final assistant message): {template_prefix_token_ids} + +Template token IDs (everything that was sent to the model endpoint): {template_token_ids} + +Template prefix repr (detokenized): {repr(tokenizer.decode(template_prefix_token_ids))} + +Template repr (detokenized): {repr(tokenizer.decode(template_token_ids))} +""" + # We take everything starting with the EOS token ID. template_cut_start = -1 for pos in reversed(range(len(template_prefix_token_ids))): @@ -114,9 +127,16 @@ def _replace_prefix_tokens( break # This should never be the case, but - assert template_cut_start >= 0, ( - "No EOS token ID found in the chat-templated messages!" - ) + assert ( + template_cut_start >= 0 + ), f"""No EOS token ID found in the chat-templated messages! +Template prefix token IDs (everything before the final assistant message): {template_prefix_token_ids} + +Template token IDs (everything that was sent to the model endpoint): {template_token_ids} + +Template prefix repr (detokenized): {repr(tokenizer.decode(template_prefix_token_ids))} + +Template repr (detokenized): {repr(tokenizer.decode(template_token_ids))}""" return ( model_prefix_token_ids[:model_cut_end] + template_token_ids[template_cut_start:] @@ -269,6 +289,7 @@ def _setup_vllm_openai_api_server(self, app: FastAPI) -> FastAPI: from fastapi import Request from fastapi.responses import JSONResponse, StreamingResponse + from vllm import __version__ as vllm_version from vllm.entrypoints.openai.api_server import ( BaseModelPath, OpenAIServingChat, @@ -283,8 +304,13 @@ def _setup_vllm_openai_api_server(self, app: FastAPI) -> FastAPI: TokenizeCompletionRequest, TokenizeResponse, ) + from vllm.entrypoints.openai.tool_parsers import ToolParserManager from vllm.v1.engine.async_llm import logger as vllm_async_llm_logger + maybe_tool_parser_plugin = self.cfg["vllm_cfg"].get("tool_parser_plugin") + if maybe_tool_parser_plugin: + ToolParserManager.import_tool_parser(maybe_tool_parser_plugin) + engine_client = self.llm model_config = self.llm_async_engine_args.create_model_config() base_model_paths = [ @@ -294,12 +320,15 @@ def _setup_vllm_openai_api_server(self, app: FastAPI) -> FastAPI: BaseModelPath(name=model_config.model, model_path=model_config.model), ] - openai_serving_models = OpenAIServingModels( + openai_serving_models_kwargs = dict( engine_client=engine_client, - model_config=model_config, base_model_paths=base_model_paths, lora_modules=None, ) + # Remove this fork when https://github.com/NVIDIA-NeMo/RL/pull/1563 is merged to NeMo RL main bumping to vLLM 0.11.2 + if vllm_version < "0.11.1": + openai_serving_models_kwargs["model_config"] = model_config + openai_serving_models = OpenAIServingModels(**openai_serving_models_kwargs) class NeMoRLOpenAIChatRequestMixin: def model_post_init(self, context): @@ -435,13 +464,17 @@ class NeMoRLOpenAIServingChat(NeMoRLOpenAIServingMixin, OpenAIServingChat): serving_chat_kwargs = serving_chat_default_kwargs | self.cfg["vllm_cfg"].get( "http_server_serving_chat_kwargs", dict() ) - openai_serving_chat = NeMoRLOpenAIServingChat( - engine_client, - model_config, - openai_serving_models, - return_tokens_as_token_ids=True, - **serving_chat_kwargs, + serving_chat_kwargs.update( + dict( + engine_client=engine_client, + models=openai_serving_models, + return_tokens_as_token_ids=True, + ) ) + # Remove this fork when https://github.com/NVIDIA-NeMo/RL/pull/1563 is merged to NeMo RL main bumping to vLLM 0.11.2 + if vllm_version < "0.11.1": + serving_chat_kwargs["model_config"] = model_config + openai_serving_chat = NeMoRLOpenAIServingChat(**serving_chat_kwargs) generation_config = self.cfg @@ -496,15 +529,20 @@ class NeMoRLOpenAIServingTokenization( ): pass - openai_serving_tokenization = NeMoRLOpenAIServingTokenization( - engine_client, - model_config, - openai_serving_models, + serving_tokenization_kwargs = dict( request_logger=serving_chat_kwargs["request_logger"], chat_template=serving_chat_kwargs["chat_template"], chat_template_content_format=serving_chat_kwargs[ "chat_template_content_format" ], + engine_client=serving_chat_kwargs["engine_client"], + models=serving_chat_kwargs["models"], + ) + # Remove this fork when https://github.com/NVIDIA-NeMo/RL/pull/1563 is merged to NeMo RL main bumping to vLLM 0.11.2 + if vllm_version < "0.11.1": + serving_tokenization_kwargs["model_config"] = model_config + openai_serving_tokenization = NeMoRLOpenAIServingTokenization( + **serving_tokenization_kwargs ) @app.post("/tokenize") @@ -524,15 +562,21 @@ async def tokenize(request: NeMoRLTokenizeRequest, raw_request: Request): # Logging ######################################## print( - "Adding a vLLM logging filter so that the logs aren't spammed with `Added request ...` messages. This is to help errors pop up better and filter out noise." + "Adding a vLLM logging filter so that the logs aren't spammed with not useful messages like `Added request ...`. This is to help errors pop up better and filter out noise." ) - class NoAddedRequestFilter(LoggingFilter): + class CleanLoggingFilter(LoggingFilter): def filter(self, record: LogRecord) -> bool: msg = record.getMessage() - return "Added request" not in msg - vllm_async_llm_logger.addFilter(NoAddedRequestFilter()) + # vLLM does not accept `strict` tool definitions and reporting it to the user is not useful either. + return ( + "Added request" not in msg + and "The following fields were present in the request but ignored: {'strict'}" + not in msg + ) + + vllm_async_llm_logger.addFilter(CleanLoggingFilter()) return app diff --git a/tests/unit/models/generation/test_vllm_generation.py b/tests/unit/models/generation/test_vllm_generation.py index ac03e0506f..e39fef12d4 100644 --- a/tests/unit/models/generation/test_vllm_generation.py +++ b/tests/unit/models/generation/test_vllm_generation.py @@ -1164,6 +1164,7 @@ def test_vllm_http_server(cluster, tokenizer): "function_call": None, "tool_calls": [], "reasoning_content": None, + "reasoning": None, }, "logprobs": { "content": [ @@ -1200,6 +1201,11 @@ def _standardize(d: dict) -> dict: # We don't want to implicate log prob accuracy in this test. d["choices"][0]["logprobs"]["content"][0].pop("logprob") + # Remove this fork when https://github.com/NVIDIA-NeMo/RL/pull/1563 is merged to NeMo RL main bumping to vLLM 0.11.2 + message = d["choices"][0]["message"] + if "reasoning" in message: + message.pop("reasoning") + return d assert _standardize(expected_result) == _standardize(actual_result) @@ -1369,6 +1375,9 @@ def test_replace_prefix_tokens_missing_eos_in_template_prefix_raises(): class _T: eos_token_id = 2 + def decode(self, *args, **kwargs): + pass + tokenizer = _T() model_prefix_token_ids = [7, 2] template_prefix_token_ids = [9, 9, 9] # no EOS inside prefix diff --git a/uv.lock b/uv.lock index 7d12c3b39d..d333c863c4 100644 --- a/uv.lock +++ b/uv.lock @@ -3465,6 +3465,7 @@ name = "nemo-gym" source = { editable = "3rdparty/Gym-workspace" } dependencies = [ { name = "aiohttp" }, + { name = "datasets" }, { name = "devtools" }, { name = "fastapi" }, { name = "gradio" }, @@ -3486,6 +3487,7 @@ dependencies = [ [package.metadata] requires-dist = [ { name = "aiohttp" }, + { name = "datasets" }, { name = "devtools" }, { name = "fastapi" }, { name = "gradio" }, From 527f37ea25bedb72d5e5689305d1b448b9634468 Mon Sep 17 00:00:00 2001 From: Youngeun Kwon Date: Tue, 16 Dec 2025 22:27:37 -0800 Subject: [PATCH 07/52] perf: Add qwen3 30b-a3b async-8-off recipe (#1642) Signed-off-by: Youngeun Kwon Signed-off-by: Parth Mannan --- .../grpo-qwen3-30ba3b-24n8g-async-8off.yaml | 33 ++++++++++++++++ .../grpo-qwen3-30ba3b-24n8g-async-8off.sh | 39 +++++++++++++++++++ tests/test_suites/performance.txt | 4 +- 3 files changed, 75 insertions(+), 1 deletion(-) create mode 100644 examples/configs/recipes/llm/performance/grpo-qwen3-30ba3b-24n8g-async-8off.yaml create mode 100755 tests/test_suites/llm/performance/grpo-qwen3-30ba3b-24n8g-async-8off.sh diff --git a/examples/configs/recipes/llm/performance/grpo-qwen3-30ba3b-24n8g-async-8off.yaml b/examples/configs/recipes/llm/performance/grpo-qwen3-30ba3b-24n8g-async-8off.yaml new file mode 100644 index 0000000000..11d917fc8b --- /dev/null +++ b/examples/configs/recipes/llm/performance/grpo-qwen3-30ba3b-24n8g-async-8off.yaml @@ -0,0 +1,33 @@ +defaults: ./grpo-qwen3-30ba3b-4n8g.yaml +grpo: + async_grpo: + enabled: true + max_trajectory_age_steps: 8 + in_flight_weight_updates: true +loss_fn: + use_importance_sampling_correction: true +checkpointing: + checkpoint_dir: results/grpo-qwen3-30ba3b-24n8g-async-8off +policy: + megatron_cfg: + tensor_model_parallel_size: 1 + pipeline_model_parallel_size: 1 + expert_model_parallel_size: 8 + sequence_parallel: false + generation: + colocated: + enabled: false + resources: + num_nodes: 8 + gpus_per_node: 8 + vllm_cfg: + async_engine: true + tensor_parallel_size: 2 + gpu_memory_utilization: 0.8 +logger: + log_dir: logs/grpo-qwen3-30ba3b-24n8g-16T8G-async-8off + wandb: + name: grpo-qwen3-30ba3b-24n8g-16T8G-async-8off +cluster: + gpus_per_node: 8 + num_nodes: 24 diff --git a/tests/test_suites/llm/performance/grpo-qwen3-30ba3b-24n8g-async-8off.sh b/tests/test_suites/llm/performance/grpo-qwen3-30ba3b-24n8g-async-8off.sh new file mode 100755 index 0000000000..63a099e2e2 --- /dev/null +++ b/tests/test_suites/llm/performance/grpo-qwen3-30ba3b-24n8g-async-8off.sh @@ -0,0 +1,39 @@ +#!/bin/bash +SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd) +source $SCRIPT_DIR/common.env + +# ===== BEGIN CONFIG ===== +NUM_NODES=24 +STEPS_PER_RUN=10 +MAX_STEPS=10 +NUM_RUNS=$(( (MAX_STEPS + STEPS_PER_RUN - 1) / STEPS_PER_RUN )) # Round up +NUM_MINUTES=100 +# ===== END CONFIG ===== + +exit_if_max_steps_reached + +# Run the experiment +cd $PROJECT_ROOT +uv run examples/run_grpo_math.py \ + --config $CONFIG_PATH \ + grpo.max_num_steps=$MAX_STEPS \ + logger.log_dir=$LOG_DIR \ + logger.wandb_enabled=True \ + logger.wandb.project=nemo-rl \ + logger.wandb.name=$EXP_NAME \ + logger.monitor_gpus=True \ + logger.tensorboard_enabled=True \ + checkpointing.enabled=True \ + checkpointing.checkpoint_dir=$CKPT_DIR \ + $@ \ + 2>&1 | tee $RUN_LOG + +# Convert tensorboard logs to json +uv run tests/json_dump_tb_logs.py $LOG_DIR --output_path $JSON_METRICS + +# Only run metrics if the target step is reached +if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | map(tonumber) | max' $JSON_METRICS) -ge $MAX_STEPS ]]; then + uv run tests/check_metrics.py $JSON_METRICS \ + 'mean(data["train/token_mult_prob_error"]) < 1.1' \ + 'data["train/token_mult_prob_error"]["10"] < 1.1' +fi diff --git a/tests/test_suites/performance.txt b/tests/test_suites/performance.txt index 728159945d..bf714b0e74 100644 --- a/tests/test_suites/performance.txt +++ b/tests/test_suites/performance.txt @@ -12,4 +12,6 @@ tests/test_suites/llm/performance/grpo-deepseek-v3-64n8g-async-1off.sh tests/test_suites/llm/performance/grpo-llama3.1-8b-instruct-2n8g-async-1off.sh tests/test_suites/llm/performance/grpo-qwen3-32b-8n8g-async-1off.sh tests/test_suites/llm/performance/grpo-qwen3-235b-32n8g-async-1off.sh -tests/test_suites/llm/performance/grpo-qwen3-30ba3b-4n8g-async-1off.sh \ No newline at end of file +tests/test_suites/llm/performance/grpo-qwen3-30ba3b-4n8g-async-1off.sh + +tests/test_suites/llm/performance/grpo-qwen3-30ba3b-24n8g-async-8off.sh \ No newline at end of file From 285a329badcd95a014887b4e48db049fcff86b79 Mon Sep 17 00:00:00 2001 From: Anna Shors Date: Wed, 17 Dec 2025 01:43:30 -0800 Subject: [PATCH 08/52] feat: Add GPT-OSS support via mcore (#1452) Signed-off-by: ashors1 Signed-off-by: Parth Mannan --- .../llm/grpo-gptoss-20b-8n8g-megatron.yaml | 26 ++++++++++++ nemo_rl/models/generation/vllm/vllm_worker.py | 12 ++++++ .../llm/grpo-gptoss-20b-8n8g-megatron.sh | 40 +++++++++++++++++++ tests/test_suites/release.txt | 3 ++ 4 files changed, 81 insertions(+) create mode 100755 examples/configs/recipes/llm/grpo-gptoss-20b-8n8g-megatron.yaml create mode 100755 tests/test_suites/llm/grpo-gptoss-20b-8n8g-megatron.sh diff --git a/examples/configs/recipes/llm/grpo-gptoss-20b-8n8g-megatron.yaml b/examples/configs/recipes/llm/grpo-gptoss-20b-8n8g-megatron.yaml new file mode 100755 index 0000000000..b3dec78e98 --- /dev/null +++ b/examples/configs/recipes/llm/grpo-gptoss-20b-8n8g-megatron.yaml @@ -0,0 +1,26 @@ +defaults: ../../grpo_math_1B.yaml +grpo: + num_prompts_per_step: 64 + num_generations_per_prompt: 32 +loss_fn: + use_importance_sampling_correction: true +policy: + model_name: openai/gpt-oss-20b + train_micro_batch_size: 1 + max_total_sequence_length: 4096 + megatron_cfg: + enabled: true + expert_model_parallel_size: 8 + tensor_model_parallel_size: 4 + sequence_parallel: true + moe_permute_fusion: true + dtensor_cfg: + enabled: false + sequence_packing: + enabled: false + generation: + vllm_cfg: + tensor_parallel_size: 2 +cluster: + num_nodes: 8 + gpus_per_node: 8 diff --git a/nemo_rl/models/generation/vllm/vllm_worker.py b/nemo_rl/models/generation/vllm/vllm_worker.py index 6c0d3577e9..08e6f78808 100644 --- a/nemo_rl/models/generation/vllm/vllm_worker.py +++ b/nemo_rl/models/generation/vllm/vllm_worker.py @@ -20,6 +20,7 @@ import ray import torch +from transformers import AutoConfig from nemo_rl.distributed.batched_data_dict import BatchedDataDict from nemo_rl.distributed.worker_group_utils import get_nsight_config_if_pattern_matches @@ -305,6 +306,17 @@ def _patch_vllm_init_workers_ray(): self.cfg["vllm_cfg"].get("hf_overrides", {}) or {} ) + # Override HF config for gpt-oss models to ensure compatibility with megatron + # The megatron --> hf export is done in bf16, so we disable quantization + hf_config = AutoConfig.from_pretrained(self.model_name, trust_remote_code=True) + if "GptOssForCausalLM" in getattr(hf_config, "architectures", []): + if "quantization_config" in hf_config: + assert load_format == "dummy", ( + "Loading quantized GPT-OSS models is currently only supported with load_format='dummy'." + ) + # disable quantization + vllm_kwargs["hf_overrides"]["quantization_config"] = {} + llm_kwargs = dict( model=self.model_name, served_model_name=self.model_name, diff --git a/tests/test_suites/llm/grpo-gptoss-20b-8n8g-megatron.sh b/tests/test_suites/llm/grpo-gptoss-20b-8n8g-megatron.sh new file mode 100755 index 0000000000..77f858b429 --- /dev/null +++ b/tests/test_suites/llm/grpo-gptoss-20b-8n8g-megatron.sh @@ -0,0 +1,40 @@ +#!/bin/bash +SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd) +source $SCRIPT_DIR/common.env + +# ===== BEGIN CONFIG ===== +NUM_NODES=8 +STEPS_PER_RUN=60 +MAX_STEPS=60 +NUM_RUNS=$(( (MAX_STEPS + STEPS_PER_RUN - 1) / STEPS_PER_RUN )) # Round up +NUM_MINUTES=240 +# ===== END CONFIG ===== + +exit_if_max_steps_reached + +# Run the experiment +cd $PROJECT_ROOT +uv run examples/run_grpo_math.py \ + --config $CONFIG_PATH \ + grpo.max_num_steps=$MAX_STEPS \ + logger.log_dir=$LOG_DIR \ + logger.wandb_enabled=True \ + logger.wandb.project=nemo-rl \ + logger.wandb.name=$EXP_NAME \ + logger.monitor_gpus=True \ + logger.tensorboard_enabled=True \ + checkpointing.enabled=True \ + checkpointing.checkpoint_dir=$CKPT_DIR \ + "$@" \ + 2>&1 | tee $RUN_LOG + +# Convert tensorboard logs to json +uv run tests/json_dump_tb_logs.py $LOG_DIR --output_path $JSON_METRICS + +# Only run metrics if the target step is reached +if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | map(tonumber) | max' $JSON_METRICS) -ge $MAX_STEPS ]]; then + uv run tests/check_metrics.py $JSON_METRICS \ + 'mean(data["train/gen_kl_error"]) < 0.002' \ + 'data["train/reward"]["60"] > 0.60' \ + 'mean(data["timing/train/total_step_time"], -6, -1) < 210' +fi diff --git a/tests/test_suites/release.txt b/tests/test_suites/release.txt index 43de424107..1b954d6316 100644 --- a/tests/test_suites/release.txt +++ b/tests/test_suites/release.txt @@ -23,6 +23,9 @@ tests/test_suites/llm/dapo-qwen2.5-7b.sh # Deepseek-V3 on DAPO dataset tests/test_suites/llm/grpo-dapomath17k-dsv3-megatron.sh +# GPT-OSS +tests/test_suites/llm/grpo-gptoss-20b-8n8g-megatron.sh + ####### # SFT # ####### From 4f2e164809ff30c75518150b24947385ea6c454a Mon Sep 17 00:00:00 2001 From: Yi-Fu Wu Date: Wed, 17 Dec 2025 18:40:52 -0800 Subject: [PATCH 09/52] chore: Bump vllm to 0.11.2, torch to 2.9, transformers to 4.57.1 (#1563) Signed-off-by: Yi-Fu Wu Signed-off-by: Charlie Truong Signed-off-by: Peter Jin Signed-off-by: Dong Hyuk Chang Co-authored-by: Guyue Huang Co-authored-by: Charlie Truong Co-authored-by: Peter Jin Co-authored-by: Dong Hyuk Chang Signed-off-by: Parth Mannan --- .github/workflows/cicd-main.yml | 2 +- .gitmodules | 2 +- 3rdparty/Automodel-workspace/Automodel | 2 +- ....1-8b-instruct-2n8g-megatron-fp8-e2e.yaml} | 7 +- nemo_rl/models/generation/fp8.py | 37 +- nemo_rl/models/generation/vllm/vllm_worker.py | 160 +++- .../generation/vllm/vllm_worker_async.py | 6 - .../workers/dtensor_policy_worker_v2.py | 2 +- .../policy/workers/megatron_policy_worker.py | 95 ++ pyproject.toml | 27 +- ...a3.1-8b-instruct-2n8g-megatron-fp8-e2e.sh} | 2 +- tests/test_suites/nightly.txt | 4 +- .../generation/test_vllm_logprobs_mode.py | 2 + tools/build-custom-vllm.sh | 2 +- uv.lock | 868 ++++++++++-------- 15 files changed, 764 insertions(+), 454 deletions(-) rename examples/configs/recipes/llm/{grpo-llama3.1-8b-instruct-1n8g-megatron-fp8-e2e.yaml => grpo-llama3.1-8b-instruct-2n8g-megatron-fp8-e2e.yaml} (86%) rename tests/test_suites/llm/{grpo-llama3.1-8b-instruct-1n8g-megatron-fp8-e2e.sh => grpo-llama3.1-8b-instruct-2n8g-megatron-fp8-e2e.sh} (99%) diff --git a/.github/workflows/cicd-main.yml b/.github/workflows/cicd-main.yml index 9efa03d06a..2ff16efe76 100644 --- a/.github/workflows/cicd-main.yml +++ b/.github/workflows/cicd-main.yml @@ -208,7 +208,7 @@ jobs: build-contexts: | nemo-rl=${{ github.run_id }}/ build-args: | - MAX_JOBS=32 + MAX_JOBS=4 NEMO_RL_COMMIT=${{ github.sha }} cicd-doc-tests: diff --git a/.gitmodules b/.gitmodules index fd75d5044f..796f7b17c3 100644 --- a/.gitmodules +++ b/.gitmodules @@ -11,7 +11,7 @@ [submodule "3rdparty/Automodel-workspace/Automodel"] path = 3rdparty/Automodel-workspace/Automodel url = https://github.com/NVIDIA-NeMo/Automodel.git - branch = nemo-rl-submodule + branch = yifu/bump-torch-and-hf shallow = true [submodule "3rdparty/Gym-workspace/Gym"] path = 3rdparty/Gym-workspace/Gym diff --git a/3rdparty/Automodel-workspace/Automodel b/3rdparty/Automodel-workspace/Automodel index a2db048383..910f4e0402 160000 --- a/3rdparty/Automodel-workspace/Automodel +++ b/3rdparty/Automodel-workspace/Automodel @@ -1 +1 @@ -Subproject commit a2db048383cd54b3fafc928df4c30bf7bbf7c430 +Subproject commit 910f4e0402ec3af0c3b8642639f0347732067630 diff --git a/examples/configs/recipes/llm/grpo-llama3.1-8b-instruct-1n8g-megatron-fp8-e2e.yaml b/examples/configs/recipes/llm/grpo-llama3.1-8b-instruct-2n8g-megatron-fp8-e2e.yaml similarity index 86% rename from examples/configs/recipes/llm/grpo-llama3.1-8b-instruct-1n8g-megatron-fp8-e2e.yaml rename to examples/configs/recipes/llm/grpo-llama3.1-8b-instruct-2n8g-megatron-fp8-e2e.yaml index 4ed7b47d06..6411c6fb49 100644 --- a/examples/configs/recipes/llm/grpo-llama3.1-8b-instruct-1n8g-megatron-fp8-e2e.yaml +++ b/examples/configs/recipes/llm/grpo-llama3.1-8b-instruct-2n8g-megatron-fp8-e2e.yaml @@ -6,7 +6,7 @@ grpo: loss_fn: use_importance_sampling_correction: true checkpointing: - checkpoint_dir: results/grpo-llama3.1-8b-instruct-1n8g-megatron-fp8-e2e + checkpoint_dir: results/grpo-llama3.1-8b-instruct-2n8g-megatron-fp8-e2e policy: model_name: meta-llama/Llama-3.1-8B-Instruct tokenizer: @@ -48,11 +48,12 @@ policy: data: max_input_seq_length: 4096 logger: - log_dir: logs/grpo-llama3.1-8b-instruct-1n8g-megatron-fp8-e2e + log_dir: logs/grpo-llama3.1-8b-instruct-2n8g-megatron-fp8-e2e wandb_enabled: true tensorboard_enabled: true wandb: project: nemo-rl - name: grpo-llama3.1-8b-instruct-1n8g-megatron-fp8-e2e + name: grpo-llama3.1-8b-instruct-2n8g-megatron-fp8-e2e cluster: + num_nodes: 2 gpus_per_node: 8 diff --git a/nemo_rl/models/generation/fp8.py b/nemo_rl/models/generation/fp8.py index 0939e3582b..4f42b79e1d 100644 --- a/nemo_rl/models/generation/fp8.py +++ b/nemo_rl/models/generation/fp8.py @@ -272,6 +272,7 @@ def init_fp8(vllm_cfg, model_name, model_parallel_size): if vllm_cfg.get("use_deep_gemm", False): os.environ["VLLM_USE_DEEP_GEMM"] = "1" + os.environ["VLLM_USE_DEEP_GEMM_E8M0"] = "0" if vllm_cfg["async_engine"]: # for async engine, vllm spawns a process for each DP, so we patch @@ -541,6 +542,39 @@ def cast_tensor_to_fp8_blockwise( return fp_data, descale_fp +# Ref: https://github.com/vllm-project/vllm/blob/275de34170654274616082721348b7edd9741d32/vllm/model_executor/layers/quantization/utils/fp8_utils.py#L1175 +# Patches this method to not create new torch.nn.Parameter for layer weights +# to maintain weight loaders. +def maybe_post_process_fp8_weight_block(layer: torch.nn.Module): + assert layer.weight_block_size is not None + + from vllm.model_executor.layers.quantization.utils.fp8_utils import ( + deepgemm_post_process_fp8_weight_block, + ) + from vllm.utils.deep_gemm import ( + is_deep_gemm_e8m0_used, + should_use_deepgemm_for_fp8_linear, + ) + + # On Blackwell or Hopper, if E8M0 for DeepGemm is used, we need to + # requantize the weight and input to the specific scale + # at the same time. + should_use_deepgemm = should_use_deepgemm_for_fp8_linear( + layer.orig_dtype, layer.weight + ) + if should_use_deepgemm: + dg_weight, dg_weight_scale = deepgemm_post_process_fp8_weight_block( + wq=layer.weight.data, + ws=layer.weight_scale.data, + quant_block_shape=tuple(layer.weight_block_size), + use_e8m0=is_deep_gemm_e8m0_used(), + ) + # This is the only part we change from the original function (https://github.com/vllm-project/vllm/blob/275de34170654274616082721348b7edd9741d32/vllm/model_executor/layers/quantization/utils/fp8_utils.py#L1196-L1197) + # Instead of creating new torch.nn.Parameter, we update the data in place. + layer.weight.data.copy_(dg_weight) + layer.weight_scale.data.copy_(dg_weight_scale) + + def process_weights_after_loading(self, layer) -> None: """This function is used to process the weights after loading for a Linear layer. @@ -548,7 +582,6 @@ def process_weights_after_loading(self, layer) -> None: new torch.nn.Parameter objects, because that removes the weight_loader attribute which we need for refit. """ from vllm.model_executor.layers.quantization.utils.fp8_utils import ( - maybe_post_process_fp8_weight_block, process_fp8_weight_block_strategy, ) @@ -566,7 +599,7 @@ def process_weights_after_loading(self, layer) -> None: layer.weight_scale = torch.nn.Parameter(weight_scale.data, requires_grad=False) layer.update_param_tp_status() - maybe_post_process_fp8_weight_block(layer, self.cutlass_block_fp8_supported) + maybe_post_process_fp8_weight_block(layer) def process_weights_after_loading_moe(self, layer) -> None: diff --git a/nemo_rl/models/generation/vllm/vllm_worker.py b/nemo_rl/models/generation/vllm/vllm_worker.py index 08e6f78808..75e3334d4a 100644 --- a/nemo_rl/models/generation/vllm/vllm_worker.py +++ b/nemo_rl/models/generation/vllm/vllm_worker.py @@ -16,6 +16,7 @@ import gc import os import sys +from importlib.util import find_spec from typing import Any, Optional, cast import ray @@ -157,63 +158,134 @@ def __init__( self.rank = 0 self.world_size = 1 - # Monkey patch for vLLM to ensure RAY_ADDRESS is set in Ray actors. - try: - from vllm.logger import init_logger + # Monkey patches for vLLM behavior. We avoid importing vllm modules + # here to prevent side effects during initialization and instead + # locate the files via importlib metadata. - logger = init_logger("vllm_patch") + from vllm.logger import init_logger - def _patch_vllm_init_workers_ray(): - """Patch the vLLM ray_distributed_executor.py file. + logger = init_logger("vllm_patch") - 1. Pass custom runtime_env in _init_workers_ray call. - - This allows passing custom py_executable to worker initialization. - 2. Add NCCL_CUMEM_ENABLE and NCCL_NVLS_ENABLE to vLLM ADDITIONAL_ENV_VARS. - - This is a workaround to fix async vllm in some scenarios. - - See https://github.com/NVIDIA-NeMo/RL/pull/898 for more details. - """ - try: - import vllm.executor.ray_distributed_executor as ray_executor_module + def _get_vllm_file(relative_path: str) -> str: + """Return absolute path to a vLLM file or raise if it cannot be found. + + The relative_path should be a POSIX-style path under the vllm + package root, e.g. "v1/executor/ray_executor.py" or + "attention/layer.py". + """ + spec = find_spec("vllm") + if spec is None or not spec.submodule_search_locations: + raise RuntimeError( + "vLLM package not found while attempting to patch " + f"'{relative_path}'. Ensure vLLM is installed and " + "available in this environment." + ) - file_to_patch = ray_executor_module.__file__ + base_dir = next(iter(spec.submodule_search_locations)) + file_path = os.path.join(base_dir, *relative_path.split("/")) - with open(file_to_patch, "r") as f: - content = f.read() + if not os.path.exists(file_path): + raise RuntimeError( + "Failed to locate expected vLLM file to patch. " + f"Looked for '{relative_path}' at '{file_path}'. " + "This likely indicates an unexpected vLLM installation " + "layout or version mismatch." + ) + + return file_path + + def _patch_vllm_init_workers_ray(): + """Patch the vLLM ray_distributed_executor.py file. + + 1. Pass custom runtime_env in _init_workers_ray call. + - This allows passing custom py_executable to worker initialization. + 2. Add NCCL_CUMEM_ENABLE and NCCL_NVLS_ENABLE to vLLM ADDITIONAL_ENV_VARS. + - This is a workaround to fix async vllm in some scenarios. + - See https://github.com/NVIDIA-NeMo/RL/pull/898 for more details. + """ + file_to_patch = _get_vllm_file("v1/executor/ray_executor.py") - old_lines = [ - "self._init_workers_ray(placement_group)", - 'ADDITIONAL_ENV_VARS = {"HF_TOKEN", "HUGGING_FACE_HUB_TOKEN"}', - ] + with open(file_to_patch, "r") as f: + content = f.read() - new_lines = [ - f'self._init_workers_ray(placement_group, runtime_env={{"py_executable": "{self.py_executable}"}})', - 'ADDITIONAL_ENV_VARS = {"HF_TOKEN", "HUGGING_FACE_HUB_TOKEN", "NCCL_CUMEM_ENABLE", "NCCL_NVLS_ENABLE", "RAY_ENABLE_UV_RUN_RUNTIME_ENV"}', - ] + old_lines = [ + "self._init_workers_ray(placement_group)", + 'ADDITIONAL_ENV_VARS = {"HF_TOKEN", "HUGGING_FACE_HUB_TOKEN"}', + ] - need_replace = False - for old_line, new_line in zip(old_lines, new_lines): - if new_line in content or old_line not in content: - continue - content = content.replace(old_line, new_line) - need_replace = True + new_lines = [ + f'self._init_workers_ray(placement_group, runtime_env={{"py_executable": "{self.py_executable}"}})', + 'ADDITIONAL_ENV_VARS = {"HF_TOKEN", "HUGGING_FACE_HUB_TOKEN", "NCCL_CUMEM_ENABLE", "NCCL_NVLS_ENABLE", "RAY_ENABLE_UV_RUN_RUNTIME_ENV"}', + ] + + need_replace = False + for old_line, new_line in zip(old_lines, new_lines): + if new_line in content or old_line not in content: + continue + content = content.replace(old_line, new_line) + need_replace = True + + if not need_replace: + return + + # Write back the patched content + with open(file_to_patch, "w") as f: + f.write(content) + + def _patch_vllm_vit_flash_attn_backend(): + """Patch vLLM vision attention backend selection logic. + + Modify the CUDA branch of maybe_get_vit_flash_attn_backend in + vllm.attention.layer to avoid overriding the backend when it + is already set to XFORMERS. This avoids flash attention related + errors when the ViT head dimension is not a multiple of 32. + + Related issues: + - https://github.com/vllm-project/vllm/issues/27562 + - https://github.com/vllm-project/vllm/issues/26989 + + This is properly fixed in https://github.com/vllm-project/vllm/pull/28763. We can remove this patch once we upgrade to a version of vllm that contains this fix. + """ + file_to_patch = _get_vllm_file("attention/layer.py") + with open(file_to_patch, "r") as f: + content = f.read() + + old_snippet = ( + " elif current_platform.is_cuda():\n" + " if (\n" + " attn_backend != AttentionBackendEnum.FLASH_ATTN\n" + " and check_upstream_fa_availability(torch.get_default_dtype())\n" + " ):\n" + " attn_backend = AttentionBackendEnum.FLASH_ATTN\n" + " use_upstream_fa = True\n" + ) + + new_snippet = ( + " elif current_platform.is_cuda():\n" + " if (\n" + " attn_backend != AttentionBackendEnum.FLASH_ATTN\n" + " and attn_backend != AttentionBackendEnum.XFORMERS\n" + " and check_upstream_fa_availability(torch.get_default_dtype())\n" + " ):\n" + " attn_backend = AttentionBackendEnum.FLASH_ATTN\n" + " use_upstream_fa = True\n" + ) - if not need_replace: - return + # Only patch if the file still has the old snippet and + # hasn't been patched already. + if new_snippet in content or old_snippet not in content: + return - # Write back the patched content - with open(file_to_patch, "w") as f: - f.write(content) + content = content.replace(old_snippet, new_snippet) - except (ImportError, FileNotFoundError, PermissionError): - # Allow failures gracefully - pass + with open(file_to_patch, "w") as f: + f.write(content) - _patch_vllm_init_workers_ray() - logger.info("Successfully patched vllm _init_workers_ray.") + _patch_vllm_init_workers_ray() + logger.info("Successfully patched vllm _init_workers_ray.") - except (ImportError, AttributeError): - # vllm not installed or has a different structure, skipping patch. - pass + _patch_vllm_vit_flash_attn_backend() + logger.info("Successfully patched vllm vit flash attention backend.") try: import vllm diff --git a/nemo_rl/models/generation/vllm/vllm_worker_async.py b/nemo_rl/models/generation/vllm/vllm_worker_async.py index f45ff440f4..0e4ea5cdeb 100644 --- a/nemo_rl/models/generation/vllm/vllm_worker_async.py +++ b/nemo_rl/models/generation/vllm/vllm_worker_async.py @@ -471,9 +471,6 @@ class NeMoRLOpenAIServingChat(NeMoRLOpenAIServingMixin, OpenAIServingChat): return_tokens_as_token_ids=True, ) ) - # Remove this fork when https://github.com/NVIDIA-NeMo/RL/pull/1563 is merged to NeMo RL main bumping to vLLM 0.11.2 - if vllm_version < "0.11.1": - serving_chat_kwargs["model_config"] = model_config openai_serving_chat = NeMoRLOpenAIServingChat(**serving_chat_kwargs) generation_config = self.cfg @@ -538,9 +535,6 @@ class NeMoRLOpenAIServingTokenization( engine_client=serving_chat_kwargs["engine_client"], models=serving_chat_kwargs["models"], ) - # Remove this fork when https://github.com/NVIDIA-NeMo/RL/pull/1563 is merged to NeMo RL main bumping to vLLM 0.11.2 - if vllm_version < "0.11.1": - serving_tokenization_kwargs["model_config"] = model_config openai_serving_tokenization = NeMoRLOpenAIServingTokenization( **serving_tokenization_kwargs ) diff --git a/nemo_rl/models/policy/workers/dtensor_policy_worker_v2.py b/nemo_rl/models/policy/workers/dtensor_policy_worker_v2.py index c84617b09e..a8a3957bd5 100644 --- a/nemo_rl/models/policy/workers/dtensor_policy_worker_v2.py +++ b/nemo_rl/models/policy/workers/dtensor_policy_worker_v2.py @@ -1848,7 +1848,7 @@ def move_buffer_to_device( ) -> nn.Module: # FSDP modules do not move buffers to the device automatically for v in model.buffers(): - v.data = v.data.to(device) + v = v.to(device) return model diff --git a/nemo_rl/models/policy/workers/megatron_policy_worker.py b/nemo_rl/models/policy/workers/megatron_policy_worker.py index 37bdf52d3b..48fd2a64df 100644 --- a/nemo_rl/models/policy/workers/megatron_policy_worker.py +++ b/nemo_rl/models/policy/workers/megatron_policy_worker.py @@ -19,10 +19,103 @@ from collections import defaultdict from contextlib import AbstractContextManager, contextmanager, nullcontext from functools import partial +from importlib.util import find_spec from typing import Any, Iterator, Optional, TypeVar, cast import ray import torch + + +def _get_transformer_engine_file(relative_path: str) -> str: + """Return absolute path to a Transformer Engine file or raise if it cannot be found. + + The relative_path should be a POSIX-style path under the transformer_engine + package root, e.g. "pytorch/triton/permutation.py". + """ + spec = find_spec("transformer_engine") + if spec is None or not spec.submodule_search_locations: + raise RuntimeError( + "Transformer Engine package not found while attempting to patch " + f"'{relative_path}'. Ensure `transformer-engine` is installed and " + "available in this environment." + ) + + base_dir = next(iter(spec.submodule_search_locations)) + file_path = os.path.join(base_dir, *relative_path.split("/")) + + if not os.path.exists(file_path): + raise RuntimeError( + "Failed to locate expected Transformer Engine file to patch. " + f"Looked for '{relative_path}' at '{file_path}'. " + "This likely indicates an unexpected Transformer Engine installation " + "layout or version mismatch." + ) + + return file_path + + +def _apply_transformer_engine_patch(): + """Apply patch from https://github.com/NVIDIA/TransformerEngine/pull/2286/files. + + This locates the target file via importlib metadata instead of importing + `transformer_engine`, to avoid side effects during initialization. If the + permutation module has already been imported, it will be reloaded so that + the patched source takes effect. + """ + try: + perm_file = _get_transformer_engine_file("pytorch/triton/permutation.py") + + with open(perm_file, "r") as f: + content = f.read() + + if "get_int_dtype = triton.constexpr_function(get_int_dtype)" not in content: + print(f"Applying Triton fix to {perm_file}...") + + # 1. Replace the usage + old_usage = "idtype = core.get_int_dtype(bitwidth=x.dtype.primitive_bitwidth, signed=True)" + new_usage = "idtype = get_int_dtype(bitwidth=x.dtype.primitive_bitwidth, signed=True)" + + # 2. Insert the definition before the first @triton.jit + jit_anchor = "@triton.jit" + + new_definition = ( + "\n\n" + "get_int_dtype = core.get_int_dtype\n" + "get_int_dtype = triton.constexpr_function(get_int_dtype)\n" + ) + + new_content = None + if old_usage in content: + temp_content = content.replace(old_usage, new_usage) + + if jit_anchor in temp_content: + new_content = temp_content.replace( + jit_anchor, new_definition + jit_anchor, 1 + ) + + if new_content: + try: + with open(perm_file, "w") as f: + f.write(new_content) + print("Successfully patched transformer_engine permutation.py.") + except OSError as e: + print( + f"Could not write patch to transformer_engine (permission denied?): {e}" + ) + + # If the permutation module is already imported in this process, + # reload it so that the patched source takes effect for subsequent use. + import importlib + import sys + + perm_module_name = "transformer_engine.pytorch.triton.permutation" + if perm_module_name in sys.modules: + importlib.reload(sys.modules[perm_module_name]) + + except Exception as e: + print(f"Error checking/patching transformer_engine: {e}") + + from megatron.bridge import AutoBridge from megatron.bridge.models.model_provider import get_model from megatron.bridge.training import fault_tolerance @@ -447,6 +540,8 @@ def __init__( pre_init_communication_queue: Queue, **kwargs: Any, ): + _apply_transformer_engine_patch() + self.is_generation_colocated = None if "generation" in config and config["generation"] is not None: self.is_generation_colocated = config["generation"]["colocated"]["enabled"] diff --git a/pyproject.toml b/pyproject.toml index 5fd65d2e8b..fbcda5b7c5 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -19,11 +19,11 @@ dependencies = [ "setuptools", "pip", # Required for frozen environments; uv venv --seed may not reliably install pip "ninja", # for flash-attn parallel build - "torch==2.8.0", + "torch==2.9.0", "triton; sys_platform == 'linux' and (platform_machine == 'x86_64' or platform_machine == 'aarch64')", "colored==2.2.3", "ray[default]==2.49.2", - "transformers>=4.55.4", + "transformers==4.57.1", "wandb", "numpy", "datasets>=4.0.0", @@ -58,7 +58,7 @@ automodel = [ # Flash-attn version should be selected to satisfy both TE + vLLM requirements (xformers in particular) # https://github.com/NVIDIA/TransformerEngine/blob/v2.3/transformer_engine/pytorch/attention/dot_product_attention/utils.py#L108 # https://github.com/facebookresearch/xformers/blob/8354497deb2c04c67fbb2e2ad911e86530da0e90/xformers/ops/fmha/flash.py#L76 - "vllm==0.11.0", # Remove this once https://github.com/NVIDIA-NeMo/RL/issues/811 resolved + "vllm==0.11.2", # Remove this once https://github.com/NVIDIA-NeMo/RL/issues/811 resolved "flash-attn==2.8.1", "mamba-ssm", "causal-conv1d", @@ -70,7 +70,7 @@ vllm = [ # sudo apt-get update # sudo apt-get install libibverbs-dev "deep_ep @ git+https://github.com/deepseek-ai/DeepEP.git@e3908bf5bd0cc6265bcb225d15cd8c996d4759ef", - "vllm==0.11.0", + "vllm==0.11.2", "num2words>=0.5.14", # Remove this once https://github.com/NVIDIA-NeMo/RL/issues/501 resolved "flash-attn==2.8.1", @@ -93,7 +93,7 @@ mcore = [ "megatron-core", "megatron-bridge", # Remove this once https://github.com/NVIDIA-NeMo/RL/issues/501 resolved - "vllm==0.11.0", + "vllm==0.11.2", # Flash-attn version should be selected to satisfy both TE + vLLM requirements (xformers in particular) # https://github.com/NVIDIA/TransformerEngine/blob/v2.3/transformer_engine/pytorch/attention/dot_product_attention/utils.py#L108 # https://github.com/facebookresearch/xformers/blob/8354497deb2c04c67fbb2e2ad911e86530da0e90/xformers/ops/fmha/flash.py#L76 @@ -107,7 +107,7 @@ nemo_gym = ["nemo_gym"] # This is a default group so that we install these even with bare `uv sync` build = [ # Build requirement for TE - "torch==2.8.0", + "torch==2.9.0", # Build requirement for TE "setuptools", "packaging", @@ -168,6 +168,7 @@ triton = [ ] causal-conv1d = { git = "https://github.com/Dao-AILab/causal-conv1d", tag = "v1.5.0.post8" } mamba-ssm = { git = "https://github.com/state-spaces/mamba.git", rev = "2e16fc3062cdcd4ebef27a9aa4442676e1c7edf4" } +nv-grouped-gemm = { git = "https://github.com/fanshiqing/grouped_gemm", tag = "v1.1.4.post7" } [tool.uv.workspace] members = [ @@ -176,7 +177,7 @@ members = [ "3rdparty/Megatron-Bridge-workspace", "3rdparty/Gym-workspace", # Research projects are also added here in order for them to share the global root level uv.lock. - # If we don't do this, the research projects do not see the global uv.lock, and may mistakenly + # If we don't do this, the research projects do not see the global uv.lock, and may mistakenly # install numpy>=2.0 because nemo-rl's core [dependencies] do not pin numpy, but when you inspect # nemo-rl's uv.lock you'll see it's 1.X b/c megatron mandates 1.X in the optional dependencies, so # globally we must choose 1.X otherwise we run into pickle issues from ray. @@ -218,11 +219,19 @@ link-mode = "copy" # The opencv-python-headless override is needed because automodel pins it to 4.10.0.84, whereas vllm>=0.11.0 needs >= 4.11.0 # The transformers override is needed since automodel is still on <=4.55.4 # The timm override is needed because current automodel pins to 1.0.16. This can be removed once we move ToT automodel +# The nvidia-modelopt override is needed because mcore is still on 0.33 override-dependencies = [ "transformer-engine[pytorch]==2.8.0", "opencv-python-headless>=4.11.0", - "transformers>=4.57.1", + "transformers==4.57.1", "timm<=1.0.22", + "nvidia-modelopt[torch]>=0.39.0", +] +# CVE fxies +constraint-dependencies = [ + "brotli>=1.2.0", # Address CVE GHSA-2qfp-q593-8484 + "starlette>=0.49.1", # Address CVE GHSA-7f5h-v6xp-fcq8 + "urllib3>=2.6.0", # Address CVE GHSA-gm62-xv2j-4w53 ] # Augment build dependencies for packages that need torch at build time @@ -269,7 +278,7 @@ requires-dist = ["torch", "packaging", "ninja"] [[tool.uv.dependency-metadata]] name = "nv-grouped-gemm" # This version has to match the version in the commit/rev/tag used -version = "1.1.4.post6" +version = "v1.1.4.post7" requires-dist = ["setuptools", "wheel", "torch", "numpy"] [tool.black] diff --git a/tests/test_suites/llm/grpo-llama3.1-8b-instruct-1n8g-megatron-fp8-e2e.sh b/tests/test_suites/llm/grpo-llama3.1-8b-instruct-2n8g-megatron-fp8-e2e.sh similarity index 99% rename from tests/test_suites/llm/grpo-llama3.1-8b-instruct-1n8g-megatron-fp8-e2e.sh rename to tests/test_suites/llm/grpo-llama3.1-8b-instruct-2n8g-megatron-fp8-e2e.sh index de177d2c65..4a6d63473c 100755 --- a/tests/test_suites/llm/grpo-llama3.1-8b-instruct-1n8g-megatron-fp8-e2e.sh +++ b/tests/test_suites/llm/grpo-llama3.1-8b-instruct-2n8g-megatron-fp8-e2e.sh @@ -3,7 +3,7 @@ SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd) source $SCRIPT_DIR/common.env # ===== BEGIN CONFIG ===== -NUM_NODES=1 +NUM_NODES=2 STEPS_PER_RUN=100 MAX_STEPS=100 NUM_RUNS=$(( (MAX_STEPS + STEPS_PER_RUN - 1) / STEPS_PER_RUN )) # Round up diff --git a/tests/test_suites/nightly.txt b/tests/test_suites/nightly.txt index 8484ebaa58..c9dddde4f0 100644 --- a/tests/test_suites/nightly.txt +++ b/tests/test_suites/nightly.txt @@ -17,7 +17,7 @@ tests/test_suites/llm/grpo-llama3.2-1b-instruct-1n8g-megatron_generation.sh # Functional 32b run tests/test_suites/llm/grpo-qwen2.5-32b-32n8g-fsdp2tp8-actckpt.v3.sh -# Functional moonlight run +# Functional moonlight run tests/test_suites/llm/grpo-moonlight-16ba3b-4n8g-megatron.sh # Functional VLM run @@ -44,7 +44,7 @@ tests/test_suites/llm/grpo-math-qwen3-30ba3b-megatron-tp4-32k.sh # FP8 tests/test_suites/llm/grpo-llama3.1-8b-instruct-1n8g-megatron-fp8-rollouts.v3.sh -tests/test_suites/llm/grpo-llama3.1-8b-instruct-1n8g-megatron-fp8-e2e.sh +tests/test_suites/llm/grpo-llama3.1-8b-instruct-2n8g-megatron-fp8-e2e.sh tests/test_suites/llm/grpo-moonlight-16ba3b-4n8g-megatron-fp8-e2e.sh tests/test_suites/llm/grpo-qwen3-8b-base-1n8g-fp8-kvcache-megatron.sh diff --git a/tests/unit/models/generation/test_vllm_logprobs_mode.py b/tests/unit/models/generation/test_vllm_logprobs_mode.py index ccc7fe8112..f43f9e323c 100644 --- a/tests/unit/models/generation/test_vllm_logprobs_mode.py +++ b/tests/unit/models/generation/test_vllm_logprobs_mode.py @@ -203,6 +203,8 @@ def test_processed_logprobs_matches_manual_computation(): torch.testing.assert_close( vllm_logprobs_tensor, expected_logprobs_tensor, + rtol=1e-3, + atol=1e-2, ) print("✓ Test passed: processed_logprobs match manual computation from HF model!") diff --git a/tools/build-custom-vllm.sh b/tools/build-custom-vllm.sh index d3f17a785c..72b2cec71b 100644 --- a/tools/build-custom-vllm.sh +++ b/tools/build-custom-vllm.sh @@ -68,7 +68,7 @@ uv run --no-project use_existing_torch.py echo "Installing dependencies..." uv pip install --upgrade pip uv pip install numpy setuptools setuptools_scm -uv pip install torch==2.8.0 --torch-backend=cu129 +uv pip install torch==2.9.0 --torch-backend=cu129 # Install vLLM using precompiled wheel echo "Installing vLLM with precompiled wheel..." diff --git a/uv.lock b/uv.lock index d333c863c4..5675ee364d 100644 --- a/uv.lock +++ b/uv.lock @@ -25,11 +25,17 @@ members = [ "nemo-rl", "template-project", ] +constraints = [ + { name = "brotli", specifier = ">=1.2.0" }, + { name = "starlette", specifier = ">=0.49.1" }, + { name = "urllib3", specifier = ">=2.6.0" }, +] overrides = [ + { name = "nvidia-modelopt", extras = ["torch"], specifier = ">=0.39.0" }, { name = "opencv-python-headless", specifier = ">=4.11.0" }, { name = "timm", specifier = "<=1.0.22" }, { name = "transformer-engine", extras = ["pytorch"], specifier = "==2.8.0" }, - { name = "transformers", specifier = ">=4.57.1" }, + { name = "transformers", specifier = "==4.57.1" }, ] [[manifest.dependency-metadata]] @@ -58,7 +64,7 @@ requires-dist = ["torch", "packaging", "ninja", "causal-conv1d"] [[manifest.dependency-metadata]] name = "nv-grouped-gemm" -version = "1.1.4.post6" +version = "1.1.4.post7" requires-dist = ["setuptools", "wheel", "torch", "numpy"] [[package]] @@ -81,8 +87,8 @@ dependencies = [ { name = "psutil" }, { name = "pyyaml" }, { name = "safetensors" }, - { name = "torch", version = "2.8.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, - { name = "torch", version = "2.8.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform != 'darwin'" }, + { name = "torch", version = "2.9.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, + { name = "torch", version = "2.9.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform != 'darwin'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/f7/66/be171836d86dc5b8698b3a9bf4b9eb10cb53369729939f88bf650167588b/accelerate-1.10.0.tar.gz", hash = "sha256:8270568fda9036b5cccdc09703fef47872abccd56eb5f6d53b54ea5fb7581496", size = 392261, upload-time = "2025-08-07T10:54:51.664Z" } wheels = [ @@ -251,6 +257,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/c2/62/96b5217b742805236614f05904541000f55422a6060a90d7fd4ce26c172d/alembic-1.16.4-py3-none-any.whl", hash = "sha256:b05e51e8e82efc1abd14ba2af6392897e145930c3e0a2faf2b0da2f7f7fd660d", size = 247026, upload-time = "2025-07-10T16:17:21.845Z" }, ] +[[package]] +name = "annotated-doc" +version = "0.0.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/57/ba/046ceea27344560984e26a590f90bc7f4a75b06701f653222458922b558c/annotated_doc-0.0.4.tar.gz", hash = "sha256:fbcda96e87e9c92ad167c2e53839e57503ecfda18804ea28102353485033faa4", size = 7288, upload-time = "2025-11-10T22:07:42.062Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1e/d3/26bf1008eb3d2daa8ef4cacc7f3bfdc11818d111f7e2d0201bc6e3b49d45/annotated_doc-0.0.4-py3-none-any.whl", hash = "sha256:571ac1dc6991c450b25a9c2d84a3705e2ae7a53467b5d111c24fa8baabbed320", size = 5303, upload-time = "2025-11-10T22:07:40.673Z" }, +] + [[package]] name = "annotated-types" version = "0.7.0" @@ -260,6 +275,25 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643, upload-time = "2024-05-20T21:33:24.1Z" }, ] +[[package]] +name = "anthropic" +version = "0.71.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anyio" }, + { name = "distro" }, + { name = "docstring-parser" }, + { name = "httpx" }, + { name = "jiter" }, + { name = "pydantic" }, + { name = "sniffio" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/82/4f/70682b068d897841f43223df82d96ec1d617435a8b759c4a2d901a50158b/anthropic-0.71.0.tar.gz", hash = "sha256:eb8e6fa86d049061b3ef26eb4cbae0174ebbff21affa6de7b3098da857d8de6a", size = 489102, upload-time = "2025-10-16T15:54:40.08Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5d/77/073e8ac488f335aec7001952825275582fb8f433737e90f24eeef9d878f6/anthropic-0.71.0-py3-none-any.whl", hash = "sha256:85c5015fcdbdc728390f11b17642a65a4365d03b12b799b18b6cc57e71fdb327", size = 355035, upload-time = "2025-10-16T15:54:38.238Z" }, +] + [[package]] name = "antlr4-python3-runtime" version = "4.9.3" @@ -521,7 +555,7 @@ version = "0.45.5" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "numpy", marker = "(platform_machine != 'aarch64' and sys_platform != 'darwin') or sys_platform == 'win32'" }, - { name = "torch", version = "2.8.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "(platform_machine != 'aarch64' and sys_platform != 'darwin') or sys_platform == 'win32'" }, + { name = "torch", version = "2.9.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "(platform_machine != 'aarch64' and sys_platform != 'darwin') or sys_platform == 'win32'" }, ] wheels = [ { url = "https://files.pythonhosted.org/packages/07/b7/cb5ce4d1a382cf53c19ef06c5fc29e85f5e129b4da6527dd207d90a5b8ad/bitsandbytes-0.45.5-py3-none-manylinux_2_24_x86_64.whl", hash = "sha256:a5453f30cc6aab6ccaac364e6bf51a7808d3da5f71763dffeb6d9694c59136e4", size = 76059261, upload-time = "2025-04-07T13:32:52.573Z" }, @@ -656,40 +690,40 @@ wheels = [ [[package]] name = "brotli" -version = "1.1.0" +version = "1.2.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/2f/c2/f9e977608bdf958650638c3f1e28f85a1b075f075ebbe77db8555463787b/Brotli-1.1.0.tar.gz", hash = "sha256:81de08ac11bcb85841e440c13611c00b67d3bf82698314928d0b676362546724", size = 7372270, upload-time = "2023-09-07T14:05:41.643Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/5c/d0/5373ae13b93fe00095a58efcbce837fd470ca39f703a235d2a999baadfbc/Brotli-1.1.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:32d95b80260d79926f5fab3c41701dbb818fde1c9da590e77e571eefd14abe28", size = 815693, upload-time = "2024-10-18T12:32:23.824Z" }, - { url = "https://files.pythonhosted.org/packages/8e/48/f6e1cdf86751300c288c1459724bfa6917a80e30dbfc326f92cea5d3683a/Brotli-1.1.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b760c65308ff1e462f65d69c12e4ae085cff3b332d894637f6273a12a482d09f", size = 422489, upload-time = "2024-10-18T12:32:25.641Z" }, - { url = "https://files.pythonhosted.org/packages/06/88/564958cedce636d0f1bed313381dfc4b4e3d3f6015a63dae6146e1b8c65c/Brotli-1.1.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:316cc9b17edf613ac76b1f1f305d2a748f1b976b033b049a6ecdfd5612c70409", size = 873081, upload-time = "2023-09-07T14:03:57.967Z" }, - { url = "https://files.pythonhosted.org/packages/58/79/b7026a8bb65da9a6bb7d14329fd2bd48d2b7f86d7329d5cc8ddc6a90526f/Brotli-1.1.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:caf9ee9a5775f3111642d33b86237b05808dafcd6268faa492250e9b78046eb2", size = 446244, upload-time = "2023-09-07T14:03:59.319Z" }, - { url = "https://files.pythonhosted.org/packages/e5/18/c18c32ecea41b6c0004e15606e274006366fe19436b6adccc1ae7b2e50c2/Brotli-1.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:70051525001750221daa10907c77830bc889cb6d865cc0b813d9db7fefc21451", size = 2906505, upload-time = "2023-09-07T14:04:01.327Z" }, - { url = "https://files.pythonhosted.org/packages/08/c8/69ec0496b1ada7569b62d85893d928e865df29b90736558d6c98c2031208/Brotli-1.1.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7f4bf76817c14aa98cc6697ac02f3972cb8c3da93e9ef16b9c66573a68014f91", size = 2944152, upload-time = "2023-09-07T14:04:03.033Z" }, - { url = "https://files.pythonhosted.org/packages/ab/fb/0517cea182219d6768113a38167ef6d4eb157a033178cc938033a552ed6d/Brotli-1.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d0c5516f0aed654134a2fc936325cc2e642f8a0e096d075209672eb321cff408", size = 2919252, upload-time = "2023-09-07T14:04:04.675Z" }, - { url = "https://files.pythonhosted.org/packages/c7/53/73a3431662e33ae61a5c80b1b9d2d18f58dfa910ae8dd696e57d39f1a2f5/Brotli-1.1.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6c3020404e0b5eefd7c9485ccf8393cfb75ec38ce75586e046573c9dc29967a0", size = 2845955, upload-time = "2023-09-07T14:04:06.585Z" }, - { url = "https://files.pythonhosted.org/packages/55/ac/bd280708d9c5ebdbf9de01459e625a3e3803cce0784f47d633562cf40e83/Brotli-1.1.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:4ed11165dd45ce798d99a136808a794a748d5dc38511303239d4e2363c0695dc", size = 2914304, upload-time = "2023-09-07T14:04:08.668Z" }, - { url = "https://files.pythonhosted.org/packages/76/58/5c391b41ecfc4527d2cc3350719b02e87cb424ef8ba2023fb662f9bf743c/Brotli-1.1.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:4093c631e96fdd49e0377a9c167bfd75b6d0bad2ace734c6eb20b348bc3ea180", size = 2814452, upload-time = "2023-09-07T14:04:10.736Z" }, - { url = "https://files.pythonhosted.org/packages/c7/4e/91b8256dfe99c407f174924b65a01f5305e303f486cc7a2e8a5d43c8bec3/Brotli-1.1.0-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:7e4c4629ddad63006efa0ef968c8e4751c5868ff0b1c5c40f76524e894c50248", size = 2938751, upload-time = "2023-09-07T14:04:12.875Z" }, - { url = "https://files.pythonhosted.org/packages/5a/a6/e2a39a5d3b412938362bbbeba5af904092bf3f95b867b4a3eb856104074e/Brotli-1.1.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:861bf317735688269936f755fa136a99d1ed526883859f86e41a5d43c61d8966", size = 2933757, upload-time = "2023-09-07T14:04:14.551Z" }, - { url = "https://files.pythonhosted.org/packages/13/f0/358354786280a509482e0e77c1a5459e439766597d280f28cb097642fc26/Brotli-1.1.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:87a3044c3a35055527ac75e419dfa9f4f3667a1e887ee80360589eb8c90aabb9", size = 2936146, upload-time = "2024-10-18T12:32:27.257Z" }, - { url = "https://files.pythonhosted.org/packages/80/f7/daf538c1060d3a88266b80ecc1d1c98b79553b3f117a485653f17070ea2a/Brotli-1.1.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:c5529b34c1c9d937168297f2c1fde7ebe9ebdd5e121297ff9c043bdb2ae3d6fb", size = 2848055, upload-time = "2024-10-18T12:32:29.376Z" }, - { url = "https://files.pythonhosted.org/packages/ad/cf/0eaa0585c4077d3c2d1edf322d8e97aabf317941d3a72d7b3ad8bce004b0/Brotli-1.1.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:ca63e1890ede90b2e4454f9a65135a4d387a4585ff8282bb72964fab893f2111", size = 3035102, upload-time = "2024-10-18T12:32:31.371Z" }, - { url = "https://files.pythonhosted.org/packages/d8/63/1c1585b2aa554fe6dbce30f0c18bdbc877fa9a1bf5ff17677d9cca0ac122/Brotli-1.1.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e79e6520141d792237c70bcd7a3b122d00f2613769ae0cb61c52e89fd3443839", size = 2930029, upload-time = "2024-10-18T12:32:33.293Z" }, - { url = "https://files.pythonhosted.org/packages/5f/3b/4e3fd1893eb3bbfef8e5a80d4508bec17a57bb92d586c85c12d28666bb13/Brotli-1.1.0-cp312-cp312-win32.whl", hash = "sha256:5f4d5ea15c9382135076d2fb28dde923352fe02951e66935a9efaac8f10e81b0", size = 333276, upload-time = "2023-09-07T14:04:16.49Z" }, - { url = "https://files.pythonhosted.org/packages/3d/d5/942051b45a9e883b5b6e98c041698b1eb2012d25e5948c58d6bf85b1bb43/Brotli-1.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:906bc3a79de8c4ae5b86d3d75a8b77e44404b0f4261714306e3ad248d8ab0951", size = 357255, upload-time = "2023-09-07T14:04:17.83Z" }, - { url = "https://files.pythonhosted.org/packages/0a/9f/fb37bb8ffc52a8da37b1c03c459a8cd55df7a57bdccd8831d500e994a0ca/Brotli-1.1.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:8bf32b98b75c13ec7cf774164172683d6e7891088f6316e54425fde1efc276d5", size = 815681, upload-time = "2024-10-18T12:32:34.942Z" }, - { url = "https://files.pythonhosted.org/packages/06/b3/dbd332a988586fefb0aa49c779f59f47cae76855c2d00f450364bb574cac/Brotli-1.1.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:7bc37c4d6b87fb1017ea28c9508b36bbcb0c3d18b4260fcdf08b200c74a6aee8", size = 422475, upload-time = "2024-10-18T12:32:36.485Z" }, - { url = "https://files.pythonhosted.org/packages/bb/80/6aaddc2f63dbcf2d93c2d204e49c11a9ec93a8c7c63261e2b4bd35198283/Brotli-1.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3c0ef38c7a7014ffac184db9e04debe495d317cc9c6fb10071f7fefd93100a4f", size = 2906173, upload-time = "2024-10-18T12:32:37.978Z" }, - { url = "https://files.pythonhosted.org/packages/ea/1d/e6ca79c96ff5b641df6097d299347507d39a9604bde8915e76bf026d6c77/Brotli-1.1.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:91d7cc2a76b5567591d12c01f019dd7afce6ba8cba6571187e21e2fc418ae648", size = 2943803, upload-time = "2024-10-18T12:32:39.606Z" }, - { url = "https://files.pythonhosted.org/packages/ac/a3/d98d2472e0130b7dd3acdbb7f390d478123dbf62b7d32bda5c830a96116d/Brotli-1.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a93dde851926f4f2678e704fadeb39e16c35d8baebd5252c9fd94ce8ce68c4a0", size = 2918946, upload-time = "2024-10-18T12:32:41.679Z" }, - { url = "https://files.pythonhosted.org/packages/c4/a5/c69e6d272aee3e1423ed005d8915a7eaa0384c7de503da987f2d224d0721/Brotli-1.1.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f0db75f47be8b8abc8d9e31bc7aad0547ca26f24a54e6fd10231d623f183d089", size = 2845707, upload-time = "2024-10-18T12:32:43.478Z" }, - { url = "https://files.pythonhosted.org/packages/58/9f/4149d38b52725afa39067350696c09526de0125ebfbaab5acc5af28b42ea/Brotli-1.1.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:6967ced6730aed543b8673008b5a391c3b1076d834ca438bbd70635c73775368", size = 2936231, upload-time = "2024-10-18T12:32:45.224Z" }, - { url = "https://files.pythonhosted.org/packages/5a/5a/145de884285611838a16bebfdb060c231c52b8f84dfbe52b852a15780386/Brotli-1.1.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:7eedaa5d036d9336c95915035fb57422054014ebdeb6f3b42eac809928e40d0c", size = 2848157, upload-time = "2024-10-18T12:32:46.894Z" }, - { url = "https://files.pythonhosted.org/packages/50/ae/408b6bfb8525dadebd3b3dd5b19d631da4f7d46420321db44cd99dcf2f2c/Brotli-1.1.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:d487f5432bf35b60ed625d7e1b448e2dc855422e87469e3f450aa5552b0eb284", size = 3035122, upload-time = "2024-10-18T12:32:48.844Z" }, - { url = "https://files.pythonhosted.org/packages/af/85/a94e5cfaa0ca449d8f91c3d6f78313ebf919a0dbd55a100c711c6e9655bc/Brotli-1.1.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:832436e59afb93e1836081a20f324cb185836c617659b07b129141a8426973c7", size = 2930206, upload-time = "2024-10-18T12:32:51.198Z" }, - { url = "https://files.pythonhosted.org/packages/c2/f0/a61d9262cd01351df22e57ad7c34f66794709acab13f34be2675f45bf89d/Brotli-1.1.0-cp313-cp313-win32.whl", hash = "sha256:43395e90523f9c23a3d5bdf004733246fba087f2948f87ab28015f12359ca6a0", size = 333804, upload-time = "2024-10-18T12:32:52.661Z" }, - { url = "https://files.pythonhosted.org/packages/7e/c1/ec214e9c94000d1c1974ec67ced1c970c148aa6b8d8373066123fc3dbf06/Brotli-1.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:9011560a466d2eb3f5a6e4929cf4a09be405c64154e12df0dd72713f6500e32b", size = 358517, upload-time = "2024-10-18T12:32:54.066Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/f7/16/c92ca344d646e71a43b8bb353f0a6490d7f6e06210f8554c8f874e454285/brotli-1.2.0.tar.gz", hash = "sha256:e310f77e41941c13340a95976fe66a8a95b01e783d430eeaf7a2f87e0a57dd0a", size = 7388632, upload-time = "2025-11-05T18:39:42.86Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/11/ee/b0a11ab2315c69bb9b45a2aaed022499c9c24a205c3a49c3513b541a7967/brotli-1.2.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:35d382625778834a7f3061b15423919aa03e4f5da34ac8e02c074e4b75ab4f84", size = 861543, upload-time = "2025-11-05T18:38:24.183Z" }, + { url = "https://files.pythonhosted.org/packages/e1/2f/29c1459513cd35828e25531ebfcbf3e92a5e49f560b1777a9af7203eb46e/brotli-1.2.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7a61c06b334bd99bc5ae84f1eeb36bfe01400264b3c352f968c6e30a10f9d08b", size = 444288, upload-time = "2025-11-05T18:38:25.139Z" }, + { url = "https://files.pythonhosted.org/packages/3d/6f/feba03130d5fceadfa3a1bb102cb14650798c848b1df2a808356f939bb16/brotli-1.2.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:acec55bb7c90f1dfc476126f9711a8e81c9af7fb617409a9ee2953115343f08d", size = 1528071, upload-time = "2025-11-05T18:38:26.081Z" }, + { url = "https://files.pythonhosted.org/packages/2b/38/f3abb554eee089bd15471057ba85f47e53a44a462cfce265d9bf7088eb09/brotli-1.2.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:260d3692396e1895c5034f204f0db022c056f9e2ac841593a4cf9426e2a3faca", size = 1626913, upload-time = "2025-11-05T18:38:27.284Z" }, + { url = "https://files.pythonhosted.org/packages/03/a7/03aa61fbc3c5cbf99b44d158665f9b0dd3d8059be16c460208d9e385c837/brotli-1.2.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:072e7624b1fc4d601036ab3f4f27942ef772887e876beff0301d261210bca97f", size = 1419762, upload-time = "2025-11-05T18:38:28.295Z" }, + { url = "https://files.pythonhosted.org/packages/21/1b/0374a89ee27d152a5069c356c96b93afd1b94eae83f1e004b57eb6ce2f10/brotli-1.2.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:adedc4a67e15327dfdd04884873c6d5a01d3e3b6f61406f99b1ed4865a2f6d28", size = 1484494, upload-time = "2025-11-05T18:38:29.29Z" }, + { url = "https://files.pythonhosted.org/packages/cf/57/69d4fe84a67aef4f524dcd075c6eee868d7850e85bf01d778a857d8dbe0a/brotli-1.2.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:7a47ce5c2288702e09dc22a44d0ee6152f2c7eda97b3c8482d826a1f3cfc7da7", size = 1593302, upload-time = "2025-11-05T18:38:30.639Z" }, + { url = "https://files.pythonhosted.org/packages/d5/3b/39e13ce78a8e9a621c5df3aeb5fd181fcc8caba8c48a194cd629771f6828/brotli-1.2.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:af43b8711a8264bb4e7d6d9a6d004c3a2019c04c01127a868709ec29962b6036", size = 1487913, upload-time = "2025-11-05T18:38:31.618Z" }, + { url = "https://files.pythonhosted.org/packages/62/28/4d00cb9bd76a6357a66fcd54b4b6d70288385584063f4b07884c1e7286ac/brotli-1.2.0-cp312-cp312-win32.whl", hash = "sha256:e99befa0b48f3cd293dafeacdd0d191804d105d279e0b387a32054c1180f3161", size = 334362, upload-time = "2025-11-05T18:38:32.939Z" }, + { url = "https://files.pythonhosted.org/packages/1c/4e/bc1dcac9498859d5e353c9b153627a3752868a9d5f05ce8dedd81a2354ab/brotli-1.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:b35c13ce241abdd44cb8ca70683f20c0c079728a36a996297adb5334adfc1c44", size = 369115, upload-time = "2025-11-05T18:38:33.765Z" }, + { url = "https://files.pythonhosted.org/packages/6c/d4/4ad5432ac98c73096159d9ce7ffeb82d151c2ac84adcc6168e476bb54674/brotli-1.2.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:9e5825ba2c9998375530504578fd4d5d1059d09621a02065d1b6bfc41a8e05ab", size = 861523, upload-time = "2025-11-05T18:38:34.67Z" }, + { url = "https://files.pythonhosted.org/packages/91/9f/9cc5bd03ee68a85dc4bc89114f7067c056a3c14b3d95f171918c088bf88d/brotli-1.2.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:0cf8c3b8ba93d496b2fae778039e2f5ecc7cff99df84df337ca31d8f2252896c", size = 444289, upload-time = "2025-11-05T18:38:35.6Z" }, + { url = "https://files.pythonhosted.org/packages/2e/b6/fe84227c56a865d16a6614e2c4722864b380cb14b13f3e6bef441e73a85a/brotli-1.2.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c8565e3cdc1808b1a34714b553b262c5de5fbda202285782173ec137fd13709f", size = 1528076, upload-time = "2025-11-05T18:38:36.639Z" }, + { url = "https://files.pythonhosted.org/packages/55/de/de4ae0aaca06c790371cf6e7ee93a024f6b4bb0568727da8c3de112e726c/brotli-1.2.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:26e8d3ecb0ee458a9804f47f21b74845cc823fd1bb19f02272be70774f56e2a6", size = 1626880, upload-time = "2025-11-05T18:38:37.623Z" }, + { url = "https://files.pythonhosted.org/packages/5f/16/a1b22cbea436642e071adcaf8d4b350a2ad02f5e0ad0da879a1be16188a0/brotli-1.2.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:67a91c5187e1eec76a61625c77a6c8c785650f5b576ca732bd33ef58b0dff49c", size = 1419737, upload-time = "2025-11-05T18:38:38.729Z" }, + { url = "https://files.pythonhosted.org/packages/46/63/c968a97cbb3bdbf7f974ef5a6ab467a2879b82afbc5ffb65b8acbb744f95/brotli-1.2.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:4ecdb3b6dc36e6d6e14d3a1bdc6c1057c8cbf80db04031d566eb6080ce283a48", size = 1484440, upload-time = "2025-11-05T18:38:39.916Z" }, + { url = "https://files.pythonhosted.org/packages/06/9d/102c67ea5c9fc171f423e8399e585dabea29b5bc79b05572891e70013cdd/brotli-1.2.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:3e1b35d56856f3ed326b140d3c6d9db91740f22e14b06e840fe4bb1923439a18", size = 1593313, upload-time = "2025-11-05T18:38:41.24Z" }, + { url = "https://files.pythonhosted.org/packages/9e/4a/9526d14fa6b87bc827ba1755a8440e214ff90de03095cacd78a64abe2b7d/brotli-1.2.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:54a50a9dad16b32136b2241ddea9e4df159b41247b2ce6aac0b3276a66a8f1e5", size = 1487945, upload-time = "2025-11-05T18:38:42.277Z" }, + { url = "https://files.pythonhosted.org/packages/5b/e8/3fe1ffed70cbef83c5236166acaed7bb9c766509b157854c80e2f766b38c/brotli-1.2.0-cp313-cp313-win32.whl", hash = "sha256:1b1d6a4efedd53671c793be6dd760fcf2107da3a52331ad9ea429edf0902f27a", size = 334368, upload-time = "2025-11-05T18:38:43.345Z" }, + { url = "https://files.pythonhosted.org/packages/ff/91/e739587be970a113b37b821eae8097aac5a48e5f0eca438c22e4c7dd8648/brotli-1.2.0-cp313-cp313-win_amd64.whl", hash = "sha256:b63daa43d82f0cdabf98dee215b375b4058cce72871fd07934f179885aad16e8", size = 369116, upload-time = "2025-11-05T18:38:44.609Z" }, + { url = "https://files.pythonhosted.org/packages/17/e1/298c2ddf786bb7347a1cd71d63a347a79e5712a7c0cba9e3c3458ebd976f/brotli-1.2.0-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:6c12dad5cd04530323e723787ff762bac749a7b256a5bece32b2243dd5c27b21", size = 863080, upload-time = "2025-11-05T18:38:45.503Z" }, + { url = "https://files.pythonhosted.org/packages/84/0c/aac98e286ba66868b2b3b50338ffbd85a35c7122e9531a73a37a29763d38/brotli-1.2.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:3219bd9e69868e57183316ee19c84e03e8f8b5a1d1f2667e1aa8c2f91cb061ac", size = 445453, upload-time = "2025-11-05T18:38:46.433Z" }, + { url = "https://files.pythonhosted.org/packages/ec/f1/0ca1f3f99ae300372635ab3fe2f7a79fa335fee3d874fa7f9e68575e0e62/brotli-1.2.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:963a08f3bebd8b75ac57661045402da15991468a621f014be54e50f53a58d19e", size = 1528168, upload-time = "2025-11-05T18:38:47.371Z" }, + { url = "https://files.pythonhosted.org/packages/d6/a6/2ebfc8f766d46df8d3e65b880a2e220732395e6d7dc312c1e1244b0f074a/brotli-1.2.0-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:9322b9f8656782414b37e6af884146869d46ab85158201d82bab9abbcb971dc7", size = 1627098, upload-time = "2025-11-05T18:38:48.385Z" }, + { url = "https://files.pythonhosted.org/packages/f3/2f/0976d5b097ff8a22163b10617f76b2557f15f0f39d6a0fe1f02b1a53e92b/brotli-1.2.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:cf9cba6f5b78a2071ec6fb1e7bd39acf35071d90a81231d67e92d637776a6a63", size = 1419861, upload-time = "2025-11-05T18:38:49.372Z" }, + { url = "https://files.pythonhosted.org/packages/9c/97/d76df7176a2ce7616ff94c1fb72d307c9a30d2189fe877f3dd99af00ea5a/brotli-1.2.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:7547369c4392b47d30a3467fe8c3330b4f2e0f7730e45e3103d7d636678a808b", size = 1484594, upload-time = "2025-11-05T18:38:50.655Z" }, + { url = "https://files.pythonhosted.org/packages/d3/93/14cf0b1216f43df5609f5b272050b0abd219e0b54ea80b47cef9867b45e7/brotli-1.2.0-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:fc1530af5c3c275b8524f2e24841cbe2599d74462455e9bae5109e9ff42e9361", size = 1593455, upload-time = "2025-11-05T18:38:51.624Z" }, + { url = "https://files.pythonhosted.org/packages/b3/73/3183c9e41ca755713bdf2cc1d0810df742c09484e2e1ddd693bee53877c1/brotli-1.2.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:d2d085ded05278d1c7f65560aae97b3160aeb2ea2c0b3e26204856beccb60888", size = 1488164, upload-time = "2025-11-05T18:38:53.079Z" }, + { url = "https://files.pythonhosted.org/packages/64/6a/0c78d8f3a582859236482fd9fa86a65a60328a00983006bcf6d83b7b2253/brotli-1.2.0-cp314-cp314-win32.whl", hash = "sha256:832c115a020e463c2f67664560449a7bea26b0c1fdd690352addad6d0a08714d", size = 339280, upload-time = "2025-11-05T18:38:54.02Z" }, + { url = "https://files.pythonhosted.org/packages/f5/10/56978295c14794b2c12007b07f3e41ba26acda9257457d7085b0bb3bb90c/brotli-1.2.0-cp314-cp314-win_amd64.whl", hash = "sha256:e7c0af964e0b4e3412a0ebf341ea26ec767fa0b4cf81abb5e897c9338b5ad6a3", size = 375639, upload-time = "2025-11-05T18:38:55.67Z" }, ] [[package]] @@ -708,8 +742,8 @@ source = { git = "https://github.com/Dao-AILab/causal-conv1d?tag=v1.5.0.post8#82 dependencies = [ { name = "ninja" }, { name = "packaging" }, - { name = "torch", version = "2.8.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, - { name = "torch", version = "2.8.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform != 'darwin'" }, + { name = "torch", version = "2.9.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, + { name = "torch", version = "2.9.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform != 'darwin'" }, ] [[package]] @@ -915,18 +949,18 @@ wheels = [ [[package]] name = "compressed-tensors" -version = "0.11.0" +version = "0.12.2" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "frozendict" }, + { name = "loguru" }, { name = "pydantic" }, - { name = "torch", version = "2.8.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, - { name = "torch", version = "2.8.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform != 'darwin'" }, + { name = "torch", version = "2.9.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, + { name = "torch", version = "2.9.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform != 'darwin'" }, { name = "transformers" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/b8/99/3fdabfc95609d6efdf02fa7f1ed0245524cb1209d3d4a17109d3205d2eed/compressed_tensors-0.11.0.tar.gz", hash = "sha256:95ddf19699f775df6494dd864e5f52e8a24f8015496520190c1a22c6cfc44b1f", size = 187566, upload-time = "2025-08-19T18:59:31.854Z" } +sdist = { url = "https://files.pythonhosted.org/packages/a2/79/4c5c1cd14266f8cf2650bdb940f986ce7fcaeb56aad8cfa9e9afedf14e2f/compressed_tensors-0.12.2.tar.gz", hash = "sha256:5bb40856dd17f128ab73557ecc73799f80db4dd82fab6de875f1e6899b9ea0c4", size = 190409, upload-time = "2025-10-07T14:30:59.302Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/d2/81/e3073017a8f5c75169e79108eda209e6089e3f96c9f197d307cbda7df71c/compressed_tensors-0.11.0-py3-none-any.whl", hash = "sha256:e1cbc46e1ae032b7ceea915fe18c8d2de5a54d3a50a607969b6bdfe703b6cb83", size = 179951, upload-time = "2025-08-19T18:59:29.308Z" }, + { url = "https://files.pythonhosted.org/packages/f0/c0/1695b87d369e6652ec0d650912e02eca2151c5e9c29244f94d2afccfe970/compressed_tensors-0.12.2-py3-none-any.whl", hash = "sha256:e554ea761710ca2b0c0ea49276a4ef8e08658624f1591e6a7368817106b48fbe", size = 183049, upload-time = "2025-10-07T14:30:56.523Z" }, ] [[package]] @@ -1175,10 +1209,10 @@ version = "25.3.2" source = { git = "https://github.com/apple/ml-cross-entropy.git?rev=87a86ab#87a86aba72cfd2f0d8abecaf81c13c4528ea07d8" } dependencies = [ { name = "setuptools" }, - { name = "torch", version = "2.8.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, - { name = "torch", version = "2.8.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform != 'darwin'" }, - { name = "triton", version = "3.4.0", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform == 'linux'" }, + { name = "torch", version = "2.9.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, + { name = "torch", version = "2.9.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform != 'darwin'" }, { name = "triton", version = "3.4.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'darwin' and sys_platform != 'linux'" }, + { name = "triton", version = "3.5.0", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform == 'linux'" }, ] [[package]] @@ -1264,8 +1298,8 @@ source = { git = "https://github.com/deepseek-ai/DeepEP.git?rev=e3908bf5bd0cc626 dependencies = [ { name = "ninja" }, { name = "packaging" }, - { name = "torch", version = "2.8.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, - { name = "torch", version = "2.8.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform != 'darwin'" }, + { name = "torch", version = "2.9.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, + { name = "torch", version = "2.9.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform != 'darwin'" }, ] [[package]] @@ -1275,8 +1309,8 @@ source = { git = "https://github.com/deepseek-ai/DeepGEMM.git?rev=7b6b5563b9d4c1 dependencies = [ { name = "ninja" }, { name = "packaging" }, - { name = "torch", version = "2.8.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, - { name = "torch", version = "2.8.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform != 'darwin'" }, + { name = "torch", version = "2.9.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, + { name = "torch", version = "2.9.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform != 'darwin'" }, ] [[package]] @@ -1302,15 +1336,15 @@ wheels = [ [[package]] name = "depyf" -version = "0.19.0" +version = "0.20.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "astor" }, { name = "dill" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/19/38/69157d711be575f1b9cf3177b64ef4ade44373fc02839f183fdd98ec2dd6/depyf-0.19.0.tar.gz", hash = "sha256:afed0916b32d141cc90fa6220df01885eda442ca43b297d5050eeb90b4a5cb44", size = 6171405, upload-time = "2025-04-20T08:07:41.224Z" } +sdist = { url = "https://files.pythonhosted.org/packages/88/35/83fb0178212279aa0af031031905804c6de5618435d229f41ed21bb9ad2c/depyf-0.20.0.tar.gz", hash = "sha256:fb7683bd72c44f67b56029df2c47721e9a02ffa4d7b19095f1c54c4ebf797a98", size = 6168761, upload-time = "2025-10-13T12:33:38.589Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/28/4d/1192acbcdc5e843f5e5d51f6e8788f2b60a9fe0b578ac385ded67a0b0b26/depyf-0.19.0-py3-none-any.whl", hash = "sha256:040b35fc0997d49df024b7d094f2a7836f91e9ed02f49982dd37e70aa3285ad5", size = 39034, upload-time = "2025-04-20T08:07:37.036Z" }, + { url = "https://files.pythonhosted.org/packages/cf/65/4df6936130b56e1429114e663e7c1576cf845f3aef1b2dd200c0a5d19dba/depyf-0.20.0-py3-none-any.whl", hash = "sha256:d31effad4261cebecb58955d832e448ace88f432328f95f82fd99c30fd9308d4", size = 39381, upload-time = "2025-10-13T12:33:33.647Z" }, ] [[package]] @@ -1392,6 +1426,15 @@ version = "0.6.2" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/a2/55/8f8cab2afd404cf578136ef2cc5dfb50baa1761b68c9da1fb1e4eed343c9/docopt-0.6.2.tar.gz", hash = "sha256:49b3a825280bd66b3aa83585ef59c4a8c82f2c8a522dbe754a8bc8d08c85c491", size = 25901, upload-time = "2014-06-16T11:18:57.406Z" } +[[package]] +name = "docstring-parser" +version = "0.17.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b2/9d/c3b43da9515bd270df0f80548d9944e389870713cc1fe2b8fb35fe2bcefd/docstring_parser-0.17.0.tar.gz", hash = "sha256:583de4a309722b3315439bb31d64ba3eebada841f2e2cee23b99df001434c912", size = 27442, upload-time = "2025-07-21T07:35:01.868Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/55/e2/2537ebcff11c1ee1ff17d8d0b6f4db75873e3b0fb32c2d4a2ee31ecb310a/docstring_parser-0.17.0-py3-none-any.whl", hash = "sha256:cf2569abd23dce8099b300f9b4fa8191e9582dda731fd533daf54c4551658708", size = 36896, upload-time = "2025-07-21T07:35:00.684Z" }, +] + [[package]] name = "docutils" version = "0.21.2" @@ -1438,8 +1481,8 @@ version = "0.1.0" source = { git = "https://github.com/NVIDIA-NeMo/Emerging-Optimizers.git?rev=v0.1.0#d5363b4a418128cd8111983b191c4b8869a9766b" } dependencies = [ { name = "absl-py" }, - { name = "torch", version = "2.8.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, - { name = "torch", version = "2.8.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform != 'darwin'" }, + { name = "torch", version = "2.9.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, + { name = "torch", version = "2.9.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform != 'darwin'" }, { name = "typing-extensions" }, ] @@ -1454,16 +1497,17 @@ wheels = [ [[package]] name = "fastapi" -version = "0.116.1" +version = "0.124.4" source = { registry = "https://pypi.org/simple" } dependencies = [ + { name = "annotated-doc" }, { name = "pydantic" }, { name = "starlette" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/78/d7/6c8b3bfe33eeffa208183ec037fee0cce9f7f024089ab1c5d12ef04bd27c/fastapi-0.116.1.tar.gz", hash = "sha256:ed52cbf946abfd70c5a0dccb24673f0670deeb517a88b3544d03c2a6bf283143", size = 296485, upload-time = "2025-07-11T16:22:32.057Z" } +sdist = { url = "https://files.pythonhosted.org/packages/cd/21/ade3ff6745a82ea8ad88552b4139d27941549e4f19125879f848ac8f3c3d/fastapi-0.124.4.tar.gz", hash = "sha256:0e9422e8d6b797515f33f500309f6e1c98ee4e85563ba0f2debb282df6343763", size = 378460, upload-time = "2025-12-12T15:00:43.891Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e5/47/d63c60f59a59467fda0f93f46335c9d18526d7071f025cb5b89d5353ea42/fastapi-0.116.1-py3-none-any.whl", hash = "sha256:c46ac7c312df840f0c9e220f7964bada936781bc4e2e6eb71f1c4d7553786565", size = 95631, upload-time = "2025-07-11T16:22:30.485Z" }, + { url = "https://files.pythonhosted.org/packages/3e/57/aa70121b5008f44031be645a61a7c4abc24e0e888ad3fc8fda916f4d188e/fastapi-0.124.4-py3-none-any.whl", hash = "sha256:6d1e703698443ccb89e50abe4893f3c84d9d6689c0cf1ca4fad6d3c15cf69f15", size = 113281, upload-time = "2025-12-12T15:00:42.44Z" }, ] [package.optional-dependencies] @@ -1565,8 +1609,8 @@ version = "0.3.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "einops" }, - { name = "torch", version = "2.8.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, - { name = "torch", version = "2.8.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform != 'darwin'" }, + { name = "torch", version = "2.9.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, + { name = "torch", version = "2.9.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform != 'darwin'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/67/c6/10a1149b07e6bab45b2cb2d07f6b827716c2baf5f3404161753f25c6389b/fla_core-0.3.2.tar.gz", hash = "sha256:d38db16bc4e1c6fa8c04df442f246da1e6926a209426bc6ef703d41bfbc37c92", size = 296725, upload-time = "2025-09-10T07:43:40.155Z" } wheels = [ @@ -1582,8 +1626,8 @@ dependencies = [ { name = "ninja" }, { name = "psutil" }, { name = "setuptools" }, - { name = "torch", version = "2.8.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, - { name = "torch", version = "2.8.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform != 'darwin'" }, + { name = "torch", version = "2.9.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, + { name = "torch", version = "2.9.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform != 'darwin'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/e8/6d/7066d160bdffa2f9da29a8c3957f266b17a03ca0b3bdc8fdae86d9881fe7/flash_attn-2.8.1.tar.gz", hash = "sha256:0ff003899fcb244f357905b04f622d5c9736887126dd6675f8f4bc52954e3923", size = 8166563, upload-time = "2025-07-10T05:16:39.729Z" } @@ -1604,7 +1648,7 @@ wheels = [ [[package]] name = "flashinfer-python" -version = "0.5.3" +version = "0.5.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "apache-tvm-ffi" }, @@ -1618,13 +1662,13 @@ dependencies = [ { name = "packaging" }, { name = "requests" }, { name = "tabulate" }, - { name = "torch", version = "2.8.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, - { name = "torch", version = "2.8.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform != 'darwin'" }, + { name = "torch", version = "2.9.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, + { name = "torch", version = "2.9.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform != 'darwin'" }, { name = "tqdm" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/b4/91/cca69baeff24bb3efd12c7479a026432c8717ee47193694010494c528b22/flashinfer_python-0.5.3.tar.gz", hash = "sha256:100d59b0ede47878d2808cd3a1b9039d7a952d66338bc9f68dac192ae1b2e3f1", size = 4682367, upload-time = "2025-11-20T21:22:46.976Z" } +sdist = { url = "https://files.pythonhosted.org/packages/d8/04/e357eaa50238e12c49e66fcf47f83e066e741ef19a117c136782b32eafbb/flashinfer_python-0.5.2.tar.gz", hash = "sha256:99d097a28be1e98c7f85e4a767e9e9a4794374f9318c27db14d21e367149063f", size = 4632657, upload-time = "2025-11-07T02:53:27.261Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/76/78/6dc7e7da8cb87c9965644ea0d2439457a1bc9256c45ceda0044595be4143/flashinfer_python-0.5.3-py3-none-any.whl", hash = "sha256:b601293b72f9138bad173edc28df84b9f239a013be974e2e79d4ba98aeb38cf5", size = 6998069, upload-time = "2025-11-20T21:22:45.104Z" }, + { url = "https://files.pythonhosted.org/packages/8d/0c/4a8ffbbc0d85e314f534cf5c32711f2af5d5e6e49225a5a414400a67b684/flashinfer_python-0.5.2-py3-none-any.whl", hash = "sha256:739c27d86d5ff4e3ad1ea41dcb90bda08e44c332549bf696f9c9c5c57f608e63", size = 6936306, upload-time = "2025-11-07T02:53:25.515Z" }, ] [[package]] @@ -1698,17 +1742,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/0f/64/9d606e66d498917cd7a2ff24f558010d42d6fd4576d9dd57f0bd98333f5a/fonttools-4.59.1-py3-none-any.whl", hash = "sha256:647db657073672a8330608970a984d51573557f328030566521bc03415535042", size = 1130094, upload-time = "2025-08-14T16:28:12.048Z" }, ] -[[package]] -name = "frozendict" -version = "2.4.6" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/bb/59/19eb300ba28e7547538bdf603f1c6c34793240a90e1a7b61b65d8517e35e/frozendict-2.4.6.tar.gz", hash = "sha256:df7cd16470fbd26fc4969a208efadc46319334eb97def1ddf48919b351192b8e", size = 316416, upload-time = "2024-10-13T12:15:32.449Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/04/13/d9839089b900fa7b479cce495d62110cddc4bd5630a04d8469916c0e79c5/frozendict-2.4.6-py311-none-any.whl", hash = "sha256:d065db6a44db2e2375c23eac816f1a022feb2fa98cbb50df44a9e83700accbea", size = 16148, upload-time = "2024-10-13T12:15:26.839Z" }, - { url = "https://files.pythonhosted.org/packages/ba/d0/d482c39cee2ab2978a892558cf130681d4574ea208e162da8958b31e9250/frozendict-2.4.6-py312-none-any.whl", hash = "sha256:49344abe90fb75f0f9fdefe6d4ef6d4894e640fadab71f11009d52ad97f370b9", size = 16146, upload-time = "2024-10-13T12:15:28.16Z" }, - { url = "https://files.pythonhosted.org/packages/a5/8e/b6bf6a0de482d7d7d7a2aaac8fdc4a4d0bb24a809f5ddd422aa7060eb3d2/frozendict-2.4.6-py313-none-any.whl", hash = "sha256:7134a2bb95d4a16556bb5f2b9736dceb6ea848fa5b6f3f6c2d6dba93b44b4757", size = 16146, upload-time = "2024-10-13T12:15:29.495Z" }, -] - [[package]] name = "frozenlist" version = "1.7.0" @@ -1877,7 +1910,7 @@ wheels = [ [[package]] name = "gradio" -version = "5.49.1" +version = "6.1.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "aiofiles" }, @@ -1901,7 +1934,6 @@ dependencies = [ { name = "pydub" }, { name = "python-multipart" }, { name = "pyyaml" }, - { name = "ruff" }, { name = "safehttpx" }, { name = "semantic-version" }, { name = "starlette" }, @@ -1910,14 +1942,14 @@ dependencies = [ { name = "typing-extensions" }, { name = "uvicorn" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/83/67/17b3969a686f204dfb8f06bd34d1423bcba1df8a2f3674f115ca427188b7/gradio-5.49.1.tar.gz", hash = "sha256:c06faa324ae06c3892c8b4b4e73c706c4520d380f6b9e52a3c02dc53a7627ba9", size = 73784504, upload-time = "2025-10-08T20:18:40.4Z" } +sdist = { url = "https://files.pythonhosted.org/packages/4b/cb/ce9c99e4026c7daefef2fe6736207a9189571ddefc1277438103e3e413f2/gradio-6.1.0.tar.gz", hash = "sha256:fe9f6757d53ce7840b487a6921151d8c3410f7de6e2152a4407c5eded9ce023a", size = 37852914, upload-time = "2025-12-09T19:31:53.996Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/8d/95/1c25fbcabfa201ab79b016c8716a4ac0f846121d4bbfd2136ffb6d87f31e/gradio-5.49.1-py3-none-any.whl", hash = "sha256:1b19369387801a26a6ba7fd2f74d46c5b0e2ac9ddef14f24ddc0d11fb19421b7", size = 63523840, upload-time = "2025-10-08T20:18:34.585Z" }, + { url = "https://files.pythonhosted.org/packages/ae/00/592f02d2f8a815fc3370f3cda70fb2116d6ec31cf3fe33c87fd34d0a1778/gradio-6.1.0-py3-none-any.whl", hash = "sha256:528f17d75c8206da77a4646955678df8a786145b7bdfcba61d14b2fb3cb94b98", size = 22967810, upload-time = "2025-12-09T19:31:51.335Z" }, ] [[package]] name = "gradio-client" -version = "1.13.3" +version = "2.0.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "fsspec" }, @@ -1925,11 +1957,10 @@ dependencies = [ { name = "huggingface-hub" }, { name = "packaging" }, { name = "typing-extensions" }, - { name = "websockets" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/3e/a9/a3beb0ece8c05c33e6376b790fa42e0dd157abca8220cf639b249a597467/gradio_client-1.13.3.tar.gz", hash = "sha256:869b3e67e0f7a0f40df8c48c94de99183265cf4b7b1d9bd4623e336d219ffbe7", size = 323253, upload-time = "2025-09-26T19:51:21.7Z" } +sdist = { url = "https://files.pythonhosted.org/packages/4e/cc/b0f04b1c9bf79c7ae9840b9945f5fbd93355719684f83032837695ab1eaf/gradio_client-2.0.1.tar.gz", hash = "sha256:087eb50652370747c0ce66cd0ae79ecb49f9682188d5348e279d44602cbc2814", size = 54792, upload-time = "2025-12-02T01:57:58.685Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/6e/0b/337b74504681b5dde39f20d803bb09757f9973ecdc65fd4e819d4b11faf7/gradio_client-1.13.3-py3-none-any.whl", hash = "sha256:3f63e4d33a2899c1a12b10fe3cf77b82a6919ff1a1fb6391f6aa225811aa390c", size = 325350, upload-time = "2025-09-26T19:51:20.288Z" }, + { url = "https://files.pythonhosted.org/packages/1b/11/d680ecf4073bd1cacfe9dea57fa95660e4ea2d1fff3125dbaaa902cc9095/gradio_client-2.0.1-py3-none-any.whl", hash = "sha256:6322eecb5963a07703306c0b048bb98518063d05ca99a65fe384417188af8c63", size = 55439, upload-time = "2025-12-02T01:57:57.551Z" }, ] [[package]] @@ -2510,9 +2541,9 @@ name = "liger-kernel" version = "0.6.2" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "torch", version = "2.8.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "(platform_machine != 'aarch64' and sys_platform != 'darwin') or sys_platform == 'win32'" }, - { name = "triton", version = "3.4.0", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "platform_machine != 'aarch64' and sys_platform == 'linux'" }, + { name = "torch", version = "2.9.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "(platform_machine != 'aarch64' and sys_platform != 'darwin') or sys_platform == 'win32'" }, { name = "triton", version = "3.4.0", source = { registry = "https://pypi.org/simple" }, marker = "(platform_machine != 'aarch64' and sys_platform != 'darwin' and sys_platform != 'linux') or sys_platform == 'win32'" }, + { name = "triton", version = "3.5.0", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "platform_machine != 'aarch64' and sys_platform == 'linux'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/31/23/be0b4dcac42d77f99406c906567cde22a7a3d71b3f3ffdfda2ac6153ec36/liger_kernel-0.6.2.tar.gz", hash = "sha256:5c5bcffffa769bc26ae838f5a4954170dd5cacde036abb1b383039f39fa5fd69", size = 3679495, upload-time = "2025-08-22T00:15:28.456Z" } wheels = [ @@ -2521,15 +2552,15 @@ wheels = [ [[package]] name = "llguidance" -version = "0.7.30" +version = "1.3.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/bf/38/d1ef3ae08d8d857e5e0690c5b1e07bf7eb4a1cae5881d87215826dc6cadb/llguidance-0.7.30.tar.gz", hash = "sha256:e93bf75f2b6e48afb86a5cee23038746975e1654672bf5ba0ae75f7d4d4a2248", size = 1055528, upload-time = "2025-06-23T00:23:49.247Z" } +sdist = { url = "https://files.pythonhosted.org/packages/95/48/3f7a9d3ff1b36bba92b5107a3a21286821227afe9ea464736133994d61fb/llguidance-1.3.0.tar.gz", hash = "sha256:861249afd51dc325646834462ea827e57a5c2b2042e108e6aae7059fdad9104d", size = 1070460, upload-time = "2025-10-20T19:58:44.164Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/b3/e1/694c89986fcae7777184fc8b22baa0976eba15a6847221763f6ad211fc1f/llguidance-0.7.30-cp39-abi3-macosx_10_12_x86_64.whl", hash = "sha256:c80af02c118d2b0526bcecaab389af2ed094537a069b0fc724cd2a2f2ba3990f", size = 3327974, upload-time = "2025-06-23T00:23:47.556Z" }, - { url = "https://files.pythonhosted.org/packages/fd/77/ab7a548ae189dc23900fdd37803c115c2339b1223af9e8eb1f4329b5935a/llguidance-0.7.30-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:00a256d532911d2cf5ba4ef63e182944e767dd2402f38d63002016bc37755958", size = 3210709, upload-time = "2025-06-23T00:23:45.872Z" }, - { url = "https://files.pythonhosted.org/packages/9c/5b/6a166564b14f9f805f0ea01ec233a84f55789cb7eeffe1d6224ccd0e6cdd/llguidance-0.7.30-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:af8741c867e4bc7e42f7cdc68350c076b4edd0ca10ecefbde75f15a9f6bc25d0", size = 14867038, upload-time = "2025-06-23T00:23:39.571Z" }, - { url = "https://files.pythonhosted.org/packages/af/80/5a40b9689f17612434b820854cba9b8cabd5142072c491b5280fe5f7a35e/llguidance-0.7.30-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9edc409b9decd6cffba5f5bf3b4fbd7541f95daa8cbc9510cbf96c6ab1ffc153", size = 15004926, upload-time = "2025-06-23T00:23:43.965Z" }, - { url = "https://files.pythonhosted.org/packages/99/47/58e49a118b514855b245f8a962c6aaf9a5cc95a0f61eac7e230e691c7b7e/llguidance-0.7.30-cp39-abi3-win_amd64.whl", hash = "sha256:05234ecceea7c9c6ff13b9739112043173a3bcb88cae860249b20335a07b3075", size = 2796878, upload-time = "2025-06-23T00:23:51Z" }, + { url = "https://files.pythonhosted.org/packages/3b/33/be5acb85cd8cdc4afde33d9c234eece9f318e087920255af3c05864cd3e7/llguidance-1.3.0-cp39-abi3-macosx_10_12_x86_64.whl", hash = "sha256:f7685222660a762e481ac633d49cc559c64980fe2ee59c8f932a5bb5cbc0c2c2", size = 3220647, upload-time = "2025-10-20T19:58:42.542Z" }, + { url = "https://files.pythonhosted.org/packages/82/e6/b48bda5b15efeaeb62bd0dba8fc6a01d4ae5457a85dbb5d18632385fe15c/llguidance-1.3.0-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:098030ff0687261a3f1bd54cf21fe951fc861d56d37a0671250dd36677eaf224", size = 3099830, upload-time = "2025-10-20T19:58:40.826Z" }, + { url = "https://files.pythonhosted.org/packages/aa/11/44389d3d1526d7a5c38ffd587a5ebc61d7bee443ac1dea95f2089ad58f5f/llguidance-1.3.0-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6f6caca5d78db7f76e1fbb0fff8607b861c32d47fa3d5dee2fc49de27ee269df", size = 2835242, upload-time = "2025-10-20T19:58:34.518Z" }, + { url = "https://files.pythonhosted.org/packages/83/a8/1ff2bedb8f9acb46a2d2d603415d272bb622c142ea86f5b95445cc6e366c/llguidance-1.3.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc17e9dd602c3879bf91664a64bf72f54c74dbfbeb24ccfab6a5fe435b12f7aa", size = 3033133, upload-time = "2025-10-20T19:58:38.721Z" }, + { url = "https://files.pythonhosted.org/packages/5a/7e/809349638231f469b9056c0e1bfd924d5ef5558b3b3ec72d093b6fad33b1/llguidance-1.3.0-cp39-abi3-win_amd64.whl", hash = "sha256:1d1cd1c8618d1a13605d3e057c978651e551c8c469b481ee4041f1d6c436002d", size = 2789946, upload-time = "2025-10-20T19:58:45.958Z" }, ] [[package]] @@ -2565,6 +2596,19 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/a0/ef/11292bb0b85cf4c93447cab5a29f64576ed14d3ab4280e35ddd23486594a/lm_format_enforcer-0.11.3-py3-none-any.whl", hash = "sha256:cf586350875def1ae7a8fba84fcbbfc8371424b6c9d05c1fcba70aa233fbf06f", size = 45418, upload-time = "2025-08-24T19:37:46.325Z" }, ] +[[package]] +name = "loguru" +version = "0.7.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, + { name = "win32-setctime", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/3a/05/a1dae3dffd1116099471c643b8924f5aa6524411dc6c63fdae648c4f1aca/loguru-0.7.3.tar.gz", hash = "sha256:19480589e77d47b8d85b2c827ad95d49bf31b0dcde16593892eb51dd18706eb6", size = 63559, upload-time = "2024-12-06T11:20:56.608Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0c/29/0348de65b8cc732daa3e33e67806420b2ae89bdce2b04af740289c5c6c8c/loguru-0.7.3-py3-none-any.whl", hash = "sha256:31a33c10c8e1e10422bfd431aeb5d351c7cf7fa671e3c4df004162264b28220c", size = 61595, upload-time = "2024-12-06T11:20:54.538Z" }, +] + [[package]] name = "lxml" version = "6.0.0" @@ -2625,8 +2669,8 @@ dependencies = [ { name = "causal-conv1d" }, { name = "ninja" }, { name = "packaging" }, - { name = "torch", version = "2.8.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, - { name = "torch", version = "2.8.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform != 'darwin'" }, + { name = "torch", version = "2.9.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, + { name = "torch", version = "2.9.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform != 'darwin'" }, ] [[package]] @@ -2842,7 +2886,7 @@ dependencies = [ { name = "multi-storage-client" }, { name = "numpy" }, { name = "nv-grouped-gemm" }, - { name = "nvidia-modelopt", marker = "sys_platform != 'darwin'" }, + { name = "nvidia-modelopt" }, { name = "nvidia-resiliency-ext" }, { name = "nvtx" }, { name = "onnxscript" }, @@ -2851,8 +2895,8 @@ dependencies = [ { name = "setuptools" }, { name = "tensorstore", version = "0.1.74", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.13'" }, { name = "tensorstore", version = "0.1.76", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.13'" }, - { name = "torch", version = "2.8.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, - { name = "torch", version = "2.8.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform != 'darwin'" }, + { name = "torch", version = "2.9.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, + { name = "torch", version = "2.9.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform != 'darwin'" }, { name = "tqdm" }, { name = "transformer-engine", extra = ["pytorch"] }, { name = "wget" }, @@ -2870,7 +2914,7 @@ requires-dist = [ { name = "megatron-energon", extras = ["av-decode"], specifier = "~=6.0" }, { name = "multi-storage-client", specifier = "~=0.27" }, { name = "numpy", specifier = "<2.0.0" }, - { name = "nv-grouped-gemm", specifier = "~=1.1" }, + { name = "nv-grouped-gemm", git = "https://github.com/fanshiqing/grouped_gemm?tag=v1.1.4.post7" }, { name = "nvidia-modelopt", extras = ["torch"], marker = "sys_platform != 'darwin'", specifier = ">=0.33.0a0,<0.34.0" }, { name = "nvidia-resiliency-ext", specifier = ">=0.4.0a0,<0.5.0" }, { name = "nvtx", specifier = "~=0.2" }, @@ -2898,8 +2942,8 @@ dependencies = [ { name = "pillow" }, { name = "pyyaml" }, { name = "s3fs" }, - { name = "torch", version = "2.8.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, - { name = "torch", version = "2.8.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform != 'darwin'" }, + { name = "torch", version = "2.9.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, + { name = "torch", version = "2.9.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform != 'darwin'" }, { name = "tqdm" }, { name = "webdataset" }, ] @@ -2925,8 +2969,8 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "numpy" }, { name = "packaging" }, - { name = "torch", version = "2.8.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, - { name = "torch", version = "2.8.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform != 'darwin'" }, + { name = "torch", version = "2.9.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, + { name = "torch", version = "2.9.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform != 'darwin'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/a0/be/06ada3d765ebca304e2d87873d6cf00807b43155ed57058abcd813d13a5d/megatron_fsdp-0.1.0rc1.tar.gz", hash = "sha256:4852a1c62bb95b5fc9567165ee7119f2e68bc75d6103af06bd1e6d392a50021f", size = 71600, upload-time = "2025-09-02T21:29:10.757Z" } wheels = [ @@ -2935,7 +2979,7 @@ wheels = [ [[package]] name = "mistral-common" -version = "1.8.4" +version = "1.8.6" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "jsonschema" }, @@ -2947,16 +2991,12 @@ dependencies = [ { name = "tiktoken" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ba/dd/1beb1e3d56300f0e4b45ba975ffa7f4b07e6f96a6e06601483f58931893b/mistral_common-1.8.4.tar.gz", hash = "sha256:e611c16ef59c2b60ffdecef4d5e9158e1bf838fad6bad34aa050123601af703a", size = 6333167, upload-time = "2025-08-20T07:22:26.347Z" } +sdist = { url = "https://files.pythonhosted.org/packages/23/3d/2ce630343f4574ac5150e355dc15bf95e8ce18954aa0f5949e195ffde382/mistral_common-1.8.6.tar.gz", hash = "sha256:c61702720093f7a06508e81923917b04e35062b9ff396b8512b9c4d1139767ee", size = 6332366, upload-time = "2025-11-30T22:03:37.698Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/d6/4f/756a66c608a767c7af7010b23992343e97558ce7f86c5c15929f1215f6ef/mistral_common-1.8.4-py3-none-any.whl", hash = "sha256:bfaf2550046cebe8289946adc267ba807ac266e5325647af4c4f67292124bc2f", size = 6517094, upload-time = "2025-08-20T07:22:23.686Z" }, + { url = "https://files.pythonhosted.org/packages/e6/eb/56ba11528da93b890fe985cbbaa17955064ff4b7019dd18566e3c3559b9e/mistral_common-1.8.6-py3-none-any.whl", hash = "sha256:dd8c0e55b397e8167751eb3da147cf23fd970824673ca0e260aa58c888be1b0a", size = 6515009, upload-time = "2025-11-30T22:03:35.108Z" }, ] [package.optional-dependencies] -audio = [ - { name = "soundfile" }, - { name = "soxr" }, -] image = [ { name = "opencv-python-headless" }, ] @@ -3147,6 +3187,21 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/72/59/8e4dee2893a56fc68a27eec7ec7ed9559c7ea01099313a9b8196373bf3cf/mlx_metal-0.28.0-py3-none-macosx_15_0_arm64.whl", hash = "sha256:214ece3781d44f57eb9686561594b28915ec5568df4a5a73da59c66880b204ed", size = 33167706, upload-time = "2025-08-07T07:53:03.852Z" }, ] +[[package]] +name = "model-hosting-container-standards" +version = "0.1.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "fastapi" }, + { name = "httpx" }, + { name = "jmespath" }, + { name = "pydantic" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/1c/d0/eaba9ff13f7a534bf2c0f28e4e32dee58583dc3a31fe3eebb3b93ed13675/model_hosting_container_standards-0.1.4.tar.gz", hash = "sha256:86838d16e4d05bc6fdafdf83dc292a9d34124b63584764ad6cd67b05d09cda62", size = 63332, upload-time = "2025-11-10T17:58:37.321Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9b/fc/d6034069e52003ed86f72e436b65f16084fa4d08c6b8220bc0fc85e33eab/model_hosting_container_standards-0.1.4-py3-none-any.whl", hash = "sha256:ede565ba750e812eef028804c84b8244a96fb733fcaec9a1e552568df809d841", size = 86597, upload-time = "2025-11-10T17:58:35.843Z" }, +] + [[package]] name = "mpmath" version = "1.3.0" @@ -3351,8 +3406,8 @@ dependencies = [ { name = "megatron-fsdp" }, { name = "pybind11" }, { name = "pyyaml" }, - { name = "torch", version = "2.8.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, - { name = "torch", version = "2.8.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform != 'darwin'" }, + { name = "torch", version = "2.9.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, + { name = "torch", version = "2.9.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform != 'darwin'" }, { name = "torchao" }, { name = "torchdata" }, { name = "transformers" }, @@ -3381,8 +3436,8 @@ vlm = [ [package.dev-dependencies] build = [ { name = "setuptools" }, - { name = "torch", version = "2.8.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, - { name = "torch", version = "2.8.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform != 'darwin'" }, + { name = "torch", version = "2.9.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, + { name = "torch", version = "2.9.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform != 'darwin'" }, ] dev = [ { name = "cut-cross-entropy" }, @@ -3422,14 +3477,14 @@ requires-dist = [ { name = "pyyaml" }, { name = "qwen-vl-utils", extras = ["decord"], marker = "extra == 'vlm'" }, { name = "timm", marker = "extra == 'vlm'", specifier = "==1.0.16" }, - { name = "torch", marker = "sys_platform != 'darwin'", specifier = "<=2.8.0", index = "https://download.pytorch.org/whl/cu129" }, - { name = "torch", marker = "sys_platform == 'darwin'", specifier = "<=2.8.0", index = "https://pypi.org/simple" }, - { name = "torchao" }, + { name = "torch", marker = "sys_platform != 'darwin'", specifier = "<=2.9.0", index = "https://download.pytorch.org/whl/cu129" }, + { name = "torch", marker = "sys_platform == 'darwin'", specifier = "<=2.9.0", index = "https://pypi.org/simple" }, + { name = "torchao", specifier = "==0.14.1" }, { name = "torchcodec", marker = "extra == 'vlm'" }, { name = "torchdata" }, { name = "transformer-engine", extras = ["pytorch"], marker = "extra == 'moe'", specifier = "==2.8.0" }, - { name = "transformers", specifier = "<=4.55.4" }, - { name = "transformers", marker = "extra == 'vlm'", specifier = "<=4.55.4" }, + { name = "transformers", specifier = "<=4.57.1" }, + { name = "transformers", marker = "extra == 'vlm'", specifier = "<=4.57.1" }, { name = "wandb" }, ] provides-extras = ["vlm", "fa", "moe"] @@ -3437,8 +3492,8 @@ provides-extras = ["vlm", "fa", "moe"] [package.metadata.requires-dev] build = [ { name = "setuptools" }, - { name = "torch", marker = "sys_platform != 'darwin'", specifier = "<=2.8.0", index = "https://download.pytorch.org/whl/cu129" }, - { name = "torch", marker = "sys_platform == 'darwin'", specifier = "<=2.8.0", index = "https://pypi.org/simple" }, + { name = "torch", marker = "sys_platform != 'darwin'", specifier = "<=2.9.0", index = "https://download.pytorch.org/whl/cu129" }, + { name = "torch", marker = "sys_platform == 'darwin'", specifier = "<=2.9.0", index = "https://pypi.org/simple" }, ] dev = [{ name = "cut-cross-entropy", git = "https://github.com/apple/ml-cross-entropy.git?rev=87a86ab" }] docs = [ @@ -3537,14 +3592,14 @@ dependencies = [ { name = "sympy" }, { name = "tensorboard" }, { name = "tiktoken" }, - { name = "torch", version = "2.8.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, - { name = "torch", version = "2.8.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform != 'darwin'" }, + { name = "torch", version = "2.9.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, + { name = "torch", version = "2.9.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform != 'darwin'" }, { name = "torchdata" }, - { name = "torchvision", version = "0.23.0", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "platform_machine == 'aarch64' and sys_platform == 'linux'" }, - { name = "torchvision", version = "0.23.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, - { name = "torchvision", version = "0.23.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "(platform_machine != 'aarch64' and sys_platform == 'linux') or (sys_platform != 'darwin' and sys_platform != 'linux')" }, + { name = "torchvision", version = "0.24.0", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "platform_machine == 'aarch64' and sys_platform == 'linux'" }, + { name = "torchvision", version = "0.24.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, + { name = "torchvision", version = "0.24.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "(platform_machine != 'aarch64' and sys_platform == 'linux') or (sys_platform != 'darwin' and sys_platform != 'linux')" }, { name = "transformers" }, - { name = "triton", version = "3.4.0", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "(platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux')" }, + { name = "triton", version = "3.5.0", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "(platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux')" }, { name = "wandb" }, ] @@ -3585,8 +3640,8 @@ build = [ { name = "psutil" }, { name = "pybind11" }, { name = "setuptools" }, - { name = "torch", version = "2.8.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, - { name = "torch", version = "2.8.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform != 'darwin'" }, + { name = "torch", version = "2.9.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, + { name = "torch", version = "2.9.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform != 'darwin'" }, ] dev = [ { name = "pre-commit" }, @@ -3660,17 +3715,17 @@ requires-dist = [ { name = "sympy", specifier = ">=1.14.0" }, { name = "tensorboard" }, { name = "tiktoken" }, - { name = "torch", marker = "sys_platform != 'darwin'", specifier = "==2.8.0", index = "https://download.pytorch.org/whl/cu129" }, - { name = "torch", marker = "sys_platform == 'darwin'", specifier = "==2.8.0", index = "https://pypi.org/simple" }, + { name = "torch", marker = "sys_platform != 'darwin'", specifier = "==2.9.0", index = "https://download.pytorch.org/whl/cu129" }, + { name = "torch", marker = "sys_platform == 'darwin'", specifier = "==2.9.0", index = "https://pypi.org/simple" }, { name = "torchdata" }, { name = "torchvision", marker = "sys_platform != 'darwin'", specifier = ">=0.22.0", index = "https://download.pytorch.org/whl/cu129" }, { name = "torchvision", marker = "sys_platform == 'darwin'", specifier = ">=0.22.0", index = "https://pypi.org/simple" }, { name = "transformer-engine", extras = ["pytorch"], marker = "extra == 'mcore'", specifier = "==2.8.0" }, - { name = "transformers", specifier = ">=4.55.4" }, + { name = "transformers", specifier = "==4.57.1" }, { name = "triton", marker = "(platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux')", index = "https://download.pytorch.org/whl/cu129" }, - { name = "vllm", marker = "extra == 'automodel'", specifier = "==0.11.0" }, - { name = "vllm", marker = "extra == 'mcore'", specifier = "==0.11.0" }, - { name = "vllm", marker = "extra == 'vllm'", specifier = "==0.11.0" }, + { name = "vllm", marker = "extra == 'automodel'", specifier = "==0.11.2" }, + { name = "vllm", marker = "extra == 'mcore'", specifier = "==0.11.2" }, + { name = "vllm", marker = "extra == 'vllm'", specifier = "==0.11.2" }, { name = "wandb" }, ] provides-extras = ["automodel", "vllm", "mcore", "nemo-gym"] @@ -3683,8 +3738,8 @@ build = [ { name = "psutil" }, { name = "pybind11" }, { name = "setuptools" }, - { name = "torch", marker = "sys_platform != 'darwin'", specifier = "==2.8.0", index = "https://download.pytorch.org/whl/cu129" }, - { name = "torch", marker = "sys_platform == 'darwin'", specifier = "==2.8.0", index = "https://pypi.org/simple" }, + { name = "torch", marker = "sys_platform != 'darwin'", specifier = "==2.9.0", index = "https://download.pytorch.org/whl/cu129" }, + { name = "torch", marker = "sys_platform == 'darwin'", specifier = "==2.9.0", index = "https://pypi.org/simple" }, ] dev = [ { name = "pre-commit", specifier = ">=4.2.0" }, @@ -3810,22 +3865,22 @@ wheels = [ [[package]] name = "nv-grouped-gemm" -version = "1.1.4.post6" -source = { registry = "https://pypi.org/simple" } +version = "1.1.4.post7" +source = { git = "https://github.com/fanshiqing/grouped_gemm?tag=v1.1.4.post7#6dfaf60e6112166b8b82e9210b51c7f557956f0a" } dependencies = [ { name = "numpy" }, { name = "setuptools" }, - { name = "torch", version = "2.8.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, - { name = "torch", version = "2.8.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform != 'darwin'" }, + { name = "torch", version = "2.9.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, + { name = "torch", version = "2.9.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform != 'darwin'" }, { name = "wheel" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/05/79/87c45f32e661b25e0aaa1e325ba166511f57be5dff8f0fcabc12d3e73b64/nv_grouped_gemm-1.1.4.post6.tar.gz", hash = "sha256:dad6115f4b4ff7ceb0bc40ad44e923c13a24fc88cfe1e20b1a6b4c9cf24c445c", size = 26508, upload-time = "2025-10-10T18:52:29.508Z" } [[package]] name = "nvidia-cublas-cu12" version = "12.9.1.4" source = { registry = "https://pypi.org/simple" } wheels = [ + { url = "https://files.pythonhosted.org/packages/82/6c/90d3f532f608a03a13c1d6c16c266ffa3828e8011b1549d3b61db2ad59f5/nvidia_cublas_cu12-12.9.1.4-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:7a950dae01add3b415a5a5cdc4ec818fb5858263e9cca59004bb99fdbbd3a5d6", size = 575006342, upload-time = "2025-06-05T20:04:16.902Z" }, { url = "https://files.pythonhosted.org/packages/77/3c/aa88abe01f3be3d1f8f787d1d33dc83e76fec05945f9a28fbb41cfb99cd5/nvidia_cublas_cu12-12.9.1.4-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:453611eb21a7c1f2c2156ed9f3a45b691deda0440ec550860290dc901af5b4c2", size = 581242350, upload-time = "2025-06-05T20:04:51.979Z" }, ] @@ -3834,6 +3889,7 @@ name = "nvidia-cuda-cupti-cu12" version = "12.9.79" source = { registry = "https://pypi.org/simple" } wheels = [ + { url = "https://files.pythonhosted.org/packages/b4/78/351b5c8cdbd9a6b4fb0d6ee73fb176dcdc1b6b6ad47c2ffff5ae8ca4a1f7/nvidia_cuda_cupti_cu12-12.9.79-py3-none-manylinux_2_25_aarch64.whl", hash = "sha256:791853b030602c6a11d08b5578edfb957cadea06e9d3b26adbf8d036135a4afe", size = 10077166, upload-time = "2025-06-05T20:01:01.385Z" }, { url = "https://files.pythonhosted.org/packages/c1/2e/b84e32197e33f39907b455b83395a017e697c07a449a2b15fd07fc1c9981/nvidia_cuda_cupti_cu12-12.9.79-py3-none-manylinux_2_25_x86_64.whl", hash = "sha256:096bcf334f13e1984ba36685ad4c1d6347db214de03dbb6eebb237b41d9d934f", size = 10814997, upload-time = "2025-06-05T20:01:10.168Z" }, ] @@ -3843,6 +3899,7 @@ version = "12.9.86" source = { registry = "https://pypi.org/simple" } wheels = [ { url = "https://files.pythonhosted.org/packages/b8/85/e4af82cc9202023862090bfca4ea827d533329e925c758f0cde964cb54b7/nvidia_cuda_nvrtc_cu12-12.9.86-py3-none-manylinux2010_x86_64.manylinux_2_12_x86_64.whl", hash = "sha256:210cf05005a447e29214e9ce50851e83fc5f4358df8b453155d5e1918094dcb4", size = 89568129, upload-time = "2025-06-05T20:02:41.973Z" }, + { url = "https://files.pythonhosted.org/packages/64/eb/c2295044b8f3b3b08860e2f6a912b702fc92568a167259df5dddb78f325e/nvidia_cuda_nvrtc_cu12-12.9.86-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:096d4de6bda726415dfaf3198d4f5c522b8e70139c97feef5cd2ca6d4cd9cead", size = 44528905, upload-time = "2025-06-05T20:02:29.754Z" }, ] [[package]] @@ -3850,6 +3907,7 @@ name = "nvidia-cuda-runtime-cu12" version = "12.9.79" source = { registry = "https://pypi.org/simple" } wheels = [ + { url = "https://files.pythonhosted.org/packages/bc/e0/0279bd94539fda525e0c8538db29b72a5a8495b0c12173113471d28bce78/nvidia_cuda_runtime_cu12-12.9.79-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:83469a846206f2a733db0c42e223589ab62fd2fabac4432d2f8802de4bded0a4", size = 3515012, upload-time = "2025-06-05T20:00:35.519Z" }, { url = "https://files.pythonhosted.org/packages/bc/46/a92db19b8309581092a3add7e6fceb4c301a3fd233969856a8cbf042cd3c/nvidia_cuda_runtime_cu12-12.9.79-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:25bba2dfb01d48a9b59ca474a1ac43c6ebf7011f1b0b8cc44f54eb6ac48a96c3", size = 3493179, upload-time = "2025-06-05T20:00:53.735Z" }, ] @@ -3858,9 +3916,10 @@ name = "nvidia-cudnn-cu12" version = "9.10.2.21" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "nvidia-cublas-cu12", marker = "platform_machine != 'aarch64' and sys_platform == 'linux'" }, + { name = "nvidia-cublas-cu12", marker = "sys_platform == 'linux'" }, ] wheels = [ + { url = "https://files.pythonhosted.org/packages/fa/41/e79269ce215c857c935fd86bcfe91a451a584dfc27f1e068f568b9ad1ab7/nvidia_cudnn_cu12-9.10.2.21-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:c9132cc3f8958447b4910a1720036d9eff5928cc3179b0a51fb6d167c6cc87d8", size = 705026878, upload-time = "2025-06-06T21:52:51.348Z" }, { url = "https://files.pythonhosted.org/packages/ba/51/e123d997aa098c61d029f76663dedbfb9bc8dcf8c60cbd6adbe42f76d049/nvidia_cudnn_cu12-9.10.2.21-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:949452be657fa16687d0930933f032835951ef0892b37d2d53824d1a84dc97a8", size = 706758467, upload-time = "2025-06-06T21:54:08.597Z" }, ] @@ -3882,9 +3941,10 @@ name = "nvidia-cufft-cu12" version = "11.4.1.4" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "nvidia-nvjitlink-cu12", marker = "platform_machine != 'aarch64' and sys_platform == 'linux'" }, + { name = "nvidia-nvjitlink-cu12", marker = "sys_platform == 'linux'" }, ] wheels = [ + { url = "https://files.pythonhosted.org/packages/9b/2b/76445b0af890da61b501fde30650a1a4bd910607261b209cccb5235d3daa/nvidia_cufft_cu12-11.4.1.4-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:1a28c9b12260a1aa7a8fd12f5ebd82d027963d635ba82ff39a1acfa7c4c0fbcf", size = 200822453, upload-time = "2025-06-05T20:05:27.889Z" }, { url = "https://files.pythonhosted.org/packages/95/f4/61e6996dd20481ee834f57a8e9dca28b1869366a135e0d42e2aa8493bdd4/nvidia_cufft_cu12-11.4.1.4-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c67884f2a7d276b4b80eb56a79322a95df592ae5e765cf1243693365ccab4e28", size = 200877592, upload-time = "2025-06-05T20:05:45.862Z" }, ] @@ -3894,6 +3954,7 @@ version = "1.14.1.1" source = { registry = "https://pypi.org/simple" } wheels = [ { url = "https://files.pythonhosted.org/packages/ad/28/b960e06d705a440c030edd84e16888ee14c743390bdb2a6368e92ffe8ef8/nvidia_cufile_cu12-1.14.1.1-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:9552e2231792e94b1ff17bc99e958cc0e6bbbaa4a9d91fa2dbeed97716628fe6", size = 1210714, upload-time = "2025-06-05T20:06:11.898Z" }, + { url = "https://files.pythonhosted.org/packages/b9/d2/110af3a1f77999d5eebf6ffae5d2305ab839e53c76eec3696640cc25b35d/nvidia_cufile_cu12-1.14.1.1-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:8dea77590761e02cb6dd955a57cb6414c58aa3cb1b7adbf9919869a11509cf65", size = 1135994, upload-time = "2025-06-05T20:06:03.952Z" }, ] [[package]] @@ -3901,6 +3962,7 @@ name = "nvidia-curand-cu12" version = "10.3.10.19" source = { registry = "https://pypi.org/simple" } wheels = [ + { url = "https://files.pythonhosted.org/packages/14/1c/2a45afc614d99558d4a773fa740d8bb5471c8398eeed925fc0fcba020173/nvidia_curand_cu12-10.3.10.19-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:de663377feb1697e1d30ed587b07d5721fdd6d2015c738d7528a6002a6134d37", size = 68292066, upload-time = "2025-05-01T19:39:13.595Z" }, { url = "https://files.pythonhosted.org/packages/31/44/193a0e171750ca9f8320626e8a1f2381e4077a65e69e2fb9708bd479e34a/nvidia_curand_cu12-10.3.10.19-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:49b274db4780d421bd2ccd362e1415c13887c53c214f0d4b761752b8f9f6aa1e", size = 68295626, upload-time = "2025-05-01T19:39:38.885Z" }, ] @@ -3909,11 +3971,12 @@ name = "nvidia-cusolver-cu12" version = "11.7.5.82" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "nvidia-cublas-cu12", marker = "platform_machine != 'aarch64' and sys_platform == 'linux'" }, - { name = "nvidia-cusparse-cu12", marker = "platform_machine != 'aarch64' and sys_platform == 'linux'" }, - { name = "nvidia-nvjitlink-cu12", marker = "platform_machine != 'aarch64' and sys_platform == 'linux'" }, + { name = "nvidia-cublas-cu12", marker = "sys_platform == 'linux'" }, + { name = "nvidia-cusparse-cu12", marker = "sys_platform == 'linux'" }, + { name = "nvidia-nvjitlink-cu12", marker = "sys_platform == 'linux'" }, ] wheels = [ + { url = "https://files.pythonhosted.org/packages/03/99/686ff9bf3a82a531c62b1a5c614476e8dfa24a9d89067aeedf3592ee4538/nvidia_cusolver_cu12-11.7.5.82-py3-none-manylinux_2_27_aarch64.whl", hash = "sha256:62efa83e4ace59a4c734d052bb72158e888aa7b770e1a5f601682f16fe5b4fd2", size = 337869834, upload-time = "2025-06-05T20:06:53.125Z" }, { url = "https://files.pythonhosted.org/packages/33/40/79b0c64d44d6c166c0964ec1d803d067f4a145cca23e23925fd351d0e642/nvidia_cusolver_cu12-11.7.5.82-py3-none-manylinux_2_27_x86_64.whl", hash = "sha256:15da72d1340d29b5b3cf3fd100e3cd53421dde36002eda6ed93811af63c40d88", size = 338117415, upload-time = "2025-06-05T20:07:16.809Z" }, ] @@ -3922,9 +3985,10 @@ name = "nvidia-cusparse-cu12" version = "12.5.10.65" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "nvidia-nvjitlink-cu12", marker = "platform_machine != 'aarch64' and sys_platform == 'linux'" }, + { name = "nvidia-nvjitlink-cu12", marker = "sys_platform == 'linux'" }, ] wheels = [ + { url = "https://files.pythonhosted.org/packages/5e/6f/8710fbd17cdd1d0fc3fea7d36d5b65ce1933611c31e1861da330206b253a/nvidia_cusparse_cu12-12.5.10.65-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:221c73e7482dd93eda44e65ce567c031c07e2f93f6fa0ecd3ba876a195023e83", size = 366359408, upload-time = "2025-06-05T20:07:42.501Z" }, { url = "https://files.pythonhosted.org/packages/12/46/b0fd4b04f86577921feb97d8e2cf028afe04f614d17fb5013de9282c9216/nvidia_cusparse_cu12-12.5.10.65-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:73060ce019ac064a057267c585bf1fd5a353734151f87472ff02b2c5c9984e78", size = 366465088, upload-time = "2025-06-05T20:08:20.413Z" }, ] @@ -3933,6 +3997,7 @@ name = "nvidia-cusparselt-cu12" version = "0.7.1" source = { registry = "https://pypi.org/simple" } wheels = [ + { url = "https://files.pythonhosted.org/packages/73/b9/598f6ff36faaece4b3c50d26f50e38661499ff34346f00e057760b35cc9d/nvidia_cusparselt_cu12-0.7.1-py3-none-manylinux2014_aarch64.whl", hash = "sha256:8878dce784d0fac90131b6817b607e803c36e629ba34dc5b433471382196b6a5", size = 283835557, upload-time = "2025-02-26T00:16:54.265Z" }, { url = "https://files.pythonhosted.org/packages/56/79/12978b96bd44274fe38b5dde5cfb660b1d114f70a65ef962bcbbed99b549/nvidia_cusparselt_cu12-0.7.1-py3-none-manylinux2014_x86_64.whl", hash = "sha256:f1bb701d6b930d5a7cea44c19ceb973311500847f81b634d802b7b539dc55623", size = 287193691, upload-time = "2025-02-26T00:15:44.104Z" }, ] @@ -3963,46 +4028,35 @@ wheels = [ [[package]] name = "nvidia-modelopt" -version = "0.33.1" +version = "0.40.0" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "ninja", marker = "sys_platform != 'darwin'" }, - { name = "numpy", marker = "sys_platform != 'darwin'" }, - { name = "nvidia-ml-py", marker = "sys_platform != 'darwin'" }, - { name = "nvidia-modelopt-core", marker = "sys_platform != 'darwin'" }, - { name = "packaging", marker = "sys_platform != 'darwin'" }, - { name = "pulp", marker = "sys_platform != 'darwin'" }, - { name = "pydantic", marker = "sys_platform != 'darwin'" }, - { name = "regex", marker = "sys_platform != 'darwin'" }, - { name = "rich", marker = "sys_platform != 'darwin'" }, - { name = "safetensors", marker = "sys_platform != 'darwin'" }, - { name = "scipy", marker = "sys_platform != 'darwin'" }, - { name = "torch", version = "2.8.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform != 'darwin'" }, - { name = "torchprofile", marker = "sys_platform != 'darwin'" }, - { name = "torchvision", version = "0.23.0", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "platform_machine == 'aarch64' and sys_platform == 'linux'" }, - { name = "torchvision", version = "0.23.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "(platform_machine != 'aarch64' and sys_platform == 'linux') or (sys_platform != 'darwin' and sys_platform != 'linux')" }, - { name = "tqdm", marker = "sys_platform != 'darwin'" }, -] -wheels = [ - { url = "https://files.pythonhosted.org/packages/ca/cb/4af39357792a96f334c7877ea0380c9337aec210ff4794a7dd95beb7c349/nvidia_modelopt-0.33.1-py3-none-manylinux_2_28_aarch64.whl", hash = "sha256:6c51091683a117cd40fdb96a0ec28579f2276f6b627db7ccddc370df544e1dd7", size = 751683, upload-time = "2025-08-12T18:37:48.832Z" }, - { url = "https://files.pythonhosted.org/packages/0a/b1/fc2f468d140ef58e90fac584759d0cc449db9bc4f64668cdff750ef38fef/nvidia_modelopt-0.33.1-py3-none-manylinux_2_28_x86_64.whl", hash = "sha256:ef78a98901890f265596ec413dffac177d4a1865201d89a14f29f4fa0cf8e710", size = 751683, upload-time = "2025-08-12T18:36:59.964Z" }, + { name = "ninja" }, + { name = "numpy" }, + { name = "nvidia-ml-py" }, + { name = "packaging" }, + { name = "pulp" }, + { name = "pydantic" }, + { name = "regex" }, + { name = "rich" }, + { name = "safetensors" }, + { name = "scipy" }, + { name = "torch", version = "2.9.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, + { name = "torch", version = "2.9.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform != 'darwin'" }, + { name = "torchprofile" }, + { name = "tqdm" }, ] - -[[package]] -name = "nvidia-modelopt-core" -version = "0.33.1" -source = { registry = "https://pypi.org/simple" } wheels = [ - { url = "https://files.pythonhosted.org/packages/9b/b5/ba79b1c52b634b24e45dca409f133f947217a5c7ec5c256266e4ec5fa3eb/nvidia_modelopt_core-0.33.1-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:1ddd9279d8312f8e972b302692a26e6180f1c9fd277232f5925a5589f42b1b76", size = 1338081, upload-time = "2025-08-12T18:40:36.156Z" }, - { url = "https://files.pythonhosted.org/packages/13/40/4427583475dfd8eb1b8c7522d75d4d059f0512ff03dcc62d6986a22ab918/nvidia_modelopt_core-0.33.1-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:69d5ace564f2b056c916117be2023f2b7fc01cd1501073915e6b2ced2b8a5394", size = 1363366, upload-time = "2025-08-12T18:39:28.854Z" }, + { url = "https://files.pythonhosted.org/packages/7f/4a/4b4c339637fdbd54bc98b92c87c8b22f5efee05ca9e31e40a8d49ee66187/nvidia_modelopt-0.40.0-py3-none-any.whl", hash = "sha256:0315f53aef014b902866e427038db5803e3c6787a8e1f09c3650031550885051", size = 901421, upload-time = "2025-12-12T10:35:28.506Z" }, ] [[package]] name = "nvidia-nccl-cu12" -version = "2.27.3" +version = "2.27.5" source = { registry = "https://pypi.org/simple" } wheels = [ - { url = "https://files.pythonhosted.org/packages/5c/5b/4e4fff7bad39adf89f735f2bc87248c81db71205b62bcc0d5ca5b606b3c3/nvidia_nccl_cu12-2.27.3-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:adf27ccf4238253e0b826bce3ff5fa532d65fc42322c8bfdfaf28024c0fbe039", size = 322364134, upload-time = "2025-06-03T21:58:04.013Z" }, + { url = "https://files.pythonhosted.org/packages/bb/1c/857979db0ef194ca5e21478a0612bcdbbe59458d7694361882279947b349/nvidia_nccl_cu12-2.27.5-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:31432ad4d1fb1004eb0c56203dc9bc2178a1ba69d1d9e02d64a6938ab5e40e7a", size = 322400625, upload-time = "2025-06-26T04:11:04.496Z" }, + { url = "https://files.pythonhosted.org/packages/6e/89/f7a07dc961b60645dbbf42e80f2bc85ade7feb9a491b11a1e973aa00071f/nvidia_nccl_cu12-2.27.5-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:ad730cf15cb5d25fe849c6e6ca9eb5b76db16a80f13f425ac68d8e2e55624457", size = 322348229, upload-time = "2025-06-26T04:11:28.385Z" }, ] [[package]] @@ -4011,15 +4065,16 @@ version = "12.9.86" source = { registry = "https://pypi.org/simple" } wheels = [ { url = "https://files.pythonhosted.org/packages/46/0c/c75bbfb967457a0b7670b8ad267bfc4fffdf341c074e0a80db06c24ccfd4/nvidia_nvjitlink_cu12-12.9.86-py3-none-manylinux2010_x86_64.manylinux_2_12_x86_64.whl", hash = "sha256:e3f1171dbdc83c5932a45f0f4c99180a70de9bd2718c1ab77d14104f6d7147f9", size = 39748338, upload-time = "2025-06-05T20:10:25.613Z" }, + { url = "https://files.pythonhosted.org/packages/97/bc/2dcba8e70cf3115b400fef54f213bcd6715a3195eba000f8330f11e40c45/nvidia_nvjitlink_cu12-12.9.86-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:994a05ef08ef4b0b299829cde613a424382aff7efb08a7172c1fa616cc3af2ca", size = 39514880, upload-time = "2025-06-05T20:10:04.89Z" }, ] [[package]] name = "nvidia-nvshmem-cu12" -version = "3.3.24" +version = "3.3.20" source = { registry = "https://pypi.org/simple" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ca/ce/6b73d2c3cdeb2202a4a79115e543087ca024306c4d290fffd5cfc8d5009d/nvidia_nvshmem_cu12-3.3.24-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:f8666e4d2adffe846c264a836263b53fa5d7b725f0c508e36b40c3d4f9665e2a", size = 138990167, upload-time = "2025-08-22T19:56:19.001Z" }, - { url = "https://files.pythonhosted.org/packages/ac/49/7e1e3e98f5b8ae79f21260f9a90d8d985e5ad67b69b90b09456fc3c01a18/nvidia_nvshmem_cu12-3.3.24-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:0032831c0ec4fdc64c3bd8daeae588f6647ee4afc3376c5871218546acac0e81", size = 139158697, upload-time = "2025-08-22T19:56:39.552Z" }, + { url = "https://files.pythonhosted.org/packages/92/9d/3dd98852568fb845ec1f7902c90a22b240fe1cbabda411ccedf2fd737b7b/nvidia_nvshmem_cu12-3.3.20-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:0b0b960da3842212758e4fa4696b94f129090b30e5122fea3c5345916545cff0", size = 124484616, upload-time = "2025-08-04T20:24:59.172Z" }, + { url = "https://files.pythonhosted.org/packages/3b/6c/99acb2f9eb85c29fc6f3a7ac4dccfd992e22666dd08a642b303311326a97/nvidia_nvshmem_cu12-3.3.20-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:d00f26d3f9b2e3c3065be895e3059d6479ea5c638a3f38c9fec49b1b9dd7c1e5", size = 124657145, upload-time = "2025-08-04T20:25:19.995Z" }, ] [[package]] @@ -4028,6 +4083,7 @@ version = "12.9.79" source = { registry = "https://pypi.org/simple" } wheels = [ { url = "https://files.pythonhosted.org/packages/86/ed/bb230dce7741f2778ba2ae3e8778fdb8bc58eee9fd95f07bf7b2d18e8081/nvidia_nvtx_cu12-12.9.79-py3-none-manylinux1_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:fec150986817f2b4e7eed72ed059f2dcb9ba3856b9a96134e448eac946a6952f", size = 85504, upload-time = "2025-06-05T20:03:10.21Z" }, + { url = "https://files.pythonhosted.org/packages/c4/e4/82155e4aaedb41621087ba219c95e99c5e417f37a7649b4fb6ec32dcb14d/nvidia_nvtx_cu12-12.9.79-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d1f258e752294acdb4f61c3d31fee87bd0f60e459f1e2f624376369b524cd15d", size = 86120, upload-time = "2025-06-05T20:02:51.838Z" }, ] [[package]] @@ -4041,8 +4097,8 @@ dependencies = [ { name = "psutil" }, { name = "pynvml" }, { name = "pyyaml" }, - { name = "torch", version = "2.8.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, - { name = "torch", version = "2.8.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform != 'darwin'" }, + { name = "torch", version = "2.9.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, + { name = "torch", version = "2.9.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform != 'darwin'" }, ] wheels = [ { url = "https://files.pythonhosted.org/packages/70/05/38d491962273c7905708762279f440520eb79f3c00b67a023497215ad023/nvidia_resiliency_ext-0.4.1-cp312-cp312-manylinux_2_31_aarch64.whl", hash = "sha256:b3bd5f01535574b16d0f38bca6e39afe3806c4a2896eee1b321cd944e00025a7", size = 444570, upload-time = "2025-07-17T03:50:58.877Z" }, @@ -4159,11 +4215,11 @@ dependencies = [ { name = "regex" }, { name = "safetensors" }, { name = "timm" }, - { name = "torch", version = "2.8.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, - { name = "torch", version = "2.8.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform != 'darwin'" }, - { name = "torchvision", version = "0.23.0", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "platform_machine == 'aarch64' and sys_platform == 'linux'" }, - { name = "torchvision", version = "0.23.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, - { name = "torchvision", version = "0.23.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "(platform_machine != 'aarch64' and sys_platform == 'linux') or (sys_platform != 'darwin' and sys_platform != 'linux')" }, + { name = "torch", version = "2.9.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, + { name = "torch", version = "2.9.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform != 'darwin'" }, + { name = "torchvision", version = "0.24.0", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "platform_machine == 'aarch64' and sys_platform == 'linux'" }, + { name = "torchvision", version = "0.24.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, + { name = "torchvision", version = "0.24.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "(platform_machine != 'aarch64' and sys_platform == 'linux') or (sys_platform != 'darwin' and sys_platform != 'linux')" }, { name = "tqdm" }, ] sdist = { url = "https://files.pythonhosted.org/packages/30/46/fb8be250fa7fcfc56fbeb41583645e18d868268f67fbbbeb8ed62a8ff18a/open_clip_torch-3.2.0.tar.gz", hash = "sha256:62b7743012ccc40fb7c64819fa762fba0a13dd74585ac733babe58c2974c2506", size = 1502853, upload-time = "2025-09-21T17:32:08.289Z" } @@ -4466,8 +4522,8 @@ dependencies = [ { name = "psutil" }, { name = "pyyaml" }, { name = "safetensors" }, - { name = "torch", version = "2.8.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, - { name = "torch", version = "2.8.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform != 'darwin'" }, + { name = "torch", version = "2.9.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, + { name = "torch", version = "2.9.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform != 'darwin'" }, { name = "tqdm" }, { name = "transformers" }, ] @@ -4983,7 +5039,7 @@ wheels = [ [[package]] name = "pydantic" -version = "2.11.7" +version = "2.12.4" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "annotated-types" }, @@ -4991,9 +5047,9 @@ dependencies = [ { name = "typing-extensions" }, { name = "typing-inspection" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/00/dd/4325abf92c39ba8623b5af936ddb36ffcfe0beae70405d456ab1fb2f5b8c/pydantic-2.11.7.tar.gz", hash = "sha256:d989c3c6cb79469287b1569f7447a17848c998458d49ebe294e975b9baf0f0db", size = 788350, upload-time = "2025-06-14T08:33:17.137Z" } +sdist = { url = "https://files.pythonhosted.org/packages/96/ad/a17bc283d7d81837c061c49e3eaa27a45991759a1b7eae1031921c6bd924/pydantic-2.12.4.tar.gz", hash = "sha256:0f8cb9555000a4b5b617f66bfd2566264c4984b27589d3b845685983e8ea85ac", size = 821038, upload-time = "2025-11-05T10:50:08.59Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/6a/c0/ec2b1c8712ca690e5d61979dee872603e92b8a32f94cc1b72d53beab008a/pydantic-2.11.7-py3-none-any.whl", hash = "sha256:dde5df002701f6de26248661f6835bbe296a47bf73990135c7d07ce741b9623b", size = 444782, upload-time = "2025-06-14T08:33:14.905Z" }, + { url = "https://files.pythonhosted.org/packages/82/2f/e68750da9b04856e2a7ec56fc6f034a5a79775e9b9a81882252789873798/pydantic-2.12.4-py3-none-any.whl", hash = "sha256:92d3d202a745d46f9be6df459ac5a064fdaa3c1c4cd8adcfa332ccf3c05f871e", size = 463400, upload-time = "2025-11-05T10:50:06.732Z" }, ] [package.optional-dependencies] @@ -5003,44 +5059,73 @@ email = [ [[package]] name = "pydantic-core" -version = "2.33.2" +version = "2.41.5" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ad/88/5f2260bdfae97aabf98f1778d43f69574390ad787afb646292a638c923d4/pydantic_core-2.33.2.tar.gz", hash = "sha256:7cb8bc3605c29176e1b105350d2e6474142d7c1bd1d9327c4a9bdb46bf827acc", size = 435195, upload-time = "2025-04-23T18:33:52.104Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/18/8a/2b41c97f554ec8c71f2a8a5f85cb56a8b0956addfe8b0efb5b3d77e8bdc3/pydantic_core-2.33.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:a7ec89dc587667f22b6a0b6579c249fca9026ce7c333fc142ba42411fa243cdc", size = 2009000, upload-time = "2025-04-23T18:31:25.863Z" }, - { url = "https://files.pythonhosted.org/packages/a1/02/6224312aacb3c8ecbaa959897af57181fb6cf3a3d7917fd44d0f2917e6f2/pydantic_core-2.33.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3c6db6e52c6d70aa0d00d45cdb9b40f0433b96380071ea80b09277dba021ddf7", size = 1847996, upload-time = "2025-04-23T18:31:27.341Z" }, - { url = "https://files.pythonhosted.org/packages/d6/46/6dcdf084a523dbe0a0be59d054734b86a981726f221f4562aed313dbcb49/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e61206137cbc65e6d5256e1166f88331d3b6238e082d9f74613b9b765fb9025", size = 1880957, upload-time = "2025-04-23T18:31:28.956Z" }, - { url = "https://files.pythonhosted.org/packages/ec/6b/1ec2c03837ac00886ba8160ce041ce4e325b41d06a034adbef11339ae422/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eb8c529b2819c37140eb51b914153063d27ed88e3bdc31b71198a198e921e011", size = 1964199, upload-time = "2025-04-23T18:31:31.025Z" }, - { url = "https://files.pythonhosted.org/packages/2d/1d/6bf34d6adb9debd9136bd197ca72642203ce9aaaa85cfcbfcf20f9696e83/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c52b02ad8b4e2cf14ca7b3d918f3eb0ee91e63b3167c32591e57c4317e134f8f", size = 2120296, upload-time = "2025-04-23T18:31:32.514Z" }, - { url = "https://files.pythonhosted.org/packages/e0/94/2bd0aaf5a591e974b32a9f7123f16637776c304471a0ab33cf263cf5591a/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:96081f1605125ba0855dfda83f6f3df5ec90c61195421ba72223de35ccfb2f88", size = 2676109, upload-time = "2025-04-23T18:31:33.958Z" }, - { url = "https://files.pythonhosted.org/packages/f9/41/4b043778cf9c4285d59742281a769eac371b9e47e35f98ad321349cc5d61/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f57a69461af2a5fa6e6bbd7a5f60d3b7e6cebb687f55106933188e79ad155c1", size = 2002028, upload-time = "2025-04-23T18:31:39.095Z" }, - { url = "https://files.pythonhosted.org/packages/cb/d5/7bb781bf2748ce3d03af04d5c969fa1308880e1dca35a9bd94e1a96a922e/pydantic_core-2.33.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:572c7e6c8bb4774d2ac88929e3d1f12bc45714ae5ee6d9a788a9fb35e60bb04b", size = 2100044, upload-time = "2025-04-23T18:31:41.034Z" }, - { url = "https://files.pythonhosted.org/packages/fe/36/def5e53e1eb0ad896785702a5bbfd25eed546cdcf4087ad285021a90ed53/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:db4b41f9bd95fbe5acd76d89920336ba96f03e149097365afe1cb092fceb89a1", size = 2058881, upload-time = "2025-04-23T18:31:42.757Z" }, - { url = "https://files.pythonhosted.org/packages/01/6c/57f8d70b2ee57fc3dc8b9610315949837fa8c11d86927b9bb044f8705419/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:fa854f5cf7e33842a892e5c73f45327760bc7bc516339fda888c75ae60edaeb6", size = 2227034, upload-time = "2025-04-23T18:31:44.304Z" }, - { url = "https://files.pythonhosted.org/packages/27/b9/9c17f0396a82b3d5cbea4c24d742083422639e7bb1d5bf600e12cb176a13/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5f483cfb75ff703095c59e365360cb73e00185e01aaea067cd19acffd2ab20ea", size = 2234187, upload-time = "2025-04-23T18:31:45.891Z" }, - { url = "https://files.pythonhosted.org/packages/b0/6a/adf5734ffd52bf86d865093ad70b2ce543415e0e356f6cacabbc0d9ad910/pydantic_core-2.33.2-cp312-cp312-win32.whl", hash = "sha256:9cb1da0f5a471435a7bc7e439b8a728e8b61e59784b2af70d7c169f8dd8ae290", size = 1892628, upload-time = "2025-04-23T18:31:47.819Z" }, - { url = "https://files.pythonhosted.org/packages/43/e4/5479fecb3606c1368d496a825d8411e126133c41224c1e7238be58b87d7e/pydantic_core-2.33.2-cp312-cp312-win_amd64.whl", hash = "sha256:f941635f2a3d96b2973e867144fde513665c87f13fe0e193c158ac51bfaaa7b2", size = 1955866, upload-time = "2025-04-23T18:31:49.635Z" }, - { url = "https://files.pythonhosted.org/packages/0d/24/8b11e8b3e2be9dd82df4b11408a67c61bb4dc4f8e11b5b0fc888b38118b5/pydantic_core-2.33.2-cp312-cp312-win_arm64.whl", hash = "sha256:cca3868ddfaccfbc4bfb1d608e2ccaaebe0ae628e1416aeb9c4d88c001bb45ab", size = 1888894, upload-time = "2025-04-23T18:31:51.609Z" }, - { url = "https://files.pythonhosted.org/packages/46/8c/99040727b41f56616573a28771b1bfa08a3d3fe74d3d513f01251f79f172/pydantic_core-2.33.2-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:1082dd3e2d7109ad8b7da48e1d4710c8d06c253cbc4a27c1cff4fbcaa97a9e3f", size = 2015688, upload-time = "2025-04-23T18:31:53.175Z" }, - { url = "https://files.pythonhosted.org/packages/3a/cc/5999d1eb705a6cefc31f0b4a90e9f7fc400539b1a1030529700cc1b51838/pydantic_core-2.33.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f517ca031dfc037a9c07e748cefd8d96235088b83b4f4ba8939105d20fa1dcd6", size = 1844808, upload-time = "2025-04-23T18:31:54.79Z" }, - { url = "https://files.pythonhosted.org/packages/6f/5e/a0a7b8885c98889a18b6e376f344da1ef323d270b44edf8174d6bce4d622/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a9f2c9dd19656823cb8250b0724ee9c60a82f3cdf68a080979d13092a3b0fef", size = 1885580, upload-time = "2025-04-23T18:31:57.393Z" }, - { url = "https://files.pythonhosted.org/packages/3b/2a/953581f343c7d11a304581156618c3f592435523dd9d79865903272c256a/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2b0a451c263b01acebe51895bfb0e1cc842a5c666efe06cdf13846c7418caa9a", size = 1973859, upload-time = "2025-04-23T18:31:59.065Z" }, - { url = "https://files.pythonhosted.org/packages/e6/55/f1a813904771c03a3f97f676c62cca0c0a4138654107c1b61f19c644868b/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ea40a64d23faa25e62a70ad163571c0b342b8bf66d5fa612ac0dec4f069d916", size = 2120810, upload-time = "2025-04-23T18:32:00.78Z" }, - { url = "https://files.pythonhosted.org/packages/aa/c3/053389835a996e18853ba107a63caae0b9deb4a276c6b472931ea9ae6e48/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0fb2d542b4d66f9470e8065c5469ec676978d625a8b7a363f07d9a501a9cb36a", size = 2676498, upload-time = "2025-04-23T18:32:02.418Z" }, - { url = "https://files.pythonhosted.org/packages/eb/3c/f4abd740877a35abade05e437245b192f9d0ffb48bbbbd708df33d3cda37/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fdac5d6ffa1b5a83bca06ffe7583f5576555e6c8b3a91fbd25ea7780f825f7d", size = 2000611, upload-time = "2025-04-23T18:32:04.152Z" }, - { url = "https://files.pythonhosted.org/packages/59/a7/63ef2fed1837d1121a894d0ce88439fe3e3b3e48c7543b2a4479eb99c2bd/pydantic_core-2.33.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:04a1a413977ab517154eebb2d326da71638271477d6ad87a769102f7c2488c56", size = 2107924, upload-time = "2025-04-23T18:32:06.129Z" }, - { url = "https://files.pythonhosted.org/packages/04/8f/2551964ef045669801675f1cfc3b0d74147f4901c3ffa42be2ddb1f0efc4/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:c8e7af2f4e0194c22b5b37205bfb293d166a7344a5b0d0eaccebc376546d77d5", size = 2063196, upload-time = "2025-04-23T18:32:08.178Z" }, - { url = "https://files.pythonhosted.org/packages/26/bd/d9602777e77fc6dbb0c7db9ad356e9a985825547dce5ad1d30ee04903918/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:5c92edd15cd58b3c2d34873597a1e20f13094f59cf88068adb18947df5455b4e", size = 2236389, upload-time = "2025-04-23T18:32:10.242Z" }, - { url = "https://files.pythonhosted.org/packages/42/db/0e950daa7e2230423ab342ae918a794964b053bec24ba8af013fc7c94846/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:65132b7b4a1c0beded5e057324b7e16e10910c106d43675d9bd87d4f38dde162", size = 2239223, upload-time = "2025-04-23T18:32:12.382Z" }, - { url = "https://files.pythonhosted.org/packages/58/4d/4f937099c545a8a17eb52cb67fe0447fd9a373b348ccfa9a87f141eeb00f/pydantic_core-2.33.2-cp313-cp313-win32.whl", hash = "sha256:52fb90784e0a242bb96ec53f42196a17278855b0f31ac7c3cc6f5c1ec4811849", size = 1900473, upload-time = "2025-04-23T18:32:14.034Z" }, - { url = "https://files.pythonhosted.org/packages/a0/75/4a0a9bac998d78d889def5e4ef2b065acba8cae8c93696906c3a91f310ca/pydantic_core-2.33.2-cp313-cp313-win_amd64.whl", hash = "sha256:c083a3bdd5a93dfe480f1125926afcdbf2917ae714bdb80b36d34318b2bec5d9", size = 1955269, upload-time = "2025-04-23T18:32:15.783Z" }, - { url = "https://files.pythonhosted.org/packages/f9/86/1beda0576969592f1497b4ce8e7bc8cbdf614c352426271b1b10d5f0aa64/pydantic_core-2.33.2-cp313-cp313-win_arm64.whl", hash = "sha256:e80b087132752f6b3d714f041ccf74403799d3b23a72722ea2e6ba2e892555b9", size = 1893921, upload-time = "2025-04-23T18:32:18.473Z" }, - { url = "https://files.pythonhosted.org/packages/a4/7d/e09391c2eebeab681df2b74bfe6c43422fffede8dc74187b2b0bf6fd7571/pydantic_core-2.33.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:61c18fba8e5e9db3ab908620af374db0ac1baa69f0f32df4f61ae23f15e586ac", size = 1806162, upload-time = "2025-04-23T18:32:20.188Z" }, - { url = "https://files.pythonhosted.org/packages/f1/3d/847b6b1fed9f8ed3bb95a9ad04fbd0b212e832d4f0f50ff4d9ee5a9f15cf/pydantic_core-2.33.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95237e53bb015f67b63c91af7518a62a8660376a6a0db19b89acc77a4d6199f5", size = 1981560, upload-time = "2025-04-23T18:32:22.354Z" }, - { url = "https://files.pythonhosted.org/packages/6f/9a/e73262f6c6656262b5fdd723ad90f518f579b7bc8622e43a942eec53c938/pydantic_core-2.33.2-cp313-cp313t-win_amd64.whl", hash = "sha256:c2fc0a768ef76c15ab9238afa6da7f69895bb5d1ee83aeea2e3509af4472d0b9", size = 1935777, upload-time = "2025-04-23T18:32:25.088Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/71/70/23b021c950c2addd24ec408e9ab05d59b035b39d97cdc1130e1bce647bb6/pydantic_core-2.41.5.tar.gz", hash = "sha256:08daa51ea16ad373ffd5e7606252cc32f07bc72b28284b6bc9c6df804816476e", size = 460952, upload-time = "2025-11-04T13:43:49.098Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5f/5d/5f6c63eebb5afee93bcaae4ce9a898f3373ca23df3ccaef086d0233a35a7/pydantic_core-2.41.5-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:f41a7489d32336dbf2199c8c0a215390a751c5b014c2c1c5366e817202e9cdf7", size = 2110990, upload-time = "2025-11-04T13:39:58.079Z" }, + { url = "https://files.pythonhosted.org/packages/aa/32/9c2e8ccb57c01111e0fd091f236c7b371c1bccea0fa85247ac55b1e2b6b6/pydantic_core-2.41.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:070259a8818988b9a84a449a2a7337c7f430a22acc0859c6b110aa7212a6d9c0", size = 1896003, upload-time = "2025-11-04T13:39:59.956Z" }, + { url = "https://files.pythonhosted.org/packages/68/b8/a01b53cb0e59139fbc9e4fda3e9724ede8de279097179be4ff31f1abb65a/pydantic_core-2.41.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e96cea19e34778f8d59fe40775a7a574d95816eb150850a85a7a4c8f4b94ac69", size = 1919200, upload-time = "2025-11-04T13:40:02.241Z" }, + { url = "https://files.pythonhosted.org/packages/38/de/8c36b5198a29bdaade07b5985e80a233a5ac27137846f3bc2d3b40a47360/pydantic_core-2.41.5-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ed2e99c456e3fadd05c991f8f437ef902e00eedf34320ba2b0842bd1c3ca3a75", size = 2052578, upload-time = "2025-11-04T13:40:04.401Z" }, + { url = "https://files.pythonhosted.org/packages/00/b5/0e8e4b5b081eac6cb3dbb7e60a65907549a1ce035a724368c330112adfdd/pydantic_core-2.41.5-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:65840751b72fbfd82c3c640cff9284545342a4f1eb1586ad0636955b261b0b05", size = 2208504, upload-time = "2025-11-04T13:40:06.072Z" }, + { url = "https://files.pythonhosted.org/packages/77/56/87a61aad59c7c5b9dc8caad5a41a5545cba3810c3e828708b3d7404f6cef/pydantic_core-2.41.5-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e536c98a7626a98feb2d3eaf75944ef6f3dbee447e1f841eae16f2f0a72d8ddc", size = 2335816, upload-time = "2025-11-04T13:40:07.835Z" }, + { url = "https://files.pythonhosted.org/packages/0d/76/941cc9f73529988688a665a5c0ecff1112b3d95ab48f81db5f7606f522d3/pydantic_core-2.41.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eceb81a8d74f9267ef4081e246ffd6d129da5d87e37a77c9bde550cb04870c1c", size = 2075366, upload-time = "2025-11-04T13:40:09.804Z" }, + { url = "https://files.pythonhosted.org/packages/d3/43/ebef01f69baa07a482844faaa0a591bad1ef129253ffd0cdaa9d8a7f72d3/pydantic_core-2.41.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d38548150c39b74aeeb0ce8ee1d8e82696f4a4e16ddc6de7b1d8823f7de4b9b5", size = 2171698, upload-time = "2025-11-04T13:40:12.004Z" }, + { url = "https://files.pythonhosted.org/packages/b1/87/41f3202e4193e3bacfc2c065fab7706ebe81af46a83d3e27605029c1f5a6/pydantic_core-2.41.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:c23e27686783f60290e36827f9c626e63154b82b116d7fe9adba1fda36da706c", size = 2132603, upload-time = "2025-11-04T13:40:13.868Z" }, + { url = "https://files.pythonhosted.org/packages/49/7d/4c00df99cb12070b6bccdef4a195255e6020a550d572768d92cc54dba91a/pydantic_core-2.41.5-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:482c982f814460eabe1d3bb0adfdc583387bd4691ef00b90575ca0d2b6fe2294", size = 2329591, upload-time = "2025-11-04T13:40:15.672Z" }, + { url = "https://files.pythonhosted.org/packages/cc/6a/ebf4b1d65d458f3cda6a7335d141305dfa19bdc61140a884d165a8a1bbc7/pydantic_core-2.41.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:bfea2a5f0b4d8d43adf9d7b8bf019fb46fdd10a2e5cde477fbcb9d1fa08c68e1", size = 2319068, upload-time = "2025-11-04T13:40:17.532Z" }, + { url = "https://files.pythonhosted.org/packages/49/3b/774f2b5cd4192d5ab75870ce4381fd89cf218af999515baf07e7206753f0/pydantic_core-2.41.5-cp312-cp312-win32.whl", hash = "sha256:b74557b16e390ec12dca509bce9264c3bbd128f8a2c376eaa68003d7f327276d", size = 1985908, upload-time = "2025-11-04T13:40:19.309Z" }, + { url = "https://files.pythonhosted.org/packages/86/45/00173a033c801cacf67c190fef088789394feaf88a98a7035b0e40d53dc9/pydantic_core-2.41.5-cp312-cp312-win_amd64.whl", hash = "sha256:1962293292865bca8e54702b08a4f26da73adc83dd1fcf26fbc875b35d81c815", size = 2020145, upload-time = "2025-11-04T13:40:21.548Z" }, + { url = "https://files.pythonhosted.org/packages/f9/22/91fbc821fa6d261b376a3f73809f907cec5ca6025642c463d3488aad22fb/pydantic_core-2.41.5-cp312-cp312-win_arm64.whl", hash = "sha256:1746d4a3d9a794cacae06a5eaaccb4b8643a131d45fbc9af23e353dc0a5ba5c3", size = 1976179, upload-time = "2025-11-04T13:40:23.393Z" }, + { url = "https://files.pythonhosted.org/packages/87/06/8806241ff1f70d9939f9af039c6c35f2360cf16e93c2ca76f184e76b1564/pydantic_core-2.41.5-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:941103c9be18ac8daf7b7adca8228f8ed6bb7a1849020f643b3a14d15b1924d9", size = 2120403, upload-time = "2025-11-04T13:40:25.248Z" }, + { url = "https://files.pythonhosted.org/packages/94/02/abfa0e0bda67faa65fef1c84971c7e45928e108fe24333c81f3bfe35d5f5/pydantic_core-2.41.5-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:112e305c3314f40c93998e567879e887a3160bb8689ef3d2c04b6cc62c33ac34", size = 1896206, upload-time = "2025-11-04T13:40:27.099Z" }, + { url = "https://files.pythonhosted.org/packages/15/df/a4c740c0943e93e6500f9eb23f4ca7ec9bf71b19e608ae5b579678c8d02f/pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0cbaad15cb0c90aa221d43c00e77bb33c93e8d36e0bf74760cd00e732d10a6a0", size = 1919307, upload-time = "2025-11-04T13:40:29.806Z" }, + { url = "https://files.pythonhosted.org/packages/9a/e3/6324802931ae1d123528988e0e86587c2072ac2e5394b4bc2bc34b61ff6e/pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:03ca43e12fab6023fc79d28ca6b39b05f794ad08ec2feccc59a339b02f2b3d33", size = 2063258, upload-time = "2025-11-04T13:40:33.544Z" }, + { url = "https://files.pythonhosted.org/packages/c9/d4/2230d7151d4957dd79c3044ea26346c148c98fbf0ee6ebd41056f2d62ab5/pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dc799088c08fa04e43144b164feb0c13f9a0bc40503f8df3e9fde58a3c0c101e", size = 2214917, upload-time = "2025-11-04T13:40:35.479Z" }, + { url = "https://files.pythonhosted.org/packages/e6/9f/eaac5df17a3672fef0081b6c1bb0b82b33ee89aa5cec0d7b05f52fd4a1fa/pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:97aeba56665b4c3235a0e52b2c2f5ae9cd071b8a8310ad27bddb3f7fb30e9aa2", size = 2332186, upload-time = "2025-11-04T13:40:37.436Z" }, + { url = "https://files.pythonhosted.org/packages/cf/4e/35a80cae583a37cf15604b44240e45c05e04e86f9cfd766623149297e971/pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:406bf18d345822d6c21366031003612b9c77b3e29ffdb0f612367352aab7d586", size = 2073164, upload-time = "2025-11-04T13:40:40.289Z" }, + { url = "https://files.pythonhosted.org/packages/bf/e3/f6e262673c6140dd3305d144d032f7bd5f7497d3871c1428521f19f9efa2/pydantic_core-2.41.5-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b93590ae81f7010dbe380cdeab6f515902ebcbefe0b9327cc4804d74e93ae69d", size = 2179146, upload-time = "2025-11-04T13:40:42.809Z" }, + { url = "https://files.pythonhosted.org/packages/75/c7/20bd7fc05f0c6ea2056a4565c6f36f8968c0924f19b7d97bbfea55780e73/pydantic_core-2.41.5-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:01a3d0ab748ee531f4ea6c3e48ad9dac84ddba4b0d82291f87248f2f9de8d740", size = 2137788, upload-time = "2025-11-04T13:40:44.752Z" }, + { url = "https://files.pythonhosted.org/packages/3a/8d/34318ef985c45196e004bc46c6eab2eda437e744c124ef0dbe1ff2c9d06b/pydantic_core-2.41.5-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:6561e94ba9dacc9c61bce40e2d6bdc3bfaa0259d3ff36ace3b1e6901936d2e3e", size = 2340133, upload-time = "2025-11-04T13:40:46.66Z" }, + { url = "https://files.pythonhosted.org/packages/9c/59/013626bf8c78a5a5d9350d12e7697d3d4de951a75565496abd40ccd46bee/pydantic_core-2.41.5-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:915c3d10f81bec3a74fbd4faebe8391013ba61e5a1a8d48c4455b923bdda7858", size = 2324852, upload-time = "2025-11-04T13:40:48.575Z" }, + { url = "https://files.pythonhosted.org/packages/1a/d9/c248c103856f807ef70c18a4f986693a46a8ffe1602e5d361485da502d20/pydantic_core-2.41.5-cp313-cp313-win32.whl", hash = "sha256:650ae77860b45cfa6e2cdafc42618ceafab3a2d9a3811fcfbd3bbf8ac3c40d36", size = 1994679, upload-time = "2025-11-04T13:40:50.619Z" }, + { url = "https://files.pythonhosted.org/packages/9e/8b/341991b158ddab181cff136acd2552c9f35bd30380422a639c0671e99a91/pydantic_core-2.41.5-cp313-cp313-win_amd64.whl", hash = "sha256:79ec52ec461e99e13791ec6508c722742ad745571f234ea6255bed38c6480f11", size = 2019766, upload-time = "2025-11-04T13:40:52.631Z" }, + { url = "https://files.pythonhosted.org/packages/73/7d/f2f9db34af103bea3e09735bb40b021788a5e834c81eedb541991badf8f5/pydantic_core-2.41.5-cp313-cp313-win_arm64.whl", hash = "sha256:3f84d5c1b4ab906093bdc1ff10484838aca54ef08de4afa9de0f5f14d69639cd", size = 1981005, upload-time = "2025-11-04T13:40:54.734Z" }, + { url = "https://files.pythonhosted.org/packages/ea/28/46b7c5c9635ae96ea0fbb779e271a38129df2550f763937659ee6c5dbc65/pydantic_core-2.41.5-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:3f37a19d7ebcdd20b96485056ba9e8b304e27d9904d233d7b1015db320e51f0a", size = 2119622, upload-time = "2025-11-04T13:40:56.68Z" }, + { url = "https://files.pythonhosted.org/packages/74/1a/145646e5687e8d9a1e8d09acb278c8535ebe9e972e1f162ed338a622f193/pydantic_core-2.41.5-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:1d1d9764366c73f996edd17abb6d9d7649a7eb690006ab6adbda117717099b14", size = 1891725, upload-time = "2025-11-04T13:40:58.807Z" }, + { url = "https://files.pythonhosted.org/packages/23/04/e89c29e267b8060b40dca97bfc64a19b2a3cf99018167ea1677d96368273/pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:25e1c2af0fce638d5f1988b686f3b3ea8cd7de5f244ca147c777769e798a9cd1", size = 1915040, upload-time = "2025-11-04T13:41:00.853Z" }, + { url = "https://files.pythonhosted.org/packages/84/a3/15a82ac7bd97992a82257f777b3583d3e84bdb06ba6858f745daa2ec8a85/pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:506d766a8727beef16b7adaeb8ee6217c64fc813646b424d0804d67c16eddb66", size = 2063691, upload-time = "2025-11-04T13:41:03.504Z" }, + { url = "https://files.pythonhosted.org/packages/74/9b/0046701313c6ef08c0c1cf0e028c67c770a4e1275ca73131563c5f2a310a/pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4819fa52133c9aa3c387b3328f25c1facc356491e6135b459f1de698ff64d869", size = 2213897, upload-time = "2025-11-04T13:41:05.804Z" }, + { url = "https://files.pythonhosted.org/packages/8a/cd/6bac76ecd1b27e75a95ca3a9a559c643b3afcd2dd62086d4b7a32a18b169/pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2b761d210c9ea91feda40d25b4efe82a1707da2ef62901466a42492c028553a2", size = 2333302, upload-time = "2025-11-04T13:41:07.809Z" }, + { url = "https://files.pythonhosted.org/packages/4c/d2/ef2074dc020dd6e109611a8be4449b98cd25e1b9b8a303c2f0fca2f2bcf7/pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:22f0fb8c1c583a3b6f24df2470833b40207e907b90c928cc8d3594b76f874375", size = 2064877, upload-time = "2025-11-04T13:41:09.827Z" }, + { url = "https://files.pythonhosted.org/packages/18/66/e9db17a9a763d72f03de903883c057b2592c09509ccfe468187f2a2eef29/pydantic_core-2.41.5-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2782c870e99878c634505236d81e5443092fba820f0373997ff75f90f68cd553", size = 2180680, upload-time = "2025-11-04T13:41:12.379Z" }, + { url = "https://files.pythonhosted.org/packages/d3/9e/3ce66cebb929f3ced22be85d4c2399b8e85b622db77dad36b73c5387f8f8/pydantic_core-2.41.5-cp314-cp314-musllinux_1_1_aarch64.whl", hash = "sha256:0177272f88ab8312479336e1d777f6b124537d47f2123f89cb37e0accea97f90", size = 2138960, upload-time = "2025-11-04T13:41:14.627Z" }, + { url = "https://files.pythonhosted.org/packages/a6/62/205a998f4327d2079326b01abee48e502ea739d174f0a89295c481a2272e/pydantic_core-2.41.5-cp314-cp314-musllinux_1_1_armv7l.whl", hash = "sha256:63510af5e38f8955b8ee5687740d6ebf7c2a0886d15a6d65c32814613681bc07", size = 2339102, upload-time = "2025-11-04T13:41:16.868Z" }, + { url = "https://files.pythonhosted.org/packages/3c/0d/f05e79471e889d74d3d88f5bd20d0ed189ad94c2423d81ff8d0000aab4ff/pydantic_core-2.41.5-cp314-cp314-musllinux_1_1_x86_64.whl", hash = "sha256:e56ba91f47764cc14f1daacd723e3e82d1a89d783f0f5afe9c364b8bb491ccdb", size = 2326039, upload-time = "2025-11-04T13:41:18.934Z" }, + { url = "https://files.pythonhosted.org/packages/ec/e1/e08a6208bb100da7e0c4b288eed624a703f4d129bde2da475721a80cab32/pydantic_core-2.41.5-cp314-cp314-win32.whl", hash = "sha256:aec5cf2fd867b4ff45b9959f8b20ea3993fc93e63c7363fe6851424c8a7e7c23", size = 1995126, upload-time = "2025-11-04T13:41:21.418Z" }, + { url = "https://files.pythonhosted.org/packages/48/5d/56ba7b24e9557f99c9237e29f5c09913c81eeb2f3217e40e922353668092/pydantic_core-2.41.5-cp314-cp314-win_amd64.whl", hash = "sha256:8e7c86f27c585ef37c35e56a96363ab8de4e549a95512445b85c96d3e2f7c1bf", size = 2015489, upload-time = "2025-11-04T13:41:24.076Z" }, + { url = "https://files.pythonhosted.org/packages/4e/bb/f7a190991ec9e3e0ba22e4993d8755bbc4a32925c0b5b42775c03e8148f9/pydantic_core-2.41.5-cp314-cp314-win_arm64.whl", hash = "sha256:e672ba74fbc2dc8eea59fb6d4aed6845e6905fc2a8afe93175d94a83ba2a01a0", size = 1977288, upload-time = "2025-11-04T13:41:26.33Z" }, + { url = "https://files.pythonhosted.org/packages/92/ed/77542d0c51538e32e15afe7899d79efce4b81eee631d99850edc2f5e9349/pydantic_core-2.41.5-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:8566def80554c3faa0e65ac30ab0932b9e3a5cd7f8323764303d468e5c37595a", size = 2120255, upload-time = "2025-11-04T13:41:28.569Z" }, + { url = "https://files.pythonhosted.org/packages/bb/3d/6913dde84d5be21e284439676168b28d8bbba5600d838b9dca99de0fad71/pydantic_core-2.41.5-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:b80aa5095cd3109962a298ce14110ae16b8c1aece8b72f9dafe81cf597ad80b3", size = 1863760, upload-time = "2025-11-04T13:41:31.055Z" }, + { url = "https://files.pythonhosted.org/packages/5a/f0/e5e6b99d4191da102f2b0eb9687aaa7f5bea5d9964071a84effc3e40f997/pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3006c3dd9ba34b0c094c544c6006cc79e87d8612999f1a5d43b769b89181f23c", size = 1878092, upload-time = "2025-11-04T13:41:33.21Z" }, + { url = "https://files.pythonhosted.org/packages/71/48/36fb760642d568925953bcc8116455513d6e34c4beaa37544118c36aba6d/pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:72f6c8b11857a856bcfa48c86f5368439f74453563f951e473514579d44aa612", size = 2053385, upload-time = "2025-11-04T13:41:35.508Z" }, + { url = "https://files.pythonhosted.org/packages/20/25/92dc684dd8eb75a234bc1c764b4210cf2646479d54b47bf46061657292a8/pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5cb1b2f9742240e4bb26b652a5aeb840aa4b417c7748b6f8387927bc6e45e40d", size = 2218832, upload-time = "2025-11-04T13:41:37.732Z" }, + { url = "https://files.pythonhosted.org/packages/e2/09/f53e0b05023d3e30357d82eb35835d0f6340ca344720a4599cd663dca599/pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bd3d54f38609ff308209bd43acea66061494157703364ae40c951f83ba99a1a9", size = 2327585, upload-time = "2025-11-04T13:41:40Z" }, + { url = "https://files.pythonhosted.org/packages/aa/4e/2ae1aa85d6af35a39b236b1b1641de73f5a6ac4d5a7509f77b814885760c/pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ff4321e56e879ee8d2a879501c8e469414d948f4aba74a2d4593184eb326660", size = 2041078, upload-time = "2025-11-04T13:41:42.323Z" }, + { url = "https://files.pythonhosted.org/packages/cd/13/2e215f17f0ef326fc72afe94776edb77525142c693767fc347ed6288728d/pydantic_core-2.41.5-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d0d2568a8c11bf8225044aa94409e21da0cb09dcdafe9ecd10250b2baad531a9", size = 2173914, upload-time = "2025-11-04T13:41:45.221Z" }, + { url = "https://files.pythonhosted.org/packages/02/7a/f999a6dcbcd0e5660bc348a3991c8915ce6599f4f2c6ac22f01d7a10816c/pydantic_core-2.41.5-cp314-cp314t-musllinux_1_1_aarch64.whl", hash = "sha256:a39455728aabd58ceabb03c90e12f71fd30fa69615760a075b9fec596456ccc3", size = 2129560, upload-time = "2025-11-04T13:41:47.474Z" }, + { url = "https://files.pythonhosted.org/packages/3a/b1/6c990ac65e3b4c079a4fb9f5b05f5b013afa0f4ed6780a3dd236d2cbdc64/pydantic_core-2.41.5-cp314-cp314t-musllinux_1_1_armv7l.whl", hash = "sha256:239edca560d05757817c13dc17c50766136d21f7cd0fac50295499ae24f90fdf", size = 2329244, upload-time = "2025-11-04T13:41:49.992Z" }, + { url = "https://files.pythonhosted.org/packages/d9/02/3c562f3a51afd4d88fff8dffb1771b30cfdfd79befd9883ee094f5b6c0d8/pydantic_core-2.41.5-cp314-cp314t-musllinux_1_1_x86_64.whl", hash = "sha256:2a5e06546e19f24c6a96a129142a75cee553cc018ffee48a460059b1185f4470", size = 2331955, upload-time = "2025-11-04T13:41:54.079Z" }, + { url = "https://files.pythonhosted.org/packages/5c/96/5fb7d8c3c17bc8c62fdb031c47d77a1af698f1d7a406b0f79aaa1338f9ad/pydantic_core-2.41.5-cp314-cp314t-win32.whl", hash = "sha256:b4ececa40ac28afa90871c2cc2b9ffd2ff0bf749380fbdf57d165fd23da353aa", size = 1988906, upload-time = "2025-11-04T13:41:56.606Z" }, + { url = "https://files.pythonhosted.org/packages/22/ed/182129d83032702912c2e2d8bbe33c036f342cc735737064668585dac28f/pydantic_core-2.41.5-cp314-cp314t-win_amd64.whl", hash = "sha256:80aa89cad80b32a912a65332f64a4450ed00966111b6615ca6816153d3585a8c", size = 1981607, upload-time = "2025-11-04T13:41:58.889Z" }, + { url = "https://files.pythonhosted.org/packages/9f/ed/068e41660b832bb0b1aa5b58011dea2a3fe0ba7861ff38c4d4904c1c1a99/pydantic_core-2.41.5-cp314-cp314t-win_arm64.whl", hash = "sha256:35b44f37a3199f771c3eaa53051bc8a70cd7b54f333531c59e29fd4db5d15008", size = 1974769, upload-time = "2025-11-04T13:42:01.186Z" }, + { url = "https://files.pythonhosted.org/packages/09/32/59b0c7e63e277fa7911c2fc70ccfb45ce4b98991e7ef37110663437005af/pydantic_core-2.41.5-graalpy312-graalpy250_312_native-macosx_10_12_x86_64.whl", hash = "sha256:7da7087d756b19037bc2c06edc6c170eeef3c3bafcb8f532ff17d64dc427adfd", size = 2110495, upload-time = "2025-11-04T13:42:49.689Z" }, + { url = "https://files.pythonhosted.org/packages/aa/81/05e400037eaf55ad400bcd318c05bb345b57e708887f07ddb2d20e3f0e98/pydantic_core-2.41.5-graalpy312-graalpy250_312_native-macosx_11_0_arm64.whl", hash = "sha256:aabf5777b5c8ca26f7824cb4a120a740c9588ed58df9b2d196ce92fba42ff8dc", size = 1915388, upload-time = "2025-11-04T13:42:52.215Z" }, + { url = "https://files.pythonhosted.org/packages/6e/0d/e3549b2399f71d56476b77dbf3cf8937cec5cd70536bdc0e374a421d0599/pydantic_core-2.41.5-graalpy312-graalpy250_312_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c007fe8a43d43b3969e8469004e9845944f1a80e6acd47c150856bb87f230c56", size = 1942879, upload-time = "2025-11-04T13:42:56.483Z" }, + { url = "https://files.pythonhosted.org/packages/f7/07/34573da085946b6a313d7c42f82f16e8920bfd730665de2d11c0c37a74b5/pydantic_core-2.41.5-graalpy312-graalpy250_312_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:76d0819de158cd855d1cbb8fcafdf6f5cf1eb8e470abe056d5d161106e38062b", size = 2139017, upload-time = "2025-11-04T13:42:59.471Z" }, ] [[package]] @@ -5728,14 +5813,14 @@ wheels = [ [[package]] name = "safehttpx" -version = "0.1.6" +version = "0.1.7" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "httpx" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/67/4c/19db75e6405692b2a96af8f06d1258f8aa7290bdc35ac966f03e207f6d7f/safehttpx-0.1.6.tar.gz", hash = "sha256:b356bfc82cee3a24c395b94a2dbeabbed60aff1aa5fa3b5fe97c4f2456ebce42", size = 9987, upload-time = "2024-12-02T18:44:10.226Z" } +sdist = { url = "https://files.pythonhosted.org/packages/89/d1/4282284d9cf1ee873607a46442da977fc3c985059315ab23610be31d5885/safehttpx-0.1.7.tar.gz", hash = "sha256:db201c0978c41eddb8bb480f3eee59dd67304fdd91646035e9d9a720049a9d23", size = 10385, upload-time = "2025-10-24T18:30:09.783Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/4d/c0/1108ad9f01567f66b3154063605b350b69c3c9366732e09e45f9fd0d1deb/safehttpx-0.1.6-py3-none-any.whl", hash = "sha256:407cff0b410b071623087c63dd2080c3b44dc076888d8c5823c00d1e58cb381c", size = 8692, upload-time = "2024-12-02T18:44:08.555Z" }, + { url = "https://files.pythonhosted.org/packages/2e/a3/0f0b7d78e2f1eb9e8e1afbff1d2bff8d60144aee17aca51c065b516743dd/safehttpx-0.1.7-py3-none-any.whl", hash = "sha256:c4f4a162db6993464d7ca3d7cc4af0ffc6515a606dfd220b9f82c6945d869cde", size = 8959, upload-time = "2025-10-24T18:30:08.733Z" }, ] [[package]] @@ -6111,22 +6196,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/e7/9c/0e6afc12c269578be5c0c1c9f4b49a8d32770a080260c333ac04cc1c832d/soupsieve-2.7-py3-none-any.whl", hash = "sha256:6e60cc5c1ffaf1cebcc12e8188320b72071e922c2e897f737cadce79ad5d30c4", size = 36677, upload-time = "2025-04-20T18:50:07.196Z" }, ] -[[package]] -name = "soxr" -version = "0.5.0.post1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "numpy" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/02/c0/4429bf9b3be10e749149e286aa5c53775399ec62891c6b970456c6dca325/soxr-0.5.0.post1.tar.gz", hash = "sha256:7092b9f3e8a416044e1fa138c8172520757179763b85dc53aa9504f4813cff73", size = 170853, upload-time = "2024-08-31T03:43:33.058Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/5d/e3/d422d279e51e6932e7b64f1170a4f61a7ee768e0f84c9233a5b62cd2c832/soxr-0.5.0.post1-cp312-abi3-macosx_10_14_x86_64.whl", hash = "sha256:fef509466c9c25f65eae0ce1e4b9ac9705d22c6038c914160ddaf459589c6e31", size = 199993, upload-time = "2024-08-31T03:43:17.24Z" }, - { url = "https://files.pythonhosted.org/packages/20/f1/88adaca3c52e03bcb66b63d295df2e2d35bf355d19598c6ce84b20be7fca/soxr-0.5.0.post1-cp312-abi3-macosx_11_0_arm64.whl", hash = "sha256:4704ba6b13a3f1e41d12acf192878384c1c31f71ce606829c64abdf64a8d7d32", size = 156373, upload-time = "2024-08-31T03:43:18.633Z" }, - { url = "https://files.pythonhosted.org/packages/b8/38/bad15a9e615215c8219652ca554b601663ac3b7ac82a284aca53ec2ff48c/soxr-0.5.0.post1-cp312-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bd052a66471a7335b22a6208601a9d0df7b46b8d087dce4ff6e13eed6a33a2a1", size = 216564, upload-time = "2024-08-31T03:43:20.789Z" }, - { url = "https://files.pythonhosted.org/packages/e1/1a/569ea0420a0c4801c2c8dd40d8d544989522f6014d51def689125f3f2935/soxr-0.5.0.post1-cp312-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a3f16810dd649ab1f433991d2a9661e9e6a116c2b4101039b53b3c3e90a094fc", size = 248455, upload-time = "2024-08-31T03:43:22.165Z" }, - { url = "https://files.pythonhosted.org/packages/bc/10/440f1ba3d4955e0dc740bbe4ce8968c254a3d644d013eb75eea729becdb8/soxr-0.5.0.post1-cp312-abi3-win_amd64.whl", hash = "sha256:b1be9fee90afb38546bdbd7bde714d1d9a8c5a45137f97478a83b65e7f3146f6", size = 164937, upload-time = "2024-08-31T03:43:23.671Z" }, -] - [[package]] name = "sphinx" version = "8.2.3" @@ -6316,15 +6385,15 @@ wheels = [ [[package]] name = "starlette" -version = "0.47.2" +version = "0.50.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "anyio" }, { name = "typing-extensions", marker = "python_full_version < '3.13'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/04/57/d062573f391d062710d4088fa1369428c38d51460ab6fedff920efef932e/starlette-0.47.2.tar.gz", hash = "sha256:6ae9aa5db235e4846decc1e7b79c4f346adf41e9777aebeb49dfd09bbd7023d8", size = 2583948, upload-time = "2025-07-20T17:31:58.522Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ba/b8/73a0e6a6e079a9d9cfa64113d771e421640b6f679a52eeb9b32f72d871a1/starlette-0.50.0.tar.gz", hash = "sha256:a2a17b22203254bcbc2e1f926d2d55f3f9497f769416b3190768befe598fa3ca", size = 2646985, upload-time = "2025-11-01T15:25:27.516Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/f7/1f/b876b1f83aef204198a42dc101613fefccb32258e5428b5f9259677864b4/starlette-0.47.2-py3-none-any.whl", hash = "sha256:c5847e96134e5c5371ee9fac6fdf1a67336d5815e09eb2a01fdb57a351ef915b", size = 72984, upload-time = "2025-07-20T17:31:56.738Z" }, + { url = "https://files.pythonhosted.org/packages/d9/52/1064f510b141bd54025f9b55105e26d1fa970b9be67ad766380a3c9b74b0/starlette-0.50.0-py3-none-any.whl", hash = "sha256:9e5391843ec9b6e472eed1365a78c8098cfceb7a74bfd4d6b1c0c0095efb3bca", size = 74033, upload-time = "2025-11-01T15:25:25.461Z" }, ] [[package]] @@ -6572,11 +6641,11 @@ dependencies = [ { name = "huggingface-hub" }, { name = "pyyaml" }, { name = "safetensors" }, - { name = "torch", version = "2.8.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, - { name = "torch", version = "2.8.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform != 'darwin'" }, - { name = "torchvision", version = "0.23.0", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "platform_machine == 'aarch64' and sys_platform == 'linux'" }, - { name = "torchvision", version = "0.23.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, - { name = "torchvision", version = "0.23.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "(platform_machine != 'aarch64' and sys_platform == 'linux') or (sys_platform != 'darwin' and sys_platform != 'linux')" }, + { name = "torch", version = "2.9.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, + { name = "torch", version = "2.9.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform != 'darwin'" }, + { name = "torchvision", version = "0.24.0", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "platform_machine == 'aarch64' and sys_platform == 'linux'" }, + { name = "torchvision", version = "0.24.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, + { name = "torchvision", version = "0.24.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "(platform_machine != 'aarch64' and sys_platform == 'linux') or (sys_platform != 'darwin' and sys_platform != 'linux')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/94/f6/4d7a8c261341fa6ad281920618739f2a650f41043afcedb570f24e99a776/timm-1.0.16.tar.gz", hash = "sha256:a3b8130dd2cb8dc3b9f5e3d09ab6d677a6315a8695fd5264eb6d52a4a46c1044", size = 2339999, upload-time = "2025-06-26T17:09:44.208Z" } wheels = [ @@ -6619,7 +6688,7 @@ wheels = [ [[package]] name = "torch" -version = "2.8.0" +version = "2.9.0" source = { registry = "https://pypi.org/simple" } resolution-markers = [ "python_full_version >= '3.13' and sys_platform == 'darwin'", @@ -6635,14 +6704,16 @@ dependencies = [ { name = "typing-extensions", marker = "sys_platform == 'darwin'" }, ] wheels = [ - { url = "https://files.pythonhosted.org/packages/be/66/5c9a321b325aaecb92d4d1855421e3a055abd77903b7dab6575ca07796db/torch-2.8.0-cp312-none-macosx_11_0_arm64.whl", hash = "sha256:619c2869db3ada2c0105487ba21b5008defcc472d23f8b80ed91ac4a380283b0", size = 73630478, upload-time = "2025-08-06T14:53:57.144Z" }, - { url = "https://files.pythonhosted.org/packages/de/69/8b7b13bba430f5e21d77708b616f767683629fc4f8037564a177d20f90ed/torch-2.8.0-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:1a62a1ec4b0498930e2543535cf70b1bef8c777713de7ceb84cd79115f553767", size = 73915128, upload-time = "2025-08-06T14:54:34.769Z" }, - { url = "https://files.pythonhosted.org/packages/04/6e/650bb7f28f771af0cb791b02348db8b7f5f64f40f6829ee82aa6ce99aabe/torch-2.8.0-cp313-none-macosx_11_0_arm64.whl", hash = "sha256:7b677e17f5a3e69fdef7eb3b9da72622f8d322692930297e4ccb52fefc6c8211", size = 73632395, upload-time = "2025-08-06T14:55:28.645Z" }, + { url = "https://files.pythonhosted.org/packages/dd/5f/b85bd8c05312d71de9402bf5868d217c38827cfd09d8f8514e5be128a52b/torch-2.9.0-cp312-none-macosx_11_0_arm64.whl", hash = "sha256:33f58e9a102a91259af289d50525c30323b5c9ae1d31322b6447c0814da68695", size = 74478983, upload-time = "2025-10-15T15:46:39.406Z" }, + { url = "https://files.pythonhosted.org/packages/66/e8/fc414d8656250ee46120b44836ffbb3266343db424b3e18ca79ebbf69d4f/torch-2.9.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:e4e5b5cba837a2a8d1a497ba9a58dae46fa392593eaa13b871c42f71847503a5", size = 74830362, upload-time = "2025-10-15T15:46:48.983Z" }, + { url = "https://files.pythonhosted.org/packages/ff/c3/a91f96ec74347fa5fd24453fa514bc61c61ecc79196fa760b012a1873d96/torch-2.9.0-cp313-none-macosx_11_0_arm64.whl", hash = "sha256:f8877779cf56d1ce431a7636703bdb13307f5960bb1af49716d8b179225e0e6a", size = 74480732, upload-time = "2025-10-15T15:47:38.002Z" }, + { url = "https://files.pythonhosted.org/packages/5c/73/9f70af34b334a7e0ef496ceec96b7ec767bd778ea35385ce6f77557534d1/torch-2.9.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:7e614fae699838038d888729f82b687c03413c5989ce2a9481f9a7e7a396e0bb", size = 74433037, upload-time = "2025-10-15T15:47:41.894Z" }, + { url = "https://files.pythonhosted.org/packages/83/36/74f8c051f785500396e42f93542422422dfd874a174f21f8d955d36e5d64/torch-2.9.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:71d9309aee457bbe0b164bce2111cd911c4ed4e847e65d5077dbbcd3aba6befc", size = 74823353, upload-time = "2025-10-15T15:49:16.59Z" }, ] [[package]] name = "torch" -version = "2.8.0+cu129" +version = "2.9.0+cu129" source = { registry = "https://download.pytorch.org/whl/cu129" } resolution-markers = [ "python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux'", @@ -6661,67 +6732,82 @@ dependencies = [ { name = "fsspec", marker = "sys_platform != 'darwin'" }, { name = "jinja2", marker = "sys_platform != 'darwin'" }, { name = "networkx", marker = "sys_platform != 'darwin'" }, - { name = "nvidia-cublas-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, - { name = "nvidia-cuda-cupti-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, - { name = "nvidia-cuda-nvrtc-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, - { name = "nvidia-cuda-runtime-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, - { name = "nvidia-cudnn-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, - { name = "nvidia-cufft-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, - { name = "nvidia-cufile-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, - { name = "nvidia-curand-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, - { name = "nvidia-cusolver-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, - { name = "nvidia-cusparse-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, - { name = "nvidia-cusparselt-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, - { name = "nvidia-nccl-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, - { name = "nvidia-nvjitlink-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, - { name = "nvidia-nvtx-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, + { name = "nvidia-cublas-cu12", marker = "sys_platform == 'linux'" }, + { name = "nvidia-cuda-cupti-cu12", marker = "sys_platform == 'linux'" }, + { name = "nvidia-cuda-nvrtc-cu12", marker = "sys_platform == 'linux'" }, + { name = "nvidia-cuda-runtime-cu12", marker = "sys_platform == 'linux'" }, + { name = "nvidia-cudnn-cu12", marker = "sys_platform == 'linux'" }, + { name = "nvidia-cufft-cu12", marker = "sys_platform == 'linux'" }, + { name = "nvidia-cufile-cu12", marker = "sys_platform == 'linux'" }, + { name = "nvidia-curand-cu12", marker = "sys_platform == 'linux'" }, + { name = "nvidia-cusolver-cu12", marker = "sys_platform == 'linux'" }, + { name = "nvidia-cusparse-cu12", marker = "sys_platform == 'linux'" }, + { name = "nvidia-cusparselt-cu12", marker = "sys_platform == 'linux'" }, + { name = "nvidia-nccl-cu12", marker = "sys_platform == 'linux'" }, + { name = "nvidia-nvjitlink-cu12", marker = "sys_platform == 'linux'" }, + { name = "nvidia-nvshmem-cu12", marker = "sys_platform == 'linux'" }, + { name = "nvidia-nvtx-cu12", marker = "sys_platform == 'linux'" }, { name = "setuptools", marker = "sys_platform != 'darwin'" }, { name = "sympy", marker = "sys_platform != 'darwin'" }, - { name = "triton", version = "3.4.0", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform == 'linux'" }, + { name = "triton", version = "3.5.0", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform == 'linux'" }, { name = "typing-extensions", marker = "sys_platform != 'darwin'" }, ] wheels = [ - { url = "https://download.pytorch.org/whl/cu129/torch-2.8.0%2Bcu129-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:692fe6e513b667f789a543fa9b1baba58e77a46d5c8629764ca0c00a56823e1f" }, - { url = "https://download.pytorch.org/whl/cu129/torch-2.8.0%2Bcu129-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:02c7258e917f3043c978b53acf6f02b818db0d0d85db0e58ae578af333b9b4e2" }, - { url = "https://download.pytorch.org/whl/cu129/torch-2.8.0%2Bcu129-cp312-cp312-win_amd64.whl", hash = "sha256:2bc729898e422b9f3da54349eed98f2f0b5dd415434508ee2ab2a13fb021815d" }, - { url = "https://download.pytorch.org/whl/cu129/torch-2.8.0%2Bcu129-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:ad2d64316635e7ab06f6c973a252526d59a92a2045825c102f876914a72304d0" }, - { url = "https://download.pytorch.org/whl/cu129/torch-2.8.0%2Bcu129-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:563740167be2189b71530b503f0c8a8d7a8267dd49d4de6f9c5f1d23fbe237df" }, - { url = "https://download.pytorch.org/whl/cu129/torch-2.8.0%2Bcu129-cp313-cp313-win_amd64.whl", hash = "sha256:2cef066f9759ff4d7868a8c3695aa60d9a878598acb3685bb1ef2fdac29dcd68" }, - { url = "https://download.pytorch.org/whl/cu129/torch-2.8.0%2Bcu129-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:2982bf34249cbb38f1090e71ad7097a214a21023ccdc0413961986ab7d0396e6" }, - { url = "https://download.pytorch.org/whl/cu129/torch-2.8.0%2Bcu129-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:6344260959ebcfa6dae458e1c4365195bcfdf00f4f1f1ad438cbaf50756829ed" }, - { url = "https://download.pytorch.org/whl/cu129/torch-2.8.0%2Bcu129-cp313-cp313t-win_amd64.whl", hash = "sha256:9c0cd89e54ce44ce3208c5cf4163773b9cda0067e4b48cfcac56a4e04af52040" }, + { url = "https://download.pytorch.org/whl/cu129/torch-2.9.0%2Bcu129-cp312-cp312-manylinux_2_28_aarch64.whl" }, + { url = "https://download.pytorch.org/whl/cu129/torch-2.9.0%2Bcu129-cp312-cp312-manylinux_2_28_x86_64.whl" }, + { url = "https://download.pytorch.org/whl/cu129/torch-2.9.0%2Bcu129-cp312-cp312-win_amd64.whl" }, + { url = "https://download.pytorch.org/whl/cu129/torch-2.9.0%2Bcu129-cp313-cp313-manylinux_2_28_aarch64.whl" }, + { url = "https://download.pytorch.org/whl/cu129/torch-2.9.0%2Bcu129-cp313-cp313-manylinux_2_28_x86_64.whl" }, + { url = "https://download.pytorch.org/whl/cu129/torch-2.9.0%2Bcu129-cp313-cp313-win_amd64.whl" }, + { url = "https://download.pytorch.org/whl/cu129/torch-2.9.0%2Bcu129-cp313-cp313t-manylinux_2_28_aarch64.whl" }, + { url = "https://download.pytorch.org/whl/cu129/torch-2.9.0%2Bcu129-cp313-cp313t-manylinux_2_28_x86_64.whl" }, + { url = "https://download.pytorch.org/whl/cu129/torch-2.9.0%2Bcu129-cp313-cp313t-win_amd64.whl" }, + { url = "https://download.pytorch.org/whl/cu129/torch-2.9.0%2Bcu129-cp314-cp314-manylinux_2_28_aarch64.whl" }, + { url = "https://download.pytorch.org/whl/cu129/torch-2.9.0%2Bcu129-cp314-cp314-manylinux_2_28_x86_64.whl" }, + { url = "https://download.pytorch.org/whl/cu129/torch-2.9.0%2Bcu129-cp314-cp314-win_amd64.whl" }, + { url = "https://download.pytorch.org/whl/cu129/torch-2.9.0%2Bcu129-cp314-cp314t-manylinux_2_28_aarch64.whl" }, + { url = "https://download.pytorch.org/whl/cu129/torch-2.9.0%2Bcu129-cp314-cp314t-manylinux_2_28_x86_64.whl" }, + { url = "https://download.pytorch.org/whl/cu129/torch-2.9.0%2Bcu129-cp314-cp314t-win_amd64.whl" }, ] [[package]] name = "torchao" -version = "0.12.0" +version = "0.14.1" source = { registry = "https://pypi.org/simple" } wheels = [ - { url = "https://files.pythonhosted.org/packages/72/5e/f5df5e0bbc7d84e5da3b4599b5bad58f4a6657b22bcae64dd741faee80ab/torchao-0.12.0-cp39-abi3-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:326ea2800cc7d9d50f0d17742ad923e5c6d4c4dd5942558f4ed13db00bdebc7c", size = 6777967, upload-time = "2025-07-17T17:50:13.567Z" }, - { url = "https://files.pythonhosted.org/packages/6c/5f/6bf9b5bed6d31e286516d23e1db7320d2ccfbf1b2234749833ad1e3d25a5/torchao-0.12.0-py3-none-any.whl", hash = "sha256:103f2a9164d2e4f705332af1aafbb8473eadd14d9164e45857ca187cde1f13d2", size = 962232, upload-time = "2025-07-17T17:50:15.119Z" }, + { url = "https://files.pythonhosted.org/packages/91/56/19abb32bbdc55d9fdebf8d6315a8f7d8ae10e387a91c631abd92afe0056b/torchao-0.14.1-cp310-abi3-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:50f68db5e41952e88daa383fc2f358541e617654f388f508d5c7580c3bee9447", size = 7197175, upload-time = "2025-10-24T01:02:59.223Z" }, + { url = "https://files.pythonhosted.org/packages/41/a7/b888635fbb6ae951cffd41e1318966cbed96ec762b4999815ab68269e23f/torchao-0.14.1-py3-none-any.whl", hash = "sha256:c9896e14531817bc2ca6847b3fe71c42592ab80a43628b36668b2d6d6713fb5b", size = 1067611, upload-time = "2025-10-24T01:03:01.357Z" }, ] [[package]] name = "torchaudio" -version = "2.8.0" +version = "2.9.0" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "torch", version = "2.8.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, - { name = "torch", version = "2.8.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform != 'darwin'" }, + { name = "torch", version = "2.9.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, + { name = "torch", version = "2.9.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform != 'darwin'" }, ] wheels = [ - { url = "https://files.pythonhosted.org/packages/ac/cc/c2e2a3eb6ee956f73c68541e439916f8146170ea9cc61e72adea5c995312/torchaudio-2.8.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ddef94bf181e6447cbb05f38beaca8f6c5bb8d2b9ddced1aa3452025b9fc70d3", size = 1856736, upload-time = "2025-08-06T14:58:36.3Z" }, - { url = "https://files.pythonhosted.org/packages/c7/0d/24dad878784f1edd62862f27173781669f0c71eb46368636787d1e364188/torchaudio-2.8.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:862e2e40bf09d865e5df080a84c1a39bbcef40e43140f4b1737eb3a389d3b38f", size = 1692930, upload-time = "2025-08-06T14:58:41.312Z" }, - { url = "https://files.pythonhosted.org/packages/c2/a6/84d80f34472503e9eb82245d7df501c59602d75d7360e717fb9b84f91c5e/torchaudio-2.8.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:93a8583f280fe83ba021aa713319381ea71362cc87b67ee38e97a43cb2254aee", size = 4014607, upload-time = "2025-08-06T14:58:47.234Z" }, - { url = "https://files.pythonhosted.org/packages/43/ab/96ad33afa320738a7cfb4b51ba97e2f3cfb1e04ae3115d5057655103ba4f/torchaudio-2.8.0-cp312-cp312-win_amd64.whl", hash = "sha256:4b82cacd1b8ccd543b1149d8cab257a40dfda8119023d2e3a96c66349c84bffb", size = 2499890, upload-time = "2025-08-06T14:58:55.066Z" }, - { url = "https://files.pythonhosted.org/packages/3b/ea/2a68259c4dbb5fe44ebfdcfa40b115010d8c677221a7ef0f5577f3c4f5f1/torchaudio-2.8.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f851d32e94ca05e470f0c60e25726ec1e0eb71cb2ca5a0206b7fd03272ccc3c8", size = 1857045, upload-time = "2025-08-06T14:58:51.984Z" }, - { url = "https://files.pythonhosted.org/packages/0d/a3/1c79a8ef29fe403b83bdfc033db852bc2a888b80c406325e5c6fb37a7f2d/torchaudio-2.8.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:09535a9b727c0793cd07c1ace99f3f353626281bcc3e30c2f2314e3ebc9d3f96", size = 1692755, upload-time = "2025-08-06T14:58:50.868Z" }, - { url = "https://files.pythonhosted.org/packages/49/df/61941198e9ac6bcebfdd57e1836e4f3c23409308e3d8d7458f0198a6a366/torchaudio-2.8.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:d2a85b124494736241884372fe1c6dd8c15e9bc1931bd325838c5c00238c7378", size = 4013897, upload-time = "2025-08-06T14:59:01.66Z" }, - { url = "https://files.pythonhosted.org/packages/c3/ab/7175d35a4bbc4a465a9f1388571842f16eb6dec5069d7ea9c8c2d7b5b401/torchaudio-2.8.0-cp313-cp313-win_amd64.whl", hash = "sha256:c1b5139c840367a7855a062a06688a416619f6fd2ca46d9b9299b49a7d133dfd", size = 2500085, upload-time = "2025-08-06T14:58:44.95Z" }, - { url = "https://files.pythonhosted.org/packages/34/1a/69b9f8349d9d57953d5e7e445075cbf74000173fb5f5d5d9e9d59415fc63/torchaudio-2.8.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:68df9c9068984edff8065c2b6656725e6114fe89281b0cf122c7505305fc98a4", size = 1935600, upload-time = "2025-08-06T14:58:46.051Z" }, - { url = "https://files.pythonhosted.org/packages/71/76/40fec21b65bccfdc5c8cdb9d511033ab07a7ad4b05f0a5b07f85c68279fc/torchaudio-2.8.0-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:1951f10ed092f2dda57634f6a3950ef21c9d9352551aa84a9fccd51bbda18095", size = 1704199, upload-time = "2025-08-06T14:58:43.594Z" }, - { url = "https://files.pythonhosted.org/packages/8e/53/95c3363413c2f2009f805144160b093a385f641224465fbcd717449c71fb/torchaudio-2.8.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:4f7d97494698d98854129349b12061e8c3398d33bd84c929fa9aed5fd1389f73", size = 4020596, upload-time = "2025-08-06T14:59:03.031Z" }, - { url = "https://files.pythonhosted.org/packages/52/27/7fc2d7435af044ffbe0b9b8e98d99eac096d43f128a5cde23c04825d5dcf/torchaudio-2.8.0-cp313-cp313t-win_amd64.whl", hash = "sha256:d4a715d09ac28c920d031ee1e60ecbc91e8a5079ad8c61c0277e658436c821a6", size = 2549553, upload-time = "2025-08-06T14:59:00.019Z" }, + { url = "https://files.pythonhosted.org/packages/b7/63/3c0ede3aa3d19a8a6698ddd107fa88660549360b51bf8ce2717cd498d800/torchaudio-2.9.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ab4cbcccfd873b0fb41fcb39c9869e59ef84bb95b093f6f58e2d05172a7500d2", size = 809116, upload-time = "2025-10-15T15:52:00.911Z" }, + { url = "https://files.pythonhosted.org/packages/be/d5/25e58745defe9d05893d3cba5c0e1a76aeaac503ac5ec4d9f83c871df71c/torchaudio-2.9.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:7f93388b6e536c14d6015b6f75277a8b45efc532f61b35adc1ed06c98a86003e", size = 476020, upload-time = "2025-10-15T15:51:59.967Z" }, + { url = "https://files.pythonhosted.org/packages/f0/9c/58b8b49dfba2ae85e41ca86b0c52de45bbbea01987490de219c99c523a58/torchaudio-2.9.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:508318a2130b40ad51378f90caf8727a4bd3ac2b296f2b90c900b44e6068a940", size = 2059901, upload-time = "2025-10-15T15:51:54.634Z" }, + { url = "https://files.pythonhosted.org/packages/d7/eb/58b05f75d12f69ccc460893a20c999da082e063082120ed06e05cca3a053/torchaudio-2.9.0-cp312-cp312-win_amd64.whl", hash = "sha256:82117e3a605f2959dc09b4cd8a11178d6e92727d5f85e5d4f9fe47502f84ee96", size = 665350, upload-time = "2025-10-15T15:52:08.384Z" }, + { url = "https://files.pythonhosted.org/packages/6c/66/974371d4e4042d186931b72365817d9d3a509f2bc570888a48612448c060/torchaudio-2.9.0-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:5549c25db4c2da306e179e9aa99980e7f5b1826a8d2d7de08125f3943a5620b2", size = 809149, upload-time = "2025-10-15T15:52:16.133Z" }, + { url = "https://files.pythonhosted.org/packages/09/61/8f7b875a2d879666f2f121e458817703e5499988a86105d2a25afecb9987/torchaudio-2.9.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:1eb0d1dac8cefbc4a54afb21aac72a1c25a91f73e9c3bd85f6684930a4a1be5d", size = 475699, upload-time = "2025-10-15T15:52:06.349Z" }, + { url = "https://files.pythonhosted.org/packages/26/db/10ba200f90b76f7b859f46b5ba30cdded69f71bcb0fe3c59bb215532cd2b/torchaudio-2.9.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:266d304dd4ed738a10148b020e3d066e81272ee851f6f92193fe549df96af868", size = 2060349, upload-time = "2025-10-15T15:52:09.329Z" }, + { url = "https://files.pythonhosted.org/packages/be/53/5f9adbea55e48f91532ee4f041283900939ee5cb6bc1395587214e67a629/torchaudio-2.9.0-cp313-cp313-win_amd64.whl", hash = "sha256:7d3926129389d934aa048bd6c6f68fbf3ef26828ebbbbeac99794ea00e90dc1c", size = 665310, upload-time = "2025-10-15T15:52:05.101Z" }, + { url = "https://files.pythonhosted.org/packages/e3/41/88b989aab1e11134d858350196fcf3afd4c2a6821d74efb3c1b9ab23b8cf/torchaudio-2.9.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:967d664477fb91dffad82ef64ea3695801c0cc35304baec71be875b569440872", size = 813491, upload-time = "2025-10-15T15:52:10.346Z" }, + { url = "https://files.pythonhosted.org/packages/1a/c1/8d0481fc921cb72d6cadbacd338fa71db0052e8fdb1bf33127c694bbf257/torchaudio-2.9.0-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:276871d6f5fed5268a87c5da303a13ca2e06b9d29a4c44663b960f0a2e2f46d7", size = 477749, upload-time = "2025-10-15T15:52:04.189Z" }, + { url = "https://files.pythonhosted.org/packages/cf/d3/d085cd76413b9f3f792e61933235d982caf5cdbdf60f0e4fdae71879becc/torchaudio-2.9.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:3d5657d929d6ca07b08cfa005988f2ea8caacf9af42f20bc7eff10f88812ce30", size = 2062165, upload-time = "2025-10-15T15:52:12.784Z" }, + { url = "https://files.pythonhosted.org/packages/f2/41/d9876f5b19b4b2f98a6131d1a98ee6d5d8f707c01311bbba7cc3bb02f4bf/torchaudio-2.9.0-cp313-cp313t-win_amd64.whl", hash = "sha256:3fe9cac0c2ee713e07f8c88d09528d55e0fa74987b0122e27911dfb720f39054", size = 669260, upload-time = "2025-10-15T15:52:13.8Z" }, + { url = "https://files.pythonhosted.org/packages/97/ad/db50c49d73d1904152bbaaaa281e03a41ec519dd6a9df48cc69ea5cd48b9/torchaudio-2.9.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:3fa41447a21103fcde930b4ad2bd2634565a0becff1a5425535b4f0116c0d5df", size = 810532, upload-time = "2025-10-15T15:52:17.197Z" }, + { url = "https://files.pythonhosted.org/packages/a8/00/aa8ed83a169a87af72d6cdc17e0350f418b3cba3bd7397b0cca873274789/torchaudio-2.9.0-cp314-cp314-manylinux_2_28_aarch64.whl", hash = "sha256:69f46f21bd67e90ade33a7d0f0cf98270cd61b98f5f8249d3893be0a16b3e31f", size = 475864, upload-time = "2025-10-15T15:52:11.446Z" }, + { url = "https://files.pythonhosted.org/packages/4b/bb/7ca64ed0556afa08d3a7a47c887ee9b1c4f3eebd193baf47505b6fac479c/torchaudio-2.9.0-cp314-cp314-manylinux_2_28_x86_64.whl", hash = "sha256:631b0f43564a25e27e615b217454c334f52162679f39ae10b9fa7562ed587dfc", size = 2060360, upload-time = "2025-10-15T15:52:14.992Z" }, + { url = "https://files.pythonhosted.org/packages/63/13/4407b79ddedc9ea95d88fa54c3758df21f0117683fceba4bacd98ceaa772/torchaudio-2.9.0-cp314-cp314-win_amd64.whl", hash = "sha256:ed6df9f14431e13498b984dc87df1aabb2156b9ce0ce7268ce4a61650197310a", size = 665048, upload-time = "2025-10-15T15:52:19.116Z" }, + { url = "https://files.pythonhosted.org/packages/7d/1a/d3cd6b67b5c68ff4211be923978d1d7c10ea2f44f826d4cd15b775f52c11/torchaudio-2.9.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:93358d8f2f24969ba3f368f4eec33295df830af54836c7fd3336740228f9af16", size = 813499, upload-time = "2025-10-15T15:52:20.412Z" }, + { url = "https://files.pythonhosted.org/packages/ab/65/a35a182519b40dcd2cedaf5fdcac6f724ae2451c534dfcece6ff5f85f983/torchaudio-2.9.0-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:742143d9d62769bc4b9a2977ca4f4720e0a5e922bdc5df585c155e0a1f545461", size = 477752, upload-time = "2025-10-15T15:52:18.14Z" }, + { url = "https://files.pythonhosted.org/packages/6f/1c/30272b71ae08817eaca00bb856ebef25dd44041329579903c1915b57f0c9/torchaudio-2.9.0-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:0a234634e1142fb2652c49e935a98b4d9656fd0af9e4aa14b1b05a80c3cf8e78", size = 2062173, upload-time = "2025-10-15T15:52:22.724Z" }, + { url = "https://files.pythonhosted.org/packages/b9/d6/d007f6bc55a16a86e64e9bba295b90485011cc6a113d8f56b503b4f34a7d/torchaudio-2.9.0-cp314-cp314t-win_amd64.whl", hash = "sha256:cbf5d6da8fd2ed545c78218b39fd6aacaa4dd5e265c5f85b248a2fac223f0bd6", size = 669272, upload-time = "2025-10-15T15:52:21.696Z" }, ] [[package]] @@ -6741,8 +6827,8 @@ version = "0.11.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "requests" }, - { name = "torch", version = "2.8.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, - { name = "torch", version = "2.8.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform != 'darwin'" }, + { name = "torch", version = "2.9.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, + { name = "torch", version = "2.9.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform != 'darwin'" }, { name = "urllib3" }, ] wheels = [ @@ -6754,10 +6840,12 @@ name = "torchprofile" version = "0.0.4" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "numpy", marker = "sys_platform != 'darwin'" }, - { name = "torch", version = "2.8.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform != 'darwin'" }, - { name = "torchvision", version = "0.23.0", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "platform_machine == 'aarch64' and sys_platform == 'linux'" }, - { name = "torchvision", version = "0.23.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "(platform_machine != 'aarch64' and sys_platform == 'linux') or (sys_platform != 'darwin' and sys_platform != 'linux')" }, + { name = "numpy" }, + { name = "torch", version = "2.9.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, + { name = "torch", version = "2.9.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform != 'darwin'" }, + { name = "torchvision", version = "0.24.0", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "platform_machine == 'aarch64' and sys_platform == 'linux'" }, + { name = "torchvision", version = "0.24.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, + { name = "torchvision", version = "0.24.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "(platform_machine != 'aarch64' and sys_platform == 'linux') or (sys_platform != 'darwin' and sys_platform != 'linux')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/6f/36/574c0c46e818533b78b3c09505211162918188325ab4165ef11a3f295755/torchprofile-0.0.4.tar.gz", hash = "sha256:96b6da17d752a06b02977e078aea95614893b31d4117dd5dcd081f30ce65611b", size = 4557, upload-time = "2021-06-22T04:58:03.592Z" } wheels = [ @@ -6766,7 +6854,7 @@ wheels = [ [[package]] name = "torchvision" -version = "0.23.0" +version = "0.24.0" source = { registry = "https://download.pytorch.org/whl/cu129" } resolution-markers = [ "python_full_version >= '3.13' and platform_machine == 'aarch64' and sys_platform == 'linux'", @@ -6775,17 +6863,19 @@ resolution-markers = [ dependencies = [ { name = "numpy", marker = "platform_machine == 'aarch64' and sys_platform == 'linux'" }, { name = "pillow", marker = "platform_machine == 'aarch64' and sys_platform == 'linux'" }, - { name = "torch", version = "2.8.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "platform_machine == 'aarch64' and sys_platform == 'linux'" }, + { name = "torch", version = "2.9.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "platform_machine == 'aarch64' and sys_platform == 'linux'" }, ] wheels = [ - { url = "https://download.pytorch.org/whl/cu129/torchvision-0.23.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:630f602db2c594c9cbc89b964d5fb4873adf4193805df65339b24cd3f4cf57f7" }, - { url = "https://download.pytorch.org/whl/cu129/torchvision-0.23.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:20f7e25a24f91d93d09398b80929dec805c4ee2f5527fad8eecd6e43dc5fd5d0" }, - { url = "https://download.pytorch.org/whl/cu129/torchvision-0.23.0-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:cb70cc000e6a398270044c3406a89ee8ab6157a4e81b5d40c5904e1d0e22e2f8" }, + { url = "https://download.pytorch.org/whl/cu129/torchvision-0.24.0-cp312-cp312-manylinux_2_28_aarch64.whl" }, + { url = "https://download.pytorch.org/whl/cu129/torchvision-0.24.0-cp313-cp313-manylinux_2_28_aarch64.whl" }, + { url = "https://download.pytorch.org/whl/cu129/torchvision-0.24.0-cp313-cp313t-manylinux_2_28_aarch64.whl" }, + { url = "https://download.pytorch.org/whl/cu129/torchvision-0.24.0-cp314-cp314-manylinux_2_28_aarch64.whl" }, + { url = "https://download.pytorch.org/whl/cu129/torchvision-0.24.0-cp314-cp314t-manylinux_2_28_aarch64.whl" }, ] [[package]] name = "torchvision" -version = "0.23.0" +version = "0.24.0" source = { registry = "https://pypi.org/simple" } resolution-markers = [ "python_full_version >= '3.13' and sys_platform == 'darwin'", @@ -6794,17 +6884,19 @@ resolution-markers = [ dependencies = [ { name = "numpy", marker = "sys_platform == 'darwin'" }, { name = "pillow", marker = "sys_platform == 'darwin'" }, - { name = "torch", version = "2.8.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, + { name = "torch", version = "2.9.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, ] wheels = [ - { url = "https://files.pythonhosted.org/packages/df/1d/0ea0b34bde92a86d42620f29baa6dcbb5c2fc85990316df5cb8f7abb8ea2/torchvision-0.23.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:e0e2c04a91403e8dd3af9756c6a024a1d9c0ed9c0d592a8314ded8f4fe30d440", size = 1856885, upload-time = "2025-08-06T14:58:06.503Z" }, - { url = "https://files.pythonhosted.org/packages/91/37/45a5b9407a7900f71d61b2b2f62db4b7c632debca397f205fdcacb502780/torchvision-0.23.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1c37e325e09a184b730c3ef51424f383ec5745378dc0eca244520aca29722600", size = 1856886, upload-time = "2025-08-06T14:58:05.491Z" }, - { url = "https://files.pythonhosted.org/packages/05/35/72f91ad9ac7c19a849dedf083d347dc1123f0adeb401f53974f84f1d04c8/torchvision-0.23.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:2df618e1143805a7673aaf82cb5720dd9112d4e771983156aaf2ffff692eebf9", size = 2047192, upload-time = "2025-08-06T14:58:11.813Z" }, + { url = "https://files.pythonhosted.org/packages/47/ef/81e4e69e02e2c4650b30e8c11c8974f946682a30e0ab7e9803a831beff76/torchvision-0.24.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c61d40bcd2e2451e932902a702ad495ba1ec6f279e90b1e15cef2bb55dc911e2", size = 1891726, upload-time = "2025-10-15T15:51:16.977Z" }, + { url = "https://files.pythonhosted.org/packages/4f/b5/b2008e4b77a8d6aada828dd0f6a438d8f94befa23fdd2d62fa0ac6e60113/torchvision-0.24.0-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:84d79cfc6457310107ce4d712de7a3d388b24484bc9aeded4a76d8f8e3a2813d", size = 1891722, upload-time = "2025-10-15T15:51:28.854Z" }, + { url = "https://files.pythonhosted.org/packages/7d/d7/3dd10830b047eeb46ae6b465474258d7b4fbb7d8872dca69bd42449f5c82/torchvision-0.24.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:6ab956a6e588623353e0f20d4b03eb1656cb4a3c75ca4dd8b4e32e01bc43271a", size = 2028355, upload-time = "2025-10-15T15:51:22.384Z" }, + { url = "https://files.pythonhosted.org/packages/1b/24/790a39645cc8c71bf442d54a76da9bda5caeb2a44c5f7e02498649cd99d4/torchvision-0.24.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:4bdfc85a5ed706421555f32cdc5e3ddb6d40bf65ef03a274ce3c176393e2904b", size = 2028335, upload-time = "2025-10-15T15:51:26.252Z" }, + { url = "https://files.pythonhosted.org/packages/08/f7/261d1353c611820541ecd43046b89da3f1ae998dc786e4288b890a009883/torchvision-0.24.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:68120e7e03c31900e499a10bb7fdd63cfd67f0054c9fa108e7e27f9cd372f315", size = 2028359, upload-time = "2025-10-15T15:51:32.119Z" }, ] [[package]] name = "torchvision" -version = "0.23.0+cu129" +version = "0.24.0+cu129" source = { registry = "https://download.pytorch.org/whl/cu129" } resolution-markers = [ "python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux'", @@ -6819,15 +6911,14 @@ resolution-markers = [ dependencies = [ { name = "numpy", marker = "(platform_machine != 'aarch64' and sys_platform == 'linux') or (sys_platform != 'darwin' and sys_platform != 'linux')" }, { name = "pillow", marker = "(platform_machine != 'aarch64' and sys_platform == 'linux') or (sys_platform != 'darwin' and sys_platform != 'linux')" }, - { name = "torch", version = "2.8.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "(platform_machine != 'aarch64' and sys_platform == 'linux') or (sys_platform != 'darwin' and sys_platform != 'linux')" }, + { name = "torch", version = "2.9.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "(platform_machine != 'aarch64' and sys_platform == 'linux') or (sys_platform != 'darwin' and sys_platform != 'linux')" }, ] wheels = [ - { url = "https://download.pytorch.org/whl/cu129/torchvision-0.23.0%2Bcu129-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:6226be1b8399ef655a11965ea4975250f7823fc9b200b35deb9eeac350c667a9" }, - { url = "https://download.pytorch.org/whl/cu129/torchvision-0.23.0%2Bcu129-cp312-cp312-win_amd64.whl", hash = "sha256:57cf57ada9a5407755e170a4ab3842337b83862c93f9483decaf0b6b4d69fa09" }, - { url = "https://download.pytorch.org/whl/cu129/torchvision-0.23.0%2Bcu129-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:04316e24ddd1cee3b301208811a9d7c4cfca5f566ea367f33bda059d8f0e012e" }, - { url = "https://download.pytorch.org/whl/cu129/torchvision-0.23.0%2Bcu129-cp313-cp313-win_amd64.whl", hash = "sha256:a486a0cee466807a17749d0b916d52088343453dc911baa20f0f459b2fa43c9a" }, - { url = "https://download.pytorch.org/whl/cu129/torchvision-0.23.0%2Bcu129-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:c718f6d2c0e61feed39763925eea3e1f42979f6b21e61276f487409168d9e352" }, - { url = "https://download.pytorch.org/whl/cu129/torchvision-0.23.0%2Bcu129-cp313-cp313t-win_amd64.whl", hash = "sha256:8218c1f614972abb4710afde96d0f70b174b235f390e165e6fd4cdd5cee6d93d" }, + { url = "https://download.pytorch.org/whl/cu129/torchvision-0.24.0%2Bcu129-cp312-cp312-manylinux_2_28_x86_64.whl" }, + { url = "https://download.pytorch.org/whl/cu129/torchvision-0.24.0%2Bcu129-cp313-cp313-manylinux_2_28_x86_64.whl" }, + { url = "https://download.pytorch.org/whl/cu129/torchvision-0.24.0%2Bcu129-cp313-cp313t-manylinux_2_28_x86_64.whl" }, + { url = "https://download.pytorch.org/whl/cu129/torchvision-0.24.0%2Bcu129-cp314-cp314-manylinux_2_28_x86_64.whl" }, + { url = "https://download.pytorch.org/whl/cu129/torchvision-0.24.0%2Bcu129-cp314-cp314t-manylinux_2_28_x86_64.whl" }, ] [[package]] @@ -6880,14 +6971,14 @@ dependencies = [ { name = "einops" }, { name = "onnx" }, { name = "onnxscript" }, - { name = "torch", version = "2.8.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, - { name = "torch", version = "2.8.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform != 'darwin'" }, + { name = "torch", version = "2.9.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, + { name = "torch", version = "2.9.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform != 'darwin'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/38/63/1e3953244ed4f318f87889309a56cdd664759f007967eb850ee415a5584d/transformer_engine_torch-2.8.0.tar.gz", hash = "sha256:ce09f1bd9b8e532a5c347b9e9b3a3a771722095daddca673ae82ccce8e68d759", size = 209805, upload-time = "2025-10-07T04:54:11.134Z" } [[package]] name = "transformers" -version = "4.57.3" +version = "4.57.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "filelock" }, @@ -6901,31 +6992,9 @@ dependencies = [ { name = "tokenizers" }, { name = "tqdm" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/dd/70/d42a739e8dfde3d92bb2fff5819cbf331fe9657323221e79415cd5eb65ee/transformers-4.57.3.tar.gz", hash = "sha256:df4945029aaddd7c09eec5cad851f30662f8bd1746721b34cc031d70c65afebc", size = 10139680, upload-time = "2025-11-25T15:51:30.139Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/6a/6b/2f416568b3c4c91c96e5a365d164f8a4a4a88030aa8ab4644181fdadce97/transformers-4.57.3-py3-none-any.whl", hash = "sha256:c77d353a4851b1880191603d36acb313411d3577f6e2897814f333841f7003f4", size = 11993463, upload-time = "2025-11-25T15:51:26.493Z" }, -] - -[[package]] -name = "triton" -version = "3.4.0" -source = { registry = "https://download.pytorch.org/whl/cu129" } -resolution-markers = [ - "python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux'", - "python_full_version < '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux'", - "python_full_version >= '3.13' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "python_full_version < '3.13' and platform_machine == 'aarch64' and sys_platform == 'linux'", -] -dependencies = [ - { name = "setuptools", marker = "sys_platform == 'linux'" }, -] +sdist = { url = "https://files.pythonhosted.org/packages/d6/68/a39307bcc4116a30b2106f2e689130a48de8bd8a1e635b5e1030e46fcd9e/transformers-4.57.1.tar.gz", hash = "sha256:f06c837959196c75039809636cd964b959f6604b75b8eeec6fdfc0440b89cc55", size = 10142511, upload-time = "2025-10-14T15:39:26.18Z" } wheels = [ - { url = "https://download.pytorch.org/whl/triton-3.4.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl" }, - { url = "https://download.pytorch.org/whl/triton-3.4.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl" }, - { url = "https://download.pytorch.org/whl/triton-3.4.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl" }, - { url = "https://download.pytorch.org/whl/triton-3.4.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl" }, - { url = "https://download.pytorch.org/whl/triton-3.4.0-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl" }, - { url = "https://download.pytorch.org/whl/triton-3.4.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl" }, + { url = "https://files.pythonhosted.org/packages/71/d3/c16c3b3cf7655a67db1144da94b021c200ac1303f82428f2beef6c2e72bb/transformers-4.57.1-py3-none-any.whl", hash = "sha256:b10d05da8fa67dc41644dbbf9bc45a44cb86ae33da6f9295f5fbf5b7890bd267", size = 11990925, upload-time = "2025-10-14T15:39:23.085Z" }, ] [[package]] @@ -6944,6 +7013,29 @@ dependencies = [ { name = "setuptools", marker = "sys_platform != 'darwin' and sys_platform != 'linux'" }, ] +[[package]] +name = "triton" +version = "3.5.0" +source = { registry = "https://download.pytorch.org/whl/cu129" } +resolution-markers = [ + "python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux'", + "python_full_version < '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux'", + "python_full_version >= '3.13' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version < '3.13' and platform_machine == 'aarch64' and sys_platform == 'linux'", +] +wheels = [ + { url = "https://download.pytorch.org/whl/triton-3.5.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl" }, + { url = "https://download.pytorch.org/whl/triton-3.5.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl" }, + { url = "https://download.pytorch.org/whl/triton-3.5.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl" }, + { url = "https://download.pytorch.org/whl/triton-3.5.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl" }, + { url = "https://download.pytorch.org/whl/triton-3.5.0-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl" }, + { url = "https://download.pytorch.org/whl/triton-3.5.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl" }, + { url = "https://download.pytorch.org/whl/triton-3.5.0-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl" }, + { url = "https://download.pytorch.org/whl/triton-3.5.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl" }, + { url = "https://download.pytorch.org/whl/triton-3.5.0-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl" }, + { url = "https://download.pytorch.org/whl/triton-3.5.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl" }, +] + [[package]] name = "trove-classifiers" version = "2025.8.6.13" @@ -7009,14 +7101,14 @@ wheels = [ [[package]] name = "typing-inspection" -version = "0.4.1" +version = "0.4.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/f8/b1/0c11f5058406b3af7609f121aaa6b609744687f1d158b3c3a5bf4cc94238/typing_inspection-0.4.1.tar.gz", hash = "sha256:6ae134cc0203c33377d43188d4064e9b357dba58cff3185f22924610e70a9d28", size = 75726, upload-time = "2025-05-21T18:55:23.885Z" } +sdist = { url = "https://files.pythonhosted.org/packages/55/e3/70399cb7dd41c10ac53367ae42139cf4b1ca5f36bb3dc6c9d33acdb43655/typing_inspection-0.4.2.tar.gz", hash = "sha256:ba561c48a67c5958007083d386c3295464928b01faa735ab8547c5692e87f464", size = 75949, upload-time = "2025-10-01T02:14:41.687Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/17/69/cd203477f944c353c31bade965f880aa1061fd6bf05ded0726ca845b6ff7/typing_inspection-0.4.1-py3-none-any.whl", hash = "sha256:389055682238f53b04f7badcb49b989835495a96700ced5dab2d8feae4b26f51", size = 14552, upload-time = "2025-05-21T18:55:22.152Z" }, + { url = "https://files.pythonhosted.org/packages/dc/9b/47798a6c91d8bdb567fe2698fe81e0c6b7cb7ef4d13da4114b41d239f65d/typing_inspection-0.4.2-py3-none-any.whl", hash = "sha256:4ed1cacbdc298c220f1bd249ed5287caa16f34d44ef4e9c3d0cbad5b521545e7", size = 14611, upload-time = "2025-10-01T02:14:40.154Z" }, ] [[package]] @@ -7030,11 +7122,11 @@ wheels = [ [[package]] name = "urllib3" -version = "1.26.20" +version = "2.6.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e4/e8/6ff5e6bc22095cfc59b6ea711b687e2b7ed4bdb373f7eeec370a97d7392f/urllib3-1.26.20.tar.gz", hash = "sha256:40c2dc0c681e47eb8f90e7e27bf6ff7df2e677421fd46756da1161c39ca70d32", size = 307380, upload-time = "2024-08-29T15:43:11.37Z" } +sdist = { url = "https://files.pythonhosted.org/packages/1e/24/a2a2ed9addd907787d7aa0355ba36a6cadf1768b934c652ea78acbd59dcd/urllib3-2.6.2.tar.gz", hash = "sha256:016f9c98bb7e98085cb2b4b17b87d2c702975664e4f060c6532e64d1c1a5e797", size = 432930, upload-time = "2025-12-11T15:56:40.252Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/33/cf/8435d5a7159e2a9c83a95896ed596f68cf798005fe107cc655b5c5c14704/urllib3-1.26.20-py2.py3-none-any.whl", hash = "sha256:0ed14ccfbf1c30a9072c7ca157e4319b70d65f623e91e7b32fadb2853431016e", size = 144225, upload-time = "2024-08-29T15:43:08.921Z" }, + { url = "https://files.pythonhosted.org/packages/6d/b9/4095b668ea3678bf6a0af005527f39de12fb026516fb3df17495a733b7f8/urllib3-2.6.2-py3-none-any.whl", hash = "sha256:ec21cddfe7724fc7cb4ba4bea7aa8e2ef36f607a4bab81aa6ce42a13dc3f03dd", size = 131182, upload-time = "2025-12-11T15:56:38.584Z" }, ] [[package]] @@ -7097,10 +7189,11 @@ wheels = [ [[package]] name = "vllm" -version = "0.11.0" +version = "0.11.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "aiohttp" }, + { name = "anthropic" }, { name = "blake3" }, { name = "cachetools" }, { name = "cbor2" }, @@ -7111,11 +7204,13 @@ dependencies = [ { name = "einops" }, { name = "fastapi", extra = ["standard"] }, { name = "filelock" }, + { name = "flashinfer-python" }, { name = "gguf" }, { name = "lark" }, - { name = "llguidance", marker = "platform_machine == 'aarch64' or platform_machine == 'arm64' or platform_machine == 'x86_64'" }, + { name = "llguidance", marker = "platform_machine == 'aarch64' or platform_machine == 'arm64' or platform_machine == 's390x' or platform_machine == 'x86_64'" }, { name = "lm-format-enforcer" }, - { name = "mistral-common", extra = ["audio", "image"] }, + { name = "mistral-common", extra = ["image"] }, + { name = "model-hosting-container-standards" }, { name = "msgspec" }, { name = "ninja" }, { name = "numba" }, @@ -7146,23 +7241,23 @@ dependencies = [ { name = "six" }, { name = "tiktoken" }, { name = "tokenizers" }, - { name = "torch", version = "2.8.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, - { name = "torch", version = "2.8.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform != 'darwin'" }, + { name = "torch", version = "2.9.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, + { name = "torch", version = "2.9.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform != 'darwin'" }, { name = "torchaudio" }, - { name = "torchvision", version = "0.23.0", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "platform_machine == 'aarch64' and sys_platform == 'linux'" }, - { name = "torchvision", version = "0.23.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, - { name = "torchvision", version = "0.23.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "(platform_machine != 'aarch64' and sys_platform == 'linux') or (sys_platform != 'darwin' and sys_platform != 'linux')" }, + { name = "torchvision", version = "0.24.0", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "platform_machine == 'aarch64' and sys_platform == 'linux'" }, + { name = "torchvision", version = "0.24.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, + { name = "torchvision", version = "0.24.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "(platform_machine != 'aarch64' and sys_platform == 'linux') or (sys_platform != 'darwin' and sys_platform != 'linux')" }, { name = "tqdm" }, { name = "transformers" }, { name = "typing-extensions" }, { name = "watchfiles" }, { name = "xformers", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, - { name = "xgrammar", marker = "platform_machine == 'aarch64' or platform_machine == 'arm64' or platform_machine == 'x86_64'" }, + { name = "xgrammar", marker = "platform_machine == 'aarch64' or platform_machine == 'arm64' or platform_machine == 's390x' or platform_machine == 'x86_64'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/82/5a/36d2351206f4d8d871b10780f874d03957985e08298d430cc837723e07af/vllm-0.11.0.tar.gz", hash = "sha256:f435a64c24e9c4178d657a76f8edd8548ddc444012f7d06a9f79ac3a6392bfae", size = 10822208, upload-time = "2025-10-04T01:39:57.798Z" } +sdist = { url = "https://files.pythonhosted.org/packages/40/15/bc50794c5c6a48f075d72fde8035647d38072ad81031168d27ca631f9395/vllm-0.11.2.tar.gz", hash = "sha256:496d15bb64ca0fe73adbc57a93b29f4671fa12404c09e0ba02f777bfe60af671", size = 17287801, upload-time = "2025-11-20T08:31:35.084Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/47/33/d19e0763c34392ec956534536fa837c060495bfff31ed83452135ea7608d/vllm-0.11.0-cp38-abi3-manylinux1_x86_64.whl", hash = "sha256:3861c75ff2b12e24f6d179ff5c084d791b42ded8675d76c8706697c79f68cd62", size = 438217982, upload-time = "2025-10-04T01:39:32.382Z" }, - { url = "https://files.pythonhosted.org/packages/d7/bf/973444bb959fc7acbbeb3d226bd4d135dcd49b6af174b29aab1b50e2d710/vllm-0.11.0-cp38-abi3-manylinux2014_aarch64.whl", hash = "sha256:52369c9ee949944354bdc7afc88ded2d1ed02b098bf90db06cf80098a19787b7", size = 401003969, upload-time = "2025-10-04T01:39:50.251Z" }, + { url = "https://files.pythonhosted.org/packages/75/5d/d6af7818e41957a5d35f1b0ecd0186ac80e322f228dc390dcbc4aafce58d/vllm-0.11.2-cp38-abi3-manylinux1_x86_64.whl", hash = "sha256:ea473bd4fde06940fe3f681a00476060652f62b3279ef11aaffac5768856cfe8", size = 370306629, upload-time = "2025-11-20T08:30:43.713Z" }, + { url = "https://files.pythonhosted.org/packages/24/7c/f27896162b88c360d569fd632cf0525d5ce89cba8e555532d80dc3ee0a12/vllm-0.11.2-cp38-abi3-manylinux2014_aarch64.whl", hash = "sha256:a084f5ca768d22bf55810948cbb50825a35015e07593ab6c9c42fcbe18bdd5cc", size = 368543904, upload-time = "2025-11-20T08:31:15.933Z" }, ] [[package]] @@ -7363,6 +7458,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/0b/2c/87f3254fd8ffd29e4c02732eee68a83a1d3c346ae39bc6822dcbcb697f2b/wheel-0.45.1-py3-none-any.whl", hash = "sha256:708e7481cc80179af0e556bbf0cc00b8444c7321e2700b8d8580231d13017248", size = 72494, upload-time = "2024-11-23T00:18:21.207Z" }, ] +[[package]] +name = "win32-setctime" +version = "1.2.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b3/8f/705086c9d734d3b663af0e9bb3d4de6578d08f46b1b101c2442fd9aecaa2/win32_setctime-1.2.0.tar.gz", hash = "sha256:ae1fdf948f5640aae05c511ade119313fb6a30d7eabe25fef9764dca5873c4c0", size = 4867, upload-time = "2024-12-07T15:28:28.314Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e1/07/c6fe3ad3e685340704d314d765b7912993bcb8dc198f0e7a89382d37974b/win32_setctime-1.2.0-py3-none-any.whl", hash = "sha256:95d644c4e708aba81dc3704a116d8cbc974d70b3bdb8be1d150e36be6e9d1390", size = 4083, upload-time = "2024-12-07T15:28:26.465Z" }, +] + [[package]] name = "wrapt" version = "1.17.3" @@ -7453,15 +7557,15 @@ wheels = [ [[package]] name = "xformers" -version = "0.0.32.post1" +version = "0.0.33.post1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "numpy", marker = "platform_machine != 'aarch64' and sys_platform == 'linux'" }, - { name = "torch", version = "2.8.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "platform_machine != 'aarch64' and sys_platform == 'linux'" }, + { name = "torch", version = "2.9.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "platform_machine != 'aarch64' and sys_platform == 'linux'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/6f/33/3b9c4d3d5b2da453d27de891df4ad653ac5795324961aa3a5c15b0353fe6/xformers-0.0.32.post1.tar.gz", hash = "sha256:1de84a45c497c8d92326986508d81f4b0a8c6be4d3d62a29b8ad6048a6ab51e1", size = 12106196, upload-time = "2025-08-14T18:07:45.486Z" } +sdist = { url = "https://files.pythonhosted.org/packages/6f/c1/cd0d6b89da38d8aa174e8eabf29530f8871daf53b886ec6b680ef9d3e71f/xformers-0.0.33.post1.tar.gz", hash = "sha256:e555258249b514ba117b3403523fe0bd7d3e92e930575f0e0dbf5f7db5b42677", size = 14784437, upload-time = "2025-11-13T20:16:14.793Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/6b/df/6817346f1a77278315d5fe1fc9f239ba3282ba36e8ab3256babd448dde62/xformers-0.0.32.post1-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:5f245b5555188da112070d8fefb6b7ae1ae47422856521d66c837e9d2352fbe4", size = 117199943, upload-time = "2025-08-14T18:07:34.78Z" }, + { url = "https://files.pythonhosted.org/packages/39/94/3ad80d1070ddfb280c20a67dfbc094a93579a02910ef41f20631a9b566fe/xformers-0.0.33.post1-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:a8d72c6272453450eede2ed9aaa14448e6525569e14217573057ded146090db3", size = 122884756, upload-time = "2025-11-13T20:16:04.002Z" }, ] [[package]] @@ -7473,10 +7577,10 @@ dependencies = [ { name = "ninja" }, { name = "numpy" }, { name = "pydantic" }, - { name = "torch", version = "2.8.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, - { name = "torch", version = "2.8.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform != 'darwin'" }, + { name = "torch", version = "2.9.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, + { name = "torch", version = "2.9.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "sys_platform != 'darwin'" }, { name = "transformers" }, - { name = "triton", version = "3.4.0", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, + { name = "triton", version = "3.5.0", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" }, { name = "typing-extensions" }, ] sdist = { url = "https://files.pythonhosted.org/packages/f2/a9/dc3c63cf7f082d183711e46ef34d10d8a135c2319dc581905d79449f52ea/xgrammar-0.1.25.tar.gz", hash = "sha256:70ce16b27e8082f20808ed759b0733304316facc421656f0f30cfce514b5b77a", size = 2297187, upload-time = "2025-09-21T05:58:58.942Z" } From 789bda4e33a7efd398d7a992cf6f3e475671169b Mon Sep 17 00:00:00 2001 From: sahgerlad <36946563+sahgerlad@users.noreply.github.com> Date: Thu, 18 Dec 2025 03:10:33 -0500 Subject: [PATCH 10/52] fix: Support datasets saved with save_to_disk in ResponseDataset (#1610) Signed-off-by: Sahger Lad Signed-off-by: sahgerlad <36946563+sahgerlad@users.noreply.github.com> Co-authored-by: Yuki Huang Signed-off-by: Parth Mannan --- .../response_datasets/response_dataset.py | 11 +-- nemo_rl/data/datasets/utils.py | 12 +++- .../data/datasets/test_response_dataset.py | 72 +++++++++++++++++++ 3 files changed, 87 insertions(+), 8 deletions(-) diff --git a/nemo_rl/data/datasets/response_datasets/response_dataset.py b/nemo_rl/data/datasets/response_datasets/response_dataset.py index 9c158771e4..15af21206e 100644 --- a/nemo_rl/data/datasets/response_datasets/response_dataset.py +++ b/nemo_rl/data/datasets/response_datasets/response_dataset.py @@ -56,11 +56,12 @@ def __init__( else: val_ds = None - # format the dataset - train_ds = train_ds.map( - self.add_messages_key, fn_kwargs={"task_name": self.task_name} - ) - if val_ds: + # Only apply add_messages_key if 'messages' column doesn't exist + if "messages" not in train_ds.column_names: + train_ds = train_ds.map( + self.add_messages_key, fn_kwargs={"task_name": self.task_name} + ) + if val_ds is not None and "messages" not in val_ds.column_names: val_ds = val_ds.map( self.add_messages_key, fn_kwargs={"task_name": self.task_name} ) diff --git a/nemo_rl/data/datasets/utils.py b/nemo_rl/data/datasets/utils.py index 12c65ef14f..eb78becc45 100644 --- a/nemo_rl/data/datasets/utils.py +++ b/nemo_rl/data/datasets/utils.py @@ -17,7 +17,7 @@ from typing import Optional, Union import torch -from datasets import DatasetDict, load_dataset +from datasets import DatasetDict, load_dataset, load_from_disk from PIL import Image from transformers import AutoProcessor, PreTrainedTokenizerBase @@ -62,7 +62,7 @@ def pil_to_base64(image: Image.Image, format: str = "PNG") -> str: def load_dataset_from_path(data_path: str, data_split: Optional[str] = "train"): - """Load a dataset from a json or huggingface dataset. + """Load a dataset from a json, huggingface dataset, or Arrow dataset (saved with save_to_disk). Args: data_path: The path to the dataset. @@ -72,7 +72,13 @@ def load_dataset_from_path(data_path: str, data_split: Optional[str] = "train"): if suffix in [".json", ".jsonl"]: raw_dataset = load_dataset("json", data_files=data_path) else: - raw_dataset = load_dataset(data_path) + try: + raw_dataset = load_dataset(data_path) + except ValueError as e: + if "load_from_disk" in str(e): + raw_dataset = load_from_disk(data_path) + else: + raise e if data_split: raw_dataset = raw_dataset[data_split] diff --git a/tests/unit/data/datasets/test_response_dataset.py b/tests/unit/data/datasets/test_response_dataset.py index e8c935da4f..22bc7168fe 100644 --- a/tests/unit/data/datasets/test_response_dataset.py +++ b/tests/unit/data/datasets/test_response_dataset.py @@ -165,3 +165,75 @@ def test_squad_dataset(): + " Answer: " + example["messages"][2]["content"] ) + + +def test_load_dataset_saved_with_save_to_disk(): + """Test loading a dataset that was saved using HuggingFace's save_to_disk(). + + This tests the fix for datasets that already have a 'messages' column, + which should be preserved without applying add_messages_key again. + """ + from datasets import Dataset + + # Create a dataset with 'messages' column already present + train_data = [ + { + "messages": [ + {"role": "user", "content": "What is 2+2?"}, + {"role": "assistant", "content": "4"}, + ] + }, + { + "messages": [ + {"role": "user", "content": "What is the capital of France?"}, + {"role": "assistant", "content": "Paris"}, + ] + }, + ] + val_data = [ + { + "messages": [ + {"role": "user", "content": "What is 3+3?"}, + {"role": "assistant", "content": "6"}, + ] + }, + ] + + with tempfile.TemporaryDirectory() as tmpdir: + # Create HF datasets and save using save_to_disk + train_dataset = Dataset.from_list(train_data) + val_dataset = Dataset.from_list(val_data) + + train_path = f"{tmpdir}/train" + val_path = f"{tmpdir}/val" + + train_dataset.save_to_disk(train_path) + val_dataset.save_to_disk(val_path) + + # Load using load_response_dataset + data_config = { + "dataset_name": "ResponseDataset", + "train_data_path": train_path, + "val_data_path": val_path, + } + dataset = load_response_dataset(data_config) + + # Verify the dataset loaded correctly + assert "train" in dataset.formatted_ds + assert "validation" in dataset.formatted_ds + assert len(dataset.formatted_ds["train"]) == 2 + assert len(dataset.formatted_ds["validation"]) == 1 + + # Verify messages are preserved correctly + first_train_example = dataset.formatted_ds["train"][0] + assert "messages" in first_train_example + assert len(first_train_example["messages"]) == 2 + assert first_train_example["messages"][0]["role"] == "user" + assert first_train_example["messages"][0]["content"] == "What is 2+2?" + assert first_train_example["messages"][1]["role"] == "assistant" + assert first_train_example["messages"][1]["content"] == "4" + + # Verify validation data + first_val_example = dataset.formatted_ds["validation"][0] + assert first_val_example["messages"][0]["content"] == "What is 3+3?" + assert first_val_example["messages"][1]["content"] == "6" From 105a5cc541df2eb3887bc6aa47fdce49e00f7727 Mon Sep 17 00:00:00 2001 From: Parth Mannan Date: Fri, 19 Dec 2025 17:55:10 -0800 Subject: [PATCH 11/52] Recipe update Signed-off-by: Parth Mannan --- .../recipes/llm/grpo-moonlight-16ba3b-4n8g-megatron.yaml | 3 +++ uv.lock | 2 ++ 2 files changed, 5 insertions(+) diff --git a/examples/configs/recipes/llm/grpo-moonlight-16ba3b-4n8g-megatron.yaml b/examples/configs/recipes/llm/grpo-moonlight-16ba3b-4n8g-megatron.yaml index e1e38fbbfc..411bcff959 100644 --- a/examples/configs/recipes/llm/grpo-moonlight-16ba3b-4n8g-megatron.yaml +++ b/examples/configs/recipes/llm/grpo-moonlight-16ba3b-4n8g-megatron.yaml @@ -31,6 +31,9 @@ policy: lr: 1.0e-06 scheduler: lr_warmup_iters: 50 + moe_enable_deepep: true + moe_token_dispatcher_type: "flex" + moe_shared_expert_overlap: false logger: monitor_gpus: false wandb: diff --git a/uv.lock b/uv.lock index 5675ee364d..144a8394a9 100644 --- a/uv.lock +++ b/uv.lock @@ -3612,6 +3612,7 @@ automodel = [ { name = "vllm" }, ] mcore = [ + { name = "deep-ep" }, { name = "flash-attn" }, { name = "megatron-bridge" }, { name = "megatron-core" }, @@ -3681,6 +3682,7 @@ requires-dist = [ { name = "cuda-python", marker = "extra == 'vllm'" }, { name = "datasets", specifier = ">=4.0.0" }, { name = "debugpy" }, + { name = "deep-ep", marker = "extra == 'mcore'", git = "https://github.com/deepseek-ai/DeepEP.git?rev=e3908bf5bd0cc6265bcb225d15cd8c996d4759ef" }, { name = "deep-ep", marker = "extra == 'vllm'", git = "https://github.com/deepseek-ai/DeepEP.git?rev=e3908bf5bd0cc6265bcb225d15cd8c996d4759ef" }, { name = "deep-gemm", marker = "extra == 'vllm'", git = "https://github.com/deepseek-ai/DeepGEMM.git?rev=7b6b5563b9d4c1ae07ffbce7f78ad3ac9204827c" }, { name = "flash-attn", marker = "extra == 'automodel'", specifier = "==2.8.1" }, From 250f34e6cf524b5891d858de07a17efef49e3d89 Mon Sep 17 00:00:00 2001 From: sahgerlad <36946563+sahgerlad@users.noreply.github.com> Date: Thu, 18 Dec 2025 21:47:10 -0500 Subject: [PATCH 12/52] fix: Handle disabled validation in SFT training (#1611) Signed-off-by: Sahger Lad Signed-off-by: Parth Mannan --- examples/run_sft.py | 29 ++++++++++--------- nemo_rl/algorithms/sft.py | 42 +++++++++++++++------------ tests/unit/algorithms/test_sft.py | 48 +++++++++++++++++++++++++++++++ 3 files changed, 87 insertions(+), 32 deletions(-) diff --git a/examples/run_sft.py b/examples/run_sft.py index bcda89e09c..8f65262c73 100644 --- a/examples/run_sft.py +++ b/examples/run_sft.py @@ -107,7 +107,7 @@ def setup_data(tokenizer: AutoTokenizer, data_config: DataConfig, seed: int): val_dataset = data.formatted_ds["validation"] sft_task_spec = data.task_spec print( - f" ✓ Training and validation datasets loaded with {len(train_dataset)} and {len(val_dataset)} samples, respectively." + f" ✓ Training and validation datasets loaded with {len(train_dataset)} and {len(val_dataset) if val_dataset else 0} samples, respectively." ) # add preprocessor if needed @@ -133,19 +133,20 @@ def setup_data(tokenizer: AutoTokenizer, data_config: DataConfig, seed: int): max_seq_length=data_config["max_input_seq_length"], ) - val_dataset = AllTaskProcessedDataset( - val_dataset, - tokenizer, - sft_task_spec, - partial( - sft_preprocessor, - add_bos=data_config.get("add_bos", True), - add_eos=data_config.get("add_eos", True), - add_generation_prompt=data_config["add_generation_prompt"], - datum_preprocessor=datum_preprocessor, - ), - max_seq_length=data_config["max_input_seq_length"], - ) + if val_dataset is not None: + val_dataset = AllTaskProcessedDataset( + val_dataset, + tokenizer, + sft_task_spec, + partial( + sft_preprocessor, + add_bos=data_config.get("add_bos", True), + add_eos=data_config.get("add_eos", True), + add_generation_prompt=data_config["add_generation_prompt"], + datum_preprocessor=datum_preprocessor, + ), + max_seq_length=data_config["max_input_seq_length"], + ) return train_dataset, val_dataset, sft_task_spec diff --git a/nemo_rl/algorithms/sft.py b/nemo_rl/algorithms/sft.py index ac44521ef7..09cbdf93c2 100644 --- a/nemo_rl/algorithms/sft.py +++ b/nemo_rl/algorithms/sft.py @@ -90,12 +90,12 @@ def setup( master_config: MasterConfig, tokenizer: AutoTokenizer, train_dataset: AllTaskProcessedDataset, - val_dataset: AllTaskProcessedDataset, + val_dataset: Optional[AllTaskProcessedDataset], ) -> tuple[ Policy, RayVirtualCluster, StatefulDataLoader, - StatefulDataLoader, + Optional[StatefulDataLoader], NLLLoss, Logger, CheckpointManager, @@ -149,14 +149,17 @@ def setup( ) train_dataloader.load_state_dict(dataloader_state_dict) - val_dataloader = StatefulDataLoader( - val_dataset, - batch_size=sft_config["val_global_batch_size"], - shuffle=False, - collate_fn=rl_collate_fn, - drop_last=False, - num_workers=data_config["num_workers"], - ) + if val_dataset is not None: + val_dataloader = StatefulDataLoader( + val_dataset, + batch_size=sft_config["val_global_batch_size"], + shuffle=False, + collate_fn=rl_collate_fn, + drop_last=False, + num_workers=data_config["num_workers"], + ) + else: + val_dataloader = None # ========================== # Cluster @@ -230,7 +233,7 @@ def setup( # ======================================================= def validate( policy: PolicyInterface, - val_dataloader: StatefulDataLoader, + val_dataloader: Optional[StatefulDataLoader], tokenizer, loss_fn, step: int, @@ -242,11 +245,11 @@ def validate( ): """Run validation on the validation dataset.""" if val_dataloader is None: - assert val_dataloader is not None or master_config["dpo"]["val_period"] == 0, ( - "val_dataloader is None, so dpo.val_period must be 0" + assert master_config["sft"]["val_period"] <= 0, ( + "val_dataloader is None, so sft.val_period must be <= 0" ) print(" ⚠️ No validation dataloader provided, skipping validation") - return + return {}, {} timer = Timer() @@ -496,7 +499,7 @@ def sft_train( metrics[k] = np.mean(v).item() else: metrics[k] = np.sum(v).item() - total_valid_tokens += metrics["global_valid_toks"] + total_valid_tokens += metrics.get("global_valid_toks", 0) ## Checkpointing sft_save_state["consumed_samples"] += master_config["policy"][ @@ -610,9 +613,12 @@ def sft_train( master_config["cluster"]["num_nodes"] * master_config["cluster"]["gpus_per_node"] ) - timing_metrics["valid_tokens_per_sec_per_gpu"] = ( - metrics["global_valid_toks"] / total_time / total_num_gpus - ) + if total_time > 0: + timing_metrics["valid_tokens_per_sec_per_gpu"] = ( + metrics.get("global_valid_toks", 0) / total_time / total_num_gpus + ) + else: + timing_metrics["valid_tokens_per_sec_per_gpu"] = 0.0 logger.log_metrics(metrics, total_steps + 1, prefix="train") logger.log_metrics(timing_metrics, total_steps + 1, prefix="timing/train") diff --git a/tests/unit/algorithms/test_sft.py b/tests/unit/algorithms/test_sft.py index e43630651e..83d0cf20c4 100644 --- a/tests/unit/algorithms/test_sft.py +++ b/tests/unit/algorithms/test_sft.py @@ -205,3 +205,51 @@ def test_exit_on_timeout(mock_components, capsys): assert "Epoch" not in line or "Epoch 1/10" in line, ( f"Training continued to next epoch after timeout: {line}" ) + + +def test_training_with_disabled_validation(mock_components): + """Test that training works when validation is disabled (val_dataloader=None, val_period<=0)""" + mock_components["master_config"]["sft"]["val_period"] = 0 + mock_components["master_config"]["sft"]["max_num_steps"] = 5 + mock_components["master_config"]["sft"]["max_num_epochs"] = 1 + + sft_save_state = _default_sft_save_state() + + sft_train( + mock_components["policy"], + mock_components["train_dataloader"], + None, # val_dataloader is None + mock_components["tokenizer"], + mock_components["loss_fn"], + mock_components["master_config"], + mock_components["logger"], + mock_components["sft_task_spec"], + mock_components["checkpointer"], + sft_save_state, + ) + + assert mock_components["policy"].train.call_count == 5 + + +def test_training_with_negative_val_period(mock_components): + """Test that training works when val_period is negative (validation disabled)""" + mock_components["master_config"]["sft"]["val_period"] = -1 + mock_components["master_config"]["sft"]["max_num_steps"] = 3 + mock_components["master_config"]["sft"]["max_num_epochs"] = 1 + + sft_save_state = _default_sft_save_state() + + sft_train( + mock_components["policy"], + mock_components["train_dataloader"], + None, # val_dataloader is None + mock_components["tokenizer"], + mock_components["loss_fn"], + mock_components["master_config"], + mock_components["logger"], + mock_components["sft_task_spec"], + mock_components["checkpointer"], + sft_save_state, + ) + + assert mock_components["policy"].train.call_count == 3 From afadf3e4474c01638ee5e9bfa1a7ec3a331559fe Mon Sep 17 00:00:00 2001 From: Yi-Fu Wu Date: Fri, 19 Dec 2025 10:41:14 -0800 Subject: [PATCH 13/52] fix: Fix crash when using cp in dtensor path (#1663) Signed-off-by: Yi-Fu Wu Signed-off-by: Parth Mannan --- .../policy/workers/dtensor_policy_worker_v2.py | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/nemo_rl/models/policy/workers/dtensor_policy_worker_v2.py b/nemo_rl/models/policy/workers/dtensor_policy_worker_v2.py index a8a3957bd5..4ec712929b 100644 --- a/nemo_rl/models/policy/workers/dtensor_policy_worker_v2.py +++ b/nemo_rl/models/policy/workers/dtensor_policy_worker_v2.py @@ -277,10 +277,24 @@ def __init__( # All ranks initialize model on meta device, so FSDP can shard it. # The actual weights will be broadcast from rank 0. + cp_size = self.cfg["dtensor_cfg"]["context_parallel_size"] with init_empty_weights(): # NeMoAutoModelForCausalLM uses flash_attention_2 by default # so we need to set it to None if sequence packing is disabled # https://github.com/NVIDIA-NeMo/Automodel/blob/7e748be260651349307862426c0c168cebdeeec3/nemo_automodel/components/_transformers/auto_model.py#L180 + if cp_size > 1: + # Match Automodel's `get_train_context` in `cp_utils.py` where only + # flash and efficient backends are supported + # Ref: https://github.com/NVIDIA-NeMo/Automodel/blob/81788d6f4848f5f066c4a6a2bece4689a6a83687/nemo_automodel/components/distributed/cp_utils.py#L57 + from torch.nn.attention import SDPBackend + + sdpa_method = [ + SDPBackend.FLASH_ATTENTION, + SDPBackend.EFFICIENT_ATTENTION, + ] + else: + sdpa_method = None + self.model = model_class.from_config( model_config, attn_implementation="flash_attention_2" @@ -289,6 +303,7 @@ def __init__( use_liger_kernel=False, trust_remote_code=True, torch_dtype=str(model_config.torch_dtype), + sdpa_method=sdpa_method, ) if self.lora_enabled: apply_lora_to_linear_modules(self.model, self.peft_config) @@ -297,7 +312,6 @@ def __init__( self.model.config.pad_token_id = tokenizer.pad_token_id tp_size = self.cfg["dtensor_cfg"]["tensor_parallel_size"] - cp_size = self.cfg["dtensor_cfg"]["context_parallel_size"] if cp_size > 1 and self.enable_seq_packing: raise ValueError( "Context parallel is not supported for sequence packing. Refer to https://github.com/NVIDIA/NeMo-RL/blob/main/docs/model-quirks.md#context-parallel-with-fsdp2 for more details." From 87c55e27c400f236f496138caaf4a162c082b1b9 Mon Sep 17 00:00:00 2001 From: Guyue Huang <140554423+guyueh1@users.noreply.github.com> Date: Fri, 19 Dec 2025 19:56:16 -0800 Subject: [PATCH 14/52] fix: Fix Fp8 sequence padding for PP>1 case (#1579) Signed-off-by: root Co-authored-by: root Signed-off-by: Parth Mannan --- nemo_rl/models/megatron/common.py | 10 ++++++++-- .../models/policy/workers/megatron_policy_worker.py | 2 ++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/nemo_rl/models/megatron/common.py b/nemo_rl/models/megatron/common.py index 952f65a7c7..e082c160bf 100644 --- a/nemo_rl/models/megatron/common.py +++ b/nemo_rl/models/megatron/common.py @@ -89,8 +89,8 @@ def _pack_sequences_for_megatron( # Round up the pad_packed_seq_to to the nearest multiple of pad_packed_seq_to_multiple_of if pad_packed_seq_to is not None: - pad_packed_seq_to = _round_up_to_multiple( - pad_packed_seq_to, pad_packed_seq_to_multiple_of + assert pad_packed_seq_to % pad_packed_seq_to_multiple_of == 0, ( + f"pad_packed_seq_to ({pad_packed_seq_to}) is not a multiple of pad_packed_seq_to_multiple_of ({pad_packed_seq_to_multiple_of})." ) pad_factor = pad_individual_seqs_to_multiple_of @@ -280,6 +280,12 @@ def _get_pack_sequence_parameters_for_megatron( else: pad_packed_seq_to = None + # make sure the pad_packed_seq_to is a multiple of the pad_packed_seq_to_multiple_of + if pad_packed_seq_to is not None: + pad_packed_seq_to = _round_up_to_multiple( + pad_packed_seq_to, pad_packed_seq_to_multiple_of + ) + return ( pad_individual_seqs_to_multiple_of, pad_packed_seq_to_multiple_of, diff --git a/nemo_rl/models/policy/workers/megatron_policy_worker.py b/nemo_rl/models/policy/workers/megatron_policy_worker.py index 48fd2a64df..c0e9c53bf0 100644 --- a/nemo_rl/models/policy/workers/megatron_policy_worker.py +++ b/nemo_rl/models/policy/workers/megatron_policy_worker.py @@ -1156,6 +1156,8 @@ def train( self.cfg["megatron_cfg"], seq_dim_size, ) + # if pad_full_seq_to is not None, we need to use it as the sequence length + seq_dim_size = pad_full_seq_to or seq_dim_size else: data_iterator = batch.make_microbatch_iterator(mbs) data_iterator_len = local_gbs // mbs From 56dba8e0a6dee4a08d8d686ac3f3b93d2f625e28 Mon Sep 17 00:00:00 2001 From: Guyue Huang <140554423+guyueh1@users.noreply.github.com> Date: Fri, 19 Dec 2025 23:48:27 -0800 Subject: [PATCH 15/52] test: Perf recipe for v0.5 (#1667) Signed-off-by: Guyue Huang Signed-off-by: Guyue Huang Co-authored-by: Guyue Huang Co-authored-by: Seonjin Signed-off-by: Parth Mannan --- ...oonlight-16ba3b-4n8g-megatron-fp8-e2e.yaml | 3 - .../performance/grpo-deepseek-v3-32n4g.yaml | 21 +++++++ .../grpo-deepseek-v3-64n4g-async-1off.yaml | 25 ++++++++ ...grpo-deepseek-v3-64n8g-fp8-async-1off.yaml | 28 +++++++++ ...-llama3.1-8b-instruct-2n4g-async-1off.yaml | 32 ++++++++++ .../grpo-llama3.1-8b-instruct-2n4g.yaml | 58 +++++++++++++++++++ ...-llama3.1-8b-instruct-2n8g-async-1off.yaml | 2 + ...ma3.1-8b-instruct-2n8g-fp8-async-1off.yaml | 20 +++++++ .../performance/grpo-qwen3-235b-16n4g.yaml | 18 ++++++ .../grpo-qwen3-235b-32n4g-async-1off.yaml | 21 +++++++ .../performance/grpo-qwen3-30ba3b-4n4g.yaml | 45 ++++++++++++++ .../grpo-qwen3-30ba3b-8n4g-async-1off.yaml | 33 +++++++++++ .../llm/performance/grpo-qwen3-32b-4n4g.yaml | 42 ++++++++++++++ .../grpo-qwen3-32b-8n4g-async-1off.yaml | 33 +++++++++++ .../llm/performance/grpo-deepseek-v3-32n4g.sh | 45 ++++++++++++++ .../grpo-deepseek-v3-64n4g-async-1off.sh | 45 ++++++++++++++ .../grpo-deepseek-v3-64n8g-fp8-async-1off.sh | 45 ++++++++++++++ ...po-llama3.1-8b-instruct-2n4g-async-1off.sh | 39 +++++++++++++ .../grpo-llama3.1-8b-instruct-2n4g.sh | 39 +++++++++++++ ...lama3.1-8b-instruct-2n8g-fp8-async-1off.sh | 39 +++++++++++++ .../llm/performance/grpo-qwen3-235b-16n4g.sh | 40 +++++++++++++ .../grpo-qwen3-235b-32n4g-async-1off.sh | 40 +++++++++++++ .../llm/performance/grpo-qwen3-30ba3b-4n4g.sh | 40 +++++++++++++ .../grpo-qwen3-30ba3b-8n4g-async-1off.sh | 40 +++++++++++++ .../llm/performance/grpo-qwen3-32b-4n4g.sh | 40 +++++++++++++ .../grpo-qwen3-32b-8n4g-async-1off.sh | 39 +++++++++++++ tests/test_suites/performance_gb200.txt | 19 ++++++ .../{performance.txt => performance_h100.txt} | 14 ++++- tests/unit/test_recipes_and_test_suites.py | 18 ++++-- 29 files changed, 915 insertions(+), 8 deletions(-) create mode 100644 examples/configs/recipes/llm/performance/grpo-deepseek-v3-32n4g.yaml create mode 100644 examples/configs/recipes/llm/performance/grpo-deepseek-v3-64n4g-async-1off.yaml create mode 100644 examples/configs/recipes/llm/performance/grpo-deepseek-v3-64n8g-fp8-async-1off.yaml create mode 100644 examples/configs/recipes/llm/performance/grpo-llama3.1-8b-instruct-2n4g-async-1off.yaml create mode 100644 examples/configs/recipes/llm/performance/grpo-llama3.1-8b-instruct-2n4g.yaml create mode 100644 examples/configs/recipes/llm/performance/grpo-llama3.1-8b-instruct-2n8g-fp8-async-1off.yaml create mode 100644 examples/configs/recipes/llm/performance/grpo-qwen3-235b-16n4g.yaml create mode 100644 examples/configs/recipes/llm/performance/grpo-qwen3-235b-32n4g-async-1off.yaml create mode 100644 examples/configs/recipes/llm/performance/grpo-qwen3-30ba3b-4n4g.yaml create mode 100644 examples/configs/recipes/llm/performance/grpo-qwen3-30ba3b-8n4g-async-1off.yaml create mode 100644 examples/configs/recipes/llm/performance/grpo-qwen3-32b-4n4g.yaml create mode 100644 examples/configs/recipes/llm/performance/grpo-qwen3-32b-8n4g-async-1off.yaml create mode 100755 tests/test_suites/llm/performance/grpo-deepseek-v3-32n4g.sh create mode 100755 tests/test_suites/llm/performance/grpo-deepseek-v3-64n4g-async-1off.sh create mode 100755 tests/test_suites/llm/performance/grpo-deepseek-v3-64n8g-fp8-async-1off.sh create mode 100755 tests/test_suites/llm/performance/grpo-llama3.1-8b-instruct-2n4g-async-1off.sh create mode 100755 tests/test_suites/llm/performance/grpo-llama3.1-8b-instruct-2n4g.sh create mode 100755 tests/test_suites/llm/performance/grpo-llama3.1-8b-instruct-2n8g-fp8-async-1off.sh create mode 100755 tests/test_suites/llm/performance/grpo-qwen3-235b-16n4g.sh create mode 100755 tests/test_suites/llm/performance/grpo-qwen3-235b-32n4g-async-1off.sh create mode 100755 tests/test_suites/llm/performance/grpo-qwen3-30ba3b-4n4g.sh create mode 100755 tests/test_suites/llm/performance/grpo-qwen3-30ba3b-8n4g-async-1off.sh create mode 100755 tests/test_suites/llm/performance/grpo-qwen3-32b-4n4g.sh create mode 100755 tests/test_suites/llm/performance/grpo-qwen3-32b-8n4g-async-1off.sh create mode 100644 tests/test_suites/performance_gb200.txt rename tests/test_suites/{performance.txt => performance_h100.txt} (75%) diff --git a/examples/configs/recipes/llm/grpo-moonlight-16ba3b-4n8g-megatron-fp8-e2e.yaml b/examples/configs/recipes/llm/grpo-moonlight-16ba3b-4n8g-megatron-fp8-e2e.yaml index 19c86c8a04..27108c55c7 100644 --- a/examples/configs/recipes/llm/grpo-moonlight-16ba3b-4n8g-megatron-fp8-e2e.yaml +++ b/examples/configs/recipes/llm/grpo-moonlight-16ba3b-4n8g-megatron-fp8-e2e.yaml @@ -16,8 +16,6 @@ policy: max_total_sequence_length: 8192 dtensor_cfg: enabled: false - sequence_packing: - algorithm: modified_ffd make_sequence_length_divisible_by: ${policy.megatron_cfg.tensor_model_parallel_size} optimizer: null megatron_cfg: @@ -45,7 +43,6 @@ policy: precision: fp8 use_deep_gemm: true gpu_memory_utilization: 0.5 - expert_parallel_size: 4 quantization_ignored_layer_kws: [ a_proj, b_proj diff --git a/examples/configs/recipes/llm/performance/grpo-deepseek-v3-32n4g.yaml b/examples/configs/recipes/llm/performance/grpo-deepseek-v3-32n4g.yaml new file mode 100644 index 0000000000..812fdfae9d --- /dev/null +++ b/examples/configs/recipes/llm/performance/grpo-deepseek-v3-32n4g.yaml @@ -0,0 +1,21 @@ +defaults: ./grpo-deepseek-v3-32n8g.yaml +checkpointing: + checkpoint_dir: results/grpo-deepseek-v3-32n4g +policy: + sequence_packing: + enabled: false + megatron_cfg: + pipeline_model_parallel_size: 8 + expert_model_parallel_size: 16 + num_layers_in_first_pipeline_stage: 7 + num_layers_in_last_pipeline_stage: 6 + generation: + vllm_cfg: + tensor_parallel_size: 16 +logger: + log_dir: logs/grpo-deepseek-v3-32n4g + wandb: + name: grpo-deepseek-v3-32n4g +cluster: + gpus_per_node: 4 + num_nodes: 32 diff --git a/examples/configs/recipes/llm/performance/grpo-deepseek-v3-64n4g-async-1off.yaml b/examples/configs/recipes/llm/performance/grpo-deepseek-v3-64n4g-async-1off.yaml new file mode 100644 index 0000000000..bf9a30a5d3 --- /dev/null +++ b/examples/configs/recipes/llm/performance/grpo-deepseek-v3-64n4g-async-1off.yaml @@ -0,0 +1,25 @@ +defaults: ./grpo-deepseek-v3-64n8g-async-1off.yaml +checkpointing: + checkpoint_dir: results/grpo-deepseek-v3-64n4g-async-1off +policy: + sequence_packing: + enabled: false + megatron_cfg: + pipeline_model_parallel_size: 8 + expert_model_parallel_size: 16 + num_layers_in_first_pipeline_stage: 7 + num_layers_in_last_pipeline_stage: 6 + generation: + colocated: + resources: + gpus_per_node: 4 + vllm_cfg: + tensor_parallel_size: 16 + gpu_memory_utilization: 0.8 +logger: + log_dir: logs/grpo-deepseek-v3-64n4g-async-32T32G-1off + wandb: + name: grpo-deepseek-v3-64n4g-async-32T32G-1off +cluster: + gpus_per_node: 4 + num_nodes: 64 diff --git a/examples/configs/recipes/llm/performance/grpo-deepseek-v3-64n8g-fp8-async-1off.yaml b/examples/configs/recipes/llm/performance/grpo-deepseek-v3-64n8g-fp8-async-1off.yaml new file mode 100644 index 0000000000..7f6b5ae86b --- /dev/null +++ b/examples/configs/recipes/llm/performance/grpo-deepseek-v3-64n8g-fp8-async-1off.yaml @@ -0,0 +1,28 @@ +defaults: ./grpo-deepseek-v3-64n8g-async-1off.yaml +checkpointing: + checkpoint_dir: results/grpo-deepseek-v3-64n8g-fp8-async-1off +policy: + megatron_cfg: + fp8_cfg: + enabled: true + fp8: "e4m3" + fp8_recipe: "blockwise" + fp8_param: false + moe_router_dtype: fp32 + env_vars: + NVTE_FP8_BLOCK_SCALING_FP32_SCALES: "1" + generation: + vllm_cfg: + tensor_parallel_size: 16 + precision: "fp8" + use_deep_gemm: true + quantization_ignored_layer_kws: [ + a_proj, + b_proj + ] + vllm_kwargs: + max_num_seqs: 32 +logger: + log_dir: logs/grpo-deepseek-v3-64n8g-fp8-async-1off + wandb: + name: grpo-deepseek-v3-64n8g-fp8-async-1off diff --git a/examples/configs/recipes/llm/performance/grpo-llama3.1-8b-instruct-2n4g-async-1off.yaml b/examples/configs/recipes/llm/performance/grpo-llama3.1-8b-instruct-2n4g-async-1off.yaml new file mode 100644 index 0000000000..d906eda2b4 --- /dev/null +++ b/examples/configs/recipes/llm/performance/grpo-llama3.1-8b-instruct-2n4g-async-1off.yaml @@ -0,0 +1,32 @@ +defaults: ./grpo-llama3.1-8b-instruct-2n4g.yaml +grpo: + async_grpo: + enabled: true + max_trajectory_age_steps: 1 + in_flight_weight_updates: true +loss_fn: + use_importance_sampling_correction: true +checkpointing: + checkpoint_dir: results/grpo-llama3.1-8b-instruct-2n4g-async-1off +policy: + megatron_cfg: + tensor_model_parallel_size: 1 + pipeline_model_parallel_size: 1 + sequence_parallel: false + generation: + colocated: + enabled: false + resources: + num_nodes: 1 + gpus_per_node: 4 + vllm_cfg: + async_engine: true + tensor_parallel_size: 1 + gpu_memory_utilization: 0.8 +logger: + log_dir: logs/grpo-llama3.1-8b-instruct-2n4g-async-1off + wandb: + name: grpo-llama3.1-8b-instruct-2n4g-async-1off +cluster: + gpus_per_node: 4 + num_nodes: 2 diff --git a/examples/configs/recipes/llm/performance/grpo-llama3.1-8b-instruct-2n4g.yaml b/examples/configs/recipes/llm/performance/grpo-llama3.1-8b-instruct-2n4g.yaml new file mode 100644 index 0000000000..a99f7c1498 --- /dev/null +++ b/examples/configs/recipes/llm/performance/grpo-llama3.1-8b-instruct-2n4g.yaml @@ -0,0 +1,58 @@ +defaults: ../../../grpo_math_1B.yaml +grpo: + num_prompts_per_step: 64 + num_generations_per_prompt: 32 + max_num_steps: 500 +loss_fn: + use_importance_sampling_correction: true +checkpointing: + checkpoint_dir: results/grpo-llama3.1-8b-instruct-2n4g +policy: + model_name: meta-llama/Llama-3.1-8B-Instruct + tokenizer: + name: meta-llama/Llama-3.1-8B-Instruct + train_micro_batch_size: 1 + logprob_batch_size: 2 + max_total_sequence_length: 4096 + make_sequence_length_divisible_by: 1 + dtensor_cfg: + enabled: false + megatron_cfg: + enabled: true + empty_unused_memory_level: 1 + converter_type: LlamaForCausalLM + tensor_model_parallel_size: 1 + pipeline_model_parallel_size: 1 + sequence_parallel: false + activation_checkpointing: true + defer_fp32_logits: true + optimizer: + lr: 5.0e-07 + min_lr: 5.0e-08 + weight_decay: 0.0 + use_precision_aware_optimizer: true + scheduler: + lr_warmup_iters: 2 + lr_warmup_init: 5.0e-08 + fp8_cfg: + enabled: false + generation: + max_new_tokens: 4096 + stop_token_ids: + - 128009 + vllm_cfg: + max_model_len: 4096 + tensor_parallel_size: 1 +data: + max_input_seq_length: 4096 +logger: + log_dir: logs/grpo-llama3.1-8b-instruct-2n4g + wandb_enabled: true + tensorboard_enabled: true + wandb: + project: nemo-rl + name: grpo-llama3.1-8b-instruct-2n4g +cluster: + gpus_per_node: 4 + num_nodes: 2 + diff --git a/examples/configs/recipes/llm/performance/grpo-llama3.1-8b-instruct-2n8g-async-1off.yaml b/examples/configs/recipes/llm/performance/grpo-llama3.1-8b-instruct-2n8g-async-1off.yaml index b6d7ed441d..c0263f68fb 100644 --- a/examples/configs/recipes/llm/performance/grpo-llama3.1-8b-instruct-2n8g-async-1off.yaml +++ b/examples/configs/recipes/llm/performance/grpo-llama3.1-8b-instruct-2n8g-async-1off.yaml @@ -9,6 +9,8 @@ loss_fn: checkpointing: checkpoint_dir: results/grpo-llama3.1-8b-instruct-2n8g-async-1off policy: + megatron_cfg: + pipeline_model_parallel_size: 1 generation: colocated: enabled: false diff --git a/examples/configs/recipes/llm/performance/grpo-llama3.1-8b-instruct-2n8g-fp8-async-1off.yaml b/examples/configs/recipes/llm/performance/grpo-llama3.1-8b-instruct-2n8g-fp8-async-1off.yaml new file mode 100644 index 0000000000..b32786f7d7 --- /dev/null +++ b/examples/configs/recipes/llm/performance/grpo-llama3.1-8b-instruct-2n8g-fp8-async-1off.yaml @@ -0,0 +1,20 @@ +defaults: ./grpo-llama3.1-8b-instruct-2n8g-async-1off.yaml +checkpointing: + checkpoint_dir: results/grpo-llama3.1-8b-instruct-2n8g-fp8-async-1off +policy: + megatron_cfg: + fp8_cfg: + enabled: true + fp8: "e4m3" + fp8_recipe: "blockwise" + fp8_param: false + env_vars: + NVTE_FP8_BLOCK_SCALING_FP32_SCALES: "1" + generation: + vllm_cfg: + precision: "fp8" + use_deep_gemm: true +logger: + log_dir: logs/grpo-llama3.1-8b-instruct-2n8g-fp8-async-1off + wandb: + name: grpo-llama3.1-8b-instruct-2n8g-fp8-async-1off \ No newline at end of file diff --git a/examples/configs/recipes/llm/performance/grpo-qwen3-235b-16n4g.yaml b/examples/configs/recipes/llm/performance/grpo-qwen3-235b-16n4g.yaml new file mode 100644 index 0000000000..1640deda09 --- /dev/null +++ b/examples/configs/recipes/llm/performance/grpo-qwen3-235b-16n4g.yaml @@ -0,0 +1,18 @@ +defaults: ./grpo-qwen3-235b-16n8g.yaml +checkpointing: + checkpoint_dir: results/grpo-qwen3-235b-16n4g +policy: + megatron_cfg: + pipeline_model_parallel_size: 4 + num_layers_in_first_pipeline_stage: 23 + num_layers_in_last_pipeline_stage: 23 + generation: + vllm_cfg: + tensor_parallel_size: 8 +logger: + log_dir: logs/grpo-qwen3-235b-16n4g + wandb: + name: grpo-qwen3-235b-16n4g +cluster: + gpus_per_node: 4 + num_nodes: 16 diff --git a/examples/configs/recipes/llm/performance/grpo-qwen3-235b-32n4g-async-1off.yaml b/examples/configs/recipes/llm/performance/grpo-qwen3-235b-32n4g-async-1off.yaml new file mode 100644 index 0000000000..f55b383686 --- /dev/null +++ b/examples/configs/recipes/llm/performance/grpo-qwen3-235b-32n4g-async-1off.yaml @@ -0,0 +1,21 @@ +defaults: ./grpo-qwen3-235b-32n8g-async-1off.yaml +checkpointing: + checkpoint_dir: results/grpo-qwen3-235b-32n4g-async-1off +policy: + megatron_cfg: + pipeline_model_parallel_size: 4 + num_layers_in_first_pipeline_stage: 23 + num_layers_in_last_pipeline_stage: 23 + generation: + colocated: + resources: + gpus_per_node: 4 + vllm_cfg: + tensor_parallel_size: 8 +logger: + log_dir: logs/grpo-qwen3-235b-32n4g-async-1off + wandb: + name: grpo-qwen3-235b-32n4g-async-1off +cluster: + gpus_per_node: 4 + num_nodes: 32 diff --git a/examples/configs/recipes/llm/performance/grpo-qwen3-30ba3b-4n4g.yaml b/examples/configs/recipes/llm/performance/grpo-qwen3-30ba3b-4n4g.yaml new file mode 100644 index 0000000000..21b9746f4b --- /dev/null +++ b/examples/configs/recipes/llm/performance/grpo-qwen3-30ba3b-4n4g.yaml @@ -0,0 +1,45 @@ +defaults: ../../../grpo_math_1B.yaml +grpo: + num_prompts_per_step: 64 + num_generations_per_prompt: 32 +checkpointing: + enabled: false + checkpoint_dir: results/grpo-qwen3-30ba3b-4n4g +policy: + model_name: Qwen/Qwen3-30B-A3B + train_micro_batch_size: 1 + max_total_sequence_length: 4096 + dtensor_cfg: + enabled: false + optimizer: null + scheduler: null + make_sequence_length_divisible_by: ${policy.megatron_cfg.tensor_model_parallel_size} + megatron_cfg: + enabled: true + empty_unused_memory_level: 1 + tensor_model_parallel_size: 1 + pipeline_model_parallel_size: 1 + expert_model_parallel_size: 16 + sequence_parallel: false + optimizer: + lr: 3.0e-07 + min_lr: 3.0e-08 + scheduler: + lr_warmup_iters: 50 + lr_warmup_init: 3.0e-08 + env_vars: + PYTORCH_CUDA_ALLOC_CONF: expandable_segments:False + generation: + vllm_cfg: + tensor_parallel_size: 1 +logger: + log_dir: logs/grpo-qwen3-30ba3b-4n4g + wandb_enabled: true + tensorboard_enabled: true + wandb: + project: nemo-rl + name: grpo-qwen3-30ba3b-4n4g +cluster: + gpus_per_node: 4 + num_nodes: 4 + diff --git a/examples/configs/recipes/llm/performance/grpo-qwen3-30ba3b-8n4g-async-1off.yaml b/examples/configs/recipes/llm/performance/grpo-qwen3-30ba3b-8n4g-async-1off.yaml new file mode 100644 index 0000000000..a9837c87f2 --- /dev/null +++ b/examples/configs/recipes/llm/performance/grpo-qwen3-30ba3b-8n4g-async-1off.yaml @@ -0,0 +1,33 @@ +defaults: ./grpo-qwen3-30ba3b-4n4g.yaml +grpo: + async_grpo: + enabled: true + max_trajectory_age_steps: 1 + in_flight_weight_updates: true +loss_fn: + use_importance_sampling_correction: true +checkpointing: + checkpoint_dir: results/grpo-qwen3-30ba3b-8n4g-async-1off +policy: + megatron_cfg: + tensor_model_parallel_size: 1 + pipeline_model_parallel_size: 1 + expert_model_parallel_size: 16 + sequence_parallel: false + generation: + colocated: + enabled: false + resources: + num_nodes: 4 + gpus_per_node: 4 + vllm_cfg: + async_engine: true + tensor_parallel_size: 1 + gpu_memory_utilization: 0.8 +logger: + log_dir: logs/grpo-qwen3-30ba3b-8n4g-async-1off + wandb: + name: grpo-qwen3-30ba3b-8n4g-async-1off +cluster: + gpus_per_node: 4 + num_nodes: 8 diff --git a/examples/configs/recipes/llm/performance/grpo-qwen3-32b-4n4g.yaml b/examples/configs/recipes/llm/performance/grpo-qwen3-32b-4n4g.yaml new file mode 100644 index 0000000000..2e441cdb5f --- /dev/null +++ b/examples/configs/recipes/llm/performance/grpo-qwen3-32b-4n4g.yaml @@ -0,0 +1,42 @@ +defaults: ../../../grpo_math_1B.yaml +grpo: + num_prompts_per_step: 64 + num_generations_per_prompt: 32 +checkpointing: + enabled: false + checkpoint_dir: results/grpo-qwen3-32b-4n4g +policy: + model_name: Qwen/Qwen3-32B + train_micro_batch_size: 1 + max_total_sequence_length: 4096 + dtensor_cfg: + enabled: false + optimizer: null + scheduler: null + make_sequence_length_divisible_by: ${policy.megatron_cfg.tensor_model_parallel_size} + megatron_cfg: + enabled: true + empty_unused_memory_level: 1 + tensor_model_parallel_size: 2 + pipeline_model_parallel_size: 1 + sequence_parallel: true + optimizer: + lr: 3.0e-07 + min_lr: 3.0e-08 + scheduler: + lr_warmup_iters: 2 + lr_warmup_init: 3.0e-08 + generation: + vllm_cfg: + tensor_parallel_size: 1 +logger: + log_dir: logs/grpo-qwen3-32b-4n4g + wandb_enabled: true + tensorboard_enabled: true + wandb: + project: nemo-rl + name: grpo-qwen3-32b-4n4g +cluster: + gpus_per_node: 4 + num_nodes: 4 + diff --git a/examples/configs/recipes/llm/performance/grpo-qwen3-32b-8n4g-async-1off.yaml b/examples/configs/recipes/llm/performance/grpo-qwen3-32b-8n4g-async-1off.yaml new file mode 100644 index 0000000000..4f8a0a03bb --- /dev/null +++ b/examples/configs/recipes/llm/performance/grpo-qwen3-32b-8n4g-async-1off.yaml @@ -0,0 +1,33 @@ +defaults: ./grpo-qwen3-32b-4n4g.yaml +grpo: + async_grpo: + enabled: true + max_trajectory_age_steps: 1 + in_flight_weight_updates: true +loss_fn: + use_importance_sampling_correction: true +checkpointing: + checkpoint_dir: results/grpo-qwen3-32b-8n4g-async-1off +policy: + megatron_cfg: + tensor_model_parallel_size: 2 + pipeline_model_parallel_size: 1 + sequence_parallel: true + generation: + colocated: + enabled: false + resources: + num_nodes: 4 + gpus_per_node: 4 + vllm_cfg: + async_engine: true + tensor_parallel_size: 1 + gpu_memory_utilization: 0.8 +logger: + log_dir: logs/grpo-qwen3-32b-8n4g-async-1off + wandb: + name: grpo-qwen3-32b-8n4g-async-1off +cluster: + gpus_per_node: 4 + num_nodes: 8 + diff --git a/tests/test_suites/llm/performance/grpo-deepseek-v3-32n4g.sh b/tests/test_suites/llm/performance/grpo-deepseek-v3-32n4g.sh new file mode 100755 index 0000000000..738b38dd5b --- /dev/null +++ b/tests/test_suites/llm/performance/grpo-deepseek-v3-32n4g.sh @@ -0,0 +1,45 @@ +#!/bin/bash +SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd) +source $SCRIPT_DIR/common.env +# disable NVLS to avoid OOM issue +export NCCL_NVLS_ENABLE=0 +# allow user to pass an existing HF checkpoint path based on instruction in https://github.com/NVIDIA-NeMo/RL/blob/main/docs/guides/deepseek.md +export MODEL_NAME=${NRL_DEEPSEEK_V3_HF_CKPT:-"unsloth/DeepSeek-V3-0324-BF16"} + +# ===== BEGIN CONFIG ===== +NUM_NODES=32 +STEPS_PER_RUN=10 +MAX_STEPS=10 +NUM_RUNS=$(( (MAX_STEPS + STEPS_PER_RUN - 1) / STEPS_PER_RUN )) # Round up +NUM_MINUTES=240 +# ===== END CONFIG ===== + +exit_if_max_steps_reached + +# Run the experiment +cd $PROJECT_ROOT +uv run examples/run_grpo_math.py \ + --config $CONFIG_PATH \ + grpo.max_num_steps=$MAX_STEPS \ + policy.model_name=$MODEL_NAME \ + policy.tokenizer.name=$MODEL_NAME \ + logger.log_dir=$LOG_DIR \ + logger.wandb_enabled=True \ + logger.wandb.project=nemo-rl \ + logger.wandb.name=$EXP_NAME \ + logger.monitor_gpus=True \ + logger.tensorboard_enabled=True \ + checkpointing.enabled=True \ + checkpointing.checkpoint_dir=$CKPT_DIR \ + $@ \ + 2>&1 | tee $RUN_LOG + +# Convert tensorboard logs to json +uv run tests/json_dump_tb_logs.py $LOG_DIR --output_path $JSON_METRICS + +# Only run metrics if the target step is reached +if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | map(tonumber) | max' $JSON_METRICS) -ge $MAX_STEPS ]]; then + uv run tests/check_metrics.py $JSON_METRICS \ + 'mean(data["train/token_mult_prob_error"]) < 1.1' \ + 'data["train/token_mult_prob_error"]["10"] < 1.1' +fi diff --git a/tests/test_suites/llm/performance/grpo-deepseek-v3-64n4g-async-1off.sh b/tests/test_suites/llm/performance/grpo-deepseek-v3-64n4g-async-1off.sh new file mode 100755 index 0000000000..14138486e1 --- /dev/null +++ b/tests/test_suites/llm/performance/grpo-deepseek-v3-64n4g-async-1off.sh @@ -0,0 +1,45 @@ +#!/bin/bash +SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd) +source $SCRIPT_DIR/common.env +# disable NVLS to avoid OOM issue +export NCCL_NVLS_ENABLE=0 +# allow user to pass an existing HF checkpoint path based on instruction in https://github.com/NVIDIA-NeMo/RL/blob/main/docs/guides/deepseek.md +export MODEL_NAME=${NRL_DEEPSEEK_V3_HF_CKPT:-"unsloth/DeepSeek-V3-0324-BF16"} + +# ===== BEGIN CONFIG ===== +NUM_NODES=64 +STEPS_PER_RUN=10 +MAX_STEPS=10 +NUM_RUNS=$(( (MAX_STEPS + STEPS_PER_RUN - 1) / STEPS_PER_RUN )) # Round up +NUM_MINUTES=240 +# ===== END CONFIG ===== + +exit_if_max_steps_reached + +# Run the experiment +cd $PROJECT_ROOT +uv run examples/run_grpo_math.py \ + --config $CONFIG_PATH \ + grpo.max_num_steps=$MAX_STEPS \ + policy.model_name=$MODEL_NAME \ + policy.tokenizer.name=$MODEL_NAME \ + logger.log_dir=$LOG_DIR \ + logger.wandb_enabled=True \ + logger.wandb.project=nemo-rl \ + logger.wandb.name=$EXP_NAME \ + logger.monitor_gpus=True \ + logger.tensorboard_enabled=True \ + checkpointing.enabled=True \ + checkpointing.checkpoint_dir=$CKPT_DIR \ + $@ \ + 2>&1 | tee $RUN_LOG + +# Convert tensorboard logs to json +uv run tests/json_dump_tb_logs.py $LOG_DIR --output_path $JSON_METRICS + +# Only run metrics if the target step is reached +if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | map(tonumber) | max' $JSON_METRICS) -ge $MAX_STEPS ]]; then + uv run tests/check_metrics.py $JSON_METRICS \ + 'mean(data["train/token_mult_prob_error"]) < 1.1' \ + 'data["train/token_mult_prob_error"]["10"] < 1.1' +fi diff --git a/tests/test_suites/llm/performance/grpo-deepseek-v3-64n8g-fp8-async-1off.sh b/tests/test_suites/llm/performance/grpo-deepseek-v3-64n8g-fp8-async-1off.sh new file mode 100755 index 0000000000..14138486e1 --- /dev/null +++ b/tests/test_suites/llm/performance/grpo-deepseek-v3-64n8g-fp8-async-1off.sh @@ -0,0 +1,45 @@ +#!/bin/bash +SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd) +source $SCRIPT_DIR/common.env +# disable NVLS to avoid OOM issue +export NCCL_NVLS_ENABLE=0 +# allow user to pass an existing HF checkpoint path based on instruction in https://github.com/NVIDIA-NeMo/RL/blob/main/docs/guides/deepseek.md +export MODEL_NAME=${NRL_DEEPSEEK_V3_HF_CKPT:-"unsloth/DeepSeek-V3-0324-BF16"} + +# ===== BEGIN CONFIG ===== +NUM_NODES=64 +STEPS_PER_RUN=10 +MAX_STEPS=10 +NUM_RUNS=$(( (MAX_STEPS + STEPS_PER_RUN - 1) / STEPS_PER_RUN )) # Round up +NUM_MINUTES=240 +# ===== END CONFIG ===== + +exit_if_max_steps_reached + +# Run the experiment +cd $PROJECT_ROOT +uv run examples/run_grpo_math.py \ + --config $CONFIG_PATH \ + grpo.max_num_steps=$MAX_STEPS \ + policy.model_name=$MODEL_NAME \ + policy.tokenizer.name=$MODEL_NAME \ + logger.log_dir=$LOG_DIR \ + logger.wandb_enabled=True \ + logger.wandb.project=nemo-rl \ + logger.wandb.name=$EXP_NAME \ + logger.monitor_gpus=True \ + logger.tensorboard_enabled=True \ + checkpointing.enabled=True \ + checkpointing.checkpoint_dir=$CKPT_DIR \ + $@ \ + 2>&1 | tee $RUN_LOG + +# Convert tensorboard logs to json +uv run tests/json_dump_tb_logs.py $LOG_DIR --output_path $JSON_METRICS + +# Only run metrics if the target step is reached +if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | map(tonumber) | max' $JSON_METRICS) -ge $MAX_STEPS ]]; then + uv run tests/check_metrics.py $JSON_METRICS \ + 'mean(data["train/token_mult_prob_error"]) < 1.1' \ + 'data["train/token_mult_prob_error"]["10"] < 1.1' +fi diff --git a/tests/test_suites/llm/performance/grpo-llama3.1-8b-instruct-2n4g-async-1off.sh b/tests/test_suites/llm/performance/grpo-llama3.1-8b-instruct-2n4g-async-1off.sh new file mode 100755 index 0000000000..e7636f3e93 --- /dev/null +++ b/tests/test_suites/llm/performance/grpo-llama3.1-8b-instruct-2n4g-async-1off.sh @@ -0,0 +1,39 @@ +#!/bin/bash +SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd) +source $SCRIPT_DIR/common.env + +# ===== BEGIN CONFIG ===== +NUM_NODES=2 +STEPS_PER_RUN=10 +MAX_STEPS=10 +NUM_RUNS=$(( (MAX_STEPS + STEPS_PER_RUN - 1) / STEPS_PER_RUN )) # Round up +NUM_MINUTES=100 +# ===== END CONFIG ===== + +exit_if_max_steps_reached + +# Run the experiment +cd $PROJECT_ROOT +uv run examples/run_grpo_math.py \ + --config $CONFIG_PATH \ + grpo.max_num_steps=$MAX_STEPS \ + logger.log_dir=$LOG_DIR \ + logger.wandb_enabled=True \ + logger.wandb.project=nemo-rl \ + logger.wandb.name=$EXP_NAME \ + logger.monitor_gpus=True \ + logger.tensorboard_enabled=True \ + checkpointing.enabled=True \ + checkpointing.checkpoint_dir=$CKPT_DIR \ + $@ \ + 2>&1 | tee $RUN_LOG + +# Convert tensorboard logs to json +uv run tests/json_dump_tb_logs.py $LOG_DIR --output_path $JSON_METRICS + +# Only run metrics if the target step is reached +if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | map(tonumber) | max' $JSON_METRICS) -ge $MAX_STEPS ]]; then + uv run tests/check_metrics.py $JSON_METRICS \ + 'mean(data["train/token_mult_prob_error"]) < 1.1' \ + 'data["train/token_mult_prob_error"]["10"] < 1.1' +fi diff --git a/tests/test_suites/llm/performance/grpo-llama3.1-8b-instruct-2n4g.sh b/tests/test_suites/llm/performance/grpo-llama3.1-8b-instruct-2n4g.sh new file mode 100755 index 0000000000..e7636f3e93 --- /dev/null +++ b/tests/test_suites/llm/performance/grpo-llama3.1-8b-instruct-2n4g.sh @@ -0,0 +1,39 @@ +#!/bin/bash +SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd) +source $SCRIPT_DIR/common.env + +# ===== BEGIN CONFIG ===== +NUM_NODES=2 +STEPS_PER_RUN=10 +MAX_STEPS=10 +NUM_RUNS=$(( (MAX_STEPS + STEPS_PER_RUN - 1) / STEPS_PER_RUN )) # Round up +NUM_MINUTES=100 +# ===== END CONFIG ===== + +exit_if_max_steps_reached + +# Run the experiment +cd $PROJECT_ROOT +uv run examples/run_grpo_math.py \ + --config $CONFIG_PATH \ + grpo.max_num_steps=$MAX_STEPS \ + logger.log_dir=$LOG_DIR \ + logger.wandb_enabled=True \ + logger.wandb.project=nemo-rl \ + logger.wandb.name=$EXP_NAME \ + logger.monitor_gpus=True \ + logger.tensorboard_enabled=True \ + checkpointing.enabled=True \ + checkpointing.checkpoint_dir=$CKPT_DIR \ + $@ \ + 2>&1 | tee $RUN_LOG + +# Convert tensorboard logs to json +uv run tests/json_dump_tb_logs.py $LOG_DIR --output_path $JSON_METRICS + +# Only run metrics if the target step is reached +if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | map(tonumber) | max' $JSON_METRICS) -ge $MAX_STEPS ]]; then + uv run tests/check_metrics.py $JSON_METRICS \ + 'mean(data["train/token_mult_prob_error"]) < 1.1' \ + 'data["train/token_mult_prob_error"]["10"] < 1.1' +fi diff --git a/tests/test_suites/llm/performance/grpo-llama3.1-8b-instruct-2n8g-fp8-async-1off.sh b/tests/test_suites/llm/performance/grpo-llama3.1-8b-instruct-2n8g-fp8-async-1off.sh new file mode 100755 index 0000000000..e7636f3e93 --- /dev/null +++ b/tests/test_suites/llm/performance/grpo-llama3.1-8b-instruct-2n8g-fp8-async-1off.sh @@ -0,0 +1,39 @@ +#!/bin/bash +SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd) +source $SCRIPT_DIR/common.env + +# ===== BEGIN CONFIG ===== +NUM_NODES=2 +STEPS_PER_RUN=10 +MAX_STEPS=10 +NUM_RUNS=$(( (MAX_STEPS + STEPS_PER_RUN - 1) / STEPS_PER_RUN )) # Round up +NUM_MINUTES=100 +# ===== END CONFIG ===== + +exit_if_max_steps_reached + +# Run the experiment +cd $PROJECT_ROOT +uv run examples/run_grpo_math.py \ + --config $CONFIG_PATH \ + grpo.max_num_steps=$MAX_STEPS \ + logger.log_dir=$LOG_DIR \ + logger.wandb_enabled=True \ + logger.wandb.project=nemo-rl \ + logger.wandb.name=$EXP_NAME \ + logger.monitor_gpus=True \ + logger.tensorboard_enabled=True \ + checkpointing.enabled=True \ + checkpointing.checkpoint_dir=$CKPT_DIR \ + $@ \ + 2>&1 | tee $RUN_LOG + +# Convert tensorboard logs to json +uv run tests/json_dump_tb_logs.py $LOG_DIR --output_path $JSON_METRICS + +# Only run metrics if the target step is reached +if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | map(tonumber) | max' $JSON_METRICS) -ge $MAX_STEPS ]]; then + uv run tests/check_metrics.py $JSON_METRICS \ + 'mean(data["train/token_mult_prob_error"]) < 1.1' \ + 'data["train/token_mult_prob_error"]["10"] < 1.1' +fi diff --git a/tests/test_suites/llm/performance/grpo-qwen3-235b-16n4g.sh b/tests/test_suites/llm/performance/grpo-qwen3-235b-16n4g.sh new file mode 100755 index 0000000000..0f9bf9289f --- /dev/null +++ b/tests/test_suites/llm/performance/grpo-qwen3-235b-16n4g.sh @@ -0,0 +1,40 @@ +#!/bin/bash +SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd) +source $SCRIPT_DIR/common.env +# disable NVLS to avoid OOM issue +export NCCL_NVLS_ENABLE=0 + +# ===== BEGIN CONFIG ===== +NUM_NODES=16 +STEPS_PER_RUN=10 +MAX_STEPS=10 +NUM_RUNS=$(( (MAX_STEPS + STEPS_PER_RUN - 1) / STEPS_PER_RUN )) # Round up +NUM_MINUTES=100 +# ===== END CONFIG ===== + +exit_if_max_steps_reached + +# Run the experiment +cd $PROJECT_ROOT +uv run examples/run_grpo_math.py \ + --config $CONFIG_PATH \ + grpo.max_num_steps=$MAX_STEPS \ + logger.log_dir=$LOG_DIR \ + logger.wandb_enabled=True \ + logger.wandb.project=nemo-rl \ + logger.wandb.name=$EXP_NAME \ + logger.monitor_gpus=True \ + checkpointing.enabled=True \ + checkpointing.checkpoint_dir=$CKPT_DIR \ + $@ \ + 2>&1 | tee $RUN_LOG + +# Convert tensorboard logs to json +uv run tests/json_dump_tb_logs.py $LOG_DIR --output_path $JSON_METRICS + +# Only run metrics if the target step is reached +if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | map(tonumber) | max' $JSON_METRICS) -ge $MAX_STEPS ]]; then + uv run tests/check_metrics.py $JSON_METRICS \ + 'mean(data["train/token_mult_prob_error"]) < 1.1' \ + 'data["train/token_mult_prob_error"]["10"] < 1.1' +fi diff --git a/tests/test_suites/llm/performance/grpo-qwen3-235b-32n4g-async-1off.sh b/tests/test_suites/llm/performance/grpo-qwen3-235b-32n4g-async-1off.sh new file mode 100755 index 0000000000..f7dac553af --- /dev/null +++ b/tests/test_suites/llm/performance/grpo-qwen3-235b-32n4g-async-1off.sh @@ -0,0 +1,40 @@ +#!/bin/bash +SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd) +source $SCRIPT_DIR/common.env +# disable NVLS to avoid OOM issue +export NCCL_NVLS_ENABLE=0 + +# ===== BEGIN CONFIG ===== +NUM_NODES=32 +STEPS_PER_RUN=10 +MAX_STEPS=10 +NUM_RUNS=$(( (MAX_STEPS + STEPS_PER_RUN - 1) / STEPS_PER_RUN )) # Round up +NUM_MINUTES=100 +# ===== END CONFIG ===== + +exit_if_max_steps_reached + +# Run the experiment +cd $PROJECT_ROOT +uv run examples/run_grpo_math.py \ + --config $CONFIG_PATH \ + grpo.max_num_steps=$MAX_STEPS \ + logger.log_dir=$LOG_DIR \ + logger.wandb_enabled=True \ + logger.wandb.project=nemo-rl \ + logger.wandb.name=$EXP_NAME \ + logger.monitor_gpus=True \ + checkpointing.enabled=True \ + checkpointing.checkpoint_dir=$CKPT_DIR \ + $@ \ + 2>&1 | tee $RUN_LOG + +# Convert tensorboard logs to json +uv run tests/json_dump_tb_logs.py $LOG_DIR --output_path $JSON_METRICS + +# Only run metrics if the target step is reached +if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | map(tonumber) | max' $JSON_METRICS) -ge $MAX_STEPS ]]; then + uv run tests/check_metrics.py $JSON_METRICS \ + 'mean(data["train/token_mult_prob_error"]) < 1.1' \ + 'data["train/token_mult_prob_error"]["10"] < 1.1' +fi diff --git a/tests/test_suites/llm/performance/grpo-qwen3-30ba3b-4n4g.sh b/tests/test_suites/llm/performance/grpo-qwen3-30ba3b-4n4g.sh new file mode 100755 index 0000000000..2a56609ffd --- /dev/null +++ b/tests/test_suites/llm/performance/grpo-qwen3-30ba3b-4n4g.sh @@ -0,0 +1,40 @@ +#!/bin/bash +SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd) +source $SCRIPT_DIR/common.env + +# ===== BEGIN CONFIG ===== +NUM_NODES=4 +STEPS_PER_RUN=10 +MAX_STEPS=10 +NUM_RUNS=$(( (MAX_STEPS + STEPS_PER_RUN - 1) / STEPS_PER_RUN )) # Round up +NUM_MINUTES=100 +# ===== END CONFIG ===== + +exit_if_max_steps_reached + +# Run the experiment +cd $PROJECT_ROOT +uv run examples/run_grpo_math.py \ + --config $CONFIG_PATH \ + grpo.max_num_steps=$MAX_STEPS \ + logger.log_dir=$LOG_DIR \ + logger.wandb_enabled=True \ + logger.wandb.project=nemo-rl \ + logger.wandb.name=$EXP_NAME \ + logger.monitor_gpus=True \ + logger.tensorboard_enabled=True \ + checkpointing.enabled=True \ + checkpointing.checkpoint_dir=$CKPT_DIR \ + $@ \ + 2>&1 | tee $RUN_LOG + +# Convert tensorboard logs to json +uv run tests/json_dump_tb_logs.py $LOG_DIR --output_path $JSON_METRICS + +# Only run metrics if the target step is reached +if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | map(tonumber) | max' $JSON_METRICS) -ge $MAX_STEPS ]]; then + uv run tests/check_metrics.py $JSON_METRICS \ + 'mean(data["train/token_mult_prob_error"]) < 1.1' \ + 'data["train/token_mult_prob_error"]["10"] < 1.1' +fi + diff --git a/tests/test_suites/llm/performance/grpo-qwen3-30ba3b-8n4g-async-1off.sh b/tests/test_suites/llm/performance/grpo-qwen3-30ba3b-8n4g-async-1off.sh new file mode 100755 index 0000000000..8350d128e8 --- /dev/null +++ b/tests/test_suites/llm/performance/grpo-qwen3-30ba3b-8n4g-async-1off.sh @@ -0,0 +1,40 @@ +#!/bin/bash +SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd) +source $SCRIPT_DIR/common.env + +# ===== BEGIN CONFIG ===== +NUM_NODES=8 +STEPS_PER_RUN=10 +MAX_STEPS=10 +NUM_RUNS=$(( (MAX_STEPS + STEPS_PER_RUN - 1) / STEPS_PER_RUN )) # Round up +NUM_MINUTES=100 +# ===== END CONFIG ===== + +exit_if_max_steps_reached + +# Run the experiment +cd $PROJECT_ROOT +uv run examples/run_grpo_math.py \ + --config $CONFIG_PATH \ + grpo.max_num_steps=$MAX_STEPS \ + logger.log_dir=$LOG_DIR \ + logger.wandb_enabled=True \ + logger.wandb.project=nemo-rl \ + logger.wandb.name=$EXP_NAME \ + logger.monitor_gpus=True \ + logger.tensorboard_enabled=True \ + checkpointing.enabled=True \ + checkpointing.checkpoint_dir=$CKPT_DIR \ + $@ \ + 2>&1 | tee $RUN_LOG + +# Convert tensorboard logs to json +uv run tests/json_dump_tb_logs.py $LOG_DIR --output_path $JSON_METRICS + +# Only run metrics if the target step is reached +if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | map(tonumber) | max' $JSON_METRICS) -ge $MAX_STEPS ]]; then + uv run tests/check_metrics.py $JSON_METRICS \ + 'mean(data["train/token_mult_prob_error"]) < 1.1' \ + 'data["train/token_mult_prob_error"]["10"] < 1.1' +fi + diff --git a/tests/test_suites/llm/performance/grpo-qwen3-32b-4n4g.sh b/tests/test_suites/llm/performance/grpo-qwen3-32b-4n4g.sh new file mode 100755 index 0000000000..2a56609ffd --- /dev/null +++ b/tests/test_suites/llm/performance/grpo-qwen3-32b-4n4g.sh @@ -0,0 +1,40 @@ +#!/bin/bash +SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd) +source $SCRIPT_DIR/common.env + +# ===== BEGIN CONFIG ===== +NUM_NODES=4 +STEPS_PER_RUN=10 +MAX_STEPS=10 +NUM_RUNS=$(( (MAX_STEPS + STEPS_PER_RUN - 1) / STEPS_PER_RUN )) # Round up +NUM_MINUTES=100 +# ===== END CONFIG ===== + +exit_if_max_steps_reached + +# Run the experiment +cd $PROJECT_ROOT +uv run examples/run_grpo_math.py \ + --config $CONFIG_PATH \ + grpo.max_num_steps=$MAX_STEPS \ + logger.log_dir=$LOG_DIR \ + logger.wandb_enabled=True \ + logger.wandb.project=nemo-rl \ + logger.wandb.name=$EXP_NAME \ + logger.monitor_gpus=True \ + logger.tensorboard_enabled=True \ + checkpointing.enabled=True \ + checkpointing.checkpoint_dir=$CKPT_DIR \ + $@ \ + 2>&1 | tee $RUN_LOG + +# Convert tensorboard logs to json +uv run tests/json_dump_tb_logs.py $LOG_DIR --output_path $JSON_METRICS + +# Only run metrics if the target step is reached +if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | map(tonumber) | max' $JSON_METRICS) -ge $MAX_STEPS ]]; then + uv run tests/check_metrics.py $JSON_METRICS \ + 'mean(data["train/token_mult_prob_error"]) < 1.1' \ + 'data["train/token_mult_prob_error"]["10"] < 1.1' +fi + diff --git a/tests/test_suites/llm/performance/grpo-qwen3-32b-8n4g-async-1off.sh b/tests/test_suites/llm/performance/grpo-qwen3-32b-8n4g-async-1off.sh new file mode 100755 index 0000000000..35d58c98f7 --- /dev/null +++ b/tests/test_suites/llm/performance/grpo-qwen3-32b-8n4g-async-1off.sh @@ -0,0 +1,39 @@ +#!/bin/bash +SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd) +source $SCRIPT_DIR/common.env + +# ===== BEGIN CONFIG ===== +NUM_NODES=8 +STEPS_PER_RUN=10 +MAX_STEPS=10 +NUM_RUNS=$(( (MAX_STEPS + STEPS_PER_RUN - 1) / STEPS_PER_RUN )) # Round up +NUM_MINUTES=100 +# ===== END CONFIG ===== + +exit_if_max_steps_reached + +# Run the experiment +cd $PROJECT_ROOT +uv run examples/run_grpo_math.py \ + --config $CONFIG_PATH \ + grpo.max_num_steps=$MAX_STEPS \ + logger.log_dir=$LOG_DIR \ + logger.wandb_enabled=True \ + logger.wandb.project=nemo-rl \ + logger.wandb.name=$EXP_NAME \ + logger.monitor_gpus=True \ + logger.tensorboard_enabled=True \ + checkpointing.enabled=True \ + checkpointing.checkpoint_dir=$CKPT_DIR \ + $@ \ + 2>&1 | tee $RUN_LOG + +# Convert tensorboard logs to json +uv run tests/json_dump_tb_logs.py $LOG_DIR --output_path $JSON_METRICS + +# Only run metrics if the target step is reached +if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | map(tonumber) | max' $JSON_METRICS) -ge $MAX_STEPS ]]; then + uv run tests/check_metrics.py $JSON_METRICS \ + 'mean(data["train/token_mult_prob_error"]) < 1.1' \ + 'data["train/token_mult_prob_error"]["10"] < 1.1' +fi diff --git a/tests/test_suites/performance_gb200.txt b/tests/test_suites/performance_gb200.txt new file mode 100644 index 0000000000..d958386001 --- /dev/null +++ b/tests/test_suites/performance_gb200.txt @@ -0,0 +1,19 @@ +######## +# GRPO # +######## + +# GB200 BF16 + +## SYNC +tests/test_suites/llm/performance/grpo-llama3.1-8b-instruct-2n4g.sh +tests/test_suites/llm/performance/grpo-qwen3-32b-4n4g.sh +tests/test_suites/llm/performance/grpo-qwen3-30ba3b-4n4g.sh +tests/test_suites/llm/performance/grpo-deepseek-v3-32n4g.sh +tests/test_suites/llm/performance/grpo-qwen3-235b-16n4g.sh + +## ASYNC 1-off +tests/test_suites/llm/performance/grpo-llama3.1-8b-instruct-2n4g-async-1off.sh +tests/test_suites/llm/performance/grpo-qwen3-32b-8n4g-async-1off.sh +tests/test_suites/llm/performance/grpo-qwen3-30ba3b-8n4g-async-1off.sh +tests/test_suites/llm/performance/grpo-deepseek-v3-64n4g-async-1off.sh +tests/test_suites/llm/performance/grpo-qwen3-235b-32n4g-async-1off.sh diff --git a/tests/test_suites/performance.txt b/tests/test_suites/performance_h100.txt similarity index 75% rename from tests/test_suites/performance.txt rename to tests/test_suites/performance_h100.txt index bf714b0e74..9e3eb208ce 100644 --- a/tests/test_suites/performance.txt +++ b/tests/test_suites/performance_h100.txt @@ -2,16 +2,28 @@ # GRPO # ######## +# H100 BF16 + +## SYNC tests/test_suites/llm/performance/grpo-llama3.1-8b-instruct-2n8g.sh tests/test_suites/llm/performance/grpo-qwen3-30ba3b-4n8g.sh tests/test_suites/llm/performance/grpo-deepseek-v3-32n8g.sh tests/test_suites/llm/performance/grpo-qwen3-32b-4n8g.sh tests/test_suites/llm/performance/grpo-qwen3-235b-16n8g.sh +## ASYNC 1-off tests/test_suites/llm/performance/grpo-deepseek-v3-64n8g-async-1off.sh tests/test_suites/llm/performance/grpo-llama3.1-8b-instruct-2n8g-async-1off.sh tests/test_suites/llm/performance/grpo-qwen3-32b-8n8g-async-1off.sh tests/test_suites/llm/performance/grpo-qwen3-235b-32n8g-async-1off.sh tests/test_suites/llm/performance/grpo-qwen3-30ba3b-4n8g-async-1off.sh -tests/test_suites/llm/performance/grpo-qwen3-30ba3b-24n8g-async-8off.sh \ No newline at end of file +## ASYNC many-off +tests/test_suites/llm/performance/grpo-qwen3-30ba3b-24n8g-async-8off.sh + +# H100 FP8 + +## ASYNC 1-off +tests/test_suites/llm/performance/grpo-deepseek-v3-64n8g-fp8-async-1off.sh +tests/test_suites/llm/performance/grpo-llama3.1-8b-instruct-2n8g-fp8-async-1off.sh + diff --git a/tests/unit/test_recipes_and_test_suites.py b/tests/unit/test_recipes_and_test_suites.py index 435742ec4a..ade6d49d87 100644 --- a/tests/unit/test_recipes_and_test_suites.py +++ b/tests/unit/test_recipes_and_test_suites.py @@ -28,7 +28,10 @@ nightly_test_suite_path = os.path.join(test_suites_dir, "nightly.txt") release_test_suite_path = os.path.join(test_suites_dir, "release.txt") -performance_test_suite_path = os.path.join(test_suites_dir, "performance.txt") +h100_performance_test_suite_path = os.path.join(test_suites_dir, "performance_h100.txt") +gb200_performance_test_suite_path = os.path.join( + test_suites_dir, "performance_gb200.txt" +) # Relative to project root ALGO_MAPPING_TO_BASE_YAML = { @@ -72,7 +75,12 @@ def release_test_suite(): @pytest.fixture def performance_test_suite(): performance_suite = [] - with open(performance_test_suite_path, "r") as f: + with open(h100_performance_test_suite_path, "r") as f: + for line in f: + line = line.strip() + if line and not line.startswith("#"): + performance_suite.append(line) + with open(gb200_performance_test_suite_path, "r") as f: for line in f: line = line.strip() if line and not line.startswith("#"): @@ -104,12 +112,14 @@ def all_recipe_yaml_rel_paths(): [ nightly_test_suite_path, release_test_suite_path, - performance_test_suite_path, + h100_performance_test_suite_path, + gb200_performance_test_suite_path, ], ids=[ "nightly_test_suite", "release_test_suite", - "performance_test_suite", + "h100_performance_test_suite", + "gb200_performance_test_suite", ], ) def test_test_suites_exist(test_suite_path): From b527f27b752b36a12fe9d5a2988d0c566b8761a5 Mon Sep 17 00:00:00 2001 From: Guyue Huang <140554423+guyueh1@users.noreply.github.com> Date: Sat, 20 Dec 2025 09:27:54 -0800 Subject: [PATCH 16/52] fix: Fix fp8 after vllm v0.11.2 bump (#1660) Signed-off-by: Guyue Huang Signed-off-by: Parth Mannan --- nemo_rl/models/generation/fp8.py | 78 ++++++++++++-------------------- 1 file changed, 29 insertions(+), 49 deletions(-) diff --git a/nemo_rl/models/generation/fp8.py b/nemo_rl/models/generation/fp8.py index 4f42b79e1d..9acf6a88ef 100644 --- a/nemo_rl/models/generation/fp8.py +++ b/nemo_rl/models/generation/fp8.py @@ -80,11 +80,11 @@ def my_run_engine_core(*args, **kwargs): def monkey_patch_vllm_ray_executor(fp8_config): if fp8_config.model_parallel_size > 1: - # we patch vllm's _run_workers so that before vllm initalizes the model on each rank, we execute + # we patch vllm's collective_rpc so that before vllm initalizes the model on each rank, we execute # a ray remote that patches each worker with the required fp8 vllm patches from vllm.v1.executor.ray_distributed_executor import RayDistributedExecutor - original_run_workers = RayDistributedExecutor._run_workers + original_run_workers = RayDistributedExecutor.collective_rpc def patched_run_workers(self, *args, **kwargs): global fp8_patches_applied @@ -98,7 +98,7 @@ def patched_run_workers(self, *args, **kwargs): return original_run_workers(self, *args, **kwargs) - RayDistributedExecutor._run_workers = patched_run_workers + RayDistributedExecutor.collective_rpc = patched_run_workers else: # for single gpu there is no ray, so just call the patches apply_fp8_patches(None, fp8_config) @@ -225,8 +225,6 @@ def apply_fp8_patches(self, fp8_config): patcher4 = patch(func4_path, _per_token_group_quant_fp8_colmajor) fp8_state.vllm_patches.append(patcher2, patcher3, patcher4) - # Apply KV cache patches only when using FP8 KV cache (kv_cache_dtype=fp8) - if global_fp8_config.kv_cache_dtype == "fp8": # Static scales mode: patch process_weights_after_loading to preserve k_scale/v_scale for manual updates func5_path = "vllm.model_executor.layers.quantization.kv_cache.BaseKVCacheMethod.process_weights_after_loading" patcher5 = patch(func5_path, process_weights_after_loading_kv) @@ -593,7 +591,7 @@ def process_weights_after_loading(self, layer) -> None: layer.weight.data = weight.data if hasattr(layer, "weight_scale"): # Not the first time to call this function, just need to update the data - layer.weight_scale.data = weight_scale.data + layer.weight_scale.copy_(weight_scale.data) else: # The first time to call this function, create a new parameter and update the tp status layer.weight_scale = torch.nn.Parameter(weight_scale.data, requires_grad=False) @@ -609,68 +607,50 @@ def process_weights_after_loading_moe(self, layer) -> None: new torch.nn.Parameter objects, because that removes the weight_loader attribute which we need for refit. """ # Lazy import to avoid importing triton too early. - from vllm.model_executor.layers.fused_moe.rocm_aiter_fused_moe import ( - is_rocm_aiter_moe_enabled, - ) + from vllm._aiter_ops import rocm_aiter_ops from vllm.model_executor.layers.quantization.utils.flashinfer_utils import ( swap_w13_to_w31, ) from vllm.model_executor.layers.quantization.utils.fp8_utils import ( - expert_weight_is_col_major, - requant_weight_ue8m0_inplace, + deepgemm_post_process_fp8_weight_block, ) from vllm.utils.deep_gemm import ( - get_col_major_tma_aligned_tensor, is_deep_gemm_e8m0_used, ) - self.rocm_aiter_moe_enabled = is_rocm_aiter_moe_enabled() + self.rocm_aiter_moe_enabled = rocm_aiter_ops.is_fused_moe_enabled() assert self.block_quant and self.quant_config.is_checkpoint_fp8_serialized assert self.quant_config.activation_scheme == "dynamic" if self.flashinfer_moe_backend is not None: - layer.w13_weight.data = swap_w13_to_w31(layer.w13_weight.data) - layer.w13_weight_scale_inv.data = swap_w13_to_w31( - layer.w13_weight_scale_inv.data - ) + w13_weight = swap_w13_to_w31(layer.w13_weight.data) + w13_weight_scale_inv = swap_w13_to_w31(layer.w13_weight_scale_inv.data) + else: + w13_weight = layer.w13_weight.data + w13_weight_scale_inv = layer.w13_weight_scale_inv.data + w2_weight = layer.w2_weight.data + w2_weight_scale_inv = layer.w2_weight_scale_inv.data # DeepGemm scales need to be transposed and aligned. We try to do # it ahead of time for performance reasons. - if self.allow_deep_gemm and not is_deep_gemm_e8m0_used(): - if expert_weight_is_col_major(layer.w13_weight_scale_inv): - layer.w13_weight_scale_inv = get_col_major_tma_aligned_tensor( - layer.w13_weight_scale_inv - ) - if expert_weight_is_col_major(layer.w2_weight_scale_inv): - layer.w2_weight_scale_inv = get_col_major_tma_aligned_tensor( - layer.w2_weight_scale_inv - ) - - if is_deep_gemm_e8m0_used(): - assert layer.weight_block_size is not None - # Re-quantise the expert weights so their scales are UE8M0. - block_sz = tuple(layer.weight_block_size) - requant_weight_ue8m0_inplace( - layer.w13_weight.data, - layer.w13_weight_scale_inv.data, - block_sz, + if self.allow_deep_gemm: + w13_weight, w13_weight_scale_inv = deepgemm_post_process_fp8_weight_block( + wq=w13_weight, + ws=w13_weight_scale_inv, + quant_block_shape=tuple(layer.weight_block_size), + use_e8m0=is_deep_gemm_e8m0_used(), ) - requant_weight_ue8m0_inplace( - layer.w2_weight.data, - layer.w2_weight_scale_inv.data, - block_sz, + w2_weight, w2_weight_scale_inv = deepgemm_post_process_fp8_weight_block( + wq=w2_weight, + ws=w2_weight_scale_inv, + quant_block_shape=tuple(layer.weight_block_size), + use_e8m0=is_deep_gemm_e8m0_used(), ) - - # Ensure column-major TMA alignment expected by DeepGEMM. - if expert_weight_is_col_major(layer.w13_weight_scale_inv): - layer.w13_weight_scale_inv = get_col_major_tma_aligned_tensor( - layer.w13_weight_scale_inv - ) - if expert_weight_is_col_major(layer.w2_weight_scale_inv): - layer.w2_weight_scale_inv = get_col_major_tma_aligned_tensor( - layer.w2_weight_scale_inv - ) + layer.w13_weight.copy_(w13_weight) + layer.w13_weight_scale_inv.copy_(w13_weight_scale_inv) + layer.w2_weight.copy_(w2_weight) + layer.w2_weight_scale_inv.copy_(w2_weight_scale_inv) def process_weights_after_loading_kv(self, layer) -> None: From 21d75b2863b3352a264bbf2517b880c7383d27f2 Mon Sep 17 00:00:00 2001 From: Yi-Fu Wu Date: Sun, 21 Dec 2025 23:09:19 -0800 Subject: [PATCH 17/52] fix: Fix crash when using activation_checkpointing (#1676) Signed-off-by: Yi-Fu Wu Signed-off-by: Parth Mannan --- nemo_rl/models/policy/workers/dtensor_policy_worker_v2.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/nemo_rl/models/policy/workers/dtensor_policy_worker_v2.py b/nemo_rl/models/policy/workers/dtensor_policy_worker_v2.py index 4ec712929b..2232f87c6f 100644 --- a/nemo_rl/models/policy/workers/dtensor_policy_worker_v2.py +++ b/nemo_rl/models/policy/workers/dtensor_policy_worker_v2.py @@ -282,10 +282,14 @@ def __init__( # NeMoAutoModelForCausalLM uses flash_attention_2 by default # so we need to set it to None if sequence packing is disabled # https://github.com/NVIDIA-NeMo/Automodel/blob/7e748be260651349307862426c0c168cebdeeec3/nemo_automodel/components/_transformers/auto_model.py#L180 - if cp_size > 1: - # Match Automodel's `get_train_context` in `cp_utils.py` where only + if cp_size > 1 or self.cfg["dtensor_cfg"]["activation_checkpointing"]: + # For cp, match Automodel's `get_train_context` in `cp_utils.py` where only # flash and efficient backends are supported # Ref: https://github.com/NVIDIA-NeMo/Automodel/blob/81788d6f4848f5f066c4a6a2bece4689a6a83687/nemo_automodel/components/distributed/cp_utils.py#L57 + + # For activation_checkpointing, CUDNN_ATTENTION must be excluded + # since it results in an error: + # "Recomputed values for the following tensors have different metadata than during the forward pass." from torch.nn.attention import SDPBackend sdpa_method = [ From f952f78c5152309415f28882fba07407be7ba430 Mon Sep 17 00:00:00 2001 From: Zhiyu Li Date: Mon, 22 Dec 2025 10:07:15 -0800 Subject: [PATCH 18/52] feat: add dapo recipe and test (#1617) Signed-off-by: Zhiyu Li Signed-off-by: Parth Mannan --- .../performance/dapo-deepseek-v3-64n8g.yaml | 91 +++++++++++++++++++ .../llm/performance/dapo-deepseek-v3-64n8g.sh | 47 ++++++++++ tests/test_suites/performance_h100.txt | 1 + 3 files changed, 139 insertions(+) create mode 100644 examples/configs/recipes/llm/performance/dapo-deepseek-v3-64n8g.yaml create mode 100755 tests/test_suites/llm/performance/dapo-deepseek-v3-64n8g.sh diff --git a/examples/configs/recipes/llm/performance/dapo-deepseek-v3-64n8g.yaml b/examples/configs/recipes/llm/performance/dapo-deepseek-v3-64n8g.yaml new file mode 100644 index 0000000000..9c4edd2b30 --- /dev/null +++ b/examples/configs/recipes/llm/performance/dapo-deepseek-v3-64n8g.yaml @@ -0,0 +1,91 @@ +defaults: ../../../grpo_math_1B.yaml +grpo: + num_prompts_per_step: 256 + num_generations_per_prompt: 16 + batch_multiplier: 3 # Multiplier for dataloader batch size calculation + max_rollout_turns: 1 + max_num_steps: 10 + use_leave_one_out_baseline: false + val_period: 5 + max_val_samples: 256 + val_batch_size: 256 + use_dynamic_sampling: true + dynamic_sampling_max_gen_batches: 10 + reward_scaling: + enabled: true + source_min: 0.0 + source_max: 1.0 + target_min: -1.0 + target_max: 1.0 + reward_shaping: + enabled: true + overlong_buffer_length: 512 + max_response_length: 1024 +loss_fn: + reference_policy_kl_penalty: 0.0 # Corresponds to actor_rollout_ref.actor.kl_loss_coef + ratio_clip_max: 0.28 # clip_ratio_high + ratio_clip_min: 0.2 # clip_ratio_low + ratio_clip_c: 10.0 +checkpointing: + checkpoint_dir: results/grpo_dapomath17k_dsv3_megatron + keep_top_k: 100 +policy: + model_name: /path/to/dsv3-bf16-checkpoint + hf_config_overrides: + max_position_embeddings: 1536 + train_micro_batch_size: 1 + logprob_batch_size: 1 + max_total_sequence_length: 1536 + dtensor_cfg: + enabled: false + make_sequence_length_divisible_by: ${mul:${policy.dtensor_cfg.tensor_parallel_size}, + ${mul:2, ${policy.dtensor_cfg.context_parallel_size}}} + megatron_cfg: + empty_unused_memory_level: 2 + enabled: true + activation_checkpointing: true + tensor_model_parallel_size: 8 + expert_model_parallel_size: 32 + pipeline_model_parallel_size: 8 + num_layers_in_first_pipeline_stage: 7 + num_layers_in_last_pipeline_stage: 6 + context_parallel_size: 4 + sequence_parallel: true + moe_permute_fusion: true + apply_rope_fusion: false + optimizer: + lr: 5.0e-07 + min_lr: 5.0e-08 + scheduler: + lr_warmup_init: 5.0e-08 + sequence_packing: + enabled: true + generation: + max_new_tokens: 1536 + vllm_cfg: + async_engine: false + tensor_parallel_size: 64 + enforce_eager: true +data: + max_input_seq_length: 512 # max_prompt_length + prompt_file: null + dataset_name: DAPOMath17K +env: + dapo: + num_workers: 64 + math: + num_workers: 64 + math_verify_impl: "dapo_math_verify" + +logger: + monitor_gpus: true + wandb: + project: DAPO + name: DAPO-DeepSeek-671b-megatron + mlflow: + experiment_name: DAPO + run_name: DAPO-DeepSeek-671b-megatron +cluster: + gpus_per_node: 8 + num_nodes: 64 + diff --git a/tests/test_suites/llm/performance/dapo-deepseek-v3-64n8g.sh b/tests/test_suites/llm/performance/dapo-deepseek-v3-64n8g.sh new file mode 100755 index 0000000000..855d009566 --- /dev/null +++ b/tests/test_suites/llm/performance/dapo-deepseek-v3-64n8g.sh @@ -0,0 +1,47 @@ +#!/bin/bash +SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd) +source $SCRIPT_DIR/common.env +# disable NVLS to avoid OOM issue +export NCCL_NVLS_ENABLE=0 +export NRT_REBUILD_VENVS=true +# allow user to pass an existing HF checkpoint path based on instruction in https://github.com/NVIDIA-NeMo/RL/blob/main/docs/guides/deepseek.md +export MODEL_NAME=${NRL_DEEPSEEK_V3_HF_CKPT:-"unsloth/DeepSeek-V3-0324-BF16"} + +# ===== BEGIN CONFIG ===== +NUM_NODES=64 +STEPS_PER_RUN=10 +MAX_STEPS=10 +NUM_RUNS=$(( (MAX_STEPS + STEPS_PER_RUN - 1) / STEPS_PER_RUN )) # Round up +NUM_MINUTES=240 +# ===== END CONFIG ===== + +exit_if_max_steps_reached + +# Run the experiment +cd $PROJECT_ROOT +uv run examples/run_grpo_math.py \ + --config $CONFIG_PATH \ + grpo.num_prompts_per_step=64 \ + grpo.num_generations_per_prompt=8 \ + grpo.max_num_steps=$MAX_STEPS \ + policy.model_name=$MODEL_NAME \ + policy.tokenizer.name=$MODEL_NAME \ + cluster.num_nodes=$NUM_NODES \ + logger.log_dir=$LOG_DIR \ + logger.wandb_enabled=True \ + logger.wandb.project=nemo-rl \ + logger.wandb.name=$EXP_NAME \ + logger.monitor_gpus=True \ + logger.tensorboard_enabled=True \ + $@ \ + 2>&1 | tee $RUN_LOG + +# Convert tensorboard logs to json +uv run tests/json_dump_tb_logs.py $LOG_DIR --output_path $JSON_METRICS + +# Only run metrics if the target step is reached +if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | map(tonumber) | max' $JSON_METRICS) -ge $MAX_STEPS ]]; then + uv run tests/check_metrics.py $JSON_METRICS \ + 'mean(data["train/token_mult_prob_error"]) < 1.1' \ + 'data["train/token_mult_prob_error"]["10"] < 1.1' +fi diff --git a/tests/test_suites/performance_h100.txt b/tests/test_suites/performance_h100.txt index 9e3eb208ce..54a75dc86e 100644 --- a/tests/test_suites/performance_h100.txt +++ b/tests/test_suites/performance_h100.txt @@ -10,6 +10,7 @@ tests/test_suites/llm/performance/grpo-qwen3-30ba3b-4n8g.sh tests/test_suites/llm/performance/grpo-deepseek-v3-32n8g.sh tests/test_suites/llm/performance/grpo-qwen3-32b-4n8g.sh tests/test_suites/llm/performance/grpo-qwen3-235b-16n8g.sh +tests/test_suites/llm/performance/dapo-deepseek-v3-64n8g.sh ## ASYNC 1-off tests/test_suites/llm/performance/grpo-deepseek-v3-64n8g-async-1off.sh From 8c9ae9f92736784c90977dd22af34982785757d5 Mon Sep 17 00:00:00 2001 From: Adil <47084919+adil-a@users.noreply.github.com> Date: Tue, 23 Dec 2025 00:12:32 -0500 Subject: [PATCH 19/52] feat: DTensorPolicyV2 GPT-OSS SFT support (#1470) Signed-off-by: Hemil Desai Co-authored-by: Hemil Desai --- 3rdparty/Automodel-workspace/Automodel | 2 +- ...t-gpt-oss-20b-1n8g-fsdp8ep8-automodel.yaml | 22 + nemo_rl/models/policy/__init__.py | 29 + nemo_rl/models/policy/lm_policy.py | 6 + nemo_rl/models/policy/utils.py | 2 +- nemo_rl/models/policy/workers/__init__.py | 0 .../workers/dtensor_policy_worker_v2.py | 422 +++--- .../policy/workers/megatron_policy_worker.py | 96 +- nemo_rl/models/policy/workers/patches.py | 106 ++ nemo_rl/utils/automodel_checkpoint.py | 541 ++++--- nemo_rl/utils/venvs.py | 3 +- pyproject.toml | 11 +- pyrefly.toml | 4 +- ...sft-gpt-oss-20b-1n8g-fsdp8ep8-automodel.sh | 40 + tests/test_suites/nightly.txt | 3 + tests/unit/models/dtensor/test_lora.py | 71 +- .../models/policy/test_automodel_types.py | 71 + .../unit/models/policy/test_dtensor_worker.py | 1322 ++++++++++------- .../models/policy/test_dtensor_worker_v2.py | 232 ++- tests/unit/models/policy/test_patches.py | 447 ++++++ tests/unit/utils/test_automodel_checkpoint.py | 889 ++++++++--- uv.lock | 331 ++++- 22 files changed, 3282 insertions(+), 1368 deletions(-) create mode 100644 examples/configs/recipes/llm/sft-gpt-oss-20b-1n8g-fsdp8ep8-automodel.yaml create mode 100644 nemo_rl/models/policy/workers/__init__.py create mode 100644 nemo_rl/models/policy/workers/patches.py create mode 100755 tests/test_suites/llm/sft-gpt-oss-20b-1n8g-fsdp8ep8-automodel.sh create mode 100644 tests/unit/models/policy/test_automodel_types.py create mode 100644 tests/unit/models/policy/test_patches.py diff --git a/3rdparty/Automodel-workspace/Automodel b/3rdparty/Automodel-workspace/Automodel index 910f4e0402..1d42deb981 160000 --- a/3rdparty/Automodel-workspace/Automodel +++ b/3rdparty/Automodel-workspace/Automodel @@ -1 +1 @@ -Subproject commit 910f4e0402ec3af0c3b8642639f0347732067630 +Subproject commit 1d42deb98169fd94b54c714c0fe4bf308fe7115a diff --git a/examples/configs/recipes/llm/sft-gpt-oss-20b-1n8g-fsdp8ep8-automodel.yaml b/examples/configs/recipes/llm/sft-gpt-oss-20b-1n8g-fsdp8ep8-automodel.yaml new file mode 100644 index 0000000000..b82b13f540 --- /dev/null +++ b/examples/configs/recipes/llm/sft-gpt-oss-20b-1n8g-fsdp8ep8-automodel.yaml @@ -0,0 +1,22 @@ +defaults: ../../sft.yaml +cluster: + gpus_per_node: 8 +policy: + model_name: openai/gpt-oss-20b + train_global_batch_size: 128 + train_micro_batch_size: 8 + max_total_sequence_length: 512 + dequantize_base_checkpoint: true + dtensor_cfg: + expert_parallel_size: 8 + automodel_kwargs: + backend: + _target_: nemo_automodel.components.moe.utils.BackendConfig + attn: flex + linear: te + rms_norm: te + enable_deepep: true + fake_balanced_gate: false + enable_hf_state_dict_adapter: true +checkpointing: + checkpoint_dir: results/sft-gpt-oss-20b-1n8g-fsdp8ep8-automodel diff --git a/nemo_rl/models/policy/__init__.py b/nemo_rl/models/policy/__init__.py index 9458bcbc92..1efa14f7a6 100644 --- a/nemo_rl/models/policy/__init__.py +++ b/nemo_rl/models/policy/__init__.py @@ -34,6 +34,34 @@ class LoRAConfig(TypedDict): use_triton: NotRequired[bool] +class AutomodelBackendConfig(TypedDict): + # Hydra target class path (e.g., "nemo_automodel.components.moe.utils.BackendConfig") + _target_: str + # Attention implementation: "te" (Transformer Engine), "flex" (FlexAttention), etc. + attn: NotRequired[str] + # Linear layer implementation: "te" (Transformer Engine), etc. + linear: NotRequired[str] + # RMSNorm implementation: "te" (Transformer Engine), etc. + rms_norm: NotRequired[str] + # Enable DeepEP (Deep Expert Parallelism) for MoE models + enable_deepep: NotRequired[bool] + # Use fake balanced gate for testing/debugging MoE + fake_balanced_gate: NotRequired[bool] + # Enable HuggingFace state dict adapter for checkpoint loading + enable_hf_state_dict_adapter: NotRequired[bool] + # Enable FSDP-specific optimizations + enable_fsdp_optimizations: NotRequired[bool] + # Precision for the MoE gate computation (e.g., "float64", "float32") + gate_precision: NotRequired[str] + + +class AutomodelKwargs(TypedDict): + # Whether to use Liger kernel optimizations (default: false) + use_liger_kernel: NotRequired[bool] + # Backend configuration for MoE models + backend: NotRequired[AutomodelBackendConfig] + + class DTensorConfigDisabled(TypedDict): enabled: Literal[False] @@ -50,6 +78,7 @@ class DTensorConfig(TypedDict): custom_parallel_plan: str | None clear_cache_every_n_steps: NotRequired[int | None] lora_cfg: NotRequired[LoRAConfig | LoRAConfigDisabled] + automodel_kwargs: NotRequired[AutomodelKwargs] class SequencePackingConfigDisabled(TypedDict): diff --git a/nemo_rl/models/policy/lm_policy.py b/nemo_rl/models/policy/lm_policy.py index 21558768b4..144683c95c 100644 --- a/nemo_rl/models/policy/lm_policy.py +++ b/nemo_rl/models/policy/lm_policy.py @@ -111,6 +111,12 @@ def __init__( use_v2 = config.get("dtensor_cfg", {}).get("_v2", False) if use_v2: worker_builder_cls = "nemo_rl.models.policy.workers.dtensor_policy_worker_v2.DTensorPolicyWorkerV2" + + if "TORCH_CUDA_ARCH_LIST" not in os.environ: + warnings.warn( + "TORCH_CUDA_ARCH_LIST is not set. This is needed if using DeepEP in DTensorPolicyWorker V2. This variable is set in our container, but " + "if you are running a custom container or baremetal, you may need to set this variable manually. Example: export TORCH_CUDA_ARCH_LIST='9.0 10.0'" + ) else: assert ( config["dtensor_cfg"].get("lora_cfg", {}).get("enabled", False) diff --git a/nemo_rl/models/policy/utils.py b/nemo_rl/models/policy/utils.py index 283b980e72..7ad33708a2 100644 --- a/nemo_rl/models/policy/utils.py +++ b/nemo_rl/models/policy/utils.py @@ -29,7 +29,7 @@ # Try to import nemo_automodel classes, fallback to None if not available try: - from nemo_automodel.components._transformers.auto_model import ( + from nemo_automodel._transformers.auto_model import ( NeMoAutoModelForCausalLM, NeMoAutoModelForImageTextToText, NeMoAutoModelForTextToWaveform, diff --git a/nemo_rl/models/policy/workers/__init__.py b/nemo_rl/models/policy/workers/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/nemo_rl/models/policy/workers/dtensor_policy_worker_v2.py b/nemo_rl/models/policy/workers/dtensor_policy_worker_v2.py index 2232f87c6f..c90c161b75 100644 --- a/nemo_rl/models/policy/workers/dtensor_policy_worker_v2.py +++ b/nemo_rl/models/policy/workers/dtensor_policy_worker_v2.py @@ -14,14 +14,12 @@ import gc import itertools -import math import os import warnings from collections import defaultdict from contextlib import AbstractContextManager, contextmanager, nullcontext from typing import Any, Generator, Optional, cast -import nemo_automodel.components._peft.lora as _lora_mod import ray import torch from accelerate import init_empty_weights @@ -29,40 +27,38 @@ from nemo_automodel import ( NeMoAutoModelForSequenceClassification, ) +from nemo_automodel._transformers.registry import ModelRegistry from nemo_automodel.components._peft.lora import ( PeftConfig, apply_lora_to_linear_modules, ) +from nemo_automodel.components.config.loader import _resolve_target from nemo_automodel.components.distributed.cp_utils import ( create_context_parallel_ctx, get_train_context, ) -from nemo_automodel.components.distributed.grad_utils import ( - clip_grad_by_total_norm_, - get_grad_norm, -) -from nemo_automodel.components.distributed.parallelizer import ( - fsdp2_strategy_parallelize, +from nemo_automodel.components.distributed.fsdp2 import ( + FSDP2Manager, ) from nemo_automodel.components.distributed.tensor_utils import ( get_cpu_state_dict, to_local_if_dtensor, ) -from torch import nn -from torch.distributed.checkpoint.state_dict import ( - StateDictOptions, - set_model_state_dict, +from nemo_automodel.components.moe.parallelizer import ( + parallelize_model as moe_parallelize_model, ) +from nemo_automodel.components.training.utils import scale_grads_and_clip_grad_norm +from torch import nn from torch.distributed.fsdp import ( CPUOffloadPolicy, MixedPrecisionPolicy, - OffloadPolicy, ) from torch.distributed.tensor import DTensor, Shard from transformers import ( AutoConfig, AutoProcessor, AutoTokenizer, + PreTrainedModel, ) from transformers.models.gemma3.modeling_gemma3 import Gemma3ForCausalLM @@ -90,22 +86,17 @@ resolve_model_class, ) from nemo_rl.models.policy.workers.base_policy_worker import AbstractPolicyWorker -from nemo_rl.utils.automodel_checkpoint import ( - load_checkpoint, - save_checkpoint, -) +from nemo_rl.models.policy.workers.patches import apply_transformer_engine_patch +from nemo_rl.utils.automodel_checkpoint import AutomodelCheckpointManager from nemo_rl.utils.checkpoint import CheckpointingConfig from nemo_rl.utils.nsys import wrap_with_nvtx_name from nemo_rl.utils.packed_tensor import packed_broadcast_producer - -# TODO: @ruit remove this once the bump Automodel to 2d20e33a19d5e53a271b1403b507475e68ad14dc (https://github.com/NVIDIA-NeMo/RL/issues/1586) -def _patched_init_lora_weights(self, init_method: str): - if init_method == "xavier": - nn.init.xavier_normal_(self.lora_A.weight.data) - else: - nn.init.kaiming_uniform_(self.lora_A.weight.data, a=math.sqrt(5)) - self.lora_B.weight.data.zero_() +STRING_TO_DTYPE = { + "float32": torch.float32, + "bfloat16": torch.bfloat16, + "float16": torch.float16, +} @ray.remote( @@ -134,6 +125,9 @@ def __init__( **kwargs: Any, ): """Initialize the DTensorPolicyWorkerV2.""" + # Apply TE patch until TE is upgraded to 2.10.0 + apply_transformer_engine_patch() + self.tokenizer = tokenizer self.processor = processor self.is_vlm = processor is not None @@ -154,26 +148,25 @@ def __init__( configure_dynamo_cache() self.cfg = config + self.cpu_offload = self.cfg["dtensor_cfg"]["cpu_offload"] # torch distributed init. Envars for rank, world_size, and master_addr and master_port are set from the ray remote call - torch.distributed.init_process_group(backend="nccl") + backend = "nccl" if not self.cpu_offload else "cuda:nccl,cpu:gloo" + torch.distributed.init_process_group(backend=backend) self.rank = torch.distributed.get_rank() world_size = torch.distributed.get_world_size() model_name = self.cfg["model_name"] + self.checkpoint_manager: Optional[AutomodelCheckpointManager] = None + self.cpu_offload = self.cfg["dtensor_cfg"]["cpu_offload"] self.offload_optimizer_for_logprob = self.cfg["offload_optimizer_for_logprob"] self.max_grad_norm = self.cfg["max_grad_norm"] - if self.cfg["precision"] == "float32": - self.dtype = torch.float32 - elif self.cfg["precision"] == "bfloat16": - self.dtype = torch.bfloat16 - elif self.cfg["precision"] == "float16": - self.dtype = torch.float16 - else: + try: + self.dtype = STRING_TO_DTYPE[self.cfg["precision"]] + except KeyError: raise ValueError(f"Unknown precision: {self.cfg['precision']}") - print(f"[Rank {self.rank}] Loading model {model_name} on CPU...") self.enable_seq_packing = self.cfg["sequence_packing"]["enabled"] if self.enable_seq_packing: assert not self.is_vlm, ( @@ -186,6 +179,16 @@ def __init__( hf_config_overrides = self.cfg.get("hf_config_overrides", {}) or {} + # Choose attention implementation on the following basis: + # - Packed sequence requires FA2 and CP must be 1 + # - CP > 1 requires SDPA + cp_size_cfg = self.cfg["dtensor_cfg"]["context_parallel_size"] + attn_impl = ( + "flash_attention_2" + if (self.enable_seq_packing and cp_size_cfg == 1) + else ("sdpa" if cp_size_cfg > 1 else None) + ) + model_config = AutoConfig.from_pretrained( model_name, # Always load the model in float32 to keep master weights in float32. @@ -235,15 +238,10 @@ def __init__( # DO NOT assume AutoModelForCausalLM, multimodal models can inherit from AutoModelForImageTextToText, AutoModelForTextToWaveform, etc. model_class = resolve_model_class(model_config.model_type) - full_state_dict = None - model_state_dict_keys = None - # lora config lora_cfg = self.cfg["dtensor_cfg"].get("lora_cfg", None) self.peft_config = None self.lora_enabled = lora_cfg is not None and lora_cfg["enabled"] - # patch the init_lora_weights method to use the xavier initialization - _lora_mod.LinearLoRA.init_lora_weights = _patched_init_lora_weights if self.lora_enabled: if self.cfg["dtensor_cfg"]["tensor_parallel_size"] > 1: assert not lora_cfg["use_triton"], ( @@ -254,30 +252,26 @@ def __init__( cfg_dict_with_dtype = {**lora_cfg, "lora_dtype": "torch.float32"} self.peft_config = PeftConfig.from_dict(cfg_dict_with_dtype) - if self.rank == 0: - print(f"[Rank {self.rank}] Loading model {model_name} on CPU...") - model = model_class.from_pretrained( - model_name, - device_map="cpu", # load weights onto CPU initially - trust_remote_code=True, - config=model_config, - use_liger_kernel=False, - torch_dtype=str(model_config.torch_dtype), - ) - - if self.lora_enabled: - apply_lora_to_linear_modules(model, self.peft_config) - - full_state_dict = model.state_dict() - # Store the original model state dict keys before any parallelization - model_state_dict_keys = list(full_state_dict.keys()) - del model - print(f"[Rank {self.rank}] Initializing empty model for FSDP...") # All ranks initialize model on meta device, so FSDP can shard it. # The actual weights will be broadcast from rank 0. cp_size = self.cfg["dtensor_cfg"]["context_parallel_size"] + automodel_kwargs = self.cfg["dtensor_cfg"].get("automodel_kwargs", {}) + if automodel_kwargs.get("backend", None) is not None: + backend_class = _resolve_target( + automodel_kwargs.get("backend", None)["_target_"] + ) + backend_kwargs = automodel_kwargs.get("backend") + backend_kwargs.pop("_target_") + backend = backend_class( + **backend_kwargs, + ) + automodel_kwargs["backend"] = backend + + if "use_liger_kernel" not in automodel_kwargs: + automodel_kwargs["use_liger_kernel"] = False + with init_empty_weights(): # NeMoAutoModelForCausalLM uses flash_attention_2 by default # so we need to set it to None if sequence packing is disabled @@ -299,32 +293,32 @@ def __init__( else: sdpa_method = None - self.model = model_class.from_config( - model_config, - attn_implementation="flash_attention_2" - if self.enable_seq_packing - else None, - use_liger_kernel=False, - trust_remote_code=True, + self.model = model_class.from_pretrained( + model_name, + attn_implementation=attn_impl, torch_dtype=str(model_config.torch_dtype), + trust_remote_code=True, + config=model_config, sdpa_method=sdpa_method, + **automodel_kwargs, ) if self.lora_enabled: apply_lora_to_linear_modules(self.model, self.peft_config) + # Hold a copy of model state_dict keys before any parallelization + self.model_state_dict_keys = list(self.model.state_dict().keys()) + if self.model.config.pad_token_id is None: self.model.config.pad_token_id = tokenizer.pad_token_id tp_size = self.cfg["dtensor_cfg"]["tensor_parallel_size"] + ep_size = self.cfg["dtensor_cfg"].get("expert_parallel_size", 1) + dp_size = None # will be inferred if cp_size > 1 and self.enable_seq_packing: raise ValueError( "Context parallel is not supported for sequence packing. Refer to https://github.com/NVIDIA/NeMo-RL/blob/main/docs/model-quirks.md#context-parallel-with-fsdp2 for more details." ) - dp_size = world_size // tp_size // cp_size sequence_parallel_enabled = self.cfg["dtensor_cfg"]["sequence_parallel"] - assert world_size == dp_size * tp_size * cp_size, ( - f"World size({world_size}) must equal to dp_size({dp_size}) * tp_size({tp_size}) * cp_size({cp_size}) to use DTensor" - ) if sequence_parallel_enabled and tp_size == 1: print( @@ -351,53 +345,18 @@ def __init__( "Context parallel is yet not supported for VLM models. Please set cp_size = 1 to train VLM models." ) - # For FSDP2 compatibility, we need to support HSDP structure - # For now, we use dp_replicate_size = 1 (no hybrid sharding) - dp_replicate_size = 1 - dp_shard_size = dp_size - - # torch==2.8 uses LOCAL_RANK to set the device here (https://github.com/pytorch/pytorch/blob/ba56102387ef21a3b04b357e5b183d48f0afefc7/torch/distributed/device_mesh.py#L500), - # but CUDA_VISIBLE_DEVICES is set to only 1 gpu, so we need to temporarily set LOCAL_RANK to 0. - # TODO: consider changing the default LOCAL_RANK set in worker_groups.py - prev_local_rank = os.environ["LOCAL_RANK"] - os.environ["LOCAL_RANK"] = "0" - - # Create device mesh with HSDP structure for FSDP2 compatibility - device_mesh = torch.distributed.device_mesh.init_device_mesh( - "cuda", - (dp_replicate_size, dp_shard_size, cp_size, tp_size), - mesh_dim_names=("dp_replicate", "dp_shard", "cp", "tp"), - ) - os.environ["LOCAL_RANK"] = prev_local_rank - - # Create flattened submeshes for different use cases - # Flatten dp_replicate + dp_shard for the "dp" dimension (backward compatibility) - device_mesh[("dp_replicate", "dp_shard")]._flatten(mesh_dim_name="dp") - - # Flatten dp_shard + cp for FSDP2 sharding - device_mesh[("dp_shard", "cp")]._flatten(mesh_dim_name="dp_shard_cp") - - # Flatten dp_replicate + dp_shard + cp for gradient operations - device_mesh[("dp_replicate", "dp_shard", "cp")]._flatten(mesh_dim_name="dp_cp") - - # Store mesh references for backward compatibility - self.dp_cp_mesh = device_mesh["dp_cp"] - self.dp_mesh = device_mesh["dp"] - self.tp_mesh = device_mesh["tp"] - self.cp_mesh = device_mesh["cp"] - - self.dp_size = dp_size - self.tp_size = tp_size - self.cp_size = cp_size - self.device_mesh = device_mesh - # ------------------------------------------------ - # 3) Move to GPU + Composable FSDP - # (Initialize device mesh, shard submodules, then shard entire model) + # Build device mesh and parallelize # ------------------------------------------------ - self.model = fsdp2_strategy_parallelize( - self.model, - device_mesh=self.device_mesh, + manager = FSDP2Manager( + dp_size=dp_size, + dp_replicate_size=1, + tp_size=tp_size, + cp_size=cp_size, + ep_size=ep_size, + pp_size=1, + sequence_parallel=sequence_parallel_enabled, + use_hf_tp_plan=self.cfg["dtensor_cfg"].get("use_hf_tp_plan", False), mp_policy=MixedPrecisionPolicy( param_dtype=self.dtype, reduce_dtype=torch.float32, @@ -405,34 +364,94 @@ def __init__( ), offload_policy=CPUOffloadPolicy(pin_memory=False) if self.cpu_offload - else OffloadPolicy(), - sequence_parallel=sequence_parallel_enabled, + else None, + backend="nccl", + world_size=world_size, activation_checkpointing=self.cfg["dtensor_cfg"][ "activation_checkpointing" ], - tp_shard_plan=self.cfg["dtensor_cfg"]["custom_parallel_plan"], - dp_replicate_mesh_name="dp_replicate", - dp_shard_cp_mesh_name="dp_shard_cp", - tp_mesh_name="tp", + custom_tp_plan=self.cfg["dtensor_cfg"].get("custom_parallel_plan", None), ) - print(f"[Rank {self.rank}] Loading state dict from rank 0...") - # This will broadcast the state dict from rank 0 to all other ranks - # and load it into the FSDP model. - set_model_state_dict( + # Force setup distributed for world size 1 as FSDP2Manager skips it. + if world_size == 1: + manager._setup_distributed() + + # Store mesh references for downstream usage + self.device_mesh = manager.device_mesh + self.dp_cp_mesh = self.device_mesh["dp_cp"] + self.dp_mesh = self.device_mesh["dp"] + self.tp_mesh = self.device_mesh["tp"] + self.cp_mesh = self.device_mesh["cp"] + self.moe_mesh = getattr(manager, "moe_mesh", None) + + self.dp_size = manager.dp_size + self.tp_size = manager.tp_size + self.cp_size = manager.cp_size + + # Parallelize model + is_moe_model = any(["expert" in key for key in self.model_state_dict_keys]) + is_hf_model = ( + model_config.architectures[0] not in ModelRegistry.model_arch_name_to_cls + ) + if ( + not isinstance(self.model, PreTrainedModel) + and is_moe_model + and not is_hf_model + ): + assert self.tp_size == 1, ( + "Using custom implementation {self.model.__class__.__name__} for MoE model {model_name} which doesn't support tp_size > 1. Please use expert_parallel_size > 1 for custom implementation or set force_hf=True in your config at policy->dtensor_cfg->automodel_kwargs to use the HuggingFace implementation." + ) + assert self.cp_size == 1, ( + "Using custom implementation {self.model.__class__.__name__} for MoE model {model_name} which doesn't support cp_size > 1. Please set force_hf=True in your config at policy->dtensor_cfg->automodel_kwargs to use the HuggingFace implementation." + ) + moe_parallelize_model( + model=self.model, + world_mesh=self.device_mesh, + moe_mesh=self.moe_mesh, + pp_enabled=False, + dp_axis_names=( + ("dp_replicate", "dp_shard_cp") + if "dp_replicate" in self.device_mesh.mesh_dim_names + and "dp_shard_cp" in self.device_mesh.mesh_dim_names + else ("dp_shard_cp",) + ), + cp_axis_name="cp", + tp_axis_name="tp", + ep_axis_name="ep", + ep_shard_axis_names=("ep_shard",), + ) + else: + self.model = manager.parallelize(self.model) + + # Load base model weights across all ranks using Automodel Checkpointer + # This mirrors build_model_and_optimizer's is_meta_device + load_weights path + print(self.model) + self._init_checkpoint_manager( + config_updates={ + "model_repo_id": model_name, + "dequantize_base_checkpoint": self.cfg.get( + "dequantize_base_checkpoint", False + ), + "is_peft": self.lora_enabled, + }, + ) + self.checkpoint_manager.set_model_state_dict_keys(self.model_state_dict_keys) + + # Load base HF weights unless an explicit checkpoint is provided later + # This puts shards directly into the parallelized model + self.checkpoint_manager.load_base_model( self.model, - model_state_dict=full_state_dict, - options=StateDictOptions( - full_state_dict=True, - broadcast_from_rank0=True, + model_name=model_name, + hf_cache_dir=hf_config_overrides.get("cache_dir", None), + dequantize_base_checkpoint=self.cfg.get( + "dequantize_base_checkpoint", False ), + peft_init_method=self.peft_config.lora_A_init + if self.peft_config is not None + else None, ) - # Broadcast model state dict keys to all ranks and store as instance variable - keys_to_broadcast = [model_state_dict_keys] - torch.distributed.broadcast_object_list(keys_to_broadcast, src=0) - self.model_state_dict_keys = keys_to_broadcast[0] - # Handle tied word embeddings after loading the state dict # We need to actually tie the parameters at the model level is_tied_lm_head = hasattr(self.model, "lm_head") and getattr( @@ -448,10 +467,6 @@ def __init__( if embed_tokens_weight is not None: self.model.lm_head.weight = embed_tokens_weight - # Manually broadcast buffers - for _, buf in self.model.named_buffers(): - torch.distributed.broadcast(to_local_if_dtensor(buf), src=0) - if self.cpu_offload: self.model = self.move_to_device(self.model, "cpu") @@ -463,7 +478,8 @@ def __init__( if init_optimizer: optimizer_cls = get_class(self.cfg["optimizer"]["name"]) self.optimizer = optimizer_cls( - self.model.parameters(), **self.cfg["optimizer"]["kwargs"] + self.model.parameters(), + **self.cfg["optimizer"]["kwargs"], ) else: self.optimizer = None @@ -505,7 +521,7 @@ def __init__( self.load_checkpoint(weights_path, optimizer_path) else: print( - "No weights path provided. Starting from scratch (default policy init)" + "No weights path provided. Loaded base HF weights via Checkpointer (default policy init)" ) def _apply_temperature_scaling(self, logits: torch.Tensor) -> torch.Tensor: @@ -513,18 +529,6 @@ def _apply_temperature_scaling(self, logits: torch.Tensor) -> torch.Tensor: logits.div_(self.cfg["generation"]["temperature"]) return logits - def init_collective( - self, ip: str, port: int, world_size: int, *, train_world_size: int - ) -> None: - from vllm.distributed.device_communicators.pynccl import PyNcclCommunicator - from vllm.distributed.utils import StatelessProcessGroup - - pg = StatelessProcessGroup.create( - host=ip, port=port, rank=self.rank, world_size=world_size - ) - device = torch.cuda.current_device() - self.model_update_group = PyNcclCommunicator(pg, device=device) - def check_model_allow_flash_attn_args(self, model_config) -> bool: # Some models doesn't support flash_attn_kwargs # Check nemotron nas. @@ -591,7 +595,7 @@ def train( ## get the normalization factor for the loss local_valid_seqs = torch.sum(global_batch["sample_mask"]) - if not "token_mask" in global_batch: + if "token_mask" not in global_batch: local_valid_toks = ( local_valid_seqs * global_batch["input_ids"].shape[1] ) @@ -760,7 +764,10 @@ def train( outputs = self.model(**model_args) # Get logprobs - if not hasattr(outputs, "logits"): + if isinstance(outputs, (torch.Tensor, DTensor)): + # custom models (e.g., those coming from AutoModel) can output logits directly + logits = outputs + elif not hasattr(outputs, "logits"): logits = self.model.lm_head(outputs.last_hidden_state) else: logits = outputs.logits @@ -851,10 +858,6 @@ def train( ## NOTE: invalid samples should be multiplied ## by zero in the loss function to prevent them ## from affecting the gradient calculation - - # when FSDP reduces the gradients over the DP dim, they're automatically averaged - # but we want to sum them so we cancel out the average here - loss *= self.dp_size * self.cp_size loss.backward() if num_valid_samples > 0: @@ -863,20 +866,27 @@ def train( grad_norm: Optional[float | torch.Tensor] = None if not eval_mode: - with torch.no_grad(): - grad_norm = get_grad_norm( - self.model.parameters(), - dp_cp_group=self.dp_cp_mesh.get_group(), - tp_group=self.tp_mesh.get_group(), - dtype=torch.float32, - ) - if self.max_grad_norm is not None: - clip_grad_by_total_norm_( - self.model.parameters(), - max_grad_norm=self.max_grad_norm, - total_norm=grad_norm, - ) - grad_norm = torch.tensor([grad_norm]) + grad_norm = scale_grads_and_clip_grad_norm( + self.max_grad_norm, + [self.model], + norm_type=2.0, + pp_enabled=False, + device_mesh=self.device_mesh, + moe_mesh=self.moe_mesh, + ep_axis_name="ep" + if self.moe_mesh is not None + and "ep" in self.moe_mesh.mesh_dim_names + else None, + pp_axis_name=None, + foreach=True, + num_label_tokens=1, + # when FSDP reduces the gradients over the DP dim, they're automatically averaged + # but we want to sum them so we rescale the gradients by self.dp_size * self.cp_size + dp_group_size=self.dp_size * self.cp_size, + ) + grad_norm = torch.tensor( + grad_norm, device="cpu", dtype=torch.float32 + ) # Update parameters self.optimizer.step() @@ -1077,7 +1087,7 @@ def get_logprobs( outputs = self.model(**model_args) - logits = outputs.logits + logits = outputs.logits if hasattr(outputs, "logits") else outputs # Apply temperature scaling logits = self._apply_temperature_scaling(logits) @@ -1893,37 +1903,17 @@ def save_checkpoint( the optimizer states are saved only if `optimizer` and `optimizer_path` are provided. """ - if checkpointing_cfg is None: - raise ValueError( - "checkpointing_cfg must be provided when saving checkpoint" - ) - - # Extract only the checkpointing configuration keys that exist - checkpoint_kwargs = { - key: value - for key, value in checkpointing_cfg.items() - if key - in { - "model_save_format", - "save_consolidated", - "is_peft", - "peft_config", - } - } - if self.lora_enabled: - checkpoint_kwargs["is_peft"] = True - checkpoint_kwargs["peft_config"] = self.peft_config - - save_checkpoint( + self.checkpoint_manager.save_checkpoint( model=self.model, weights_path=weights_path, - optimizer=self.optimizer if optimizer_path else None, - scheduler=self.scheduler if optimizer_path else None, + optimizer=self.optimizer, optimizer_path=optimizer_path, - tokenizer=self.tokenizer if tokenizer_path else None, + scheduler=self.scheduler, + tokenizer=self.tokenizer if tokenizer_path is None else None, tokenizer_path=tokenizer_path, - model_state_dict_keys=self.model_state_dict_keys, - **checkpoint_kwargs, + checkpointing_cfg=checkpointing_cfg, + lora_enabled=self.lora_enabled, + peft_config=self.peft_config, ) def load_checkpoint( @@ -1931,11 +1921,37 @@ def load_checkpoint( weights_path: str, optimizer_path: Optional[str] = None, ) -> None: - """Load a checkpoint into the model.""" - load_checkpoint( + """Load a checkpoint into the model using Automodel Checkpointer.""" + self.checkpoint_manager.load_checkpoint( model=self.model, weights_path=weights_path, - optimizer=self.optimizer if optimizer_path else None, - scheduler=self.scheduler if optimizer_path else None, + optimizer=self.optimizer, optimizer_path=optimizer_path, + scheduler=self.scheduler, ) + + def _init_checkpoint_manager( + self, + config_updates: Optional[dict[str, Any]] = None, + checkpoint_root: Optional[str] = None, + ) -> None: + """Initialize the AutomodelCheckpointManager for this worker. + + This creates the checkpoint manager bound to this worker's device meshes + and initializes its underlying checkpointer. + + Args: + config_updates: Dict of CheckpointingConfig fields to set during initialization. + checkpoint_root: Optional root directory for checkpoints. + """ + if self.checkpoint_manager is None: + self.checkpoint_manager = AutomodelCheckpointManager( + dp_mesh=self.dp_mesh, + tp_mesh=self.tp_mesh, + model_state_dict_keys=getattr(self, "model_state_dict_keys", None), + moe_mesh=self.moe_mesh, + ) + self.checkpoint_manager.init_checkpointer( + config_updates=config_updates, + checkpoint_root=checkpoint_root, + ) diff --git a/nemo_rl/models/policy/workers/megatron_policy_worker.py b/nemo_rl/models/policy/workers/megatron_policy_worker.py index c0e9c53bf0..3a9b855d1b 100644 --- a/nemo_rl/models/policy/workers/megatron_policy_worker.py +++ b/nemo_rl/models/policy/workers/megatron_policy_worker.py @@ -19,103 +19,10 @@ from collections import defaultdict from contextlib import AbstractContextManager, contextmanager, nullcontext from functools import partial -from importlib.util import find_spec from typing import Any, Iterator, Optional, TypeVar, cast import ray import torch - - -def _get_transformer_engine_file(relative_path: str) -> str: - """Return absolute path to a Transformer Engine file or raise if it cannot be found. - - The relative_path should be a POSIX-style path under the transformer_engine - package root, e.g. "pytorch/triton/permutation.py". - """ - spec = find_spec("transformer_engine") - if spec is None or not spec.submodule_search_locations: - raise RuntimeError( - "Transformer Engine package not found while attempting to patch " - f"'{relative_path}'. Ensure `transformer-engine` is installed and " - "available in this environment." - ) - - base_dir = next(iter(spec.submodule_search_locations)) - file_path = os.path.join(base_dir, *relative_path.split("/")) - - if not os.path.exists(file_path): - raise RuntimeError( - "Failed to locate expected Transformer Engine file to patch. " - f"Looked for '{relative_path}' at '{file_path}'. " - "This likely indicates an unexpected Transformer Engine installation " - "layout or version mismatch." - ) - - return file_path - - -def _apply_transformer_engine_patch(): - """Apply patch from https://github.com/NVIDIA/TransformerEngine/pull/2286/files. - - This locates the target file via importlib metadata instead of importing - `transformer_engine`, to avoid side effects during initialization. If the - permutation module has already been imported, it will be reloaded so that - the patched source takes effect. - """ - try: - perm_file = _get_transformer_engine_file("pytorch/triton/permutation.py") - - with open(perm_file, "r") as f: - content = f.read() - - if "get_int_dtype = triton.constexpr_function(get_int_dtype)" not in content: - print(f"Applying Triton fix to {perm_file}...") - - # 1. Replace the usage - old_usage = "idtype = core.get_int_dtype(bitwidth=x.dtype.primitive_bitwidth, signed=True)" - new_usage = "idtype = get_int_dtype(bitwidth=x.dtype.primitive_bitwidth, signed=True)" - - # 2. Insert the definition before the first @triton.jit - jit_anchor = "@triton.jit" - - new_definition = ( - "\n\n" - "get_int_dtype = core.get_int_dtype\n" - "get_int_dtype = triton.constexpr_function(get_int_dtype)\n" - ) - - new_content = None - if old_usage in content: - temp_content = content.replace(old_usage, new_usage) - - if jit_anchor in temp_content: - new_content = temp_content.replace( - jit_anchor, new_definition + jit_anchor, 1 - ) - - if new_content: - try: - with open(perm_file, "w") as f: - f.write(new_content) - print("Successfully patched transformer_engine permutation.py.") - except OSError as e: - print( - f"Could not write patch to transformer_engine (permission denied?): {e}" - ) - - # If the permutation module is already imported in this process, - # reload it so that the patched source takes effect for subsequent use. - import importlib - import sys - - perm_module_name = "transformer_engine.pytorch.triton.permutation" - if perm_module_name in sys.modules: - importlib.reload(sys.modules[perm_module_name]) - - except Exception as e: - print(f"Error checking/patching transformer_engine: {e}") - - from megatron.bridge import AutoBridge from megatron.bridge.models.model_provider import get_model from megatron.bridge.training import fault_tolerance @@ -222,6 +129,7 @@ def _apply_transformer_engine_patch(): get_runtime_env_for_policy_worker, ) from nemo_rl.models.policy.workers.base_policy_worker import AbstractPolicyWorker +from nemo_rl.models.policy.workers.patches import apply_transformer_engine_patch from nemo_rl.utils.nsys import wrap_with_nvtx_name from nemo_rl.utils.packed_tensor import packed_broadcast_producer @@ -540,7 +448,7 @@ def __init__( pre_init_communication_queue: Queue, **kwargs: Any, ): - _apply_transformer_engine_patch() + apply_transformer_engine_patch() self.is_generation_colocated = None if "generation" in config and config["generation"] is not None: diff --git a/nemo_rl/models/policy/workers/patches.py b/nemo_rl/models/policy/workers/patches.py new file mode 100644 index 0000000000..5a0d5b0ab8 --- /dev/null +++ b/nemo_rl/models/policy/workers/patches.py @@ -0,0 +1,106 @@ +# Copyright (c) 2025, NVIDIA CORPORATION. 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. + +import os +from importlib.util import find_spec + + +def _get_transformer_engine_file(relative_path: str) -> str: + """Return absolute path to a Transformer Engine file or raise if it cannot be found. + + The relative_path should be a POSIX-style path under the transformer_engine + package root, e.g. "pytorch/triton/permutation.py". + """ + spec = find_spec("transformer_engine") + if spec is None or not spec.submodule_search_locations: + raise RuntimeError( + "Transformer Engine package not found while attempting to patch " + f"'{relative_path}'. Ensure `transformer-engine` is installed and " + "available in this environment." + ) + + base_dir = next(iter(spec.submodule_search_locations)) + file_path = os.path.join(base_dir, *relative_path.split("/")) + + if not os.path.exists(file_path): + raise RuntimeError( + "Failed to locate expected Transformer Engine file to patch. " + f"Looked for '{relative_path}' at '{file_path}'. " + "This likely indicates an unexpected Transformer Engine installation " + "layout or version mismatch." + ) + + return file_path + + +def apply_transformer_engine_patch(): + """Apply patch from https://github.com/NVIDIA/TransformerEngine/pull/2286/files. + + This locates the target file via importlib metadata instead of importing + `transformer_engine`, to avoid side effects during initialization. If the + permutation module has already been imported, it will be reloaded so that + the patched source takes effect. + """ + try: + perm_file = _get_transformer_engine_file("pytorch/triton/permutation.py") + + with open(perm_file, "r") as f: + content = f.read() + + if "get_int_dtype = triton.constexpr_function(get_int_dtype)" not in content: + print(f"Applying Triton fix to {perm_file}...") + + # 1. Replace the usage + old_usage = "idtype = core.get_int_dtype(bitwidth=x.dtype.primitive_bitwidth, signed=True)" + new_usage = "idtype = get_int_dtype(bitwidth=x.dtype.primitive_bitwidth, signed=True)" + + # 2. Insert the definition before the first @triton.jit + jit_anchor = "@triton.jit" + + new_definition = ( + "\n\n" + "get_int_dtype = core.get_int_dtype\n" + "get_int_dtype = triton.constexpr_function(get_int_dtype)\n" + ) + + new_content = None + if old_usage in content: + temp_content = content.replace(old_usage, new_usage) + + if jit_anchor in temp_content: + new_content = temp_content.replace( + jit_anchor, new_definition + jit_anchor, 1 + ) + + if new_content: + try: + with open(perm_file, "w") as f: + f.write(new_content) + print("Successfully patched transformer_engine permutation.py.") + except OSError as e: + print( + f"Could not write patch to transformer_engine (permission denied?): {e}" + ) + + # If the permutation module is already imported in this process, + # reload it so that the patched source takes effect for subsequent use. + import importlib + import sys + + perm_module_name = "transformer_engine.pytorch.triton.permutation" + if perm_module_name in sys.modules: + importlib.reload(sys.modules[perm_module_name]) + + except Exception as e: + print(f"Error checking/patching transformer_engine: {e}") diff --git a/nemo_rl/utils/automodel_checkpoint.py b/nemo_rl/utils/automodel_checkpoint.py index a9f0793851..bfba23fae5 100644 --- a/nemo_rl/utils/automodel_checkpoint.py +++ b/nemo_rl/utils/automodel_checkpoint.py @@ -11,49 +11,383 @@ # 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. +"""Automodel checkpoint utilities for DTensor policy workers. -"""Checkpoint management utilities for HF models.""" +This module provides a wrapper class around the nemo_automodel Checkpointer +for saving and loading model checkpoints in DTensor-based policy workers. +""" import os from typing import Any, Optional import torch +from nemo_automodel.components._peft.lora import PeftConfig from nemo_automodel.components.checkpoint._backports.filesystem import ( SerializationFormat, ) - -# Apply torch backports for compatibility with torch==2.7.1 -from nemo_automodel.components.checkpoint._torch_backports import apply_patches - -# Import from nemo-automodel from nemo_automodel.components.checkpoint.checkpointing import ( - CheckpointingConfig, - load_model, - load_optimizer, - save_model, - save_optimizer, + Checkpointer, ) +from nemo_automodel.components.checkpoint.checkpointing import ( + CheckpointingConfig as AutomodelCheckpointingConfig, +) +from torch import nn +from torch.distributed.device_mesh import DeviceMesh +from transformers import AutoTokenizer +from transformers.utils import TRANSFORMERS_CACHE -# Apply torch backports for compatibility with torch==2.7.1 -apply_patches() - +from nemo_rl.utils.checkpoint import CheckpointingConfig -def _infer_checkpoint_root(weights_path: str) -> str: - """Infer checkpoint root directory from weights path. - When weights_path ends with "…/weights/model", we need the parent of - the weights directory (the checkpoint root), not the weights directory itself. +class AutomodelCheckpointManager: + """Manages checkpointing for DTensor-based models using nemo_automodel's Checkpointer. - Args: - weights_path: Path to model weights (e.g., "/path/to/policy/weights/model") + This class provides a clean interface for saving and loading model checkpoints, + wrapping the nemo_automodel Checkpointer with configuration management. - Returns: - str: Checkpoint root directory (e.g., "/path/to/policy") + Attributes: + checkpointer: The underlying nemo_automodel Checkpointer instance. + checkpoint_config: The current checkpoint configuration. + model_state_dict_keys: List of model state dict keys for checkpoint validation. """ - weights_dir = os.path.dirname(weights_path) - if weights_dir.endswith("weights"): - return os.path.dirname(weights_dir) - return weights_dir + + def __init__( + self, + dp_mesh: DeviceMesh, + tp_mesh: DeviceMesh, + model_state_dict_keys: Optional[list[str]] = None, + moe_mesh: Optional[DeviceMesh] = None, + ): + """Initialize the AutomodelCheckpointManager. + + Args: + dp_mesh: The data parallel device mesh. + tp_mesh: The tensor parallel device mesh. + model_state_dict_keys: Optional list of model state dict keys. + moe_mesh: Optional MoE device mesh. + """ + self.checkpointer: Optional[Checkpointer] = None + self.checkpoint_config: Optional[AutomodelCheckpointingConfig] = None + self.model_state_dict_keys = model_state_dict_keys + self.dp_mesh = dp_mesh + self.tp_mesh = tp_mesh + self.moe_mesh = moe_mesh + + def _get_dp_rank(self) -> int: + """Get the data parallel rank.""" + return torch.distributed.get_rank(self.dp_mesh.get_group()) + + def _get_tp_rank(self) -> int: + """Get the tensor parallel rank.""" + return torch.distributed.get_rank(self.tp_mesh.get_group()) + + def init_checkpointer( + self, + config_updates: Optional[dict[str, Any]] = None, + checkpoint_root: Optional[str] = None, + ) -> None: + """Initialize the Automodel Checkpointer if not already created. + + This method creates a new Checkpointer instance with the provided configuration. + If a checkpointer already exists, this method does nothing. + + Args: + config_updates: Dict of CheckpointingConfig fields to set during initialization. + checkpoint_root: Optional root directory for checkpoints. + """ + if self.checkpointer is not None: + return + + if config_updates is None: + config_updates = {} + + dp_rank = self._get_dp_rank() + tp_rank = self._get_tp_rank() + pp_rank = 0 + + # Initialize a base config with sensible defaults + base_cfg = AutomodelCheckpointingConfig( + enabled=True, + checkpoint_dir=checkpoint_root or "", + model_save_format=config_updates.get("model_save_format", "safetensors"), + model_cache_dir=config_updates.get("model_cache_dir", ""), + model_repo_id=config_updates.get("model_repo_id", ""), + save_consolidated=config_updates.get("save_consolidated", False), + is_peft=config_updates.get("is_peft", False), + model_state_dict_keys=self.model_state_dict_keys, + is_async=config_updates.get("is_async", False), + dequantize_base_checkpoint=config_updates.get( + "dequantize_base_checkpoint", False + ), + ) + self.checkpoint_config = base_cfg + self.checkpointer = Checkpointer( + config=base_cfg, + dp_rank=dp_rank, + tp_rank=tp_rank, + pp_rank=pp_rank, + moe_mesh=self.moe_mesh, + ) + + def update_checkpointer_config( + self, + config_updates: Optional[dict[str, Any]] = None, + checkpoint_root: Optional[str] = None, + ) -> None: + """Update the configuration of an existing Checkpointer. + + This method updates the mutable config fields on the existing Checkpointer instance. + If no checkpointer exists, this method does nothing. + + Note: Some config changes (like model_save_format) require rebuilding the + checkpointer's internal addons list. This method handles that automatically. + + Args: + config_updates: Dict of CheckpointingConfig fields to update. + checkpoint_root: Optional root directory for checkpoints. + """ + if self.checkpointer is None: + return + + if config_updates is None: + config_updates = {} + + cfg = self.checkpointer.config + if checkpoint_root is not None: + cfg.checkpoint_dir = checkpoint_root + for k, v in config_updates.items(): + if k == "model_save_format": + # Ensure enum type + v = SerializationFormat[v.upper()] if isinstance(v, str) else v + setattr(cfg, k, v) + # Ensure model_state_dict_keys is current + if self.model_state_dict_keys is not None: + cfg.model_state_dict_keys = self.model_state_dict_keys + + # Rebuild _addons list based on updated config + # This is necessary because _addons is populated during __init__ based on config + self._rebuild_checkpointer_addons() + + def _rebuild_checkpointer_addons(self) -> None: + """Rebuild the checkpointer's _addons list based on current config. + + The Checkpointer's _addons list is populated during __init__ based on config. + When config changes (e.g., model_save_format or is_peft), we need to rebuild + the addons list to match the new config. + """ + if self.checkpointer is None: + return + + from nemo_automodel.components.checkpoint.addons import ( + ConsolidatedHFAddon, + PeftAddon, + ) + + self.checkpointer._addons = [] + if self.checkpointer._should_write_hf_metadata(): + self.checkpointer._addons.append(ConsolidatedHFAddon()) + if self.checkpointer.config.is_peft: + self.checkpointer._addons.append(PeftAddon()) + + def set_model_state_dict_keys(self, keys: list[str]) -> None: + """Set the model state dict keys for checkpoint validation. + + Args: + keys: List of model state dict keys. + """ + self.model_state_dict_keys = keys + if self.checkpointer is not None: + self.checkpointer.config.model_state_dict_keys = keys + + def load_base_model( + self, + model: nn.Module, + model_name: str, + hf_cache_dir: Optional[str] = None, + dequantize_base_checkpoint: bool = False, + peft_init_method: Optional[str] = None, + ) -> None: + """Load base model weights using the Automodel Checkpointer. + + This method loads the initial HuggingFace model weights into the parallelized model. + + Args: + model: The model to load weights into. + model_name: Name or path of the model. + hf_cache_dir: Optional HuggingFace cache directory. + dequantize_base_checkpoint: Whether to dequantize the base checkpoint. + + Raises: + AssertionError: If checkpointer has not been initialized. + """ + assert self.checkpointer is not None, ( + "Checkpointer must be initialized before loading base model. " + "Call init_checkpointer() first." + ) + + self.update_checkpointer_config( + config_updates={ + "model_repo_id": model_name, + "dequantize_base_checkpoint": dequantize_base_checkpoint, + }, + checkpoint_root=None, + ) + self.checkpointer.config.model_state_dict_keys = self.model_state_dict_keys + + self.checkpointer.load_base_model( + model, + device=torch.cuda.current_device(), + root_dir=hf_cache_dir or TRANSFORMERS_CACHE, + model_name=model_name, + peft_init_method=peft_init_method, + load_base_model=True, + ) + + def save_checkpoint( + self, + model: nn.Module, + weights_path: str, + optimizer: Optional[torch.optim.Optimizer] = None, + optimizer_path: Optional[str] = None, + scheduler: Optional[torch.optim.lr_scheduler.LRScheduler] = None, + tokenizer: Optional[AutoTokenizer] = None, + tokenizer_path: Optional[str] = None, + checkpointing_cfg: Optional[CheckpointingConfig] = None, + lora_enabled: bool = False, + peft_config: Optional[PeftConfig] = None, + ) -> None: + """Save a checkpoint of the model. + + The optimizer states are saved only if `optimizer` and `optimizer_path` are provided. + + Args: + model: The model to save. + weights_path: Path to save model weights. + optimizer: Optional optimizer to save. + optimizer_path: Optional path to save optimizer state. + scheduler: Optional learning rate scheduler. + tokenizer: Optional tokenizer to save with the checkpoint. + tokenizer_path: Optional path to save tokenizer separately. + checkpointing_cfg: Checkpointing configuration. + lora_enabled: Whether LoRA is enabled. + peft_config: Optional PEFT configuration. + """ + print(f"Saving checkpoint to {weights_path}") + assert self.checkpointer is not None, ( + "Checkpointer must be initialized before saving checkpoint. " + "Call init_checkpointer() first." + ) + if checkpointing_cfg is None: + raise ValueError( + "checkpointing_cfg must be provided when saving checkpoint" + ) + + # Extract only the checkpointing configuration keys that exist + checkpoint_kwargs = { + key: value + for key, value in checkpointing_cfg.items() + if key + in { + "model_save_format", + "save_consolidated", + "is_peft", + "peft_config", + "model_cache_dir", + "model_repo_id", + "is_async", + "dequantize_base_checkpoint", + } + } + if lora_enabled: + checkpoint_kwargs["is_peft"] = True + checkpoint_kwargs["peft_config"] = peft_config + + checkpoint_root = _infer_checkpoint_root(weights_path) + + # Update checkpointer configuration + self.update_checkpointer_config( + config_updates=checkpoint_kwargs, checkpoint_root=checkpoint_root + ) + + self.checkpointer.save_model( + model=model, + weights_path=weights_path, + peft_config=checkpoint_kwargs.get("peft_config"), + tokenizer=tokenizer if tokenizer_path is None else None, + ) + + if optimizer_path and optimizer is not None: + self.checkpointer.save_optimizer( + optimizer=optimizer, + model=model, + weights_path=optimizer_path, + scheduler=scheduler, + ) + + if tokenizer_path and tokenizer is not None: + print(f"Saving tokenizer (or processor) to {tokenizer_path}") + tokenizer.save_pretrained(tokenizer_path) + + def load_checkpoint( + self, + model: nn.Module, + weights_path: str, + optimizer: Optional[torch.optim.Optimizer] = None, + optimizer_path: Optional[str] = None, + scheduler: Optional[torch.optim.lr_scheduler.LRScheduler] = None, + ) -> None: + """Load a checkpoint into the model using Automodel Checkpointer. + + Args: + model: The model to load weights into. + weights_path: Path to the checkpoint weights. + optimizer: Optional optimizer to load state into. + optimizer_path: Optional path to optimizer checkpoint. + scheduler: Optional learning rate scheduler. + """ + print(f"Loading weights from {weights_path}") + assert self.checkpointer is not None, ( + "Checkpointer must be initialized before loading checkpoint. " + "Call init_checkpointer() first." + ) + + model_save_format, is_peft = detect_checkpoint_format(weights_path) + + weights_dir = os.path.dirname(weights_path) + checkpoint_root = ( + os.path.dirname(weights_dir) + if weights_dir.endswith("weights") + else weights_dir + ) + + # Update checkpointer configuration + self.update_checkpointer_config( + config_updates={ + "model_save_format": model_save_format, + "is_peft": is_peft, + "dequantize_base_checkpoint": False, # the saved checkpoint is already dequantized + }, + checkpoint_root=checkpoint_root, + ) + + model_dir = ( + weights_path + if weights_path.endswith("/model") + else os.path.join(weights_path, "model") + ) + + self.checkpointer.load_model( + model=model, + model_path=model_dir, + ) + + if optimizer_path and optimizer is not None: + self.checkpointer.load_optimizer( + optimizer=optimizer, + model=model, + weights_path=optimizer_path, + scheduler=scheduler, + ) def detect_checkpoint_format(weights_path: str) -> tuple[str, bool]: @@ -91,150 +425,19 @@ def detect_checkpoint_format(weights_path: str) -> tuple[str, bool]: return model_save_format, is_peft -def save_checkpoint( - model: torch.nn.Module, - weights_path: str, - optimizer: Optional[torch.optim.Optimizer] = None, - scheduler: Optional[Any] = None, - optimizer_path: Optional[str] = None, - tokenizer: Optional[Any] = None, - tokenizer_path: Optional[str] = None, - model_save_format: str = "safetensors", - is_peft: bool = False, - peft_config: Optional[Any] = None, - save_consolidated: bool = False, - model_state_dict_keys: Optional[list[str]] = None, -) -> None: - """Save a checkpoint of the model and optionally optimizer state. - - Args: - model: The PyTorch model to save - weights_path: Path to save model weights - optimizer: Optional optimizer to save - scheduler: Optional scheduler to save - optimizer_path: Path to save optimizer state (required if optimizer provided) - tokenizer: Optional tokenizer to save - tokenizer_path: Path to save tokenizer state (required if tokenizer provided) - model_save_format: Format for saving model ("torch_save" or "safetensors") - is_peft: Whether the model uses PEFT - peft_config: PEFT configuration if is_peft is True - save_consolidated: Whether to save consolidated checkpoints (for HF compatibility) - model_state_dict_keys: Copy of the model state dict keys before any parallelization. - If None, will be extracted from the model's current state dict. - """ - # Create checkpoint config - - # Extract model state dict keys if not provided - if model_state_dict_keys is None: - model_state_dict_keys = list(model.state_dict().keys()) - - valid_formats = {"safetensors", "torch_save"} - if model_save_format not in valid_formats: - raise ValueError( - f"Unsupported model_save_format='{model_save_format}'. " - f"Expected one of {sorted(valid_formats)}." - ) - - # Ensure target directories exist - os.makedirs(weights_path, exist_ok=True) - if optimizer_path: - os.makedirs(optimizer_path, exist_ok=True) - if tokenizer_path: - os.makedirs(tokenizer_path, exist_ok=True) - - checkpoint_config = CheckpointingConfig( - enabled=True, - checkpoint_dir=_infer_checkpoint_root(weights_path), - model_save_format=model_save_format, - model_cache_dir="", - model_repo_id="", - save_consolidated=save_consolidated, - is_peft=is_peft, - model_state_dict_keys=model_state_dict_keys, - ) - - # Save model using nemo-automodel API - save_model( - model=model, - weights_path=weights_path, - checkpoint_config=checkpoint_config, - peft_config=peft_config, - tokenizer=tokenizer if tokenizer_path is None else None, - ) - - # Save optimizer if provided - if optimizer is not None: - if optimizer_path is None: - raise ValueError( - "optimizer_path must be provided when saving optimizer state" - ) - save_optimizer( - optimizer=optimizer, - model=model, - weights_path=optimizer_path, - scheduler=scheduler, - ) - - # Save tokenizer separately if tokenizer_path provided - if tokenizer is not None and tokenizer_path is not None: - print(f"Saving tokenizer (or processor) to {tokenizer_path}") - tokenizer.save_pretrained(tokenizer_path) - +def _infer_checkpoint_root(weights_path: str) -> str: + """Infer checkpoint root directory from weights path. -def load_checkpoint( - model: torch.nn.Module, - weights_path: str, - optimizer: Optional[torch.optim.Optimizer] = None, - scheduler: Optional[Any] = None, - optimizer_path: Optional[str] = None, -) -> None: - """Load a model weights and optionally optimizer state. + When weights_path ends with "…/weights/model", we need the parent of + the weights directory (the checkpoint root), not the weights directory itself. Args: - model: The PyTorch model whose weights to update - weights_path: Path to load model weights from - optimizer: Optional optimizer to load state into - scheduler: Optional scheduler to load state into - optimizer_path: Path to load optimizer state from (required if optimizer provided) - """ - print(f"Loading weights from {weights_path}") - - model_save_format, is_peft = detect_checkpoint_format(weights_path) - - try: - format_enum = SerializationFormat[model_save_format.upper()] - - # append /model to the weights_path if it doesn't exist - # TODO: remove this once nemo-automodel is updated - if not weights_path.endswith("/model"): - weights_path = os.path.join(weights_path, "model") - - # Load model using nemo-automodel API - load_model( - model=model, - model_path=weights_path, - model_save_format=format_enum, - is_peft=is_peft, - ) - except FileNotFoundError as e: - msg = ( - f"Failed to load model from '{weights_path}': {e}\n" - "Note: DTensorPolicyWorkerV2 expects:\n" - " - Model shards under '/weights/model'\n" - " - Optimizer states under '/optimizer/optim'\n" - "Please verify your checkpoint layout." - ) - raise FileNotFoundError(msg) from e + weights_path: Path to model weights (e.g., "/path/to/policy/weights/model") - if optimizer is not None: - if optimizer_path is None: - raise ValueError( - "optimizer_path must be provided when loading optimizer state" - ) - print(f"Loading optimizer from {optimizer_path}") - load_optimizer( - optimizer=optimizer, - model=model, - weights_path=optimizer_path, - scheduler=scheduler, - ) + Returns: + str: Checkpoint root directory (e.g., "/path/to/policy") + """ + weights_dir = os.path.dirname(weights_path) + if weights_dir.endswith("weights"): + return os.path.dirname(weights_dir) + return weights_dir diff --git a/nemo_rl/utils/venvs.py b/nemo_rl/utils/venvs.py index c5511473ea..667a45a9f1 100644 --- a/nemo_rl/utils/venvs.py +++ b/nemo_rl/utils/venvs.py @@ -14,6 +14,7 @@ import logging import os import shlex +import shutil import subprocess import time from functools import lru_cache @@ -71,8 +72,6 @@ def create_local_venv( # Force rebuild if requested if force_rebuild and os.path.exists(venv_path): logger.info(f"Force rebuilding venv at {venv_path}") - import shutil - shutil.rmtree(venv_path) logger.info(f"Creating new venv at {venv_path}") diff --git a/pyproject.toml b/pyproject.toml index fbcda5b7c5..61c3f7462d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -58,10 +58,13 @@ automodel = [ # Flash-attn version should be selected to satisfy both TE + vLLM requirements (xformers in particular) # https://github.com/NVIDIA/TransformerEngine/blob/v2.3/transformer_engine/pytorch/attention/dot_product_attention/utils.py#L108 # https://github.com/facebookresearch/xformers/blob/8354497deb2c04c67fbb2e2ad911e86530da0e90/xformers/ops/fmha/flash.py#L76 - "vllm==0.11.2", # Remove this once https://github.com/NVIDIA-NeMo/RL/issues/811 resolved + "vllm==0.11.2", # Remove this once https://github.com/NVIDIA-NeMo/RL/issues/811 resolved "flash-attn==2.8.1", "mamba-ssm", "causal-conv1d", + "nv-grouped-gemm", + "transformer-engine[pytorch]==2.8.0", + "deep_ep @ git+https://github.com/deepseek-ai/DeepEP.git@bfded34800dfec415b71503f8205181de90b2480", ] vllm = [ "cuda-python", @@ -69,7 +72,7 @@ vllm = [ # deep_ep also needs libibverbs-dev # sudo apt-get update # sudo apt-get install libibverbs-dev - "deep_ep @ git+https://github.com/deepseek-ai/DeepEP.git@e3908bf5bd0cc6265bcb225d15cd8c996d4759ef", + "deep_ep @ git+https://github.com/deepseek-ai/DeepEP.git@bfded34800dfec415b71503f8205181de90b2480", "vllm==0.11.2", "num2words>=0.5.14", # Remove this once https://github.com/NVIDIA-NeMo/RL/issues/501 resolved @@ -217,13 +220,11 @@ default-groups = ["dev", "build"] link-mode = "copy" # The TE override is needed because automodel/mbridge we are on is still on 2.5.0 # The opencv-python-headless override is needed because automodel pins it to 4.10.0.84, whereas vllm>=0.11.0 needs >= 4.11.0 -# The transformers override is needed since automodel is still on <=4.55.4 # The timm override is needed because current automodel pins to 1.0.16. This can be removed once we move ToT automodel # The nvidia-modelopt override is needed because mcore is still on 0.33 override-dependencies = [ "transformer-engine[pytorch]==2.8.0", "opencv-python-headless>=4.11.0", - "transformers==4.57.1", "timm<=1.0.22", "nvidia-modelopt[torch]>=0.39.0", ] @@ -266,7 +267,7 @@ requires-dist = ["torch", "packaging", "ninja", "causal-conv1d"] [[tool.uv.dependency-metadata]] name = "deep_ep" # This version has to match the version in the commit/rev/tag used -version = "v1.1.0+e3908bf" +version = "v1.2.1+bfded34" requires-dist = ["torch", "packaging", "ninja"] [[tool.uv.dependency-metadata]] diff --git a/pyrefly.toml b/pyrefly.toml index 95f8943e42..74f0f29ed9 100644 --- a/pyrefly.toml +++ b/pyrefly.toml @@ -109,11 +109,13 @@ project-includes = [ "nemo_rl/models/policy/__init__.py", "nemo_rl/models/policy/interfaces.py", "nemo_rl/models/policy/utils.py", + "nemo_rl/models/policy/workers/__init__.py", + "nemo_rl/models/policy/workers/patches.py", "nemo_rl/utils/__init__.py", + "nemo_rl/utils/automodel_checkpoint.py", "nemo_rl/utils/checkpoint.py", "nemo_rl/utils/config.py", "nemo_rl/utils/native_checkpoint.py", - "nemo_rl/utils/automodel_checkpoint.py", "nemo_rl/utils/nsys.py", "nemo_rl/utils/nvml.py", "nemo_rl/utils/packed_tensor.py", diff --git a/tests/test_suites/llm/sft-gpt-oss-20b-1n8g-fsdp8ep8-automodel.sh b/tests/test_suites/llm/sft-gpt-oss-20b-1n8g-fsdp8ep8-automodel.sh new file mode 100755 index 0000000000..24b5977f7e --- /dev/null +++ b/tests/test_suites/llm/sft-gpt-oss-20b-1n8g-fsdp8ep8-automodel.sh @@ -0,0 +1,40 @@ +#!/bin/bash +SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd) +source $SCRIPT_DIR/common.env + +# ===== BEGIN CONFIG ===== +NUM_NODES=1 +STEPS_PER_RUN=50 +MAX_STEPS=50 +NUM_RUNS=$(( (MAX_STEPS + STEPS_PER_RUN - 1) / STEPS_PER_RUN )) # Round up +NUM_MINUTES=30 +# ===== END CONFIG ===== + +exit_if_max_steps_reached + +# Run the experiment +cd $PROJECT_ROOT +uv run examples/run_sft.py \ + --config $CONFIG_PATH \ + sft.max_num_steps=$MAX_STEPS \ + logger.log_dir=$LOG_DIR \ + logger.wandb_enabled=True \ + logger.wandb.project=ruit_personal_debug \ + logger.wandb.name=$EXP_NAME \ + logger.monitor_gpus=True \ + logger.tensorboard_enabled=True \ + checkpointing.enabled=True \ + checkpointing.checkpoint_dir=$CKPT_DIR \ + $@ \ + 2>&1 | tee $RUN_LOG + +# Convert tensorboard logs to json +uv run tests/json_dump_tb_logs.py $LOG_DIR --output_path $JSON_METRICS + +# Only run metrics if the target step is reached +if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | map(tonumber) | max' $JSON_METRICS) -ge $MAX_STEPS ]]; then + uv run tests/check_metrics.py $JSON_METRICS \ + 'data["train/loss"]["1"] < 7.0' \ + 'data["train/loss"]["50"] < 0.4' \ + 'data["train/grad_norm"]["50"] < 2.5' +fi diff --git a/tests/test_suites/nightly.txt b/tests/test_suites/nightly.txt index c9dddde4f0..7d830fbfd5 100644 --- a/tests/test_suites/nightly.txt +++ b/tests/test_suites/nightly.txt @@ -87,6 +87,9 @@ tests/test_suites/llm/sft-qwen2.5-math7b-2n8g-megatron.sh # Issue with details: https://github.com/NVIDIA-NeMo/RL/issues/1571 # tests/test_suites/llm/sft-nemotron-super-49b-8n8g-fsdp2tp4cp8-tulu-v3.sh +# gpt-oss 20b DeepEP test +tests/test_suites/llm/sft-gpt-oss-20b-1n8g-fsdp8ep8-automodel.sh + ####### # DPO # ####### diff --git a/tests/unit/models/dtensor/test_lora.py b/tests/unit/models/dtensor/test_lora.py index eac60eb6fe..b4c92f1120 100644 --- a/tests/unit/models/dtensor/test_lora.py +++ b/tests/unit/models/dtensor/test_lora.py @@ -32,10 +32,6 @@ apply_lora_to_linear_modules, ) -from nemo_rl.models.policy.workers.dtensor_policy_worker_v2 import ( - _patched_init_lora_weights, -) - class SimpleLoraMock(nn.Module): """Simple mock LoRA module for testing initialization.""" @@ -46,69 +42,6 @@ def __init__(self, in_features=128, out_features=256, lora_dim=8): self.lora_B = nn.Linear(lora_dim, out_features, bias=False) -@pytest.mark.parametrize("init_method", ["xavier"]) -def test_lora_init_differs_from_upstream_buggy_version(init_method): - """ - Test that our patched LoRA initialization differs from the buggy upstream version. - - Remove this test once Automodel is bumped to commit 2d20e33a19d5e53a271b1403b507475e68ad14dc or later. - - Issue: https://github.com/NVIDIA-NeMo/RL/issues/1586 - """ - torch.manual_seed(42) - - # Create two identical LoRA modules - lora_buggy = LinearLoRA(nn.Linear(16, 16)) - lora_patched = LinearLoRA(nn.Linear(16, 16)) - - # Copy initial weights to ensure identical starting point - lora_patched.lora_A.weight.data.copy_(lora_buggy.lora_A.weight.data) - lora_patched.lora_B.weight.data.copy_(lora_buggy.lora_B.weight.data) - - # Apply buggy upstream initialization - torch.manual_seed(42) - lora_buggy.init_lora_weights(init_method) - - # Apply our patched initialization - torch.manual_seed(42) - _patched_init_lora_weights(lora_patched, init_method) - - # For xavier method, they should differ (that's the bug) - - # Assert that weights differ due to the upstream bug - are_equal_A = torch.allclose( - lora_buggy.lora_A.weight.data, - lora_patched.lora_A.weight.data, - atol=1e-6, - rtol=1e-6, - ) - - assert not are_equal_A, ( - "LoRA A weights should differ for xavier initialization. " - "If this assertion fails, the upstream bug has been fixed in Automodel. " - "You can:\n" - "1. Remove the patch in nemo_rl/models/policy/workers/dtensor_policy_worker_v2.py\n" - "2. Remove the patching call\n" - "3. Close issue: https://github.com/NVIDIA-NeMo/RL/issues/1586\n" - "4. Delete this test" - ) - - # LoRA B should always be zero-initialized (both implementations do this correctly) - are_equal_B = torch.allclose( - lora_buggy.lora_B.weight.data, - lora_patched.lora_B.weight.data, - atol=0, - rtol=0, - ) - assert are_equal_B, "LoRA B weights should both be zero" - assert torch.all(lora_buggy.lora_B.weight.data == 0), ( - "LoRA B should be zero-initialized" - ) - assert torch.all(lora_patched.lora_B.weight.data == 0), ( - "LoRA B should be zero-initialized" - ) - - def test_lora_init_statistical_properties(): """ Additional test to verify the statistical properties of the patched initialization. @@ -119,7 +52,7 @@ def test_lora_init_statistical_properties(): lora = SimpleLoraMock(in_features=512, out_features=1024, lora_dim=32) # Test xavier initialization - _patched_init_lora_weights(lora, "xavier") + LinearLoRA.init_lora_weights(lora, "xavier") # Xavier normal should have mean ≈ 0 and specific std mean_A = lora.lora_A.weight.data.mean().item() @@ -137,7 +70,7 @@ def test_lora_init_statistical_properties(): # Test kaiming initialization lora2 = SimpleLoraMock(in_features=512, out_features=1024, lora_dim=32) - _patched_init_lora_weights(lora2, "kaiming") + LinearLoRA.init_lora_weights(lora2, "kaiming") mean_A2 = lora2.lora_A.weight.data.mean().item() assert abs(mean_A2) < 0.1, f"Kaiming should have mean ≈ 0, got {mean_A2}" diff --git a/tests/unit/models/policy/test_automodel_types.py b/tests/unit/models/policy/test_automodel_types.py new file mode 100644 index 0000000000..676305274a --- /dev/null +++ b/tests/unit/models/policy/test_automodel_types.py @@ -0,0 +1,71 @@ +# Copyright (c) 2025, NVIDIA CORPORATION. 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. + +from typing import get_type_hints + +import pytest + +# Check if nemo_automodel is available for tests that need it +try: + from nemo_automodel.components.moe.utils import BackendConfig # noqa: F401 + + NEMO_AUTOMODEL_AVAILABLE = True +except ImportError: + NEMO_AUTOMODEL_AVAILABLE = False + +from nemo_rl.models.policy import AutomodelBackendConfig + + +def get_typeddict_keys(typed_dict_class): + """Get all keys from a TypedDict class.""" + return set(get_type_hints(typed_dict_class).keys()) + + +@pytest.mark.automodel +class TestAutoModelBackendConfig: + def test_backend_config_keys_are_defined(self): + keys = get_typeddict_keys(AutomodelBackendConfig) + assert len(keys) > 0, "AutoModelBackendConfig should have keys defined" + assert "_target_" in keys, "_target_ should be a key in AutoModelBackendConfig" + + @pytest.mark.skipif( + not NEMO_AUTOMODEL_AVAILABLE, reason="nemo_automodel not available" + ) + def test_instantiate_backend_config_from_nemo_automodel(self): + keys = get_typeddict_keys(AutomodelBackendConfig) + backend_keys = {k for k in keys if k != "_target_"} + + config_dict: AutomodelBackendConfig = { + "_target_": "nemo_automodel.components.moe.utils.BackendConfig", + "attn": "te", + "linear": "te", + "rms_norm": "te", + "enable_deepep": True, + "fake_balanced_gate": False, + "enable_hf_state_dict_adapter": True, + "enable_fsdp_optimizations": False, + "gate_precision": "float64", + } + + # Remove _target_ as it's a Hydra convention, not a BackendConfig param + backend_kwargs = {k: v for k, v in config_dict.items() if k != "_target_"} + + # Instantiate the actual BackendConfig + backend = BackendConfig(**backend_kwargs) + + # Verify each key from TypedDict is accessible on the backend + for key in backend_keys: + assert hasattr(backend, key), ( + f"BackendConfig missing attribute '{key}' defined in TypedDict" + ) diff --git a/tests/unit/models/policy/test_dtensor_worker.py b/tests/unit/models/policy/test_dtensor_worker.py index 99ec9bcfff..4ddd320bfe 100644 --- a/tests/unit/models/policy/test_dtensor_worker.py +++ b/tests/unit/models/policy/test_dtensor_worker.py @@ -231,24 +231,8 @@ def calculate_token_logprobs(model_name: str, data: BatchedDataDict): return token_logprobs -@pytest.fixture(scope="module") -def two_gpu_virtual_cluster(): - cluster_name = "test" - print(f"Creating virtual cluster '{cluster_name}'...") - cluster = RayVirtualCluster( - name=cluster_name, - bundle_ct_per_node_list=[2], # Use tp bundles, one per GPU - use_gpus=True, - num_gpus_per_node=2, # Using tp GPUs - max_colocated_worker_groups=1, # Only one worker group - ) - yield cluster - print("Shutting down virtual cluster...") - cluster.shutdown() - - -@pytest.fixture -def base_setup(request, two_gpu_virtual_cluster): +def _base_setup_impl(request, cluster): + """Implementation for base setup - can be used with any cluster.""" params = request.param if hasattr(request, "param") else None assert params is not None, "params is not set" @@ -273,7 +257,7 @@ def base_setup(request, two_gpu_virtual_cluster): tokenizer = get_tokenizer(config["tokenizer"]) print(f"Creating {mode} Policy with {specified_config}...") policy = Policy( - cluster=two_gpu_virtual_cluster, + cluster=cluster, config=config, tokenizer=tokenizer, init_reference_model=False, @@ -298,319 +282,6 @@ def base_setup(request, two_gpu_virtual_cluster): policy.shutdown() -@pytest.fixture -def policy_setup(request, two_gpu_virtual_cluster, tiny_llama_model_path): - """Setup and teardown for policy tests - creates a virtual cluster and policy.""" - params = request.param if hasattr(request, "param") else {} - use_v2 = params.get("dtensor_v2", False) - enable_loras = params.get("enable_loras", False) - - config = create_test_config( - tiny_llama_model_path, dtensor_v2=use_v2, enable_loras=enable_loras - ) - tokenizer = get_tokenizer(config["tokenizer"]) - config["generation"] = configure_generation_config(config["generation"], tokenizer) - - print("Creating Policy...") - policy = Policy(cluster=two_gpu_virtual_cluster, config=config, tokenizer=tokenizer) - - yield policy - - print("Shutting down policy...") - policy.shutdown() - - -@pytest.fixture( - params=[ - # model_fixture_name tp cp sp cpu act - ("tiny_llama_model_path", 1, 1, False, False, False), - ("tiny_llama_model_path", 1, 1, True, False, False), - ("tiny_llama_model_path", 1, 1, False, True, False), - ("tiny_llama_model_path", 1, 1, False, False, True), - ("tiny_llama_model_path", 1, 2, False, False, False), - ("tiny_qwen2_model_path", 1, 1, True, True, False), - ("tiny_qwen2_model_path", 1, 1, True, False, True), - ("tiny_qwen2_model_path", 1, 1, False, True, True), - ("tiny_qwen2_model_path", 1, 1, True, True, True), - ("tiny_qwen2_model_path", 1, 2, False, False, False), - ("tiny_qwen3_model_path", 1, 1, True, True, False), - ("tiny_qwen3_model_path", 1, 1, True, False, True), - ("tiny_qwen3_model_path", 1, 1, False, True, True), - ("tiny_qwen3_model_path", 1, 1, True, True, True), - ("tiny_qwen3_model_path", 1, 2, False, False, False), - ( - "tiny_gemma3_model_path", - 1, - 1, - True, - True, - False, - ), # gemma3 doesn't support spda - ("tiny_gemma3_model_path", 1, 1, True, False, True), - ("tiny_gemma3_model_path", 1, 1, False, True, True), - ("tiny_gemma3_model_path", 1, 1, True, True, True), - # CP doesn't support gemma3 due to spda input has attent_mask != None. - # Nemotron-H doesn't support SP https://github.com/NVIDIA-NeMo/RL/issues/881 - # ("tiny_nemotron5_h_model_path", 1, 1, True, True, False), - # ("tiny_nemotron5_h_model_path", 1, 1, True, False, True), - # ("tiny_nemotron5_h_model_path", 1, 1, True, True, True), - ("tiny_nemotron5_h_model_path", 1, 1, False, False, False), - ("tiny_nemotron5_h_model_path", 1, 1, False, True, True), - # nemotron5_h doesn't support cp - ] -) -def training_setup(request, two_gpu_virtual_cluster): - """Setup and teardown specifically for training tests.""" - request.param = { - "mode": "train", - "enable_loras": False, - "lora_config": None, - "model_fixture_name": request.param[0], - "specified_config": { - "tp": request.param[1], - "cp": request.param[2], - "sp": request.param[3], - "cpu_offload": request.param[4], - "activation_checkpointing": request.param[5], - }, - } - yield from base_setup.__wrapped__(request, two_gpu_virtual_cluster) - - -@pytest.fixture( - params=[ - # TP=2, CP=1 - ("tiny_qwen2_model_path", 2, 1, False, True, False), - ("tiny_qwen2_model_path", 2, 1, False, False, False), - ("tiny_llama_model_path", 2, 1, False, False, False), - ("tiny_llama_model_path", 2, 1, False, True, False), - ("tiny_llama_model_path", 2, 1, False, True, True), - ("tiny_qwen3_model_path", 2, 1, False, True, False), - ("tiny_qwen3_model_path", 2, 1, False, False, False), - ("tiny_gemma3_model_path", 2, 1, False, True, False), - ("tiny_gemma3_model_path", 2, 1, False, False, False), - # TP=1, CP=2 - ("tiny_qwen2_model_path", 1, 2, False, True, False), - ("tiny_qwen2_model_path", 1, 2, False, False, False), - ("tiny_llama_model_path", 1, 2, False, False, False), - ("tiny_llama_model_path", 1, 2, False, True, False), - ("tiny_llama_model_path", 1, 2, False, True, True), - ("tiny_qwen3_model_path", 1, 2, False, True, False), - ("tiny_qwen3_model_path", 1, 2, False, False, False), - ] -) -def logprob_setup(request, two_gpu_virtual_cluster): - """Setup and teardown specifically for logprob tests.""" - request.param = { - "mode": "logprob", - "enable_loras": False, - "lora_config": None, - "model_fixture_name": request.param[0], - "specified_config": { - "tp": request.param[1], - "cp": request.param[2], - "sp": request.param[3], - "cpu_offload": request.param[4], - "activation_checkpointing": request.param[5], - }, - } - yield from base_setup.__wrapped__(request, two_gpu_virtual_cluster) - - -@pytest.fixture( - params=[ - # model_name, target_modules, exclude_modules, match_all_linear, dim, alpha, dropout, dropout_position, lora_A_init, use_triton - ("tiny_llama_model_path", [], [], True, 16, 32, 0.0, "post", "xavier", True), - ("tiny_qwen2_model_path", [], [], True, 32, 32, 0.0, "pre", "xavier", True), - ( - "tiny_qwen2_model_path", - ["q_proj", "k_proj", "*gate_proj*", "*up_proj*", "*down_proj*"], - [], - False, - 32, - 16, - 0.0, - "post", - "uniform", - True, - ), - ( - "tiny_qwen2_model_path", - [], - ["q_proj", "k_proj"], - False, - 32, - 16, - 0.0, - "post", - "uniform", - True, - ), - ] -) -def training_with_lora_setup(request, two_gpu_virtual_cluster): - """Setup and teardown specifically for training with lora tests.""" - request.param = { - "mode": "train", - "enable_loras": True, - "model_fixture_name": request.param[0], - "specified_config": {}, - "lora_config": { - "target_modules": request.param[1], - "exclude_modules": request.param[2], - "match_all_linear": request.param[3], - "dim": request.param[4], - "alpha": request.param[5], - "dropout": request.param[6], - "dropout_position": request.param[7], - "lora_A_init": request.param[8], - "use_triton": request.param[9], - }, - } - yield from base_setup.__wrapped__(request, two_gpu_virtual_cluster) - - -@pytest.fixture( - params=[ - # model_name, target_modules, exclude_modules, match_all_linear, dim, alpha, dropout, dropout_position, lora_A_init, use_triton - ("tiny_llama_model_path", [], [], True, 16, 32, 0.0, "post", "xavier", True), - ("tiny_qwen2_model_path", [], [], True, 32, 32, 0.0, "pre", "xavier", True), - ( - "tiny_qwen2_model_path", - ["q_proj", "k_proj", "*gate_proj*", "*up_proj*", "*down_proj*"], - [], - False, - 32, - 16, - 0.0, - "post", - "uniform", - True, - ), - ( - "tiny_qwen2_model_path", - [], - ["q_proj", "k_proj"], - False, - 32, - 16, - 0.0, - "post", - "uniform", - True, - ), - ] -) -def logprob_with_lora_setup(request, two_gpu_virtual_cluster): - """Setup and teardown specifically for logprob with lora tests.""" - request.param = { - "mode": "logprob", - "enable_loras": True, - "model_fixture_name": request.param[0], - "specified_config": {}, - "lora_config": { - "target_modules": request.param[1], - "exclude_modules": request.param[2], - "match_all_linear": request.param[3], - "dim": request.param[4], - "alpha": request.param[5], - "dropout": request.param[6], - "dropout_position": request.param[7], - "lora_A_init": request.param[8], - "use_triton": request.param[9], - }, - } - yield from base_setup.__wrapped__(request, two_gpu_virtual_cluster) - - -@pytest.mark.hf_gated -@pytest.mark.timeout(360) -# @pytest.mark.parametrize("policy_setup", [True, False], indirect=True) -@pytest.mark.parametrize( - "policy_setup", - [ - {"dtensor_v2": True, "enable_loras": False}, - {"dtensor_v2": True, "enable_loras": True}, - {"dtensor_v2": False, "enable_loras": False}, - ], - indirect=True, -) -def test_lm_policy_init(policy_setup): - policy = policy_setup - - # Verify we have two workers, one per GPU - assert len(policy.worker_group.workers) == 2, "Should have 2 workers, one per GPU" - - # Check workers are alive - worker_alive = ray.get([w.is_alive.remote() for w in policy.worker_group.workers]) - assert all(worker_alive), f"Not all workers are alive: {worker_alive}" - - # Get GPU info from both workers to verify GPU usage - print("\nGetting GPU information from workers...") - gpu_infos = ray.get([w.get_gpu_info.remote() for w in policy.worker_group.workers]) - print("\nGPU Information:") - for i, info in enumerate(gpu_infos): - print(f"\nWorker {i} GPU Info:") - pprint.pprint(info) - - # Check 1: Verify workers have different ranks - gpu_ranks = [info["rank"] for info in gpu_infos] - assert len(set(gpu_ranks)) == 2, f"Expected 2 different ranks, got {gpu_ranks}" - assert set(gpu_ranks) == {0, 1}, f"Expected ranks 0 and 1, got {gpu_ranks}" - - # Check 2: Verify workers have different local_ranks - local_ranks = [info["local_rank"] for info in gpu_infos] - assert len(set(local_ranks)) == 2, ( - f"Expected 2 different local_ranks, got {local_ranks}" - ) - assert set(local_ranks) == {0, 1}, ( - f"Expected local_ranks 0 and 1, got {local_ranks}" - ) - - # Check 3: Verify workers have different CUDA_VISIBLE_DEVICES - cuda_visible_devices = [ - info["env_vars"].get("CUDA_VISIBLE_DEVICES") for info in gpu_infos - ] - assert len(set(cuda_visible_devices)) == 2, ( - f"Expected different CUDA_VISIBLE_DEVICES, got {cuda_visible_devices}" - ) - - # Check 4: Verify all workers report correct world_size - for info in gpu_infos: - assert info["world_size"] == 2, ( - f"Expected world_size=2, got {info['world_size']}" - ) - assert info["env_vars"]["WORLD_SIZE"] == "2", ( - f"Expected WORLD_SIZE=2, got {info['env_vars']['WORLD_SIZE']}" - ) - - # Check 5: Verify GPU memory is allocated on both GPUs - for info in gpu_infos: - assert info["memory_allocated_mb"] > 10, ( - f"Not enough memory allocated on GPU for rank {info['rank']}: {info['memory_allocated_mb']:.2f} MB" - ) - - # Check 6: Verify model parameters are on CUDA devices for both workers - for info in gpu_infos: - param_sample = list(info["parameter_sample"].values())[0] - assert "cuda" in param_sample["device"], ( - f"Parameter not on CUDA device: {param_sample['device']}" - ) - - # Check 8: Verify same model parameters are being tracked across workers - param_names = [list(info["parameter_sample"].keys())[0] for info in gpu_infos] - assert len(set(param_names)) == 1, ( - f"Workers are not tracking the same parameter: {param_names}" - ) - - # Check 9: Both workers should see their device as cuda:0 (correct distributed behavior) - for info in gpu_infos: - param_device = list(info["parameter_sample"].values())[0]["device"] - assert param_device == "cuda:0", ( - f"Expected parameter device to be cuda:0, got {param_device}" - ) - - def _test_dtensor_worker_training(policy, data, loss_fn): def verify_loss_tensor(loss_tensor): assert not torch.isnan(loss_tensor).any(), "Loss should not be NaN" @@ -666,21 +337,6 @@ def verify_loss_tensor(loss_tensor): ) -@pytest.mark.hf_gated -@pytest.mark.timeout(360) -@pytest.mark.parametrize("use_v2", [True, False]) -def test_dtensor_worker_training(use_v2, training_setup): - policy, data, loss_fn = training_setup - _test_dtensor_worker_training(policy, data, loss_fn) - - -@pytest.mark.hf_gated -@pytest.mark.timeout(360) -def test_dtensor_worker_training_with_lora(training_with_lora_setup): - policy, data, loss_fn = training_with_lora_setup - _test_dtensor_worker_training(policy, data, loss_fn) - - def _test_dtensor_worker_logprob(policy, data, logprobs): # Verify resources were created properly assert policy is not None, "Policy was not created properly" assert data is not None, "Test data was not created properly" @@ -697,280 +353,794 @@ def _test_dtensor_worker_logprob(policy, data, logprobs): @pytest.mark.hf_gated -@pytest.mark.timeout(360) -@pytest.mark.parametrize("use_v2", [True, False]) -def test_dtensor_worker_logprob_tp2_or_cp2_matches_unsharded(use_v2, logprob_setup): - policy, data, logprobs = logprob_setup - _test_dtensor_worker_logprob(policy, data, logprobs) +class TestSingleGPUCluster: + """Tests that run on a single GPU cluster.""" + + @pytest.fixture(scope="class") + def single_gpu_cluster(self): + """Class-scoped single GPU virtual cluster fixture.""" + cluster_name = "test_single_gpu" + print(f"Creating single GPU virtual cluster '{cluster_name}'...") + cluster = RayVirtualCluster( + name=cluster_name, + bundle_ct_per_node_list=[1], # Single GPU bundle + use_gpus=True, + num_gpus_per_node=1, # Using 1 GPU + max_colocated_worker_groups=1, # Only one worker group + ) + yield cluster + print("Shutting down single GPU virtual cluster...") + cluster.shutdown() + + @pytest.mark.timeout(360) + @pytest.mark.parametrize("use_v2", [True, False]) + def test_dtensor_single_gpu_training( + self, use_v2, single_gpu_cluster, tiny_llama_model_path + ): + """Test DTensor training with a single GPU cluster (no parallelism).""" + config = create_test_config( + tiny_llama_model_path, + tp=1, + cp=1, + sp=False, + cpu_offload=False, + activation_checkpointing=False, + dtensor_v2=use_v2, + ) + tokenizer = get_tokenizer(config["tokenizer"]) + config["generation"] = configure_generation_config( + config["generation"], tokenizer + ) + print("Creating Policy with single GPU cluster...") + policy = Policy( + cluster=single_gpu_cluster, + config=config, + tokenizer=tokenizer, + init_reference_model=False, + ) -@pytest.mark.hf_gated -@pytest.mark.timeout(360) -def test_dtensor_worker_logprob_with_lora(logprob_with_lora_setup): - policy, data, logprobs = logprob_with_lora_setup - _test_dtensor_worker_logprob(policy, data, logprobs) + try: + # Verify we have one worker + assert len(policy.worker_group.workers) == 1, ( + "Should have 1 worker for single GPU" + ) + # Check worker is alive + worker_alive = ray.get( + [w.is_alive.remote() for w in policy.worker_group.workers] + ) + assert all(worker_alive), f"Worker is not alive: {worker_alive}" -@pytest.mark.hf_gated -@pytest.mark.parametrize("use_v2", [True, False]) -def test_dtensor_tp_and_tied_model_with_custom_parallel_plan( - use_v2, two_gpu_virtual_cluster, tiny_llama_tied_model_path -): - """Test that DTensor with a tp > 1 and a tied model with a custom parallel plan works.""" - from torch.distributed.tensor.parallel import ColwiseParallel - from torch.distributed.tensor.placement_types import Replicate + # Get GPU info to verify setup + gpu_infos = ray.get( + [w.get_gpu_info.remote() for w in policy.worker_group.workers] + ) + assert len(gpu_infos) == 1, "Should have 1 GPU info" + assert gpu_infos[0]["world_size"] == 1, ( + "World size should be 1 for single GPU" + ) + assert gpu_infos[0]["rank"] == 0, "Rank should be 0 for single GPU" + + # Create test batch + data = create_test_batch(mode="train") + loss_fn = SimpleLoss() + + # Test training + policy.prepare_for_training() + + losses = [] + for step in range(2): + results = policy.train(data, loss_fn) + assert "loss" in results, "Training results should contain 'loss'" + loss_tensor = results["loss"] + assert not torch.isnan(loss_tensor).any(), "Loss should not be NaN" + assert not torch.isinf(loss_tensor).any(), "Loss should not be Inf" + losses.append(loss_tensor[-1].item()) + print(f"Step {step} - Training loss: {results['loss']}") + + policy.finish_training() + + # Verify loss changed (model was updated) + assert losses[0] > losses[-1], ( + "Loss should decrease over training iterations" + ) - custom_parallel_plan = { - "lm_head": ColwiseParallel(output_layouts=Replicate()), - "model.embed_tokens": ColwiseParallel(output_layouts=Replicate()), - } - config = create_test_config( - model_name=tiny_llama_tied_model_path, - tp=2, - cp=1, - sp=False, - cpu_offload=False, - activation_checkpointing=False, - custom_parallel_plan=custom_parallel_plan, - dtensor_v2=use_v2, - ) - tokenizer = get_tokenizer(config["tokenizer"]) - - policy = Policy( - tokenizer=tokenizer, - config=config, - init_optimizer=False, - init_reference_model=False, - cluster=two_gpu_virtual_cluster, - ) + finally: + policy.shutdown() - # Verify that the model is parallelized as expected - state_dict = ray.get(policy.worker_group.workers[0].return_state_dict.remote()) - total_shape = state_dict["lm_head.weight"].shape - sharded_shape = state_dict["lm_head.weight"].to_local().shape - assert total_shape[0] == sharded_shape[0], ( - "lm_head.weight should have the same number of rows" - ) - assert total_shape[1] == sharded_shape[1] * 2, ( - "lm_head.weight should be sharded across 2 GPUs" - ) + @pytest.mark.timeout(360) + @pytest.mark.parametrize("use_v2", [True, False]) + def test_dtensor_single_gpu_logprob( + self, use_v2, single_gpu_cluster, tiny_llama_model_path + ): + """Test DTensor logprob computation with a single GPU cluster (no parallelism).""" + config = create_test_config( + tiny_llama_model_path, + tp=1, + cp=1, + sp=False, + cpu_offload=False, + activation_checkpointing=False, + dtensor_v2=use_v2, + ) + tokenizer = get_tokenizer(config["tokenizer"]) + config["generation"] = configure_generation_config( + config["generation"], tokenizer + ) + + print("Creating Policy with single GPU cluster for logprob...") + policy = Policy( + cluster=single_gpu_cluster, + config=config, + tokenizer=tokenizer, + init_reference_model=False, + ) + + try: + # Verify we have one worker + assert len(policy.worker_group.workers) == 1, ( + "Should have 1 worker for single GPU" + ) + + # Create test batch and compute reference logprobs + data = create_test_batch(mode="logprob") + expected_logprobs = calculate_token_logprobs(tiny_llama_model_path, data) + + # Test logprob computation + policy.prepare_for_lp_inference() + policy_logprobs = policy.get_logprobs(data)["logprobs"] + + max_diff = torch.max(torch.abs(policy_logprobs - expected_logprobs)) + print(f"Max logprob diff: {max_diff}") + assert torch.allclose(policy_logprobs, expected_logprobs), ( + f"Logprobs should match reference. Max diff: {max_diff}" + ) - # Clean up - policy.shutdown() + finally: + policy.shutdown() @pytest.mark.hf_gated -@pytest.mark.timeout(180) -def test_dtensor_loss_independent_of_microbatch_size_two_gpus( - two_gpu_virtual_cluster, tiny_llama_model_path -): - """Tests that changing microbatch size while keeping global batch size constant does not affect loss values in DTensor.""" - # Create test batch with global batch size of 8 - global_batch_size = 8 - seq_len = 128 - vocab_size = 32000 +class TestTwoGPUCluster: + """Tests that run on a two GPU cluster.""" + + @pytest.fixture(scope="class") + def two_gpu_cluster(self): + """Class-scoped two GPU virtual cluster fixture.""" + cluster_name = "test_two_gpu" + print(f"Creating virtual cluster '{cluster_name}'...") + cluster = RayVirtualCluster( + name=cluster_name, + bundle_ct_per_node_list=[2], # Use tp bundles, one per GPU + use_gpus=True, + num_gpus_per_node=2, # Using tp GPUs + max_colocated_worker_groups=1, # Only one worker group + ) + yield cluster + print("Shutting down virtual cluster...") + cluster.shutdown() + + @pytest.fixture + def policy_setup(self, request, two_gpu_cluster, tiny_llama_model_path): + """Setup and teardown for policy tests - creates a virtual cluster and policy.""" + params = request.param if hasattr(request, "param") else {} + use_v2 = params.get("dtensor_v2", False) + enable_loras = params.get("enable_loras", False) + + config = create_test_config( + tiny_llama_model_path, dtensor_v2=use_v2, enable_loras=enable_loras + ) + tokenizer = get_tokenizer(config["tokenizer"]) + config["generation"] = configure_generation_config( + config["generation"], tokenizer + ) - # Create test input_ids and attention_mask - input_ids = torch.randint(0, vocab_size, (global_batch_size, seq_len)) - attention_mask = torch.ones(global_batch_size, seq_len) - input_lengths = attention_mask.sum(dim=1).to(torch.int32) + print("Creating Policy...") + policy = Policy(cluster=two_gpu_cluster, config=config, tokenizer=tokenizer) - # Create data dictionary - data = BatchedDataDict( - { - "input_ids": input_ids, - "input_lengths": input_lengths, - "attention_mask": attention_mask, - "token_mask": torch.triu( - torch.ones(global_batch_size, seq_len), diagonal=1 - ), # give different examples different numbers of valid tokens - "sample_mask": torch.ones((global_batch_size,)), - "labels": torch.randint(0, vocab_size, (global_batch_size, seq_len)), - "num_valid_tokens_in_batch": torch.tensor( - [seq_len] * global_batch_size, dtype=torch.float32 + yield policy + + print("Shutting down policy...") + policy.shutdown() + + @pytest.fixture( + params=[ + # model_fixture_name tp cp sp cpu act + ("tiny_llama_model_path", 1, 1, False, False, False), + ("tiny_llama_model_path", 1, 1, True, False, False), + ("tiny_llama_model_path", 1, 1, False, True, False), + ("tiny_llama_model_path", 1, 1, False, False, True), + ("tiny_llama_model_path", 1, 2, False, False, False), + ("tiny_qwen2_model_path", 1, 1, True, True, False), + ("tiny_qwen2_model_path", 1, 1, True, False, True), + ("tiny_qwen2_model_path", 1, 1, False, True, True), + ("tiny_qwen2_model_path", 1, 1, True, True, True), + ("tiny_qwen2_model_path", 1, 2, False, False, False), + ("tiny_qwen3_model_path", 1, 1, True, True, False), + ("tiny_qwen3_model_path", 1, 1, True, False, True), + ("tiny_qwen3_model_path", 1, 1, False, True, True), + ("tiny_qwen3_model_path", 1, 1, True, True, True), + ("tiny_qwen3_model_path", 1, 2, False, False, False), + ( + "tiny_gemma3_model_path", + 1, + 1, + True, + True, + False, + ), # gemma3 doesn't support spda + ("tiny_gemma3_model_path", 1, 1, True, False, True), + ("tiny_gemma3_model_path", 1, 1, False, True, True), + ("tiny_gemma3_model_path", 1, 1, True, True, True), + # CP doesn't support gemma3 due to spda input has attent_mask != None. + # Nemotron-H doesn't support SP https://github.com/NVIDIA-NeMo/RL/issues/881 + # ("tiny_nemotron5_h_model_path", 1, 1, True, True, False), + # ("tiny_nemotron5_h_model_path", 1, 1, True, False, True), + # ("tiny_nemotron5_h_model_path", 1, 1, True, True, True), + ("tiny_nemotron5_h_model_path", 1, 1, False, False, False), + ("tiny_nemotron5_h_model_path", 1, 1, False, True, True), + # nemotron5_h doesn't support cp + ] + ) + def training_setup(self, request, two_gpu_cluster): + """Setup and teardown specifically for training tests.""" + request.param = { + "mode": "train", + "enable_loras": False, + "lora_config": None, + "model_fixture_name": request.param[0], + "specified_config": { + "tp": request.param[1], + "cp": request.param[2], + "sp": request.param[3], + "cpu_offload": request.param[4], + "activation_checkpointing": request.param[5], + }, + } + yield from _base_setup_impl(request, two_gpu_cluster) + + @pytest.fixture( + params=[ + # TP=2, CP=1 + ("tiny_qwen2_model_path", 2, 1, False, True, False), + ("tiny_qwen2_model_path", 2, 1, False, False, False), + ("tiny_llama_model_path", 2, 1, False, False, False), + ("tiny_llama_model_path", 2, 1, False, True, False), + ("tiny_llama_model_path", 2, 1, False, True, True), + ("tiny_qwen3_model_path", 2, 1, False, True, False), + ("tiny_qwen3_model_path", 2, 1, False, False, False), + ("tiny_gemma3_model_path", 2, 1, False, True, False), + ("tiny_gemma3_model_path", 2, 1, False, False, False), + # TP=1, CP=2 + ("tiny_qwen2_model_path", 1, 2, False, True, False), + ("tiny_qwen2_model_path", 1, 2, False, False, False), + ("tiny_llama_model_path", 1, 2, False, False, False), + ("tiny_llama_model_path", 1, 2, False, True, False), + ("tiny_llama_model_path", 1, 2, False, True, True), + ("tiny_qwen3_model_path", 1, 2, False, True, False), + ("tiny_qwen3_model_path", 1, 2, False, False, False), + ] + ) + def logprob_setup(self, request, two_gpu_cluster): + """Setup and teardown specifically for logprob tests.""" + request.param = { + "mode": "logprob", + "enable_loras": False, + "lora_config": None, + "model_fixture_name": request.param[0], + "specified_config": { + "tp": request.param[1], + "cp": request.param[2], + "sp": request.param[3], + "cpu_offload": request.param[4], + "activation_checkpointing": request.param[5], + }, + } + yield from _base_setup_impl(request, two_gpu_cluster) + + @pytest.fixture( + params=[ + # model_name, target_modules, exclude_modules, match_all_linear, dim, alpha, dropout, dropout_position, lora_A_init, use_triton + ( + "tiny_llama_model_path", + [], + [], + True, + 16, + 32, + 0.0, + "post", + "xavier", + True, + ), + ("tiny_qwen2_model_path", [], [], True, 32, 32, 0.0, "pre", "xavier", True), + ( + "tiny_qwen2_model_path", + ["q_proj", "k_proj", "*gate_proj*", "*up_proj*", "*down_proj*"], + [], + False, + 32, + 16, + 0.0, + "post", + "uniform", + True, + ), + ( + "tiny_qwen2_model_path", + [], + ["q_proj", "k_proj"], + False, + 32, + 16, + 0.0, + "post", + "uniform", + True, + ), + ] + ) + def training_with_lora_setup(self, request, two_gpu_cluster): + """Setup and teardown specifically for training with lora tests.""" + request.param = { + "mode": "train", + "enable_loras": True, + "model_fixture_name": request.param[0], + "specified_config": {}, + "lora_config": { + "target_modules": request.param[1], + "exclude_modules": request.param[2], + "match_all_linear": request.param[3], + "dim": request.param[4], + "alpha": request.param[5], + "dropout": request.param[6], + "dropout_position": request.param[7], + "lora_A_init": request.param[8], + "use_triton": request.param[9], + }, + } + yield from _base_setup_impl(request, two_gpu_cluster) + + @pytest.fixture( + params=[ + # model_name, target_modules, exclude_modules, match_all_linear, dim, alpha, dropout, dropout_position, lora_A_init, use_triton + ( + "tiny_llama_model_path", + [], + [], + True, + 16, + 32, + 0.0, + "post", + "xavier", + True, ), - "advantages": torch.randn(global_batch_size, seq_len), - "prev_logprobs": torch.randn(global_batch_size, seq_len), - "reference_policy_logprobs": torch.randn(global_batch_size, seq_len), - "generation_logprobs": torch.randn(global_batch_size, seq_len), + ("tiny_qwen2_model_path", [], [], True, 32, 32, 0.0, "pre", "xavier", True), + ( + "tiny_qwen2_model_path", + ["q_proj", "k_proj", "*gate_proj*", "*up_proj*", "*down_proj*"], + [], + False, + 32, + 16, + 0.0, + "post", + "uniform", + True, + ), + ( + "tiny_qwen2_model_path", + [], + ["q_proj", "k_proj"], + False, + 32, + 16, + 0.0, + "post", + "uniform", + True, + ), + ] + ) + def logprob_with_lora_setup(self, request, two_gpu_cluster): + """Setup and teardown specifically for logprob with lora tests.""" + request.param = { + "mode": "logprob", + "enable_loras": True, + "model_fixture_name": request.param[0], + "specified_config": {}, + "lora_config": { + "target_modules": request.param[1], + "exclude_modules": request.param[2], + "match_all_linear": request.param[3], + "dim": request.param[4], + "alpha": request.param[5], + "dropout": request.param[6], + "dropout_position": request.param[7], + "lora_A_init": request.param[8], + "use_triton": request.param[9], + }, } + yield from _base_setup_impl(request, two_gpu_cluster) + + @pytest.mark.timeout(360) + @pytest.mark.parametrize( + "policy_setup", + [ + {"dtensor_v2": True, "enable_loras": False}, + {"dtensor_v2": True, "enable_loras": True}, + {"dtensor_v2": False, "enable_loras": False}, + ], + indirect=True, ) + def test_lm_policy_init(self, policy_setup): + policy = policy_setup - # Test with mbs=1, 2 microbatches per GPU - config = create_test_config(tiny_llama_model_path) - tokenizer = get_tokenizer(config["tokenizer"]) + # Verify we have two workers, one per GPU + assert len(policy.worker_group.workers) == 2, ( + "Should have 2 workers, one per GPU" + ) - print("Creating training Policy with mbs=1...") - policy_mbs1 = Policy( - cluster=two_gpu_virtual_cluster, - config=config, - init_reference_model=False, - tokenizer=tokenizer, - ) + # Check workers are alive + worker_alive = ray.get( + [w.is_alive.remote() for w in policy.worker_group.workers] + ) + assert all(worker_alive), f"Not all workers are alive: {worker_alive}" - # Test NLLLoss and ClippedPGLossFn with mbs=1 - nll_loss_fn = NLLLoss() - pg_loss_fn = ClippedPGLossFn( - { - "ratio_clip_min": 0.2, - "ratio_clip_max": 0.2, - "ratio_clip_c": None, - "reference_policy_kl_penalty": 0.1, - "reference_policy_kl_type": "k3", - "kl_input_clamp_value": 20.0, - "kl_output_clamp_value": 10.0, - "disable_ppo_ratio": False, - "use_on_policy_kl_approximation": False, - "use_importance_sampling_correction": False, - "truncated_importance_sampling_ratio": None, - "sequence_level_importance_ratios": False, - "token_level_loss": True, - "force_on_policy_ratio": False, + # Get GPU info from both workers to verify GPU usage + print("\nGetting GPU information from workers...") + gpu_infos = ray.get( + [w.get_gpu_info.remote() for w in policy.worker_group.workers] + ) + print("\nGPU Information:") + for i, info in enumerate(gpu_infos): + print(f"\nWorker {i} GPU Info:") + pprint.pprint(info) + + # Check 1: Verify workers have different ranks + gpu_ranks = [info["rank"] for info in gpu_infos] + assert len(set(gpu_ranks)) == 2, f"Expected 2 different ranks, got {gpu_ranks}" + assert set(gpu_ranks) == {0, 1}, f"Expected ranks 0 and 1, got {gpu_ranks}" + + # Check 2: Verify workers have different local_ranks + local_ranks = [info["local_rank"] for info in gpu_infos] + assert len(set(local_ranks)) == 2, ( + f"Expected 2 different local_ranks, got {local_ranks}" + ) + assert set(local_ranks) == {0, 1}, ( + f"Expected local_ranks 0 and 1, got {local_ranks}" + ) + + # Check 3: Verify workers have different CUDA_VISIBLE_DEVICES + cuda_visible_devices = [ + info["env_vars"].get("CUDA_VISIBLE_DEVICES") for info in gpu_infos + ] + assert len(set(cuda_visible_devices)) == 2, ( + f"Expected different CUDA_VISIBLE_DEVICES, got {cuda_visible_devices}" + ) + + # Check 4: Verify all workers report correct world_size + for info in gpu_infos: + assert info["world_size"] == 2, ( + f"Expected world_size=2, got {info['world_size']}" + ) + assert info["env_vars"]["WORLD_SIZE"] == "2", ( + f"Expected WORLD_SIZE=2, got {info['env_vars']['WORLD_SIZE']}" + ) + + # Check 5: Verify GPU memory is allocated on both GPUs + for info in gpu_infos: + assert info["memory_allocated_mb"] > 10, ( + f"Not enough memory allocated on GPU for rank {info['rank']}: {info['memory_allocated_mb']:.2f} MB" + ) + + # Check 6: Verify model parameters are on CUDA devices for both workers + for info in gpu_infos: + param_sample = list(info["parameter_sample"].values())[0] + assert "cuda" in param_sample["device"], ( + f"Parameter not on CUDA device: {param_sample['device']}" + ) + + # Check 8: Verify same model parameters are being tracked across workers + param_names = [list(info["parameter_sample"].keys())[0] for info in gpu_infos] + assert len(set(param_names)) == 1, ( + f"Workers are not tracking the same parameter: {param_names}" + ) + + # Check 9: Both workers should see their device as cuda:0 (correct distributed behavior) + for info in gpu_infos: + param_device = list(info["parameter_sample"].values())[0]["device"] + assert param_device == "cuda:0", ( + f"Expected parameter device to be cuda:0, got {param_device}" + ) + + @pytest.mark.timeout(360) + @pytest.mark.parametrize("use_v2", [True, False]) + def test_dtensor_worker_training(self, use_v2, training_setup): + policy, data, loss_fn = training_setup + _test_dtensor_worker_training(policy, data, loss_fn) + + @pytest.mark.timeout(360) + def test_dtensor_worker_training_with_lora(self, training_with_lora_setup): + policy, data, loss_fn = training_with_lora_setup + _test_dtensor_worker_training(policy, data, loss_fn) + + @pytest.mark.timeout(360) + @pytest.mark.parametrize("use_v2", [True, False]) + def test_dtensor_worker_logprob_tp2_or_cp2_matches_unsharded( + self, use_v2, logprob_setup + ): + policy, data, logprobs = logprob_setup + _test_dtensor_worker_logprob(policy, data, logprobs) + + @pytest.mark.timeout(360) + def test_dtensor_worker_logprob_with_lora(self, logprob_with_lora_setup): + policy, data, logprobs = logprob_with_lora_setup + _test_dtensor_worker_logprob(policy, data, logprobs) + + @pytest.mark.parametrize("use_v2", [True, False]) + def test_dtensor_tp_and_tied_model_with_custom_parallel_plan( + self, use_v2, two_gpu_cluster, tiny_llama_tied_model_path + ): + """Test that DTensor with a tp > 1 and a tied model with a custom parallel plan works.""" + from torch.distributed.tensor.parallel import ColwiseParallel + from torch.distributed.tensor.placement_types import Replicate + + custom_parallel_plan = { + "lm_head": ColwiseParallel(output_layouts=Replicate()), + "model.embed_tokens": ColwiseParallel(output_layouts=Replicate()), } - ) + config = create_test_config( + model_name=tiny_llama_tied_model_path, + tp=2, + cp=1, + sp=False, + cpu_offload=False, + activation_checkpointing=False, + custom_parallel_plan=custom_parallel_plan, + dtensor_v2=use_v2, + ) + tokenizer = get_tokenizer(config["tokenizer"]) - policy_mbs1.prepare_for_training() - mbs1_nll_results = policy_mbs1.train(data, nll_loss_fn) - mbs1_nll_loss = mbs1_nll_results["loss"] + policy = Policy( + tokenizer=tokenizer, + config=config, + init_optimizer=False, + init_reference_model=False, + cluster=two_gpu_cluster, + ) - mbs1_pg_results = policy_mbs1.train(data, pg_loss_fn) - mbs1_pg_loss = mbs1_pg_results["loss"] + # Verify that the model is parallelized as expected + state_dict = ray.get(policy.worker_group.workers[0].return_state_dict.remote()) + total_shape = state_dict["lm_head.weight"].shape + sharded_shape = state_dict["lm_head.weight"].to_local().shape + assert total_shape[0] == sharded_shape[0], ( + "lm_head.weight should have the same number of rows" + ) + assert total_shape[1] == sharded_shape[1] * 2, ( + "lm_head.weight should be sharded across 2 GPUs" + ) - policy_mbs1.worker_group.shutdown() + # Clean up + policy.shutdown() - # Test with mbs=2, 1 microbatch per GPU - config = create_test_config(tiny_llama_model_path) - config["train_micro_batch_size"] = 2 - config["generation"] = configure_generation_config(config["generation"], tokenizer) + @pytest.mark.timeout(180) + def test_dtensor_loss_independent_of_microbatch_size_two_gpus( + self, two_gpu_cluster, tiny_llama_model_path + ): + """Tests that changing microbatch size while keeping global batch size constant does not affect loss values in DTensor.""" + # Create test batch with global batch size of 8 + global_batch_size = 8 + seq_len = 128 + vocab_size = 32000 + + # Create test input_ids and attention_mask + input_ids = torch.randint(0, vocab_size, (global_batch_size, seq_len)) + attention_mask = torch.ones(global_batch_size, seq_len) + input_lengths = attention_mask.sum(dim=1).to(torch.int32) + + # Create data dictionary + data = BatchedDataDict( + { + "input_ids": input_ids, + "input_lengths": input_lengths, + "attention_mask": attention_mask, + "token_mask": torch.triu( + torch.ones(global_batch_size, seq_len), diagonal=1 + ), # give different examples different numbers of valid tokens + "sample_mask": torch.ones((global_batch_size,)), + "labels": torch.randint(0, vocab_size, (global_batch_size, seq_len)), + "num_valid_tokens_in_batch": torch.tensor( + [seq_len] * global_batch_size, dtype=torch.float32 + ), + "advantages": torch.randn(global_batch_size, seq_len), + "prev_logprobs": torch.randn(global_batch_size, seq_len), + "reference_policy_logprobs": torch.randn(global_batch_size, seq_len), + "generation_logprobs": torch.randn(global_batch_size, seq_len), + } + ) - print("Creating training Policy with mbs=2...") - policy_mbs2 = Policy( - cluster=two_gpu_virtual_cluster, - config=config, - init_reference_model=False, - tokenizer=tokenizer, - ) + # Test with mbs=1, 2 microbatches per GPU + config = create_test_config(tiny_llama_model_path) + tokenizer = get_tokenizer(config["tokenizer"]) - # Test NLLLoss and ClippedPGLossFn with mbs=2 - policy_mbs2.prepare_for_training() - mbs2_nll_results = policy_mbs2.train(data, nll_loss_fn) - mbs2_nll_loss = mbs2_nll_results["loss"] + print("Creating training Policy with mbs=1...") + policy_mbs1 = Policy( + cluster=two_gpu_cluster, + config=config, + init_reference_model=False, + tokenizer=tokenizer, + ) - mbs2_pg_results = policy_mbs2.train(data, pg_loss_fn) - mbs2_pg_loss = mbs2_pg_results["loss"] + # Test NLLLoss and ClippedPGLossFn with mbs=1 + nll_loss_fn = NLLLoss() + pg_loss_fn = ClippedPGLossFn( + { + "ratio_clip_min": 0.2, + "ratio_clip_max": 0.2, + "ratio_clip_c": None, + "reference_policy_kl_penalty": 0.1, + "reference_policy_kl_type": "k3", + "kl_input_clamp_value": 20.0, + "kl_output_clamp_value": 10.0, + "disable_ppo_ratio": False, + "use_on_policy_kl_approximation": False, + "use_importance_sampling_correction": False, + "truncated_importance_sampling_ratio": None, + "sequence_level_importance_ratios": False, + "token_level_loss": True, + "force_on_policy_ratio": False, + } + ) - # Verify both loss functions are independent of microbatch size - torch.testing.assert_close(mbs1_nll_loss, mbs2_nll_loss, rtol=1e-5, atol=1e-5) - torch.testing.assert_close(mbs1_pg_loss, mbs2_pg_loss, rtol=1e-5, atol=1e-5) + policy_mbs1.prepare_for_training() + mbs1_nll_results = policy_mbs1.train(data, nll_loss_fn) + mbs1_nll_loss = mbs1_nll_results["loss"] - policy_mbs2.worker_group.shutdown() + mbs1_pg_results = policy_mbs1.train(data, pg_loss_fn) + mbs1_pg_loss = mbs1_pg_results["loss"] + policy_mbs1.worker_group.shutdown() -@pytest.mark.hf_gated -@pytest.mark.timeout(300) -@pytest.mark.parametrize("use_v2", [True, False]) -def test_dtensor_v1_policy_flops_range_check( - tiny_llama_model_path, two_gpu_virtual_cluster, use_v2 -): - """Test that the returned FLOPS is within a reasonable range using dtensor backend. + # Test with mbs=2, 1 microbatch per GPU + config = create_test_config(tiny_llama_model_path) + config["train_micro_batch_size"] = 2 + config["generation"] = configure_generation_config( + config["generation"], tokenizer + ) - Performs 2 warmup iterations and measures FLOPS for the next 3 iterations. - """ - batch_size = 8 - seq_len = 128 - vocab_size = 32000 + print("Creating training Policy with mbs=2...") + policy_mbs2 = Policy( + cluster=two_gpu_cluster, + config=config, + init_reference_model=False, + tokenizer=tokenizer, + ) - # Create dtensor v1 config with default settings - config = create_test_config(tiny_llama_model_path, dtensor_v2=use_v2) + # Test NLLLoss and ClippedPGLossFn with mbs=2 + policy_mbs2.prepare_for_training() + mbs2_nll_results = policy_mbs2.train(data, nll_loss_fn) + mbs2_nll_loss = mbs2_nll_results["loss"] - # Update config for FLOPS testing with larger batch and sequence length - config["train_global_batch_size"] = batch_size - config["train_micro_batch_size"] = ( - batch_size # Use full batch size for single microbatch - ) + mbs2_pg_results = policy_mbs2.train(data, pg_loss_fn) + mbs2_pg_loss = mbs2_pg_results["loss"] - tokenizer = get_tokenizer(config["tokenizer"]) - config["generation"] = configure_generation_config(config["generation"], tokenizer) + # Verify both loss functions are independent of microbatch size + torch.testing.assert_close(mbs1_nll_loss, mbs2_nll_loss, rtol=1e-5, atol=1e-5) + torch.testing.assert_close(mbs1_pg_loss, mbs2_pg_loss, rtol=1e-5, atol=1e-5) - policy = Policy( - cluster=two_gpu_virtual_cluster, - config=config, - tokenizer=tokenizer, - init_reference_model=False, - ) + policy_mbs2.worker_group.shutdown() - # Create test data - torch.manual_seed(42) - input_ids = torch.randint(0, vocab_size, (batch_size, seq_len)) - attention_mask = torch.ones(batch_size, seq_len) - input_lengths = attention_mask.sum(dim=1).to(torch.int32) + @pytest.mark.timeout(300) + @pytest.mark.parametrize("use_v2", [True, False]) + def test_dtensor_v1_policy_flops_range_check( + self, tiny_llama_model_path, two_gpu_cluster, use_v2 + ): + """Test that the returned FLOPS is within a reasonable range using dtensor backend. - data = BatchedDataDict( - { - "input_ids": input_ids, - "input_lengths": input_lengths, - "attention_mask": attention_mask, - "labels": torch.randint(0, vocab_size, (batch_size, seq_len)), - "sample_mask": torch.ones(batch_size), - } - ) + Performs 2 warmup iterations and measures FLOPS for the next 3 iterations. + """ + batch_size = 8 + seq_len = 128 + vocab_size = 32000 - # Create loss function - loss_fn = SimpleLoss() + # Create dtensor v1 config with default settings + config = create_test_config(tiny_llama_model_path, dtensor_v2=use_v2) - try: - # Prepare for training - policy.prepare_for_training() - - # Perform 2 warmup iterations - print("Performing warmup iterations...") - for warmup_step in range(2): - results = policy.train(data, loss_fn) - - # Measure FLOPS on the third iteration - print("Measuring FLOPS on 3 iterations...") - time_begin = time.time() - for train_step in range(3): - results = policy.train(data, loss_fn) - runtime_sec = time.time() - time_begin - - # Check if FLOPS tracking is available - if policy.flops_tracker is not None: - assert "total_flops" in results, ( - "Training results should contain 'total_flops'" - ) - total_flops = results["total_flops"] + # Update config for FLOPS testing with larger batch and sequence length + config["train_global_batch_size"] = batch_size + config["train_micro_batch_size"] = ( + batch_size # Use full batch size for single microbatch + ) - assert isinstance(total_flops, (int, float)), ( - "total_flops should be numeric" - ) - assert total_flops > 0, "total_flops should be positive" + tokenizer = get_tokenizer(config["tokenizer"]) + config["generation"] = configure_generation_config( + config["generation"], tokenizer + ) - total_tflops = total_flops / 1e12 / 3 - print(f"Total FLOPS: {total_flops:.2e} ({total_tflops:.4f} TFLOPS)") + policy = Policy( + cluster=two_gpu_cluster, + config=config, + tokenizer=tokenizer, + init_reference_model=False, + ) - flop_count_total = total_flops * runtime_sec - assert 1e9 < flop_count_total < 5e10, ( - "Total FLOPS should be within 1e9 and 5e10" - ) + # Create test data + torch.manual_seed(42) + input_ids = torch.randint(0, vocab_size, (batch_size, seq_len)) + attention_mask = torch.ones(batch_size, seq_len) + input_lengths = attention_mask.sum(dim=1).to(torch.int32) + + data = BatchedDataDict( + { + "input_ids": input_ids, + "input_lengths": input_lengths, + "attention_mask": attention_mask, + "labels": torch.randint(0, vocab_size, (batch_size, seq_len)), + "sample_mask": torch.ones(batch_size), + } + ) - if "theoretical_tflops" in results: - theoretical_tflops = results["theoretical_tflops"] - assert isinstance(theoretical_tflops, (int, float)), ( - "theoretical_tflops should be numeric" + # Create loss function + loss_fn = SimpleLoss() + + try: + # Prepare for training + policy.prepare_for_training() + + # Perform 2 warmup iterations + print("Performing warmup iterations...") + for warmup_step in range(2): + results = policy.train(data, loss_fn) + + # Measure FLOPS on the third iteration + print("Measuring FLOPS on 3 iterations...") + time_begin = time.time() + for train_step in range(3): + results = policy.train(data, loss_fn) + runtime_sec = time.time() - time_begin + + # Check if FLOPS tracking is available + if policy.flops_tracker is not None: + assert "total_flops" in results, ( + "Training results should contain 'total_flops'" ) - assert theoretical_tflops > 0, "theoretical_tflops should be positive" + total_flops = results["total_flops"] - utilization = total_tflops / theoretical_tflops - print(f"Theoretical TFLOPS: {theoretical_tflops:.2f}") - print(f"Model utilization: {utilization * 100:.2f}%") + assert isinstance(total_flops, (int, float)), ( + "total_flops should be numeric" + ) + assert total_flops > 0, "total_flops should be positive" + + total_tflops = total_flops / 1e12 / 3 + print(f"Total FLOPS: {total_flops:.2e} ({total_tflops:.4f} TFLOPS)") - assert utilization <= 1.0, ( - f"Model utilization {utilization * 100:.2f}% should not exceed 100%" + flop_count_total = total_flops * runtime_sec + assert 1e9 < flop_count_total < 5e10, ( + "Total FLOPS should be within 1e9 and 5e10" ) - else: - print("FLOPS tracker not available, skipping FLOPS range check") - pytest.skip("FLOPS tracker not supported for this model configuration") - finally: - policy.shutdown() + if "theoretical_tflops" in results: + theoretical_tflops = results["theoretical_tflops"] + assert isinstance(theoretical_tflops, (int, float)), ( + "theoretical_tflops should be numeric" + ) + assert theoretical_tflops > 0, ( + "theoretical_tflops should be positive" + ) + + utilization = total_tflops / theoretical_tflops + print(f"Theoretical TFLOPS: {theoretical_tflops:.2f}") + print(f"Model utilization: {utilization * 100:.2f}%") + + assert utilization <= 1.0, ( + f"Model utilization {utilization * 100:.2f}% should not exceed 100%" + ) + else: + print("FLOPS tracker not available, skipping FLOPS range check") + pytest.skip("FLOPS tracker not supported for this model configuration") + + finally: + policy.shutdown() diff --git a/tests/unit/models/policy/test_dtensor_worker_v2.py b/tests/unit/models/policy/test_dtensor_worker_v2.py index daaf2ea5d2..4e9f33f99e 100644 --- a/tests/unit/models/policy/test_dtensor_worker_v2.py +++ b/tests/unit/models/policy/test_dtensor_worker_v2.py @@ -12,11 +12,19 @@ # See the License for the specific language governing permissions and # limitations under the License. +import os +import tempfile + import pytest import ray +import torch +from nemo_rl.algorithms.utils import get_tokenizer +from nemo_rl.distributed.batched_data_dict import BatchedDataDict from nemo_rl.distributed.virtual_cluster import RayVirtualCluster -from nemo_rl.models.policy import PolicyConfig +from nemo_rl.models.policy import AutomodelKwargs, PolicyConfig +from nemo_rl.models.policy.lm_policy import Policy +from tests.unit.test_utils import SimpleLoss def create_test_config( @@ -28,8 +36,14 @@ def create_test_config( activation_checkpointing: bool = False, custom_parallel_plan: str | None = None, dtensor_v2: bool = False, + precision: str = "float32", + expert_parallel_size: int = 1, + use_hf_tp_plan: bool = False, + sequence_packing_enabled: bool = False, + automodel_kwargs: AutomodelKwargs | None = None, + checkpointing: dict | None = None, ) -> PolicyConfig: - return { + config = { "model_name": model_name, "tokenizer": {"name": model_name}, "generation_batch_size": 1, # Small batch size for testing @@ -37,7 +51,7 @@ def create_test_config( "train_micro_batch_size": 1, "learning_rate": 5e-6, "logprob_batch_size": 1, - "precision": "float32", + "precision": precision, "offload_optimizer_for_logprob": False, "generation": { "backend": "hf", @@ -64,6 +78,8 @@ def create_test_config( "tensor_parallel_size": tp, "context_parallel_size": cp, "custom_parallel_plan": custom_parallel_plan, + "expert_parallel_size": expert_parallel_size, + "use_hf_tp_plan": use_hf_tp_plan, }, "dynamic_batching": { "enabled": True, @@ -72,7 +88,8 @@ def create_test_config( "sequence_length_round": 4, }, "sequence_packing": { - "enabled": False, + "enabled": sequence_packing_enabled, + "train_mb_tokens": 128, }, "optimizer": { "name": "torch.optim.AdamW", @@ -93,6 +110,41 @@ def create_test_config( }, "max_grad_norm": 1.0, } + if automodel_kwargs is not None: + config["dtensor_cfg"]["automodel_kwargs"] = automodel_kwargs + if checkpointing is not None: + config["checkpointing"] = checkpointing + return config + + +def create_test_batch( + batch_size: int = 8, + seq_len: int = 128, + vocab_size: int = 32000, + mode: str = "train", +) -> BatchedDataDict: + """Create a test batch for training or logprob computation.""" + torch.manual_seed(66) + input_ids = torch.randint(0, vocab_size, (batch_size, seq_len)) + attention_mask = torch.ones(batch_size, seq_len) + input_lengths = attention_mask.sum(dim=1).to(torch.int32) + data = BatchedDataDict( + { + "input_ids": input_ids, + "input_lengths": input_lengths, + "attention_mask": attention_mask, + **( + { + "labels": torch.randint(0, vocab_size, (batch_size, seq_len)), + "sample_mask": torch.ones(batch_size).cuda(), + } + if mode == "train" + else {} + ), + } + ) + data = data.to("cpu") + return data @pytest.fixture(scope="module") @@ -111,10 +163,6 @@ def two_gpu_virtual_cluster(): cluster.shutdown() -from nemo_rl.algorithms.utils import get_tokenizer -from nemo_rl.models.policy.lm_policy import Policy - - def compare_model_configs(config_v1: dict, config_v2: dict) -> list[str]: """ Compare two model configurations and return a list of discrepancies. @@ -178,7 +226,11 @@ def test_dtensor_worker_v1_v2_model_config_equivalence( cpu_offload, activation_checkpointing, ): - """Test that dtensor worker v1 and v2 produce equivalent model configurations.""" + """Test that dtensor worker v1 and v2 produce equivalent model configurations. + + This test verifies that DTensorPolicyWorkerV2 produces the same model config + as the v1 worker, ensuring backward compatibility. + """ # Get the actual model path from the fixture name model_name = request.getfixturevalue(model_fixture_name) # Create v1 configuration @@ -242,3 +294,165 @@ def test_dtensor_worker_v1_v2_model_config_equivalence( assert not discrepancies, ( f"Model configurations differ between v1 and v2 approaches for {model_name}" ) + + +@pytest.mark.hf_gated +@pytest.mark.timeout(360) +def test_dtensor_v2_checkpoint_save_and_load( + two_gpu_virtual_cluster, + tiny_llama_model_path, +): + with tempfile.TemporaryDirectory() as tmpdir: + checkpointing_config = { + "enabled": True, + "checkpoint_dir": tmpdir, + "metric_name": None, # Save most recent checkpoints + "higher_is_better": False, + "keep_top_k": 2, + "save_period": 30, + "checkpoint_must_save_by": None, + } + + config = create_test_config( + model_name=tiny_llama_model_path, + tp=2, + cp=1, + dtensor_v2=True, + checkpointing=checkpointing_config, + ) + + policy = Policy( + tokenizer=get_tokenizer(config["tokenizer"]), + config=config, + init_optimizer=True, + init_reference_model=False, + cluster=two_gpu_virtual_cluster, + name_prefix="lm_policy_checkpoint", + ) + + try: + weights_path = os.path.join(tmpdir, "weights") + optimizer_path = os.path.join(tmpdir, "optimizer") + + # Save checkpoint + policy.save_checkpoint( + weights_path=weights_path, + optimizer_path=optimizer_path, + checkpointing_cfg=checkpointing_config, + ) + + # Verify checkpoint files were created + assert os.path.exists(weights_path), "Weights path should exist after save" + + # Load checkpoint into a new policy + config2 = create_test_config( + model_name=tiny_llama_model_path, + tp=2, + cp=1, + dtensor_v2=True, + checkpointing=checkpointing_config, + ) + + # Shutdown original policy first to free GPU memory + policy.shutdown() + policy = None + + policy2 = Policy( + tokenizer=get_tokenizer(config2["tokenizer"]), + config=config2, + init_optimizer=True, + init_reference_model=False, + cluster=two_gpu_virtual_cluster, + name_prefix="lm_policy_checkpoint_loaded", + weights_path=weights_path, + optimizer_path=optimizer_path, + ) + + # Verify policy was loaded successfully + assert len(policy2.worker_group.workers) == 2 + worker_alive = ray.get( + [w.is_alive.remote() for w in policy2.worker_group.workers] + ) + assert all(worker_alive) + + policy2.shutdown() + finally: + if policy is not None: + policy.shutdown() + + +@pytest.mark.hf_gated +@pytest.mark.timeout(360) +@pytest.mark.parametrize("precision", ["bfloat16", "float16"]) +def test_dtensor_v2_mixed_precision_training_and_logprobs( + two_gpu_virtual_cluster, + tiny_llama_model_path, + precision, +): + config = create_test_config( + model_name=tiny_llama_model_path, + tp=2, + cp=1, + dtensor_v2=True, + precision=precision, + ) + + policy = Policy( + tokenizer=get_tokenizer(config["tokenizer"]), + config=config, + init_optimizer=True, + init_reference_model=False, + cluster=two_gpu_virtual_cluster, + name_prefix=f"lm_policy_{precision}_mixed", + ) + + try: + # --- Test Training --- + train_data = create_test_batch(mode="train") + loss_fn = SimpleLoss() + + policy.prepare_for_training() + results = policy.train(train_data, loss_fn) + + # Verify training completed successfully + assert "loss" in results + loss_tensor = results["loss"] + assert not torch.isnan(loss_tensor).any(), ( + f"Loss should not be NaN with precision={precision}" + ) + assert not torch.isinf(loss_tensor).any(), ( + f"Loss should not be Inf with precision={precision}" + ) + # Loss is returned in float32 (reduced in float32 for numerical stability) + assert loss_tensor.dtype == torch.float32, ( + f"Loss should be float32, got {loss_tensor.dtype}" + ) + + policy.finish_training() + + # --- Test Logprobs --- + logprob_data = create_test_batch(mode="logprob") + + policy.prepare_for_lp_inference() + logprobs = policy.get_logprobs(logprob_data) + + # Verify logprobs were computed successfully + assert "logprobs" in logprobs + logprobs_tensor = logprobs["logprobs"] + assert logprobs_tensor.shape[0] == logprob_data.size + assert not torch.isnan(logprobs_tensor).any(), ( + f"Logprobs should not be NaN with precision={precision}" + ) + assert not torch.isinf(logprobs_tensor).any(), ( + f"Logprobs should not be Inf with precision={precision}" + ) + # Logprobs are returned in float32 for numerical stability + assert logprobs_tensor.dtype == torch.float32, ( + f"Logprobs should be float32 for numerical stability, got {logprobs_tensor.dtype}" + ) + + # Verify the configured precision by checking worker info + worker_info = ray.get(policy.worker_group.workers[0].get_gpu_info.remote()) + assert worker_info is not None, "Should get worker info" + finally: + policy.shutdown() diff --git a/tests/unit/models/policy/test_patches.py b/tests/unit/models/policy/test_patches.py new file mode 100644 index 0000000000..e8cacbcd4a --- /dev/null +++ b/tests/unit/models/policy/test_patches.py @@ -0,0 +1,447 @@ +# Copyright (c) 2025, NVIDIA CORPORATION. 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. + +import os +import sys +import tempfile +from unittest.mock import MagicMock, mock_open, patch + +import pytest + +from nemo_rl.models.policy.workers.patches import ( + _get_transformer_engine_file, + apply_transformer_engine_patch, +) + + +class TestGetTransformerEngineFile: + """Tests for _get_transformer_engine_file function.""" + + def test_package_not_found(self): + """Test that RuntimeError is raised when transformer_engine is not installed.""" + with patch( + "nemo_rl.models.policy.workers.patches.find_spec", return_value=None + ): + with pytest.raises(RuntimeError) as exc_info: + _get_transformer_engine_file("pytorch/triton/permutation.py") + + assert "Transformer Engine package not found" in str(exc_info.value) + assert "pytorch/triton/permutation.py" in str(exc_info.value) + + def test_package_no_submodule_locations(self): + """Test that RuntimeError is raised when package has no submodule_search_locations.""" + mock_spec = MagicMock() + mock_spec.submodule_search_locations = None + + with patch( + "nemo_rl.models.policy.workers.patches.find_spec", return_value=mock_spec + ): + with pytest.raises(RuntimeError) as exc_info: + _get_transformer_engine_file("pytorch/triton/permutation.py") + + assert "Transformer Engine package not found" in str(exc_info.value) + + def test_package_empty_submodule_locations(self): + """Test that RuntimeError is raised when submodule_search_locations is empty.""" + mock_spec = MagicMock() + mock_spec.submodule_search_locations = [] + + with patch( + "nemo_rl.models.policy.workers.patches.find_spec", return_value=mock_spec + ): + with pytest.raises(RuntimeError) as exc_info: + _get_transformer_engine_file("pytorch/triton/permutation.py") + + assert "Transformer Engine package not found" in str(exc_info.value) + + def test_file_not_found(self): + """Test that RuntimeError is raised when the target file doesn't exist.""" + mock_spec = MagicMock() + mock_spec.submodule_search_locations = ["/fake/path/to/transformer_engine"] + + with ( + patch( + "nemo_rl.models.policy.workers.patches.find_spec", + return_value=mock_spec, + ), + patch("os.path.exists", return_value=False), + ): + with pytest.raises(RuntimeError) as exc_info: + _get_transformer_engine_file("pytorch/triton/permutation.py") + + assert "Failed to locate expected Transformer Engine file" in str( + exc_info.value + ) + assert "pytorch/triton/permutation.py" in str(exc_info.value) + + def test_successful_file_lookup(self): + """Test successful file path resolution.""" + mock_spec = MagicMock() + mock_spec.submodule_search_locations = ["/fake/path/to/transformer_engine"] + expected_path = os.path.join( + "/fake/path/to/transformer_engine", "pytorch", "triton", "permutation.py" + ) + + with ( + patch( + "nemo_rl.models.policy.workers.patches.find_spec", + return_value=mock_spec, + ), + patch("os.path.exists", return_value=True), + ): + result = _get_transformer_engine_file("pytorch/triton/permutation.py") + + assert result == expected_path + + def test_path_construction_with_multiple_segments(self): + """Test that paths with multiple segments are correctly constructed.""" + mock_spec = MagicMock() + mock_spec.submodule_search_locations = ["/base/dir"] + + with ( + patch( + "nemo_rl.models.policy.workers.patches.find_spec", + return_value=mock_spec, + ), + patch("os.path.exists", return_value=True), + ): + result = _get_transformer_engine_file("a/b/c/d.py") + + expected = os.path.join("/base/dir", "a", "b", "c", "d.py") + assert result == expected + + +class TestApplyTransformerEnginePatch: + """Tests for apply_transformer_engine_patch function.""" + + UNPATCHED_CONTENT = """ +import triton +from triton import language as core + +@triton.jit +def some_kernel(x): + idtype = core.get_int_dtype(bitwidth=x.dtype.primitive_bitwidth, signed=True) + return x +""" + + ALREADY_PATCHED_CONTENT = """ +import triton +from triton import language as core + +get_int_dtype = core.get_int_dtype +get_int_dtype = triton.constexpr_function(get_int_dtype) + +@triton.jit +def some_kernel(x): + idtype = get_int_dtype(bitwidth=x.dtype.primitive_bitwidth, signed=True) + return x +""" + + def test_patch_not_applied_when_already_patched(self, capsys): + """Test that patch is not applied when file is already patched.""" + with ( + patch( + "nemo_rl.models.policy.workers.patches._get_transformer_engine_file", + return_value="/fake/path/permutation.py", + ), + patch( + "builtins.open", + mock_open(read_data=self.ALREADY_PATCHED_CONTENT), + ) as mock_file, + ): + apply_transformer_engine_patch() + + # Verify file was only opened for reading (not writing) + mock_file.assert_called_once_with("/fake/path/permutation.py", "r") + # No print about applying fix since already patched + captured = capsys.readouterr() + assert "Applying Triton fix" not in captured.out + + def test_patch_applied_when_needed(self, capsys): + """Test that patch is correctly applied when file needs patching.""" + mock_file_handle = MagicMock() + mock_file_handle.read.return_value = self.UNPATCHED_CONTENT + mock_file_handle.__enter__ = MagicMock(return_value=mock_file_handle) + mock_file_handle.__exit__ = MagicMock(return_value=False) + + written_content = [] + + def mock_write(content): + written_content.append(content) + + mock_file_handle.write = mock_write + + call_count = [0] + + def mock_open_func(path, mode="r"): + call_count[0] += 1 + if mode == "r": + mock_file_handle.read.return_value = self.UNPATCHED_CONTENT + return mock_file_handle + + with ( + patch( + "nemo_rl.models.policy.workers.patches._get_transformer_engine_file", + return_value="/fake/path/permutation.py", + ), + patch("builtins.open", mock_open_func), + ): + apply_transformer_engine_patch() + + captured = capsys.readouterr() + assert "Applying Triton fix to /fake/path/permutation.py" in captured.out + assert "Successfully patched" in captured.out + + # Verify the content was modified + assert len(written_content) > 0 + new_content = written_content[0] + assert ( + "get_int_dtype = triton.constexpr_function(get_int_dtype)" + in new_content + ) + assert ( + "idtype = get_int_dtype(bitwidth=x.dtype.primitive_bitwidth, signed=True)" + in new_content + ) + + def test_patch_handles_permission_error(self, capsys): + """Test that permission errors when writing are handled gracefully.""" + with ( + patch( + "nemo_rl.models.policy.workers.patches._get_transformer_engine_file", + return_value="/fake/path/permutation.py", + ), + patch("builtins.open") as mock_file, + ): + # First call (read) succeeds + read_mock = MagicMock() + read_mock.__enter__ = MagicMock(return_value=read_mock) + read_mock.__exit__ = MagicMock(return_value=False) + read_mock.read.return_value = self.UNPATCHED_CONTENT + + # Second call (write) fails with permission error + write_mock = MagicMock() + write_mock.__enter__ = MagicMock( + side_effect=PermissionError("Permission denied") + ) + + mock_file.side_effect = [read_mock, write_mock] + + apply_transformer_engine_patch() + + captured = capsys.readouterr() + # Should not crash, but print error message + assert "Applying Triton fix" in captured.out + + def test_patch_handles_file_lookup_error(self, capsys): + """Test that errors from _get_transformer_engine_file are handled.""" + with patch( + "nemo_rl.models.policy.workers.patches._get_transformer_engine_file", + side_effect=RuntimeError("Transformer Engine package not found"), + ): + # Should not raise, just print error + apply_transformer_engine_patch() + + captured = capsys.readouterr() + assert "Error checking/patching transformer_engine" in captured.out + + def test_module_reload_when_already_imported(self): + """Test that the module is reloaded if already imported.""" + module_name = "transformer_engine.pytorch.triton.permutation" + + # Create a fake module to put in sys.modules + fake_module = MagicMock() + + with ( + patch( + "nemo_rl.models.policy.workers.patches._get_transformer_engine_file", + return_value="/fake/path/permutation.py", + ), + patch("builtins.open", mock_open(read_data=self.ALREADY_PATCHED_CONTENT)), + patch.dict(sys.modules, {module_name: fake_module}), + patch("importlib.reload") as mock_reload, + ): + apply_transformer_engine_patch() + + mock_reload.assert_called_once_with(fake_module) + + def test_no_reload_when_module_not_imported(self): + """Test that no reload happens if module isn't imported.""" + module_name = "transformer_engine.pytorch.triton.permutation" + + # Ensure module is NOT in sys.modules + modules_without_te = {k: v for k, v in sys.modules.items() if k != module_name} + + with ( + patch( + "nemo_rl.models.policy.workers.patches._get_transformer_engine_file", + return_value="/fake/path/permutation.py", + ), + patch("builtins.open", mock_open(read_data=self.ALREADY_PATCHED_CONTENT)), + patch.dict(sys.modules, modules_without_te, clear=True), + patch("importlib.reload") as mock_reload, + ): + apply_transformer_engine_patch() + + mock_reload.assert_not_called() + + def test_patch_does_nothing_when_old_usage_not_found(self, capsys): + """Test that patch does nothing when old_usage pattern is not in file.""" + content_without_old_usage = """ +import triton +from triton import language as core + +@triton.jit +def some_kernel(x): + # Different usage pattern + idtype = some_other_function() + return x +""" + with ( + patch( + "nemo_rl.models.policy.workers.patches._get_transformer_engine_file", + return_value="/fake/path/permutation.py", + ), + patch( + "builtins.open", mock_open(read_data=content_without_old_usage) + ) as mock_file, + ): + apply_transformer_engine_patch() + + # Verify file was only opened for reading (not writing) + mock_file.assert_called_once_with("/fake/path/permutation.py", "r") + captured = capsys.readouterr() + # Should print applying message but not success message since pattern not found + assert "Applying Triton fix" in captured.out + assert "Successfully patched" not in captured.out + + def test_patch_does_nothing_when_jit_anchor_not_found(self, capsys): + """Test that patch does nothing when @triton.jit anchor is not found.""" + content_without_jit = """ +import triton +from triton import language as core + +def some_kernel(x): + idtype = core.get_int_dtype(bitwidth=x.dtype.primitive_bitwidth, signed=True) + return x +""" + with ( + patch( + "nemo_rl.models.policy.workers.patches._get_transformer_engine_file", + return_value="/fake/path/permutation.py", + ), + patch( + "builtins.open", mock_open(read_data=content_without_jit) + ) as mock_file, + ): + apply_transformer_engine_patch() + + # Verify file was only opened for reading (not writing) + mock_file.assert_called_once_with("/fake/path/permutation.py", "r") + captured = capsys.readouterr() + assert "Applying Triton fix" in captured.out + assert "Successfully patched" not in captured.out + + +class TestPatchIntegration: + """Integration-style tests for the patch module.""" + + def test_patch_with_real_temp_file(self, capsys): + """Test patching with a real temporary file to verify file operations.""" + unpatched_content = """import triton +from triton import language as core + +@triton.jit +def permutation_kernel(x): + idtype = core.get_int_dtype(bitwidth=x.dtype.primitive_bitwidth, signed=True) + return x +""" + with tempfile.NamedTemporaryFile( + mode="w", suffix=".py", delete=False + ) as tmp_file: + tmp_file.write(unpatched_content) + tmp_path = tmp_file.name + + try: + with patch( + "nemo_rl.models.policy.workers.patches._get_transformer_engine_file", + return_value=tmp_path, + ): + apply_transformer_engine_patch() + + # Read the patched file + with open(tmp_path, "r") as f: + patched_content = f.read() + + # Verify the patch was applied + assert ( + "get_int_dtype = triton.constexpr_function(get_int_dtype)" + in patched_content + ) + assert ( + "idtype = get_int_dtype(bitwidth=x.dtype.primitive_bitwidth, signed=True)" + in patched_content + ) + # Verify old pattern is gone + assert ( + "idtype = core.get_int_dtype(bitwidth=x.dtype.primitive_bitwidth, signed=True)" + not in patched_content + ) + + captured = capsys.readouterr() + assert "Successfully patched" in captured.out + finally: + os.unlink(tmp_path) + + def test_patch_idempotent(self, capsys): + """Test that applying patch twice doesn't change already patched content.""" + unpatched_content = """import triton +from triton import language as core + +@triton.jit +def permutation_kernel(x): + idtype = core.get_int_dtype(bitwidth=x.dtype.primitive_bitwidth, signed=True) + return x +""" + with tempfile.NamedTemporaryFile( + mode="w", suffix=".py", delete=False + ) as tmp_file: + tmp_file.write(unpatched_content) + tmp_path = tmp_file.name + + try: + with patch( + "nemo_rl.models.policy.workers.patches._get_transformer_engine_file", + return_value=tmp_path, + ): + # Apply patch first time + apply_transformer_engine_patch() + + with open(tmp_path, "r") as f: + first_patched = f.read() + + # Apply patch second time + apply_transformer_engine_patch() + + with open(tmp_path, "r") as f: + second_patched = f.read() + + # Content should be identical + assert first_patched == second_patched + + captured = capsys.readouterr() + # First application should succeed, second should skip + assert captured.out.count("Successfully patched") == 1 + finally: + os.unlink(tmp_path) diff --git a/tests/unit/utils/test_automodel_checkpoint.py b/tests/unit/utils/test_automodel_checkpoint.py index 64f859c494..9d4c3afe86 100644 --- a/tests/unit/utils/test_automodel_checkpoint.py +++ b/tests/unit/utils/test_automodel_checkpoint.py @@ -11,6 +11,7 @@ # 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. +"""Unit tests for automodel checkpoint utilities.""" import os from tempfile import TemporaryDirectory @@ -20,7 +21,6 @@ import torch # Skip entire module if nemo_automodel is not available -pytest_plugins = [] try: import nemo_automodel # noqa: F401 except ImportError: @@ -32,9 +32,9 @@ ) from nemo_rl.utils.automodel_checkpoint import ( + AutomodelCheckpointManager, + _infer_checkpoint_root, detect_checkpoint_format, - load_checkpoint, - save_checkpoint, ) @@ -89,14 +89,66 @@ def mock_lora_config(): ) +def _cleanup_dcp_planner_cache(): + """Clean up DCP SavePlanner class-level caches. + + The SavePlanner class maintains class-level caches for plan caching optimization. + When tests run with different checkpoint formats (safetensors vs torch_save), + these caches contain stale data that causes errors. This function clears all + planner caches to ensure test isolation. + """ + try: + from torch.distributed.checkpoint.planner import SavePlanner + + # Clear all class-level planner caches + if hasattr(SavePlanner, "_cached_save_plan"): + SavePlanner._cached_save_plan.clear() + if hasattr(SavePlanner, "_cached_all_plans"): + SavePlanner._cached_all_plans.clear() + if hasattr(SavePlanner, "_cached_global_plan"): + SavePlanner._cached_global_plan.clear() + if hasattr(SavePlanner, "_cached_metadata"): + SavePlanner._cached_metadata.clear() + if hasattr(SavePlanner, "_cached_final_save_plan"): + SavePlanner._cached_final_save_plan.clear() + except Exception: + pass + + +def _cleanup_device_mesh_cache(): + """Clean up device mesh cache.""" + import gc + + # Clear device mesh cache + if hasattr(torch.distributed, "device_mesh") and hasattr( + torch.distributed.device_mesh, "_mesh_resources" + ): + try: + torch.distributed.device_mesh._mesh_resources.mesh_stack.clear() + torch.distributed.device_mesh._mesh_resources.child_to_root_mapping.clear() + except Exception: + pass + + gc.collect() + + @pytest.fixture def init_distributed(): - """Initialize a single-process distributed environment for testing.""" + """Initialize a single-process distributed environment for testing. + + Each test gets proper cleanup of DCP planner caches to ensure test isolation. + The planner caches are class-level and shared across all DefaultSavePlanner + instances, so they must be cleared between tests that use different + checkpoint formats. + """ + # Clean up any stale planner caches from previous tests + _cleanup_dcp_planner_cache() + _cleanup_device_mesh_cache() # Only initialize if not already initialized if not torch.distributed.is_initialized(): os.environ["MASTER_ADDR"] = "localhost" - os.environ["MASTER_PORT"] = "29500" # Free port + os.environ["MASTER_PORT"] = "29500" os.environ["RANK"] = "0" os.environ["WORLD_SIZE"] = "1" @@ -105,251 +157,635 @@ def init_distributed(): yield - # Cleanup - if torch.distributed.is_initialized(): - torch.distributed.destroy_process_group() + # Cleanup planner caches after test (critical for test isolation) + _cleanup_dcp_planner_cache() + _cleanup_device_mesh_cache() + + +@pytest.fixture +def mock_experiment(): + """Create a real model, optimizer, and scheduler for integration testing.""" + model = TestModel() + optimizer = torch.optim.Adam(model.parameters(), lr=0.001) + scheduler = torch.optim.lr_scheduler.StepLR(optimizer, step_size=1, gamma=0.1) + return model, optimizer, scheduler + + +def check_dict_equality(dict1, dict2): + """Recursively check equality of two dictionaries""" + for k in dict1.keys(): + if isinstance(dict1[k], dict): + check_dict_equality(dict1[k], dict2[k]) + elif isinstance(dict1[k], torch.Tensor): + assert torch.allclose(dict1[k], dict2[k]) + else: + assert dict1[k] == dict2[k] @pytest.mark.automodel class TestDetectCheckpointFormat: - """Test the detect_checkpoint_format function.""" + """Tests for detect_checkpoint_format function.""" - def test_directory_with_safetensors(self): - """Test detection for directories containing safetensors files.""" - with TemporaryDirectory() as tmp_dir: - # Create directory with safetensors files - os.makedirs(os.path.join(tmp_dir, "weights", "model")) - weights_path = os.path.join(tmp_dir, "weights", "model") - - # Create safetensors shard files - with open( - os.path.join( - weights_path, "shard-00001-model-00001-of-00001.safetensors" - ), - "w", - ) as f: - f.write("dummy content") - with open( - os.path.join( - weights_path, "shard-00002-model-00001-of-00001.safetensors" - ), - "w", - ) as f: - f.write("dummy content") - - format_type, is_peft = detect_checkpoint_format(weights_path) - assert format_type == "safetensors" - assert is_peft == False - - def test_directory_with_dcp_format(self): - """Test detection for directories with DCP (Distributed Checkpoint) format.""" - with TemporaryDirectory() as tmp_dir: - # Create directory structure like: step_3/policy/optimizer/optim - optim_path = os.path.join(tmp_dir, "step_3", "policy", "optimizer", "optim") - os.makedirs(optim_path) - - # Create DCP files (.distcp + .metadata) - with open(os.path.join(optim_path, "__0_0.distcp"), "w") as f: - f.write("dummy dcp content") - with open(os.path.join(optim_path, "__1_0.distcp"), "w") as f: - f.write("dummy dcp content") - with open(os.path.join(optim_path, ".metadata"), "w") as f: - f.write("dummy metadata") - - format_type, is_peft = detect_checkpoint_format(optim_path) - assert format_type == "torch_save" # DCP uses torch_save format - assert is_peft == False - - def test_directory_with_torch_files(self): - """Test detection for directories containing torch save files.""" - with TemporaryDirectory() as tmp_dir: - model_path = os.path.join(tmp_dir, "model") - os.makedirs(model_path) + def test_detect_safetensors_format(self, tmp_path): + """Test detection of safetensors format.""" + # Create a checkpoint directory with safetensors files + model_dir = tmp_path / "weights" / "model" + model_dir.mkdir(parents=True) + (model_dir / "model.safetensors").touch() - # Create torch save files - with open(os.path.join(model_path, "pytorch_model.bin"), "w") as f: - f.write("dummy content") + model_save_format, is_peft = detect_checkpoint_format(str(tmp_path / "weights")) - format_type, is_peft = detect_checkpoint_format(model_path) - assert format_type == "torch_save" - assert is_peft == False + assert model_save_format == "safetensors" + assert is_peft is False - def test_peft_detection_in_filenames(self): - """Test PEFT detection from filenames within directories.""" - with TemporaryDirectory() as tmp_dir: - model_path = os.path.join(tmp_dir, "regular_model") - os.makedirs(model_path) - - # Create file with adapter pattern in name - with open(os.path.join(model_path, "adapter_model.safetensors"), "w") as f: - f.write("dummy content") - - format_type, is_peft = detect_checkpoint_format(model_path) - assert format_type == "safetensors" - assert is_peft == True # Should detect adapter in filename - - def test_default_fallback(self): - """Test default behavior for non-existent directories.""" - # Non-existent directory should default to safetensors, no PEFT - format_type, is_peft = detect_checkpoint_format("/non/existent/directory") - assert format_type == "safetensors" - assert is_peft == False - - def test_expected_structure(self): - """Test with the expected folder structure from the user.""" - with TemporaryDirectory() as tmp_dir: - # Create the expected structure: step_3/policy/weights/model - weights_path = os.path.join(tmp_dir, "step_3", "policy", "weights", "model") - os.makedirs(weights_path) - - # Create safetensors shard files as in the example - with open( - os.path.join( - weights_path, "shard-00001-model-00001-of-00001.safetensors" - ), - "w", - ) as f: - f.write("dummy content") - with open( - os.path.join( - weights_path, "shard-00002-model-00001-of-00001.safetensors" - ), - "w", - ) as f: - f.write("dummy content") - - format_type, is_peft = detect_checkpoint_format(weights_path) - assert format_type == "safetensors" - assert is_peft == False - - """Test the save_checkpoint function.""" - - @pytest.mark.automodel - @patch("nemo_rl.utils.automodel_checkpoint.save_model") - @patch("nemo_rl.utils.automodel_checkpoint.save_optimizer") - def test_save_model_only(self, mock_save_optimizer, mock_save_model, mock_model): + def test_detect_torch_save_format_distcp(self, tmp_path): + """Test detection of torch_save format with .distcp files.""" + # Create a checkpoint directory with .distcp files + model_dir = tmp_path / "weights" / "model" + model_dir.mkdir(parents=True) + (model_dir / "checkpoint.distcp").touch() + + model_save_format, is_peft = detect_checkpoint_format(str(tmp_path / "weights")) + + assert model_save_format == "torch_save" + assert is_peft is False + + def test_detect_torch_save_format_bin(self, tmp_path): + """Test detection of torch_save format with .bin files.""" + # Create a checkpoint directory with .bin files + model_dir = tmp_path / "weights" / "model" + model_dir.mkdir(parents=True) + (model_dir / "pytorch_model.bin").touch() + + model_save_format, is_peft = detect_checkpoint_format(str(tmp_path / "weights")) + + assert model_save_format == "torch_save" + assert is_peft is False + + def test_detect_torch_save_format_pt(self, tmp_path): + """Test detection of torch_save format with .pt files.""" + # Create a checkpoint directory with .pt files + model_dir = tmp_path / "weights" / "model" + model_dir.mkdir(parents=True) + (model_dir / "model.pt").touch() + + model_save_format, is_peft = detect_checkpoint_format(str(tmp_path / "weights")) + + assert model_save_format == "torch_save" + assert is_peft is False + + def test_detect_peft_adapter(self, tmp_path): + """Test detection of PEFT adapter files.""" + # Create a checkpoint directory with adapter files + model_dir = tmp_path / "weights" / "model" + model_dir.mkdir(parents=True) + (model_dir / "adapter_model.safetensors").touch() + + model_save_format, is_peft = detect_checkpoint_format(str(tmp_path / "weights")) + + assert model_save_format == "safetensors" + assert is_peft is True + + def test_detect_peft_adapter_config(self, tmp_path): + """Test detection of PEFT adapter config files.""" + # Create a checkpoint directory with adapter config + model_dir = tmp_path / "weights" / "model" + model_dir.mkdir(parents=True) + (model_dir / "adapter_config.json").touch() + (model_dir / "model.safetensors").touch() + + model_save_format, is_peft = detect_checkpoint_format(str(tmp_path / "weights")) + + assert model_save_format == "safetensors" + assert is_peft is True + + def test_detect_empty_directory(self, tmp_path): + """Test detection with empty directory.""" + # Create an empty checkpoint directory + model_dir = tmp_path / "weights" + model_dir.mkdir(parents=True) + + model_save_format, is_peft = detect_checkpoint_format(str(model_dir)) + + # Default to safetensors when no files found + assert model_save_format == "safetensors" + assert is_peft is False + + def test_detect_nonexistent_directory(self, tmp_path): + """Test detection with non-existent directory.""" + nonexistent_path = str(tmp_path / "nonexistent") + + model_save_format, is_peft = detect_checkpoint_format(nonexistent_path) + + # Default to safetensors when directory doesn't exist + assert model_save_format == "safetensors" + assert is_peft is False + + def test_detect_nested_safetensors(self, tmp_path): + """Test detection of safetensors in nested directories.""" + # Create nested structure + nested_dir = tmp_path / "weights" / "model" / "rank_0" + nested_dir.mkdir(parents=True) + (nested_dir / "model-00001-of-00002.safetensors").touch() + + model_save_format, is_peft = detect_checkpoint_format(str(tmp_path / "weights")) + + assert model_save_format == "safetensors" + assert is_peft is False + + +@pytest.mark.automodel +class TestInferCheckpointRoot: + """Tests for _infer_checkpoint_root function.""" + + def test_infer_root_from_weights_model_path(self): + """Test inferring root from path ending with weights/model.""" + weights_path = "/path/to/checkpoint/weights/model" + + result = _infer_checkpoint_root(weights_path) + + assert result == "/path/to/checkpoint" + + def test_infer_root_from_weights_path(self): + """Test inferring root from path ending with weights.""" + weights_path = "/path/to/checkpoint/weights" + + result = _infer_checkpoint_root(weights_path) + + assert result == "/path/to/checkpoint" + + def test_infer_root_from_other_path(self): + """Test inferring root from path not ending with weights.""" + weights_path = "/path/to/checkpoint/custom_dir" + + result = _infer_checkpoint_root(weights_path) + + # Should return parent directory + assert result == "/path/to/checkpoint" + + def test_infer_root_with_trailing_slash(self): + """Test inferring root with trailing slash in path.""" + weights_path = "/path/to/checkpoint/weights/" + + result = _infer_checkpoint_root(weights_path) + + # dirname of "/path/to/checkpoint/weights/" is "/path/to/checkpoint/weights" + # which ends with "weights", so parent is returned + assert result == "/path/to/checkpoint" + + def test_infer_root_relative_path(self): + """Test inferring root from relative path.""" + weights_path = "checkpoint/weights/model" + + result = _infer_checkpoint_root(weights_path) + + assert result == "checkpoint" + + def test_infer_root_single_level(self): + """Test inferring root from single level path.""" + weights_path = "weights/model" + + result = _infer_checkpoint_root(weights_path) + + assert result == "" + + +@pytest.mark.automodel +class TestAutomodelCheckpointManager: + """Tests for AutomodelCheckpointManager class. + + Note: Full integration tests require distributed environment setup. + These tests focus on the helper methods and configuration. + """ + + @pytest.fixture + def mock_meshes(self): + """Create mock device meshes for testing.""" + mock_dp_mesh = MagicMock() + mock_dp_mesh.get_group.return_value = MagicMock() + + mock_tp_mesh = MagicMock() + mock_tp_mesh.get_group.return_value = MagicMock() + + return mock_dp_mesh, mock_tp_mesh + + @patch("torch.distributed.get_rank") + def test_manager_initialization(self, mock_get_rank, mock_meshes): + """Test AutomodelCheckpointManager initialization.""" + from nemo_rl.utils.automodel_checkpoint import AutomodelCheckpointManager + + mock_get_rank.return_value = 0 + mock_dp_mesh, mock_tp_mesh = mock_meshes + + manager = AutomodelCheckpointManager( + dp_mesh=mock_dp_mesh, + tp_mesh=mock_tp_mesh, + model_state_dict_keys=["layer1.weight", "layer2.weight"], + ) + + assert manager.checkpointer is None + assert manager.checkpoint_config is None + assert manager.model_state_dict_keys == ["layer1.weight", "layer2.weight"] + assert manager.dp_mesh is mock_dp_mesh + assert manager.tp_mesh is mock_tp_mesh + + @patch("torch.distributed.get_rank") + def test_set_model_state_dict_keys(self, mock_get_rank, mock_meshes): + """Test setting model state dict keys.""" + from nemo_rl.utils.automodel_checkpoint import AutomodelCheckpointManager + + mock_get_rank.return_value = 0 + mock_dp_mesh, mock_tp_mesh = mock_meshes + + manager = AutomodelCheckpointManager( + dp_mesh=mock_dp_mesh, + tp_mesh=mock_tp_mesh, + ) + + new_keys = ["new_layer.weight", "new_layer.bias"] + manager.set_model_state_dict_keys(new_keys) + + assert manager.model_state_dict_keys == new_keys + + @patch("torch.distributed.get_rank") + def test_save_checkpoint_without_checkpointer_raises( + self, mock_get_rank, mock_meshes + ): + """Test that save_checkpoint raises error without initialized checkpointer.""" + from nemo_rl.utils.automodel_checkpoint import AutomodelCheckpointManager + + mock_get_rank.return_value = 0 + mock_dp_mesh, mock_tp_mesh = mock_meshes + + manager = AutomodelCheckpointManager( + dp_mesh=mock_dp_mesh, + tp_mesh=mock_tp_mesh, + ) + + mock_model = MagicMock() + + with pytest.raises(AssertionError, match="Checkpointer must be initialized"): + manager.save_checkpoint( + model=mock_model, + weights_path="/path/to/weights", + checkpointing_cfg={"enabled": True}, + ) + + @patch("torch.distributed.get_rank") + def test_save_checkpoint_without_config_raises(self, mock_get_rank, mock_meshes): + """Test that save_checkpoint raises error without checkpointing config.""" + from nemo_rl.utils.automodel_checkpoint import AutomodelCheckpointManager + + mock_get_rank.return_value = 0 + mock_dp_mesh, mock_tp_mesh = mock_meshes + + manager = AutomodelCheckpointManager( + dp_mesh=mock_dp_mesh, + tp_mesh=mock_tp_mesh, + ) + + # Set up a mock checkpointer so we get past the first assertion + manager.checkpointer = MagicMock() + + mock_model = MagicMock() + + with pytest.raises(ValueError, match="checkpointing_cfg must be provided"): + manager.save_checkpoint( + model=mock_model, + weights_path="/path/to/weights", + checkpointing_cfg=None, + ) + + @patch("torch.distributed.get_rank") + def test_load_checkpoint_without_checkpointer_raises( + self, mock_get_rank, mock_meshes + ): + """Test that load_checkpoint raises error without initialized checkpointer.""" + from nemo_rl.utils.automodel_checkpoint import AutomodelCheckpointManager + + mock_get_rank.return_value = 0 + mock_dp_mesh, mock_tp_mesh = mock_meshes + + manager = AutomodelCheckpointManager( + dp_mesh=mock_dp_mesh, + tp_mesh=mock_tp_mesh, + ) + + mock_model = MagicMock() + + with pytest.raises(AssertionError, match="Checkpointer must be initialized"): + manager.load_checkpoint( + model=mock_model, + weights_path="/path/to/weights", + ) + + @patch("torch.distributed.get_rank") + def test_load_base_model_without_checkpointer_raises( + self, mock_get_rank, mock_meshes + ): + """Test that load_base_model raises error without initialized checkpointer.""" + from nemo_rl.utils.automodel_checkpoint import AutomodelCheckpointManager + + mock_get_rank.return_value = 0 + mock_dp_mesh, mock_tp_mesh = mock_meshes + + manager = AutomodelCheckpointManager( + dp_mesh=mock_dp_mesh, + tp_mesh=mock_tp_mesh, + ) + + mock_model = MagicMock() + + with pytest.raises(AssertionError, match="Checkpointer must be initialized"): + manager.load_base_model( + model=mock_model, + model_name="test-model", + ) + + @patch("torch.distributed.get_rank") + def test_init_checkpointer_creates_checkpointer(self, mock_get_rank, mock_meshes): + """Test that init_checkpointer creates a new checkpointer.""" + from nemo_rl.utils.automodel_checkpoint import AutomodelCheckpointManager + + mock_get_rank.return_value = 0 + mock_dp_mesh, mock_tp_mesh = mock_meshes + + manager = AutomodelCheckpointManager( + dp_mesh=mock_dp_mesh, + tp_mesh=mock_tp_mesh, + ) + + assert manager.checkpointer is None + + # Mock the Checkpointer class + with patch( + "nemo_rl.utils.automodel_checkpoint.Checkpointer" + ) as mock_checkpointer_cls: + mock_checkpointer = MagicMock() + mock_checkpointer_cls.return_value = mock_checkpointer + + manager.init_checkpointer( + config_updates={"model_repo_id": "test-model"}, + checkpoint_root="/path/to/checkpoints", + ) + + assert manager.checkpointer is mock_checkpointer + mock_checkpointer_cls.assert_called_once() + + @patch("torch.distributed.get_rank") + def test_init_checkpointer_does_nothing_if_exists(self, mock_get_rank, mock_meshes): + """Test that init_checkpointer does nothing if checkpointer already exists.""" + from nemo_rl.utils.automodel_checkpoint import AutomodelCheckpointManager + + mock_get_rank.return_value = 0 + mock_dp_mesh, mock_tp_mesh = mock_meshes + + manager = AutomodelCheckpointManager( + dp_mesh=mock_dp_mesh, + tp_mesh=mock_tp_mesh, + ) + + # Create a mock existing checkpointer + existing_checkpointer = MagicMock() + manager.checkpointer = existing_checkpointer + + # Try to init again + with patch( + "nemo_rl.utils.automodel_checkpoint.Checkpointer" + ) as mock_checkpointer_cls: + manager.init_checkpointer( + config_updates={"model_repo_id": "test-model"}, + ) + + # Should not have created a new checkpointer + mock_checkpointer_cls.assert_not_called() + assert manager.checkpointer is existing_checkpointer + + @patch("torch.distributed.get_rank") + def test_update_checkpointer_config_updates_config( + self, mock_get_rank, mock_meshes + ): + """Test that update_checkpointer_config updates the config.""" + from nemo_rl.utils.automodel_checkpoint import AutomodelCheckpointManager + + mock_get_rank.return_value = 0 + mock_dp_mesh, mock_tp_mesh = mock_meshes + + manager = AutomodelCheckpointManager( + dp_mesh=mock_dp_mesh, + tp_mesh=mock_tp_mesh, + ) + + # Create a mock checkpointer with config + mock_config = MagicMock() + mock_checkpointer = MagicMock() + mock_checkpointer.config = mock_config + manager.checkpointer = mock_checkpointer + + # Update the config + manager.update_checkpointer_config( + config_updates={"is_peft": True}, + checkpoint_root="/new/path", + ) + + # Verify config was updated + assert mock_config.checkpoint_dir == "/new/path" + assert mock_config.is_peft is True + + @patch("torch.distributed.get_rank") + def test_update_checkpointer_config_does_nothing_if_no_checkpointer( + self, mock_get_rank, mock_meshes + ): + """Test that update_checkpointer_config does nothing without checkpointer.""" + from nemo_rl.utils.automodel_checkpoint import AutomodelCheckpointManager + + mock_get_rank.return_value = 0 + mock_dp_mesh, mock_tp_mesh = mock_meshes + + manager = AutomodelCheckpointManager( + dp_mesh=mock_dp_mesh, + tp_mesh=mock_tp_mesh, + ) + + # Should not raise any error + manager.update_checkpointer_config( + config_updates={"is_peft": True}, + checkpoint_root="/new/path", + ) + + assert manager.checkpointer is None + + +@pytest.mark.automodel +class TestSaveCheckpointFunctional: + """Functional tests for save_checkpoint method with mocked internals.""" + + @pytest.fixture + def mock_meshes(self): + """Create mock device meshes for testing.""" + mock_dp_mesh = MagicMock() + mock_dp_mesh.get_group.return_value = MagicMock() + + mock_tp_mesh = MagicMock() + mock_tp_mesh.get_group.return_value = MagicMock() + + return mock_dp_mesh, mock_tp_mesh + + @patch("torch.distributed.get_rank") + @patch("nemo_rl.utils.automodel_checkpoint.Checkpointer") + def test_save_model_only( + self, mock_checkpointer_cls, mock_get_rank, mock_meshes, mock_model + ): """Test saving model weights only.""" + mock_get_rank.return_value = 0 + mock_dp_mesh, mock_tp_mesh = mock_meshes + + mock_checkpointer = MagicMock() + mock_checkpointer_cls.return_value = mock_checkpointer + + manager = AutomodelCheckpointManager( + dp_mesh=mock_dp_mesh, + tp_mesh=mock_tp_mesh, + ) + manager.init_checkpointer() + with TemporaryDirectory() as tmp_dir: weights_path = os.path.join(tmp_dir, "weights") - os.makedirs(os.path.dirname(weights_path), exist_ok=True) # Save checkpoint - save_checkpoint( + manager.save_checkpoint( model=mock_model, weights_path=weights_path, - model_save_format="safetensors", - is_peft=False, + checkpointing_cfg={ + "enabled": True, + "model_save_format": "safetensors", + "is_peft": False, + }, ) - # Verify save_model was called correctly - mock_save_model.assert_called_once() - call_args = mock_save_model.call_args - assert call_args[1]["model"] is mock_model - assert call_args[1]["weights_path"] == weights_path - assert ( - call_args[1]["checkpoint_config"].model_save_format.value - == "safetensors" - ) - assert call_args[1]["checkpoint_config"].is_peft == False + # Verify save_model was called + mock_checkpointer.save_model.assert_called_once() - # Verify optimizer saving was not called - mock_save_optimizer.assert_not_called() + # Verify save_optimizer was not called + mock_checkpointer.save_optimizer.assert_not_called() - @pytest.mark.automodel - @patch("nemo_rl.utils.automodel_checkpoint.save_model") - @patch("nemo_rl.utils.automodel_checkpoint.save_optimizer") + @patch("torch.distributed.get_rank") + @patch("nemo_rl.utils.automodel_checkpoint.Checkpointer") def test_save_with_optimizer( - self, mock_save_optimizer, mock_save_model, mock_model, mock_optimizer + self, + mock_checkpointer_cls, + mock_get_rank, + mock_meshes, + mock_model, + mock_optimizer, ): """Test saving model and optimizer weights.""" + mock_get_rank.return_value = 0 + mock_dp_mesh, mock_tp_mesh = mock_meshes + + mock_checkpointer = MagicMock() + mock_checkpointer_cls.return_value = mock_checkpointer + + manager = AutomodelCheckpointManager( + dp_mesh=mock_dp_mesh, + tp_mesh=mock_tp_mesh, + ) + manager.init_checkpointer() + with TemporaryDirectory() as tmp_dir: weights_path = os.path.join(tmp_dir, "model", "weights") optimizer_path = os.path.join(tmp_dir, "optimizer", "optim") - os.makedirs(os.path.dirname(weights_path)) - os.makedirs(os.path.dirname(optimizer_path)) # Save checkpoint with optimizer - save_checkpoint( + manager.save_checkpoint( model=mock_model, weights_path=weights_path, optimizer=mock_optimizer, optimizer_path=optimizer_path, - model_save_format="torch_save", - is_peft=True, + checkpointing_cfg={ + "enabled": True, + "model_save_format": "torch_save", + "is_peft": True, + }, ) # Verify both model and optimizer saving were called - mock_save_model.assert_called_once() - mock_save_optimizer.assert_called_once() - - # Check optimizer call args - opt_call_args = mock_save_optimizer.call_args - assert opt_call_args[1]["optimizer"] is mock_optimizer - assert opt_call_args[1]["model"] is mock_model - assert opt_call_args[1]["weights_path"] == optimizer_path - - @pytest.mark.automodel - @patch("nemo_rl.utils.automodel_checkpoint.save_model") - def test_save_with_tokenizer(self, mock_save_model, mock_model): + mock_checkpointer.save_model.assert_called_once() + mock_checkpointer.save_optimizer.assert_called_once() + + @patch("torch.distributed.get_rank") + @patch("nemo_rl.utils.automodel_checkpoint.Checkpointer") + def test_save_with_tokenizer( + self, mock_checkpointer_cls, mock_get_rank, mock_meshes, mock_model + ): """Test saving with tokenizer.""" + mock_get_rank.return_value = 0 + mock_dp_mesh, mock_tp_mesh = mock_meshes + + mock_checkpointer = MagicMock() + mock_checkpointer_cls.return_value = mock_checkpointer + + manager = AutomodelCheckpointManager( + dp_mesh=mock_dp_mesh, + tp_mesh=mock_tp_mesh, + ) + manager.init_checkpointer() + with TemporaryDirectory() as tmp_dir: weights_path = os.path.join(tmp_dir, "model", "weights") tokenizer_path = os.path.join(tmp_dir, "tokenizer") - os.makedirs(os.path.dirname(weights_path)) os.makedirs(tokenizer_path) # Create mock tokenizer mock_tokenizer = MagicMock() # Save checkpoint with tokenizer - save_checkpoint( + manager.save_checkpoint( model=mock_model, weights_path=weights_path, tokenizer=mock_tokenizer, tokenizer_path=tokenizer_path, + checkpointing_cfg={"enabled": True}, ) # Verify tokenizer.save_pretrained was called mock_tokenizer.save_pretrained.assert_called_once_with(tokenizer_path) -@pytest.fixture -def mock_experiment(): - """Create a real model, optimizer, and scheduler for integration testing.""" - model = TestModel() - optimizer = torch.optim.Adam(model.parameters(), lr=0.001) - scheduler = torch.optim.lr_scheduler.StepLR(optimizer, step_size=1, gamma=0.1) - return model, optimizer, scheduler - - -def check_dict_equality(dict1, dict2): - """Recursively check equality of two dictionaries""" - for k in dict1.keys(): - if isinstance(dict1[k], dict): - check_dict_equality(dict1[k], dict2[k]) - elif isinstance(dict1[k], torch.Tensor): - assert torch.allclose(dict1[k], dict2[k]) - else: - assert dict1[k] == dict2[k] - - @pytest.mark.automodel class TestSaveLoadIntegration: """Integration tests that actually save and load checkpoints.""" - def test_save_and_load_model_only_safetensors(self, mock_experiment): + def test_save_and_load_model_only_safetensors( + self, init_distributed, mock_experiment + ): """Test saving and loading model weights only with safetensors format.""" test_model, _, _ = mock_experiment - original_state_dict = test_model.state_dict() + original_state_dict = {k: v.clone() for k, v in test_model.state_dict().items()} with TemporaryDirectory() as tmp_dir: weights_path = os.path.join(tmp_dir, "test_model") + # Create device mesh and checkpoint manager + mesh = torch.distributed.device_mesh.init_device_mesh( + "cpu", (1,), mesh_dim_names=("dp",) + ) + checkpoint_manager = AutomodelCheckpointManager( + dp_mesh=mesh, + tp_mesh=mesh, + ) + checkpoint_manager.init_checkpointer( + config_updates={"model_save_format": "safetensors"} + ) + # Save checkpoint - save_checkpoint( + checkpoint_manager.save_checkpoint( model=test_model, weights_path=weights_path, - model_save_format="safetensors", + checkpointing_cfg={ + "enabled": True, + "model_save_format": "safetensors", + }, ) # Verify files are created @@ -364,24 +800,43 @@ def test_save_and_load_model_only_safetensors(self, mock_experiment): param.data.fill_(999.0) # Load the checkpoint - load_checkpoint(model=new_model, weights_path=weights_path) + checkpoint_manager.load_checkpoint( + model=new_model, weights_path=weights_path + ) # Verify the weights match the original check_dict_equality(new_model.state_dict(), original_state_dict) - def test_save_and_load_model_only_torch_save(self, mock_experiment): + def test_save_and_load_model_only_torch_save( + self, init_distributed, mock_experiment + ): """Test saving and loading model weights only with torch_save format.""" test_model, _, _ = mock_experiment - original_state_dict = test_model.state_dict() + original_state_dict = {k: v.clone() for k, v in test_model.state_dict().items()} with TemporaryDirectory() as tmp_dir: weights_path = os.path.join(tmp_dir, "test_model") + # Create device mesh and checkpoint manager + mesh = torch.distributed.device_mesh.init_device_mesh( + "cpu", (1,), mesh_dim_names=("dp",) + ) + checkpoint_manager = AutomodelCheckpointManager( + dp_mesh=mesh, + tp_mesh=mesh, + ) + checkpoint_manager.init_checkpointer( + config_updates={"model_save_format": "torch_save"} + ) + # Save checkpoint - save_checkpoint( + checkpoint_manager.save_checkpoint( model=test_model, weights_path=weights_path, - model_save_format="torch_save", + checkpointing_cfg={ + "enabled": True, + "model_save_format": "torch_save", + }, ) # Verify files are created @@ -396,12 +851,14 @@ def test_save_and_load_model_only_torch_save(self, mock_experiment): param.data.fill_(999.0) # Load the checkpoint - load_checkpoint(model=new_model, weights_path=weights_path) + checkpoint_manager.load_checkpoint( + model=new_model, weights_path=weights_path + ) # Verify the weights match the original check_dict_equality(new_model.state_dict(), original_state_dict) - def test_save_and_load_model_and_optimizer(self, mock_experiment): + def test_save_and_load_model_and_optimizer(self, init_distributed, mock_experiment): """Test saving and loading both model and optimizer.""" test_model, optimizer, scheduler = mock_experiment @@ -415,7 +872,9 @@ def test_save_and_load_model_and_optimizer(self, mock_experiment): optimizer.step() scheduler.step() - original_model_state = test_model.state_dict() + original_model_state = { + k: v.clone() for k, v in test_model.state_dict().items() + } original_optimizer_state = optimizer.state_dict() original_scheduler_state = scheduler.state_dict() @@ -425,13 +884,26 @@ def test_save_and_load_model_and_optimizer(self, mock_experiment): os.makedirs(os.path.dirname(model_path), exist_ok=True) os.makedirs(os.path.dirname(optimizer_path), exist_ok=True) + # Create device mesh and checkpoint manager + mesh = torch.distributed.device_mesh.init_device_mesh( + "cpu", (1,), mesh_dim_names=("dp",) + ) + checkpoint_manager = AutomodelCheckpointManager( + dp_mesh=mesh, + tp_mesh=mesh, + ) + checkpoint_manager.init_checkpointer( + config_updates={"model_save_format": "safetensors"} + ) + # Save checkpoint - save_checkpoint( + checkpoint_manager.save_checkpoint( model=test_model, weights_path=model_path, optimizer=optimizer, scheduler=scheduler, optimizer_path=optimizer_path, + checkpointing_cfg={"enabled": True}, ) # Verify files are created @@ -450,7 +922,7 @@ def test_save_and_load_model_and_optimizer(self, mock_experiment): param.data.fill_(999.0) # Load the checkpoint - load_checkpoint( + checkpoint_manager.load_checkpoint( model=new_model, weights_path=model_path, optimizer=new_optimizer, @@ -464,7 +936,7 @@ def test_save_and_load_model_and_optimizer(self, mock_experiment): assert new_scheduler.state_dict() == original_scheduler_state def test_save_and_load_model_with_lora( - self, mock_experiment, mock_lora_config, init_distributed + self, init_distributed, mock_experiment, mock_lora_config ): """Test saving and loading both model and optimizer with LORA.""" test_model, _, _ = mock_experiment @@ -508,11 +980,28 @@ def test_save_and_load_model_with_lora( with TemporaryDirectory() as tmp_dir: weights_path = os.path.join(tmp_dir, "test_model") - save_checkpoint( + + # Create device mesh and checkpoint manager with PEFT enabled + mesh = torch.distributed.device_mesh.init_device_mesh( + "cpu", (1,), mesh_dim_names=("dp",) + ) + checkpoint_manager = AutomodelCheckpointManager( + dp_mesh=mesh, + tp_mesh=mesh, + ) + checkpoint_manager.init_checkpointer( + config_updates={"model_save_format": "safetensors", "is_peft": True} + ) + + checkpoint_manager.save_checkpoint( model=test_model, weights_path=weights_path, - model_save_format="safetensors", - is_peft=True, + checkpointing_cfg={ + "enabled": True, + "model_save_format": "safetensors", + "is_peft": True, + }, + lora_enabled=True, peft_config=lora_config, ) @@ -528,8 +1017,10 @@ def test_save_and_load_model_with_lora( for param in new_model.parameters(): param.data.fill_(999.0) - # Load the checkpoint for peft need distributed(refer to nemo_automodel/components/checkpoint/stateful_wrappers.py:load_state_dict) - load_checkpoint(model=new_model, weights_path=weights_path) + # Load the checkpoint + checkpoint_manager.load_checkpoint( + model=new_model, weights_path=weights_path + ) # peft only save lora weights, so we need to filter out the non-lora weights lora_params_original = { k: v for k, v in lora_state_dict.items() if "lora" in k diff --git a/uv.lock b/uv.lock index 144a8394a9..ae392222b4 100644 --- a/uv.lock +++ b/uv.lock @@ -35,7 +35,6 @@ overrides = [ { name = "opencv-python-headless", specifier = ">=4.11.0" }, { name = "timm", specifier = "<=1.0.22" }, { name = "transformer-engine", extras = ["pytorch"], specifier = "==2.8.0" }, - { name = "transformers", specifier = "==4.57.1" }, ] [[manifest.dependency-metadata]] @@ -45,7 +44,7 @@ requires-dist = ["torch", "packaging", "ninja"] [[manifest.dependency-metadata]] name = "deep-ep" -version = "1.1.0+e3908bf" +version = "1.2.1+bfded34" requires-dist = ["torch", "packaging", "ninja"] [[manifest.dependency-metadata]] @@ -432,6 +431,19 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/f6/22/91616fe707a5c5510de2cac9b046a30defe7007ba8a0c04f9c08f27df312/audioop_lts-0.2.2-cp314-cp314t-win_arm64.whl", hash = "sha256:b492c3b040153e68b9fdaff5913305aaaba5bb433d8a7f73d5cf6a64ed3cc1dd", size = 25206, upload-time = "2025-08-05T16:43:16.444Z" }, ] +[[package]] +name = "audioread" +version = "3.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "standard-aifc", marker = "python_full_version >= '3.13'" }, + { name = "standard-sunau", marker = "python_full_version >= '3.13'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a1/4a/874ecf9b472f998130c2b5e145dcdb9f6131e84786111489103b66772143/audioread-3.1.0.tar.gz", hash = "sha256:1c4ab2f2972764c896a8ac61ac53e261c8d29f0c6ccd652f84e18f08a4cab190", size = 20082, upload-time = "2025-10-26T19:44:13.484Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7e/16/fbe8e1e185a45042f7cd3a282def5bb8d95bb69ab9e9ef6a5368aa17e426/audioread-3.1.0-py3-none-any.whl", hash = "sha256:b30d1df6c5d3de5dcef0fb0e256f6ea17bdcf5f979408df0297d8a408e2971b4", size = 23143, upload-time = "2025-10-26T19:44:12.016Z" }, +] + [[package]] name = "av" version = "15.0.0" @@ -549,19 +561,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/ed/40/be3858ffed004e47e48a2cefecdbf9b950d41098b780f9dc3aa609a88351/bitarray-3.8.0-cp314-cp314t-win_arm64.whl", hash = "sha256:2a3d1b05ffdd3e95687942ae7b13c63689f85d3f15c39b33329e3cb9ce6c015f", size = 147015, upload-time = "2025-11-02T21:40:35.064Z" }, ] -[[package]] -name = "bitsandbytes" -version = "0.45.5" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "numpy", marker = "(platform_machine != 'aarch64' and sys_platform != 'darwin') or sys_platform == 'win32'" }, - { name = "torch", version = "2.9.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "(platform_machine != 'aarch64' and sys_platform != 'darwin') or sys_platform == 'win32'" }, -] -wheels = [ - { url = "https://files.pythonhosted.org/packages/07/b7/cb5ce4d1a382cf53c19ef06c5fc29e85f5e129b4da6527dd207d90a5b8ad/bitsandbytes-0.45.5-py3-none-manylinux_2_24_x86_64.whl", hash = "sha256:a5453f30cc6aab6ccaac364e6bf51a7808d3da5f71763dffeb6d9694c59136e4", size = 76059261, upload-time = "2025-04-07T13:32:52.573Z" }, - { url = "https://files.pythonhosted.org/packages/a6/4c/77b535e025ce780d2ada8271c1e481fb7337c1df2588a52fe1c9bd87d2e8/bitsandbytes-0.45.5-py3-none-win_amd64.whl", hash = "sha256:ed1c61b91d989d6a33fd05737d6edbf5086d8ebc89235ee632c7a19144085da2", size = 75430204, upload-time = "2025-04-07T13:32:57.553Z" }, -] - [[package]] name = "bitstring" version = "4.3.1" @@ -1279,12 +1278,21 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/52/57/ecc9ae29fa5b2d90107cd1d9bf8ed19aacb74b2264d986ae9d44fe9bdf87/debugpy-1.8.16-py2.py3-none-any.whl", hash = "sha256:19c9521962475b87da6f673514f7fd610328757ec993bf7ec0d8c96f9a325f9e", size = 5287700, upload-time = "2025-08-06T18:00:42.333Z" }, ] +[[package]] +name = "decorator" +version = "5.2.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/43/fa/6d96a0978d19e17b68d634497769987b16c8f4cd0a7a05048bec693caa6b/decorator-5.2.1.tar.gz", hash = "sha256:65f266143752f734b0a7cc83c46f4618af75b8c5911b00ccb61d0ac9b6da0360", size = 56711, upload-time = "2025-02-24T04:41:34.073Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4e/8c/f3147f5c4b73e7550fe5f9352eaa956ae838d5c51eb58e7a25b9f3e2643b/decorator-5.2.1-py3-none-any.whl", hash = "sha256:d316bb415a2d9e2d2b3abcc4084c6502fc09240e292cd76a76afc106a1c8e04a", size = 9190, upload-time = "2025-02-24T04:41:32.565Z" }, +] + [[package]] name = "decord" version = "0.6.0" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "numpy" }, + { name = "numpy", marker = "(platform_machine != 'aarch64' and sys_platform != 'darwin') or sys_platform == 'win32'" }, ] wheels = [ { url = "https://files.pythonhosted.org/packages/11/79/936af42edf90a7bd4e41a6cac89c913d4b47fa48a26b042d5129a9242ee3/decord-0.6.0-py3-none-manylinux2010_x86_64.whl", hash = "sha256:51997f20be8958e23b7c4061ba45d0efcd86bffd5fe81c695d0befee0d442976", size = 13602299, upload-time = "2021-06-14T21:30:55.486Z" }, @@ -1293,8 +1301,8 @@ wheels = [ [[package]] name = "deep-ep" -version = "1.1.0+e3908bf" -source = { git = "https://github.com/deepseek-ai/DeepEP.git?rev=e3908bf5bd0cc6265bcb225d15cd8c996d4759ef#e3908bf5bd0cc6265bcb225d15cd8c996d4759ef" } +version = "1.2.1+bfded34" +source = { git = "https://github.com/deepseek-ai/DeepEP.git?rev=bfded34800dfec415b71503f8205181de90b2480#bfded34800dfec415b71503f8205181de90b2480" } dependencies = [ { name = "ninja" }, { name = "packaging" }, @@ -1361,6 +1369,26 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/d1/ae/afb1487556e2dc827a17097aac8158a25b433a345386f0e249f6d2694ccb/devtools-0.12.2-py3-none-any.whl", hash = "sha256:c366e3de1df4cdd635f1ad8cbcd3af01a384d7abda71900e68d43b04eb6aaca7", size = 19411, upload-time = "2023-09-03T16:56:59.049Z" }, ] +[[package]] +name = "diffusers" +version = "0.36.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "filelock" }, + { name = "httpx" }, + { name = "huggingface-hub" }, + { name = "importlib-metadata" }, + { name = "numpy" }, + { name = "pillow" }, + { name = "regex" }, + { name = "requests" }, + { name = "safetensors" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/88/45/ccb2e2180ddf475a0f931dac6a50346310e4c464ce3cccb8a65d1fc1e16d/diffusers-0.36.0.tar.gz", hash = "sha256:a9cde8721b415bde6a678f2d02abb85396487e1b0e0d2b4abb462d14a9825ab0", size = 3795088, upload-time = "2025-12-08T10:14:34.255Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/35/50/281f92cb1f83854dbd79b6e958b3bc5018607e2542971d41604ba7a14b2f/diffusers-0.36.0-py3-none-any.whl", hash = "sha256:525d42abc74bfc3b2db594999961295c054b48ef40a11724dacf50e6abd1af98", size = 4597884, upload-time = "2025-12-08T10:14:31.979Z" }, +] + [[package]] name = "dill" version = "0.3.8" @@ -2144,6 +2172,19 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86", size = 37515, upload-time = "2025-04-24T03:35:24.344Z" }, ] +[[package]] +name = "h2" +version = "4.3.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "hpack" }, + { name = "hyperframe" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/1d/17/afa56379f94ad0fe8defd37d6eb3f89a25404ffc71d4d848893d270325fc/h2-4.3.0.tar.gz", hash = "sha256:6c59efe4323fa18b47a632221a1888bd7fde6249819beda254aeca909f221bf1", size = 2152026, upload-time = "2025-08-23T18:12:19.778Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/69/b2/119f6e6dcbd96f9069ce9a2665e0146588dc9f88f29549711853645e736a/h2-4.3.0-py3-none-any.whl", hash = "sha256:c438f029a25f7945c69e0ccf0fb951dc3f73a5f6412981daee861431b70e2bdd", size = 61779, upload-time = "2025-08-23T18:12:17.779Z" }, +] + [[package]] name = "hatchling" version = "1.27.0" @@ -2174,6 +2215,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/9e/d3/0aaf279f4f3dea58e99401b92c31c0f752924ba0e6c7d7bb07b1dbd7f35e/hf_xet-1.1.8-cp37-abi3-win_amd64.whl", hash = "sha256:4171f31d87b13da4af1ed86c98cf763292e4720c088b4957cf9d564f92904ca9", size = 2801689, upload-time = "2025-08-18T22:01:04.81Z" }, ] +[[package]] +name = "hpack" +version = "4.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/2c/48/71de9ed269fdae9c8057e5a4c0aa7402e8bb16f2c6e90b3aa53327b113f8/hpack-4.1.0.tar.gz", hash = "sha256:ec5eca154f7056aa06f196a557655c5b009b382873ac8d1e66e79e87535f1dca", size = 51276, upload-time = "2025-01-22T21:44:58.347Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/07/c6/80c95b1b2b94682a72cbdbfb85b81ae2daffa4291fbfa1b1464502ede10d/hpack-4.1.0-py3-none-any.whl", hash = "sha256:157ac792668d995c657d93111f46b4535ed114f0c9c8d672271bbec7eae1b496", size = 34357, upload-time = "2025-01-22T21:44:56.92Z" }, +] + [[package]] name = "httpcore" version = "1.0.9" @@ -2224,6 +2274,11 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad", size = 73517, upload-time = "2024-12-06T15:37:21.509Z" }, ] +[package.optional-dependencies] +http2 = [ + { name = "h2" }, +] + [[package]] name = "huggingface-hub" version = "0.34.4" @@ -2257,6 +2312,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/c6/50/e0edd38dcd63fb26a8547f13d28f7a008bc4a3fd4eb4ff030673f22ad41a/hydra_core-1.3.2-py3-none-any.whl", hash = "sha256:fa0238a9e31df3373b35b0bfb672c34cc92718d21f81311d8996a16de1141d8b", size = 154547, upload-time = "2023-02-23T18:33:40.801Z" }, ] +[[package]] +name = "hyperframe" +version = "6.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/02/e7/94f8232d4a74cc99514c13a9f995811485a6903d48e5d952771ef6322e30/hyperframe-6.1.0.tar.gz", hash = "sha256:f630908a00854a7adeabd6382b43923a4c4cd4b821fcb527e6ab9e15382a3b08", size = 26566, upload-time = "2025-01-22T21:41:49.302Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/48/30/47d0bf6072f7252e6521f3447ccfa40b421b6824517f82854703d0f5a98b/hyperframe-6.1.0-py3-none-any.whl", hash = "sha256:b03380493a519fce58ea5af42e4a42317bf9bd425596f7a0835ffce80f1a42e5", size = 13007, upload-time = "2025-01-22T21:41:47.295Z" }, +] + [[package]] name = "identify" version = "2.6.13" @@ -2275,6 +2339,20 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3", size = 70442, upload-time = "2024-09-15T18:07:37.964Z" }, ] +[[package]] +name = "imageio-ffmpeg" +version = "0.6.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/44/bd/c3343c721f2a1b0c9fc71c1aebf1966a3b7f08c2eea8ed5437a2865611d6/imageio_ffmpeg-0.6.0.tar.gz", hash = "sha256:e2556bed8e005564a9f925bb7afa4002d82770d6b08825078b7697ab88ba1755", size = 25210, upload-time = "2025-01-16T21:34:32.747Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/da/58/87ef68ac83f4c7690961bce288fd8e382bc5f1513860fc7f90a9c1c1c6bf/imageio_ffmpeg-0.6.0-py3-none-macosx_10_9_intel.macosx_10_9_x86_64.whl", hash = "sha256:9d2baaf867088508d4a3458e61eeb30e945c4ad8016025545f66c4b5aaef0a61", size = 24932969, upload-time = "2025-01-16T21:34:20.464Z" }, + { url = "https://files.pythonhosted.org/packages/40/5c/f3d8a657d362cc93b81aab8feda487317da5b5d31c0e1fdfd5e986e55d17/imageio_ffmpeg-0.6.0-py3-none-macosx_11_0_arm64.whl", hash = "sha256:b1ae3173414b5fc5f538a726c4e48ea97edc0d2cdc11f103afee655c463fa742", size = 21113891, upload-time = "2025-01-16T21:34:00.277Z" }, + { url = "https://files.pythonhosted.org/packages/33/e7/1925bfbc563c39c1d2e82501d8372734a5c725e53ac3b31b4c2d081e895b/imageio_ffmpeg-0.6.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:1d47bebd83d2c5fc770720d211855f208af8a596c82d17730aa51e815cdee6dc", size = 25632706, upload-time = "2025-01-16T21:33:53.475Z" }, + { url = "https://files.pythonhosted.org/packages/a0/2d/43c8522a2038e9d0e7dbdf3a61195ecc31ca576fb1527a528c877e87d973/imageio_ffmpeg-0.6.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:c7e46fcec401dd990405049d2e2f475e2b397779df2519b544b8aab515195282", size = 29498237, upload-time = "2025-01-16T21:34:13.726Z" }, + { url = "https://files.pythonhosted.org/packages/a0/13/59da54728351883c3c1d9fca1710ab8eee82c7beba585df8f25ca925f08f/imageio_ffmpeg-0.6.0-py3-none-win32.whl", hash = "sha256:196faa79366b4a82f95c0f4053191d2013f4714a715780f0ad2a68ff37483cc2", size = 19652251, upload-time = "2025-01-16T21:34:06.812Z" }, + { url = "https://files.pythonhosted.org/packages/2c/c6/fa760e12a2483469e2bf5058c5faff664acf66cadb4df2ad6205b016a73d/imageio_ffmpeg-0.6.0-py3-none-win_amd64.whl", hash = "sha256:02fa47c83703c37df6bfe4896aab339013f62bf02c5ebf2dce6da56af04ffc0a", size = 31246824, upload-time = "2025-01-16T21:34:28.6Z" }, +] + [[package]] name = "imagesize" version = "1.4.1" @@ -2536,6 +2614,44 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/ab/60/dfbbf40e3a371388c0e03ff65b01319b7d4023e883df6d7261125772ffdc/latex2sympy2_extended-1.10.2-py3-none-any.whl", hash = "sha256:f910442c5b02a466c1046f47d05cc5285181068b882399281f30102715337fb7", size = 207855, upload-time = "2025-07-02T15:26:04.88Z" }, ] +[[package]] +name = "lazy-loader" +version = "0.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "packaging" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/6f/6b/c875b30a1ba490860c93da4cabf479e03f584eba06fe5963f6f6644653d8/lazy_loader-0.4.tar.gz", hash = "sha256:47c75182589b91a4e1a85a136c074285a5ad4d9f39c63e0d7fb76391c4574cd1", size = 15431, upload-time = "2024-04-05T13:03:12.261Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/83/60/d497a310bde3f01cb805196ac61b7ad6dc5dcf8dce66634dc34364b20b4f/lazy_loader-0.4-py3-none-any.whl", hash = "sha256:342aa8e14d543a154047afb4ba8ef17f5563baad3fc610d7b15b213b0f119efc", size = 12097, upload-time = "2024-04-05T13:03:10.514Z" }, +] + +[[package]] +name = "librosa" +version = "0.11.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "audioread" }, + { name = "decorator" }, + { name = "joblib" }, + { name = "lazy-loader" }, + { name = "msgpack" }, + { name = "numba" }, + { name = "numpy" }, + { name = "pooch" }, + { name = "scikit-learn" }, + { name = "scipy" }, + { name = "soundfile" }, + { name = "soxr" }, + { name = "standard-aifc", marker = "python_full_version >= '3.13'" }, + { name = "standard-sunau", marker = "python_full_version >= '3.13'" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/64/36/360b5aafa0238e29758729e9486c6ed92a6f37fa403b7875e06c115cdf4a/librosa-0.11.0.tar.gz", hash = "sha256:f5ed951ca189b375bbe2e33b2abd7e040ceeee302b9bbaeeffdfddb8d0ace908", size = 327001, upload-time = "2025-03-11T15:09:54.884Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b5/ba/c63c5786dfee4c3417094c4b00966e61e4a63efecee22cb7b4c0387dda83/librosa-0.11.0-py3-none-any.whl", hash = "sha256:0b6415c4fd68bff4c29288abe67c6d80b587e0e1e2cfb0aad23e4559504a7fa1", size = 260749, upload-time = "2025-03-11T15:09:52.982Z" }, +] + [[package]] name = "liger-kernel" version = "0.6.2" @@ -3400,10 +3516,14 @@ wheels = [ name = "nemo-automodel" source = { editable = "3rdparty/Automodel-workspace/Automodel" } dependencies = [ - { name = "bitsandbytes", marker = "platform_machine == 'x86_64' and sys_platform != 'darwin'" }, { name = "datasets" }, + { name = "diffusers" }, + { name = "ftfy" }, + { name = "imageio-ffmpeg" }, { name = "liger-kernel", marker = "platform_machine == 'x86_64' and sys_platform != 'darwin'" }, { name = "megatron-fsdp" }, + { name = "mlflow" }, + { name = "opencv-python-headless" }, { name = "pybind11" }, { name = "pyyaml" }, { name = "torch", version = "2.9.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, @@ -3415,22 +3535,39 @@ dependencies = [ ] [package.optional-dependencies] -fa = [ - { name = "flash-attn" }, +all = [ + { name = "backoff" }, + { name = "flash-linear-attention" }, + { name = "mistral-common", extra = ["opencv"] }, + { name = "numba" }, + { name = "numpy" }, + { name = "perceptron" }, + { name = "pillow" }, + { name = "qwen-omni-utils" }, + { name = "qwen-vl-utils", extra = ["decord"], marker = "platform_machine == 'x86_64' and sys_platform != 'darwin'" }, + { name = "sentencepiece" }, + { name = "timm" }, + { name = "torchcodec", marker = "platform_machine == 'x86_64' and sys_platform != 'darwin'" }, ] -moe = [ +cuda = [ + { name = "flash-attn" }, { name = "transformer-engine", extra = ["pytorch"] }, ] +extra = [ + { name = "flash-linear-attention" }, + { name = "perceptron" }, + { name = "sentencepiece" }, +] vlm = [ { name = "backoff" }, { name = "mistral-common", extra = ["opencv"] }, { name = "numba" }, { name = "numpy" }, { name = "pillow" }, - { name = "qwen-vl-utils", extra = ["decord"] }, + { name = "qwen-omni-utils" }, + { name = "qwen-vl-utils", extra = ["decord"], marker = "platform_machine == 'x86_64' and sys_platform != 'darwin'" }, { name = "timm" }, - { name = "torchcodec" }, - { name = "transformers" }, + { name = "torchcodec", marker = "platform_machine == 'x86_64' and sys_platform != 'darwin'" }, ] [package.dev-dependencies] @@ -3464,30 +3601,39 @@ test = [ [package.metadata] requires-dist = [ { name = "backoff", marker = "extra == 'vlm'" }, - { name = "bitsandbytes", marker = "platform_machine == 'x86_64' and sys_platform != 'darwin'", specifier = "==0.45.5" }, { name = "datasets", specifier = ">=4.0.0" }, - { name = "flash-attn", marker = "extra == 'fa'", specifier = "<=2.8.3" }, + { name = "diffusers" }, + { name = "flash-attn", marker = "extra == 'cuda'", specifier = "<=2.8.3" }, + { name = "flash-linear-attention", marker = "extra == 'extra'" }, + { name = "ftfy" }, + { name = "imageio-ffmpeg" }, { name = "liger-kernel", marker = "platform_machine == 'x86_64' and sys_platform != 'darwin'", specifier = ">=0.5.9" }, { name = "megatron-fsdp" }, { name = "mistral-common", extras = ["opencv"], marker = "extra == 'vlm'" }, + { name = "mlflow" }, + { name = "nemo-automodel", extras = ["extra"], marker = "extra == 'all'", editable = "3rdparty/Automodel-workspace/Automodel" }, + { name = "nemo-automodel", extras = ["vlm"], marker = "extra == 'all'", editable = "3rdparty/Automodel-workspace/Automodel" }, { name = "numba", marker = "extra == 'vlm'" }, { name = "numpy", marker = "extra == 'vlm'" }, + { name = "opencv-python-headless", specifier = "==4.10.0.84" }, + { name = "perceptron", marker = "extra == 'extra'" }, { name = "pillow", marker = "extra == 'vlm'" }, { name = "pybind11" }, { name = "pyyaml" }, - { name = "qwen-vl-utils", extras = ["decord"], marker = "extra == 'vlm'" }, - { name = "timm", marker = "extra == 'vlm'", specifier = "==1.0.16" }, + { name = "qwen-omni-utils", marker = "extra == 'vlm'" }, + { name = "qwen-vl-utils", extras = ["decord"], marker = "platform_machine == 'x86_64' and sys_platform != 'darwin' and extra == 'vlm'" }, + { name = "sentencepiece", marker = "extra == 'extra'" }, + { name = "timm", marker = "extra == 'vlm'", specifier = "<=1.0.22" }, { name = "torch", marker = "sys_platform != 'darwin'", specifier = "<=2.9.0", index = "https://download.pytorch.org/whl/cu129" }, { name = "torch", marker = "sys_platform == 'darwin'", specifier = "<=2.9.0", index = "https://pypi.org/simple" }, - { name = "torchao", specifier = "==0.14.1" }, - { name = "torchcodec", marker = "extra == 'vlm'" }, + { name = "torchao" }, + { name = "torchcodec", marker = "platform_machine == 'x86_64' and sys_platform != 'darwin' and extra == 'vlm'" }, { name = "torchdata" }, - { name = "transformer-engine", extras = ["pytorch"], marker = "extra == 'moe'", specifier = "==2.8.0" }, - { name = "transformers", specifier = "<=4.57.1" }, - { name = "transformers", marker = "extra == 'vlm'", specifier = "<=4.57.1" }, + { name = "transformer-engine", extras = ["pytorch"], marker = "extra == 'cuda'", specifier = "==2.8.0" }, + { name = "transformers", specifier = "<=4.57.3" }, { name = "wandb" }, ] -provides-extras = ["vlm", "fa", "moe"] +provides-extras = ["cuda", "extra", "vlm", "all"] [package.metadata.requires-dev] build = [ @@ -3606,9 +3752,12 @@ dependencies = [ [package.optional-dependencies] automodel = [ { name = "causal-conv1d" }, + { name = "deep-ep" }, { name = "flash-attn" }, { name = "mamba-ssm" }, { name = "nemo-automodel" }, + { name = "nv-grouped-gemm" }, + { name = "transformer-engine", extra = ["pytorch"] }, { name = "vllm" }, ] mcore = [ @@ -3683,7 +3832,8 @@ requires-dist = [ { name = "datasets", specifier = ">=4.0.0" }, { name = "debugpy" }, { name = "deep-ep", marker = "extra == 'mcore'", git = "https://github.com/deepseek-ai/DeepEP.git?rev=e3908bf5bd0cc6265bcb225d15cd8c996d4759ef" }, - { name = "deep-ep", marker = "extra == 'vllm'", git = "https://github.com/deepseek-ai/DeepEP.git?rev=e3908bf5bd0cc6265bcb225d15cd8c996d4759ef" }, + { name = "deep-ep", marker = "extra == 'automodel'", git = "https://github.com/deepseek-ai/DeepEP.git?rev=bfded34800dfec415b71503f8205181de90b2480" }, + { name = "deep-ep", marker = "extra == 'vllm'", git = "https://github.com/deepseek-ai/DeepEP.git?rev=bfded34800dfec415b71503f8205181de90b2480" }, { name = "deep-gemm", marker = "extra == 'vllm'", git = "https://github.com/deepseek-ai/DeepGEMM.git?rev=7b6b5563b9d4c1ae07ffbce7f78ad3ac9204827c" }, { name = "flash-attn", marker = "extra == 'automodel'", specifier = "==2.8.1" }, { name = "flash-attn", marker = "extra == 'mcore'", specifier = "==2.8.1" }, @@ -3702,6 +3852,7 @@ requires-dist = [ { name = "num2words", specifier = ">=0.5.14" }, { name = "num2words", marker = "extra == 'vllm'", specifier = ">=0.5.14" }, { name = "numpy" }, + { name = "nv-grouped-gemm", marker = "extra == 'automodel'", git = "https://github.com/fanshiqing/grouped_gemm?tag=v1.1.4.post7" }, { name = "nvidia-ml-py" }, { name = "nvidia-nvshmem-cu12", marker = "(platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux')" }, { name = "nvtx" }, @@ -3722,6 +3873,7 @@ requires-dist = [ { name = "torchdata" }, { name = "torchvision", marker = "sys_platform != 'darwin'", specifier = ">=0.22.0", index = "https://download.pytorch.org/whl/cu129" }, { name = "torchvision", marker = "sys_platform == 'darwin'", specifier = ">=0.22.0", index = "https://pypi.org/simple" }, + { name = "transformer-engine", extras = ["pytorch"], marker = "extra == 'automodel'", specifier = "==2.8.0" }, { name = "transformer-engine", extras = ["pytorch"], marker = "extra == 'mcore'", specifier = "==2.8.0" }, { name = "transformers", specifier = "==4.57.1" }, { name = "triton", marker = "(platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux')", index = "https://download.pytorch.org/whl/cu129" }, @@ -4534,6 +4686,24 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/49/fe/a2da1627aa9cb6310b6034598363bd26ac301c4a99d21f415b1b2855891e/peft-0.17.1-py3-none-any.whl", hash = "sha256:3d129d64def3d74779c32a080d2567e5f7b674e77d546e3585138216d903f99e", size = 504896, upload-time = "2025-08-21T09:25:18.974Z" }, ] +[[package]] +name = "perceptron" +version = "0.1.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama" }, + { name = "httpx", extra = ["http2"] }, + { name = "numpy" }, + { name = "pillow" }, + { name = "rich" }, + { name = "shellingham" }, + { name = "typer" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/30/60/85db2243d8b550823603d8f9c5845b0dd0f01074e9aabf0b2af0c4f52565/perceptron-0.1.4.tar.gz", hash = "sha256:62fd190efb74925e2cc33c0cd38761e19959be3bdb7b24fbf9e3386d6961f690", size = 78116, upload-time = "2025-11-12T20:00:28.024Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ef/17/b7cb1a10ebb0a9a4c9fbcd96a28b43d44e08a90f620bab07e644a658d2f1/perceptron-0.1.4-py3-none-any.whl", hash = "sha256:f490a6df6c15167e91e1a528601cae98ce99a30991cf792f9ef83ebc15d335c4", size = 57421, upload-time = "2025-11-12T20:00:26.395Z" }, +] + [[package]] name = "pillow" version = "11.3.0" @@ -4640,6 +4810,20 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746", size = 20538, upload-time = "2025-05-15T12:30:06.134Z" }, ] +[[package]] +name = "pooch" +version = "1.8.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "packaging" }, + { name = "platformdirs" }, + { name = "requests" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c6/77/b3d3e00c696c16cf99af81ef7b1f5fe73bd2a307abca41bd7605429fe6e5/pooch-1.8.2.tar.gz", hash = "sha256:76561f0de68a01da4df6af38e9955c4c9d1a5c90da73f7e40276a5728ec83d10", size = 59353, upload-time = "2024-06-06T16:53:46.224Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a8/87/77cc11c7a9ea9fd05503def69e3d18605852cd0d4b0d3b8f15bbeb3ef1d1/pooch-1.8.2-py3-none-any.whl", hash = "sha256:3529a57096f7198778a5ceefd5ac3ef0e4d06a6ddaf9fc2d609b806f25302c47", size = 64574, upload-time = "2024-06-06T16:53:44.343Z" }, +] + [[package]] name = "pre-commit" version = "4.3.0" @@ -5441,6 +5625,22 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/89/32/3836ed85947b06f1d67c07ce16c00b0cf8c053ab0b249d234f9f81ff95ff/pyzmq-27.0.1-cp314-cp314t-win_arm64.whl", hash = "sha256:0fc24bf45e4a454e55ef99d7f5c8b8712539200ce98533af25a5bfa954b6b390", size = 575098, upload-time = "2025-08-03T05:04:27.974Z" }, ] +[[package]] +name = "qwen-omni-utils" +version = "0.0.8" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "av" }, + { name = "librosa" }, + { name = "packaging" }, + { name = "pillow" }, + { name = "requests" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b8/b1/cc58b03b5eadddc0812cef884d013ed6cc66b09f9b0f5b45123f89dcd056/qwen_omni_utils-0.0.8.tar.gz", hash = "sha256:b5808673e1455f4115cb784a62cdc8e8616576221a01fc738610b0f9268cb33c", size = 8145, upload-time = "2025-06-12T11:02:05.411Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a1/b1/dcdd69246a3c3c3bd6f6ced58e2307b3afbd894c4412c29fd49dd897e562/qwen_omni_utils-0.0.8-py3-none-any.whl", hash = "sha256:c42bcc633fbfd84d565ff0de9d45fae68a6b57a9b7b97a4b77eda71a0d3ee73a", size = 9218, upload-time = "2025-06-12T11:02:03.981Z" }, +] + [[package]] name = "qwen-vl-utils" version = "0.0.11" @@ -5458,7 +5658,7 @@ wheels = [ [package.optional-dependencies] decord = [ - { name = "decord" }, + { name = "decord", marker = "(platform_machine != 'aarch64' and sys_platform != 'darwin') or sys_platform == 'win32'" }, ] [[package]] @@ -6198,6 +6398,27 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/e7/9c/0e6afc12c269578be5c0c1c9f4b49a8d32770a080260c333ac04cc1c832d/soupsieve-2.7-py3-none-any.whl", hash = "sha256:6e60cc5c1ffaf1cebcc12e8188320b72071e922c2e897f737cadce79ad5d30c4", size = 36677, upload-time = "2025-04-20T18:50:07.196Z" }, ] +[[package]] +name = "soxr" +version = "1.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/42/7e/f4b461944662ad75036df65277d6130f9411002bfb79e9df7dff40a31db9/soxr-1.0.0.tar.gz", hash = "sha256:e07ee6c1d659bc6957034f4800c60cb8b98de798823e34d2a2bba1caa85a4509", size = 171415, upload-time = "2025-09-07T13:22:21.317Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c5/c7/f92b81f1a151c13afb114f57799b86da9330bec844ea5a0d3fe6a8732678/soxr-1.0.0-cp312-abi3-macosx_10_14_x86_64.whl", hash = "sha256:abecf4e39017f3fadb5e051637c272ae5778d838e5c3926a35db36a53e3a607f", size = 205508, upload-time = "2025-09-07T13:22:01.252Z" }, + { url = "https://files.pythonhosted.org/packages/ff/1d/c945fea9d83ea1f2be9d116b3674dbaef26ed090374a77c394b31e3b083b/soxr-1.0.0-cp312-abi3-macosx_11_0_arm64.whl", hash = "sha256:e973d487ee46aa8023ca00a139db6e09af053a37a032fe22f9ff0cc2e19c94b4", size = 163568, upload-time = "2025-09-07T13:22:03.558Z" }, + { url = "https://files.pythonhosted.org/packages/b5/80/10640970998a1d2199bef6c4d92205f36968cddaf3e4d0e9fe35ddd405bd/soxr-1.0.0-cp312-abi3-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e8ce273cca101aff3d8c387db5a5a41001ba76ef1837883438d3c652507a9ccc", size = 204707, upload-time = "2025-09-07T13:22:05.125Z" }, + { url = "https://files.pythonhosted.org/packages/b1/87/2726603c13c2126cb8ded9e57381b7377f4f0df6ba4408e1af5ddbfdc3dd/soxr-1.0.0-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e8f2a69686f2856d37823bbb7b78c3d44904f311fe70ba49b893af11d6b6047b", size = 238032, upload-time = "2025-09-07T13:22:06.428Z" }, + { url = "https://files.pythonhosted.org/packages/ce/04/530252227f4d0721a5524a936336485dfb429bb206a66baf8e470384f4a2/soxr-1.0.0-cp312-abi3-win_amd64.whl", hash = "sha256:2a3b77b115ae7c478eecdbd060ed4f61beda542dfb70639177ac263aceda42a2", size = 172070, upload-time = "2025-09-07T13:22:07.62Z" }, + { url = "https://files.pythonhosted.org/packages/99/77/d3b3c25b4f1b1aa4a73f669355edcaee7a52179d0c50407697200a0e55b9/soxr-1.0.0-cp314-cp314t-macosx_10_14_x86_64.whl", hash = "sha256:392a5c70c04eb939c9c176bd6f654dec9a0eaa9ba33d8f1024ed63cf68cdba0a", size = 209509, upload-time = "2025-09-07T13:22:08.773Z" }, + { url = "https://files.pythonhosted.org/packages/8a/ee/3ca73e18781bb2aff92b809f1c17c356dfb9a1870652004bd432e79afbfa/soxr-1.0.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:fdc41a1027ba46777186f26a8fba7893be913383414135577522da2fcc684490", size = 167690, upload-time = "2025-09-07T13:22:10.259Z" }, + { url = "https://files.pythonhosted.org/packages/bd/f0/eea8b5f587a2531657dc5081d2543a5a845f271a3bea1c0fdee5cebde021/soxr-1.0.0-cp314-cp314t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:449acd1dfaf10f0ce6dfd75c7e2ef984890df94008765a6742dafb42061c1a24", size = 209541, upload-time = "2025-09-07T13:22:11.739Z" }, + { url = "https://files.pythonhosted.org/packages/64/59/2430a48c705565eb09e78346950b586f253a11bd5313426ced3ecd9b0feb/soxr-1.0.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:38b35c99e408b8f440c9376a5e1dd48014857cd977c117bdaa4304865ae0edd0", size = 243025, upload-time = "2025-09-07T13:22:12.877Z" }, + { url = "https://files.pythonhosted.org/packages/3c/1b/f84a2570a74094e921bbad5450b2a22a85d58585916e131d9b98029c3e69/soxr-1.0.0-cp314-cp314t-win_amd64.whl", hash = "sha256:a39b519acca2364aa726b24a6fd55acf29e4c8909102e0b858c23013c38328e5", size = 184850, upload-time = "2025-09-07T13:22:14.068Z" }, +] + [[package]] name = "sphinx" version = "8.2.3" @@ -6385,6 +6606,40 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/a9/5c/bfd6bd0bf979426d405cc6e71eceb8701b148b16c21d2dc3c261efc61c7b/sqlparse-0.5.3-py3-none-any.whl", hash = "sha256:cf2196ed3418f3ba5de6af7e82c694a9fbdbfecccdfc72e281548517081f16ca", size = 44415, upload-time = "2024-12-10T12:05:27.824Z" }, ] +[[package]] +name = "standard-aifc" +version = "3.13.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "audioop-lts", marker = "python_full_version >= '3.13'" }, + { name = "standard-chunk", marker = "python_full_version >= '3.13'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c4/53/6050dc3dde1671eb3db592c13b55a8005e5040131f7509cef0215212cb84/standard_aifc-3.13.0.tar.gz", hash = "sha256:64e249c7cb4b3daf2fdba4e95721f811bde8bdfc43ad9f936589b7bb2fae2e43", size = 15240, upload-time = "2024-10-30T16:01:31.772Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c3/52/5fbb203394cc852334d1575cc020f6bcec768d2265355984dfd361968f36/standard_aifc-3.13.0-py3-none-any.whl", hash = "sha256:f7ae09cc57de1224a0dd8e3eb8f73830be7c3d0bc485de4c1f82b4a7f645ac66", size = 10492, upload-time = "2024-10-30T16:01:07.071Z" }, +] + +[[package]] +name = "standard-chunk" +version = "3.13.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/43/06/ce1bb165c1f111c7d23a1ad17204d67224baa69725bb6857a264db61beaf/standard_chunk-3.13.0.tar.gz", hash = "sha256:4ac345d37d7e686d2755e01836b8d98eda0d1a3ee90375e597ae43aaf064d654", size = 4672, upload-time = "2024-10-30T16:18:28.326Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7a/90/a5c1084d87767d787a6caba615aa50dc587229646308d9420c960cb5e4c0/standard_chunk-3.13.0-py3-none-any.whl", hash = "sha256:17880a26c285189c644bd5bd8f8ed2bdb795d216e3293e6dbe55bbd848e2982c", size = 4944, upload-time = "2024-10-30T16:18:26.694Z" }, +] + +[[package]] +name = "standard-sunau" +version = "3.13.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "audioop-lts", marker = "python_full_version >= '3.13'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/66/e3/ce8d38cb2d70e05ffeddc28bb09bad77cfef979eb0a299c9117f7ed4e6a9/standard_sunau-3.13.0.tar.gz", hash = "sha256:b319a1ac95a09a2378a8442f403c66f4fd4b36616d6df6ae82b8e536ee790908", size = 9368, upload-time = "2024-10-30T16:01:41.626Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/34/ae/e3707f6c1bc6f7aa0df600ba8075bfb8a19252140cd595335be60e25f9ee/standard_sunau-3.13.0-py3-none-any.whl", hash = "sha256:53af624a9529c41062f4c2fd33837f297f3baa196b0cfceffea6555654602622", size = 7364, upload-time = "2024-10-30T16:01:28.003Z" }, +] + [[package]] name = "starlette" version = "0.50.0" @@ -6817,9 +7072,7 @@ name = "torchcodec" version = "0.6.0" source = { registry = "https://pypi.org/simple" } wheels = [ - { url = "https://files.pythonhosted.org/packages/d9/b3/11326a0e7a3c803a95975cfce4ac88fa4ea1a0d432bb876081046c5a5554/torchcodec-0.6.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:fba260145a239b5afe13336e3a5bc1b089c9c31a073e9a7c2026d4cbd853fdd9", size = 3482584, upload-time = "2025-08-07T08:51:32.535Z" }, { url = "https://files.pythonhosted.org/packages/a7/d1/3f90561df013f6a015ef19de22726b64073fee405f53d3c4b8255ab05a67/torchcodec-0.6.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:fdef91a17fb1f1a159ce23710324a9a4e6d6a885275de73700f94a9ad562c6b2", size = 1370954, upload-time = "2025-08-07T08:51:15.021Z" }, - { url = "https://files.pythonhosted.org/packages/87/d0/0b5dd42652e4527d578e1d6239dbb907bf83e502115e517b83a55d8b7f8b/torchcodec-0.6.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:de20cab5df7fa7cdd74ec1dc0d508324685573f86de6789f0ebb860b7ea20b33", size = 3446017, upload-time = "2025-08-07T08:51:34.484Z" }, { url = "https://files.pythonhosted.org/packages/97/62/a938334e39101d4304619b90847d8aef7d1c607c6bcf33638f72931ae990/torchcodec-0.6.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:46dab701a2d809e975a8b07d7ee47ed34f1d903511e374c74cfc1de6a5ab0e3f", size = 1374794, upload-time = "2025-08-07T08:51:17.355Z" }, ] From d3442b48d3cc373c0b62eccf8d22c6a79f7a9a44 Mon Sep 17 00:00:00 2001 From: Hemil Desai Date: Tue, 23 Dec 2025 22:00:02 -0800 Subject: [PATCH 20/52] fix: grad norm calculation for dtensor v2 (#1693) Signed-off-by: Hemil Desai Signed-off-by: Parth Mannan --- nemo_rl/models/policy/workers/dtensor_policy_worker_v2.py | 6 ++++-- .../llm/grpo-qwen2.5-7b-instruct-4n8g-fsdp2tp4.v3.sh | 4 +++- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/nemo_rl/models/policy/workers/dtensor_policy_worker_v2.py b/nemo_rl/models/policy/workers/dtensor_policy_worker_v2.py index c90c161b75..738146a7e2 100644 --- a/nemo_rl/models/policy/workers/dtensor_policy_worker_v2.py +++ b/nemo_rl/models/policy/workers/dtensor_policy_worker_v2.py @@ -858,6 +858,10 @@ def train( ## NOTE: invalid samples should be multiplied ## by zero in the loss function to prevent them ## from affecting the gradient calculation + + # when FSDP reduces the gradients over the DP dim, they're automatically averaged + # but we want to sum them so we cancel out the average here + loss *= self.dp_size * self.cp_size loss.backward() if num_valid_samples > 0: @@ -880,8 +884,6 @@ def train( pp_axis_name=None, foreach=True, num_label_tokens=1, - # when FSDP reduces the gradients over the DP dim, they're automatically averaged - # but we want to sum them so we rescale the gradients by self.dp_size * self.cp_size dp_group_size=self.dp_size * self.cp_size, ) grad_norm = torch.tensor( diff --git a/tests/test_suites/llm/grpo-qwen2.5-7b-instruct-4n8g-fsdp2tp4.v3.sh b/tests/test_suites/llm/grpo-qwen2.5-7b-instruct-4n8g-fsdp2tp4.v3.sh index ec613562f2..5fcfbfd76a 100755 --- a/tests/test_suites/llm/grpo-qwen2.5-7b-instruct-4n8g-fsdp2tp4.v3.sh +++ b/tests/test_suites/llm/grpo-qwen2.5-7b-instruct-4n8g-fsdp2tp4.v3.sh @@ -35,5 +35,7 @@ uv run tests/json_dump_tb_logs.py $LOG_DIR --output_path $JSON_METRICS if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | map(tonumber) | max' $JSON_METRICS) -ge $MAX_STEPS ]]; then uv run tests/check_metrics.py $JSON_METRICS \ 'mean(data["train/token_mult_prob_error"]) < 1.1' \ - 'data["train/token_mult_prob_error"]["30"] < 1.1' + 'data["train/token_mult_prob_error"]["30"] < 1.1' \ + 'data["train/grad_norm"]["30"] < 0.5' \ + 'data["train/grad_norm"]["30"] > 0.1' fi From 7fbc72ede7b040a9a7da999c16a3c7aa77026ef8 Mon Sep 17 00:00:00 2001 From: Rayen Date: Wed, 24 Dec 2025 14:55:23 +0800 Subject: [PATCH 21/52] =?UTF-8?q?feat:=20Add=20Nemotron=E2=80=913=20Nano?= =?UTF-8?q?=2030B=20A3B=20BF16=20SFT=20nightly=20tests=20(FSDP2,=20+LoRA)?= =?UTF-8?q?=20(#1648)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: ruit Signed-off-by: Parth Mannan --- .../sft-nanov3-30BA3B-2n8g-fsdp2-lora.yaml | 26 +++++++++++++ .../llm/sft-nanov3-30BA3B-2n8g-fsdp2.yaml | 20 ++++++++++ .../llm/sft-nanov3-30BA3B-2n8g-fsdp2-lora.sh | 38 +++++++++++++++++++ .../llm/sft-nanov3-30BA3B-2n8g-fsdp2.sh | 38 +++++++++++++++++++ tests/test_suites/nightly.txt | 4 ++ tests/unit/test_recipes_and_test_suites.py | 6 +-- 6 files changed, 129 insertions(+), 3 deletions(-) create mode 100644 examples/configs/recipes/llm/sft-nanov3-30BA3B-2n8g-fsdp2-lora.yaml create mode 100644 examples/configs/recipes/llm/sft-nanov3-30BA3B-2n8g-fsdp2.yaml create mode 100755 tests/test_suites/llm/sft-nanov3-30BA3B-2n8g-fsdp2-lora.sh create mode 100755 tests/test_suites/llm/sft-nanov3-30BA3B-2n8g-fsdp2.sh diff --git a/examples/configs/recipes/llm/sft-nanov3-30BA3B-2n8g-fsdp2-lora.yaml b/examples/configs/recipes/llm/sft-nanov3-30BA3B-2n8g-fsdp2-lora.yaml new file mode 100644 index 0000000000..d13b13f92a --- /dev/null +++ b/examples/configs/recipes/llm/sft-nanov3-30BA3B-2n8g-fsdp2-lora.yaml @@ -0,0 +1,26 @@ +defaults: ../../sft.yaml +sft: + max_num_steps: 100 +checkpointing: + enabled: false +policy: + model_name: nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-Base-BF16 + train_global_batch_size: 16 + max_total_sequence_length: 2048 + dtensor_cfg: + lora_cfg: + enabled: true + dim: 256 + alpha: 512 + use_triton: false +logger: + wandb: + project: nemo-rl + name: sft-nanov3-30BA3B-2n8g-fsdp2-lora + tensorboard: + log_dir: tb_logs-sft-nanov3-30BA3B-2n8g-fsdp2-lora + mlflow: + run_name: sft-nanov3-30BA3B-2n8g-fsdp2-lora +cluster: + gpus_per_node: 8 + num_nodes: 2 diff --git a/examples/configs/recipes/llm/sft-nanov3-30BA3B-2n8g-fsdp2.yaml b/examples/configs/recipes/llm/sft-nanov3-30BA3B-2n8g-fsdp2.yaml new file mode 100644 index 0000000000..6639de189b --- /dev/null +++ b/examples/configs/recipes/llm/sft-nanov3-30BA3B-2n8g-fsdp2.yaml @@ -0,0 +1,20 @@ +defaults: ../../sft.yaml +sft: + max_num_steps: 100 +checkpointing: + enabled: false +policy: + model_name: nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-Base-BF16 + train_global_batch_size: 16 + max_total_sequence_length: 2048 +logger: + wandb: + project: nemo-rl + name: sft-nanov3-30BA3B-2n8g-fsdp2 + tensorboard: + log_dir: tb_logs-sft-nanov3-30BA3B-2n8g-fsdp2 + mlflow: + run_name: sft-nanov3-30BA3B-2n8g-fsdp2 +cluster: + gpus_per_node: 8 + num_nodes: 2 diff --git a/tests/test_suites/llm/sft-nanov3-30BA3B-2n8g-fsdp2-lora.sh b/tests/test_suites/llm/sft-nanov3-30BA3B-2n8g-fsdp2-lora.sh new file mode 100755 index 0000000000..f20120f158 --- /dev/null +++ b/tests/test_suites/llm/sft-nanov3-30BA3B-2n8g-fsdp2-lora.sh @@ -0,0 +1,38 @@ +#!/bin/bash +SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd) +source $SCRIPT_DIR/common.env + +# ===== BEGIN CONFIG ===== +NUM_NODES=2 +STEPS_PER_RUN=20 # step_time ~ 10sec +MAX_STEPS=20 +NUM_RUNS=$(( (MAX_STEPS + STEPS_PER_RUN - 1) / STEPS_PER_RUN )) # Round up +NUM_MINUTES=15 # Usually 15 minutes is enough for 20 steps, but we add a buffer of 3 minutes in metrics check +# ===== END CONFIG ===== + +exit_if_max_steps_reached + +# Run the experiment +cd $PROJECT_ROOT +uv run examples/run_sft.py \ + --config $CONFIG_PATH \ + sft.max_num_steps=$MAX_STEPS \ + logger.log_dir=$LOG_DIR \ + logger.wandb_enabled=True \ + logger.wandb.project=nemo-rl \ + logger.wandb.name=$EXP_NAME \ + logger.monitor_gpus=True \ + logger.tensorboard_enabled=True \ + checkpointing.checkpoint_dir=$CKPT_DIR \ + $@ \ + 2>&1 | tee $RUN_LOG + +# Convert tensorboard logs to json +uv run tests/json_dump_tb_logs.py $LOG_DIR --output_path $JSON_METRICS + +# Only run metrics if the target step is reached +if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | map(tonumber) | max' $JSON_METRICS) -ge $MAX_STEPS ]]; then + uv run tests/check_metrics.py $JSON_METRICS \ + 'data["train/loss"]["20"] < 2.03' \ + 'mean(data["timing/train/total_step_time"], 2) < 18' +fi diff --git a/tests/test_suites/llm/sft-nanov3-30BA3B-2n8g-fsdp2.sh b/tests/test_suites/llm/sft-nanov3-30BA3B-2n8g-fsdp2.sh new file mode 100755 index 0000000000..90eda7713f --- /dev/null +++ b/tests/test_suites/llm/sft-nanov3-30BA3B-2n8g-fsdp2.sh @@ -0,0 +1,38 @@ +#!/bin/bash +SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd) +source $SCRIPT_DIR/common.env + +# ===== BEGIN CONFIG ===== +NUM_NODES=2 +STEPS_PER_RUN=20 # step_time ~ 15sec +MAX_STEPS=20 +NUM_RUNS=$(( (MAX_STEPS + STEPS_PER_RUN - 1) / STEPS_PER_RUN )) # Round up +NUM_MINUTES=15 +# ===== END CONFIG ===== + +exit_if_max_steps_reached + +# Run the experiment +cd $PROJECT_ROOT +uv run examples/run_sft.py \ + --config $CONFIG_PATH \ + sft.max_num_steps=$MAX_STEPS \ + logger.log_dir=$LOG_DIR \ + logger.wandb_enabled=True \ + logger.wandb.project=nemo-rl \ + logger.wandb.name=$EXP_NAME \ + logger.monitor_gpus=True \ + logger.tensorboard_enabled=True \ + checkpointing.checkpoint_dir=$CKPT_DIR \ + $@ \ + 2>&1 | tee $RUN_LOG + +# Convert tensorboard logs to json +uv run tests/json_dump_tb_logs.py $LOG_DIR --output_path $JSON_METRICS + +# Only run metrics if the target step is reached +if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | map(tonumber) | max' $JSON_METRICS) -ge $MAX_STEPS ]]; then + uv run tests/check_metrics.py $JSON_METRICS \ + 'data["train/loss"]["20"] < 1.98' \ + 'mean(data["timing/train/total_step_time"], 2) < 15' +fi diff --git a/tests/test_suites/nightly.txt b/tests/test_suites/nightly.txt index 7d830fbfd5..e95507105a 100644 --- a/tests/test_suites/nightly.txt +++ b/tests/test_suites/nightly.txt @@ -90,6 +90,10 @@ tests/test_suites/llm/sft-qwen2.5-math7b-2n8g-megatron.sh # gpt-oss 20b DeepEP test tests/test_suites/llm/sft-gpt-oss-20b-1n8g-fsdp8ep8-automodel.sh +# Nemotron 3 Nano 30B A3B Base BF16 tests +tests/test_suites/llm/sft-nanov3-30BA3B-2n8g-fsdp2.sh +tests/test_suites/llm/sft-nanov3-30BA3B-2n8g-fsdp2-lora.sh + ####### # DPO # ####### diff --git a/tests/unit/test_recipes_and_test_suites.py b/tests/unit/test_recipes_and_test_suites.py index ade6d49d87..bea4897459 100644 --- a/tests/unit/test_recipes_and_test_suites.py +++ b/tests/unit/test_recipes_and_test_suites.py @@ -180,7 +180,7 @@ def test_all_recipe_yamls_accounted_for_in_test_suites( ) -def test_nightly_compute_stays_below_1130_hours(nightly_test_suite, tracker): +def test_nightly_compute_stays_below_1140_hours(nightly_test_suite, tracker): command = f"DRYRUN=1 HF_HOME=... HF_DATASETS_CACHE=... CONTAINER= ACCOUNT= PARTITION= ./tools/launch {' '.join(nightly_test_suite)}" print(f"Running command: {command}") @@ -212,8 +212,8 @@ def test_nightly_compute_stays_below_1130_hours(nightly_test_suite, tracker): f"Last line of output was not as expected: '{last_line}'" ) total_gpu_hours = float(last_line.split(":")[-1].strip()) - assert total_gpu_hours <= 1130, ( - f"Total GPU hours exceeded 1130: {last_line}. We should revisit the test suites to reduce the total GPU hours." + assert total_gpu_hours <= 1140, ( + f"Total GPU hours exceeded 1140: {last_line}. We should revisit the test suites to reduce the total GPU hours." ) tracker.track("total_nightly_gpu_hours", total_gpu_hours) From 041942941b2c4583be9f61d513e8b3551dfdc788 Mon Sep 17 00:00:00 2001 From: Hemil Desai Date: Thu, 25 Dec 2025 00:16:35 -0800 Subject: [PATCH 22/52] feat: Support prefetching of specific envs (#1692) Signed-off-by: Hemil Desai Signed-off-by: Parth Mannan --- nemo_rl/utils/prefetch_venvs.py | 71 ++++++- tests/unit/utils/test_prefetch_venvs.py | 272 ++++++++++++++++++++++++ 2 files changed, 339 insertions(+), 4 deletions(-) create mode 100644 tests/unit/utils/test_prefetch_venvs.py diff --git a/nemo_rl/utils/prefetch_venvs.py b/nemo_rl/utils/prefetch_venvs.py index c6e95722c1..5423198359 100755 --- a/nemo_rl/utils/prefetch_venvs.py +++ b/nemo_rl/utils/prefetch_venvs.py @@ -11,6 +11,7 @@ # 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. +import argparse import os import sys from pathlib import Path @@ -21,16 +22,35 @@ from nemo_rl.utils.venvs import create_local_venv -def prefetch_venvs(): - """Prefetch all virtual environments that will be used by workers.""" +def prefetch_venvs(filters=None): + """Prefetch all virtual environments that will be used by workers. + + Args: + filters: List of strings to match against actor FQNs. If provided, only + actors whose FQN contains at least one of the filter strings will + be prefetched. If None, all venvs are prefetched. + """ print("Prefetching virtual environments...") + if filters: + print(f"Filtering for: {filters}") + + # Track statistics for summary + skipped_by_filter = [] + skipped_system_python = [] + prefetched = [] + failed = [] # Group venvs by py_executable to avoid duplicating work venv_configs = {} for actor_fqn, py_executable in ACTOR_ENVIRONMENT_REGISTRY.items(): + # Apply filters if provided + if filters and not any(f in actor_fqn for f in filters): + skipped_by_filter.append(actor_fqn) + continue # Skip system python as it doesn't need a venv if py_executable == "python" or py_executable == sys.executable: print(f"Skipping {actor_fqn} (uses system Python)") + skipped_system_python.append(actor_fqn) continue # Only create venvs for uv-based executables @@ -47,12 +67,31 @@ def prefetch_venvs(): try: python_path = create_local_venv(py_executable, actor_fqn) print(f" Success: {python_path}") + prefetched.append(actor_fqn) except Exception as e: print(f" Error: {e}") + failed.append(actor_fqn) # Continue with other venvs even if one fails continue - print("\nVenv prefetching complete!") + # Print summary + print("\n" + "=" * 50) + print("Venv prefetching complete! Summary:") + print("=" * 50) + print(f" Prefetched: {len(prefetched)}") + for actor_fqn in prefetched: + print(f" - {actor_fqn}") + print(f" Skipped (system Python): {len(skipped_system_python)}") + for actor_fqn in skipped_system_python: + print(f" - {actor_fqn}") + if filters: + print(f" Skipped (filtered out): {len(skipped_by_filter)}") + for actor_fqn in skipped_by_filter: + print(f" - {actor_fqn}") + if failed: + print(f" Failed: {len(failed)}") + for actor_fqn in failed: + print(f" - {actor_fqn}") # Create convenience python wrapper scripts for frozen environment support (container-only) create_frozen_environment_symlinks(venv_configs) @@ -150,4 +189,28 @@ def create_frozen_environment_symlinks(venv_configs): if __name__ == "__main__": - prefetch_venvs() + parser = argparse.ArgumentParser( + description="Prefetch virtual environments for Ray actors.", + formatter_class=argparse.RawDescriptionHelpFormatter, + epilog=""" +Examples: + # Prefetch all venvs + python -m nemo_rl.utils.prefetch_venvs + + # Prefetch only vLLM-related venvs + python -m nemo_rl.utils.prefetch_venvs vllm + + # Prefetch multiple specific venvs + python -m nemo_rl.utils.prefetch_venvs vllm policy environment + """, + ) + parser.add_argument( + "filters", + nargs="*", + help="Filter strings to match against actor FQNs. Only actors whose FQN " + "contains at least one of these strings will be prefetched. " + "If not provided, all venvs are prefetched.", + ) + args = parser.parse_args() + + prefetch_venvs(filters=args.filters if args.filters else None) diff --git a/tests/unit/utils/test_prefetch_venvs.py b/tests/unit/utils/test_prefetch_venvs.py new file mode 100644 index 0000000000..62c1886189 --- /dev/null +++ b/tests/unit/utils/test_prefetch_venvs.py @@ -0,0 +1,272 @@ +# Copyright (c) 2025, NVIDIA CORPORATION. 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. +import os +from unittest.mock import patch + +import pytest + +import nemo_rl.utils.prefetch_venvs as prefetch_venvs_module + +# When NRL_CONTAINER is set, create_frozen_environment_symlinks also calls +# create_local_venv for each actor, effectively doubling the call count +CALL_MULTIPLIER = 2 if os.environ.get("NRL_CONTAINER") else 1 + + +@pytest.fixture +def mock_registry(): + """Create a mock registry with various actor types.""" + return { + "nemo_rl.models.generation.vllm.vllm_worker.VllmGenerationWorker": "uv run --group vllm", + "nemo_rl.models.policy.workers.dtensor_policy_worker.DTensorPolicyWorker": "uv run --group vllm", + "nemo_rl.models.policy.workers.megatron_policy_worker.MegatronPolicyWorker": "uv run --group mcore", + "nemo_rl.environments.math_environment.MathEnvironment": "python", + "nemo_rl.environments.code_environment.CodeEnvironment": "python", + } + + +@pytest.fixture +def prefetch_venvs_func(mock_registry): + """Patch the registry directly in the prefetch_venvs module.""" + with patch.object( + prefetch_venvs_module, "ACTOR_ENVIRONMENT_REGISTRY", mock_registry + ): + yield prefetch_venvs_module.prefetch_venvs + + +class TestPrefetchVenvs: + """Tests for the prefetch_venvs function.""" + + def test_prefetch_venvs_no_filters(self, prefetch_venvs_func): + """Test that all uv-based venvs are prefetched when no filters are provided.""" + with patch( + "nemo_rl.utils.prefetch_venvs.create_local_venv" + ) as mock_create_venv: + mock_create_venv.return_value = "/path/to/venv/bin/python" + + prefetch_venvs_func(filters=None) + + assert mock_create_venv.call_count == 3 * CALL_MULTIPLIER + + # Verify the actors that were called + call_args = [call[0] for call in mock_create_venv.call_args_list] + actor_fqns = [args[1] for args in call_args] + + assert ( + "nemo_rl.models.generation.vllm.vllm_worker.VllmGenerationWorker" + in actor_fqns + ) + assert ( + "nemo_rl.models.policy.workers.dtensor_policy_worker.DTensorPolicyWorker" + in actor_fqns + ) + assert ( + "nemo_rl.models.policy.workers.megatron_policy_worker.MegatronPolicyWorker" + in actor_fqns + ) + + def test_prefetch_venvs_single_filter(self, prefetch_venvs_func): + """Test filtering with a single filter string.""" + with patch( + "nemo_rl.utils.prefetch_venvs.create_local_venv" + ) as mock_create_venv: + mock_create_venv.return_value = "/path/to/venv/bin/python" + + prefetch_venvs_func(filters=["vllm"]) + + # Should only create venvs for actors containing "vllm" (1 actor) + assert mock_create_venv.call_count == 1 * CALL_MULTIPLIER + + call_args = mock_create_venv.call_args[0] + assert ( + call_args[1] + == "nemo_rl.models.generation.vllm.vllm_worker.VllmGenerationWorker" + ) + + def test_prefetch_venvs_multiple_filters(self, prefetch_venvs_func): + """Test filtering with multiple filter strings (OR logic).""" + with patch( + "nemo_rl.utils.prefetch_venvs.create_local_venv" + ) as mock_create_venv: + mock_create_venv.return_value = "/path/to/venv/bin/python" + + prefetch_venvs_func(filters=["vllm", "megatron"]) + + # Should create venvs for actors containing "vllm" OR "megatron" (2 actors) + assert mock_create_venv.call_count == 2 * CALL_MULTIPLIER + + call_args = [call[0] for call in mock_create_venv.call_args_list] + actor_fqns = [args[1] for args in call_args] + + assert ( + "nemo_rl.models.generation.vllm.vllm_worker.VllmGenerationWorker" + in actor_fqns + ) + assert ( + "nemo_rl.models.policy.workers.megatron_policy_worker.MegatronPolicyWorker" + in actor_fqns + ) + + def test_prefetch_venvs_filter_no_match(self, prefetch_venvs_func): + """Test that no venvs are created when filter matches nothing.""" + with patch( + "nemo_rl.utils.prefetch_venvs.create_local_venv" + ) as mock_create_venv: + mock_create_venv.return_value = "/path/to/venv/bin/python" + + prefetch_venvs_func(filters=["nonexistent"]) + + # Should not create any venvs + assert mock_create_venv.call_count == 0 + + def test_prefetch_venvs_skips_system_python(self, prefetch_venvs_func): + """Test that system python actors are skipped even if they match filters.""" + with patch( + "nemo_rl.utils.prefetch_venvs.create_local_venv" + ) as mock_create_venv: + mock_create_venv.return_value = "/path/to/venv/bin/python" + + # Filter for "environment" which matches system python actors + prefetch_venvs_func(filters=["environment"]) + + # Should not create any venvs since matching actors use system python + assert mock_create_venv.call_count == 0 + + def test_prefetch_venvs_partial_match(self, prefetch_venvs_func): + """Test that filter matches partial strings within FQN.""" + with patch( + "nemo_rl.utils.prefetch_venvs.create_local_venv" + ) as mock_create_venv: + mock_create_venv.return_value = "/path/to/venv/bin/python" + + # "policy" should match both dtensor_policy_worker and megatron_policy_worker + prefetch_venvs_func(filters=["policy"]) + + assert mock_create_venv.call_count == 2 * CALL_MULTIPLIER + + call_args = [call[0] for call in mock_create_venv.call_args_list] + actor_fqns = [args[1] for args in call_args] + + assert ( + "nemo_rl.models.policy.workers.dtensor_policy_worker.DTensorPolicyWorker" + in actor_fqns + ) + assert ( + "nemo_rl.models.policy.workers.megatron_policy_worker.MegatronPolicyWorker" + in actor_fqns + ) + + def test_prefetch_venvs_empty_filter_list(self, prefetch_venvs_func): + """Test that empty filter list is treated as no filtering (falsy).""" + with patch( + "nemo_rl.utils.prefetch_venvs.create_local_venv" + ) as mock_create_venv: + mock_create_venv.return_value = "/path/to/venv/bin/python" + + # Empty list should be falsy and prefetch all + prefetch_venvs_func(filters=[]) + + # Should create venvs for all uv-based actors (3 total) + assert mock_create_venv.call_count == 3 * CALL_MULTIPLIER + + def test_prefetch_venvs_continues_on_error(self, prefetch_venvs_func): + """Test that prefetching continues even if one venv creation fails.""" + with patch( + "nemo_rl.utils.prefetch_venvs.create_local_venv" + ) as mock_create_venv: + # Provide enough return values for both prefetch and frozen env symlinks + mock_create_venv.side_effect = [ + Exception("Test error"), + "/path/to/venv/bin/python", + "/path/to/venv/bin/python", + ] * CALL_MULTIPLIER + + # Should not raise, should continue with other venvs + prefetch_venvs_func(filters=None) + + # All 3 uv-based actors should have been attempted + assert mock_create_venv.call_count == 3 * CALL_MULTIPLIER + + def test_prefetch_venvs_case_sensitive_filter(self, prefetch_venvs_func): + """Test that filters are case-sensitive.""" + with patch( + "nemo_rl.utils.prefetch_venvs.create_local_venv" + ) as mock_create_venv: + mock_create_venv.return_value = "/path/to/venv/bin/python" + + # "VLLM" (uppercase) should not match "vllm" (lowercase) + prefetch_venvs_func(filters=["VLLM"]) + + assert mock_create_venv.call_count == 0 + + def test_prefetch_venvs_summary_no_filters(self, prefetch_venvs_func, capsys): + """Test that summary is printed with correct counts and names when no filters.""" + with patch( + "nemo_rl.utils.prefetch_venvs.create_local_venv" + ) as mock_create_venv: + mock_create_venv.return_value = "/path/to/venv/bin/python" + + prefetch_venvs_func(filters=None) + + captured = capsys.readouterr() + assert "Venv prefetching complete! Summary:" in captured.out + assert "Prefetched: 3" in captured.out + assert "Skipped (system Python): 2" in captured.out + # Verify prefetched env names are listed + assert "VllmGenerationWorker" in captured.out + assert "DTensorPolicyWorker" in captured.out + assert "MegatronPolicyWorker" in captured.out + # Verify skipped env names are listed + assert "MathEnvironment" in captured.out + assert "CodeEnvironment" in captured.out + # "Skipped (filtered out)" should not appear when no filters + assert "Skipped (filtered out)" not in captured.out + + def test_prefetch_venvs_summary_with_filters(self, prefetch_venvs_func, capsys): + """Test that summary includes filtered out names when filters are used.""" + with patch( + "nemo_rl.utils.prefetch_venvs.create_local_venv" + ) as mock_create_venv: + mock_create_venv.return_value = "/path/to/venv/bin/python" + + prefetch_venvs_func(filters=["vllm"]) + + captured = capsys.readouterr() + assert "Venv prefetching complete! Summary:" in captured.out + assert "Prefetched: 1" in captured.out + assert "Skipped (system Python): 0" in captured.out + assert "Skipped (filtered out): 4" in captured.out + # Verify prefetched env name is listed + assert "VllmGenerationWorker" in captured.out + # Verify filtered out env names are listed + assert "DTensorPolicyWorker" in captured.out + assert "MegatronPolicyWorker" in captured.out + + def test_prefetch_venvs_summary_with_failures(self, prefetch_venvs_func, capsys): + """Test that summary includes failed actor names when errors occur.""" + with patch( + "nemo_rl.utils.prefetch_venvs.create_local_venv" + ) as mock_create_venv: + # Provide enough return values for both prefetch and frozen env symlinks + mock_create_venv.side_effect = [ + Exception("Test error"), + "/path/to/venv/bin/python", + "/path/to/venv/bin/python", + ] * CALL_MULTIPLIER + + prefetch_venvs_func(filters=None) + + captured = capsys.readouterr() + assert "Venv prefetching complete! Summary:" in captured.out + assert "Prefetched: 2" in captured.out + assert "Failed: 1" in captured.out From 9108663cc4f1a3f854db0ecbff9de4b5b29ec1b8 Mon Sep 17 00:00:00 2001 From: Parth Mannan Date: Tue, 30 Dec 2025 05:59:36 -0800 Subject: [PATCH 23/52] Upgrade DeepEP version to match Signed-off-by: Parth Mannan --- pyproject.toml | 2 +- uv.lock | 317 ++++++------------------------------------------- 2 files changed, 36 insertions(+), 283 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 61c3f7462d..d5700ea563 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -101,7 +101,7 @@ mcore = [ # https://github.com/NVIDIA/TransformerEngine/blob/v2.3/transformer_engine/pytorch/attention/dot_product_attention/utils.py#L108 # https://github.com/facebookresearch/xformers/blob/8354497deb2c04c67fbb2e2ad911e86530da0e90/xformers/ops/fmha/flash.py#L76 "flash-attn==2.8.1", - "deep_ep @ git+https://github.com/deepseek-ai/DeepEP.git@e3908bf5bd0cc6265bcb225d15cd8c996d4759ef", + "deep_ep @ git+https://github.com/deepseek-ai/DeepEP.git@bfded34800dfec415b71503f8205181de90b2480", ] nemo_gym = ["nemo_gym"] diff --git a/uv.lock b/uv.lock index ae392222b4..7beeee5673 100644 --- a/uv.lock +++ b/uv.lock @@ -431,19 +431,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/f6/22/91616fe707a5c5510de2cac9b046a30defe7007ba8a0c04f9c08f27df312/audioop_lts-0.2.2-cp314-cp314t-win_arm64.whl", hash = "sha256:b492c3b040153e68b9fdaff5913305aaaba5bb433d8a7f73d5cf6a64ed3cc1dd", size = 25206, upload-time = "2025-08-05T16:43:16.444Z" }, ] -[[package]] -name = "audioread" -version = "3.1.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "standard-aifc", marker = "python_full_version >= '3.13'" }, - { name = "standard-sunau", marker = "python_full_version >= '3.13'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/a1/4a/874ecf9b472f998130c2b5e145dcdb9f6131e84786111489103b66772143/audioread-3.1.0.tar.gz", hash = "sha256:1c4ab2f2972764c896a8ac61ac53e261c8d29f0c6ccd652f84e18f08a4cab190", size = 20082, upload-time = "2025-10-26T19:44:13.484Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/7e/16/fbe8e1e185a45042f7cd3a282def5bb8d95bb69ab9e9ef6a5368aa17e426/audioread-3.1.0-py3-none-any.whl", hash = "sha256:b30d1df6c5d3de5dcef0fb0e256f6ea17bdcf5f979408df0297d8a408e2971b4", size = 23143, upload-time = "2025-10-26T19:44:12.016Z" }, -] - [[package]] name = "av" version = "15.0.0" @@ -561,6 +548,19 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/ed/40/be3858ffed004e47e48a2cefecdbf9b950d41098b780f9dc3aa609a88351/bitarray-3.8.0-cp314-cp314t-win_arm64.whl", hash = "sha256:2a3d1b05ffdd3e95687942ae7b13c63689f85d3f15c39b33329e3cb9ce6c015f", size = 147015, upload-time = "2025-11-02T21:40:35.064Z" }, ] +[[package]] +name = "bitsandbytes" +version = "0.45.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy", marker = "(platform_machine != 'aarch64' and sys_platform != 'darwin') or sys_platform == 'win32'" }, + { name = "torch", version = "2.9.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "(platform_machine != 'aarch64' and sys_platform != 'darwin') or sys_platform == 'win32'" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/07/b7/cb5ce4d1a382cf53c19ef06c5fc29e85f5e129b4da6527dd207d90a5b8ad/bitsandbytes-0.45.5-py3-none-manylinux_2_24_x86_64.whl", hash = "sha256:a5453f30cc6aab6ccaac364e6bf51a7808d3da5f71763dffeb6d9694c59136e4", size = 76059261, upload-time = "2025-04-07T13:32:52.573Z" }, + { url = "https://files.pythonhosted.org/packages/a6/4c/77b535e025ce780d2ada8271c1e481fb7337c1df2588a52fe1c9bd87d2e8/bitsandbytes-0.45.5-py3-none-win_amd64.whl", hash = "sha256:ed1c61b91d989d6a33fd05737d6edbf5086d8ebc89235ee632c7a19144085da2", size = 75430204, upload-time = "2025-04-07T13:32:57.553Z" }, +] + [[package]] name = "bitstring" version = "4.3.1" @@ -1278,21 +1278,12 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/52/57/ecc9ae29fa5b2d90107cd1d9bf8ed19aacb74b2264d986ae9d44fe9bdf87/debugpy-1.8.16-py2.py3-none-any.whl", hash = "sha256:19c9521962475b87da6f673514f7fd610328757ec993bf7ec0d8c96f9a325f9e", size = 5287700, upload-time = "2025-08-06T18:00:42.333Z" }, ] -[[package]] -name = "decorator" -version = "5.2.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/43/fa/6d96a0978d19e17b68d634497769987b16c8f4cd0a7a05048bec693caa6b/decorator-5.2.1.tar.gz", hash = "sha256:65f266143752f734b0a7cc83c46f4618af75b8c5911b00ccb61d0ac9b6da0360", size = 56711, upload-time = "2025-02-24T04:41:34.073Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/4e/8c/f3147f5c4b73e7550fe5f9352eaa956ae838d5c51eb58e7a25b9f3e2643b/decorator-5.2.1-py3-none-any.whl", hash = "sha256:d316bb415a2d9e2d2b3abcc4084c6502fc09240e292cd76a76afc106a1c8e04a", size = 9190, upload-time = "2025-02-24T04:41:32.565Z" }, -] - [[package]] name = "decord" version = "0.6.0" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "numpy", marker = "(platform_machine != 'aarch64' and sys_platform != 'darwin') or sys_platform == 'win32'" }, + { name = "numpy" }, ] wheels = [ { url = "https://files.pythonhosted.org/packages/11/79/936af42edf90a7bd4e41a6cac89c913d4b47fa48a26b042d5129a9242ee3/decord-0.6.0-py3-none-manylinux2010_x86_64.whl", hash = "sha256:51997f20be8958e23b7c4061ba45d0efcd86bffd5fe81c695d0befee0d442976", size = 13602299, upload-time = "2021-06-14T21:30:55.486Z" }, @@ -1369,26 +1360,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/d1/ae/afb1487556e2dc827a17097aac8158a25b433a345386f0e249f6d2694ccb/devtools-0.12.2-py3-none-any.whl", hash = "sha256:c366e3de1df4cdd635f1ad8cbcd3af01a384d7abda71900e68d43b04eb6aaca7", size = 19411, upload-time = "2023-09-03T16:56:59.049Z" }, ] -[[package]] -name = "diffusers" -version = "0.36.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "filelock" }, - { name = "httpx" }, - { name = "huggingface-hub" }, - { name = "importlib-metadata" }, - { name = "numpy" }, - { name = "pillow" }, - { name = "regex" }, - { name = "requests" }, - { name = "safetensors" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/88/45/ccb2e2180ddf475a0f931dac6a50346310e4c464ce3cccb8a65d1fc1e16d/diffusers-0.36.0.tar.gz", hash = "sha256:a9cde8721b415bde6a678f2d02abb85396487e1b0e0d2b4abb462d14a9825ab0", size = 3795088, upload-time = "2025-12-08T10:14:34.255Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/35/50/281f92cb1f83854dbd79b6e958b3bc5018607e2542971d41604ba7a14b2f/diffusers-0.36.0-py3-none-any.whl", hash = "sha256:525d42abc74bfc3b2db594999961295c054b48ef40a11724dacf50e6abd1af98", size = 4597884, upload-time = "2025-12-08T10:14:31.979Z" }, -] - [[package]] name = "dill" version = "0.3.8" @@ -2172,19 +2143,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86", size = 37515, upload-time = "2025-04-24T03:35:24.344Z" }, ] -[[package]] -name = "h2" -version = "4.3.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "hpack" }, - { name = "hyperframe" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/1d/17/afa56379f94ad0fe8defd37d6eb3f89a25404ffc71d4d848893d270325fc/h2-4.3.0.tar.gz", hash = "sha256:6c59efe4323fa18b47a632221a1888bd7fde6249819beda254aeca909f221bf1", size = 2152026, upload-time = "2025-08-23T18:12:19.778Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/69/b2/119f6e6dcbd96f9069ce9a2665e0146588dc9f88f29549711853645e736a/h2-4.3.0-py3-none-any.whl", hash = "sha256:c438f029a25f7945c69e0ccf0fb951dc3f73a5f6412981daee861431b70e2bdd", size = 61779, upload-time = "2025-08-23T18:12:17.779Z" }, -] - [[package]] name = "hatchling" version = "1.27.0" @@ -2215,15 +2173,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/9e/d3/0aaf279f4f3dea58e99401b92c31c0f752924ba0e6c7d7bb07b1dbd7f35e/hf_xet-1.1.8-cp37-abi3-win_amd64.whl", hash = "sha256:4171f31d87b13da4af1ed86c98cf763292e4720c088b4957cf9d564f92904ca9", size = 2801689, upload-time = "2025-08-18T22:01:04.81Z" }, ] -[[package]] -name = "hpack" -version = "4.1.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/2c/48/71de9ed269fdae9c8057e5a4c0aa7402e8bb16f2c6e90b3aa53327b113f8/hpack-4.1.0.tar.gz", hash = "sha256:ec5eca154f7056aa06f196a557655c5b009b382873ac8d1e66e79e87535f1dca", size = 51276, upload-time = "2025-01-22T21:44:58.347Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/07/c6/80c95b1b2b94682a72cbdbfb85b81ae2daffa4291fbfa1b1464502ede10d/hpack-4.1.0-py3-none-any.whl", hash = "sha256:157ac792668d995c657d93111f46b4535ed114f0c9c8d672271bbec7eae1b496", size = 34357, upload-time = "2025-01-22T21:44:56.92Z" }, -] - [[package]] name = "httpcore" version = "1.0.9" @@ -2274,11 +2223,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad", size = 73517, upload-time = "2024-12-06T15:37:21.509Z" }, ] -[package.optional-dependencies] -http2 = [ - { name = "h2" }, -] - [[package]] name = "huggingface-hub" version = "0.34.4" @@ -2312,15 +2256,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/c6/50/e0edd38dcd63fb26a8547f13d28f7a008bc4a3fd4eb4ff030673f22ad41a/hydra_core-1.3.2-py3-none-any.whl", hash = "sha256:fa0238a9e31df3373b35b0bfb672c34cc92718d21f81311d8996a16de1141d8b", size = 154547, upload-time = "2023-02-23T18:33:40.801Z" }, ] -[[package]] -name = "hyperframe" -version = "6.1.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/02/e7/94f8232d4a74cc99514c13a9f995811485a6903d48e5d952771ef6322e30/hyperframe-6.1.0.tar.gz", hash = "sha256:f630908a00854a7adeabd6382b43923a4c4cd4b821fcb527e6ab9e15382a3b08", size = 26566, upload-time = "2025-01-22T21:41:49.302Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/48/30/47d0bf6072f7252e6521f3447ccfa40b421b6824517f82854703d0f5a98b/hyperframe-6.1.0-py3-none-any.whl", hash = "sha256:b03380493a519fce58ea5af42e4a42317bf9bd425596f7a0835ffce80f1a42e5", size = 13007, upload-time = "2025-01-22T21:41:47.295Z" }, -] - [[package]] name = "identify" version = "2.6.13" @@ -2339,20 +2274,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3", size = 70442, upload-time = "2024-09-15T18:07:37.964Z" }, ] -[[package]] -name = "imageio-ffmpeg" -version = "0.6.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/44/bd/c3343c721f2a1b0c9fc71c1aebf1966a3b7f08c2eea8ed5437a2865611d6/imageio_ffmpeg-0.6.0.tar.gz", hash = "sha256:e2556bed8e005564a9f925bb7afa4002d82770d6b08825078b7697ab88ba1755", size = 25210, upload-time = "2025-01-16T21:34:32.747Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/da/58/87ef68ac83f4c7690961bce288fd8e382bc5f1513860fc7f90a9c1c1c6bf/imageio_ffmpeg-0.6.0-py3-none-macosx_10_9_intel.macosx_10_9_x86_64.whl", hash = "sha256:9d2baaf867088508d4a3458e61eeb30e945c4ad8016025545f66c4b5aaef0a61", size = 24932969, upload-time = "2025-01-16T21:34:20.464Z" }, - { url = "https://files.pythonhosted.org/packages/40/5c/f3d8a657d362cc93b81aab8feda487317da5b5d31c0e1fdfd5e986e55d17/imageio_ffmpeg-0.6.0-py3-none-macosx_11_0_arm64.whl", hash = "sha256:b1ae3173414b5fc5f538a726c4e48ea97edc0d2cdc11f103afee655c463fa742", size = 21113891, upload-time = "2025-01-16T21:34:00.277Z" }, - { url = "https://files.pythonhosted.org/packages/33/e7/1925bfbc563c39c1d2e82501d8372734a5c725e53ac3b31b4c2d081e895b/imageio_ffmpeg-0.6.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:1d47bebd83d2c5fc770720d211855f208af8a596c82d17730aa51e815cdee6dc", size = 25632706, upload-time = "2025-01-16T21:33:53.475Z" }, - { url = "https://files.pythonhosted.org/packages/a0/2d/43c8522a2038e9d0e7dbdf3a61195ecc31ca576fb1527a528c877e87d973/imageio_ffmpeg-0.6.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:c7e46fcec401dd990405049d2e2f475e2b397779df2519b544b8aab515195282", size = 29498237, upload-time = "2025-01-16T21:34:13.726Z" }, - { url = "https://files.pythonhosted.org/packages/a0/13/59da54728351883c3c1d9fca1710ab8eee82c7beba585df8f25ca925f08f/imageio_ffmpeg-0.6.0-py3-none-win32.whl", hash = "sha256:196faa79366b4a82f95c0f4053191d2013f4714a715780f0ad2a68ff37483cc2", size = 19652251, upload-time = "2025-01-16T21:34:06.812Z" }, - { url = "https://files.pythonhosted.org/packages/2c/c6/fa760e12a2483469e2bf5058c5faff664acf66cadb4df2ad6205b016a73d/imageio_ffmpeg-0.6.0-py3-none-win_amd64.whl", hash = "sha256:02fa47c83703c37df6bfe4896aab339013f62bf02c5ebf2dce6da56af04ffc0a", size = 31246824, upload-time = "2025-01-16T21:34:28.6Z" }, -] - [[package]] name = "imagesize" version = "1.4.1" @@ -2614,44 +2535,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/ab/60/dfbbf40e3a371388c0e03ff65b01319b7d4023e883df6d7261125772ffdc/latex2sympy2_extended-1.10.2-py3-none-any.whl", hash = "sha256:f910442c5b02a466c1046f47d05cc5285181068b882399281f30102715337fb7", size = 207855, upload-time = "2025-07-02T15:26:04.88Z" }, ] -[[package]] -name = "lazy-loader" -version = "0.4" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "packaging" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/6f/6b/c875b30a1ba490860c93da4cabf479e03f584eba06fe5963f6f6644653d8/lazy_loader-0.4.tar.gz", hash = "sha256:47c75182589b91a4e1a85a136c074285a5ad4d9f39c63e0d7fb76391c4574cd1", size = 15431, upload-time = "2024-04-05T13:03:12.261Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/83/60/d497a310bde3f01cb805196ac61b7ad6dc5dcf8dce66634dc34364b20b4f/lazy_loader-0.4-py3-none-any.whl", hash = "sha256:342aa8e14d543a154047afb4ba8ef17f5563baad3fc610d7b15b213b0f119efc", size = 12097, upload-time = "2024-04-05T13:03:10.514Z" }, -] - -[[package]] -name = "librosa" -version = "0.11.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "audioread" }, - { name = "decorator" }, - { name = "joblib" }, - { name = "lazy-loader" }, - { name = "msgpack" }, - { name = "numba" }, - { name = "numpy" }, - { name = "pooch" }, - { name = "scikit-learn" }, - { name = "scipy" }, - { name = "soundfile" }, - { name = "soxr" }, - { name = "standard-aifc", marker = "python_full_version >= '3.13'" }, - { name = "standard-sunau", marker = "python_full_version >= '3.13'" }, - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/64/36/360b5aafa0238e29758729e9486c6ed92a6f37fa403b7875e06c115cdf4a/librosa-0.11.0.tar.gz", hash = "sha256:f5ed951ca189b375bbe2e33b2abd7e040ceeee302b9bbaeeffdfddb8d0ace908", size = 327001, upload-time = "2025-03-11T15:09:54.884Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b5/ba/c63c5786dfee4c3417094c4b00966e61e4a63efecee22cb7b4c0387dda83/librosa-0.11.0-py3-none-any.whl", hash = "sha256:0b6415c4fd68bff4c29288abe67c6d80b587e0e1e2cfb0aad23e4559504a7fa1", size = 260749, upload-time = "2025-03-11T15:09:52.982Z" }, -] - [[package]] name = "liger-kernel" version = "0.6.2" @@ -3516,14 +3399,10 @@ wheels = [ name = "nemo-automodel" source = { editable = "3rdparty/Automodel-workspace/Automodel" } dependencies = [ + { name = "bitsandbytes", marker = "platform_machine == 'x86_64' and sys_platform != 'darwin'" }, { name = "datasets" }, - { name = "diffusers" }, - { name = "ftfy" }, - { name = "imageio-ffmpeg" }, { name = "liger-kernel", marker = "platform_machine == 'x86_64' and sys_platform != 'darwin'" }, { name = "megatron-fsdp" }, - { name = "mlflow" }, - { name = "opencv-python-headless" }, { name = "pybind11" }, { name = "pyyaml" }, { name = "torch", version = "2.9.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, @@ -3535,28 +3414,11 @@ dependencies = [ ] [package.optional-dependencies] -all = [ - { name = "backoff" }, - { name = "flash-linear-attention" }, - { name = "mistral-common", extra = ["opencv"] }, - { name = "numba" }, - { name = "numpy" }, - { name = "perceptron" }, - { name = "pillow" }, - { name = "qwen-omni-utils" }, - { name = "qwen-vl-utils", extra = ["decord"], marker = "platform_machine == 'x86_64' and sys_platform != 'darwin'" }, - { name = "sentencepiece" }, - { name = "timm" }, - { name = "torchcodec", marker = "platform_machine == 'x86_64' and sys_platform != 'darwin'" }, -] -cuda = [ +fa = [ { name = "flash-attn" }, - { name = "transformer-engine", extra = ["pytorch"] }, ] -extra = [ - { name = "flash-linear-attention" }, - { name = "perceptron" }, - { name = "sentencepiece" }, +moe = [ + { name = "transformer-engine", extra = ["pytorch"] }, ] vlm = [ { name = "backoff" }, @@ -3564,10 +3426,10 @@ vlm = [ { name = "numba" }, { name = "numpy" }, { name = "pillow" }, - { name = "qwen-omni-utils" }, - { name = "qwen-vl-utils", extra = ["decord"], marker = "platform_machine == 'x86_64' and sys_platform != 'darwin'" }, + { name = "qwen-vl-utils", extra = ["decord"] }, { name = "timm" }, - { name = "torchcodec", marker = "platform_machine == 'x86_64' and sys_platform != 'darwin'" }, + { name = "torchcodec" }, + { name = "transformers" }, ] [package.dev-dependencies] @@ -3601,39 +3463,30 @@ test = [ [package.metadata] requires-dist = [ { name = "backoff", marker = "extra == 'vlm'" }, + { name = "bitsandbytes", marker = "platform_machine == 'x86_64' and sys_platform != 'darwin'", specifier = "==0.45.5" }, { name = "datasets", specifier = ">=4.0.0" }, - { name = "diffusers" }, - { name = "flash-attn", marker = "extra == 'cuda'", specifier = "<=2.8.3" }, - { name = "flash-linear-attention", marker = "extra == 'extra'" }, - { name = "ftfy" }, - { name = "imageio-ffmpeg" }, + { name = "flash-attn", marker = "extra == 'fa'", specifier = "<=2.8.3" }, { name = "liger-kernel", marker = "platform_machine == 'x86_64' and sys_platform != 'darwin'", specifier = ">=0.5.9" }, { name = "megatron-fsdp" }, { name = "mistral-common", extras = ["opencv"], marker = "extra == 'vlm'" }, - { name = "mlflow" }, - { name = "nemo-automodel", extras = ["extra"], marker = "extra == 'all'", editable = "3rdparty/Automodel-workspace/Automodel" }, - { name = "nemo-automodel", extras = ["vlm"], marker = "extra == 'all'", editable = "3rdparty/Automodel-workspace/Automodel" }, { name = "numba", marker = "extra == 'vlm'" }, { name = "numpy", marker = "extra == 'vlm'" }, - { name = "opencv-python-headless", specifier = "==4.10.0.84" }, - { name = "perceptron", marker = "extra == 'extra'" }, { name = "pillow", marker = "extra == 'vlm'" }, { name = "pybind11" }, { name = "pyyaml" }, - { name = "qwen-omni-utils", marker = "extra == 'vlm'" }, - { name = "qwen-vl-utils", extras = ["decord"], marker = "platform_machine == 'x86_64' and sys_platform != 'darwin' and extra == 'vlm'" }, - { name = "sentencepiece", marker = "extra == 'extra'" }, - { name = "timm", marker = "extra == 'vlm'", specifier = "<=1.0.22" }, + { name = "qwen-vl-utils", extras = ["decord"], marker = "extra == 'vlm'" }, + { name = "timm", marker = "extra == 'vlm'", specifier = "==1.0.16" }, { name = "torch", marker = "sys_platform != 'darwin'", specifier = "<=2.9.0", index = "https://download.pytorch.org/whl/cu129" }, { name = "torch", marker = "sys_platform == 'darwin'", specifier = "<=2.9.0", index = "https://pypi.org/simple" }, - { name = "torchao" }, - { name = "torchcodec", marker = "platform_machine == 'x86_64' and sys_platform != 'darwin' and extra == 'vlm'" }, + { name = "torchao", specifier = "==0.14.1" }, + { name = "torchcodec", marker = "extra == 'vlm'" }, { name = "torchdata" }, - { name = "transformer-engine", extras = ["pytorch"], marker = "extra == 'cuda'", specifier = "==2.8.0" }, - { name = "transformers", specifier = "<=4.57.3" }, + { name = "transformer-engine", extras = ["pytorch"], marker = "extra == 'moe'", specifier = "==2.8.0" }, + { name = "transformers", specifier = "<=4.57.1" }, + { name = "transformers", marker = "extra == 'vlm'", specifier = "<=4.57.1" }, { name = "wandb" }, ] -provides-extras = ["cuda", "extra", "vlm", "all"] +provides-extras = ["vlm", "fa", "moe"] [package.metadata.requires-dev] build = [ @@ -3833,6 +3686,7 @@ requires-dist = [ { name = "debugpy" }, { name = "deep-ep", marker = "extra == 'mcore'", git = "https://github.com/deepseek-ai/DeepEP.git?rev=e3908bf5bd0cc6265bcb225d15cd8c996d4759ef" }, { name = "deep-ep", marker = "extra == 'automodel'", git = "https://github.com/deepseek-ai/DeepEP.git?rev=bfded34800dfec415b71503f8205181de90b2480" }, + { name = "deep-ep", marker = "extra == 'mcore'", git = "https://github.com/deepseek-ai/DeepEP.git?rev=bfded34800dfec415b71503f8205181de90b2480" }, { name = "deep-ep", marker = "extra == 'vllm'", git = "https://github.com/deepseek-ai/DeepEP.git?rev=bfded34800dfec415b71503f8205181de90b2480" }, { name = "deep-gemm", marker = "extra == 'vllm'", git = "https://github.com/deepseek-ai/DeepGEMM.git?rev=7b6b5563b9d4c1ae07ffbce7f78ad3ac9204827c" }, { name = "flash-attn", marker = "extra == 'automodel'", specifier = "==2.8.1" }, @@ -4686,24 +4540,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/49/fe/a2da1627aa9cb6310b6034598363bd26ac301c4a99d21f415b1b2855891e/peft-0.17.1-py3-none-any.whl", hash = "sha256:3d129d64def3d74779c32a080d2567e5f7b674e77d546e3585138216d903f99e", size = 504896, upload-time = "2025-08-21T09:25:18.974Z" }, ] -[[package]] -name = "perceptron" -version = "0.1.4" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "colorama" }, - { name = "httpx", extra = ["http2"] }, - { name = "numpy" }, - { name = "pillow" }, - { name = "rich" }, - { name = "shellingham" }, - { name = "typer" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/30/60/85db2243d8b550823603d8f9c5845b0dd0f01074e9aabf0b2af0c4f52565/perceptron-0.1.4.tar.gz", hash = "sha256:62fd190efb74925e2cc33c0cd38761e19959be3bdb7b24fbf9e3386d6961f690", size = 78116, upload-time = "2025-11-12T20:00:28.024Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ef/17/b7cb1a10ebb0a9a4c9fbcd96a28b43d44e08a90f620bab07e644a658d2f1/perceptron-0.1.4-py3-none-any.whl", hash = "sha256:f490a6df6c15167e91e1a528601cae98ce99a30991cf792f9ef83ebc15d335c4", size = 57421, upload-time = "2025-11-12T20:00:26.395Z" }, -] - [[package]] name = "pillow" version = "11.3.0" @@ -4810,20 +4646,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746", size = 20538, upload-time = "2025-05-15T12:30:06.134Z" }, ] -[[package]] -name = "pooch" -version = "1.8.2" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "packaging" }, - { name = "platformdirs" }, - { name = "requests" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/c6/77/b3d3e00c696c16cf99af81ef7b1f5fe73bd2a307abca41bd7605429fe6e5/pooch-1.8.2.tar.gz", hash = "sha256:76561f0de68a01da4df6af38e9955c4c9d1a5c90da73f7e40276a5728ec83d10", size = 59353, upload-time = "2024-06-06T16:53:46.224Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a8/87/77cc11c7a9ea9fd05503def69e3d18605852cd0d4b0d3b8f15bbeb3ef1d1/pooch-1.8.2-py3-none-any.whl", hash = "sha256:3529a57096f7198778a5ceefd5ac3ef0e4d06a6ddaf9fc2d609b806f25302c47", size = 64574, upload-time = "2024-06-06T16:53:44.343Z" }, -] - [[package]] name = "pre-commit" version = "4.3.0" @@ -5625,22 +5447,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/89/32/3836ed85947b06f1d67c07ce16c00b0cf8c053ab0b249d234f9f81ff95ff/pyzmq-27.0.1-cp314-cp314t-win_arm64.whl", hash = "sha256:0fc24bf45e4a454e55ef99d7f5c8b8712539200ce98533af25a5bfa954b6b390", size = 575098, upload-time = "2025-08-03T05:04:27.974Z" }, ] -[[package]] -name = "qwen-omni-utils" -version = "0.0.8" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "av" }, - { name = "librosa" }, - { name = "packaging" }, - { name = "pillow" }, - { name = "requests" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/b8/b1/cc58b03b5eadddc0812cef884d013ed6cc66b09f9b0f5b45123f89dcd056/qwen_omni_utils-0.0.8.tar.gz", hash = "sha256:b5808673e1455f4115cb784a62cdc8e8616576221a01fc738610b0f9268cb33c", size = 8145, upload-time = "2025-06-12T11:02:05.411Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a1/b1/dcdd69246a3c3c3bd6f6ced58e2307b3afbd894c4412c29fd49dd897e562/qwen_omni_utils-0.0.8-py3-none-any.whl", hash = "sha256:c42bcc633fbfd84d565ff0de9d45fae68a6b57a9b7b97a4b77eda71a0d3ee73a", size = 9218, upload-time = "2025-06-12T11:02:03.981Z" }, -] - [[package]] name = "qwen-vl-utils" version = "0.0.11" @@ -5658,7 +5464,7 @@ wheels = [ [package.optional-dependencies] decord = [ - { name = "decord", marker = "(platform_machine != 'aarch64' and sys_platform != 'darwin') or sys_platform == 'win32'" }, + { name = "decord" }, ] [[package]] @@ -6398,27 +6204,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/e7/9c/0e6afc12c269578be5c0c1c9f4b49a8d32770a080260c333ac04cc1c832d/soupsieve-2.7-py3-none-any.whl", hash = "sha256:6e60cc5c1ffaf1cebcc12e8188320b72071e922c2e897f737cadce79ad5d30c4", size = 36677, upload-time = "2025-04-20T18:50:07.196Z" }, ] -[[package]] -name = "soxr" -version = "1.0.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "numpy" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/42/7e/f4b461944662ad75036df65277d6130f9411002bfb79e9df7dff40a31db9/soxr-1.0.0.tar.gz", hash = "sha256:e07ee6c1d659bc6957034f4800c60cb8b98de798823e34d2a2bba1caa85a4509", size = 171415, upload-time = "2025-09-07T13:22:21.317Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/c5/c7/f92b81f1a151c13afb114f57799b86da9330bec844ea5a0d3fe6a8732678/soxr-1.0.0-cp312-abi3-macosx_10_14_x86_64.whl", hash = "sha256:abecf4e39017f3fadb5e051637c272ae5778d838e5c3926a35db36a53e3a607f", size = 205508, upload-time = "2025-09-07T13:22:01.252Z" }, - { url = "https://files.pythonhosted.org/packages/ff/1d/c945fea9d83ea1f2be9d116b3674dbaef26ed090374a77c394b31e3b083b/soxr-1.0.0-cp312-abi3-macosx_11_0_arm64.whl", hash = "sha256:e973d487ee46aa8023ca00a139db6e09af053a37a032fe22f9ff0cc2e19c94b4", size = 163568, upload-time = "2025-09-07T13:22:03.558Z" }, - { url = "https://files.pythonhosted.org/packages/b5/80/10640970998a1d2199bef6c4d92205f36968cddaf3e4d0e9fe35ddd405bd/soxr-1.0.0-cp312-abi3-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e8ce273cca101aff3d8c387db5a5a41001ba76ef1837883438d3c652507a9ccc", size = 204707, upload-time = "2025-09-07T13:22:05.125Z" }, - { url = "https://files.pythonhosted.org/packages/b1/87/2726603c13c2126cb8ded9e57381b7377f4f0df6ba4408e1af5ddbfdc3dd/soxr-1.0.0-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e8f2a69686f2856d37823bbb7b78c3d44904f311fe70ba49b893af11d6b6047b", size = 238032, upload-time = "2025-09-07T13:22:06.428Z" }, - { url = "https://files.pythonhosted.org/packages/ce/04/530252227f4d0721a5524a936336485dfb429bb206a66baf8e470384f4a2/soxr-1.0.0-cp312-abi3-win_amd64.whl", hash = "sha256:2a3b77b115ae7c478eecdbd060ed4f61beda542dfb70639177ac263aceda42a2", size = 172070, upload-time = "2025-09-07T13:22:07.62Z" }, - { url = "https://files.pythonhosted.org/packages/99/77/d3b3c25b4f1b1aa4a73f669355edcaee7a52179d0c50407697200a0e55b9/soxr-1.0.0-cp314-cp314t-macosx_10_14_x86_64.whl", hash = "sha256:392a5c70c04eb939c9c176bd6f654dec9a0eaa9ba33d8f1024ed63cf68cdba0a", size = 209509, upload-time = "2025-09-07T13:22:08.773Z" }, - { url = "https://files.pythonhosted.org/packages/8a/ee/3ca73e18781bb2aff92b809f1c17c356dfb9a1870652004bd432e79afbfa/soxr-1.0.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:fdc41a1027ba46777186f26a8fba7893be913383414135577522da2fcc684490", size = 167690, upload-time = "2025-09-07T13:22:10.259Z" }, - { url = "https://files.pythonhosted.org/packages/bd/f0/eea8b5f587a2531657dc5081d2543a5a845f271a3bea1c0fdee5cebde021/soxr-1.0.0-cp314-cp314t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:449acd1dfaf10f0ce6dfd75c7e2ef984890df94008765a6742dafb42061c1a24", size = 209541, upload-time = "2025-09-07T13:22:11.739Z" }, - { url = "https://files.pythonhosted.org/packages/64/59/2430a48c705565eb09e78346950b586f253a11bd5313426ced3ecd9b0feb/soxr-1.0.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:38b35c99e408b8f440c9376a5e1dd48014857cd977c117bdaa4304865ae0edd0", size = 243025, upload-time = "2025-09-07T13:22:12.877Z" }, - { url = "https://files.pythonhosted.org/packages/3c/1b/f84a2570a74094e921bbad5450b2a22a85d58585916e131d9b98029c3e69/soxr-1.0.0-cp314-cp314t-win_amd64.whl", hash = "sha256:a39b519acca2364aa726b24a6fd55acf29e4c8909102e0b858c23013c38328e5", size = 184850, upload-time = "2025-09-07T13:22:14.068Z" }, -] - [[package]] name = "sphinx" version = "8.2.3" @@ -6606,40 +6391,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/a9/5c/bfd6bd0bf979426d405cc6e71eceb8701b148b16c21d2dc3c261efc61c7b/sqlparse-0.5.3-py3-none-any.whl", hash = "sha256:cf2196ed3418f3ba5de6af7e82c694a9fbdbfecccdfc72e281548517081f16ca", size = 44415, upload-time = "2024-12-10T12:05:27.824Z" }, ] -[[package]] -name = "standard-aifc" -version = "3.13.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "audioop-lts", marker = "python_full_version >= '3.13'" }, - { name = "standard-chunk", marker = "python_full_version >= '3.13'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/c4/53/6050dc3dde1671eb3db592c13b55a8005e5040131f7509cef0215212cb84/standard_aifc-3.13.0.tar.gz", hash = "sha256:64e249c7cb4b3daf2fdba4e95721f811bde8bdfc43ad9f936589b7bb2fae2e43", size = 15240, upload-time = "2024-10-30T16:01:31.772Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/c3/52/5fbb203394cc852334d1575cc020f6bcec768d2265355984dfd361968f36/standard_aifc-3.13.0-py3-none-any.whl", hash = "sha256:f7ae09cc57de1224a0dd8e3eb8f73830be7c3d0bc485de4c1f82b4a7f645ac66", size = 10492, upload-time = "2024-10-30T16:01:07.071Z" }, -] - -[[package]] -name = "standard-chunk" -version = "3.13.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/43/06/ce1bb165c1f111c7d23a1ad17204d67224baa69725bb6857a264db61beaf/standard_chunk-3.13.0.tar.gz", hash = "sha256:4ac345d37d7e686d2755e01836b8d98eda0d1a3ee90375e597ae43aaf064d654", size = 4672, upload-time = "2024-10-30T16:18:28.326Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/7a/90/a5c1084d87767d787a6caba615aa50dc587229646308d9420c960cb5e4c0/standard_chunk-3.13.0-py3-none-any.whl", hash = "sha256:17880a26c285189c644bd5bd8f8ed2bdb795d216e3293e6dbe55bbd848e2982c", size = 4944, upload-time = "2024-10-30T16:18:26.694Z" }, -] - -[[package]] -name = "standard-sunau" -version = "3.13.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "audioop-lts", marker = "python_full_version >= '3.13'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/66/e3/ce8d38cb2d70e05ffeddc28bb09bad77cfef979eb0a299c9117f7ed4e6a9/standard_sunau-3.13.0.tar.gz", hash = "sha256:b319a1ac95a09a2378a8442f403c66f4fd4b36616d6df6ae82b8e536ee790908", size = 9368, upload-time = "2024-10-30T16:01:41.626Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/34/ae/e3707f6c1bc6f7aa0df600ba8075bfb8a19252140cd595335be60e25f9ee/standard_sunau-3.13.0-py3-none-any.whl", hash = "sha256:53af624a9529c41062f4c2fd33837f297f3baa196b0cfceffea6555654602622", size = 7364, upload-time = "2024-10-30T16:01:28.003Z" }, -] - [[package]] name = "starlette" version = "0.50.0" @@ -7072,7 +6823,9 @@ name = "torchcodec" version = "0.6.0" source = { registry = "https://pypi.org/simple" } wheels = [ + { url = "https://files.pythonhosted.org/packages/d9/b3/11326a0e7a3c803a95975cfce4ac88fa4ea1a0d432bb876081046c5a5554/torchcodec-0.6.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:fba260145a239b5afe13336e3a5bc1b089c9c31a073e9a7c2026d4cbd853fdd9", size = 3482584, upload-time = "2025-08-07T08:51:32.535Z" }, { url = "https://files.pythonhosted.org/packages/a7/d1/3f90561df013f6a015ef19de22726b64073fee405f53d3c4b8255ab05a67/torchcodec-0.6.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:fdef91a17fb1f1a159ce23710324a9a4e6d6a885275de73700f94a9ad562c6b2", size = 1370954, upload-time = "2025-08-07T08:51:15.021Z" }, + { url = "https://files.pythonhosted.org/packages/87/d0/0b5dd42652e4527d578e1d6239dbb907bf83e502115e517b83a55d8b7f8b/torchcodec-0.6.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:de20cab5df7fa7cdd74ec1dc0d508324685573f86de6789f0ebb860b7ea20b33", size = 3446017, upload-time = "2025-08-07T08:51:34.484Z" }, { url = "https://files.pythonhosted.org/packages/97/62/a938334e39101d4304619b90847d8aef7d1c607c6bcf33638f72931ae990/torchcodec-0.6.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:46dab701a2d809e975a8b07d7ee47ed34f1d903511e374c74cfc1de6a5ab0e3f", size = 1374794, upload-time = "2025-08-07T08:51:17.355Z" }, ] From 78917e08dd1617a68b15e7dbf5da910614b84221 Mon Sep 17 00:00:00 2001 From: Parth Mannan Date: Sun, 4 Jan 2026 08:32:56 -0800 Subject: [PATCH 24/52] Lint fix Signed-off-by: Parth Mannan --- nemo_rl/models/policy/workers/megatron_policy_worker.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/nemo_rl/models/policy/workers/megatron_policy_worker.py b/nemo_rl/models/policy/workers/megatron_policy_worker.py index 3a9b855d1b..0f9dfa03fc 100644 --- a/nemo_rl/models/policy/workers/megatron_policy_worker.py +++ b/nemo_rl/models/policy/workers/megatron_policy_worker.py @@ -594,9 +594,7 @@ def __init__( model_cfg.moe_router_bias_update_rate = self.cfg["megatron_cfg"][ "moe_router_bias_update_rate" ] - model_cfg.moe_enable_deepep = self.cfg["megatron_cfg"][ - "moe_enable_deepep" - ] + model_cfg.moe_enable_deepep = self.cfg["megatron_cfg"]["moe_enable_deepep"] model_cfg.moe_token_dispatcher_type = self.cfg["megatron_cfg"][ "moe_token_dispatcher_type" ] From 78d182c2f2d7b10a60a15d40fb3716f39d930c89 Mon Sep 17 00:00:00 2001 From: alexchiu Date: Fri, 2 Jan 2026 16:03:00 +0800 Subject: [PATCH 25/52] fix: Fix DTensor slice crash after PyTorch 2.9 bump (#1689) Signed-off-by: Zhaopeng Qiu Signed-off-by: Parth Mannan --- nemo_rl/algorithms/loss_functions.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/nemo_rl/algorithms/loss_functions.py b/nemo_rl/algorithms/loss_functions.py index 5e9afe15d1..459181c899 100755 --- a/nemo_rl/algorithms/loss_functions.py +++ b/nemo_rl/algorithms/loss_functions.py @@ -922,11 +922,12 @@ def __call__( if context_parallel_group is None else torch.distributed.get_world_size(context_parallel_group) ) - logit_slice_idxs = slice( - seq_start // cp_size, - (seq_start + padded_seq_lengths[seq_idx]) // cp_size, + logit_start = seq_start // cp_size + logit_end = (seq_start + padded_seq_lengths[seq_idx]) // cp_size + logit_length = logit_end - logit_start + next_token_logits_slice = next_token_logits.narrow( + 1, logit_start, logit_length ) - next_token_logits_slice = next_token_logits[:, logit_slice_idxs, :] loss, metrics = self.loss_fn( next_token_logits_slice, From 71a7fa84b9e19f9df623fcf85ae2d92849932180 Mon Sep 17 00:00:00 2001 From: Hemil Desai Date: Sun, 4 Jan 2026 22:56:07 -0800 Subject: [PATCH 26/52] fix: grad norm check for automodel gpt oss nightly (#1708) Signed-off-by: Hemil Desai Signed-off-by: Parth Mannan --- .../test_suites/llm/sft-gpt-oss-20b-1n8g-fsdp8ep8-automodel.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/test_suites/llm/sft-gpt-oss-20b-1n8g-fsdp8ep8-automodel.sh b/tests/test_suites/llm/sft-gpt-oss-20b-1n8g-fsdp8ep8-automodel.sh index 24b5977f7e..9f48544b42 100755 --- a/tests/test_suites/llm/sft-gpt-oss-20b-1n8g-fsdp8ep8-automodel.sh +++ b/tests/test_suites/llm/sft-gpt-oss-20b-1n8g-fsdp8ep8-automodel.sh @@ -36,5 +36,6 @@ if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | ma uv run tests/check_metrics.py $JSON_METRICS \ 'data["train/loss"]["1"] < 7.0' \ 'data["train/loss"]["50"] < 0.4' \ - 'data["train/grad_norm"]["50"] < 2.5' + 'data["train/grad_norm"]["50"] < 17.5' \ + 'data["train/grad_norm"]["50"] > 10.0' fi From 8c492ff832888e1113eaaba58431707f139c1b99 Mon Sep 17 00:00:00 2001 From: Rayen Date: Mon, 5 Jan 2026 20:11:26 +0800 Subject: [PATCH 27/52] fix: relax nanov3 nightly test metrics strict (#1712) Signed-off-by: ruit Signed-off-by: Parth Mannan --- tests/test_suites/llm/sft-nanov3-30BA3B-2n8g-fsdp2-lora.sh | 2 +- tests/test_suites/llm/sft-nanov3-30BA3B-2n8g-fsdp2.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/test_suites/llm/sft-nanov3-30BA3B-2n8g-fsdp2-lora.sh b/tests/test_suites/llm/sft-nanov3-30BA3B-2n8g-fsdp2-lora.sh index f20120f158..445dc48b5a 100755 --- a/tests/test_suites/llm/sft-nanov3-30BA3B-2n8g-fsdp2-lora.sh +++ b/tests/test_suites/llm/sft-nanov3-30BA3B-2n8g-fsdp2-lora.sh @@ -33,6 +33,6 @@ uv run tests/json_dump_tb_logs.py $LOG_DIR --output_path $JSON_METRICS # Only run metrics if the target step is reached if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | map(tonumber) | max' $JSON_METRICS) -ge $MAX_STEPS ]]; then uv run tests/check_metrics.py $JSON_METRICS \ - 'data["train/loss"]["20"] < 2.03' \ + 'data["train/loss"]["20"] < 2.05' \ 'mean(data["timing/train/total_step_time"], 2) < 18' fi diff --git a/tests/test_suites/llm/sft-nanov3-30BA3B-2n8g-fsdp2.sh b/tests/test_suites/llm/sft-nanov3-30BA3B-2n8g-fsdp2.sh index 90eda7713f..ec0e22bf6b 100755 --- a/tests/test_suites/llm/sft-nanov3-30BA3B-2n8g-fsdp2.sh +++ b/tests/test_suites/llm/sft-nanov3-30BA3B-2n8g-fsdp2.sh @@ -33,6 +33,6 @@ uv run tests/json_dump_tb_logs.py $LOG_DIR --output_path $JSON_METRICS # Only run metrics if the target step is reached if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | map(tonumber) | max' $JSON_METRICS) -ge $MAX_STEPS ]]; then uv run tests/check_metrics.py $JSON_METRICS \ - 'data["train/loss"]["20"] < 1.98' \ + 'data["train/loss"]["20"] < 2.05' \ 'mean(data["timing/train/total_step_time"], 2) < 15' fi From 40511230cd928e08cc63489c6a7f6b0bf5b902d3 Mon Sep 17 00:00:00 2001 From: Guyue Huang <140554423+guyueh1@users.noreply.github.com> Date: Mon, 5 Jan 2026 04:11:34 -0800 Subject: [PATCH 28/52] fix: on GB200 use single-thread checkpoint save to avoid Cpu OOM (#1703) Signed-off-by: Guyue Huang Signed-off-by: Parth Mannan --- 3rdparty/Megatron-LM-workspace/Megatron-LM | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/3rdparty/Megatron-LM-workspace/Megatron-LM b/3rdparty/Megatron-LM-workspace/Megatron-LM index 25a62edf77..b73ae5cdab 160000 --- a/3rdparty/Megatron-LM-workspace/Megatron-LM +++ b/3rdparty/Megatron-LM-workspace/Megatron-LM @@ -1 +1 @@ -Subproject commit 25a62edf77b5130f888328ca8119d6a76117cf23 +Subproject commit b73ae5cdab9d409fcface2b2f3c375710abe6911 From 3e4bdcff3840ac49801bb66b4b546b170ad6b355 Mon Sep 17 00:00:00 2001 From: Guyue Huang <140554423+guyueh1@users.noreply.github.com> Date: Mon, 5 Jan 2026 12:22:26 -0800 Subject: [PATCH 29/52] perf: [Perf recipe] Change TP 16->32 for deepseek GB200 sync benchmark (#1715) Signed-off-by: Guyue Huang Signed-off-by: Parth Mannan --- .../configs/recipes/llm/performance/grpo-deepseek-v3-32n4g.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/configs/recipes/llm/performance/grpo-deepseek-v3-32n4g.yaml b/examples/configs/recipes/llm/performance/grpo-deepseek-v3-32n4g.yaml index 812fdfae9d..04fc067d6e 100644 --- a/examples/configs/recipes/llm/performance/grpo-deepseek-v3-32n4g.yaml +++ b/examples/configs/recipes/llm/performance/grpo-deepseek-v3-32n4g.yaml @@ -11,7 +11,7 @@ policy: num_layers_in_last_pipeline_stage: 6 generation: vllm_cfg: - tensor_parallel_size: 16 + tensor_parallel_size: 32 logger: log_dir: logs/grpo-deepseek-v3-32n4g wandb: From a2580e231b9873f35606b427487a2dc11525ac4e Mon Sep 17 00:00:00 2001 From: Yi-Fu Wu Date: Mon, 5 Jan 2026 15:53:11 -0800 Subject: [PATCH 30/52] docs: Add doc for nano-v3 (#1694) Signed-off-by: Yi-Fu Wu Signed-off-by: Parth Mannan --- README.md | 2 +- docs/guides/nemotron-3-nano.md | 68 ++++++++++++++++++++++++++++++++++ docs/index.md | 1 + 3 files changed, 70 insertions(+), 1 deletion(-) create mode 100644 docs/guides/nemotron-3-nano.md diff --git a/README.md b/README.md index f68db216e9..a933709256 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ ## 📣 News -* [12/15/2025] NeMo-RL is the framework that trained [NVIDIA-NeMotron-3-Nano-30B-A3B-FP8](https://huggingface.co/nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-FP8)! [Reproducible code here](https://github.com/NVIDIA-NeMo/RL/tree/nano-v3) +* [12/15/2025] NeMo-RL is the framework that trained [NVIDIA-NeMotron-3-Nano-30B-A3B-FP8](https://huggingface.co/nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-FP8)! [This guide](docs/guides/nemotron-3-nano.md) provides reproducible instructions for the post-training process. * [12/1/2025] [Release v0.4.0!](https://github.com/NVIDIA-NeMo/RL/releases/tag/v0.4.0) * First release with official NGC Container [nvcr.io/nvidia/nemo-rl:v0.4.0](https://registry.ngc.nvidia.com/orgs/nvidia/containers/nemo-rl/tags). * 📊 View the release run metrics on [Google Colab](https://colab.research.google.com/drive/1u5lmjHOsYpJqXaeYstjw7Qbzvbo67U0v?usp=sharing) to get a head start on your experimentation. diff --git a/docs/guides/nemotron-3-nano.md b/docs/guides/nemotron-3-nano.md new file mode 100644 index 0000000000..23d493bb40 --- /dev/null +++ b/docs/guides/nemotron-3-nano.md @@ -0,0 +1,68 @@ +# Nemotron 3 Nano + +This guide explains how to post-train the [Nemotron 3 Nano model](https://research.nvidia.com/labs/nemotron/files/NVIDIA-Nemotron-3-Nano-Technical-Report.pdf) using NeMo RL. + +## Download and prepare the data + +```bash +# Download RL data blend +uvx --from huggingface-hub hf download nvidia/Nemotron-3-Nano-RL-Training-Blend --repo-type dataset --local-dir=data + +# Fill in placeholders in dataset +chmod +x data/create_nanov3_jsonl.py +./data/create_nanov3_jsonl.py --input data/train.jsonl --output data/train-full.jsonl + +# Use the last 1000 rows for validation +head -n -1000 data/train-full.jsonl > data/train-split.jsonl +tail -n 1000 data/train-full.jsonl > data/val-split.jsonl +``` + +## Prepare the code +Note that we currently require using the `nano-v3` branch to train Nemotron 3 Nano. +```bash +# Checkout NeMo RL +git clone -b nano-v3 https://github.com/NVIDIA-NeMo/RL.git +cd RL + +# Initialize the submodules +git submodule update --init --recursive +``` + +## Create a launch script + +Create a file named `launch.sh` with the following contents. Be sure to fill in the `DATA_DIR`, `MODEL_CHECKPOINT`, `WANDB_API_KEY`, `SLURM_ACCOUNT`, `SLURM_PARTITION`, `MOUNTS`. Note that the default recipe (`examples/nemo_gym/grpo_nanov3.yaml`) uses 32 nodes. + +```bash +CODE_DIR=$PWD +SLURM_JOB_NAME=nano-v3-rl-training + +# Fill these in +DATA_DIR=... +MODEL_CHECKPOINT=... +WANDB_API_KEY=... +SLURM_ACCOUNT=... +SLURM_PARTITION=... +MOUNTS=... # SRC:DST[,SRC:DST...] e.g., MOUNTS="/lustre:/lustre,/data:/data" + +CONTAINER="nvcr.io/nvidia/nemo-rl:v0.4.0.nemotron_3_nano" +COMMAND="uv run examples/nemo_gym/run_grpo_nemo_gym.py --config examples/nemo_gym/grpo_nanov3.yaml data.train_jsonl_fpath=$DATA_DIR/train-split.jsonl data.validation_jsonl_fpath=$DATA_DIR/val-split.jsonl policy.model_name=$MODEL_CHECKPOINT logger.wandb_enabled=True" + +COMMAND="${COMMAND}" \ +CONTAINER="${CONTAINER}" \ +MOUNTS="${MOUNTS}" \ +WANDB_API_KEY=${WANDB_API_KEY} \ +sbatch \ + --nodes=32 \ + --account="${SLURM_ACCOUNT}" \ + --job-name="${SLURM_JOB_NAME}" \ + --partition="${SLURM_PARTITION}" \ + --time=4:0:0 \ + --gres=gpu:8 \ + ray.sub +``` + + +## Launch training +```bash +bash launch.sh +``` diff --git a/docs/index.md b/docs/index.md index 051893d618..18fd643104 100644 --- a/docs/index.md +++ b/docs/index.md @@ -203,6 +203,7 @@ guides/sft-openmathinstruct2.md :caption: Guides :hidden: +guides/nemotron-3-nano.md adding-new-models.md guides/sft.md guides/dpo.md From 90e14eece6f6b7f8edc268df13e91203f619d0ad Mon Sep 17 00:00:00 2001 From: Yi-Fu Wu Date: Tue, 6 Jan 2026 02:29:08 -0800 Subject: [PATCH 31/52] fix: Disable cudnn sdpa backend when using activation checkpointing (#1717) Signed-off-by: Yi-Fu Wu Signed-off-by: Parth Mannan --- .../workers/dtensor_policy_worker_v2.py | 36 +++++++++++++------ 1 file changed, 25 insertions(+), 11 deletions(-) diff --git a/nemo_rl/models/policy/workers/dtensor_policy_worker_v2.py b/nemo_rl/models/policy/workers/dtensor_policy_worker_v2.py index 738146a7e2..689fdddd30 100644 --- a/nemo_rl/models/policy/workers/dtensor_policy_worker_v2.py +++ b/nemo_rl/models/policy/workers/dtensor_policy_worker_v2.py @@ -183,6 +183,10 @@ def __init__( # - Packed sequence requires FA2 and CP must be 1 # - CP > 1 requires SDPA cp_size_cfg = self.cfg["dtensor_cfg"]["context_parallel_size"] + + # NeMoAutoModelForCausalLM uses flash_attention_2 by default + # so we need to set it to None if sequence packing is disabled + # https://github.com/NVIDIA-NeMo/Automodel/blob/7e748be260651349307862426c0c168cebdeeec3/nemo_automodel/components/_transformers/auto_model.py#L180 attn_impl = ( "flash_attention_2" if (self.enable_seq_packing and cp_size_cfg == 1) @@ -273,23 +277,26 @@ def __init__( automodel_kwargs["use_liger_kernel"] = False with init_empty_weights(): - # NeMoAutoModelForCausalLM uses flash_attention_2 by default - # so we need to set it to None if sequence packing is disabled - # https://github.com/NVIDIA-NeMo/Automodel/blob/7e748be260651349307862426c0c168cebdeeec3/nemo_automodel/components/_transformers/auto_model.py#L180 - if cp_size > 1 or self.cfg["dtensor_cfg"]["activation_checkpointing"]: - # For cp, match Automodel's `get_train_context` in `cp_utils.py` where only + from torch.nn.attention import SDPBackend + + if cp_size > 1: + # Match Automodel's `get_train_context` in `cp_utils.py` where only # flash and efficient backends are supported # Ref: https://github.com/NVIDIA-NeMo/Automodel/blob/81788d6f4848f5f066c4a6a2bece4689a6a83687/nemo_automodel/components/distributed/cp_utils.py#L57 - - # For activation_checkpointing, CUDNN_ATTENTION must be excluded - # since it results in an error: - # "Recomputed values for the following tensors have different metadata than during the forward pass." - from torch.nn.attention import SDPBackend - sdpa_method = [ SDPBackend.FLASH_ATTENTION, SDPBackend.EFFICIENT_ATTENTION, ] + elif self.cfg["dtensor_cfg"]["activation_checkpointing"]: + # For activation checkpointing, we must disable the cudnn SDPA backend because + # it may not be selected during recomputation. + # In that case, we will get the following error: + # "Recomputed values have different metadata than during forward pass." + sdpa_method = [ + SDPBackend.FLASH_ATTENTION, + SDPBackend.EFFICIENT_ATTENTION, + SDPBackend.MATH, + ] else: sdpa_method = None @@ -305,6 +312,13 @@ def __init__( if self.lora_enabled: apply_lora_to_linear_modules(self.model, self.peft_config) + # For activation checkpointing, we also must globally disable the cudnn SDPA backend + # to ensure that cudnn does not get selected during recomputation. + if self.cfg["dtensor_cfg"]["activation_checkpointing"]: + from torch.backends import cuda + + cuda.enable_cudnn_sdp(False) + # Hold a copy of model state_dict keys before any parallelization self.model_state_dict_keys = list(self.model.state_dict().keys()) From 121dcf19fad9a7430f927245ae2b0777affd5759 Mon Sep 17 00:00:00 2001 From: Terry Kong Date: Tue, 6 Jan 2026 14:36:12 -0800 Subject: [PATCH 32/52] fix: log metrics that can be coerced to scalars (#1723) Signed-off-by: Terry Kong Signed-off-by: Parth Mannan --- nemo_rl/utils/logger.py | 31 +++++++---- tests/unit/utils/test_logger.py | 95 +++++++++++++++++++++++++++++++++ 2 files changed, 117 insertions(+), 9 deletions(-) diff --git a/nemo_rl/utils/logger.py b/nemo_rl/utils/logger.py index ed431986dc..f329dd70c7 100644 --- a/nemo_rl/utils/logger.py +++ b/nemo_rl/utils/logger.py @@ -121,6 +121,23 @@ def __init__(self, cfg: TensorboardConfig, log_dir: Optional[str] = None): self.writer = SummaryWriter(log_dir=log_dir) print(f"Initialized TensorboardLogger at {log_dir}") + @staticmethod + def _coerce_to_scalar(value: Any) -> int | float | bool | str | None: + """Coerce a value to a Python scalar for TensorBoard logging. + + Returns the coerced value, or None if it can't be converted to a scalar. + """ + if isinstance(value, (int, float, bool, str)): + return value + if isinstance(value, (np.floating, np.integer, np.bool_)): + return value.item() + if isinstance(value, np.ndarray) and (value.ndim == 0 or value.size == 1): + return value.item() + if isinstance(value, torch.Tensor) and (value.ndim == 0 or value.numel() == 1): + return value.item() + # dict, list, multi-element arrays/tensors, or incompatible types + return None + def log_metrics( self, metrics: dict[str, Any], @@ -137,23 +154,19 @@ def log_metrics( step_metric: Optional step metric name (ignored in TensorBoard) """ for name, value in metrics.items(): - # NeMo-Gym will add additional metrics like wandb histograms. However, some people will log to Tensorboard instead which may not be compatible - # This logic catches non-compatible objects being logged. - if not isinstance(value, (int, float, bool, str)): - continue - if prefix: name = f"{prefix}/{name}" - # Skip non-scalar values that TensorBoard can't handle - if isinstance(value, (dict, list)): + scalar = self._coerce_to_scalar(value) + if scalar is None: print( - f"Warning: Skipping non-scalar metric '{name}' for TensorBoard logging (type: {type(value).__name__})" + f"Warning: Skipping metric '{name}' for TensorBoard logging " + f"(unsupported type: {type(value).__name__})" ) continue try: - self.writer.add_scalar(name, value, step) + self.writer.add_scalar(name, scalar, step) except Exception as e: print(f"Warning: Failed to log metric '{name}' to TensorBoard: {e}") continue diff --git a/tests/unit/utils/test_logger.py b/tests/unit/utils/test_logger.py index 679ccf9a8e..d88137746a 100644 --- a/tests/unit/utils/test_logger.py +++ b/tests/unit/utils/test_logger.py @@ -128,6 +128,101 @@ def test_log_hyperparams(self, mock_summary_writer, temp_dir): "model.hidden_size": 128, } + @patch("nemo_rl.utils.logger.SummaryWriter") + def test_coerce_to_scalar_python_primitives(self, mock_summary_writer, temp_dir): + """Test that Python primitives pass through unchanged.""" + cfg = {"log_dir": temp_dir} + logger = TensorboardLogger(cfg, log_dir=temp_dir) + + assert logger._coerce_to_scalar(42) == 42 + assert logger._coerce_to_scalar(3.14) == 3.14 + assert logger._coerce_to_scalar(True) is True + assert logger._coerce_to_scalar("hello") == "hello" + + @patch("nemo_rl.utils.logger.SummaryWriter") + def test_coerce_to_scalar_numpy_types(self, mock_summary_writer, temp_dir): + """Test that numpy scalar types are coerced to Python primitives.""" + import numpy as np + + cfg = {"log_dir": temp_dir} + logger = TensorboardLogger(cfg, log_dir=temp_dir) + + # numpy scalar types + assert logger._coerce_to_scalar(np.float32(1.5)) == 1.5 + assert logger._coerce_to_scalar(np.float64(2.5)) == 2.5 + assert logger._coerce_to_scalar(np.int32(10)) == 10 + assert logger._coerce_to_scalar(np.int64(20)) == 20 + assert logger._coerce_to_scalar(np.bool_(True)) is True + + # 0-d numpy arrays + assert logger._coerce_to_scalar(np.array(3.14)) == 3.14 + # 1-element numpy arrays + assert logger._coerce_to_scalar(np.array([42])) == 42 + + # Multi-element arrays should return None + assert logger._coerce_to_scalar(np.array([1, 2, 3])) is None + + @patch("nemo_rl.utils.logger.SummaryWriter") + def test_coerce_to_scalar_torch_tensors(self, mock_summary_writer, temp_dir): + """Test that torch scalar tensors are coerced to Python primitives.""" + cfg = {"log_dir": temp_dir} + logger = TensorboardLogger(cfg, log_dir=temp_dir) + + # 0-d tensors + assert logger._coerce_to_scalar(torch.tensor(3.14)) == pytest.approx(3.14) + assert logger._coerce_to_scalar(torch.tensor(42)) == 42 + + # 1-element tensors + assert logger._coerce_to_scalar(torch.tensor([99])) == 99 + + # Multi-element tensors should return None + assert logger._coerce_to_scalar(torch.tensor([1, 2, 3])) is None + + @patch("nemo_rl.utils.logger.SummaryWriter") + def test_coerce_to_scalar_incompatible_types(self, mock_summary_writer, temp_dir): + """Test that incompatible types return None.""" + cfg = {"log_dir": temp_dir} + logger = TensorboardLogger(cfg, log_dir=temp_dir) + + assert logger._coerce_to_scalar({"key": "value"}) is None + assert logger._coerce_to_scalar([1, 2, 3]) is None + assert logger._coerce_to_scalar(None) is None + assert logger._coerce_to_scalar(object()) is None + + @patch("nemo_rl.utils.logger.SummaryWriter") + def test_log_metrics_coerces_numpy_and_torch(self, mock_summary_writer, temp_dir): + """Test that log_metrics correctly logs numpy/torch scalars.""" + import numpy as np + + cfg = {"log_dir": temp_dir} + logger = TensorboardLogger(cfg, log_dir=temp_dir) + + metrics = { + "python_float": 1.0, + "numpy_float32": np.float32(2.0), + "numpy_float64": np.float64(3.0), + "torch_scalar": torch.tensor(4.0), + "numpy_0d": np.array(5.0), + "torch_1elem": torch.tensor([6.0]), + "skip_list": [1, 2, 3], + "skip_dict": {"a": 1}, + "skip_multi_tensor": torch.tensor([1.0, 2.0]), + } + logger.log_metrics(metrics, step=1) + + mock_writer = mock_summary_writer.return_value + # Should log 6 scalars, skip 3 incompatible + assert mock_writer.add_scalar.call_count == 6 + + # Verify each scalar was logged with correct value + calls = {c[0][0]: c[0][1] for c in mock_writer.add_scalar.call_args_list} + assert calls["python_float"] == 1.0 + assert calls["numpy_float32"] == pytest.approx(2.0) + assert calls["numpy_float64"] == pytest.approx(3.0) + assert calls["torch_scalar"] == pytest.approx(4.0) + assert calls["numpy_0d"] == pytest.approx(5.0) + assert calls["torch_1elem"] == pytest.approx(6.0) + class TestWandbLogger: """Test the WandbLogger class.""" From f63f268c5b9bb2eac517909cba6a8fa4f7075fec Mon Sep 17 00:00:00 2001 From: Terry Kong Date: Tue, 6 Jan 2026 19:32:56 -0800 Subject: [PATCH 33/52] fix: use median instead of mean for logprob error for stability in nightlies (#1722) Signed-off-by: Terry Kong Signed-off-by: Parth Mannan --- tests/check_metrics.py | 34 +++++ tests/test_suites/llm/dapo-qwen2.5-7b.sh | 5 +- ...qwen3-32b-to-1.7b-base-1n8g-fsdp2tp1.v1.sh | 5 +- ...-1.7b-base-1n8g-megatron-tp2pp2cp2-pack.sh | 5 +- ...o-4b-base-1n8g-fsdp2tp2-dynamicbatch.v1.sh | 5 +- ...n3-32b-to-4b-base-2n8g-fsdp2tp2-long.v1.sh | 5 +- ...32b-to-4b-base-2n8g-fsdp2tp2-seqpack.v1.sh | 5 +- ...o-4b-base-2n8g-fsdp2tp8-noncolocated.v1.sh | 5 +- ...a3.1-8b-instruct-4n8g-fsdp2tp2-quick.v2.sh | 3 + .../dpo-llama3.1-8b-instruct-4n8g-fsdp2tp4.sh | 3 + ...o-llama3.1-8b-instruct-4n8g-megatron.v2.sh | 3 + ...1-8b-instruct-4n8g-megatrontp2pp2-quick.sh | 3 + .../dpo-llama3.1-8b-tulu3-1n8g-fsdp2tp1.sh | 3 + ...o-llama3.2-1b-instruct-1n8g-fsdp2tp1.v2.sh | 3 + ...nstruct-2407-1n8g-fsdp2tp8-actckpt-long.sh | 9 +- .../llm/grpo-dapomath17k-dsv3-megatron.sh | 3 + .../llm/grpo-deepscaler-1.5b-16K.sh | 5 +- .../llm/grpo-deepscaler-1.5b-24K.sh | 5 +- .../llm/grpo-deepscaler-1.5b-8K.sh | 5 +- .../llm/grpo-gemma3-1b-it-1n8g-fsdp2tp1.sh | 5 +- ...emma3-27b-it-8n8g-fsdp2tp8-actckpt-long.sh | 5 +- .../llm/grpo-gptoss-20b-8n8g-megatron.sh | 3 + .../llm/grpo-gspo-deepscaler-1.5b-8K.sh | 5 +- ...uper-49b-v1.5-8n8g-fsdp2tp8cp4.sh.disabled | 5 +- ...-instruct-1n8g-megatron-fp8-rollouts.v3.sh | 5 +- ...-8b-instruct-2n8g-fsdp2tp1-noncolocated.sh | 5 +- ...ma3.1-8b-instruct-2n8g-megatron-fp8-e2e.sh | 5 +- ...ma3.1-8b-instruct-4n8g-fsdp2tp1-long.v3.sh | 5 +- ...o-llama3.2-1b-instruct-1n8g-fsdp2tp1.v3.sh | 5 +- ...grpo-llama3.2-1b-instruct-1n8g-megatron.sh | 5 +- ....2-1b-instruct-1n8g-megatron_generation.sh | 5 +- ...on-super-49b-v.5-4n8g-fsdp2tp8.sh.disabled | 2 +- ...grpo-math-qwen3-30ba3b-megatron-tp4-32k.sh | 5 +- ...-moonlight-16ba3b-4n8g-megatron-fp8-e2e.sh | 5 +- .../grpo-moonlight-16ba3b-4n8g-megatron.sh | 5 +- .../llm/grpo-nano-v2-12b-1n8g-megatron.sh | 5 +- .../llm/grpo-nano-v2-12b-2n8g-fsdp2tp1.sh | 5 +- ...n2.5-32b-32n8g-fsdp2tp8-actckpt-long.v3.sh | 5 +- ...o-qwen2.5-32b-32n8g-fsdp2tp8-actckpt.v3.sh | 5 +- ...po-qwen2.5-7b-instruct-4n8g-fsdp2tp4.v3.sh | 5 +- .../grpo-qwen2.5-7b-instruct-4n8g-megatron.sh | 5 +- ...2.5-math-1.5b-instruct-1n8g-fsdp2tp1.v3.sh | 5 +- .../llm/grpo-qwen3-30ba3b-8n8g-megatron.sh | 5 +- ...qwen3-8b-base-1n8g-fp8-kvcache-megatron.sh | 5 +- .../llm/performance/dapo-deepseek-v3-64n8g.sh | 5 +- .../llm/performance/grpo-deepseek-v3-32n4g.sh | 5 +- .../llm/performance/grpo-deepseek-v3-32n8g.sh | 5 +- .../grpo-deepseek-v3-64n4g-async-1off.sh | 5 +- .../grpo-deepseek-v3-64n8g-async-1off.sh | 5 +- .../grpo-deepseek-v3-64n8g-fp8-async-1off.sh | 5 +- ...po-llama3.1-8b-instruct-2n4g-async-1off.sh | 5 +- .../grpo-llama3.1-8b-instruct-2n4g.sh | 5 +- ...po-llama3.1-8b-instruct-2n8g-async-1off.sh | 5 +- ...lama3.1-8b-instruct-2n8g-fp8-async-1off.sh | 5 +- .../grpo-llama3.1-8b-instruct-2n8g.sh | 5 +- .../llm/performance/grpo-qwen3-235b-16n4g.sh | 5 +- .../llm/performance/grpo-qwen3-235b-16n8g.sh | 5 +- .../grpo-qwen3-235b-32n4g-async-1off.sh | 5 +- .../grpo-qwen3-235b-32n8g-async-1off.sh | 5 +- .../grpo-qwen3-30ba3b-24n8g-async-8off.sh | 5 +- .../llm/performance/grpo-qwen3-30ba3b-4n4g.sh | 5 +- .../grpo-qwen3-30ba3b-4n8g-async-1off.sh | 5 +- .../llm/performance/grpo-qwen3-30ba3b-4n8g.sh | 5 +- .../grpo-qwen3-30ba3b-8n4g-async-1off.sh | 5 +- .../llm/performance/grpo-qwen3-32b-4n4g.sh | 5 +- .../llm/performance/grpo-qwen3-32b-4n8g.sh | 5 +- .../grpo-qwen3-32b-8n4g-async-1off.sh | 5 +- .../grpo-qwen3-32b-8n8g-async-1off.sh | 5 +- ...sft-gpt-oss-20b-1n8g-fsdp8ep8-automodel.sh | 3 + ...-llama3.1-70b-8n8g-tp4pp2-long-megatron.sh | 3 + ...-llama3.1-8b-1n8g-fsdp2tp1-dynamicbatch.sh | 3 + .../llm/sft-llama3.1-8b-1n8g-fsdp2tp1-long.sh | 3 + .../llm/sft-llama3.1-8b-1n8g-fsdp2tp1-lora.sh | 3 + .../llm/sft-llama3.1-8b-1n8g-fsdp2tp2.sh | 3 + .../sft-llama3.1-8b-1n8g-megatron-seqpack.sh | 3 + .../llm/sft-llama3.1-8b-1n8g-megatron.sh | 3 + .../llm/sft-llama3.2-1b-1n8g-fsdp2tp1.v3.sh | 3 + .../llm/sft-nanov3-30BA3B-2n8g-fsdp2-lora.sh | 3 + .../llm/sft-nanov3-30BA3B-2n8g-fsdp2.sh | 3 + ...-qwen2.5-32b-4n8g-fsdp2tp8sp-actckpt.v3.sh | 3 + .../llm/sft-qwen2.5-math7b-2n8g-megatron.sh | 3 + ...l-3b-instruct-clevr-1n8g-dtensor2tp1.v1.sh | 3 + ...l-3b-instruct-clevr-1n8g-megatrontp2.v1.sh | 3 + tests/unit/test_check_metrics.py | 120 +++++++++++++++++- 84 files changed, 457 insertions(+), 62 deletions(-) diff --git a/tests/check_metrics.py b/tests/check_metrics.py index f0b3a9025b..2f12be1645 100644 --- a/tests/check_metrics.py +++ b/tests/check_metrics.py @@ -97,6 +97,38 @@ def mean(value, range_start=1, range_end=0, ignore_top_p=0.0): return statistics.mean(vals) +def median(value, range_start=1, range_end=0): + """Return the median of values (or a range of values) in a dictionary. + + Note: + step, and ranges, are 1 indexed. Range_end is exclusive. + range_end=0 means to include until the last step in the run + + Args: + value: Dictionary of step -> value + range_start: Starting step (1-indexed, default=1) + range_end: Ending step (1-indexed, exclusive, 0 means last step) + """ + + ## find potential offset that might arise from resuming from a checkpoint + max_step_reached = builtins.max([int(s) for s in value.keys()]) + ## this is the number of steps that occurred prior to resuming + offset = max_step_reached - len(value) + + num_elem = len(value) + if range_start < 0: + range_start += num_elem + 1 + offset + if range_end <= 0: + range_end += num_elem + 1 + offset + + vals = [] + for step, v in value.items(): + if range_start <= int(step) and int(step) < range_end: + vals.append(float(v)) + + return statistics.median(vals) + + def evaluate_check(data: dict, check: str) -> tuple[bool, str, object]: """Evaluate a check against the data. @@ -109,6 +141,7 @@ def evaluate_check(data: dict, check: str) -> tuple[bool, str, object]: "min": min, "max": max, "mean": mean, + "median": median, "ratio_above": ratio_above, } @@ -152,6 +185,7 @@ def main(): # Use helper functions python check_metrics.py results.json "min(data['class_f1']) > 0.6" python check_metrics.py results.json "mean(data['accuracies']) > 0.85" + python check_metrics.py results.json "median(data['accuracies']) > 0.85" python check_metrics.py results.json "mean(data['loss'], ignore_top_p=0.05) < 1.5" python check_metrics.py results.json "ratio_above(data['error'], 1.05) < 0.02" """ diff --git a/tests/test_suites/llm/dapo-qwen2.5-7b.sh b/tests/test_suites/llm/dapo-qwen2.5-7b.sh index c68b52d4b9..d150ec019f 100755 --- a/tests/test_suites/llm/dapo-qwen2.5-7b.sh +++ b/tests/test_suites/llm/dapo-qwen2.5-7b.sh @@ -34,8 +34,11 @@ uv run tests/json_dump_tb_logs.py $LOG_DIR --output_path $JSON_METRICS # Only run metrics if the target step is reached if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | map(tonumber) | max' $JSON_METRICS) -ge $MAX_STEPS ]]; then uv run tests/check_metrics.py $JSON_METRICS \ - 'mean(data["train/token_mult_prob_error"]) < 1.1' \ + 'median(data["train/token_mult_prob_error"]) < 1.1' \ 'data["train/token_mult_prob_error"]["20"] < 1.05' \ 'data["train/reward"]["20"] > -0.45' \ 'data["train/filtered_reward"]["20"] > -0.2' + + # Clean up checkpoint directory after successful run to save space. + rm -rf "$CKPT_DIR" fi diff --git a/tests/test_suites/llm/distillation-qwen3-32b-to-1.7b-base-1n8g-fsdp2tp1.v1.sh b/tests/test_suites/llm/distillation-qwen3-32b-to-1.7b-base-1n8g-fsdp2tp1.v1.sh index 3ef39d91a3..06e628484d 100755 --- a/tests/test_suites/llm/distillation-qwen3-32b-to-1.7b-base-1n8g-fsdp2tp1.v1.sh +++ b/tests/test_suites/llm/distillation-qwen3-32b-to-1.7b-base-1n8g-fsdp2tp1.v1.sh @@ -20,7 +20,7 @@ uv run examples/run_distillation_math.py \ distillation.val_period=20 \ logger.log_dir=$LOG_DIR \ logger.wandb_enabled=True \ - logger.wandb.project=nemo-rl-distillation \ + logger.wandb.project=nemo-rl \ logger.wandb.name=$EXP_NAME \ logger.monitor_gpus=True \ logger.tensorboard_enabled=True \ @@ -39,4 +39,7 @@ if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | ma 'data["train/loss"]["10"] < 0.5' \ 'max(data["ray/node.0.gpu.0.mem_gb"]) < 70' \ 'mean(data["timing/train/total_step_time"], -6, -1) < 500' + + # Clean up checkpoint directory after successful run to save space. + rm -rf "$CKPT_DIR" fi diff --git a/tests/test_suites/llm/distillation-qwen3-32b-to-1.7b-base-1n8g-megatron-tp2pp2cp2-pack.sh b/tests/test_suites/llm/distillation-qwen3-32b-to-1.7b-base-1n8g-megatron-tp2pp2cp2-pack.sh index 6710ac87ce..73d2c3c2d6 100755 --- a/tests/test_suites/llm/distillation-qwen3-32b-to-1.7b-base-1n8g-megatron-tp2pp2cp2-pack.sh +++ b/tests/test_suites/llm/distillation-qwen3-32b-to-1.7b-base-1n8g-megatron-tp2pp2cp2-pack.sh @@ -20,7 +20,7 @@ uv run examples/run_distillation_math.py \ distillation.val_period=20 \ logger.log_dir=$LOG_DIR \ logger.wandb_enabled=True \ - logger.wandb.project=nemo-rl-distillation \ + logger.wandb.project=nemo-rl \ logger.wandb.name=$EXP_NAME \ logger.monitor_gpus=True \ logger.tensorboard_enabled=True \ @@ -39,4 +39,7 @@ if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | ma 'data["train/loss"]["10"] < 0.5' \ 'max(data["ray/node.0.gpu.0.mem_gb"]) < 75' \ 'mean(data["timing/train/total_step_time"], -6, -1) < 500' + + # Clean up checkpoint directory after successful run to save space. + rm -rf "$CKPT_DIR" fi diff --git a/tests/test_suites/llm/distillation-qwen3-32b-to-4b-base-1n8g-fsdp2tp2-dynamicbatch.v1.sh b/tests/test_suites/llm/distillation-qwen3-32b-to-4b-base-1n8g-fsdp2tp2-dynamicbatch.v1.sh index 52f17c2c28..a559f36b2b 100755 --- a/tests/test_suites/llm/distillation-qwen3-32b-to-4b-base-1n8g-fsdp2tp2-dynamicbatch.v1.sh +++ b/tests/test_suites/llm/distillation-qwen3-32b-to-4b-base-1n8g-fsdp2tp2-dynamicbatch.v1.sh @@ -19,7 +19,7 @@ uv run examples/run_distillation_math.py \ distillation.max_num_steps=$MAX_STEPS \ logger.log_dir=$LOG_DIR \ logger.wandb_enabled=True \ - logger.wandb.project=nemo-rl-distillation \ + logger.wandb.project=nemo-rl \ logger.wandb.name=$EXP_NAME \ logger.monitor_gpus=True \ logger.tensorboard_enabled=True \ @@ -38,4 +38,7 @@ if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | ma 'data["train/loss"]["20"] < 0.3' \ 'data["validation/accuracy"]["20"] > 0.1' \ 'mean(data["timing/train/total_step_time"], -6, -1) < 1000' + + # Clean up checkpoint directory after successful run to save space. + rm -rf "$CKPT_DIR" fi diff --git a/tests/test_suites/llm/distillation-qwen3-32b-to-4b-base-2n8g-fsdp2tp2-long.v1.sh b/tests/test_suites/llm/distillation-qwen3-32b-to-4b-base-2n8g-fsdp2tp2-long.v1.sh index cd4b635e72..a7db7a7787 100755 --- a/tests/test_suites/llm/distillation-qwen3-32b-to-4b-base-2n8g-fsdp2tp2-long.v1.sh +++ b/tests/test_suites/llm/distillation-qwen3-32b-to-4b-base-2n8g-fsdp2tp2-long.v1.sh @@ -19,7 +19,7 @@ uv run examples/run_distillation_math.py \ distillation.max_num_steps=$MAX_STEPS \ logger.log_dir=$LOG_DIR \ logger.wandb_enabled=True \ - logger.wandb.project=nemo-rl-distillation \ + logger.wandb.project=nemo-rl \ logger.wandb.name=$EXP_NAME \ logger.monitor_gpus=True \ logger.tensorboard_enabled=True \ @@ -38,4 +38,7 @@ if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | ma 'data["train/loss"]["100"] < 0.25' \ 'data["validation/accuracy"]["100"] > 0.2' \ 'mean(data["timing/train/total_step_time"], -6, -1) < 1600' + + # Clean up checkpoint directory after successful run to save space. + rm -rf "$CKPT_DIR" fi diff --git a/tests/test_suites/llm/distillation-qwen3-32b-to-4b-base-2n8g-fsdp2tp2-seqpack.v1.sh b/tests/test_suites/llm/distillation-qwen3-32b-to-4b-base-2n8g-fsdp2tp2-seqpack.v1.sh index df8d6daed7..a5ce82c306 100755 --- a/tests/test_suites/llm/distillation-qwen3-32b-to-4b-base-2n8g-fsdp2tp2-seqpack.v1.sh +++ b/tests/test_suites/llm/distillation-qwen3-32b-to-4b-base-2n8g-fsdp2tp2-seqpack.v1.sh @@ -19,7 +19,7 @@ uv run examples/run_distillation_math.py \ distillation.max_num_steps=$MAX_STEPS \ logger.log_dir=$LOG_DIR \ logger.wandb_enabled=True \ - logger.wandb.project=nemo-rl-distillation \ + logger.wandb.project=nemo-rl \ logger.wandb.name=$EXP_NAME \ logger.monitor_gpus=True \ logger.tensorboard_enabled=True \ @@ -38,4 +38,7 @@ if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | ma 'data["train/loss"]["20"] < 0.3' \ 'data["validation/accuracy"]["20"] > 0.1' \ 'mean(data["timing/train/total_step_time"], -6, -1) < 1000' + + # Clean up checkpoint directory after successful run to save space. + rm -rf "$CKPT_DIR" fi diff --git a/tests/test_suites/llm/distillation-qwen3-32b-to-4b-base-2n8g-fsdp2tp8-noncolocated.v1.sh b/tests/test_suites/llm/distillation-qwen3-32b-to-4b-base-2n8g-fsdp2tp8-noncolocated.v1.sh index df8d6daed7..a5ce82c306 100755 --- a/tests/test_suites/llm/distillation-qwen3-32b-to-4b-base-2n8g-fsdp2tp8-noncolocated.v1.sh +++ b/tests/test_suites/llm/distillation-qwen3-32b-to-4b-base-2n8g-fsdp2tp8-noncolocated.v1.sh @@ -19,7 +19,7 @@ uv run examples/run_distillation_math.py \ distillation.max_num_steps=$MAX_STEPS \ logger.log_dir=$LOG_DIR \ logger.wandb_enabled=True \ - logger.wandb.project=nemo-rl-distillation \ + logger.wandb.project=nemo-rl \ logger.wandb.name=$EXP_NAME \ logger.monitor_gpus=True \ logger.tensorboard_enabled=True \ @@ -38,4 +38,7 @@ if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | ma 'data["train/loss"]["20"] < 0.3' \ 'data["validation/accuracy"]["20"] > 0.1' \ 'mean(data["timing/train/total_step_time"], -6, -1) < 1000' + + # Clean up checkpoint directory after successful run to save space. + rm -rf "$CKPT_DIR" fi diff --git a/tests/test_suites/llm/dpo-llama3.1-8b-instruct-4n8g-fsdp2tp2-quick.v2.sh b/tests/test_suites/llm/dpo-llama3.1-8b-instruct-4n8g-fsdp2tp2-quick.v2.sh index a8d2d04adc..1f64224461 100755 --- a/tests/test_suites/llm/dpo-llama3.1-8b-instruct-4n8g-fsdp2tp2-quick.v2.sh +++ b/tests/test_suites/llm/dpo-llama3.1-8b-instruct-4n8g-fsdp2tp2-quick.v2.sh @@ -40,4 +40,7 @@ if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | ma 'data["train/preference_loss"]["1"] < 0.69316' \ 'data["train/preference_loss"]["20"] < 0.6' \ 'mean(data["timing/train/total_step_time"], -10, -1) < 7.8' + + # Clean up checkpoint directory after successful run to save space. + rm -rf "$CKPT_DIR" fi diff --git a/tests/test_suites/llm/dpo-llama3.1-8b-instruct-4n8g-fsdp2tp4.sh b/tests/test_suites/llm/dpo-llama3.1-8b-instruct-4n8g-fsdp2tp4.sh index fbda6865f5..82b240f0dc 100755 --- a/tests/test_suites/llm/dpo-llama3.1-8b-instruct-4n8g-fsdp2tp4.sh +++ b/tests/test_suites/llm/dpo-llama3.1-8b-instruct-4n8g-fsdp2tp4.sh @@ -40,4 +40,7 @@ if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | ma 'data["train/preference_loss"]["1"] < 0.69316' \ 'data["train/preference_loss"]["150"] < 0.4' \ 'mean(data["timing/train/total_step_time"], -11, -1) < 24' + + # Clean up checkpoint directory after successful run to save space. + rm -rf "$CKPT_DIR" fi diff --git a/tests/test_suites/llm/dpo-llama3.1-8b-instruct-4n8g-megatron.v2.sh b/tests/test_suites/llm/dpo-llama3.1-8b-instruct-4n8g-megatron.v2.sh index 7cc74e26df..511386b2d3 100755 --- a/tests/test_suites/llm/dpo-llama3.1-8b-instruct-4n8g-megatron.v2.sh +++ b/tests/test_suites/llm/dpo-llama3.1-8b-instruct-4n8g-megatron.v2.sh @@ -40,4 +40,7 @@ if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | ma 'data["train/preference_loss"]["1"] < 0.69316' \ 'data["train/preference_loss"]["150"] < 0.4' \ 'mean(data["timing/train/total_step_time"], -11, -1) < 11.5' + + # Clean up checkpoint directory after successful run to save space. + rm -rf "$CKPT_DIR" fi diff --git a/tests/test_suites/llm/dpo-llama3.1-8b-instruct-4n8g-megatrontp2pp2-quick.sh b/tests/test_suites/llm/dpo-llama3.1-8b-instruct-4n8g-megatrontp2pp2-quick.sh index 497e0b8f68..f57f755051 100755 --- a/tests/test_suites/llm/dpo-llama3.1-8b-instruct-4n8g-megatrontp2pp2-quick.sh +++ b/tests/test_suites/llm/dpo-llama3.1-8b-instruct-4n8g-megatrontp2pp2-quick.sh @@ -40,4 +40,7 @@ if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | ma 'data["train/preference_loss"]["1"] < 0.69316' \ 'data["train/preference_loss"]["20"] < 0.6' \ 'mean(data["timing/train/total_step_time"], -10) < 6.7' + + # Clean up checkpoint directory after successful run to save space. + rm -rf "$CKPT_DIR" fi diff --git a/tests/test_suites/llm/dpo-llama3.1-8b-tulu3-1n8g-fsdp2tp1.sh b/tests/test_suites/llm/dpo-llama3.1-8b-tulu3-1n8g-fsdp2tp1.sh index a6beabb886..79a4ea0781 100755 --- a/tests/test_suites/llm/dpo-llama3.1-8b-tulu3-1n8g-fsdp2tp1.sh +++ b/tests/test_suites/llm/dpo-llama3.1-8b-tulu3-1n8g-fsdp2tp1.sh @@ -39,4 +39,7 @@ if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | ma 'data["train/preference_loss"]["1"] > 0.6930' \ 'data["train/preference_loss"]["1"] < 0.6932' \ 'data["train/preference_loss"]["150"] < 0.68' + + # Clean up checkpoint directory after successful run to save space. + rm -rf "$CKPT_DIR" fi diff --git a/tests/test_suites/llm/dpo-llama3.2-1b-instruct-1n8g-fsdp2tp1.v2.sh b/tests/test_suites/llm/dpo-llama3.2-1b-instruct-1n8g-fsdp2tp1.v2.sh index 0b0c67b312..dcb3672c21 100755 --- a/tests/test_suites/llm/dpo-llama3.2-1b-instruct-1n8g-fsdp2tp1.v2.sh +++ b/tests/test_suites/llm/dpo-llama3.2-1b-instruct-1n8g-fsdp2tp1.v2.sh @@ -38,4 +38,7 @@ if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | ma 'data["train/loss"]["1"] < 0.69316' \ 'data["train/loss"]["150"] < 0.55' \ 'mean(data["timing/train/total_step_time"], -11, -1) < 1.3' + + # Clean up checkpoint directory after successful run to save space. + rm -rf "$CKPT_DIR" fi diff --git a/tests/test_suites/llm/dpo-mistral-nemo-instruct-2407-1n8g-fsdp2tp8-actckpt-long.sh b/tests/test_suites/llm/dpo-mistral-nemo-instruct-2407-1n8g-fsdp2tp8-actckpt-long.sh index 3466de2fce..46beb3f924 100755 --- a/tests/test_suites/llm/dpo-mistral-nemo-instruct-2407-1n8g-fsdp2tp8-actckpt-long.sh +++ b/tests/test_suites/llm/dpo-mistral-nemo-instruct-2407-1n8g-fsdp2tp8-actckpt-long.sh @@ -34,7 +34,10 @@ uv run tests/json_dump_tb_logs.py $LOG_DIR --output_path $JSON_METRICS # Only run metrics if the target step is reached if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | map(tonumber) | max' $JSON_METRICS) -ge $MAX_STEPS ]]; then uv run tests/check_metrics.py $JSON_METRICS \ - 'data["train/loss"]["1"] > 0.6990' \ - 'data["train/loss"]["1"] < 0.6992' \ + 'data["train/loss"]["1"] > 0.680' \ + 'data["train/loss"]["1"] < 0.70' \ 'data["train/loss"]["100"] < 0.60' -fi + + # Clean up checkpoint directory after successful run to save space. + rm -rf "$CKPT_DIR" +fi diff --git a/tests/test_suites/llm/grpo-dapomath17k-dsv3-megatron.sh b/tests/test_suites/llm/grpo-dapomath17k-dsv3-megatron.sh index 3522261d9c..a760b42eba 100755 --- a/tests/test_suites/llm/grpo-dapomath17k-dsv3-megatron.sh +++ b/tests/test_suites/llm/grpo-dapomath17k-dsv3-megatron.sh @@ -43,4 +43,7 @@ if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | ma uv run tests/check_metrics.py $JSON_METRICS \ 'min(data["train/token_mult_prob_error"]) < 1.05' \ 'data["train/reward"]["10"] > 0.4' + + # Clean up checkpoint directory after successful run to save space. + rm -rf "$CKPT_DIR" fi diff --git a/tests/test_suites/llm/grpo-deepscaler-1.5b-16K.sh b/tests/test_suites/llm/grpo-deepscaler-1.5b-16K.sh index 633b0d8297..6198ae049f 100755 --- a/tests/test_suites/llm/grpo-deepscaler-1.5b-16K.sh +++ b/tests/test_suites/llm/grpo-deepscaler-1.5b-16K.sh @@ -41,7 +41,7 @@ uv run tests/json_dump_tb_logs.py $LOG_DIR --output_path $JSON_METRICS # Only run metrics if the target step is reached if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | map(tonumber) | max' $JSON_METRICS) -ge $MAX_STEPS ]]; then uv run tests/check_metrics.py $JSON_METRICS \ - 'mean(data["train/token_mult_prob_error"]) < 1.05' \ + 'median(data["train/token_mult_prob_error"]) < 1.05' \ "data['train/token_mult_prob_error']['$MAX_STEPS'] < 1.05" fi @@ -66,3 +66,6 @@ cat ${RUN_LOG}.aime-16k | grep "score=" | sed 's/.*score=\([^ ]*\).*/{"sco # 240 step checkpoint 0.3 uv run tests/check_metrics.py ${RUN_LOG}-16k-metric.json \ 'data["score"] >= 0.2396' + +# Clean up checkpoint directory after successful run to save space. +rm -rf "$CKPT_DIR" diff --git a/tests/test_suites/llm/grpo-deepscaler-1.5b-24K.sh b/tests/test_suites/llm/grpo-deepscaler-1.5b-24K.sh index 87b6e9065c..151076c471 100755 --- a/tests/test_suites/llm/grpo-deepscaler-1.5b-24K.sh +++ b/tests/test_suites/llm/grpo-deepscaler-1.5b-24K.sh @@ -41,7 +41,7 @@ uv run tests/json_dump_tb_logs.py $LOG_DIR --output_path $JSON_METRICS # Only run metrics if the target step is reached if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | map(tonumber) | max' $JSON_METRICS) -ge $MAX_STEPS ]]; then uv run tests/check_metrics.py $JSON_METRICS \ - 'mean(data["train/token_mult_prob_error"]) < 1.05' \ + 'median(data["train/token_mult_prob_error"]) < 1.05' \ "data['train/token_mult_prob_error']['$MAX_STEPS'] < 1.05" fi @@ -65,3 +65,6 @@ cat ${RUN_LOG}.aime-24k | grep "score=" | sed 's/.*score=\([^ ]*\).*/{"sco uv run tests/check_metrics.py ${RUN_LOG}-24k-metric.json \ 'data["score"] >= 0.2396' + +# Clean up checkpoint directory after successful run to save space. +rm -rf "$CKPT_DIR" diff --git a/tests/test_suites/llm/grpo-deepscaler-1.5b-8K.sh b/tests/test_suites/llm/grpo-deepscaler-1.5b-8K.sh index ba2f5993d4..d584327cb1 100755 --- a/tests/test_suites/llm/grpo-deepscaler-1.5b-8K.sh +++ b/tests/test_suites/llm/grpo-deepscaler-1.5b-8K.sh @@ -34,7 +34,7 @@ uv run tests/json_dump_tb_logs.py $LOG_DIR --output_path $JSON_METRICS # Only run metrics if the target step is reached if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | map(tonumber) | max' $JSON_METRICS) -ge $MAX_STEPS ]]; then uv run tests/check_metrics.py $JSON_METRICS \ - 'mean(data["train/token_mult_prob_error"]) < 1.05' \ + 'median(data["train/token_mult_prob_error"]) < 1.05' \ "data['train/token_mult_prob_error']['$MAX_STEPS'] < 1.05" fi @@ -60,6 +60,9 @@ cat ${RUN_LOG}.aime-8k | grep "score=" | sed 's/.*score=\([^ ]*\).*/{"scor uv run tests/check_metrics.py ${RUN_LOG}-8k-metric.json \ 'data["score"] >= 0.2396' +# Clean up checkpoint directory after successful run to save space. +rm -rf "$CKPT_DIR" + # This comment is for reference on how the aime24 eval baseline was chosen: # The variance in aime24 is pretty high when only taking one sample per prompt. # I have observed huge variance even between A100 and H100 with one sample per prompt, diff --git a/tests/test_suites/llm/grpo-gemma3-1b-it-1n8g-fsdp2tp1.sh b/tests/test_suites/llm/grpo-gemma3-1b-it-1n8g-fsdp2tp1.sh index 4624b7282d..50fa72125c 100755 --- a/tests/test_suites/llm/grpo-gemma3-1b-it-1n8g-fsdp2tp1.sh +++ b/tests/test_suites/llm/grpo-gemma3-1b-it-1n8g-fsdp2tp1.sh @@ -34,7 +34,10 @@ uv run tests/json_dump_tb_logs.py $LOG_DIR --output_path $JSON_METRICS # Only run metrics if the target step is reached if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | map(tonumber) | max' $JSON_METRICS) -ge $MAX_STEPS ]]; then uv run tests/check_metrics.py $JSON_METRICS \ - 'mean(data["train/token_mult_prob_error"]) < 1.1' \ + 'median(data["train/token_mult_prob_error"]) < 1.1' \ "data[\"train/token_mult_prob_error\"][\"${MAX_STEPS}\"] < 1.1" \ 'mean(data["timing/train/total_step_time"], -6, -1) < 14' + + # Clean up checkpoint directory after successful run to save space. + rm -rf "$CKPT_DIR" fi diff --git a/tests/test_suites/llm/grpo-gemma3-27b-it-8n8g-fsdp2tp8-actckpt-long.sh b/tests/test_suites/llm/grpo-gemma3-27b-it-8n8g-fsdp2tp8-actckpt-long.sh index a6ce1800d9..a1ace88f6f 100755 --- a/tests/test_suites/llm/grpo-gemma3-27b-it-8n8g-fsdp2tp8-actckpt-long.sh +++ b/tests/test_suites/llm/grpo-gemma3-27b-it-8n8g-fsdp2tp8-actckpt-long.sh @@ -34,6 +34,9 @@ uv run tests/json_dump_tb_logs.py $LOG_DIR --output_path $JSON_METRICS # Only run metrics if the target step is reached if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | map(tonumber) | max' $JSON_METRICS) -ge $MAX_STEPS ]]; then uv run tests/check_metrics.py $JSON_METRICS \ - 'mean(data["train/token_mult_prob_error"]) < 1.1' \ + 'median(data["train/token_mult_prob_error"]) < 1.1' \ 'data["train/token_mult_prob_error"]["20"] < 1.1' + + # Clean up checkpoint directory after successful run to save space. + rm -rf "$CKPT_DIR" fi diff --git a/tests/test_suites/llm/grpo-gptoss-20b-8n8g-megatron.sh b/tests/test_suites/llm/grpo-gptoss-20b-8n8g-megatron.sh index 77f858b429..9a242dd52a 100755 --- a/tests/test_suites/llm/grpo-gptoss-20b-8n8g-megatron.sh +++ b/tests/test_suites/llm/grpo-gptoss-20b-8n8g-megatron.sh @@ -37,4 +37,7 @@ if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | ma 'mean(data["train/gen_kl_error"]) < 0.002' \ 'data["train/reward"]["60"] > 0.60' \ 'mean(data["timing/train/total_step_time"], -6, -1) < 210' + + # Clean up checkpoint directory after successful run to save space. + rm -rf "$CKPT_DIR" fi diff --git a/tests/test_suites/llm/grpo-gspo-deepscaler-1.5b-8K.sh b/tests/test_suites/llm/grpo-gspo-deepscaler-1.5b-8K.sh index ce2adb1c51..d253911819 100755 --- a/tests/test_suites/llm/grpo-gspo-deepscaler-1.5b-8K.sh +++ b/tests/test_suites/llm/grpo-gspo-deepscaler-1.5b-8K.sh @@ -34,8 +34,11 @@ uv run tests/json_dump_tb_logs.py $LOG_DIR --output_path $JSON_METRICS # Only run metrics if the target step is reached if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | map(tonumber) | max' $JSON_METRICS) -ge $MAX_STEPS ]]; then uv run tests/check_metrics.py $JSON_METRICS \ - 'mean(data["train/token_mult_prob_error"]) < 1.1' \ + 'median(data["train/token_mult_prob_error"]) < 1.1' \ "data['train/token_mult_prob_error']['$MAX_STEPS'] < 1.1" + + # Clean up checkpoint directory after successful run to save space. + rm -rf "$CKPT_DIR" fi # TODO: enable in subsequent PR to do a quick accuracy check diff --git a/tests/test_suites/llm/grpo-helpsteer3-llama-3.3-nemotron-super-49b-v1.5-8n8g-fsdp2tp8cp4.sh.disabled b/tests/test_suites/llm/grpo-helpsteer3-llama-3.3-nemotron-super-49b-v1.5-8n8g-fsdp2tp8cp4.sh.disabled index 2194bad7ab..391412b5ed 100755 --- a/tests/test_suites/llm/grpo-helpsteer3-llama-3.3-nemotron-super-49b-v1.5-8n8g-fsdp2tp8cp4.sh.disabled +++ b/tests/test_suites/llm/grpo-helpsteer3-llama-3.3-nemotron-super-49b-v1.5-8n8g-fsdp2tp8cp4.sh.disabled @@ -34,7 +34,10 @@ uv run tests/json_dump_tb_logs.py $LOG_DIR --output_path $JSON_METRICS # Only run metrics if the target step is reached if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | map(tonumber) | max' $JSON_METRICS) -ge $MAX_STEPS ]]; then uv run tests/check_metrics.py $JSON_METRICS \ - 'mean(data["train/token_mult_prob_error"]) < 1.1' \ + 'median(data["train/token_mult_prob_error"]) < 1.1' \ "data['train/token_mult_prob_error']['$MAX_STEPS'] < 1.1" + + # Clean up checkpoint directory after successful run to save space. + rm -rf "$CKPT_DIR" fi diff --git a/tests/test_suites/llm/grpo-llama3.1-8b-instruct-1n8g-megatron-fp8-rollouts.v3.sh b/tests/test_suites/llm/grpo-llama3.1-8b-instruct-1n8g-megatron-fp8-rollouts.v3.sh index 956c94bb5c..3a7de5a63c 100755 --- a/tests/test_suites/llm/grpo-llama3.1-8b-instruct-1n8g-megatron-fp8-rollouts.v3.sh +++ b/tests/test_suites/llm/grpo-llama3.1-8b-instruct-1n8g-megatron-fp8-rollouts.v3.sh @@ -35,7 +35,10 @@ uv run tests/json_dump_tb_logs.py $LOG_DIR --output_path $JSON_METRICS if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | map(tonumber) | max' $JSON_METRICS) -ge $MAX_STEPS ]]; then # With a few number of steps the logprob can have spikes that can move the average up. uv run tests/check_metrics.py $JSON_METRICS \ - 'mean(data["train/token_mult_prob_error"], ignore_top_p=0.05) < 1.1' \ + 'median(data["train/token_mult_prob_error"]) < 1.1' \ 'ratio_above(data["train/token_mult_prob_error"], 1.1) < 0.1' # ratio_above @ 1.1 was 0.03,0.06,0.05: 3sigma ~=0.1 + + # Clean up checkpoint directory after successful run to save space. + rm -rf "$CKPT_DIR" fi diff --git a/tests/test_suites/llm/grpo-llama3.1-8b-instruct-2n8g-fsdp2tp1-noncolocated.sh b/tests/test_suites/llm/grpo-llama3.1-8b-instruct-2n8g-fsdp2tp1-noncolocated.sh index d018032576..83d7e51773 100755 --- a/tests/test_suites/llm/grpo-llama3.1-8b-instruct-2n8g-fsdp2tp1-noncolocated.sh +++ b/tests/test_suites/llm/grpo-llama3.1-8b-instruct-2n8g-fsdp2tp1-noncolocated.sh @@ -34,6 +34,9 @@ uv run tests/json_dump_tb_logs.py $LOG_DIR --output_path $JSON_METRICS # Only run metrics if the target step is reached if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | map(tonumber) | max' $JSON_METRICS) -ge $MAX_STEPS ]]; then uv run tests/check_metrics.py $JSON_METRICS \ - 'mean(data["train/token_mult_prob_error"]) < 1.1' \ + 'median(data["train/token_mult_prob_error"]) < 1.1' \ 'data["train/token_mult_prob_error"]["30"] < 1.1' + + # Clean up checkpoint directory after successful run to save space. + rm -rf "$CKPT_DIR" fi diff --git a/tests/test_suites/llm/grpo-llama3.1-8b-instruct-2n8g-megatron-fp8-e2e.sh b/tests/test_suites/llm/grpo-llama3.1-8b-instruct-2n8g-megatron-fp8-e2e.sh index 4a6d63473c..171194957c 100755 --- a/tests/test_suites/llm/grpo-llama3.1-8b-instruct-2n8g-megatron-fp8-e2e.sh +++ b/tests/test_suites/llm/grpo-llama3.1-8b-instruct-2n8g-megatron-fp8-e2e.sh @@ -34,6 +34,9 @@ uv run tests/json_dump_tb_logs.py $LOG_DIR --output_path $JSON_METRICS # Only run metrics if the target step is reached if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | map(tonumber) | max' $JSON_METRICS) -ge $MAX_STEPS ]]; then uv run tests/check_metrics.py $JSON_METRICS \ - 'mean(data["train/token_mult_prob_error"]) < 1.1' \ + 'median(data["train/token_mult_prob_error"]) < 1.1' \ 'data["train/token_mult_prob_error"]["100"] < 1.1' + + # Clean up checkpoint directory after successful run to save space. + rm -rf "$CKPT_DIR" fi diff --git a/tests/test_suites/llm/grpo-llama3.1-8b-instruct-4n8g-fsdp2tp1-long.v3.sh b/tests/test_suites/llm/grpo-llama3.1-8b-instruct-4n8g-fsdp2tp1-long.v3.sh index af44d060cb..7952b19491 100755 --- a/tests/test_suites/llm/grpo-llama3.1-8b-instruct-4n8g-fsdp2tp1-long.v3.sh +++ b/tests/test_suites/llm/grpo-llama3.1-8b-instruct-4n8g-fsdp2tp1-long.v3.sh @@ -34,6 +34,9 @@ uv run tests/json_dump_tb_logs.py $LOG_DIR --output_path $JSON_METRICS # Only run metrics if the target step is reached if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | map(tonumber) | max' $JSON_METRICS) -ge $MAX_STEPS ]]; then uv run tests/check_metrics.py $JSON_METRICS \ - 'mean(data["train/token_mult_prob_error"]) < 1.1' \ + 'median(data["train/token_mult_prob_error"]) < 1.1' \ 'data["train/token_mult_prob_error"]["100"] < 1.1' + + # Clean up checkpoint directory after successful run to save space. + rm -rf "$CKPT_DIR" fi diff --git a/tests/test_suites/llm/grpo-llama3.2-1b-instruct-1n8g-fsdp2tp1.v3.sh b/tests/test_suites/llm/grpo-llama3.2-1b-instruct-1n8g-fsdp2tp1.v3.sh index 562ff730e7..7f5036e8db 100755 --- a/tests/test_suites/llm/grpo-llama3.2-1b-instruct-1n8g-fsdp2tp1.v3.sh +++ b/tests/test_suites/llm/grpo-llama3.2-1b-instruct-1n8g-fsdp2tp1.v3.sh @@ -34,7 +34,10 @@ uv run tests/json_dump_tb_logs.py $LOG_DIR --output_path $JSON_METRICS # Only run metrics if the target step is reached if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | map(tonumber) | max' $JSON_METRICS) -ge $MAX_STEPS ]]; then uv run tests/check_metrics.py $JSON_METRICS \ - 'mean(data["train/token_mult_prob_error"]) < 1.1' \ + 'median(data["train/token_mult_prob_error"]) < 1.1' \ 'data["train/token_mult_prob_error"]["500"] < 1.1' \ 'mean(data["timing/train/total_step_time"], -6, -1) < 10' + + # Clean up checkpoint directory after successful run to save space. + rm -rf "$CKPT_DIR" fi diff --git a/tests/test_suites/llm/grpo-llama3.2-1b-instruct-1n8g-megatron.sh b/tests/test_suites/llm/grpo-llama3.2-1b-instruct-1n8g-megatron.sh index 90e309e128..3ee982ecc0 100755 --- a/tests/test_suites/llm/grpo-llama3.2-1b-instruct-1n8g-megatron.sh +++ b/tests/test_suites/llm/grpo-llama3.2-1b-instruct-1n8g-megatron.sh @@ -34,8 +34,11 @@ uv run tests/json_dump_tb_logs.py $LOG_DIR --output_path $JSON_METRICS # Only run metrics if the target step is reached if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | map(tonumber) | max' $JSON_METRICS) -ge $MAX_STEPS ]]; then uv run tests/check_metrics.py $JSON_METRICS \ - 'mean(data["train/token_mult_prob_error"]) < 1.1' \ + 'median(data["train/token_mult_prob_error"]) < 1.1' \ 'data["train/token_mult_prob_error"]["500"] < 1.1' \ 'data["train/reward"]["500"] > 0.1' \ 'mean(data["timing/train/total_step_time"], -6, -1) < 10.5' + + # Clean up checkpoint directory after successful run to save space. + rm -rf "$CKPT_DIR" fi diff --git a/tests/test_suites/llm/grpo-llama3.2-1b-instruct-1n8g-megatron_generation.sh b/tests/test_suites/llm/grpo-llama3.2-1b-instruct-1n8g-megatron_generation.sh index 08f57cb5a8..4fa8068017 100755 --- a/tests/test_suites/llm/grpo-llama3.2-1b-instruct-1n8g-megatron_generation.sh +++ b/tests/test_suites/llm/grpo-llama3.2-1b-instruct-1n8g-megatron_generation.sh @@ -35,8 +35,11 @@ uv run tests/json_dump_tb_logs.py $LOG_DIR --output_path $JSON_METRICS # Only run metrics if the target step is reached if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | map(tonumber) | max' $JSON_METRICS) -ge $MAX_STEPS ]]; then uv run tests/check_metrics.py $JSON_METRICS \ - 'mean(data["train/token_mult_prob_error"]) < 1.1' \ + 'median(data["train/token_mult_prob_error"]) < 1.1' \ 'data["train/token_mult_prob_error"]["500"] < 1.1' \ 'data["train/reward"]["500"] > 0.1' \ 'mean(data["timing/train/total_step_time"], -6, -1) < 10.5' + + # Clean up checkpoint directory after successful run to save space. + rm -rf "$CKPT_DIR" fi diff --git a/tests/test_suites/llm/grpo-math-llama-nemotron-super-49b-v.5-4n8g-fsdp2tp8.sh.disabled b/tests/test_suites/llm/grpo-math-llama-nemotron-super-49b-v.5-4n8g-fsdp2tp8.sh.disabled index 9420b53c9d..d01c1aec0e 100755 --- a/tests/test_suites/llm/grpo-math-llama-nemotron-super-49b-v.5-4n8g-fsdp2tp8.sh.disabled +++ b/tests/test_suites/llm/grpo-math-llama-nemotron-super-49b-v.5-4n8g-fsdp2tp8.sh.disabled @@ -34,7 +34,7 @@ uv run tests/json_dump_tb_logs.py $LOG_DIR --output_path $JSON_METRICS # Only run metrics if the target step is reached if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | map(tonumber) | max' $JSON_METRICS) -ge $MAX_STEPS ]]; then uv run tests/check_metrics.py $JSON_METRICS \ - 'mean(data["train/token_mult_prob_error"]) < 1.1' \ + 'median(data["train/token_mult_prob_error"]) < 1.1' \ 'data["train/token_mult_prob_error"]["2"] < 1.1' \ 'mean(data["timing/train/policy_training"]) < 280' \ 'mean(data["ray/node.0.gpu.0.mem_gb"]) < 75' diff --git a/tests/test_suites/llm/grpo-math-qwen3-30ba3b-megatron-tp4-32k.sh b/tests/test_suites/llm/grpo-math-qwen3-30ba3b-megatron-tp4-32k.sh index 4a310b673b..1f00f7bad4 100755 --- a/tests/test_suites/llm/grpo-math-qwen3-30ba3b-megatron-tp4-32k.sh +++ b/tests/test_suites/llm/grpo-math-qwen3-30ba3b-megatron-tp4-32k.sh @@ -34,6 +34,9 @@ uv run tests/json_dump_tb_logs.py $LOG_DIR --output_path $JSON_METRICS # Only run metrics if the target step is reached if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | map(tonumber) | max' $JSON_METRICS) -ge $MAX_STEPS ]]; then uv run tests/check_metrics.py $JSON_METRICS \ - 'mean(data["train/token_mult_prob_error"]) < 1.1' \ + 'median(data["train/token_mult_prob_error"]) < 1.1' \ 'data["train/token_mult_prob_error"]["3"] < 1.1' + + # Clean up checkpoint directory after successful run to save space. + rm -rf "$CKPT_DIR" fi diff --git a/tests/test_suites/llm/grpo-moonlight-16ba3b-4n8g-megatron-fp8-e2e.sh b/tests/test_suites/llm/grpo-moonlight-16ba3b-4n8g-megatron-fp8-e2e.sh index 24e49d1a8d..c637acd050 100755 --- a/tests/test_suites/llm/grpo-moonlight-16ba3b-4n8g-megatron-fp8-e2e.sh +++ b/tests/test_suites/llm/grpo-moonlight-16ba3b-4n8g-megatron-fp8-e2e.sh @@ -34,8 +34,11 @@ uv run tests/json_dump_tb_logs.py $LOG_DIR --output_path $JSON_METRICS # Only run metrics if the target step is reached if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | map(tonumber) | max' $JSON_METRICS) -ge $MAX_STEPS ]]; then uv run tests/check_metrics.py $JSON_METRICS \ - 'mean(data["train/token_mult_prob_error"]) < 1.1' \ + 'median(data["train/token_mult_prob_error"]) < 1.1' \ 'data["train/token_mult_prob_error"]["30"] < 1.1' \ 'mean(data["train/reward"]) > 0.45' \ 'mean(data["timing/train/total_step_time"], -11, -1) < 70' + + # Clean up checkpoint directory after successful run to save space. + rm -rf "$CKPT_DIR" fi diff --git a/tests/test_suites/llm/grpo-moonlight-16ba3b-4n8g-megatron.sh b/tests/test_suites/llm/grpo-moonlight-16ba3b-4n8g-megatron.sh index 24e49d1a8d..c637acd050 100755 --- a/tests/test_suites/llm/grpo-moonlight-16ba3b-4n8g-megatron.sh +++ b/tests/test_suites/llm/grpo-moonlight-16ba3b-4n8g-megatron.sh @@ -34,8 +34,11 @@ uv run tests/json_dump_tb_logs.py $LOG_DIR --output_path $JSON_METRICS # Only run metrics if the target step is reached if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | map(tonumber) | max' $JSON_METRICS) -ge $MAX_STEPS ]]; then uv run tests/check_metrics.py $JSON_METRICS \ - 'mean(data["train/token_mult_prob_error"]) < 1.1' \ + 'median(data["train/token_mult_prob_error"]) < 1.1' \ 'data["train/token_mult_prob_error"]["30"] < 1.1' \ 'mean(data["train/reward"]) > 0.45' \ 'mean(data["timing/train/total_step_time"], -11, -1) < 70' + + # Clean up checkpoint directory after successful run to save space. + rm -rf "$CKPT_DIR" fi diff --git a/tests/test_suites/llm/grpo-nano-v2-12b-1n8g-megatron.sh b/tests/test_suites/llm/grpo-nano-v2-12b-1n8g-megatron.sh index 68a694098c..786a070335 100755 --- a/tests/test_suites/llm/grpo-nano-v2-12b-1n8g-megatron.sh +++ b/tests/test_suites/llm/grpo-nano-v2-12b-1n8g-megatron.sh @@ -34,8 +34,11 @@ uv run tests/json_dump_tb_logs.py $LOG_DIR --output_path $JSON_METRICS # Only run metrics if the target step is reached if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | map(tonumber) | max' $JSON_METRICS) -ge $MAX_STEPS ]]; then uv run tests/check_metrics.py $JSON_METRICS \ - 'mean(data["train/token_mult_prob_error"]) < 1.05' \ + 'median(data["train/token_mult_prob_error"]) < 1.05' \ 'data["train/token_mult_prob_error"]["30"] < 1.05' \ 'data["train/reward"]["30"] > 0.4' \ 'mean(data["timing/train/total_step_time"], -6, -1) < 80' + + # Clean up checkpoint directory after successful run to save space. + rm -rf "$CKPT_DIR" fi diff --git a/tests/test_suites/llm/grpo-nano-v2-12b-2n8g-fsdp2tp1.sh b/tests/test_suites/llm/grpo-nano-v2-12b-2n8g-fsdp2tp1.sh index d1ad766b5b..3f657f90fd 100755 --- a/tests/test_suites/llm/grpo-nano-v2-12b-2n8g-fsdp2tp1.sh +++ b/tests/test_suites/llm/grpo-nano-v2-12b-2n8g-fsdp2tp1.sh @@ -34,8 +34,11 @@ uv run tests/json_dump_tb_logs.py $LOG_DIR --output_path $JSON_METRICS # Only run metrics if the target step is reached if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | map(tonumber) | max' $JSON_METRICS) -ge $MAX_STEPS ]]; then uv run tests/check_metrics.py $JSON_METRICS \ - 'mean(data["train/token_mult_prob_error"]) < 1.05' \ + 'median(data["train/token_mult_prob_error"]) < 1.05' \ 'data["train/token_mult_prob_error"]["30"] < 1.05' \ 'data["train/reward"]["30"] > 0.4' \ 'mean(data["timing/train/total_step_time"], -6, -1) < 60' + + # Clean up checkpoint directory after successful run to save space. + rm -rf "$CKPT_DIR" fi diff --git a/tests/test_suites/llm/grpo-qwen2.5-32b-32n8g-fsdp2tp8-actckpt-long.v3.sh b/tests/test_suites/llm/grpo-qwen2.5-32b-32n8g-fsdp2tp8-actckpt-long.v3.sh index fa7fbd5bd6..1ddde6af8c 100755 --- a/tests/test_suites/llm/grpo-qwen2.5-32b-32n8g-fsdp2tp8-actckpt-long.v3.sh +++ b/tests/test_suites/llm/grpo-qwen2.5-32b-32n8g-fsdp2tp8-actckpt-long.v3.sh @@ -34,6 +34,9 @@ uv run tests/json_dump_tb_logs.py $LOG_DIR --output_path $JSON_METRICS # Only run metrics if the target step is reached if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | map(tonumber) | max' $JSON_METRICS) -ge $MAX_STEPS ]]; then uv run tests/check_metrics.py $JSON_METRICS \ - 'mean(data["train/token_mult_prob_error"]) < 1.1' \ + 'median(data["train/token_mult_prob_error"]) < 1.1' \ 'data["train/token_mult_prob_error"]["20"] < 1.1' + + # Clean up checkpoint directory after successful run to save space. + rm -rf "$CKPT_DIR" fi diff --git a/tests/test_suites/llm/grpo-qwen2.5-32b-32n8g-fsdp2tp8-actckpt.v3.sh b/tests/test_suites/llm/grpo-qwen2.5-32b-32n8g-fsdp2tp8-actckpt.v3.sh index 98591ba9b3..bf865f8b6f 100755 --- a/tests/test_suites/llm/grpo-qwen2.5-32b-32n8g-fsdp2tp8-actckpt.v3.sh +++ b/tests/test_suites/llm/grpo-qwen2.5-32b-32n8g-fsdp2tp8-actckpt.v3.sh @@ -34,6 +34,9 @@ uv run tests/json_dump_tb_logs.py $LOG_DIR --output_path $JSON_METRICS # Only run metrics if the target step is reached if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | map(tonumber) | max' $JSON_METRICS) -ge $MAX_STEPS ]]; then uv run tests/check_metrics.py $JSON_METRICS \ - 'mean(data["train/token_mult_prob_error"]) < 1.1' \ + 'median(data["train/token_mult_prob_error"]) < 1.1' \ 'data["train/token_mult_prob_error"]["2"] < 1.1' + + # Clean up checkpoint directory after successful run to save space. + rm -rf "$CKPT_DIR" fi diff --git a/tests/test_suites/llm/grpo-qwen2.5-7b-instruct-4n8g-fsdp2tp4.v3.sh b/tests/test_suites/llm/grpo-qwen2.5-7b-instruct-4n8g-fsdp2tp4.v3.sh index 5fcfbfd76a..b4fbf87ebf 100755 --- a/tests/test_suites/llm/grpo-qwen2.5-7b-instruct-4n8g-fsdp2tp4.v3.sh +++ b/tests/test_suites/llm/grpo-qwen2.5-7b-instruct-4n8g-fsdp2tp4.v3.sh @@ -34,8 +34,11 @@ uv run tests/json_dump_tb_logs.py $LOG_DIR --output_path $JSON_METRICS # Only run metrics if the target step is reached if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | map(tonumber) | max' $JSON_METRICS) -ge $MAX_STEPS ]]; then uv run tests/check_metrics.py $JSON_METRICS \ - 'mean(data["train/token_mult_prob_error"]) < 1.1' \ + 'median(data["train/token_mult_prob_error"]) < 1.1' \ 'data["train/token_mult_prob_error"]["30"] < 1.1' \ 'data["train/grad_norm"]["30"] < 0.5' \ 'data["train/grad_norm"]["30"] > 0.1' + + # Clean up checkpoint directory after successful run to save space. + rm -rf "$CKPT_DIR" fi diff --git a/tests/test_suites/llm/grpo-qwen2.5-7b-instruct-4n8g-megatron.sh b/tests/test_suites/llm/grpo-qwen2.5-7b-instruct-4n8g-megatron.sh index 45f354043a..30c205b0ee 100755 --- a/tests/test_suites/llm/grpo-qwen2.5-7b-instruct-4n8g-megatron.sh +++ b/tests/test_suites/llm/grpo-qwen2.5-7b-instruct-4n8g-megatron.sh @@ -34,8 +34,11 @@ uv run tests/json_dump_tb_logs.py $LOG_DIR --output_path $JSON_METRICS # Only run metrics if the target step is reached if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | map(tonumber) | max' $JSON_METRICS) -ge $MAX_STEPS ]]; then uv run tests/check_metrics.py $JSON_METRICS \ - 'mean(data["train/token_mult_prob_error"]) < 1.1' \ + 'median(data["train/token_mult_prob_error"]) < 1.1' \ 'data["train/token_mult_prob_error"]["30"] < 1.1' \ 'mean(data["train/reward"]) > 0.56' \ 'mean(data["timing/train/total_step_time"], 2) < 50' + + # Clean up checkpoint directory after successful run to save space. + rm -rf "$CKPT_DIR" fi diff --git a/tests/test_suites/llm/grpo-qwen2.5-math-1.5b-instruct-1n8g-fsdp2tp1.v3.sh b/tests/test_suites/llm/grpo-qwen2.5-math-1.5b-instruct-1n8g-fsdp2tp1.v3.sh index 35810c4eec..1c69a0cb9a 100755 --- a/tests/test_suites/llm/grpo-qwen2.5-math-1.5b-instruct-1n8g-fsdp2tp1.v3.sh +++ b/tests/test_suites/llm/grpo-qwen2.5-math-1.5b-instruct-1n8g-fsdp2tp1.v3.sh @@ -34,7 +34,10 @@ uv run tests/json_dump_tb_logs.py $LOG_DIR --output_path $JSON_METRICS # Only run metrics if the target step is reached if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | map(tonumber) | max' $JSON_METRICS) -ge $MAX_STEPS ]]; then uv run tests/check_metrics.py $JSON_METRICS \ - 'mean(data["train/token_mult_prob_error"]) < 1.1' \ + 'median(data["train/token_mult_prob_error"]) < 1.1' \ 'data["train/token_mult_prob_error"]["450"] < 1.1' \ 'mean(data["timing/train/total_step_time"], 2) < 25' + + # Clean up checkpoint directory after successful run to save space. + rm -rf "$CKPT_DIR" fi diff --git a/tests/test_suites/llm/grpo-qwen3-30ba3b-8n8g-megatron.sh b/tests/test_suites/llm/grpo-qwen3-30ba3b-8n8g-megatron.sh index f89041cd40..00883f4fd5 100755 --- a/tests/test_suites/llm/grpo-qwen3-30ba3b-8n8g-megatron.sh +++ b/tests/test_suites/llm/grpo-qwen3-30ba3b-8n8g-megatron.sh @@ -34,7 +34,10 @@ uv run tests/json_dump_tb_logs.py $LOG_DIR --output_path $JSON_METRICS # Only run metrics if the target step is reached if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | map(tonumber) | max' $JSON_METRICS) -ge $MAX_STEPS ]]; then uv run tests/check_metrics.py $JSON_METRICS \ - 'data["train/token_mult_prob_error"]["30"] < 1.1' \ + 'median(data["train/token_mult_prob_error"]) < 1.1' \ 'data["train/reward"]["30"] > 0.43' \ 'mean(data["timing/train/total_step_time"], -6, -1) < 220' + + # Clean up checkpoint directory after successful run to save space. + rm -rf "$CKPT_DIR" fi diff --git a/tests/test_suites/llm/grpo-qwen3-8b-base-1n8g-fp8-kvcache-megatron.sh b/tests/test_suites/llm/grpo-qwen3-8b-base-1n8g-fp8-kvcache-megatron.sh index d1068a7ffa..8289dc3c7d 100755 --- a/tests/test_suites/llm/grpo-qwen3-8b-base-1n8g-fp8-kvcache-megatron.sh +++ b/tests/test_suites/llm/grpo-qwen3-8b-base-1n8g-fp8-kvcache-megatron.sh @@ -36,5 +36,8 @@ if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | ma # With a few number of steps the logprob can have spikes that can move the average up. # Enabling fp8 kvcache can cause the logprob to be slightly higher than fp8 linear only path, so we allow a larger tolerance. uv run tests/check_metrics.py $JSON_METRICS \ - 'mean(data["train/token_mult_prob_error"], ignore_top_p=0.15) < 2.0' + 'median(data["train/token_mult_prob_error"]) < 2.0' + + # Clean up checkpoint directory after successful run to save space. + rm -rf "$CKPT_DIR" fi diff --git a/tests/test_suites/llm/performance/dapo-deepseek-v3-64n8g.sh b/tests/test_suites/llm/performance/dapo-deepseek-v3-64n8g.sh index 855d009566..21415712c5 100755 --- a/tests/test_suites/llm/performance/dapo-deepseek-v3-64n8g.sh +++ b/tests/test_suites/llm/performance/dapo-deepseek-v3-64n8g.sh @@ -42,6 +42,9 @@ uv run tests/json_dump_tb_logs.py $LOG_DIR --output_path $JSON_METRICS # Only run metrics if the target step is reached if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | map(tonumber) | max' $JSON_METRICS) -ge $MAX_STEPS ]]; then uv run tests/check_metrics.py $JSON_METRICS \ - 'mean(data["train/token_mult_prob_error"]) < 1.1' \ + 'median(data["train/token_mult_prob_error"]) < 1.1' \ 'data["train/token_mult_prob_error"]["10"] < 1.1' + + # Clean up checkpoint directory after successful run to save space. + rm -rf "$CKPT_DIR" fi diff --git a/tests/test_suites/llm/performance/grpo-deepseek-v3-32n4g.sh b/tests/test_suites/llm/performance/grpo-deepseek-v3-32n4g.sh index 738b38dd5b..cf1ae5047b 100755 --- a/tests/test_suites/llm/performance/grpo-deepseek-v3-32n4g.sh +++ b/tests/test_suites/llm/performance/grpo-deepseek-v3-32n4g.sh @@ -40,6 +40,9 @@ uv run tests/json_dump_tb_logs.py $LOG_DIR --output_path $JSON_METRICS # Only run metrics if the target step is reached if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | map(tonumber) | max' $JSON_METRICS) -ge $MAX_STEPS ]]; then uv run tests/check_metrics.py $JSON_METRICS \ - 'mean(data["train/token_mult_prob_error"]) < 1.1' \ + 'median(data["train/token_mult_prob_error"]) < 1.1' \ 'data["train/token_mult_prob_error"]["10"] < 1.1' + + # Clean up checkpoint directory after successful run to save space. + rm -rf "$CKPT_DIR" fi diff --git a/tests/test_suites/llm/performance/grpo-deepseek-v3-32n8g.sh b/tests/test_suites/llm/performance/grpo-deepseek-v3-32n8g.sh index 738b38dd5b..cf1ae5047b 100755 --- a/tests/test_suites/llm/performance/grpo-deepseek-v3-32n8g.sh +++ b/tests/test_suites/llm/performance/grpo-deepseek-v3-32n8g.sh @@ -40,6 +40,9 @@ uv run tests/json_dump_tb_logs.py $LOG_DIR --output_path $JSON_METRICS # Only run metrics if the target step is reached if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | map(tonumber) | max' $JSON_METRICS) -ge $MAX_STEPS ]]; then uv run tests/check_metrics.py $JSON_METRICS \ - 'mean(data["train/token_mult_prob_error"]) < 1.1' \ + 'median(data["train/token_mult_prob_error"]) < 1.1' \ 'data["train/token_mult_prob_error"]["10"] < 1.1' + + # Clean up checkpoint directory after successful run to save space. + rm -rf "$CKPT_DIR" fi diff --git a/tests/test_suites/llm/performance/grpo-deepseek-v3-64n4g-async-1off.sh b/tests/test_suites/llm/performance/grpo-deepseek-v3-64n4g-async-1off.sh index 14138486e1..298ac5b476 100755 --- a/tests/test_suites/llm/performance/grpo-deepseek-v3-64n4g-async-1off.sh +++ b/tests/test_suites/llm/performance/grpo-deepseek-v3-64n4g-async-1off.sh @@ -40,6 +40,9 @@ uv run tests/json_dump_tb_logs.py $LOG_DIR --output_path $JSON_METRICS # Only run metrics if the target step is reached if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | map(tonumber) | max' $JSON_METRICS) -ge $MAX_STEPS ]]; then uv run tests/check_metrics.py $JSON_METRICS \ - 'mean(data["train/token_mult_prob_error"]) < 1.1' \ + 'median(data["train/token_mult_prob_error"]) < 1.1' \ 'data["train/token_mult_prob_error"]["10"] < 1.1' + + # Clean up checkpoint directory after successful run to save space. + rm -rf "$CKPT_DIR" fi diff --git a/tests/test_suites/llm/performance/grpo-deepseek-v3-64n8g-async-1off.sh b/tests/test_suites/llm/performance/grpo-deepseek-v3-64n8g-async-1off.sh index 14138486e1..298ac5b476 100755 --- a/tests/test_suites/llm/performance/grpo-deepseek-v3-64n8g-async-1off.sh +++ b/tests/test_suites/llm/performance/grpo-deepseek-v3-64n8g-async-1off.sh @@ -40,6 +40,9 @@ uv run tests/json_dump_tb_logs.py $LOG_DIR --output_path $JSON_METRICS # Only run metrics if the target step is reached if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | map(tonumber) | max' $JSON_METRICS) -ge $MAX_STEPS ]]; then uv run tests/check_metrics.py $JSON_METRICS \ - 'mean(data["train/token_mult_prob_error"]) < 1.1' \ + 'median(data["train/token_mult_prob_error"]) < 1.1' \ 'data["train/token_mult_prob_error"]["10"] < 1.1' + + # Clean up checkpoint directory after successful run to save space. + rm -rf "$CKPT_DIR" fi diff --git a/tests/test_suites/llm/performance/grpo-deepseek-v3-64n8g-fp8-async-1off.sh b/tests/test_suites/llm/performance/grpo-deepseek-v3-64n8g-fp8-async-1off.sh index 14138486e1..298ac5b476 100755 --- a/tests/test_suites/llm/performance/grpo-deepseek-v3-64n8g-fp8-async-1off.sh +++ b/tests/test_suites/llm/performance/grpo-deepseek-v3-64n8g-fp8-async-1off.sh @@ -40,6 +40,9 @@ uv run tests/json_dump_tb_logs.py $LOG_DIR --output_path $JSON_METRICS # Only run metrics if the target step is reached if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | map(tonumber) | max' $JSON_METRICS) -ge $MAX_STEPS ]]; then uv run tests/check_metrics.py $JSON_METRICS \ - 'mean(data["train/token_mult_prob_error"]) < 1.1' \ + 'median(data["train/token_mult_prob_error"]) < 1.1' \ 'data["train/token_mult_prob_error"]["10"] < 1.1' + + # Clean up checkpoint directory after successful run to save space. + rm -rf "$CKPT_DIR" fi diff --git a/tests/test_suites/llm/performance/grpo-llama3.1-8b-instruct-2n4g-async-1off.sh b/tests/test_suites/llm/performance/grpo-llama3.1-8b-instruct-2n4g-async-1off.sh index e7636f3e93..2683cb8641 100755 --- a/tests/test_suites/llm/performance/grpo-llama3.1-8b-instruct-2n4g-async-1off.sh +++ b/tests/test_suites/llm/performance/grpo-llama3.1-8b-instruct-2n4g-async-1off.sh @@ -34,6 +34,9 @@ uv run tests/json_dump_tb_logs.py $LOG_DIR --output_path $JSON_METRICS # Only run metrics if the target step is reached if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | map(tonumber) | max' $JSON_METRICS) -ge $MAX_STEPS ]]; then uv run tests/check_metrics.py $JSON_METRICS \ - 'mean(data["train/token_mult_prob_error"]) < 1.1' \ + 'median(data["train/token_mult_prob_error"]) < 1.1' \ 'data["train/token_mult_prob_error"]["10"] < 1.1' + + # Clean up checkpoint directory after successful run to save space. + rm -rf "$CKPT_DIR" fi diff --git a/tests/test_suites/llm/performance/grpo-llama3.1-8b-instruct-2n4g.sh b/tests/test_suites/llm/performance/grpo-llama3.1-8b-instruct-2n4g.sh index e7636f3e93..2683cb8641 100755 --- a/tests/test_suites/llm/performance/grpo-llama3.1-8b-instruct-2n4g.sh +++ b/tests/test_suites/llm/performance/grpo-llama3.1-8b-instruct-2n4g.sh @@ -34,6 +34,9 @@ uv run tests/json_dump_tb_logs.py $LOG_DIR --output_path $JSON_METRICS # Only run metrics if the target step is reached if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | map(tonumber) | max' $JSON_METRICS) -ge $MAX_STEPS ]]; then uv run tests/check_metrics.py $JSON_METRICS \ - 'mean(data["train/token_mult_prob_error"]) < 1.1' \ + 'median(data["train/token_mult_prob_error"]) < 1.1' \ 'data["train/token_mult_prob_error"]["10"] < 1.1' + + # Clean up checkpoint directory after successful run to save space. + rm -rf "$CKPT_DIR" fi diff --git a/tests/test_suites/llm/performance/grpo-llama3.1-8b-instruct-2n8g-async-1off.sh b/tests/test_suites/llm/performance/grpo-llama3.1-8b-instruct-2n8g-async-1off.sh index e7636f3e93..2683cb8641 100755 --- a/tests/test_suites/llm/performance/grpo-llama3.1-8b-instruct-2n8g-async-1off.sh +++ b/tests/test_suites/llm/performance/grpo-llama3.1-8b-instruct-2n8g-async-1off.sh @@ -34,6 +34,9 @@ uv run tests/json_dump_tb_logs.py $LOG_DIR --output_path $JSON_METRICS # Only run metrics if the target step is reached if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | map(tonumber) | max' $JSON_METRICS) -ge $MAX_STEPS ]]; then uv run tests/check_metrics.py $JSON_METRICS \ - 'mean(data["train/token_mult_prob_error"]) < 1.1' \ + 'median(data["train/token_mult_prob_error"]) < 1.1' \ 'data["train/token_mult_prob_error"]["10"] < 1.1' + + # Clean up checkpoint directory after successful run to save space. + rm -rf "$CKPT_DIR" fi diff --git a/tests/test_suites/llm/performance/grpo-llama3.1-8b-instruct-2n8g-fp8-async-1off.sh b/tests/test_suites/llm/performance/grpo-llama3.1-8b-instruct-2n8g-fp8-async-1off.sh index e7636f3e93..2683cb8641 100755 --- a/tests/test_suites/llm/performance/grpo-llama3.1-8b-instruct-2n8g-fp8-async-1off.sh +++ b/tests/test_suites/llm/performance/grpo-llama3.1-8b-instruct-2n8g-fp8-async-1off.sh @@ -34,6 +34,9 @@ uv run tests/json_dump_tb_logs.py $LOG_DIR --output_path $JSON_METRICS # Only run metrics if the target step is reached if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | map(tonumber) | max' $JSON_METRICS) -ge $MAX_STEPS ]]; then uv run tests/check_metrics.py $JSON_METRICS \ - 'mean(data["train/token_mult_prob_error"]) < 1.1' \ + 'median(data["train/token_mult_prob_error"]) < 1.1' \ 'data["train/token_mult_prob_error"]["10"] < 1.1' + + # Clean up checkpoint directory after successful run to save space. + rm -rf "$CKPT_DIR" fi diff --git a/tests/test_suites/llm/performance/grpo-llama3.1-8b-instruct-2n8g.sh b/tests/test_suites/llm/performance/grpo-llama3.1-8b-instruct-2n8g.sh index e7636f3e93..2683cb8641 100755 --- a/tests/test_suites/llm/performance/grpo-llama3.1-8b-instruct-2n8g.sh +++ b/tests/test_suites/llm/performance/grpo-llama3.1-8b-instruct-2n8g.sh @@ -34,6 +34,9 @@ uv run tests/json_dump_tb_logs.py $LOG_DIR --output_path $JSON_METRICS # Only run metrics if the target step is reached if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | map(tonumber) | max' $JSON_METRICS) -ge $MAX_STEPS ]]; then uv run tests/check_metrics.py $JSON_METRICS \ - 'mean(data["train/token_mult_prob_error"]) < 1.1' \ + 'median(data["train/token_mult_prob_error"]) < 1.1' \ 'data["train/token_mult_prob_error"]["10"] < 1.1' + + # Clean up checkpoint directory after successful run to save space. + rm -rf "$CKPT_DIR" fi diff --git a/tests/test_suites/llm/performance/grpo-qwen3-235b-16n4g.sh b/tests/test_suites/llm/performance/grpo-qwen3-235b-16n4g.sh index 0f9bf9289f..c4d4a8148c 100755 --- a/tests/test_suites/llm/performance/grpo-qwen3-235b-16n4g.sh +++ b/tests/test_suites/llm/performance/grpo-qwen3-235b-16n4g.sh @@ -35,6 +35,9 @@ uv run tests/json_dump_tb_logs.py $LOG_DIR --output_path $JSON_METRICS # Only run metrics if the target step is reached if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | map(tonumber) | max' $JSON_METRICS) -ge $MAX_STEPS ]]; then uv run tests/check_metrics.py $JSON_METRICS \ - 'mean(data["train/token_mult_prob_error"]) < 1.1' \ + 'median(data["train/token_mult_prob_error"]) < 1.1' \ 'data["train/token_mult_prob_error"]["10"] < 1.1' + + # Clean up checkpoint directory after successful run to save space. + rm -rf "$CKPT_DIR" fi diff --git a/tests/test_suites/llm/performance/grpo-qwen3-235b-16n8g.sh b/tests/test_suites/llm/performance/grpo-qwen3-235b-16n8g.sh index 0f9bf9289f..c4d4a8148c 100755 --- a/tests/test_suites/llm/performance/grpo-qwen3-235b-16n8g.sh +++ b/tests/test_suites/llm/performance/grpo-qwen3-235b-16n8g.sh @@ -35,6 +35,9 @@ uv run tests/json_dump_tb_logs.py $LOG_DIR --output_path $JSON_METRICS # Only run metrics if the target step is reached if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | map(tonumber) | max' $JSON_METRICS) -ge $MAX_STEPS ]]; then uv run tests/check_metrics.py $JSON_METRICS \ - 'mean(data["train/token_mult_prob_error"]) < 1.1' \ + 'median(data["train/token_mult_prob_error"]) < 1.1' \ 'data["train/token_mult_prob_error"]["10"] < 1.1' + + # Clean up checkpoint directory after successful run to save space. + rm -rf "$CKPT_DIR" fi diff --git a/tests/test_suites/llm/performance/grpo-qwen3-235b-32n4g-async-1off.sh b/tests/test_suites/llm/performance/grpo-qwen3-235b-32n4g-async-1off.sh index f7dac553af..f05dd15028 100755 --- a/tests/test_suites/llm/performance/grpo-qwen3-235b-32n4g-async-1off.sh +++ b/tests/test_suites/llm/performance/grpo-qwen3-235b-32n4g-async-1off.sh @@ -35,6 +35,9 @@ uv run tests/json_dump_tb_logs.py $LOG_DIR --output_path $JSON_METRICS # Only run metrics if the target step is reached if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | map(tonumber) | max' $JSON_METRICS) -ge $MAX_STEPS ]]; then uv run tests/check_metrics.py $JSON_METRICS \ - 'mean(data["train/token_mult_prob_error"]) < 1.1' \ + 'median(data["train/token_mult_prob_error"]) < 1.1' \ 'data["train/token_mult_prob_error"]["10"] < 1.1' + + # Clean up checkpoint directory after successful run to save space. + rm -rf "$CKPT_DIR" fi diff --git a/tests/test_suites/llm/performance/grpo-qwen3-235b-32n8g-async-1off.sh b/tests/test_suites/llm/performance/grpo-qwen3-235b-32n8g-async-1off.sh index f7dac553af..f05dd15028 100755 --- a/tests/test_suites/llm/performance/grpo-qwen3-235b-32n8g-async-1off.sh +++ b/tests/test_suites/llm/performance/grpo-qwen3-235b-32n8g-async-1off.sh @@ -35,6 +35,9 @@ uv run tests/json_dump_tb_logs.py $LOG_DIR --output_path $JSON_METRICS # Only run metrics if the target step is reached if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | map(tonumber) | max' $JSON_METRICS) -ge $MAX_STEPS ]]; then uv run tests/check_metrics.py $JSON_METRICS \ - 'mean(data["train/token_mult_prob_error"]) < 1.1' \ + 'median(data["train/token_mult_prob_error"]) < 1.1' \ 'data["train/token_mult_prob_error"]["10"] < 1.1' + + # Clean up checkpoint directory after successful run to save space. + rm -rf "$CKPT_DIR" fi diff --git a/tests/test_suites/llm/performance/grpo-qwen3-30ba3b-24n8g-async-8off.sh b/tests/test_suites/llm/performance/grpo-qwen3-30ba3b-24n8g-async-8off.sh index 63a099e2e2..2f59ef7478 100755 --- a/tests/test_suites/llm/performance/grpo-qwen3-30ba3b-24n8g-async-8off.sh +++ b/tests/test_suites/llm/performance/grpo-qwen3-30ba3b-24n8g-async-8off.sh @@ -34,6 +34,9 @@ uv run tests/json_dump_tb_logs.py $LOG_DIR --output_path $JSON_METRICS # Only run metrics if the target step is reached if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | map(tonumber) | max' $JSON_METRICS) -ge $MAX_STEPS ]]; then uv run tests/check_metrics.py $JSON_METRICS \ - 'mean(data["train/token_mult_prob_error"]) < 1.1' \ + 'median(data["train/token_mult_prob_error"]) < 1.1' \ 'data["train/token_mult_prob_error"]["10"] < 1.1' + + # Clean up checkpoint directory after successful run to save space. + rm -rf "$CKPT_DIR" fi diff --git a/tests/test_suites/llm/performance/grpo-qwen3-30ba3b-4n4g.sh b/tests/test_suites/llm/performance/grpo-qwen3-30ba3b-4n4g.sh index 2a56609ffd..3fe6be1f96 100755 --- a/tests/test_suites/llm/performance/grpo-qwen3-30ba3b-4n4g.sh +++ b/tests/test_suites/llm/performance/grpo-qwen3-30ba3b-4n4g.sh @@ -34,7 +34,10 @@ uv run tests/json_dump_tb_logs.py $LOG_DIR --output_path $JSON_METRICS # Only run metrics if the target step is reached if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | map(tonumber) | max' $JSON_METRICS) -ge $MAX_STEPS ]]; then uv run tests/check_metrics.py $JSON_METRICS \ - 'mean(data["train/token_mult_prob_error"]) < 1.1' \ + 'median(data["train/token_mult_prob_error"]) < 1.1' \ 'data["train/token_mult_prob_error"]["10"] < 1.1' + + # Clean up checkpoint directory after successful run to save space. + rm -rf "$CKPT_DIR" fi diff --git a/tests/test_suites/llm/performance/grpo-qwen3-30ba3b-4n8g-async-1off.sh b/tests/test_suites/llm/performance/grpo-qwen3-30ba3b-4n8g-async-1off.sh index 0de5a124ed..4559fce26e 100755 --- a/tests/test_suites/llm/performance/grpo-qwen3-30ba3b-4n8g-async-1off.sh +++ b/tests/test_suites/llm/performance/grpo-qwen3-30ba3b-4n8g-async-1off.sh @@ -34,6 +34,9 @@ uv run tests/json_dump_tb_logs.py $LOG_DIR --output_path $JSON_METRICS # Only run metrics if the target step is reached if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | map(tonumber) | max' $JSON_METRICS) -ge $MAX_STEPS ]]; then uv run tests/check_metrics.py $JSON_METRICS \ - 'mean(data["train/token_mult_prob_error"]) < 1.1' \ + 'median(data["train/token_mult_prob_error"]) < 1.1' \ 'data["train/token_mult_prob_error"]["10"] < 1.1' + + # Clean up checkpoint directory after successful run to save space. + rm -rf "$CKPT_DIR" fi diff --git a/tests/test_suites/llm/performance/grpo-qwen3-30ba3b-4n8g.sh b/tests/test_suites/llm/performance/grpo-qwen3-30ba3b-4n8g.sh index 0de5a124ed..4559fce26e 100755 --- a/tests/test_suites/llm/performance/grpo-qwen3-30ba3b-4n8g.sh +++ b/tests/test_suites/llm/performance/grpo-qwen3-30ba3b-4n8g.sh @@ -34,6 +34,9 @@ uv run tests/json_dump_tb_logs.py $LOG_DIR --output_path $JSON_METRICS # Only run metrics if the target step is reached if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | map(tonumber) | max' $JSON_METRICS) -ge $MAX_STEPS ]]; then uv run tests/check_metrics.py $JSON_METRICS \ - 'mean(data["train/token_mult_prob_error"]) < 1.1' \ + 'median(data["train/token_mult_prob_error"]) < 1.1' \ 'data["train/token_mult_prob_error"]["10"] < 1.1' + + # Clean up checkpoint directory after successful run to save space. + rm -rf "$CKPT_DIR" fi diff --git a/tests/test_suites/llm/performance/grpo-qwen3-30ba3b-8n4g-async-1off.sh b/tests/test_suites/llm/performance/grpo-qwen3-30ba3b-8n4g-async-1off.sh index 8350d128e8..9cfa306af8 100755 --- a/tests/test_suites/llm/performance/grpo-qwen3-30ba3b-8n4g-async-1off.sh +++ b/tests/test_suites/llm/performance/grpo-qwen3-30ba3b-8n4g-async-1off.sh @@ -34,7 +34,10 @@ uv run tests/json_dump_tb_logs.py $LOG_DIR --output_path $JSON_METRICS # Only run metrics if the target step is reached if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | map(tonumber) | max' $JSON_METRICS) -ge $MAX_STEPS ]]; then uv run tests/check_metrics.py $JSON_METRICS \ - 'mean(data["train/token_mult_prob_error"]) < 1.1' \ + 'median(data["train/token_mult_prob_error"]) < 1.1' \ 'data["train/token_mult_prob_error"]["10"] < 1.1' + + # Clean up checkpoint directory after successful run to save space. + rm -rf "$CKPT_DIR" fi diff --git a/tests/test_suites/llm/performance/grpo-qwen3-32b-4n4g.sh b/tests/test_suites/llm/performance/grpo-qwen3-32b-4n4g.sh index 2a56609ffd..3fe6be1f96 100755 --- a/tests/test_suites/llm/performance/grpo-qwen3-32b-4n4g.sh +++ b/tests/test_suites/llm/performance/grpo-qwen3-32b-4n4g.sh @@ -34,7 +34,10 @@ uv run tests/json_dump_tb_logs.py $LOG_DIR --output_path $JSON_METRICS # Only run metrics if the target step is reached if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | map(tonumber) | max' $JSON_METRICS) -ge $MAX_STEPS ]]; then uv run tests/check_metrics.py $JSON_METRICS \ - 'mean(data["train/token_mult_prob_error"]) < 1.1' \ + 'median(data["train/token_mult_prob_error"]) < 1.1' \ 'data["train/token_mult_prob_error"]["10"] < 1.1' + + # Clean up checkpoint directory after successful run to save space. + rm -rf "$CKPT_DIR" fi diff --git a/tests/test_suites/llm/performance/grpo-qwen3-32b-4n8g.sh b/tests/test_suites/llm/performance/grpo-qwen3-32b-4n8g.sh index 0de5a124ed..4559fce26e 100755 --- a/tests/test_suites/llm/performance/grpo-qwen3-32b-4n8g.sh +++ b/tests/test_suites/llm/performance/grpo-qwen3-32b-4n8g.sh @@ -34,6 +34,9 @@ uv run tests/json_dump_tb_logs.py $LOG_DIR --output_path $JSON_METRICS # Only run metrics if the target step is reached if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | map(tonumber) | max' $JSON_METRICS) -ge $MAX_STEPS ]]; then uv run tests/check_metrics.py $JSON_METRICS \ - 'mean(data["train/token_mult_prob_error"]) < 1.1' \ + 'median(data["train/token_mult_prob_error"]) < 1.1' \ 'data["train/token_mult_prob_error"]["10"] < 1.1' + + # Clean up checkpoint directory after successful run to save space. + rm -rf "$CKPT_DIR" fi diff --git a/tests/test_suites/llm/performance/grpo-qwen3-32b-8n4g-async-1off.sh b/tests/test_suites/llm/performance/grpo-qwen3-32b-8n4g-async-1off.sh index 35d58c98f7..6bd6c237cb 100755 --- a/tests/test_suites/llm/performance/grpo-qwen3-32b-8n4g-async-1off.sh +++ b/tests/test_suites/llm/performance/grpo-qwen3-32b-8n4g-async-1off.sh @@ -34,6 +34,9 @@ uv run tests/json_dump_tb_logs.py $LOG_DIR --output_path $JSON_METRICS # Only run metrics if the target step is reached if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | map(tonumber) | max' $JSON_METRICS) -ge $MAX_STEPS ]]; then uv run tests/check_metrics.py $JSON_METRICS \ - 'mean(data["train/token_mult_prob_error"]) < 1.1' \ + 'median(data["train/token_mult_prob_error"]) < 1.1' \ 'data["train/token_mult_prob_error"]["10"] < 1.1' + + # Clean up checkpoint directory after successful run to save space. + rm -rf "$CKPT_DIR" fi diff --git a/tests/test_suites/llm/performance/grpo-qwen3-32b-8n8g-async-1off.sh b/tests/test_suites/llm/performance/grpo-qwen3-32b-8n8g-async-1off.sh index 35d58c98f7..6bd6c237cb 100755 --- a/tests/test_suites/llm/performance/grpo-qwen3-32b-8n8g-async-1off.sh +++ b/tests/test_suites/llm/performance/grpo-qwen3-32b-8n8g-async-1off.sh @@ -34,6 +34,9 @@ uv run tests/json_dump_tb_logs.py $LOG_DIR --output_path $JSON_METRICS # Only run metrics if the target step is reached if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | map(tonumber) | max' $JSON_METRICS) -ge $MAX_STEPS ]]; then uv run tests/check_metrics.py $JSON_METRICS \ - 'mean(data["train/token_mult_prob_error"]) < 1.1' \ + 'median(data["train/token_mult_prob_error"]) < 1.1' \ 'data["train/token_mult_prob_error"]["10"] < 1.1' + + # Clean up checkpoint directory after successful run to save space. + rm -rf "$CKPT_DIR" fi diff --git a/tests/test_suites/llm/sft-gpt-oss-20b-1n8g-fsdp8ep8-automodel.sh b/tests/test_suites/llm/sft-gpt-oss-20b-1n8g-fsdp8ep8-automodel.sh index 9f48544b42..8fb4d1b80b 100755 --- a/tests/test_suites/llm/sft-gpt-oss-20b-1n8g-fsdp8ep8-automodel.sh +++ b/tests/test_suites/llm/sft-gpt-oss-20b-1n8g-fsdp8ep8-automodel.sh @@ -38,4 +38,7 @@ if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | ma 'data["train/loss"]["50"] < 0.4' \ 'data["train/grad_norm"]["50"] < 17.5' \ 'data["train/grad_norm"]["50"] > 10.0' + + # Clean up checkpoint directory after successful run to save space. + rm -rf "$CKPT_DIR" fi diff --git a/tests/test_suites/llm/sft-llama3.1-70b-8n8g-tp4pp2-long-megatron.sh b/tests/test_suites/llm/sft-llama3.1-70b-8n8g-tp4pp2-long-megatron.sh index 718322e33a..c13295e6a8 100755 --- a/tests/test_suites/llm/sft-llama3.1-70b-8n8g-tp4pp2-long-megatron.sh +++ b/tests/test_suites/llm/sft-llama3.1-70b-8n8g-tp4pp2-long-megatron.sh @@ -39,4 +39,7 @@ if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | ma 'data["train/loss"]["300"] < 0.285' \ 'max(data["ray/node.0.gpu.0.mem_gb"]) < 70' \ 'mean(data["timing/train/total_step_time"], 2) < 20' + + # Clean up checkpoint directory after successful run to save space. + rm -rf "$CKPT_DIR" fi diff --git a/tests/test_suites/llm/sft-llama3.1-8b-1n8g-fsdp2tp1-dynamicbatch.sh b/tests/test_suites/llm/sft-llama3.1-8b-1n8g-fsdp2tp1-dynamicbatch.sh index d5dfde39b9..ff2b2f3625 100755 --- a/tests/test_suites/llm/sft-llama3.1-8b-1n8g-fsdp2tp1-dynamicbatch.sh +++ b/tests/test_suites/llm/sft-llama3.1-8b-1n8g-fsdp2tp1-dynamicbatch.sh @@ -39,4 +39,7 @@ if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | ma 'data["train/loss"]["250"] < 0.36' \ 'max(data["ray/node.0.gpu.0.mem_gb"]) < 70' \ 'mean(data["timing/train/total_step_time"], -6, -1) < 10' + + # Clean up checkpoint directory after successful run to save space. + rm -rf "$CKPT_DIR" fi diff --git a/tests/test_suites/llm/sft-llama3.1-8b-1n8g-fsdp2tp1-long.sh b/tests/test_suites/llm/sft-llama3.1-8b-1n8g-fsdp2tp1-long.sh index 4b243e8fe9..077102dc98 100755 --- a/tests/test_suites/llm/sft-llama3.1-8b-1n8g-fsdp2tp1-long.sh +++ b/tests/test_suites/llm/sft-llama3.1-8b-1n8g-fsdp2tp1-long.sh @@ -39,4 +39,7 @@ if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | ma 'data["train/loss"]["250"] < 0.36' \ 'max(data["ray/node.0.gpu.0.mem_gb"]) < 80' \ 'mean(data["timing/train/total_step_time"], 2) < 22' + + # Clean up checkpoint directory after successful run to save space. + rm -rf "$CKPT_DIR" fi diff --git a/tests/test_suites/llm/sft-llama3.1-8b-1n8g-fsdp2tp1-lora.sh b/tests/test_suites/llm/sft-llama3.1-8b-1n8g-fsdp2tp1-lora.sh index b1a21e8f06..b2ff16b155 100755 --- a/tests/test_suites/llm/sft-llama3.1-8b-1n8g-fsdp2tp1-lora.sh +++ b/tests/test_suites/llm/sft-llama3.1-8b-1n8g-fsdp2tp1-lora.sh @@ -40,4 +40,7 @@ if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | ma 'data["train/loss"]["50"] < 0.8' \ 'max(data["ray/node.0.gpu.0.mem_gb"]) < 50' \ 'mean(data["timing/train/total_step_time"], 2) < 10' + + # Clean up checkpoint directory after successful run to save space. + rm -rf "$CKPT_DIR" fi \ No newline at end of file diff --git a/tests/test_suites/llm/sft-llama3.1-8b-1n8g-fsdp2tp2.sh b/tests/test_suites/llm/sft-llama3.1-8b-1n8g-fsdp2tp2.sh index 87ca1e9dad..18f2dd8f59 100755 --- a/tests/test_suites/llm/sft-llama3.1-8b-1n8g-fsdp2tp2.sh +++ b/tests/test_suites/llm/sft-llama3.1-8b-1n8g-fsdp2tp2.sh @@ -40,4 +40,7 @@ if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | ma 'data["train/loss"]["50"] < 0.38' \ 'max(data["ray/node.0.gpu.0.mem_gb"]) < 70' \ 'mean(data["timing/train/total_step_time"], 2) < 32' + + # Clean up checkpoint directory after successful run to save space. + rm -rf "$CKPT_DIR" fi diff --git a/tests/test_suites/llm/sft-llama3.1-8b-1n8g-megatron-seqpack.sh b/tests/test_suites/llm/sft-llama3.1-8b-1n8g-megatron-seqpack.sh index e063b39861..89aa5b184a 100755 --- a/tests/test_suites/llm/sft-llama3.1-8b-1n8g-megatron-seqpack.sh +++ b/tests/test_suites/llm/sft-llama3.1-8b-1n8g-megatron-seqpack.sh @@ -36,4 +36,7 @@ if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | ma 'data["train/loss"]["1"] < 0.6' \ 'data["train/loss"]["250"] < 0.36' \ 'mean(data["timing/train/total_step_time"], 2) < 6' + + # Clean up checkpoint directory after successful run to save space. + rm -rf "$CKPT_DIR" fi diff --git a/tests/test_suites/llm/sft-llama3.1-8b-1n8g-megatron.sh b/tests/test_suites/llm/sft-llama3.1-8b-1n8g-megatron.sh index 8ef0dfafe6..81ea9f2f6b 100755 --- a/tests/test_suites/llm/sft-llama3.1-8b-1n8g-megatron.sh +++ b/tests/test_suites/llm/sft-llama3.1-8b-1n8g-megatron.sh @@ -36,4 +36,7 @@ if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | ma 'data["train/loss"]["1"] < 0.6' \ 'data["train/loss"]["250"] < 0.36' \ 'mean(data["timing/train/total_step_time"], 2) < 20' + + # Clean up checkpoint directory after successful run to save space. + rm -rf "$CKPT_DIR" fi diff --git a/tests/test_suites/llm/sft-llama3.2-1b-1n8g-fsdp2tp1.v3.sh b/tests/test_suites/llm/sft-llama3.2-1b-1n8g-fsdp2tp1.v3.sh index b5edc8043e..ec58e72f00 100755 --- a/tests/test_suites/llm/sft-llama3.2-1b-1n8g-fsdp2tp1.v3.sh +++ b/tests/test_suites/llm/sft-llama3.2-1b-1n8g-fsdp2tp1.v3.sh @@ -40,4 +40,7 @@ if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | ma 'mean(data["timing/train/total_step_time"], -6, -1) < 0.7' # mean(data["train/loss"],-10,-1) observed to be 0.5557474825117323 # timing/train/total_step_time observed 0.6-0.64 + + # Clean up checkpoint directory after successful run to save space. + rm -rf "$CKPT_DIR" fi \ No newline at end of file diff --git a/tests/test_suites/llm/sft-nanov3-30BA3B-2n8g-fsdp2-lora.sh b/tests/test_suites/llm/sft-nanov3-30BA3B-2n8g-fsdp2-lora.sh index 445dc48b5a..ed274503e8 100755 --- a/tests/test_suites/llm/sft-nanov3-30BA3B-2n8g-fsdp2-lora.sh +++ b/tests/test_suites/llm/sft-nanov3-30BA3B-2n8g-fsdp2-lora.sh @@ -35,4 +35,7 @@ if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | ma uv run tests/check_metrics.py $JSON_METRICS \ 'data["train/loss"]["20"] < 2.05' \ 'mean(data["timing/train/total_step_time"], 2) < 18' + + # Clean up checkpoint directory after successful run to save space. + rm -rf "$CKPT_DIR" fi diff --git a/tests/test_suites/llm/sft-nanov3-30BA3B-2n8g-fsdp2.sh b/tests/test_suites/llm/sft-nanov3-30BA3B-2n8g-fsdp2.sh index ec0e22bf6b..782d891d5d 100755 --- a/tests/test_suites/llm/sft-nanov3-30BA3B-2n8g-fsdp2.sh +++ b/tests/test_suites/llm/sft-nanov3-30BA3B-2n8g-fsdp2.sh @@ -35,4 +35,7 @@ if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | ma uv run tests/check_metrics.py $JSON_METRICS \ 'data["train/loss"]["20"] < 2.05' \ 'mean(data["timing/train/total_step_time"], 2) < 15' + + # Clean up checkpoint directory after successful run to save space. + rm -rf "$CKPT_DIR" fi diff --git a/tests/test_suites/llm/sft-qwen2.5-32b-4n8g-fsdp2tp8sp-actckpt.v3.sh b/tests/test_suites/llm/sft-qwen2.5-32b-4n8g-fsdp2tp8sp-actckpt.v3.sh index 3b987df72b..799a04c300 100755 --- a/tests/test_suites/llm/sft-qwen2.5-32b-4n8g-fsdp2tp8sp-actckpt.v3.sh +++ b/tests/test_suites/llm/sft-qwen2.5-32b-4n8g-fsdp2tp8sp-actckpt.v3.sh @@ -40,4 +40,7 @@ if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | ma 'data["train/loss"]["1"] < 0.37' \ 'mean(data["train/loss"], 16) < 0.31' \ 'max(data["ray/node.0.gpu.0.mem_gb"]) < 35' + + # Clean up checkpoint directory after successful run to save space. + rm -rf "$CKPT_DIR" fi diff --git a/tests/test_suites/llm/sft-qwen2.5-math7b-2n8g-megatron.sh b/tests/test_suites/llm/sft-qwen2.5-math7b-2n8g-megatron.sh index 897f4fbb60..1ce7203203 100755 --- a/tests/test_suites/llm/sft-qwen2.5-math7b-2n8g-megatron.sh +++ b/tests/test_suites/llm/sft-qwen2.5-math7b-2n8g-megatron.sh @@ -40,4 +40,7 @@ if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | ma uv run tests/check_metrics.py $JSON_METRICS \ 'data["train/loss"]["80"] < 0.301' \ 'data["validation/val_loss"]["80"] < 0.304' + + # Clean up checkpoint directory after successful run to save space. + rm -rf "$CKPT_DIR" fi diff --git a/tests/test_suites/vlm/vlm_grpo-qwen2.5-vl-3b-instruct-clevr-1n8g-dtensor2tp1.v1.sh b/tests/test_suites/vlm/vlm_grpo-qwen2.5-vl-3b-instruct-clevr-1n8g-dtensor2tp1.v1.sh index fb53624b94..386263ba3d 100755 --- a/tests/test_suites/vlm/vlm_grpo-qwen2.5-vl-3b-instruct-clevr-1n8g-dtensor2tp1.v1.sh +++ b/tests/test_suites/vlm/vlm_grpo-qwen2.5-vl-3b-instruct-clevr-1n8g-dtensor2tp1.v1.sh @@ -35,5 +35,8 @@ uv run tests/json_dump_tb_logs.py $LOG_DIR --output_path $JSON_METRICS if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | map(tonumber) | max' $JSON_METRICS) -ge $MAX_STEPS ]]; then uv run tests/check_metrics.py $JSON_METRICS \ 'data["train/reward"]["200"] > 0.9' + + # Clean up checkpoint directory after successful run to save space. + rm -rf "$CKPT_DIR" fi diff --git a/tests/test_suites/vlm/vlm_grpo-qwen2.5-vl-3b-instruct-clevr-1n8g-megatrontp2.v1.sh b/tests/test_suites/vlm/vlm_grpo-qwen2.5-vl-3b-instruct-clevr-1n8g-megatrontp2.v1.sh index 814c822f1b..bbd490e4c0 100755 --- a/tests/test_suites/vlm/vlm_grpo-qwen2.5-vl-3b-instruct-clevr-1n8g-megatrontp2.v1.sh +++ b/tests/test_suites/vlm/vlm_grpo-qwen2.5-vl-3b-instruct-clevr-1n8g-megatrontp2.v1.sh @@ -36,5 +36,8 @@ if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | ma uv run tests/check_metrics.py $JSON_METRICS \ 'data["train/loss"]["200"] < 0.1' \ 'data["train/reward"]["200"] > 0.9' + + # Clean up checkpoint directory after successful run to save space. + rm -rf "$CKPT_DIR" fi diff --git a/tests/unit/test_check_metrics.py b/tests/unit/test_check_metrics.py index 313801531e..73cb08f469 100644 --- a/tests/unit/test_check_metrics.py +++ b/tests/unit/test_check_metrics.py @@ -21,7 +21,7 @@ tests_dir = Path(__file__).parent.parent sys.path.insert(0, str(tests_dir)) -from check_metrics import evaluate_check, max, mean, min, ratio_above +from check_metrics import evaluate_check, max, mean, median, min, ratio_above class TestMeanFunction: @@ -405,3 +405,121 @@ def test_ratio_above_combined_with_mean_ignore_top_p(self): # Check that exactly 5% are above threshold ratio = ratio_above(data["metric"], 5.0) assert ratio == 0.05 + + +class TestMedianFunction: + """Test the median function with various scenarios.""" + + def test_basic_median_odd_count(self): + """Test basic median calculation with odd number of values.""" + data = {"1": 1.0, "2": 2.0, "3": 3.0, "4": 4.0, "5": 5.0} + result = median(data) + assert result == 3.0 + + def test_basic_median_even_count(self): + """Test basic median calculation with even number of values.""" + data = {"1": 1.0, "2": 2.0, "3": 3.0, "4": 4.0} + result = median(data) + assert result == 2.5 # (2+3)/2 + + def test_median_with_outliers(self): + """Test that median is robust to outliers (unlike mean).""" + # Data with one severe outlier + data = {"1": 1.0, "2": 2.0, "3": 3.0, "4": 4.0, "5": 100.0} + + # Median should be unaffected by the outlier + result = median(data) + assert result == 3.0 # Middle value, ignores the outlier + + # Compare with mean which would be 22.0 + result_mean = mean(data) + assert result_mean == 22.0 + + def test_median_with_range(self): + """Test median with range_start and range_end.""" + data = {str(i): float(i) for i in range(1, 11)} # 1-10 + + # Get median of steps 3-7 (values 3, 4, 5, 6) + result = median(data, range_start=3, range_end=7) + assert result == 4.5 # (4+5)/2 + + def test_median_with_offset(self): + """Test median calculation with step offset (from checkpoint resume).""" + # Simulate a checkpoint resume scenario + # Steps 101-105 (resumed from step 100) + data = {"101": 1.0, "102": 2.0, "103": 3.0, "104": 4.0, "105": 5.0} + result = median(data) + assert result == 3.0 + + def test_median_with_negative_range(self): + """Test median with negative range indices.""" + data = {str(i): float(i) for i in range(1, 11)} # 1-10 + + # Last 3 values (8, 9, 10) + result = median(data, range_start=-3, range_end=0) + assert result == 9.0 + + def test_median_with_floats_and_strings(self): + """Test that string values are properly converted to floats.""" + data = {"1": "1.5", "2": "2.5", "3": "3.5"} + result = median(data) + assert result == 2.5 + + def test_median_single_value(self): + """Test median with single value.""" + data = {"1": 42.0} + result = median(data) + assert result == 42.0 + + def test_median_two_values(self): + """Test median with two values.""" + data = {"1": 1.0, "2": 10.0} + result = median(data) + assert result == 5.5 # (1+10)/2 + + def test_median_all_same_values(self): + """Test median with all same values.""" + data = {str(i): 5.0 for i in range(1, 11)} + result = median(data) + assert result == 5.0 + + def test_median_vs_mean_outlier_robustness(self): + """Demonstrate why median is preferred for outlier-prone data.""" + # Simulate token_mult_prob_error with outliers + data = {str(i): 1.0 for i in range(1, 20)} + data["20"] = 100.0 # Large outlier + + # Median is robust + median_result = median(data) + assert median_result == 1.0 + + # Mean is affected + mean_result = mean(data) + assert mean_result == 5.95 # (19 * 1.0 + 100) / 20 + + def test_evaluate_check_with_median(self): + """Test evaluate_check with median function.""" + data = {"accuracy": {"1": 0.8, "2": 0.9, "3": 0.95, "4": 0.85, "5": 100.0}} + + # Median should be robust to the outlier + passed, _, value = evaluate_check(data, "median(data['accuracy']) < 1.0") + assert passed is True + assert value == 0.9 # Middle value + + def test_median_token_mult_prob_error_scenario(self): + """Test the exact scenario for which median is being used.""" + # Simulate token_mult_prob_error with some outliers + data = { + "train/token_mult_prob_error": { + str(i): 1.0 + (i % 3) * 0.01 for i in range(1, 20) + } + } + # Add outlier + data["train/token_mult_prob_error"]["20"] = 5.0 + + # Median should pass the check even with the outlier + passed, _, value = evaluate_check( + data, 'median(data["train/token_mult_prob_error"]) < 1.05' + ) + assert passed is True + assert value < 1.05 From 6e4c7d3237ebe0ae7cf4d5f229e005547a02b93d Mon Sep 17 00:00:00 2001 From: Terry Kong Date: Tue, 6 Jan 2026 20:00:23 -0800 Subject: [PATCH 34/52] fix: gemma3 27b must now have skip_tokenizer_init=False in vllm (#1721) Signed-off-by: Terry Kong Signed-off-by: Parth Mannan --- nemo_rl/models/generation/vllm/vllm_worker.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/nemo_rl/models/generation/vllm/vllm_worker.py b/nemo_rl/models/generation/vllm/vllm_worker.py index 75e3334d4a..d2de455c22 100644 --- a/nemo_rl/models/generation/vllm/vllm_worker.py +++ b/nemo_rl/models/generation/vllm/vllm_worker.py @@ -388,6 +388,14 @@ def _patch_vllm_vit_flash_attn_backend(): ) # disable quantization vllm_kwargs["hf_overrides"]["quantization_config"] = {} + elif "Gemma3ForConditionalGeneration" in getattr( + hf_config, "architectures", [] + ): + if self.cfg["vllm_cfg"]["skip_tokenizer_init"]: + print( + "Gemma3ForConditionalGeneration models may crash when skip_tokenizer_init is True. NeMo-RL is forcing it to False for this architecture. See https://github.com/NVIDIA-NeMo/RL/issues/1681 for more details." + ) + self.cfg["vllm_cfg"]["skip_tokenizer_init"] = False llm_kwargs = dict( model=self.model_name, From d3e219b7fef00770f833b2ce944d4017dd676c0e Mon Sep 17 00:00:00 2001 From: Terry Kong Date: Wed, 7 Jan 2026 02:04:47 -0800 Subject: [PATCH 35/52] fix: fix several nightly tests that were flaky (#1724) Signed-off-by: Terry Kong Signed-off-by: Parth Mannan --- examples/configs/recipes/llm/dapo-qwen2.5-7b.yaml | 2 +- .../llm/dpo-llama3.1-8b-instruct-4n8g-fsdp2tp4.sh | 2 +- .../llm/dpo-llama3.1-8b-instruct-4n8g-megatron.v2.sh | 2 +- tests/test_suites/llm/performance/grpo-qwen3-235b-16n8g.sh | 3 ++- .../llm/performance/grpo-qwen3-235b-32n8g-async-1off.sh | 1 + .../llm/sft-llama3.1-70b-8n8g-tp4pp2-long-megatron.sh | 1 - .../llm/sft-llama3.1-8b-1n8g-fsdp2tp1-dynamicbatch.sh | 3 ++- tests/test_suites/llm/sft-llama3.2-1b-1n8g-fsdp2tp1.v3.sh | 2 +- tests/test_suites/llm/sft-nanov3-30BA3B-2n8g-fsdp2-lora.sh | 2 +- tests/test_suites/llm/sft-nanov3-30BA3B-2n8g-fsdp2.sh | 2 +- tests/unit/test_recipes_and_test_suites.py | 6 +++--- 11 files changed, 14 insertions(+), 12 deletions(-) diff --git a/examples/configs/recipes/llm/dapo-qwen2.5-7b.yaml b/examples/configs/recipes/llm/dapo-qwen2.5-7b.yaml index 29ee217517..1fce7d82d4 100644 --- a/examples/configs/recipes/llm/dapo-qwen2.5-7b.yaml +++ b/examples/configs/recipes/llm/dapo-qwen2.5-7b.yaml @@ -29,7 +29,7 @@ checkpointing: checkpoint_dir: results/dapo-qwen2.5-7b keep_top_k: 5 save_period: 5 - model_save_format: "dcp" + model_save_format: null policy: model_name: Qwen/Qwen2.5-Math-7B hf_config_overrides: diff --git a/tests/test_suites/llm/dpo-llama3.1-8b-instruct-4n8g-fsdp2tp4.sh b/tests/test_suites/llm/dpo-llama3.1-8b-instruct-4n8g-fsdp2tp4.sh index 82b240f0dc..5e5fe4d0e1 100755 --- a/tests/test_suites/llm/dpo-llama3.1-8b-instruct-4n8g-fsdp2tp4.sh +++ b/tests/test_suites/llm/dpo-llama3.1-8b-instruct-4n8g-fsdp2tp4.sh @@ -34,7 +34,7 @@ uv run tests/json_dump_tb_logs.py $LOG_DIR --output_path $JSON_METRICS # Only run metrics if the target step is reached if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | map(tonumber) | max' $JSON_METRICS) -ge $MAX_STEPS ]]; then uv run tests/check_metrics.py $JSON_METRICS \ - 'data["train/loss"]["1"] < 3.6' \ + 'data["train/loss"]["1"] < 3.65' \ 'data["train/loss"]["150"] < 3.0' \ 'data["train/preference_loss"]["1"] > 0.69314' \ 'data["train/preference_loss"]["1"] < 0.69316' \ diff --git a/tests/test_suites/llm/dpo-llama3.1-8b-instruct-4n8g-megatron.v2.sh b/tests/test_suites/llm/dpo-llama3.1-8b-instruct-4n8g-megatron.v2.sh index 511386b2d3..7a98815ec7 100755 --- a/tests/test_suites/llm/dpo-llama3.1-8b-instruct-4n8g-megatron.v2.sh +++ b/tests/test_suites/llm/dpo-llama3.1-8b-instruct-4n8g-megatron.v2.sh @@ -34,7 +34,7 @@ uv run tests/json_dump_tb_logs.py $LOG_DIR --output_path $JSON_METRICS # Only run metrics if the target step is reached if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | map(tonumber) | max' $JSON_METRICS) -ge $MAX_STEPS ]]; then uv run tests/check_metrics.py $JSON_METRICS \ - 'data["train/loss"]["1"] < 3.6' \ + 'data["train/loss"]["1"] < 3.65' \ 'data["train/loss"]["150"] < 3.0' \ 'data["train/preference_loss"]["1"] > 0.69314' \ 'data["train/preference_loss"]["1"] < 0.69316' \ diff --git a/tests/test_suites/llm/performance/grpo-qwen3-235b-16n8g.sh b/tests/test_suites/llm/performance/grpo-qwen3-235b-16n8g.sh index c4d4a8148c..6275de3070 100755 --- a/tests/test_suites/llm/performance/grpo-qwen3-235b-16n8g.sh +++ b/tests/test_suites/llm/performance/grpo-qwen3-235b-16n8g.sh @@ -9,7 +9,7 @@ NUM_NODES=16 STEPS_PER_RUN=10 MAX_STEPS=10 NUM_RUNS=$(( (MAX_STEPS + STEPS_PER_RUN - 1) / STEPS_PER_RUN )) # Round up -NUM_MINUTES=100 +NUM_MINUTES=115 # ===== END CONFIG ===== exit_if_max_steps_reached @@ -24,6 +24,7 @@ uv run examples/run_grpo_math.py \ logger.wandb.project=nemo-rl \ logger.wandb.name=$EXP_NAME \ logger.monitor_gpus=True \ + logger.tensorboard_enabled=True \ checkpointing.enabled=True \ checkpointing.checkpoint_dir=$CKPT_DIR \ $@ \ diff --git a/tests/test_suites/llm/performance/grpo-qwen3-235b-32n8g-async-1off.sh b/tests/test_suites/llm/performance/grpo-qwen3-235b-32n8g-async-1off.sh index f05dd15028..e9b20f4816 100755 --- a/tests/test_suites/llm/performance/grpo-qwen3-235b-32n8g-async-1off.sh +++ b/tests/test_suites/llm/performance/grpo-qwen3-235b-32n8g-async-1off.sh @@ -24,6 +24,7 @@ uv run examples/run_grpo_math.py \ logger.wandb.project=nemo-rl \ logger.wandb.name=$EXP_NAME \ logger.monitor_gpus=True \ + logger.tensorboard_enabled=True \ checkpointing.enabled=True \ checkpointing.checkpoint_dir=$CKPT_DIR \ $@ \ diff --git a/tests/test_suites/llm/sft-llama3.1-70b-8n8g-tp4pp2-long-megatron.sh b/tests/test_suites/llm/sft-llama3.1-70b-8n8g-tp4pp2-long-megatron.sh index c13295e6a8..99f264e910 100755 --- a/tests/test_suites/llm/sft-llama3.1-70b-8n8g-tp4pp2-long-megatron.sh +++ b/tests/test_suites/llm/sft-llama3.1-70b-8n8g-tp4pp2-long-megatron.sh @@ -37,7 +37,6 @@ if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | ma uv run tests/check_metrics.py $JSON_METRICS \ 'data["train/loss"]["1"] < 0.55' \ 'data["train/loss"]["300"] < 0.285' \ - 'max(data["ray/node.0.gpu.0.mem_gb"]) < 70' \ 'mean(data["timing/train/total_step_time"], 2) < 20' # Clean up checkpoint directory after successful run to save space. diff --git a/tests/test_suites/llm/sft-llama3.1-8b-1n8g-fsdp2tp1-dynamicbatch.sh b/tests/test_suites/llm/sft-llama3.1-8b-1n8g-fsdp2tp1-dynamicbatch.sh index ff2b2f3625..65362c2eb1 100755 --- a/tests/test_suites/llm/sft-llama3.1-8b-1n8g-fsdp2tp1-dynamicbatch.sh +++ b/tests/test_suites/llm/sft-llama3.1-8b-1n8g-fsdp2tp1-dynamicbatch.sh @@ -34,10 +34,11 @@ uv run tests/json_dump_tb_logs.py $LOG_DIR --output_path $JSON_METRICS # TODO: the memory check is known to OOM. see https://github.com/NVIDIA-NeMo/RL/issues/263 # Only run metrics if the target step is reached if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | map(tonumber) | max' $JSON_METRICS) -ge $MAX_STEPS ]]; then + # Last observed memory around 72.6 (But can be noisy) uv run tests/check_metrics.py $JSON_METRICS \ 'data["train/loss"]["1"] < 0.6' \ 'data["train/loss"]["250"] < 0.36' \ - 'max(data["ray/node.0.gpu.0.mem_gb"]) < 70' \ + 'max(data["ray/node.0.gpu.0.mem_gb"]) < 75' \ 'mean(data["timing/train/total_step_time"], -6, -1) < 10' # Clean up checkpoint directory after successful run to save space. diff --git a/tests/test_suites/llm/sft-llama3.2-1b-1n8g-fsdp2tp1.v3.sh b/tests/test_suites/llm/sft-llama3.2-1b-1n8g-fsdp2tp1.v3.sh index ec58e72f00..106a6aee3f 100755 --- a/tests/test_suites/llm/sft-llama3.2-1b-1n8g-fsdp2tp1.v3.sh +++ b/tests/test_suites/llm/sft-llama3.2-1b-1n8g-fsdp2tp1.v3.sh @@ -7,7 +7,7 @@ NUM_NODES=1 STEPS_PER_RUN=250 MAX_STEPS=250 NUM_RUNS=$(( (MAX_STEPS + STEPS_PER_RUN - 1) / STEPS_PER_RUN )) # Round up -NUM_MINUTES=15 +NUM_MINUTES=30 # ===== END CONFIG ===== exit_if_max_steps_reached diff --git a/tests/test_suites/llm/sft-nanov3-30BA3B-2n8g-fsdp2-lora.sh b/tests/test_suites/llm/sft-nanov3-30BA3B-2n8g-fsdp2-lora.sh index ed274503e8..71056bb4e1 100755 --- a/tests/test_suites/llm/sft-nanov3-30BA3B-2n8g-fsdp2-lora.sh +++ b/tests/test_suites/llm/sft-nanov3-30BA3B-2n8g-fsdp2-lora.sh @@ -7,7 +7,7 @@ NUM_NODES=2 STEPS_PER_RUN=20 # step_time ~ 10sec MAX_STEPS=20 NUM_RUNS=$(( (MAX_STEPS + STEPS_PER_RUN - 1) / STEPS_PER_RUN )) # Round up -NUM_MINUTES=15 # Usually 15 minutes is enough for 20 steps, but we add a buffer of 3 minutes in metrics check +NUM_MINUTES=30 # Usually 15 minutes is enough for 20 steps, but we add a buffer of 3 minutes in metrics check (30min to buffer for initial ckpt download) # ===== END CONFIG ===== exit_if_max_steps_reached diff --git a/tests/test_suites/llm/sft-nanov3-30BA3B-2n8g-fsdp2.sh b/tests/test_suites/llm/sft-nanov3-30BA3B-2n8g-fsdp2.sh index 782d891d5d..da8826e1f3 100755 --- a/tests/test_suites/llm/sft-nanov3-30BA3B-2n8g-fsdp2.sh +++ b/tests/test_suites/llm/sft-nanov3-30BA3B-2n8g-fsdp2.sh @@ -7,7 +7,7 @@ NUM_NODES=2 STEPS_PER_RUN=20 # step_time ~ 15sec MAX_STEPS=20 NUM_RUNS=$(( (MAX_STEPS + STEPS_PER_RUN - 1) / STEPS_PER_RUN )) # Round up -NUM_MINUTES=15 +NUM_MINUTES=30 # ===== END CONFIG ===== exit_if_max_steps_reached diff --git a/tests/unit/test_recipes_and_test_suites.py b/tests/unit/test_recipes_and_test_suites.py index bea4897459..f41fe31eae 100644 --- a/tests/unit/test_recipes_and_test_suites.py +++ b/tests/unit/test_recipes_and_test_suites.py @@ -180,7 +180,7 @@ def test_all_recipe_yamls_accounted_for_in_test_suites( ) -def test_nightly_compute_stays_below_1140_hours(nightly_test_suite, tracker): +def test_nightly_compute_stays_below_1180_hours(nightly_test_suite, tracker): command = f"DRYRUN=1 HF_HOME=... HF_DATASETS_CACHE=... CONTAINER= ACCOUNT= PARTITION= ./tools/launch {' '.join(nightly_test_suite)}" print(f"Running command: {command}") @@ -212,8 +212,8 @@ def test_nightly_compute_stays_below_1140_hours(nightly_test_suite, tracker): f"Last line of output was not as expected: '{last_line}'" ) total_gpu_hours = float(last_line.split(":")[-1].strip()) - assert total_gpu_hours <= 1140, ( - f"Total GPU hours exceeded 1140: {last_line}. We should revisit the test suites to reduce the total GPU hours." + assert total_gpu_hours <= 1180, ( + f"Total GPU hours exceeded 1180: {last_line}. We should revisit the test suites to reduce the total GPU hours." ) tracker.track("total_nightly_gpu_hours", total_gpu_hours) From 0032a2dc9179f2ff42595904c6ecf7d3a17713f0 Mon Sep 17 00:00:00 2001 From: Terry Kong Date: Wed, 7 Jan 2026 12:33:29 -0800 Subject: [PATCH 36/52] fix: apply offloading change from v2 to v1 (#1726) Signed-off-by: Terry Kong Signed-off-by: Yuki Huang Co-authored-by: Yuki Huang Signed-off-by: Parth Mannan --- .../policy/workers/dtensor_policy_worker.py | 2 +- .../policy/workers/dtensor_policy_worker_v2.py | 2 +- .../models/generation/test_vllm_generation.py | 18 ++++++++++++++---- 3 files changed, 16 insertions(+), 6 deletions(-) diff --git a/nemo_rl/models/policy/workers/dtensor_policy_worker.py b/nemo_rl/models/policy/workers/dtensor_policy_worker.py index 2903307c8b..0f41938c88 100644 --- a/nemo_rl/models/policy/workers/dtensor_policy_worker.py +++ b/nemo_rl/models/policy/workers/dtensor_policy_worker.py @@ -1839,7 +1839,7 @@ def move_buffer_to_device( ) -> nn.Module: # FSDP modules do not move buffers to the device automatically for v in model.buffers(): - v.data = v.data.to(device) + torch.utils.swap_tensors(v, v.to(device)) return model diff --git a/nemo_rl/models/policy/workers/dtensor_policy_worker_v2.py b/nemo_rl/models/policy/workers/dtensor_policy_worker_v2.py index 689fdddd30..785568cc76 100644 --- a/nemo_rl/models/policy/workers/dtensor_policy_worker_v2.py +++ b/nemo_rl/models/policy/workers/dtensor_policy_worker_v2.py @@ -1892,7 +1892,7 @@ def move_buffer_to_device( ) -> nn.Module: # FSDP modules do not move buffers to the device automatically for v in model.buffers(): - v = v.to(device) + torch.utils.swap_tensors(v, v.to(device)) return model diff --git a/tests/unit/models/generation/test_vllm_generation.py b/tests/unit/models/generation/test_vllm_generation.py index e39fef12d4..1599b7e703 100644 --- a/tests/unit/models/generation/test_vllm_generation.py +++ b/tests/unit/models/generation/test_vllm_generation.py @@ -1664,7 +1664,9 @@ def test_vllm_weight_update_and_prefix_cache_reset( torch.cuda.empty_cache() -def test_vllm_weight_update_memory(cluster, tokenizer): +# megatron still holds little memory after refit, so we only test dtensor now +@pytest.mark.parametrize("train_backend", ["dtensor_v1", "dtensor_v2"]) +def test_vllm_weight_update_memory(cluster, tokenizer, train_backend): """Test that vLLM streaming weight update and can save memory.""" from nemo_rl.models.policy.lm_policy import Policy @@ -1685,9 +1687,17 @@ def test_vllm_weight_update_memory(cluster, tokenizer): vllm_policy = VllmGeneration(cluster, vllm_config) vllm_policy.finish_generation() - print("Creating DTensor policy...") - dtensor_config = basic_dtensor_test_config - lm_policy = Policy(cluster, dtensor_config, tokenizer) + print("Creating Training Policy...") + if train_backend == "dtensor_v1": + train_config = basic_dtensor_test_config + elif train_backend == "dtensor_v2": + train_config = deepcopy(basic_dtensor_test_config) + train_config["dtensor_cfg"]["_v2"] = True + elif train_backend == "megatron": + train_config = get_basic_megatron_test_config(tp=1, pp=1, precision="float32") + else: + raise ValueError(f"Invalid train backend: {train_backend}") + lm_policy = Policy(cluster, train_config, tokenizer) print("preparing refit info...") state_dict_info = lm_policy.prepare_refit_info() From c3ca1d40885eca5142a629b26edf6f72cd39a92b Mon Sep 17 00:00:00 2001 From: Terry Kong Date: Thu, 8 Jan 2026 01:12:51 -0800 Subject: [PATCH 37/52] fix: mcore generation config restored in nightly test (#1720) Signed-off-by: Terry Kong Signed-off-by: Parth Mannan --- examples/configs/grpo_math_1B.yaml | 9 ++++ examples/configs/grpo_math_1B_megatron.yaml | 2 +- .../policy/workers/megatron_policy_worker.py | 53 +++++++++++++------ ....2-1b-instruct-1n8g-megatron_generation.sh | 3 +- .../models/policy/test_megatron_worker.py | 4 ++ 5 files changed, 53 insertions(+), 18 deletions(-) diff --git a/examples/configs/grpo_math_1B.yaml b/examples/configs/grpo_math_1B.yaml index 1dd9639472..ec8c2c5ecc 100644 --- a/examples/configs/grpo_math_1B.yaml +++ b/examples/configs/grpo_math_1B.yaml @@ -216,6 +216,15 @@ policy: top_k: null stop_token_ids: null stop_strings: null + mcore_generation_config: + buffer_size_gb: 20 # Total GPU memory (in GB) allocated for KV cache buffers + buffer_guaranteed_fraction: 0.1 # Fraction of buffer reserved for guaranteed active requests + num_cuda_graphs: 16 # Number of CUDA graphs to pre-compile for different batch sizes + block_size_tokens: 256 # Size of each KV cache block in tokens (affects memory granularity) + use_cuda_graphs_for_non_decode_steps: true # Enable CUDA graphs for prefill/context processing + enable_chunked_prefill: true # Split long prefills into chunks for better memory management + unified_memory_level: 0 # Unified memory usage level (0=disabled, higher values enable more aggressive paging) + max_tokens: 16384 # Maximum number of tokens to use in a single step. Analogous to vllm's max_num_batched_tokens vllm_cfg: async_engine: false precision: ${policy.precision} diff --git a/examples/configs/grpo_math_1B_megatron.yaml b/examples/configs/grpo_math_1B_megatron.yaml index 5d998447c7..2b7d4473b4 100644 --- a/examples/configs/grpo_math_1B_megatron.yaml +++ b/examples/configs/grpo_math_1B_megatron.yaml @@ -153,7 +153,7 @@ policy: use_cuda_graphs_for_non_decode_steps: true # Enable CUDA graphs for prefill/context processing enable_chunked_prefill: true # Split long prefills into chunks for better memory management unified_memory_level: 0 # Unified memory usage level (0=disabled, higher values enable more aggressive paging) - max_tokens: 16384 # Maximum number of tokens to use in a single step + max_tokens: 16384 # Maximum number of tokens to use in a single step. Analogous to vllm's max_num_batched_tokens vllm_cfg: tensor_parallel_size: 1 diff --git a/nemo_rl/models/policy/workers/megatron_policy_worker.py b/nemo_rl/models/policy/workers/megatron_policy_worker.py index 0f9dfa03fc..5c73eba824 100644 --- a/nemo_rl/models/policy/workers/megatron_policy_worker.py +++ b/nemo_rl/models/policy/workers/megatron_policy_worker.py @@ -19,7 +19,7 @@ from collections import defaultdict from contextlib import AbstractContextManager, contextmanager, nullcontext from functools import partial -from typing import Any, Iterator, Optional, TypeVar, cast +from typing import Any, Iterator, Optional, TypedDict, TypeVar, cast import ray import torch @@ -145,6 +145,27 @@ TokenizerType = TypeVar("TokenizerType", bound=PreTrainedTokenizerBase) +class MegatronGenerationConfig(TypedDict): + # Total GPU memory (in GB) allocated for KV cache buffers + buffer_size_gb: int + # Fraction of buffer reserved for guaranteed active requests + buffer_guaranteed_fraction: float + # Number of CUDA graphs to pre-compile for different batch sizes + num_cuda_graphs: int + # Size of each KV cache block in tokens (affects memory granularity) + block_size_tokens: int + # Enable CUDA graphs for prefill/context processing + use_cuda_graphs_for_non_decode_steps: bool + # Split long prefills into chunks for better memory management + enable_chunked_prefill: bool + # Unified memory usage level (0=disabled, higher values enable more aggressive paging) + unified_memory_level: int + # Maximum number of tokens to use in a single step. Analogous to vllm's max_num_batched_tokens. + # Can cause OOM if set too high so should be tuned with buffer_size_gb if OOMing. If set too + # low, then will only do 512 tokens at a time, which can be slow. + max_tokens: int + + def broadcast_object_across_pp_ranks(obj): """Broadcast an object across pipeline parallel ranks. @@ -1827,22 +1848,22 @@ def generate( ) from megatron.core.inference.sampling_params import SamplingParams - mcore_generation_config = self.cfg["generation"]["mcore_generation_config"] - buffer_size_gb = mcore_generation_config.get("buffer_size_gb", 20) - - num_cuda_graphs = mcore_generation_config.get("num_cuda_graphs", 16) - block_size_tokens = mcore_generation_config.get("block_size_tokens", 256) - use_cuda_graphs_for_non_decode_steps = mcore_generation_config.get( - "use_cuda_graphs_for_non_decode_steps", True - ) - enable_chunked_prefill = mcore_generation_config.get( - "enable_chunked_prefill", True + mcore_generation_config = cast( + MegatronGenerationConfig, self.cfg["generation"]["mcore_generation_config"] ) - unified_memory_level = mcore_generation_config.get("unified_memory_level", 0) - buffer_guaranteed_fraction = mcore_generation_config.get( - "buffer_guaranteed_fraction", 0.1 - ) - max_tokens = mcore_generation_config.get("max_tokens", 16384) + buffer_size_gb = mcore_generation_config["buffer_size_gb"] + + num_cuda_graphs = mcore_generation_config["num_cuda_graphs"] + block_size_tokens = mcore_generation_config["block_size_tokens"] + use_cuda_graphs_for_non_decode_steps = mcore_generation_config[ + "use_cuda_graphs_for_non_decode_steps" + ] + enable_chunked_prefill = mcore_generation_config["enable_chunked_prefill"] + unified_memory_level = mcore_generation_config["unified_memory_level"] + buffer_guaranteed_fraction = mcore_generation_config[ + "buffer_guaranteed_fraction" + ] + max_tokens = mcore_generation_config["max_tokens"] model_config = self.model.config model_config.cuda_graph_impl = "local" diff --git a/tests/test_suites/llm/grpo-llama3.2-1b-instruct-1n8g-megatron_generation.sh b/tests/test_suites/llm/grpo-llama3.2-1b-instruct-1n8g-megatron_generation.sh index 4fa8068017..d0ef64efac 100755 --- a/tests/test_suites/llm/grpo-llama3.2-1b-instruct-1n8g-megatron_generation.sh +++ b/tests/test_suites/llm/grpo-llama3.2-1b-instruct-1n8g-megatron_generation.sh @@ -34,11 +34,12 @@ uv run tests/json_dump_tb_logs.py $LOG_DIR --output_path $JSON_METRICS # Only run metrics if the target step is reached if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | map(tonumber) | max' $JSON_METRICS) -ge $MAX_STEPS ]]; then + # total_step_time observed around ~16, so 17.5 for buffer uv run tests/check_metrics.py $JSON_METRICS \ 'median(data["train/token_mult_prob_error"]) < 1.1' \ 'data["train/token_mult_prob_error"]["500"] < 1.1' \ 'data["train/reward"]["500"] > 0.1' \ - 'mean(data["timing/train/total_step_time"], -6, -1) < 10.5' + 'mean(data["timing/train/total_step_time"], -6, -1) < 17.5' # Clean up checkpoint directory after successful run to save space. rm -rf "$CKPT_DIR" diff --git a/tests/unit/models/policy/test_megatron_worker.py b/tests/unit/models/policy/test_megatron_worker.py index 565995985c..5f09460cfb 100644 --- a/tests/unit/models/policy/test_megatron_worker.py +++ b/tests/unit/models/policy/test_megatron_worker.py @@ -90,6 +90,10 @@ def create_megatron_test_config( "buffer_size_gb": 20, "buffer_guaranteed_fraction": 0.1, "num_cuda_graphs": 16, + "block_size_tokens": 256, + "use_cuda_graphs_for_non_decode_steps": True, + "enable_chunked_prefill": True, + "unified_memory_level": 0, "max_tokens": 16384, }, "colocated": { From 512bef9f95d7f392b0e128bcff8ad6c294b5ea4a Mon Sep 17 00:00:00 2001 From: Adi Renduchintala Date: Thu, 8 Jan 2026 04:58:34 -0800 Subject: [PATCH 38/52] feat: Megatron SFT LoRA (#1629) Signed-off-by: Terry Kong Co-authored-by: Terry Kong Signed-off-by: Parth Mannan --- docs/guides/sft.md | 59 +++++++++++++++-- .../sft-llama3.1-8b-1n8g-megatron-lora.yaml | 44 +++++++++++++ examples/configs/sft.yaml | 18 +++++- .../policy/workers/megatron_policy_worker.py | 63 ++++++++++++++++--- tests/functional/L1_Functional_Tests_GPU.sh | 2 + ...odel_lora_sft.sh => sft_automodel_lora.sh} | 2 +- tests/functional/sft_megatron_lora.sh | 51 +++++++++++++++ .../llm/sft-llama3.1-8b-1n8g-fsdp2tp1-lora.sh | 4 +- .../llm/sft-llama3.1-8b-1n8g-megatron-lora.sh | 47 ++++++++++++++ tests/test_suites/nightly.txt | 1 + 10 files changed, 274 insertions(+), 17 deletions(-) create mode 100644 examples/configs/recipes/llm/sft-llama3.1-8b-1n8g-megatron-lora.yaml rename tests/functional/{test_automodel_lora_sft.sh => sft_automodel_lora.sh} (96%) create mode 100755 tests/functional/sft_megatron_lora.sh create mode 100755 tests/test_suites/llm/sft-llama3.1-8b-1n8g-megatron-lora.sh diff --git a/docs/guides/sft.md b/docs/guides/sft.md index 726ab45933..81e68d5cc3 100644 --- a/docs/guides/sft.md +++ b/docs/guides/sft.md @@ -168,13 +168,14 @@ Upon completion of the training process, you can refer to our [evaluation guide] NeMo RL supports LoRA (Low-Rank Adaptation) for parameter-efficient fine-tuning. LoRA reduces trainable parameters by using low-rank matrices for weight updates while keeping the base model frozen. Notes: -- LoRA is supported with DTensor v2 and Megatron backends. DTensor v1 does not support LoRA (ensure `policy.dtensor_cfg._v2=true` when using DTensor). +- LoRA is supported with DTensor v2 and Megatron backends. Uses the DTensor backend by default. DTensor v1 does not support LoRA (ensure `policy.dtensor_cfg._v2=true` when using DTensor). - Triton kernels are only used in the DTensor v2 path. For TP > 1, Automodel currently does not support Triton kernels (see note below). -### Configuration Parameters +### DTensor Configuration Parameters The LoRA configuration is specified under the `policy.dtensor_cfg.lora_cfg` section: +```yaml policy: dtensor_cfg: lora_cfg: @@ -188,8 +189,9 @@ policy: dropout_position: "post" # Dropout position: "pre" or "post" lora_A_init: "xavier" # Initialization method: "xavier" or "uniform" use_triton: true # Use Triton-optimized kernels (DTensor v2 path) +``` -### Parameter Details +### DTensor (Automodel) Parameter Details - **`enabled`** (bool): Whether to enable LoRA training - **`target_modules`** (list): Specific module names to apply LoRA. Empty with `match_all_linear=true` applies to all linear layers - **`exclude_modules`** (list): Module names to exclude from LoRA @@ -201,10 +203,59 @@ policy: - **`lora_A_init`** (str): Initialization method for LoRA A matrix - **`use_triton`** (bool): Use Triton-optimized kernels for better performance. Used for DTensor v2 only. **Note**: [Automodel does not support Triton for TP > 1](https://github.com/NVIDIA-NeMo/Automodel/blob/b2db55eee98dfe81a8bfe5e23ac4e57afd8ab261/nemo_automodel/recipes/llm/train_ft.py#L199). Set to `false` when `tensor_parallel_size > 1` to avoid compatibility issues -### Example Usage +### DTensor Example Usage ```bash uv run examples/run_sft.py policy.dtensor_cfg.lora_cfg.enabled=true ``` +### Megatron Configuration Parameters + +The LoRA configuration is specified under the `policy.megatron_cfg.peft` section: + +```yaml +policy: + megatron_cfg: + peft: + enabled: false # Set to True to enable LoRA fine-tuning + target_modules: [] # List of module names to apply LoRA, defaults to all linear layers + exclude_modules: [] # List of module names not to apply LoRa. + dim: 32 # LoRA rank (r): controls adaptation capacity + alpha: 32 # LoRA scaling factor (effective lr = alpha/dim) + dropout: 0.0 # Dropout probability for LoRA layers + dropout_position: "pre" # Dropout position: "pre" or "post" + lora_A_init_method: "xavier" # Initialization method for lora A: "xavier" or "uniform" + lora_B_init_method: "zero" # Initialization method for lora B: "zero" + a2a_experimental: false # Enables the experimental All-to-All (A2A) communication strategy. + lora_dtype: None # Weight's dtype +``` + +### Megatron Parameter Details +- **`enabled`** (bool): Whether to enable LoRA training +- **`target_modules`** (list): Specific module names to apply LoRA. Defaults to all linear layers if the list is left empty. Example: ['linear_qkv', 'linear_proj', 'linear_fc1', 'linear_fc2']. + - 'linear_qkv': Apply LoRA to the fused linear layer used for query, key, and value projections in self-attention. + - 'linear_proj': Apply LoRA to the linear layer used for projecting the output of self-attention. + - 'linear_fc1': Apply LoRA to the first fully-connected layer in MLP. + - 'linear_fc2': Apply LoRA to the second fully-connected layer in MLP. + Target modules can also contain wildcards. For example, you can specify target_modules=['*.layers.0.*.linear_qkv', '*.layers.1.*.linear_qkv'] to add LoRA to only linear_qkv on the first two layers. +- **`exclude_modules`** (List[str], optional): A list of module names not to apply LoRa. It will match all nn.Linear & nn.Linear-adjacent modules whose name does not match any string in exclude_modules. If used, will require target_modules to be empty list or None. +- **`dim`** (int): LoRA rank (r). Lower values = fewer parameters but less capacity. Typical: 4, 8, 16, 32, 64 +- **`alpha`** (int): LoRA scaling factor. Effective learning rate multiplier = `alpha/dim`. Typical: 16, 32, 64 +- **`dropout`** (float): Dropout probability for regularization, defaults to 0.0 +- **`dropout_position`** (str): Apply dropout before ("pre") or after ("post") LoRA +- **`lora_A_init`** (str): Initialization method for lora_A (choices: ['xavier', 'uniform']), defaults to xavier. +- **`lora_B_init`** (str): Initialization method for the low-rank matrix B. Defaults to "zero". +- **`a2a_experimental`** (bool): Enables the experimental All-to-All (A2A) communication strategy. Defaults to False. +- **`lora_dtype`** (torch.dtype): Weight's dtype, by default will use orig_linear's but if they are quantized weights (e.g. 4bit) needs to be specified explicitly. + +### Megatron Example Usage +The config uses DTensor by default, so the megatron backend needs to be explicitly enabled. +```sh +uv run examples/run_sft.py \ + --config examples/configs/sft.yaml \ + policy.dtensor_cfg.enabled=false \ + policy.megatron_cfg.enabled=true \ + policy.megatron_cfg.peft.enabled=true +``` + For more details on LoRA, see [LoRA: Low-Rank Adaptation of Large Language Models](https://arxiv.org/abs/2106.09685). \ No newline at end of file diff --git a/examples/configs/recipes/llm/sft-llama3.1-8b-1n8g-megatron-lora.yaml b/examples/configs/recipes/llm/sft-llama3.1-8b-1n8g-megatron-lora.yaml new file mode 100644 index 0000000000..b6d9751a67 --- /dev/null +++ b/examples/configs/recipes/llm/sft-llama3.1-8b-1n8g-megatron-lora.yaml @@ -0,0 +1,44 @@ +defaults: ../../sft.yaml +sft: + max_num_steps: 350 + val_period: 20 + val_global_batch_size: 128 + val_micro_batch_size: 2 +checkpointing: + checkpoint_dir: results/sft-tmblog-llama3.1-8b-lora-megatron + save_period: 20 +policy: + model_name: meta-llama/Llama-3.1-8B + tokenizer: + name: meta-llama/Llama-3.1-8B-Instruct + chat_template: default + dtensor_cfg: + enabled: false + megatron_cfg: + enabled: true + peft: + enabled: true + dim: 128 + alpha: 128 + optimizer: + lr: 2.0e-05 + min_lr: 2.0e-05 + weight_decay: 0.01 # When weight decay is set, it actually uses AdamW + adam_eps: 1.0e-08 + train_global_batch_size: 128 + max_total_sequence_length: 4096 + make_sequence_length_divisible_by: 2 +data: + dataset_name: tulu3_sft_mixture + add_generation_prompt: true + seed: 42 +logger: + log_dir: logs/sft-tmblog-llama3.1-8b + tensorboard_enabled: false + wandb: + project: nemo-rl + name: sft-tmblog-llama3.1-8b + tensorboard: + log_dir: tb_logs-sft-dev-tulu3 +cluster: + gpus_per_node: 8 diff --git a/examples/configs/sft.yaml b/examples/configs/sft.yaml index 4a0625895e..747564f422 100644 --- a/examples/configs/sft.yaml +++ b/examples/configs/sft.yaml @@ -114,11 +114,25 @@ policy: defer_fp32_logits: False moe_per_layer_logging: False + peft: + enabled: false + target_modules: [] + exclude_modules: [] + dim: 8 + alpha: 32 + dropout: 0.0 + dropout_position: "post" + lora_A_init_method: "xavier" + lora_B_init_method: "zero" + a2a_experimental: false + lora_dtype: None + + optimizer: - optimizer: "adam" + optimizer: "adam" # When weight decay is set, it actually uses AdamW lr: 5.0e-6 min_lr: 4.9999e-6 - weight_decay: 0.1 + weight_decay: 0.1 # When weight decay is set, it actually uses AdamW bf16: true fp16: false params_dtype: "float32" diff --git a/nemo_rl/models/policy/workers/megatron_policy_worker.py b/nemo_rl/models/policy/workers/megatron_policy_worker.py index 5c73eba824..8a107ed9d9 100644 --- a/nemo_rl/models/policy/workers/megatron_policy_worker.py +++ b/nemo_rl/models/policy/workers/megatron_policy_worker.py @@ -25,6 +25,7 @@ import torch from megatron.bridge import AutoBridge from megatron.bridge.models.model_provider import get_model +from megatron.bridge.peft.lora import LoRA from megatron.bridge.training import fault_tolerance from megatron.bridge.training.checkpointing import ( checkpoint_exists, @@ -49,6 +50,7 @@ ) from megatron.bridge.training.optim import setup_optimizer from megatron.bridge.training.setup import ( + _create_peft_pre_wrap_hook, _update_model_config_funcs, ) from megatron.bridge.training.state import GlobalState @@ -85,6 +87,7 @@ ) from megatron.core.pipeline_parallel import get_forward_backward_func from megatron.core.rerun_state_machine import get_rerun_state_machine +from megatron.core.transformer import MegatronModule from megatron.core.transformer.module import Float16Module from megatron.core.transformer.transformer_config import TransformerConfig from megatron.training.utils import get_ltor_masks_and_position_ids @@ -277,7 +280,14 @@ def setup_megatron_model( pre_wrap_hook = [] mixed_precision_wrapper = Float16Module + + use_peft = policy_cfg["megatron_cfg"].get("peft", {}).get("enabled", False) + if policy_cfg["megatron_cfg"]["freeze_moe_router"]: + if use_peft: + raise ValueError( + "Freezing the MOE router is not currently supported when using PEFT" + ) def freeze_moe_router(megatron_model): if not isinstance(megatron_model, list): @@ -296,6 +306,34 @@ def freeze_moe_router(megatron_model): mixed_precision_wrapper = CustomFloat16Module pre_wrap_hook.extend([freeze_moe_router]) + if use_peft: + peft_cfg = policy_cfg["megatron_cfg"].get("peft", {}) + peft = LoRA( + target_modules=peft_cfg["target_modules"], + exclude_modules=peft_cfg["exclude_modules"], + dim=peft_cfg["dim"], + alpha=peft_cfg["alpha"], + dropout=peft_cfg["dropout"], + dropout_position=peft_cfg["dropout_position"], + lora_A_init_method=peft_cfg["lora_A_init_method"], + lora_B_init_method=peft_cfg["lora_B_init_method"], + a2a_experimental=peft_cfg["a2a_experimental"], + lora_dtype=peft_cfg["lora_dtype"], + ) + else: + peft = None + cfg.peft = peft + + if cfg.peft is not None: + pre_peft_hook = _create_peft_pre_wrap_hook(cfg, state) + cfg.model.register_pre_wrap_hook(pre_peft_hook) + + def composed_peft_hook(model: list[MegatronModule]) -> list[MegatronModule]: + model = pre_peft_hook(model) + return model + + pre_wrap_hook.extend([composed_peft_hook]) + # Model, optimizer, and learning rate. model = get_model( cfg.model, @@ -306,6 +344,7 @@ def freeze_moe_router(megatron_model): pre_wrap_hook=pre_wrap_hook, mixed_precision_wrapper=mixed_precision_wrapper, ) + if load_optimizer: optimizer, scheduler = setup_optimizer( optimizer_config=cfg.optimizer, @@ -319,15 +358,23 @@ def freeze_moe_router(megatron_model): print("Model, optimizer, and learning rate scheduler built") torch.distributed.barrier() + if cfg.peft is not None: + should_load_checkpoint = cfg.checkpoint.load is not None and checkpoint_exists( + cfg.checkpoint.load + ) + if should_load_checkpoint: + # The finetune toggle is explicitly set to True in order to avoid loading optimizer and RNG states + # This is switched off here in order to load these states from the checkpoint + cfg.checkpoint.finetune = False + else: + should_load_checkpoint = ( + cfg.checkpoint.load is not None and checkpoint_exists(cfg.checkpoint.load) + ) or ( + cfg.checkpoint.pretrained_checkpoint is not None + and checkpoint_exists(cfg.checkpoint.pretrained_checkpoint) + ) - # Load checkpoint if applicable - if ( - cfg.checkpoint.load is not None - or cfg.checkpoint.pretrained_checkpoint is not None - ) and ( - checkpoint_exists(cfg.checkpoint.load) - or checkpoint_exists(cfg.checkpoint.pretrained_checkpoint) - ): + if should_load_checkpoint: load_checkpoint( state, model, diff --git a/tests/functional/L1_Functional_Tests_GPU.sh b/tests/functional/L1_Functional_Tests_GPU.sh index 8b26b5e5e1..ec7527f583 100644 --- a/tests/functional/L1_Functional_Tests_GPU.sh +++ b/tests/functional/L1_Functional_Tests_GPU.sh @@ -40,6 +40,8 @@ time uv run --no-sync bash ./tests/functional/test_automodel_extra_installed_cor time uv run --no-sync bash ./tests/functional/vlm_grpo.sh time uv run --no-sync bash ./tests/functional/distillation.sh time uv run --no-sync bash ./tests/functional/distillation_megatron.sh +time uv run --no-sync bash ./tests/functional/sft_automodel_lora.sh +time uv run --no-sync bash ./tests/functional/sft_megatron_lora.sh # Research functional tests (self-discovery) for test_script in research/*/tests/functional/*.sh; do diff --git a/tests/functional/test_automodel_lora_sft.sh b/tests/functional/sft_automodel_lora.sh similarity index 96% rename from tests/functional/test_automodel_lora_sft.sh rename to tests/functional/sft_automodel_lora.sh index b2baf88170..a7032b124c 100644 --- a/tests/functional/test_automodel_lora_sft.sh +++ b/tests/functional/sft_automodel_lora.sh @@ -28,7 +28,7 @@ uv run coverage run -a --data-file=$PROJECT_ROOT/tests/.coverage --source=$PROJE sft.max_num_steps=3 \ sft.val_batches=1 \ sft.val_period=3 \ - policy.dtensor_cfg.lora.enabled=true \ + policy.dtensor_cfg.lora_cfg.enabled=true \ logger.tensorboard_enabled=true \ logger.log_dir=$LOG_DIR \ logger.wandb_enabled=false \ diff --git a/tests/functional/sft_megatron_lora.sh b/tests/functional/sft_megatron_lora.sh new file mode 100755 index 0000000000..f5dfc6d341 --- /dev/null +++ b/tests/functional/sft_megatron_lora.sh @@ -0,0 +1,51 @@ +#!/bin/bash + +# clean up checkpoint directory on exit +trap "rm -rf /tmp/mbridge_lora_sft_checkpoints" EXIT + +SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd) +PROJECT_ROOT=$(realpath $SCRIPT_DIR/../..) +# Mark the current repo as safe, since wandb fetches metadata about the repo +git config --global --add safe.directory $PROJECT_ROOT + +set -eou pipefail + +EXP_NAME=$(basename $0 .sh) +EXP_DIR=$SCRIPT_DIR/$EXP_NAME +LOG_DIR=$EXP_DIR/logs +JSON_METRICS=$EXP_DIR/metrics.json +RUN_LOG=$EXP_DIR/run.log +export PYTHONPATH=${PROJECT_ROOT}:${PYTHONPATH:-} + +rm -rf $EXP_DIR $LOG_DIR +mkdir -p $EXP_DIR $LOG_DIR + +cd $PROJECT_ROOT +uv run coverage run -a --data-file=$PROJECT_ROOT/tests/.coverage --source=$PROJECT_ROOT/nemo_rl \ + $PROJECT_ROOT/examples/run_sft.py \ + --config $PROJECT_ROOT/examples/configs/sft.yaml \ + policy.model_name=Qwen/Qwen3-0.6B \ + policy.tokenizer.name=Qwen/Qwen3-0.6B \ + cluster.gpus_per_node=2 \ + sft.max_num_steps=3 \ + sft.val_batches=1 \ + sft.val_period=3 \ + policy.dtensor_cfg.enabled=false \ + policy.megatron_cfg.enabled=true \ + policy.megatron_cfg.peft.enabled=true \ + policy.megatron_cfg.pipeline_model_parallel_size=1 \ + logger.tensorboard_enabled=true \ + logger.log_dir=$LOG_DIR \ + logger.wandb_enabled=false \ + logger.monitor_gpus=true \ + checkpointing.enabled=true \ + checkpointing.save_period=3 \ + checkpointing.checkpoint_dir=/tmp/mbridge_lora_sft_checkpoints \ + "$@" \ + 2>&1 | tee $RUN_LOG + +uv run tests/json_dump_tb_logs.py $LOG_DIR --output_path $JSON_METRICS + +uv run tests/check_metrics.py $JSON_METRICS \ + 'data["train/loss"]["3"] < 5.9' + diff --git a/tests/test_suites/llm/sft-llama3.1-8b-1n8g-fsdp2tp1-lora.sh b/tests/test_suites/llm/sft-llama3.1-8b-1n8g-fsdp2tp1-lora.sh index b2ff16b155..4dc98db94a 100755 --- a/tests/test_suites/llm/sft-llama3.1-8b-1n8g-fsdp2tp1-lora.sh +++ b/tests/test_suites/llm/sft-llama3.1-8b-1n8g-fsdp2tp1-lora.sh @@ -19,7 +19,7 @@ uv run examples/run_sft.py \ sft.max_num_steps=$MAX_STEPS \ logger.log_dir=$LOG_DIR \ logger.wandb_enabled=True \ - logger.wandb.project=ruit_personal_debug \ + logger.wandb.project=nemo-rl \ logger.wandb.name=$EXP_NAME \ logger.monitor_gpus=True \ logger.tensorboard_enabled=True \ @@ -43,4 +43,4 @@ if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | ma # Clean up checkpoint directory after successful run to save space. rm -rf "$CKPT_DIR" -fi \ No newline at end of file +fi diff --git a/tests/test_suites/llm/sft-llama3.1-8b-1n8g-megatron-lora.sh b/tests/test_suites/llm/sft-llama3.1-8b-1n8g-megatron-lora.sh new file mode 100755 index 0000000000..f2d1672bdb --- /dev/null +++ b/tests/test_suites/llm/sft-llama3.1-8b-1n8g-megatron-lora.sh @@ -0,0 +1,47 @@ +#!/bin/bash +SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd) +source $SCRIPT_DIR/common.env + +# ===== BEGIN CONFIG ===== +NUM_NODES=1 +STEPS_PER_RUN=50 +MAX_STEPS=50 +NUM_RUNS=$(( (MAX_STEPS + STEPS_PER_RUN - 1) / STEPS_PER_RUN )) # Round up +NUM_MINUTES=30 +# ===== END CONFIG ===== + +exit_if_max_steps_reached + +# Run the experiment +cd $PROJECT_ROOT +uv run examples/run_sft.py \ + --config $CONFIG_PATH \ + sft.max_num_steps=$MAX_STEPS \ + logger.log_dir=$LOG_DIR \ + logger.wandb_enabled=True \ + logger.wandb.project=nemo-rl \ + logger.wandb.name=$EXP_NAME \ + logger.monitor_gpus=True \ + logger.tensorboard_enabled=True \ + checkpointing.enabled=True \ + checkpointing.checkpoint_dir=$CKPT_DIR \ + $@ \ + 2>&1 | tee $RUN_LOG + +# Convert tensorboard logs to json +uv run tests/json_dump_tb_logs.py $LOG_DIR --output_path $JSON_METRICS + +# TODO: memory check will fail due to OOM tracked here https://github.com/NVIDIA-NeMo/RL/issues/263 + +# Revert to `mean(data["timing/train/total_step_time"], 2) < 30` once https://github.com/NVIDIA-NeMo/RL/issues/1719 resolved +# Only run metrics if the target step is reached +if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | map(tonumber) | max' $JSON_METRICS) -ge $MAX_STEPS ]]; then + uv run tests/check_metrics.py $JSON_METRICS \ + 'data["train/loss"]["1"] < 1.0' \ + 'data["train/loss"]["50"] < 0.8' \ + 'max(data["ray/node.0.gpu.0.mem_gb"]) < 60' \ + 'mean(data["timing/train/total_step_time"], 2) < 30' + + # Clean up checkpoint directory after successful run to save space. + rm -rf "$CKPT_DIR" +fi diff --git a/tests/test_suites/nightly.txt b/tests/test_suites/nightly.txt index e95507105a..ee1fda01b1 100644 --- a/tests/test_suites/nightly.txt +++ b/tests/test_suites/nightly.txt @@ -72,6 +72,7 @@ tests/test_suites/llm/sft-llama3.1-8b-1n8g-fsdp2tp2.sh tests/test_suites/llm/sft-llama3.1-8b-1n8g-fsdp2tp1-dynamicbatch.sh # lora tests/test_suites/llm/sft-llama3.1-8b-1n8g-fsdp2tp1-lora.sh +tests/test_suites/llm/sft-llama3.1-8b-1n8g-megatron-lora.sh # Functional 32b test tests/test_suites/llm/sft-qwen2.5-32b-4n8g-fsdp2tp8sp-actckpt.v3.sh From d4683ea417c02a716f7451fed0662eb70b220e8e Mon Sep 17 00:00:00 2001 From: Charlie Truong Date: Thu, 8 Jan 2026 19:53:35 -0600 Subject: [PATCH 39/52] build: Update aiohttp and urlib3 (#1746) Signed-off-by: Charlie Truong Signed-off-by: Parth Mannan --- pyproject.toml | 5 ++- uv.lock | 117 ++++++++++++++++++++++++++++++++----------------- 2 files changed, 79 insertions(+), 43 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index d5700ea563..cf2da63342 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -228,11 +228,12 @@ override-dependencies = [ "timm<=1.0.22", "nvidia-modelopt[torch]>=0.39.0", ] -# CVE fxies +# CVE fixes constraint-dependencies = [ "brotli>=1.2.0", # Address CVE GHSA-2qfp-q593-8484 "starlette>=0.49.1", # Address CVE GHSA-7f5h-v6xp-fcq8 - "urllib3>=2.6.0", # Address CVE GHSA-gm62-xv2j-4w53 + "urllib3>=2.6.3", # Address CVE GHSA-38jv-5279-wg99 + "aiohttp>=3.13.3", # Address CVE GHSA-mqqc-3gqh-h2x8 ] # Augment build dependencies for packages that need torch at build time diff --git a/uv.lock b/uv.lock index 7beeee5673..fa00ff89a5 100644 --- a/uv.lock +++ b/uv.lock @@ -26,9 +26,10 @@ members = [ "template-project", ] constraints = [ + { name = "aiohttp", specifier = ">=3.13.3" }, { name = "brotli", specifier = ">=1.2.0" }, { name = "starlette", specifier = ">=0.49.1" }, - { name = "urllib3", specifier = ">=2.6.0" }, + { name = "urllib3", specifier = ">=2.6.3" }, ] overrides = [ { name = "nvidia-modelopt", extras = ["torch"], specifier = ">=0.39.0" }, @@ -150,7 +151,7 @@ wheels = [ [[package]] name = "aiohttp" -version = "3.12.15" +version = "3.13.3" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "aiohappyeyeballs" }, @@ -161,42 +162,76 @@ dependencies = [ { name = "propcache" }, { name = "yarl" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/9b/e7/d92a237d8802ca88483906c388f7c201bbe96cd80a165ffd0ac2f6a8d59f/aiohttp-3.12.15.tar.gz", hash = "sha256:4fc61385e9c98d72fcdf47e6dd81833f47b2f77c114c29cd64a361be57a763a2", size = 7823716, upload-time = "2025-07-29T05:52:32.215Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/63/97/77cb2450d9b35f517d6cf506256bf4f5bda3f93a66b4ad64ba7fc917899c/aiohttp-3.12.15-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:802d3868f5776e28f7bf69d349c26fc0efadb81676d0afa88ed00d98a26340b7", size = 702333, upload-time = "2025-07-29T05:50:46.507Z" }, - { url = "https://files.pythonhosted.org/packages/83/6d/0544e6b08b748682c30b9f65640d006e51f90763b41d7c546693bc22900d/aiohttp-3.12.15-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f2800614cd560287be05e33a679638e586a2d7401f4ddf99e304d98878c29444", size = 476948, upload-time = "2025-07-29T05:50:48.067Z" }, - { url = "https://files.pythonhosted.org/packages/3a/1d/c8c40e611e5094330284b1aea8a4b02ca0858f8458614fa35754cab42b9c/aiohttp-3.12.15-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8466151554b593909d30a0a125d638b4e5f3836e5aecde85b66b80ded1cb5b0d", size = 469787, upload-time = "2025-07-29T05:50:49.669Z" }, - { url = "https://files.pythonhosted.org/packages/38/7d/b76438e70319796bfff717f325d97ce2e9310f752a267bfdf5192ac6082b/aiohttp-3.12.15-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2e5a495cb1be69dae4b08f35a6c4579c539e9b5706f606632102c0f855bcba7c", size = 1716590, upload-time = "2025-07-29T05:50:51.368Z" }, - { url = "https://files.pythonhosted.org/packages/79/b1/60370d70cdf8b269ee1444b390cbd72ce514f0d1cd1a715821c784d272c9/aiohttp-3.12.15-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:6404dfc8cdde35c69aaa489bb3542fb86ef215fc70277c892be8af540e5e21c0", size = 1699241, upload-time = "2025-07-29T05:50:53.628Z" }, - { url = "https://files.pythonhosted.org/packages/a3/2b/4968a7b8792437ebc12186db31523f541943e99bda8f30335c482bea6879/aiohttp-3.12.15-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3ead1c00f8521a5c9070fcb88f02967b1d8a0544e6d85c253f6968b785e1a2ab", size = 1754335, upload-time = "2025-07-29T05:50:55.394Z" }, - { url = "https://files.pythonhosted.org/packages/fb/c1/49524ed553f9a0bec1a11fac09e790f49ff669bcd14164f9fab608831c4d/aiohttp-3.12.15-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6990ef617f14450bc6b34941dba4f12d5613cbf4e33805932f853fbd1cf18bfb", size = 1800491, upload-time = "2025-07-29T05:50:57.202Z" }, - { url = "https://files.pythonhosted.org/packages/de/5e/3bf5acea47a96a28c121b167f5ef659cf71208b19e52a88cdfa5c37f1fcc/aiohttp-3.12.15-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd736ed420f4db2b8148b52b46b88ed038d0354255f9a73196b7bbce3ea97545", size = 1719929, upload-time = "2025-07-29T05:50:59.192Z" }, - { url = "https://files.pythonhosted.org/packages/39/94/8ae30b806835bcd1cba799ba35347dee6961a11bd507db634516210e91d8/aiohttp-3.12.15-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3c5092ce14361a73086b90c6efb3948ffa5be2f5b6fbcf52e8d8c8b8848bb97c", size = 1635733, upload-time = "2025-07-29T05:51:01.394Z" }, - { url = "https://files.pythonhosted.org/packages/7a/46/06cdef71dd03acd9da7f51ab3a9107318aee12ad38d273f654e4f981583a/aiohttp-3.12.15-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:aaa2234bb60c4dbf82893e934d8ee8dea30446f0647e024074237a56a08c01bd", size = 1696790, upload-time = "2025-07-29T05:51:03.657Z" }, - { url = "https://files.pythonhosted.org/packages/02/90/6b4cfaaf92ed98d0ec4d173e78b99b4b1a7551250be8937d9d67ecb356b4/aiohttp-3.12.15-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:6d86a2fbdd14192e2f234a92d3b494dd4457e683ba07e5905a0b3ee25389ac9f", size = 1718245, upload-time = "2025-07-29T05:51:05.911Z" }, - { url = "https://files.pythonhosted.org/packages/2e/e6/2593751670fa06f080a846f37f112cbe6f873ba510d070136a6ed46117c6/aiohttp-3.12.15-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a041e7e2612041a6ddf1c6a33b883be6a421247c7afd47e885969ee4cc58bd8d", size = 1658899, upload-time = "2025-07-29T05:51:07.753Z" }, - { url = "https://files.pythonhosted.org/packages/8f/28/c15bacbdb8b8eb5bf39b10680d129ea7410b859e379b03190f02fa104ffd/aiohttp-3.12.15-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:5015082477abeafad7203757ae44299a610e89ee82a1503e3d4184e6bafdd519", size = 1738459, upload-time = "2025-07-29T05:51:09.56Z" }, - { url = "https://files.pythonhosted.org/packages/00/de/c269cbc4faa01fb10f143b1670633a8ddd5b2e1ffd0548f7aa49cb5c70e2/aiohttp-3.12.15-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:56822ff5ddfd1b745534e658faba944012346184fbfe732e0d6134b744516eea", size = 1766434, upload-time = "2025-07-29T05:51:11.423Z" }, - { url = "https://files.pythonhosted.org/packages/52/b0/4ff3abd81aa7d929b27d2e1403722a65fc87b763e3a97b3a2a494bfc63bc/aiohttp-3.12.15-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b2acbbfff69019d9014508c4ba0401822e8bae5a5fdc3b6814285b71231b60f3", size = 1726045, upload-time = "2025-07-29T05:51:13.689Z" }, - { url = "https://files.pythonhosted.org/packages/71/16/949225a6a2dd6efcbd855fbd90cf476052e648fb011aa538e3b15b89a57a/aiohttp-3.12.15-cp312-cp312-win32.whl", hash = "sha256:d849b0901b50f2185874b9a232f38e26b9b3d4810095a7572eacea939132d4e1", size = 423591, upload-time = "2025-07-29T05:51:15.452Z" }, - { url = "https://files.pythonhosted.org/packages/2b/d8/fa65d2a349fe938b76d309db1a56a75c4fb8cc7b17a398b698488a939903/aiohttp-3.12.15-cp312-cp312-win_amd64.whl", hash = "sha256:b390ef5f62bb508a9d67cb3bba9b8356e23b3996da7062f1a57ce1a79d2b3d34", size = 450266, upload-time = "2025-07-29T05:51:17.239Z" }, - { url = "https://files.pythonhosted.org/packages/f2/33/918091abcf102e39d15aba2476ad9e7bd35ddb190dcdd43a854000d3da0d/aiohttp-3.12.15-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:9f922ffd05034d439dde1c77a20461cf4a1b0831e6caa26151fe7aa8aaebc315", size = 696741, upload-time = "2025-07-29T05:51:19.021Z" }, - { url = "https://files.pythonhosted.org/packages/b5/2a/7495a81e39a998e400f3ecdd44a62107254803d1681d9189be5c2e4530cd/aiohttp-3.12.15-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:2ee8a8ac39ce45f3e55663891d4b1d15598c157b4d494a4613e704c8b43112cd", size = 474407, upload-time = "2025-07-29T05:51:21.165Z" }, - { url = "https://files.pythonhosted.org/packages/49/fc/a9576ab4be2dcbd0f73ee8675d16c707cfc12d5ee80ccf4015ba543480c9/aiohttp-3.12.15-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3eae49032c29d356b94eee45a3f39fdf4b0814b397638c2f718e96cfadf4c4e4", size = 466703, upload-time = "2025-07-29T05:51:22.948Z" }, - { url = "https://files.pythonhosted.org/packages/09/2f/d4bcc8448cf536b2b54eed48f19682031ad182faa3a3fee54ebe5b156387/aiohttp-3.12.15-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b97752ff12cc12f46a9b20327104448042fce5c33a624f88c18f66f9368091c7", size = 1705532, upload-time = "2025-07-29T05:51:25.211Z" }, - { url = "https://files.pythonhosted.org/packages/f1/f3/59406396083f8b489261e3c011aa8aee9df360a96ac8fa5c2e7e1b8f0466/aiohttp-3.12.15-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:894261472691d6fe76ebb7fcf2e5870a2ac284c7406ddc95823c8598a1390f0d", size = 1686794, upload-time = "2025-07-29T05:51:27.145Z" }, - { url = "https://files.pythonhosted.org/packages/dc/71/164d194993a8d114ee5656c3b7ae9c12ceee7040d076bf7b32fb98a8c5c6/aiohttp-3.12.15-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5fa5d9eb82ce98959fc1031c28198b431b4d9396894f385cb63f1e2f3f20ca6b", size = 1738865, upload-time = "2025-07-29T05:51:29.366Z" }, - { url = "https://files.pythonhosted.org/packages/1c/00/d198461b699188a93ead39cb458554d9f0f69879b95078dce416d3209b54/aiohttp-3.12.15-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f0fa751efb11a541f57db59c1dd821bec09031e01452b2b6217319b3a1f34f3d", size = 1788238, upload-time = "2025-07-29T05:51:31.285Z" }, - { url = "https://files.pythonhosted.org/packages/85/b8/9e7175e1fa0ac8e56baa83bf3c214823ce250d0028955dfb23f43d5e61fd/aiohttp-3.12.15-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5346b93e62ab51ee2a9d68e8f73c7cf96ffb73568a23e683f931e52450e4148d", size = 1710566, upload-time = "2025-07-29T05:51:33.219Z" }, - { url = "https://files.pythonhosted.org/packages/59/e4/16a8eac9df39b48ae102ec030fa9f726d3570732e46ba0c592aeeb507b93/aiohttp-3.12.15-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:049ec0360f939cd164ecbfd2873eaa432613d5e77d6b04535e3d1fbae5a9e645", size = 1624270, upload-time = "2025-07-29T05:51:35.195Z" }, - { url = "https://files.pythonhosted.org/packages/1f/f8/cd84dee7b6ace0740908fd0af170f9fab50c2a41ccbc3806aabcb1050141/aiohttp-3.12.15-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:b52dcf013b57464b6d1e51b627adfd69a8053e84b7103a7cd49c030f9ca44461", size = 1677294, upload-time = "2025-07-29T05:51:37.215Z" }, - { url = "https://files.pythonhosted.org/packages/ce/42/d0f1f85e50d401eccd12bf85c46ba84f947a84839c8a1c2c5f6e8ab1eb50/aiohttp-3.12.15-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:9b2af240143dd2765e0fb661fd0361a1b469cab235039ea57663cda087250ea9", size = 1708958, upload-time = "2025-07-29T05:51:39.328Z" }, - { url = "https://files.pythonhosted.org/packages/d5/6b/f6fa6c5790fb602538483aa5a1b86fcbad66244997e5230d88f9412ef24c/aiohttp-3.12.15-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ac77f709a2cde2cc71257ab2d8c74dd157c67a0558a0d2799d5d571b4c63d44d", size = 1651553, upload-time = "2025-07-29T05:51:41.356Z" }, - { url = "https://files.pythonhosted.org/packages/04/36/a6d36ad545fa12e61d11d1932eef273928b0495e6a576eb2af04297fdd3c/aiohttp-3.12.15-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:47f6b962246f0a774fbd3b6b7be25d59b06fdb2f164cf2513097998fc6a29693", size = 1727688, upload-time = "2025-07-29T05:51:43.452Z" }, - { url = "https://files.pythonhosted.org/packages/aa/c8/f195e5e06608a97a4e52c5d41c7927301bf757a8e8bb5bbf8cef6c314961/aiohttp-3.12.15-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:760fb7db442f284996e39cf9915a94492e1896baac44f06ae551974907922b64", size = 1761157, upload-time = "2025-07-29T05:51:45.643Z" }, - { url = "https://files.pythonhosted.org/packages/05/6a/ea199e61b67f25ba688d3ce93f63b49b0a4e3b3d380f03971b4646412fc6/aiohttp-3.12.15-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ad702e57dc385cae679c39d318def49aef754455f237499d5b99bea4ef582e51", size = 1710050, upload-time = "2025-07-29T05:51:48.203Z" }, - { url = "https://files.pythonhosted.org/packages/b4/2e/ffeb7f6256b33635c29dbed29a22a723ff2dd7401fff42ea60cf2060abfb/aiohttp-3.12.15-cp313-cp313-win32.whl", hash = "sha256:f813c3e9032331024de2eb2e32a88d86afb69291fbc37a3a3ae81cc9917fb3d0", size = 422647, upload-time = "2025-07-29T05:51:50.718Z" }, - { url = "https://files.pythonhosted.org/packages/1b/8e/78ee35774201f38d5e1ba079c9958f7629b1fd079459aea9467441dbfbf5/aiohttp-3.12.15-cp313-cp313-win_amd64.whl", hash = "sha256:1a649001580bdb37c6fdb1bebbd7e3bc688e8ec2b5c6f52edbb664662b17dc84", size = 449067, upload-time = "2025-07-29T05:51:52.549Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/50/42/32cf8e7704ceb4481406eb87161349abb46a57fee3f008ba9cb610968646/aiohttp-3.13.3.tar.gz", hash = "sha256:a949eee43d3782f2daae4f4a2819b2cb9b0c5d3b7f7a927067cc84dafdbb9f88", size = 7844556, upload-time = "2026-01-03T17:33:05.204Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a0/be/4fc11f202955a69e0db803a12a062b8379c970c7c84f4882b6da17337cc1/aiohttp-3.13.3-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:b903a4dfee7d347e2d87697d0713be59e0b87925be030c9178c5faa58ea58d5c", size = 739732, upload-time = "2026-01-03T17:30:14.23Z" }, + { url = "https://files.pythonhosted.org/packages/97/2c/621d5b851f94fa0bb7430d6089b3aa970a9d9b75196bc93bb624b0db237a/aiohttp-3.13.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:a45530014d7a1e09f4a55f4f43097ba0fd155089372e105e4bff4ca76cb1b168", size = 494293, upload-time = "2026-01-03T17:30:15.96Z" }, + { url = "https://files.pythonhosted.org/packages/5d/43/4be01406b78e1be8320bb8316dc9c42dbab553d281c40364e0f862d5661c/aiohttp-3.13.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:27234ef6d85c914f9efeb77ff616dbf4ad2380be0cda40b4db086ffc7ddd1b7d", size = 493533, upload-time = "2026-01-03T17:30:17.431Z" }, + { url = "https://files.pythonhosted.org/packages/8d/a8/5a35dc56a06a2c90d4742cbf35294396907027f80eea696637945a106f25/aiohttp-3.13.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d32764c6c9aafb7fb55366a224756387cd50bfa720f32b88e0e6fa45b27dcf29", size = 1737839, upload-time = "2026-01-03T17:30:19.422Z" }, + { url = "https://files.pythonhosted.org/packages/bf/62/4b9eeb331da56530bf2e198a297e5303e1c1ebdceeb00fe9b568a65c5a0c/aiohttp-3.13.3-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:b1a6102b4d3ebc07dad44fbf07b45bb600300f15b552ddf1851b5390202ea2e3", size = 1703932, upload-time = "2026-01-03T17:30:21.756Z" }, + { url = "https://files.pythonhosted.org/packages/7c/f6/af16887b5d419e6a367095994c0b1332d154f647e7dc2bd50e61876e8e3d/aiohttp-3.13.3-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c014c7ea7fb775dd015b2d3137378b7be0249a448a1612268b5a90c2d81de04d", size = 1771906, upload-time = "2026-01-03T17:30:23.932Z" }, + { url = "https://files.pythonhosted.org/packages/ce/83/397c634b1bcc24292fa1e0c7822800f9f6569e32934bdeef09dae7992dfb/aiohttp-3.13.3-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:2b8d8ddba8f95ba17582226f80e2de99c7a7948e66490ef8d947e272a93e9463", size = 1871020, upload-time = "2026-01-03T17:30:26Z" }, + { url = "https://files.pythonhosted.org/packages/86/f6/a62cbbf13f0ac80a70f71b1672feba90fdb21fd7abd8dbf25c0105fb6fa3/aiohttp-3.13.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9ae8dd55c8e6c4257eae3a20fd2c8f41edaea5992ed67156642493b8daf3cecc", size = 1755181, upload-time = "2026-01-03T17:30:27.554Z" }, + { url = "https://files.pythonhosted.org/packages/0a/87/20a35ad487efdd3fba93d5843efdfaa62d2f1479eaafa7453398a44faf13/aiohttp-3.13.3-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:01ad2529d4b5035578f5081606a465f3b814c542882804e2e8cda61adf5c71bf", size = 1561794, upload-time = "2026-01-03T17:30:29.254Z" }, + { url = "https://files.pythonhosted.org/packages/de/95/8fd69a66682012f6716e1bc09ef8a1a2a91922c5725cb904689f112309c4/aiohttp-3.13.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:bb4f7475e359992b580559e008c598091c45b5088f28614e855e42d39c2f1033", size = 1697900, upload-time = "2026-01-03T17:30:31.033Z" }, + { url = "https://files.pythonhosted.org/packages/e5/66/7b94b3b5ba70e955ff597672dad1691333080e37f50280178967aff68657/aiohttp-3.13.3-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:c19b90316ad3b24c69cd78d5c9b4f3aa4497643685901185b65166293d36a00f", size = 1728239, upload-time = "2026-01-03T17:30:32.703Z" }, + { url = "https://files.pythonhosted.org/packages/47/71/6f72f77f9f7d74719692ab65a2a0252584bf8d5f301e2ecb4c0da734530a/aiohttp-3.13.3-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:96d604498a7c782cb15a51c406acaea70d8c027ee6b90c569baa6e7b93073679", size = 1740527, upload-time = "2026-01-03T17:30:34.695Z" }, + { url = "https://files.pythonhosted.org/packages/fa/b4/75ec16cbbd5c01bdaf4a05b19e103e78d7ce1ef7c80867eb0ace42ff4488/aiohttp-3.13.3-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:084911a532763e9d3dd95adf78a78f4096cd5f58cdc18e6fdbc1b58417a45423", size = 1554489, upload-time = "2026-01-03T17:30:36.864Z" }, + { url = "https://files.pythonhosted.org/packages/52/8f/bc518c0eea29f8406dcf7ed1f96c9b48e3bc3995a96159b3fc11f9e08321/aiohttp-3.13.3-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:7a4a94eb787e606d0a09404b9c38c113d3b099d508021faa615d70a0131907ce", size = 1767852, upload-time = "2026-01-03T17:30:39.433Z" }, + { url = "https://files.pythonhosted.org/packages/9d/f2/a07a75173124f31f11ea6f863dc44e6f09afe2bca45dd4e64979490deab1/aiohttp-3.13.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:87797e645d9d8e222e04160ee32aa06bc5c163e8499f24db719e7852ec23093a", size = 1722379, upload-time = "2026-01-03T17:30:41.081Z" }, + { url = "https://files.pythonhosted.org/packages/3c/4a/1a3fee7c21350cac78e5c5cef711bac1b94feca07399f3d406972e2d8fcd/aiohttp-3.13.3-cp312-cp312-win32.whl", hash = "sha256:b04be762396457bef43f3597c991e192ee7da460a4953d7e647ee4b1c28e7046", size = 428253, upload-time = "2026-01-03T17:30:42.644Z" }, + { url = "https://files.pythonhosted.org/packages/d9/b7/76175c7cb4eb73d91ad63c34e29fc4f77c9386bba4a65b53ba8e05ee3c39/aiohttp-3.13.3-cp312-cp312-win_amd64.whl", hash = "sha256:e3531d63d3bdfa7e3ac5e9b27b2dd7ec9df3206a98e0b3445fa906f233264c57", size = 455407, upload-time = "2026-01-03T17:30:44.195Z" }, + { url = "https://files.pythonhosted.org/packages/97/8a/12ca489246ca1faaf5432844adbfce7ff2cc4997733e0af120869345643a/aiohttp-3.13.3-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:5dff64413671b0d3e7d5918ea490bdccb97a4ad29b3f311ed423200b2203e01c", size = 734190, upload-time = "2026-01-03T17:30:45.832Z" }, + { url = "https://files.pythonhosted.org/packages/32/08/de43984c74ed1fca5c014808963cc83cb00d7bb06af228f132d33862ca76/aiohttp-3.13.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:87b9aab6d6ed88235aa2970294f496ff1a1f9adcd724d800e9b952395a80ffd9", size = 491783, upload-time = "2026-01-03T17:30:47.466Z" }, + { url = "https://files.pythonhosted.org/packages/17/f8/8dd2cf6112a5a76f81f81a5130c57ca829d101ad583ce57f889179accdda/aiohttp-3.13.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:425c126c0dc43861e22cb1c14ba4c8e45d09516d0a3ae0a3f7494b79f5f233a3", size = 490704, upload-time = "2026-01-03T17:30:49.373Z" }, + { url = "https://files.pythonhosted.org/packages/6d/40/a46b03ca03936f832bc7eaa47cfbb1ad012ba1be4790122ee4f4f8cba074/aiohttp-3.13.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7f9120f7093c2a32d9647abcaf21e6ad275b4fbec5b55969f978b1a97c7c86bf", size = 1720652, upload-time = "2026-01-03T17:30:50.974Z" }, + { url = "https://files.pythonhosted.org/packages/f7/7e/917fe18e3607af92657e4285498f500dca797ff8c918bd7d90b05abf6c2a/aiohttp-3.13.3-cp313-cp313-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:697753042d57f4bf7122cab985bf15d0cef23c770864580f5af4f52023a56bd6", size = 1692014, upload-time = "2026-01-03T17:30:52.729Z" }, + { url = "https://files.pythonhosted.org/packages/71/b6/cefa4cbc00d315d68973b671cf105b21a609c12b82d52e5d0c9ae61d2a09/aiohttp-3.13.3-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:6de499a1a44e7de70735d0b39f67c8f25eb3d91eb3103be99ca0fa882cdd987d", size = 1759777, upload-time = "2026-01-03T17:30:54.537Z" }, + { url = "https://files.pythonhosted.org/packages/fb/e3/e06ee07b45e59e6d81498b591fc589629be1553abb2a82ce33efe2a7b068/aiohttp-3.13.3-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:37239e9f9a7ea9ac5bf6b92b0260b01f8a22281996da609206a84df860bc1261", size = 1861276, upload-time = "2026-01-03T17:30:56.512Z" }, + { url = "https://files.pythonhosted.org/packages/7c/24/75d274228acf35ceeb2850b8ce04de9dd7355ff7a0b49d607ee60c29c518/aiohttp-3.13.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f76c1e3fe7d7c8afad7ed193f89a292e1999608170dcc9751a7462a87dfd5bc0", size = 1743131, upload-time = "2026-01-03T17:30:58.256Z" }, + { url = "https://files.pythonhosted.org/packages/04/98/3d21dde21889b17ca2eea54fdcff21b27b93f45b7bb94ca029c31ab59dc3/aiohttp-3.13.3-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:fc290605db2a917f6e81b0e1e0796469871f5af381ce15c604a3c5c7e51cb730", size = 1556863, upload-time = "2026-01-03T17:31:00.445Z" }, + { url = "https://files.pythonhosted.org/packages/9e/84/da0c3ab1192eaf64782b03971ab4055b475d0db07b17eff925e8c93b3aa5/aiohttp-3.13.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:4021b51936308aeea0367b8f006dc999ca02bc118a0cc78c303f50a2ff6afb91", size = 1682793, upload-time = "2026-01-03T17:31:03.024Z" }, + { url = "https://files.pythonhosted.org/packages/ff/0f/5802ada182f575afa02cbd0ec5180d7e13a402afb7c2c03a9aa5e5d49060/aiohttp-3.13.3-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:49a03727c1bba9a97d3e93c9f93ca03a57300f484b6e935463099841261195d3", size = 1716676, upload-time = "2026-01-03T17:31:04.842Z" }, + { url = "https://files.pythonhosted.org/packages/3f/8c/714d53bd8b5a4560667f7bbbb06b20c2382f9c7847d198370ec6526af39c/aiohttp-3.13.3-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:3d9908a48eb7416dc1f4524e69f1d32e5d90e3981e4e37eb0aa1cd18f9cfa2a4", size = 1733217, upload-time = "2026-01-03T17:31:06.868Z" }, + { url = "https://files.pythonhosted.org/packages/7d/79/e2176f46d2e963facea939f5be2d26368ce543622be6f00a12844d3c991f/aiohttp-3.13.3-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:2712039939ec963c237286113c68dbad80a82a4281543f3abf766d9d73228998", size = 1552303, upload-time = "2026-01-03T17:31:08.958Z" }, + { url = "https://files.pythonhosted.org/packages/ab/6a/28ed4dea1759916090587d1fe57087b03e6c784a642b85ef48217b0277ae/aiohttp-3.13.3-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:7bfdc049127717581866fa4708791220970ce291c23e28ccf3922c700740fdc0", size = 1763673, upload-time = "2026-01-03T17:31:10.676Z" }, + { url = "https://files.pythonhosted.org/packages/e8/35/4a3daeb8b9fab49240d21c04d50732313295e4bd813a465d840236dd0ce1/aiohttp-3.13.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8057c98e0c8472d8846b9c79f56766bcc57e3e8ac7bfd510482332366c56c591", size = 1721120, upload-time = "2026-01-03T17:31:12.575Z" }, + { url = "https://files.pythonhosted.org/packages/bc/9f/d643bb3c5fb99547323e635e251c609fbbc660d983144cfebec529e09264/aiohttp-3.13.3-cp313-cp313-win32.whl", hash = "sha256:1449ceddcdbcf2e0446957863af03ebaaa03f94c090f945411b61269e2cb5daf", size = 427383, upload-time = "2026-01-03T17:31:14.382Z" }, + { url = "https://files.pythonhosted.org/packages/4e/f1/ab0395f8a79933577cdd996dd2f9aa6014af9535f65dddcf88204682fe62/aiohttp-3.13.3-cp313-cp313-win_amd64.whl", hash = "sha256:693781c45a4033d31d4187d2436f5ac701e7bbfe5df40d917736108c1cc7436e", size = 453899, upload-time = "2026-01-03T17:31:15.958Z" }, + { url = "https://files.pythonhosted.org/packages/99/36/5b6514a9f5d66f4e2597e40dea2e3db271e023eb7a5d22defe96ba560996/aiohttp-3.13.3-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:ea37047c6b367fd4bd632bff8077449b8fa034b69e812a18e0132a00fae6e808", size = 737238, upload-time = "2026-01-03T17:31:17.909Z" }, + { url = "https://files.pythonhosted.org/packages/f7/49/459327f0d5bcd8c6c9ca69e60fdeebc3622861e696490d8674a6d0cb90a6/aiohttp-3.13.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:6fc0e2337d1a4c3e6acafda6a78a39d4c14caea625124817420abceed36e2415", size = 492292, upload-time = "2026-01-03T17:31:19.919Z" }, + { url = "https://files.pythonhosted.org/packages/e8/0b/b97660c5fd05d3495b4eb27f2d0ef18dc1dc4eff7511a9bf371397ff0264/aiohttp-3.13.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:c685f2d80bb67ca8c3837823ad76196b3694b0159d232206d1e461d3d434666f", size = 493021, upload-time = "2026-01-03T17:31:21.636Z" }, + { url = "https://files.pythonhosted.org/packages/54/d4/438efabdf74e30aeceb890c3290bbaa449780583b1270b00661126b8aae4/aiohttp-3.13.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:48e377758516d262bde50c2584fc6c578af272559c409eecbdd2bae1601184d6", size = 1717263, upload-time = "2026-01-03T17:31:23.296Z" }, + { url = "https://files.pythonhosted.org/packages/71/f2/7bddc7fd612367d1459c5bcf598a9e8f7092d6580d98de0e057eb42697ad/aiohttp-3.13.3-cp314-cp314-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:34749271508078b261c4abb1767d42b8d0c0cc9449c73a4df494777dc55f0687", size = 1669107, upload-time = "2026-01-03T17:31:25.334Z" }, + { url = "https://files.pythonhosted.org/packages/00/5a/1aeaecca40e22560f97610a329e0e5efef5e0b5afdf9f857f0d93839ab2e/aiohttp-3.13.3-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:82611aeec80eb144416956ec85b6ca45a64d76429c1ed46ae1b5f86c6e0c9a26", size = 1760196, upload-time = "2026-01-03T17:31:27.394Z" }, + { url = "https://files.pythonhosted.org/packages/f8/f8/0ff6992bea7bd560fc510ea1c815f87eedd745fe035589c71ce05612a19a/aiohttp-3.13.3-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:2fff83cfc93f18f215896e3a190e8e5cb413ce01553901aca925176e7568963a", size = 1843591, upload-time = "2026-01-03T17:31:29.238Z" }, + { url = "https://files.pythonhosted.org/packages/e3/d1/e30e537a15f53485b61f5be525f2157da719819e8377298502aebac45536/aiohttp-3.13.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bbe7d4cecacb439e2e2a8a1a7b935c25b812af7a5fd26503a66dadf428e79ec1", size = 1720277, upload-time = "2026-01-03T17:31:31.053Z" }, + { url = "https://files.pythonhosted.org/packages/84/45/23f4c451d8192f553d38d838831ebbc156907ea6e05557f39563101b7717/aiohttp-3.13.3-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:b928f30fe49574253644b1ca44b1b8adbd903aa0da4b9054a6c20fc7f4092a25", size = 1548575, upload-time = "2026-01-03T17:31:32.87Z" }, + { url = "https://files.pythonhosted.org/packages/6a/ed/0a42b127a43712eda7807e7892c083eadfaf8429ca8fb619662a530a3aab/aiohttp-3.13.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:7b5e8fe4de30df199155baaf64f2fcd604f4c678ed20910db8e2c66dc4b11603", size = 1679455, upload-time = "2026-01-03T17:31:34.76Z" }, + { url = "https://files.pythonhosted.org/packages/2e/b5/c05f0c2b4b4fe2c9d55e73b6d3ed4fd6c9dc2684b1d81cbdf77e7fad9adb/aiohttp-3.13.3-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:8542f41a62bcc58fc7f11cf7c90e0ec324ce44950003feb70640fc2a9092c32a", size = 1687417, upload-time = "2026-01-03T17:31:36.699Z" }, + { url = "https://files.pythonhosted.org/packages/c9/6b/915bc5dad66aef602b9e459b5a973529304d4e89ca86999d9d75d80cbd0b/aiohttp-3.13.3-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:5e1d8c8b8f1d91cd08d8f4a3c2b067bfca6ec043d3ff36de0f3a715feeedf926", size = 1729968, upload-time = "2026-01-03T17:31:38.622Z" }, + { url = "https://files.pythonhosted.org/packages/11/3b/e84581290a9520024a08640b63d07673057aec5ca548177a82026187ba73/aiohttp-3.13.3-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:90455115e5da1c3c51ab619ac57f877da8fd6d73c05aacd125c5ae9819582aba", size = 1545690, upload-time = "2026-01-03T17:31:40.57Z" }, + { url = "https://files.pythonhosted.org/packages/f5/04/0c3655a566c43fd647c81b895dfe361b9f9ad6d58c19309d45cff52d6c3b/aiohttp-3.13.3-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:042e9e0bcb5fba81886c8b4fbb9a09d6b8a00245fd8d88e4d989c1f96c74164c", size = 1746390, upload-time = "2026-01-03T17:31:42.857Z" }, + { url = "https://files.pythonhosted.org/packages/1f/53/71165b26978f719c3419381514c9690bd5980e764a09440a10bb816ea4ab/aiohttp-3.13.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:2eb752b102b12a76ca02dff751a801f028b4ffbbc478840b473597fc91a9ed43", size = 1702188, upload-time = "2026-01-03T17:31:44.984Z" }, + { url = "https://files.pythonhosted.org/packages/29/a7/cbe6c9e8e136314fa1980da388a59d2f35f35395948a08b6747baebb6aa6/aiohttp-3.13.3-cp314-cp314-win32.whl", hash = "sha256:b556c85915d8efaed322bf1bdae9486aa0f3f764195a0fb6ee962e5c71ef5ce1", size = 433126, upload-time = "2026-01-03T17:31:47.463Z" }, + { url = "https://files.pythonhosted.org/packages/de/56/982704adea7d3b16614fc5936014e9af85c0e34b58f9046655817f04306e/aiohttp-3.13.3-cp314-cp314-win_amd64.whl", hash = "sha256:9bf9f7a65e7aa20dd764151fb3d616c81088f91f8df39c3893a536e279b4b984", size = 459128, upload-time = "2026-01-03T17:31:49.2Z" }, + { url = "https://files.pythonhosted.org/packages/6c/2a/3c79b638a9c3d4658d345339d22070241ea341ed4e07b5ac60fb0f418003/aiohttp-3.13.3-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:05861afbbec40650d8a07ea324367cb93e9e8cc7762e04dd4405df99fa65159c", size = 769512, upload-time = "2026-01-03T17:31:51.134Z" }, + { url = "https://files.pythonhosted.org/packages/29/b9/3e5014d46c0ab0db8707e0ac2711ed28c4da0218c358a4e7c17bae0d8722/aiohttp-3.13.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:2fc82186fadc4a8316768d61f3722c230e2c1dcab4200d52d2ebdf2482e47592", size = 506444, upload-time = "2026-01-03T17:31:52.85Z" }, + { url = "https://files.pythonhosted.org/packages/90/03/c1d4ef9a054e151cd7839cdc497f2638f00b93cbe8043983986630d7a80c/aiohttp-3.13.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:0add0900ff220d1d5c5ebbf99ed88b0c1bbf87aa7e4262300ed1376a6b13414f", size = 510798, upload-time = "2026-01-03T17:31:54.91Z" }, + { url = "https://files.pythonhosted.org/packages/ea/76/8c1e5abbfe8e127c893fe7ead569148a4d5a799f7cf958d8c09f3eedf097/aiohttp-3.13.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:568f416a4072fbfae453dcf9a99194bbb8bdeab718e08ee13dfa2ba0e4bebf29", size = 1868835, upload-time = "2026-01-03T17:31:56.733Z" }, + { url = "https://files.pythonhosted.org/packages/8e/ac/984c5a6f74c363b01ff97adc96a3976d9c98940b8969a1881575b279ac5d/aiohttp-3.13.3-cp314-cp314t-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:add1da70de90a2569c5e15249ff76a631ccacfe198375eead4aadf3b8dc849dc", size = 1720486, upload-time = "2026-01-03T17:31:58.65Z" }, + { url = "https://files.pythonhosted.org/packages/b2/9a/b7039c5f099c4eb632138728828b33428585031a1e658d693d41d07d89d1/aiohttp-3.13.3-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:10b47b7ba335d2e9b1239fa571131a87e2d8ec96b333e68b2a305e7a98b0bae2", size = 1847951, upload-time = "2026-01-03T17:32:00.989Z" }, + { url = "https://files.pythonhosted.org/packages/3c/02/3bec2b9a1ba3c19ff89a43a19324202b8eb187ca1e928d8bdac9bbdddebd/aiohttp-3.13.3-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:3dd4dce1c718e38081c8f35f323209d4c1df7d4db4bab1b5c88a6b4d12b74587", size = 1941001, upload-time = "2026-01-03T17:32:03.122Z" }, + { url = "https://files.pythonhosted.org/packages/37/df/d879401cedeef27ac4717f6426c8c36c3091c6e9f08a9178cc87549c537f/aiohttp-3.13.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:34bac00a67a812570d4a460447e1e9e06fae622946955f939051e7cc895cfab8", size = 1797246, upload-time = "2026-01-03T17:32:05.255Z" }, + { url = "https://files.pythonhosted.org/packages/8d/15/be122de1f67e6953add23335c8ece6d314ab67c8bebb3f181063010795a7/aiohttp-3.13.3-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:a19884d2ee70b06d9204b2727a7b9f983d0c684c650254679e716b0b77920632", size = 1627131, upload-time = "2026-01-03T17:32:07.607Z" }, + { url = "https://files.pythonhosted.org/packages/12/12/70eedcac9134cfa3219ab7af31ea56bc877395b1ac30d65b1bc4b27d0438/aiohttp-3.13.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:5f8ca7f2bb6ba8348a3614c7918cc4bb73268c5ac2a207576b7afea19d3d9f64", size = 1795196, upload-time = "2026-01-03T17:32:09.59Z" }, + { url = "https://files.pythonhosted.org/packages/32/11/b30e1b1cd1f3054af86ebe60df96989c6a414dd87e27ad16950eee420bea/aiohttp-3.13.3-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:b0d95340658b9d2f11d9697f59b3814a9d3bb4b7a7c20b131df4bcef464037c0", size = 1782841, upload-time = "2026-01-03T17:32:11.445Z" }, + { url = "https://files.pythonhosted.org/packages/88/0d/d98a9367b38912384a17e287850f5695c528cff0f14f791ce8ee2e4f7796/aiohttp-3.13.3-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:a1e53262fd202e4b40b70c3aff944a8155059beedc8a89bba9dc1f9ef06a1b56", size = 1795193, upload-time = "2026-01-03T17:32:13.705Z" }, + { url = "https://files.pythonhosted.org/packages/43/a5/a2dfd1f5ff5581632c7f6a30e1744deda03808974f94f6534241ef60c751/aiohttp-3.13.3-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:d60ac9663f44168038586cab2157e122e46bdef09e9368b37f2d82d354c23f72", size = 1621979, upload-time = "2026-01-03T17:32:15.965Z" }, + { url = "https://files.pythonhosted.org/packages/fa/f0/12973c382ae7c1cccbc4417e129c5bf54c374dfb85af70893646e1f0e749/aiohttp-3.13.3-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:90751b8eed69435bac9ff4e3d2f6b3af1f57e37ecb0fbeee59c0174c9e2d41df", size = 1822193, upload-time = "2026-01-03T17:32:18.219Z" }, + { url = "https://files.pythonhosted.org/packages/3c/5f/24155e30ba7f8c96918af1350eb0663e2430aad9e001c0489d89cd708ab1/aiohttp-3.13.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:fc353029f176fd2b3ec6cfc71be166aba1936fe5d73dd1992ce289ca6647a9aa", size = 1769801, upload-time = "2026-01-03T17:32:20.25Z" }, + { url = "https://files.pythonhosted.org/packages/eb/f8/7314031ff5c10e6ece114da79b338ec17eeff3a079e53151f7e9f43c4723/aiohttp-3.13.3-cp314-cp314t-win32.whl", hash = "sha256:2e41b18a58da1e474a057b3d35248d8320029f61d70a37629535b16a0c8f3767", size = 466523, upload-time = "2026-01-03T17:32:22.215Z" }, + { url = "https://files.pythonhosted.org/packages/b4/63/278a98c715ae467624eafe375542d8ba9b4383a016df8fdefe0ae28382a7/aiohttp-3.13.3-cp314-cp314t-win_amd64.whl", hash = "sha256:44531a36aa2264a1860089ffd4dce7baf875ee5a6079d5fb42e261c704ef7344", size = 499694, upload-time = "2026-01-03T17:32:24.546Z" }, ] [[package]] @@ -7130,11 +7165,11 @@ wheels = [ [[package]] name = "urllib3" -version = "2.6.2" +version = "2.6.3" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/1e/24/a2a2ed9addd907787d7aa0355ba36a6cadf1768b934c652ea78acbd59dcd/urllib3-2.6.2.tar.gz", hash = "sha256:016f9c98bb7e98085cb2b4b17b87d2c702975664e4f060c6532e64d1c1a5e797", size = 432930, upload-time = "2025-12-11T15:56:40.252Z" } +sdist = { url = "https://files.pythonhosted.org/packages/c7/24/5f1b3bdffd70275f6661c76461e25f024d5a38a46f04aaca912426a2b1d3/urllib3-2.6.3.tar.gz", hash = "sha256:1b62b6884944a57dbe321509ab94fd4d3b307075e0c2eae991ac71ee15ad38ed", size = 435556, upload-time = "2026-01-07T16:24:43.925Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/6d/b9/4095b668ea3678bf6a0af005527f39de12fb026516fb3df17495a733b7f8/urllib3-2.6.2-py3-none-any.whl", hash = "sha256:ec21cddfe7724fc7cb4ba4bea7aa8e2ef36f607a4bab81aa6ce42a13dc3f03dd", size = 131182, upload-time = "2025-12-11T15:56:38.584Z" }, + { url = "https://files.pythonhosted.org/packages/39/08/aaaad47bc4e9dc8c725e68f9d04865dbcb2052843ff09c97b08904852d84/urllib3-2.6.3-py3-none-any.whl", hash = "sha256:bf272323e553dfb2e87d9bfd225ca7b0f467b919d7bbd355436d3fd37cb0acd4", size = 131584, upload-time = "2026-01-07T16:24:42.685Z" }, ] [[package]] From d4439657eced9619f148246b84c03bf7e19efe14 Mon Sep 17 00:00:00 2001 From: Rayen Date: Fri, 9 Jan 2026 17:23:55 +0800 Subject: [PATCH 40/52] fix: patch pytorch aten.alias.default shard strategy (#1728) Signed-off-by: ruit Signed-off-by: Parth Mannan --- .../policy/workers/dtensor_policy_worker.py | 8 ++-- .../workers/dtensor_policy_worker_v2.py | 11 ++--- nemo_rl/models/policy/workers/patches.py | 22 ++++++++++ .../unit/models/policy/test_dtensor_worker.py | 3 ++ tests/unit/models/policy/test_patches.py | 43 +++++++++++++++++++ 5 files changed, 78 insertions(+), 9 deletions(-) diff --git a/nemo_rl/models/policy/workers/dtensor_policy_worker.py b/nemo_rl/models/policy/workers/dtensor_policy_worker.py index 0f41938c88..e9c57cfb55 100644 --- a/nemo_rl/models/policy/workers/dtensor_policy_worker.py +++ b/nemo_rl/models/policy/workers/dtensor_policy_worker.py @@ -76,6 +76,7 @@ resolve_model_class, ) from nemo_rl.models.policy.workers.base_policy_worker import AbstractPolicyWorker +from nemo_rl.models.policy.workers.patches import apply_torch_aten_alias_tensor_patch from nemo_rl.utils.native_checkpoint import ( load_checkpoint, save_checkpoint, @@ -157,6 +158,9 @@ def __init__( init_reference_model: bool = True, **kwargs: Any, ): + # Apply patch to work around 'NotImplementedError: Operator aten.alias.default does not have a sharding strategy registered' + apply_torch_aten_alias_tensor_patch() + """Initialize the DTensorPolicyWorker.""" self.tokenizer = tokenizer self.processor = processor @@ -296,10 +300,6 @@ def __init__( print( "[WARNING]: sequence_parallel=True, but tp_size=1 which has no effect. Enable tp_size > 1 to use sequence parallelism." ) - elif sequence_parallel_enabled and tp_size > 1: - raise RuntimeError( - "Sequence parallel + tp_size >1 is currently broken in torch==2.8.0. See https://github.com/NVIDIA-NeMo/Automodel/issues/652 for more details." - ) if cp_size > 1: assert not isinstance(self.model, Gemma3ForCausalLM), ( diff --git a/nemo_rl/models/policy/workers/dtensor_policy_worker_v2.py b/nemo_rl/models/policy/workers/dtensor_policy_worker_v2.py index 785568cc76..0cc3d7495c 100644 --- a/nemo_rl/models/policy/workers/dtensor_policy_worker_v2.py +++ b/nemo_rl/models/policy/workers/dtensor_policy_worker_v2.py @@ -86,7 +86,10 @@ resolve_model_class, ) from nemo_rl.models.policy.workers.base_policy_worker import AbstractPolicyWorker -from nemo_rl.models.policy.workers.patches import apply_transformer_engine_patch +from nemo_rl.models.policy.workers.patches import ( + apply_torch_aten_alias_tensor_patch, + apply_transformer_engine_patch, +) from nemo_rl.utils.automodel_checkpoint import AutomodelCheckpointManager from nemo_rl.utils.checkpoint import CheckpointingConfig from nemo_rl.utils.nsys import wrap_with_nvtx_name @@ -127,6 +130,8 @@ def __init__( """Initialize the DTensorPolicyWorkerV2.""" # Apply TE patch until TE is upgraded to 2.10.0 apply_transformer_engine_patch() + # Apply patch to work around 'NotImplementedError: Operator aten.alias.default does not have a sharding strategy registered' + apply_torch_aten_alias_tensor_patch() self.tokenizer = tokenizer self.processor = processor @@ -338,10 +343,6 @@ def __init__( print( "[WARNING]: sequence_parallel=True, but tp_size=1 which has no effect. Enable tp_size > 1 to use sequence parallelism." ) - elif sequence_parallel_enabled and tp_size > 1: - raise RuntimeError( - "Sequence parallel + tp_size >1 is currently broken in torch==2.8.0. See https://github.com/NVIDIA-NeMo/Automodel/issues/652 for more details." - ) if cp_size > 1: assert not isinstance(self.model, Gemma3ForCausalLM), ( diff --git a/nemo_rl/models/policy/workers/patches.py b/nemo_rl/models/policy/workers/patches.py index 5a0d5b0ab8..aa140548aa 100644 --- a/nemo_rl/models/policy/workers/patches.py +++ b/nemo_rl/models/policy/workers/patches.py @@ -15,6 +15,10 @@ import os from importlib.util import find_spec +import torch +from torch.distributed.tensor._ops._tensor_ops import propagate_single_input_strategy +from torch.distributed.tensor._ops.utils import register_op_strategy + def _get_transformer_engine_file(relative_path: str) -> str: """Return absolute path to a Transformer Engine file or raise if it cannot be found. @@ -104,3 +108,21 @@ def apply_transformer_engine_patch(): except Exception as e: print(f"Error checking/patching transformer_engine: {e}") + + +def apply_torch_aten_alias_tensor_patch(): + """Register a sharding rule for `torch.ops.aten.alias.default`. + + Work around 'NotImplementedError: Operator aten.alias.default does not have a sharding strategy registered' + in PyTorch 2.9. See https://github.com/pytorch/pytorch/pull/166867 for the upstream fix. + We can remove this patch when we upgrade torch to include this fix. + """ + assert torch.__version__.startswith("2.9.0"), ( + "This patch is needed for torch 2.9.0. Please retest if you upgrade torch to a newer version and remove this patch." + ) + try: + register_op_strategy(torch.ops.aten.alias.default)( + propagate_single_input_strategy + ) + except Exception as e: + print(f"Error applying torch.ops.aten.alias.default patch: {e}") diff --git a/tests/unit/models/policy/test_dtensor_worker.py b/tests/unit/models/policy/test_dtensor_worker.py index 4ddd320bfe..a750a78f9a 100644 --- a/tests/unit/models/policy/test_dtensor_worker.py +++ b/tests/unit/models/policy/test_dtensor_worker.py @@ -581,6 +581,9 @@ def policy_setup(self, request, two_gpu_cluster, tiny_llama_model_path): ("tiny_nemotron5_h_model_path", 1, 1, False, False, False), ("tiny_nemotron5_h_model_path", 1, 1, False, True, True), # nemotron5_h doesn't support cp + # TP2, SP=True + ("tiny_llama_model_path", 2, 1, True, False, False), + ("tiny_qwen2_model_path", 2, 1, True, False, False), ] ) def training_setup(self, request, two_gpu_cluster): diff --git a/tests/unit/models/policy/test_patches.py b/tests/unit/models/policy/test_patches.py index e8cacbcd4a..0505768bf1 100644 --- a/tests/unit/models/policy/test_patches.py +++ b/tests/unit/models/policy/test_patches.py @@ -18,9 +18,11 @@ from unittest.mock import MagicMock, mock_open, patch import pytest +import torch from nemo_rl.models.policy.workers.patches import ( _get_transformer_engine_file, + apply_torch_aten_alias_tensor_patch, apply_transformer_engine_patch, ) @@ -445,3 +447,44 @@ def permutation_kernel(x): assert captured.out.count("Successfully patched") == 1 finally: os.unlink(tmp_path) + + +def build_sharded_3d(rank: int, world_size: int): + """ + Build tensor, DTensor, and test the sharding rule for torch.ops.aten.alias.default. + """ + from torch.distributed.tensor import DeviceMesh, DTensor + + mesh = DeviceMesh("cuda", list(range(world_size))) + global_shape = (4, 2, 4) + tensor = torch.arange( + torch.tensor(global_shape).prod(), dtype=torch.float32 + ).reshape(global_shape) + + try: + dtensor = DTensor.from_local( + tensor, + device_mesh=mesh, + ) + alias_dtensor = torch.ops.aten.alias.default(dtensor) + assert False, ( + "Torch==2.9 should raise 'NotImplementedError: Operator aten.alias.default does not have a sharding strategy registered', but it didn't." + "You can:\n " + "1. Check is you bump your torch version which contain the fix https://github.com/pytorch/pytorch/pull/166867\n" + "2. If yes, remove patch apply_torch_aten_alias_tensor_patch in nemo_rl/models/policy/workers/patches.py \n" + "3. Remove the patching call in nemo_rl/models/policy/workers/dtensor_policy_worker.py and nemo_rl/models/policy/workers/dtensor_policy_worker_v2.py \n" + "4. Delete this test" + ) + except NotImplementedError: + apply_torch_aten_alias_tensor_patch() + alias_dtensor = torch.ops.aten.alias.default(dtensor) + assert alias_dtensor.shape == global_shape + assert torch.allclose(alias_dtensor.to_local().cpu(), tensor.cpu()) + + +@pytest.mark.cuda +def test_aten_alias_sharding_still_missing_upstream( + distributed_test_runner, world_size=2 +): + """Test that sharding rule for aten.alias.default is still missing upstream.""" + distributed_test_runner(build_sharded_3d, world_size=world_size) From ff48f8501fe04dd5886cf56b4a6048ad33f9460d Mon Sep 17 00:00:00 2001 From: Hemil Desai Date: Fri, 9 Jan 2026 01:47:52 -0800 Subject: [PATCH 41/52] feat: RL support for custom moe models in dtensor v2 (#1695) Signed-off-by: Hemil Desai Signed-off-by: Parth Mannan --- ...grpo-moonlight-16b-automodel-1n8g-ep8.yaml | 60 +++ nemo_rl/models/policy/__init__.py | 12 +- .../workers/dtensor_policy_worker_v2.py | 314 +++++++------ .../grpo-moonlight-16b-automodel-1n8g-ep8.sh | 45 ++ tests/test_suites/nightly.txt | 3 + .../models/policy/test_dtensor_worker_v2.py | 429 ++++++++++++++++++ tests/unit/test_recipes_and_test_suites.py | 6 +- 7 files changed, 735 insertions(+), 134 deletions(-) create mode 100644 examples/configs/recipes/llm/grpo-moonlight-16b-automodel-1n8g-ep8.yaml create mode 100755 tests/test_suites/llm/grpo-moonlight-16b-automodel-1n8g-ep8.sh diff --git a/examples/configs/recipes/llm/grpo-moonlight-16b-automodel-1n8g-ep8.yaml b/examples/configs/recipes/llm/grpo-moonlight-16b-automodel-1n8g-ep8.yaml new file mode 100644 index 0000000000..d0fc72fbe9 --- /dev/null +++ b/examples/configs/recipes/llm/grpo-moonlight-16b-automodel-1n8g-ep8.yaml @@ -0,0 +1,60 @@ +defaults: ../../grpo_math_1B.yaml +grpo: + val_period: -1 +loss_fn: + reference_policy_kl_penalty: 0.04 +checkpointing: + checkpoint_dir: results/grpo-moonlight-16b-a3b-instruct-automodel-1n8g-ep8 + enabled: false + save_period: 10000 +policy: + model_name: moonshotai/Moonlight-16B-A3B-Instruct + train_micro_batch_size: 1 + max_total_sequence_length: 4096 + activation_checkpointing_enabled: false + dtensor_cfg: + expert_parallel_size: 8 + clear_cache_every_n_steps: 50 + automodel_kwargs: + use_liger_kernel: false + backend: + _target_: nemo_automodel.components.moe.utils.BackendConfig + attn: te + linear: te + rms_norm: te + enable_deepep: true + fake_balanced_gate: false + enable_hf_state_dict_adapter: true + enable_fsdp_optimizations: false + gate_precision: float64 + dynamic_batching: + enabled: true + sequence_packing: + enabled: false + make_sequence_length_divisible_by: 4 + optimizer: + kwargs: + lr: 3.0e-07 + scheduler: + - name: torch.optim.lr_scheduler.LinearLR + kwargs: + start_factor: 0.1 + end_factor: 1 + total_iters: 13 + - name: torch.optim.lr_scheduler.ConstantLR + kwargs: + factor: 1 + total_iters: 10000000000 + - milestones: + - 13 +data: + max_input_seq_length: 4096 +cluster: + gpus_per_node: 8 +logger: + log_dir: logs/grpo-moonlight-16b-a3b-instruct-automodel-1n8g-ep8 + wandb_enabled: true + tensorboard_enabled: true + wandb: + project: nemo-rl + name: grpo-moonlight-16b-a3b-instruct-automodel-1n8g-ep8 diff --git a/nemo_rl/models/policy/__init__.py b/nemo_rl/models/policy/__init__.py index 1efa14f7a6..0c02251964 100644 --- a/nemo_rl/models/policy/__init__.py +++ b/nemo_rl/models/policy/__init__.py @@ -35,6 +35,13 @@ class LoRAConfig(TypedDict): class AutomodelBackendConfig(TypedDict): + """Configuration for custom MoE implementation backend in Automodel. + + Used when setting the backend in automodel_kwargs in your config. + Alternatively, pass `force_hf: true` in automodel_kwargs to fall back + to the HuggingFace implementation. + """ + # Hydra target class path (e.g., "nemo_automodel.components.moe.utils.BackendConfig") _target_: str # Attention implementation: "te" (Transformer Engine), "flex" (FlexAttention), etc. @@ -47,7 +54,8 @@ class AutomodelBackendConfig(TypedDict): enable_deepep: NotRequired[bool] # Use fake balanced gate for testing/debugging MoE fake_balanced_gate: NotRequired[bool] - # Enable HuggingFace state dict adapter for checkpoint loading + # Enable HuggingFace state dict adapter for checkpoint saving/loading plus refit support for RL + # This should almost always be set to True when using a custom MoE implementation. Set to False only for specific use cases like debugging or performance testing. enable_hf_state_dict_adapter: NotRequired[bool] # Enable FSDP-specific optimizations enable_fsdp_optimizations: NotRequired[bool] @@ -60,6 +68,8 @@ class AutomodelKwargs(TypedDict): use_liger_kernel: NotRequired[bool] # Backend configuration for MoE models backend: NotRequired[AutomodelBackendConfig] + # Whether to force use of the HuggingFace implementation for MoE models + force_hf: NotRequired[bool] class DTensorConfigDisabled(TypedDict): diff --git a/nemo_rl/models/policy/workers/dtensor_policy_worker_v2.py b/nemo_rl/models/policy/workers/dtensor_policy_worker_v2.py index 0cc3d7495c..49e1360c57 100644 --- a/nemo_rl/models/policy/workers/dtensor_policy_worker_v2.py +++ b/nemo_rl/models/policy/workers/dtensor_policy_worker_v2.py @@ -12,6 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. +import contextlib import gc import itertools import os @@ -35,7 +36,9 @@ from nemo_automodel.components.config.loader import _resolve_target from nemo_automodel.components.distributed.cp_utils import ( create_context_parallel_ctx, - get_train_context, +) +from nemo_automodel.components.distributed.cp_utils import ( + get_train_context as get_train_context_automodel, ) from nemo_automodel.components.distributed.fsdp2 import ( FSDP2Manager, @@ -102,6 +105,72 @@ } +def dtensor_params_generator( + model: nn.Module, target_dtype: torch.dtype +) -> Generator[tuple[str, torch.Tensor], None, None]: + """Generator that yields (name, tensor) pairs, converting DTensors to local tensors and adapting to HF format. + + Args: + model: The model whose parameters to generate. + target_dtype: The dtype to convert tensors to. + + Yields: + Tuples of (fully_qualified_name, tensor) where tensors are converted to target dtype and made contiguous. + """ + for name, tensor in model.state_dict().items(): + full_tensor = tensor.full_tensor() if isinstance(tensor, DTensor) else tensor + adapted_fqn_tensors = _maybe_adapt_tensor_to_hf(model, name, full_tensor) + for adapted_fqn, adapted_tensor in adapted_fqn_tensors: + # Convert to target dtype + yield ( + adapted_fqn, + adapted_tensor.to(target_dtype, non_blocking=True).contiguous(), + ) + + +def _maybe_adapt_tensor_to_hf( + model_part: nn.Module, fqn: str, tensor: torch.Tensor, quantization: bool = False +) -> list[tuple[str, torch.Tensor]]: + adapter = getattr(model_part, "state_dict_adapter", None) + if adapter: + return adapter.convert_single_tensor_to_hf( + fqn, + tensor, + exclude_key_regex=r".*_extra_state.*", + quantization=quantization, + ) + return [(fqn, tensor)] + + +@contextlib.contextmanager +def get_train_context( + cp_size: int, + cp_mesh: Any, + cp_buffers: list, + sequence_dim: int, + dtype: torch.dtype, + autocast_enabled: bool = True, +) -> Generator[None, None, None]: + """Create combined context manager for training with context parallel and autocast.""" + with contextlib.ExitStack() as stack: + context_parallel_ctx = None + if cp_size > 1: + # Create context parallel context + context_parallel_ctx = create_context_parallel_ctx( + cp_mesh=cp_mesh, + cp_buffers=cp_buffers, + cp_seq_dims=[sequence_dim] * len(cp_buffers), + cp_no_restore_buffers=set(cp_buffers), + ) + + stack.enter_context( + get_train_context_automodel(False, False, context_parallel_ctx)() + ) + if autocast_enabled: + stack.enter_context(torch.autocast(device_type="cuda", dtype=dtype)) + yield + + @ray.remote( runtime_env=get_runtime_env_for_policy_worker("dtensor_policy_worker_v2") ) # pragma: no cover @@ -405,14 +474,16 @@ def __init__( self.cp_size = manager.cp_size # Parallelize model - is_moe_model = any(["expert" in key for key in self.model_state_dict_keys]) - is_hf_model = ( + self.is_moe_model = any(["expert" in key for key in self.model_state_dict_keys]) + self.is_hf_model = ( model_config.architectures[0] not in ModelRegistry.model_arch_name_to_cls ) + # Autocast is disabled for custom MoE models (non-HF) to avoid numerical issues + self.autocast_enabled = not (self.is_moe_model and not self.is_hf_model) if ( not isinstance(self.model, PreTrainedModel) - and is_moe_model - and not is_hf_model + and self.is_moe_model + and not self.is_hf_model ): assert self.tp_size == 1, ( "Using custom implementation {self.model.__class__.__name__} for MoE model {model_name} which doesn't support tp_size > 1. Please use expert_parallel_size > 1 for custom implementation or set force_hf=True in your config at policy->dtensor_cfg->automodel_kwargs to use the HuggingFace implementation." @@ -727,7 +798,6 @@ def train( "Sequence parallel is not supported with multimodal since there's an issue when you do not pass position_ids. See https://github.com/NVIDIA-NeMo/Automodel/issues/652" ) - context_parallel_ctx = None if self.cp_size > 1: assert len(vlm_kwargs) == 0, ( f"multimodal kwargs={vlm_kwargs} are not supported for context parallel" @@ -735,48 +805,45 @@ def train( seq_index = torch.arange( seq_len, device=input_ids.device ).repeat(1, 1) - cp_buffers = ( - [input_ids, position_ids, seq_index] - if self.cp_size > 1 - else [] - ) + cp_buffers = [input_ids, position_ids, seq_index] + else: + cp_buffers = [] + seq_index = None - # Create context parallel context - context_parallel_ctx = create_context_parallel_ctx( - cp_mesh=self.cp_mesh, - cp_buffers=cp_buffers, - cp_seq_dims=[sequence_dim] * len(cp_buffers), - cp_no_restore_buffers=set(cp_buffers), + with get_train_context( + cp_size=self.cp_size, + cp_mesh=self.cp_mesh, + cp_buffers=cp_buffers, + sequence_dim=sequence_dim, + dtype=self.dtype, + autocast_enabled=self.autocast_enabled, + ): + model_args = dict( + input_ids=input_ids, + attention_mask=attention_mask, + position_ids=position_ids, + use_cache=False, + flash_attn_kwargs=flash_attn_kwargs, + **vlm_kwargs, ) - with get_train_context(False, False, context_parallel_ctx)(): - with torch.autocast(device_type="cuda", dtype=self.dtype): - model_args = dict( - input_ids=input_ids, - attention_mask=attention_mask, - position_ids=position_ids, - use_cache=False, - flash_attn_kwargs=flash_attn_kwargs, - **vlm_kwargs, - ) - - if self._is_reward_model: - # `flash_attn_kwarg` is not supported for `LlamaForSequenceClassification`. - # Note that it should be empty anyway since sequence packing - # is not supported for reward models. - assert not flash_attn_kwargs - del model_args["flash_attn_kwargs"] - # remove flash_attn_kwargs if there are multimodal kwargs - if len(vlm_kwargs) > 0: - del model_args["flash_attn_kwargs"] + if self._is_reward_model: + # `flash_attn_kwarg` is not supported for `LlamaForSequenceClassification`. + # Note that it should be empty anyway since sequence packing + # is not supported for reward models. + assert not flash_attn_kwargs + del model_args["flash_attn_kwargs"] + # remove flash_attn_kwargs if there are multimodal kwargs + if len(vlm_kwargs) > 0: + del model_args["flash_attn_kwargs"] - if ( - not self.allow_flash_attn_args - and "flash_attn_kwargs" in model_args - ): - del model_args["flash_attn_kwargs"] + if ( + not self.allow_flash_attn_args + and "flash_attn_kwargs" in model_args + ): + del model_args["flash_attn_kwargs"] - outputs = self.model(**model_args) + outputs = self.model(**model_args) # Get logprobs if isinstance(outputs, (torch.Tensor, DTensor)): @@ -1065,7 +1132,6 @@ def get_logprobs( if len(vlm_kwargs) > 0: position_ids = None - context_parallel_ctx = None if self.cp_size > 1: assert len(vlm_kwargs) == 0, ( "multimodal kwargs are not supported for context parallel" @@ -1074,35 +1140,36 @@ def get_logprobs( 1, 1 ) cp_buffers = [input_ids, position_ids, seq_index] - - # Create context parallel context - context_parallel_ctx = create_context_parallel_ctx( - cp_mesh=self.cp_mesh, - cp_buffers=cp_buffers, - cp_seq_dims=[sequence_dim] * len(cp_buffers), - cp_no_restore_buffers=set(cp_buffers), + else: + cp_buffers = [] + seq_index = None + + with get_train_context( + cp_size=self.cp_size, + cp_mesh=self.cp_mesh, + cp_buffers=cp_buffers, + sequence_dim=sequence_dim, + dtype=self.dtype, + autocast_enabled=self.autocast_enabled, + ): + model_args = dict( + input_ids=input_ids, + attention_mask=attention_mask, + position_ids=position_ids, + use_cache=False, + flash_attn_kwargs=flash_attn_kwargs, + **vlm_kwargs, ) + if len(vlm_kwargs) > 0: + del model_args["flash_attn_kwargs"] - with get_train_context(False, False, context_parallel_ctx)(): - with torch.autocast(device_type="cuda", dtype=self.dtype): - model_args = dict( - input_ids=input_ids, - attention_mask=attention_mask, - position_ids=position_ids, - use_cache=False, - flash_attn_kwargs=flash_attn_kwargs, - **vlm_kwargs, - ) - if len(vlm_kwargs) > 0: - del model_args["flash_attn_kwargs"] - - if ( - not self.allow_flash_attn_args - and "flash_attn_kwargs" in model_args - ): - del model_args["flash_attn_kwargs"] + if ( + not self.allow_flash_attn_args + and "flash_attn_kwargs" in model_args + ): + del model_args["flash_attn_kwargs"] - outputs = self.model(**model_args) + outputs = self.model(**model_args) logits = outputs.logits if hasattr(outputs, "logits") else outputs @@ -1327,29 +1394,30 @@ def score(self, data: BatchedDataDict) -> BatchedDataDict[ScoreOutputSpec]: dtype=torch.bool, device=input_ids.device, ) - context_parallel_ctx = None if self.cp_size > 1: seq_index = torch.arange(seq_len, device=input_ids.device).repeat( 1, 1 ) cp_buffers = [input_ids, position_ids, seq_index] - - # Create context parallel context - context_parallel_ctx = create_context_parallel_ctx( - cp_mesh=self.cp_mesh, - cp_buffers=cp_buffers, - cp_seq_dims=[sequence_dim] * len(cp_buffers), - cp_no_restore_buffers=set(cp_buffers), + else: + cp_buffers = [] + seq_index = None + + with get_train_context( + cp_size=self.cp_size, + cp_mesh=self.cp_mesh, + cp_buffers=cp_buffers, + sequence_dim=sequence_dim, + dtype=self.dtype, + autocast_enabled=self.autocast_enabled, + ): + model_args = dict( + input_ids=input_ids, + attention_mask=attention_mask, + position_ids=position_ids, + use_cache=False, ) - with get_train_context(False, False, context_parallel_ctx)(): - with torch.autocast(device_type="cuda", dtype=self.dtype): - model_args = dict( - input_ids=input_ids, - attention_mask=attention_mask, - position_ids=position_ids, - use_cache=False, - ) - outputs = self.model(**model_args) + outputs = self.model(**model_args) if not hasattr(outputs, "logits"): logits = self.model.lm_head(outputs.last_hidden_state) @@ -1478,31 +1546,31 @@ def get_topk_logits( (batch_size, seq_len), dtype=torch.long, device=input_ids.device ) - context_parallel_ctx = None if self.cp_size > 1: seq_index = torch.arange(seq_len, device=input_ids.device).repeat( 1, 1 ) cp_buffers = [input_ids, position_ids, seq_index] - - # Create context parallel context - context_parallel_ctx = create_context_parallel_ctx( - cp_mesh=self.cp_mesh, - cp_buffers=cp_buffers, - cp_seq_dims=[sequence_dim] * len(cp_buffers), - cp_no_restore_buffers=set(cp_buffers), + else: + cp_buffers = [] + seq_index = None + + with get_train_context( + cp_size=self.cp_size, + cp_mesh=self.cp_mesh, + cp_buffers=cp_buffers, + sequence_dim=sequence_dim, + dtype=self.dtype, + autocast_enabled=self.autocast_enabled, + ): + outputs = self.model( + input_ids=input_ids, + attention_mask=attention_mask_input_all_ones, + position_ids=position_ids, + use_cache=False, + flash_attn_kwargs=flash_attn_kwargs, ) - with get_train_context(False, False, context_parallel_ctx)(): - with torch.autocast(device_type="cuda", dtype=self.dtype): - outputs = self.model( - input_ids=input_ids, - attention_mask=attention_mask_input_all_ones, - position_ids=position_ids, - use_cache=False, - flash_attn_kwargs=flash_attn_kwargs, - ) - if not hasattr(outputs, "logits"): logits = self.model.lm_head(outputs.last_hidden_state) else: @@ -1709,8 +1777,15 @@ def prepare_refit_info(self) -> Optional[dict[str, Any]]: """Prepare state dict metadata for weight refitting and IPC streaming.""" state_dict_info = {} for name, tensor in self.model.state_dict().items(): + full_tensor = ( + tensor.full_tensor() if isinstance(tensor, DTensor) else tensor + ) # all tensor will be casted to self.dtype in stream_weights_via_ipc_zmq/broadcast_weights_for_collective - state_dict_info[name] = (tensor.shape, self.dtype) + adapted_fqn_tensors = _maybe_adapt_tensor_to_hf( + self.model, name, full_tensor + ) + for adapted_fqn, adapted_tensor in adapted_fqn_tensors: + state_dict_info[adapted_fqn] = (adapted_tensor.shape, self.dtype) return state_dict_info @@ -1748,24 +1823,9 @@ def stream_weights_via_ipc_zmq( from nemo_rl.models.policy.utils import stream_weights_via_ipc_zmq_impl - def dtensor_params_generator(): - """Generator that yields (name, tensor) pairs, converting DTensors to local tensors.""" - for name, tensor in self.model.state_dict().items(): - if isinstance(tensor, DTensor): - # Convert DTensor to full tensor for streaming - full_tensor = tensor.full_tensor() - # Convert to target dtype - yield ( - name, - full_tensor.to(self.dtype, non_blocking=True).contiguous(), - ) - else: - # Convert to target dtype - yield name, tensor.to(self.dtype, non_blocking=True).contiguous() - # Use the shared implementation stream_weights_via_ipc_zmq_impl( - params_generator=dtensor_params_generator(), + params_generator=dtensor_params_generator(self.model, self.dtype), buffer_size_bytes=buffer_size_bytes, zmq_socket=self.zmq_socket, rank=self.rank, @@ -1790,17 +1850,11 @@ def broadcast_weights_for_collective( ) self.model = self.move_to_cuda(self.model) - def _dtensor_post_iter_func(tensor, dtype): - if isinstance(tensor, DTensor): - tensor = tensor.full_tensor() - tensor = tensor.to(dtype, non_blocking=True) - return tensor - # param_iterator will return (name, tensor), we only need tensor - dtensor_post_iter_func = lambda x: _dtensor_post_iter_func(x[1], self.dtype) + dtensor_post_iter_func = lambda x: x[1] packed_broadcast_producer( - iterator=iter(self.model.state_dict().items()), + iterator=dtensor_params_generator(self.model, self.dtype), group=self.model_update_group, src=0, post_iter_func=dtensor_post_iter_func, diff --git a/tests/test_suites/llm/grpo-moonlight-16b-automodel-1n8g-ep8.sh b/tests/test_suites/llm/grpo-moonlight-16b-automodel-1n8g-ep8.sh new file mode 100755 index 0000000000..fc98b560a5 --- /dev/null +++ b/tests/test_suites/llm/grpo-moonlight-16b-automodel-1n8g-ep8.sh @@ -0,0 +1,45 @@ +#!/bin/bash +SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd) +source $SCRIPT_DIR/common.env + +# ===== BEGIN CONFIG ===== +NUM_NODES=1 +STEPS_PER_RUN=30 +MAX_STEPS=30 +NUM_RUNS=$(( (MAX_STEPS + STEPS_PER_RUN - 1) / STEPS_PER_RUN )) # Round up +NUM_MINUTES=180 +# ===== END CONFIG ===== + +exit_if_max_steps_reached + +# Run the experiment +cd $PROJECT_ROOT +uv run examples/run_grpo_math.py \ + --config $CONFIG_PATH \ + grpo.max_num_steps=$MAX_STEPS \ + logger.log_dir=$LOG_DIR \ + logger.wandb_enabled=True \ + logger.wandb.project=nemo-rl \ + logger.wandb.name=$EXP_NAME \ + logger.monitor_gpus=True \ + logger.tensorboard_enabled=True \ + checkpointing.enabled=True \ + checkpointing.checkpoint_dir=$CKPT_DIR \ + $@ \ + 2>&1 | tee $RUN_LOG + +# Convert tensorboard logs to json +uv run tests/json_dump_tb_logs.py $LOG_DIR --output_path $JSON_METRICS + +# Only run metrics if the target step is reached +if [[ $(jq 'to_entries | .[] | select(.key == "train/loss") | .value | keys | map(tonumber) | max' $JSON_METRICS) -ge $MAX_STEPS ]]; then + uv run tests/check_metrics.py $JSON_METRICS \ + 'mean(data["train/gen_kl_error"]) < 0.001' \ + 'data["train/gen_kl_error"]["30"] < 0.001 ' \ + 'data["train/reward"]["30"] > 0.4' \ + 'data["train/grad_norm"]["30"] < 0.2' \ + 'data["train/grad_norm"]["30"] > 0.1' + + # Clean up checkpoint directory after successful run to save space. + rm -rf "$CKPT_DIR" +fi diff --git a/tests/test_suites/nightly.txt b/tests/test_suites/nightly.txt index ee1fda01b1..4c93e4fcb9 100644 --- a/tests/test_suites/nightly.txt +++ b/tests/test_suites/nightly.txt @@ -10,6 +10,9 @@ tests/test_suites/llm/grpo-gemma3-1b-it-1n8g-fsdp2tp1.sh # Dtensor (Qwen/Qwen2.5-7B-Instruct) tests/test_suites/llm/grpo-qwen2.5-7b-instruct-4n8g-fsdp2tp4.v3.sh +# Dtensor (moonshotai/Moonlight-16B-A3B-Instruct) +tests/test_suites/llm/grpo-moonlight-16b-automodel-1n8g-ep8.sh + # Megatron tests/test_suites/llm/grpo-llama3.2-1b-instruct-1n8g-megatron.sh tests/test_suites/llm/grpo-llama3.2-1b-instruct-1n8g-megatron_generation.sh diff --git a/tests/unit/models/policy/test_dtensor_worker_v2.py b/tests/unit/models/policy/test_dtensor_worker_v2.py index 4e9f33f99e..0a257baa86 100644 --- a/tests/unit/models/policy/test_dtensor_worker_v2.py +++ b/tests/unit/models/policy/test_dtensor_worker_v2.py @@ -12,12 +12,15 @@ # See the License for the specific language governing permissions and # limitations under the License. +import contextlib import os import tempfile +from unittest.mock import MagicMock, Mock, patch import pytest import ray import torch +import torch.nn as nn from nemo_rl.algorithms.utils import get_tokenizer from nemo_rl.distributed.batched_data_dict import BatchedDataDict @@ -26,6 +29,17 @@ from nemo_rl.models.policy.lm_policy import Policy from tests.unit.test_utils import SimpleLoss +try: + from nemo_rl.models.policy.workers.dtensor_policy_worker_v2 import ( + _maybe_adapt_tensor_to_hf, + dtensor_params_generator, + get_train_context, + ) + + NEMO_AUTOMODEL_AVAILABLE = True +except ImportError: + NEMO_AUTOMODEL_AVAILABLE = False + def create_test_config( model_name: str, @@ -456,3 +470,418 @@ def test_dtensor_v2_mixed_precision_training_and_logprobs( assert worker_info is not None, "Should get worker info" finally: policy.shutdown() + + +@pytest.mark.automodel +@pytest.mark.skipif(not NEMO_AUTOMODEL_AVAILABLE, reason="nemo_automodel not available") +class TestMaybeAdaptTensorToHF: + """Tests for the _maybe_adapt_tensor_to_hf helper function.""" + + def test_no_adapter_returns_single_tuple(self): + """Test that when model has no adapter, returns single FQN-tensor tuple.""" + # Arrange + model = nn.Linear(10, 10) + fqn = "layer.weight" + tensor = torch.randn(10, 10) + + # Act + result = _maybe_adapt_tensor_to_hf(model, fqn, tensor) + + # Assert + assert len(result) == 1, "Should return single tuple when no adapter" + assert result[0][0] == fqn, "FQN should be unchanged" + assert torch.equal(result[0][1], tensor), "Tensor should be unchanged" + + def test_adapter_converts_single_tensor(self): + """Test that adapter is called when present on model.""" + # Arrange + model = nn.Linear(10, 10) + adapter_mock = Mock() + adapter_mock.convert_single_tensor_to_hf.return_value = [ + ("adapted.weight", torch.randn(10, 10)), + ("adapted.bias", torch.randn(10)), + ] + model.state_dict_adapter = adapter_mock + + fqn = "layer.weight" + tensor = torch.randn(10, 10) + + # Act + result = _maybe_adapt_tensor_to_hf(model, fqn, tensor) + + # Assert + adapter_mock.convert_single_tensor_to_hf.assert_called_once_with( + fqn, + tensor, + exclude_key_regex=r".*_extra_state.*", + quantization=False, + ) + assert len(result) == 2, "Should return multiple adapted tensors" + assert result[0][0] == "adapted.weight" + assert result[1][0] == "adapted.bias" + + def test_adapter_with_quantization_flag(self): + """Test that quantization flag is passed to adapter correctly.""" + # Arrange + model = nn.Linear(10, 10) + adapter_mock = Mock() + adapter_mock.convert_single_tensor_to_hf.return_value = [ + ("quantized.weight", torch.randn(10, 10)) + ] + model.state_dict_adapter = adapter_mock + + fqn = "layer.weight" + tensor = torch.randn(10, 10) + + # Act + result = _maybe_adapt_tensor_to_hf(model, fqn, tensor, quantization=True) + + # Assert + adapter_mock.convert_single_tensor_to_hf.assert_called_once_with( + fqn, + tensor, + exclude_key_regex=r".*_extra_state.*", + quantization=True, + ) + assert len(result) == 1 + + def test_adapter_excludes_extra_state_regex(self): + """Test that _extra_state regex is always passed to exclude such tensors.""" + # Arrange + model = nn.Linear(10, 10) + adapter_mock = Mock() + adapter_mock.convert_single_tensor_to_hf.return_value = [] + model.state_dict_adapter = adapter_mock + + fqn = "layer._extra_state" + tensor = torch.randn(10) + + # Act + _maybe_adapt_tensor_to_hf(model, fqn, tensor) + + # Assert + adapter_mock.convert_single_tensor_to_hf.assert_called_once() + call_kwargs = adapter_mock.convert_single_tensor_to_hf.call_args[1] + assert call_kwargs["exclude_key_regex"] == r".*_extra_state.*", ( + "Should exclude extra_state tensors" + ) + + +@pytest.mark.automodel +@pytest.mark.skipif(not NEMO_AUTOMODEL_AVAILABLE, reason="nemo_automodel not available") +class TestDTensorParamsGenerator: + """Tests for the dtensor_params_generator helper function.""" + + def test_simple_model_yields_adapted_tensors(self): + """Test that generator yields correct (name, tensor) pairs for a simple model.""" + # Arrange + model = nn.Linear(10, 5) + target_dtype = torch.float32 + + # Act + results = list(dtensor_params_generator(model, target_dtype)) + + # Assert + assert len(results) == 2, "Linear layer should have weight and bias" + names = [name for name, _ in results] + assert "weight" in names + assert "bias" in names + + # Check that tensors are in the correct dtype and contiguous + for name, tensor in results: + assert tensor.dtype == target_dtype, ( + f"Tensor {name} should be {target_dtype}" + ) + assert tensor.is_contiguous(), f"Tensor {name} should be contiguous" + + def test_dtype_conversion(self): + """Test that tensors are converted to target dtype.""" + # Arrange + model = nn.Linear(10, 5) + # Initialize with float32 + model = model.to(torch.float32) + target_dtype = torch.bfloat16 + + # Act + results = list(dtensor_params_generator(model, target_dtype)) + + # Assert + for name, tensor in results: + assert tensor.dtype == target_dtype, ( + f"Tensor {name} should be converted to {target_dtype}" + ) + + def test_contiguous_output(self): + """Test that output tensors are contiguous.""" + # Arrange + model = nn.Linear(10, 5) + target_dtype = torch.float32 + + # Act + results = list(dtensor_params_generator(model, target_dtype)) + + # Assert + for name, tensor in results: + assert tensor.is_contiguous(), f"Tensor {name} should be contiguous" + + def test_with_adapter_model(self): + """Test that adapter is used when present on model.""" + # Arrange + model = nn.Linear(10, 5) + adapter_mock = Mock() + # Mock adapter to return multiple tensors for a single input + adapter_mock.convert_single_tensor_to_hf.return_value = [ + ("adapted.weight.1", torch.randn(5, 10)), + ("adapted.weight.2", torch.randn(5, 10)), + ] + model.state_dict_adapter = adapter_mock + target_dtype = torch.float32 + + # Act + results = list(dtensor_params_generator(model, target_dtype)) + + # Assert + # Each state_dict entry (weight, bias) goes through adapter + # Adapter returns 2 tensors for each, so we expect 4 total + assert len(results) >= 4, "Should have adapted tensors from adapter" + + # Verify adapter was called + assert adapter_mock.convert_single_tensor_to_hf.call_count >= 2 + + def test_empty_model(self): + """Test handling of model with no parameters.""" + # Arrange + model = nn.Module() # Empty module with no parameters + target_dtype = torch.float32 + + # Act + results = list(dtensor_params_generator(model, target_dtype)) + + # Assert + assert len(results) == 0, "Empty model should yield no parameters" + + def test_generator_is_iterable(self): + """Test that dtensor_params_generator returns an iterable generator.""" + # Arrange + model = nn.Linear(10, 5) + target_dtype = torch.float32 + + # Act + gen = dtensor_params_generator(model, target_dtype) + + # Assert + from collections.abc import Generator as ABCGenerator + + assert isinstance(gen, ABCGenerator), "Should return a generator" + + # Verify we can iterate over it + results = list(gen) + assert len(results) > 0, "Should yield at least one item" + + def test_multiple_layers(self): + """Test generator with a more complex model with multiple layers.""" + # Arrange + model = nn.Sequential( + nn.Linear(10, 5), + nn.ReLU(), + nn.Linear(5, 2), + ) + target_dtype = torch.float32 + + # Act + results = list(dtensor_params_generator(model, target_dtype)) + + # Assert + # Should have 4 parameters: 2 weights + 2 biases from the Linear layers + assert len(results) == 4, ( + "Sequential with 2 Linear layers should have 4 parameters" + ) + + # Check all tensors + for name, tensor in results: + assert tensor.dtype == target_dtype + assert tensor.is_contiguous() + + +@pytest.mark.automodel +@pytest.mark.skipif(not NEMO_AUTOMODEL_AVAILABLE, reason="nemo_automodel not available") +class TestGetTrainContext: + """Tests for the get_train_context context manager function.""" + + @patch( + "nemo_rl.models.policy.workers.dtensor_policy_worker_v2.get_train_context_automodel" + ) + @patch( + "nemo_rl.models.policy.workers.dtensor_policy_worker_v2.create_context_parallel_ctx" + ) + def test_no_cp_with_autocast(self, mock_create_cp_ctx, mock_get_train_ctx_am): + """Test context creation without context parallel but with autocast.""" + # Arrange + mock_get_train_ctx_am.return_value = lambda: contextlib.nullcontext() + + cp_size = 1 + cp_mesh = None + cp_buffers = [] + sequence_dim = 1 + dtype = torch.bfloat16 + + # Act + with get_train_context( + cp_size=cp_size, + cp_mesh=cp_mesh, + cp_buffers=cp_buffers, + sequence_dim=sequence_dim, + dtype=dtype, + autocast_enabled=True, + ): + pass + + # Assert - CP context should not be created when cp_size=1 + mock_create_cp_ctx.assert_not_called() + mock_get_train_ctx_am.assert_called_once_with(False, False, None) + + @patch( + "nemo_rl.models.policy.workers.dtensor_policy_worker_v2.get_train_context_automodel" + ) + @patch( + "nemo_rl.models.policy.workers.dtensor_policy_worker_v2.create_context_parallel_ctx" + ) + def test_with_cp_and_autocast(self, mock_create_cp_ctx, mock_get_train_ctx_am): + """Test context creation with context parallel and autocast.""" + # Arrange + mock_cp_ctx = MagicMock() + mock_create_cp_ctx.return_value = mock_cp_ctx + mock_get_train_ctx_am.return_value = lambda: contextlib.nullcontext() + + cp_size = 2 + cp_mesh = MagicMock() + cp_buffers = [torch.randn(2, 10), torch.randn(2, 10)] + sequence_dim = 1 + dtype = torch.bfloat16 + + # Act + with get_train_context( + cp_size=cp_size, + cp_mesh=cp_mesh, + cp_buffers=cp_buffers, + sequence_dim=sequence_dim, + dtype=dtype, + autocast_enabled=True, + ): + pass + + # Assert - CP context should be created when cp_size > 1 + mock_create_cp_ctx.assert_called_once_with( + cp_mesh=cp_mesh, + cp_buffers=cp_buffers, + cp_seq_dims=[sequence_dim] * len(cp_buffers), + cp_no_restore_buffers=set(cp_buffers), + ) + mock_get_train_ctx_am.assert_called_once_with(False, False, mock_cp_ctx) + + @patch( + "nemo_rl.models.policy.workers.dtensor_policy_worker_v2.get_train_context_automodel" + ) + def test_autocast_disabled(self, mock_get_train_ctx_am): + """Test context creation with autocast disabled.""" + # Arrange + mock_get_train_ctx_am.return_value = lambda: contextlib.nullcontext() + + cp_size = 1 + cp_mesh = None + cp_buffers = [] + sequence_dim = 1 + dtype = torch.bfloat16 + + # Act + with get_train_context( + cp_size=cp_size, + cp_mesh=cp_mesh, + cp_buffers=cp_buffers, + sequence_dim=sequence_dim, + dtype=dtype, + autocast_enabled=False, + ): + # Verify we're NOT in autocast mode + assert not torch.is_autocast_enabled("cuda"), ( + "Autocast should be disabled when autocast_enabled=False" + ) + + # Assert + mock_get_train_ctx_am.assert_called_once_with(False, False, None) + + @patch( + "nemo_rl.models.policy.workers.dtensor_policy_worker_v2.get_train_context_automodel" + ) + @patch( + "nemo_rl.models.policy.workers.dtensor_policy_worker_v2.create_context_parallel_ctx" + ) + def test_cp_buffers_empty_when_cp_size_one( + self, mock_create_cp_ctx, mock_get_train_ctx_am + ): + """Test that CP context is not created when cp_size is 1.""" + # Arrange + mock_get_train_ctx_am.return_value = lambda: contextlib.nullcontext() + + cp_size = 1 + cp_mesh = MagicMock() + cp_buffers = [] # Empty buffers for cp_size=1 + sequence_dim = 1 + dtype = torch.float32 + + # Act + with get_train_context( + cp_size=cp_size, + cp_mesh=cp_mesh, + cp_buffers=cp_buffers, + sequence_dim=sequence_dim, + dtype=dtype, + autocast_enabled=True, + ): + pass + + # Assert - CP context should not be created when cp_size=1 + mock_create_cp_ctx.assert_not_called() + + @patch( + "nemo_rl.models.policy.workers.dtensor_policy_worker_v2.get_train_context_automodel" + ) + @patch( + "nemo_rl.models.policy.workers.dtensor_policy_worker_v2.create_context_parallel_ctx" + ) + def test_multiple_cp_buffers_sequence_dim_replication( + self, mock_create_cp_ctx, mock_get_train_ctx_am + ): + """Test that sequence_dim is properly replicated for each CP buffer.""" + # Arrange + mock_cp_ctx = MagicMock() + mock_create_cp_ctx.return_value = mock_cp_ctx + mock_get_train_ctx_am.return_value = lambda: contextlib.nullcontext() + + cp_size = 2 + cp_mesh = MagicMock() + # Three buffers + cp_buffers = [torch.randn(2, 10), torch.randn(2, 10), torch.randn(2, 10)] + sequence_dim = 1 + dtype = torch.float16 + + # Act + with get_train_context( + cp_size=cp_size, + cp_mesh=cp_mesh, + cp_buffers=cp_buffers, + sequence_dim=sequence_dim, + dtype=dtype, + autocast_enabled=True, + ): + pass + + # Assert - sequence_dim should be replicated for each buffer + mock_create_cp_ctx.assert_called_once() + call_kwargs = mock_create_cp_ctx.call_args[1] + assert call_kwargs["cp_seq_dims"] == [ + sequence_dim, + sequence_dim, + sequence_dim, + ], "sequence_dim should be replicated for each buffer" + assert len(call_kwargs["cp_seq_dims"]) == 3 diff --git a/tests/unit/test_recipes_and_test_suites.py b/tests/unit/test_recipes_and_test_suites.py index f41fe31eae..88553567c7 100644 --- a/tests/unit/test_recipes_and_test_suites.py +++ b/tests/unit/test_recipes_and_test_suites.py @@ -180,7 +180,7 @@ def test_all_recipe_yamls_accounted_for_in_test_suites( ) -def test_nightly_compute_stays_below_1180_hours(nightly_test_suite, tracker): +def test_nightly_compute_stays_below_1210_hours(nightly_test_suite, tracker): command = f"DRYRUN=1 HF_HOME=... HF_DATASETS_CACHE=... CONTAINER= ACCOUNT= PARTITION= ./tools/launch {' '.join(nightly_test_suite)}" print(f"Running command: {command}") @@ -212,8 +212,8 @@ def test_nightly_compute_stays_below_1180_hours(nightly_test_suite, tracker): f"Last line of output was not as expected: '{last_line}'" ) total_gpu_hours = float(last_line.split(":")[-1].strip()) - assert total_gpu_hours <= 1180, ( - f"Total GPU hours exceeded 1180: {last_line}. We should revisit the test suites to reduce the total GPU hours." + assert total_gpu_hours <= 1210, ( + f"Total GPU hours exceeded 1210: {last_line}. We should revisit the test suites to reduce the total GPU hours." ) tracker.track("total_nightly_gpu_hours", total_gpu_hours) From 9b5da01e98312521bae79f9126b6f23377ca9b18 Mon Sep 17 00:00:00 2001 From: Yuki Huang Date: Sat, 10 Jan 2026 13:04:10 +0800 Subject: [PATCH 42/52] fix: split dtensorv1 vllm dependency (#1638) Signed-off-by: Yuki Huang --- .../ray_actor_environment_registry.py | 4 +- nemo_rl/distributed/virtual_cluster.py | 3 + .../generation/{ => vllm/quantization}/fp8.py | 83 ---------------- .../vllm/quantization/fp8_train_utils.py | 96 +++++++++++++++++++ .../models/generation/vllm/vllm_backend.py | 4 +- nemo_rl/models/generation/vllm/vllm_worker.py | 2 +- .../policy/workers/megatron_policy_worker.py | 11 ++- pyproject.toml | 21 ++-- pyrefly.toml | 1 + uv.lock | 18 ++-- 10 files changed, 133 insertions(+), 110 deletions(-) rename nemo_rl/models/generation/{ => vllm/quantization}/fp8.py (90%) create mode 100644 nemo_rl/models/generation/vllm/quantization/fp8_train_utils.py diff --git a/nemo_rl/distributed/ray_actor_environment_registry.py b/nemo_rl/distributed/ray_actor_environment_registry.py index 4190062ec6..7b91ed1b3b 100644 --- a/nemo_rl/distributed/ray_actor_environment_registry.py +++ b/nemo_rl/distributed/ray_actor_environment_registry.py @@ -27,9 +27,7 @@ ACTOR_ENVIRONMENT_REGISTRY: dict[str, str] = { "nemo_rl.models.generation.vllm.vllm_worker.VllmGenerationWorker": VLLM_EXECUTABLE, "nemo_rl.models.generation.vllm.vllm_worker_async.VllmAsyncGenerationWorker": VLLM_EXECUTABLE, - # Temporary workaround for the coupled implementation of DTensorPolicyWorker and vLLM. - # This will be reverted to PY_EXECUTABLES.BASE once https://github.com/NVIDIA-NeMo/RL/issues/501 is resolved. - "nemo_rl.models.policy.workers.dtensor_policy_worker.DTensorPolicyWorker": VLLM_EXECUTABLE, + "nemo_rl.models.policy.workers.dtensor_policy_worker.DTensorPolicyWorker": PY_EXECUTABLES.FSDP, "nemo_rl.models.policy.workers.dtensor_policy_worker_v2.DTensorPolicyWorkerV2": PY_EXECUTABLES.AUTOMODEL, "nemo_rl.models.policy.workers.megatron_policy_worker.MegatronPolicyWorker": MCORE_EXECUTABLE, "nemo_rl.environments.math_environment.MathEnvironment": PY_EXECUTABLES.SYSTEM, diff --git a/nemo_rl/distributed/virtual_cluster.py b/nemo_rl/distributed/virtual_cluster.py index 3021b760e4..fa631ff8ee 100644 --- a/nemo_rl/distributed/virtual_cluster.py +++ b/nemo_rl/distributed/virtual_cluster.py @@ -49,6 +49,9 @@ class PY_EXECUTABLES: # Use NeMo-RL direct dependencies and vllm. VLLM = f"uv run --locked --extra vllm --directory {git_root}" + # Use NeMo-RL direct dependencies and fsdp. + FSDP = f"uv run --locked --extra fsdp --directory {git_root}" + # Use NeMo-RL direct dependencies and nemo-automodel. AUTOMODEL = f"uv run --locked --extra automodel --directory {git_root}" diff --git a/nemo_rl/models/generation/fp8.py b/nemo_rl/models/generation/vllm/quantization/fp8.py similarity index 90% rename from nemo_rl/models/generation/fp8.py rename to nemo_rl/models/generation/vllm/quantization/fp8.py index 9acf6a88ef..9505f42524 100644 --- a/nemo_rl/models/generation/fp8.py +++ b/nemo_rl/models/generation/vllm/quantization/fp8.py @@ -107,89 +107,6 @@ def patched_run_workers(self, *args, **kwargs): fp8_patches_applied = True -def get_vllm_qkv_scale_names(layer_idx: int) -> dict[str, str]: - """Get vLLM-compatible parameter names for Q/K/V FP8 scales. - - This function centralizes the naming convention for Q/K/V scale parameters - that vLLM expects. These names must match vLLM's internal parameter structure. - - Args: - layer_idx: The transformer layer index (0-based) - - Returns: - Dictionary mapping scale types to vLLM parameter names: - - 'q_scale': Q activation scale name - - 'k_scale': K activation scale name - - 'v_scale': V activation scale name - - Note: - The q_scale has an extra '.attn.' component compared to k_scale/v_scale. - This matches vLLM's parameter remapping logic in: - vllm.model_executor.model_loader.weight_utils.maybe_remap_kv_scale_name - - Example: - >>> get_vllm_qkv_scale_names(0) - { - 'q_scale': 'model.layers.0.self_attn.attn.q_scale', - 'k_scale': 'model.layers.0.self_attn.k_scale', - 'v_scale': 'model.layers.0.self_attn.v_scale' - } - """ - return { - "q_scale": f"model.layers.{layer_idx}.self_attn.attn.q_scale", - "k_scale": f"model.layers.{layer_idx}.self_attn.k_scale", - "v_scale": f"model.layers.{layer_idx}.self_attn.v_scale", - } - - -def convert_calibration_to_vllm_format( - calibration_results: dict[str, dict[str, float]], -) -> dict[str, float]: - """Convert NeMo-RL calibration results to vLLM parameter format. - - Currently only used by megatron policy worker. - After FP8 KV cache is supported by DTensor path, this function can be reused. - - This function transforms the calibration output format (with layer_N keys) - into the flat dictionary format that vLLM expects for parameter loading. - - Args: - calibration_results: Dict with keys like "layer_0", "layer_1", etc. - Each value is a dict with keys: "q_scale", "k_scale", "v_scale" - and corresponding float scale values. - - Returns: - Flat dictionary mapping vLLM parameter names to scale values. - Keys follow vLLM's naming convention as defined in get_vllm_qkv_scale_names. - - Example: - >>> calib = { - ... "layer_0": {"q_scale": 1.0, "k_scale": 2.0, "v_scale": 3.0}, - ... "layer_1": {"q_scale": 1.5, "k_scale": 2.5, "v_scale": 3.5} - ... } - >>> convert_calibration_to_vllm_format(calib) - { - 'model.layers.0.self_attn.attn.q_scale': 1.0, - 'model.layers.0.self_attn.k_scale': 2.0, - 'model.layers.0.self_attn.v_scale': 3.0, - 'model.layers.1.self_attn.attn.q_scale': 1.5, - 'model.layers.1.self_attn.k_scale': 2.5, - 'model.layers.1.self_attn.v_scale': 3.5 - } - """ - vllm_scales = {} - for layer_key, scales in calibration_results.items(): - # Extract layer index from "layer_N" format - layer_idx = int(layer_key.split("_")[1]) - param_names = get_vllm_qkv_scale_names(layer_idx) - - vllm_scales[param_names["q_scale"]] = scales["q_scale"] - vllm_scales[param_names["k_scale"]] = scales["k_scale"] - vllm_scales[param_names["v_scale"]] = scales["v_scale"] - - return vllm_scales - - def apply_fp8_patches(self, fp8_config): global global_fp8_config, fp8_patches_applied assert not fp8_patches_applied diff --git a/nemo_rl/models/generation/vllm/quantization/fp8_train_utils.py b/nemo_rl/models/generation/vllm/quantization/fp8_train_utils.py new file mode 100644 index 0000000000..ac4db666cf --- /dev/null +++ b/nemo_rl/models/generation/vllm/quantization/fp8_train_utils.py @@ -0,0 +1,96 @@ +# Copyright (c) 2025, NVIDIA CORPORATION. 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. + + +def get_vllm_qkv_scale_names(layer_idx: int) -> dict[str, str]: + """Get vLLM-compatible parameter names for Q/K/V FP8 scales. + + This function centralizes the naming convention for Q/K/V scale parameters + that vLLM expects. These names must match vLLM's internal parameter structure. + + Args: + layer_idx: The transformer layer index (0-based) + + Returns: + Dictionary mapping scale types to vLLM parameter names: + - 'q_scale': Q activation scale name + - 'k_scale': K activation scale name + - 'v_scale': V activation scale name + + Note: + The q_scale has an extra '.attn.' component compared to k_scale/v_scale. + This matches vLLM's parameter remapping logic in: + vllm.model_executor.model_loader.weight_utils.maybe_remap_kv_scale_name + + Example: + >>> get_vllm_qkv_scale_names(0) + { + 'q_scale': 'model.layers.0.self_attn.attn.q_scale', + 'k_scale': 'model.layers.0.self_attn.k_scale', + 'v_scale': 'model.layers.0.self_attn.v_scale' + } + """ + return { + "q_scale": f"model.layers.{layer_idx}.self_attn.attn.q_scale", + "k_scale": f"model.layers.{layer_idx}.self_attn.k_scale", + "v_scale": f"model.layers.{layer_idx}.self_attn.v_scale", + } + + +def convert_calibration_to_vllm_format( + calibration_results: dict[str, dict[str, float]], +) -> dict[str, float]: + """Convert NeMo-RL calibration results to vLLM parameter format. + + Currently only used by megatron policy worker. + After FP8 KV cache is supported by DTensor path, this function can be reused. + + This function transforms the calibration output format (with layer_N keys) + into the flat dictionary format that vLLM expects for parameter loading. + + Args: + calibration_results: Dict with keys like "layer_0", "layer_1", etc. + Each value is a dict with keys: "q_scale", "k_scale", "v_scale" + and corresponding float scale values. + + Returns: + Flat dictionary mapping vLLM parameter names to scale values. + Keys follow vLLM's naming convention as defined in get_vllm_qkv_scale_names. + + Example: + >>> calib = { + ... "layer_0": {"q_scale": 1.0, "k_scale": 2.0, "v_scale": 3.0}, + ... "layer_1": {"q_scale": 1.5, "k_scale": 2.5, "v_scale": 3.5} + ... } + >>> convert_calibration_to_vllm_format(calib) + { + 'model.layers.0.self_attn.attn.q_scale': 1.0, + 'model.layers.0.self_attn.k_scale': 2.0, + 'model.layers.0.self_attn.v_scale': 3.0, + 'model.layers.1.self_attn.attn.q_scale': 1.5, + 'model.layers.1.self_attn.k_scale': 2.5, + 'model.layers.1.self_attn.v_scale': 3.5 + } + """ + vllm_scales = {} + for layer_key, scales in calibration_results.items(): + # Extract layer index from "layer_N" format + layer_idx = int(layer_key.split("_")[1]) + param_names = get_vllm_qkv_scale_names(layer_idx) + + vllm_scales[param_names["q_scale"]] = scales["q_scale"] + vllm_scales[param_names["k_scale"]] = scales["k_scale"] + vllm_scales[param_names["v_scale"]] = scales["v_scale"] + + return vllm_scales diff --git a/nemo_rl/models/generation/vllm/vllm_backend.py b/nemo_rl/models/generation/vllm/vllm_backend.py index 1e947ed444..e342139d59 100644 --- a/nemo_rl/models/generation/vllm/vllm_backend.py +++ b/nemo_rl/models/generation/vllm/vllm_backend.py @@ -177,7 +177,7 @@ def update_weights_via_ipc_zmq(self) -> bool: "Offset is not equal to used bytes, usually indicate inaccurate info like keys or cached dtype in state_dict_info" ) # Load weights into the model - from nemo_rl.models.generation import fp8 + from nemo_rl.models.generation.vllm.quantization import fp8 if fp8.is_fp8_model(self.model_runner.vllm_config): # the fp8 load_weights additionally casts bf16 weights into fp8 @@ -230,7 +230,7 @@ def _load_model_weights(weights, model_runner): Returns: None """ - from nemo_rl.models.generation import fp8 + from nemo_rl.models.generation.vllm.quantization import fp8 if fp8.is_fp8_model(model_runner.vllm_config): # the fp8 load_weights additionally casts bf16 weights into fp8 diff --git a/nemo_rl/models/generation/vllm/vllm_worker.py b/nemo_rl/models/generation/vllm/vllm_worker.py index d2de455c22..9238533cd2 100644 --- a/nemo_rl/models/generation/vllm/vllm_worker.py +++ b/nemo_rl/models/generation/vllm/vllm_worker.py @@ -362,7 +362,7 @@ def _patch_vllm_vit_flash_attn_backend(): # Call init_fp8 when precision is fp8 # (kv_cache_dtype can be fp8/fp8_e4m3 or auto, validated in init_fp8) if self.cfg["vllm_cfg"]["precision"] == "fp8": - from nemo_rl.models.generation.fp8 import init_fp8 + from nemo_rl.models.generation.vllm.quantization.fp8 import init_fp8 fp8_kwargs = init_fp8( self.cfg["vllm_cfg"], self.model_name, model_parallel_size diff --git a/nemo_rl/models/policy/workers/megatron_policy_worker.py b/nemo_rl/models/policy/workers/megatron_policy_worker.py index 8a107ed9d9..63b6691f13 100644 --- a/nemo_rl/models/policy/workers/megatron_policy_worker.py +++ b/nemo_rl/models/policy/workers/megatron_policy_worker.py @@ -103,10 +103,6 @@ from_parallel_logits_to_logprobs_packed_sequences, ) from nemo_rl.distributed.named_sharding import NamedSharding -from nemo_rl.models.generation.fp8 import ( - convert_calibration_to_vllm_format, - get_vllm_qkv_scale_names, -) from nemo_rl.models.generation.interfaces import ( GenerationDatumSpec, GenerationOutputSpec, @@ -2146,6 +2142,10 @@ def _iter_params_with_optional_kv_scales( This helper is used by both IPC-based streaming and collective broadcast so that the logic for adding KV scales stays consistent in one place. """ + from nemo_rl.models.generation.vllm.quantization.fp8_train_utils import ( + get_vllm_qkv_scale_names, + ) + base_iter = self.megatron_bridge.export_hf_weights( [self.model], show_progress=False, @@ -2551,6 +2551,9 @@ def calibrate_qkv_fp8_scales( { "format": "fp8", "percentile": float, "margin": float, "layers": { layer_name: {"k_scale": float, "v_scale": float[, "q_scale": float] } } } """ + from nemo_rl.models.generation.vllm.quantization.fp8_train_utils import ( + convert_calibration_to_vllm_format, + ) # Allow overriding FP8 max for Q, K, V via environment variables for ease of testing. # Defaults align with FP8 e4m3 max magnitude. diff --git a/pyproject.toml b/pyproject.toml index cf2da63342..4e569098eb 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -52,19 +52,26 @@ dependencies = [ ] [project.optional-dependencies] -# Currently unused, but after https://github.com/NVIDIA-NeMo/RL/issues/501 is resolved, we should use this for the "BASE" PYEXECUTABLE +fsdp = [ + "flash-attn==2.8.1", + "mamba-ssm", + "causal-conv1d", + # Remove this once https://github.com/NVIDIA-NeMo/RL/issues/501 resolved + "vllm==0.11.2", +] automodel = [ "nemo-automodel", # Flash-attn version should be selected to satisfy both TE + vLLM requirements (xformers in particular) # https://github.com/NVIDIA/TransformerEngine/blob/v2.3/transformer_engine/pytorch/attention/dot_product_attention/utils.py#L108 # https://github.com/facebookresearch/xformers/blob/8354497deb2c04c67fbb2e2ad911e86530da0e90/xformers/ops/fmha/flash.py#L76 - "vllm==0.11.2", # Remove this once https://github.com/NVIDIA-NeMo/RL/issues/811 resolved "flash-attn==2.8.1", "mamba-ssm", "causal-conv1d", "nv-grouped-gemm", "transformer-engine[pytorch]==2.8.0", "deep_ep @ git+https://github.com/deepseek-ai/DeepEP.git@bfded34800dfec415b71503f8205181de90b2480", + # Remove this once https://github.com/NVIDIA-NeMo/RL/issues/501 resolved + "vllm==0.11.2", ] vllm = [ "cuda-python", @@ -75,12 +82,6 @@ vllm = [ "deep_ep @ git+https://github.com/deepseek-ai/DeepEP.git@bfded34800dfec415b71503f8205181de90b2480", "vllm==0.11.2", "num2words>=0.5.14", - # Remove this once https://github.com/NVIDIA-NeMo/RL/issues/501 resolved - "flash-attn==2.8.1", - # Remove this once https://github.com/NVIDIA-NeMo/RL/issues/501 resolved - "mamba-ssm", - # Remove this once https://github.com/NVIDIA-NeMo/RL/issues/501 resolved - "causal-conv1d", ] mcore = [ # also need cudnn (https://developer.nvidia.com/cudnn-downloads?target_os=Linux&target_arch=x86_64&Distribution=Ubuntu&target_version=20.04&target_type=deb_network) @@ -95,13 +96,13 @@ mcore = [ "transformer-engine[pytorch]==2.8.0", "megatron-core", "megatron-bridge", - # Remove this once https://github.com/NVIDIA-NeMo/RL/issues/501 resolved - "vllm==0.11.2", # Flash-attn version should be selected to satisfy both TE + vLLM requirements (xformers in particular) # https://github.com/NVIDIA/TransformerEngine/blob/v2.3/transformer_engine/pytorch/attention/dot_product_attention/utils.py#L108 # https://github.com/facebookresearch/xformers/blob/8354497deb2c04c67fbb2e2ad911e86530da0e90/xformers/ops/fmha/flash.py#L76 "flash-attn==2.8.1", "deep_ep @ git+https://github.com/deepseek-ai/DeepEP.git@bfded34800dfec415b71503f8205181de90b2480", + # Remove this once https://github.com/NVIDIA-NeMo/RL/issues/501 resolved + "vllm==0.11.2", ] nemo_gym = ["nemo_gym"] diff --git a/pyrefly.toml b/pyrefly.toml index 74f0f29ed9..e1127eadd2 100644 --- a/pyrefly.toml +++ b/pyrefly.toml @@ -101,6 +101,7 @@ project-includes = [ "nemo_rl/models/generation/interfaces.py", "nemo_rl/models/generation/vllm/__init__.py", "nemo_rl/models/generation/vllm/config.py", + "nemo_rl/models/generation/vllm/quantization/fp8_train_utils.py", "nemo_rl/models/generation/vllm/utils.py", "nemo_rl/models/generation/vllm/vllm_backend.py", "nemo_rl/models/huggingface/__init__.py", diff --git a/uv.lock b/uv.lock index fa00ff89a5..72e1577def 100644 --- a/uv.lock +++ b/uv.lock @@ -3648,6 +3648,12 @@ automodel = [ { name = "transformer-engine", extra = ["pytorch"] }, { name = "vllm" }, ] +fsdp = [ + { name = "causal-conv1d" }, + { name = "flash-attn" }, + { name = "mamba-ssm" }, + { name = "vllm" }, +] mcore = [ { name = "deep-ep" }, { name = "flash-attn" }, @@ -3660,12 +3666,9 @@ nemo-gym = [ { name = "nemo-gym" }, ] vllm = [ - { name = "causal-conv1d" }, { name = "cuda-python" }, { name = "deep-ep" }, { name = "deep-gemm" }, - { name = "flash-attn" }, - { name = "mamba-ssm" }, { name = "num2words" }, { name = "vllm" }, ] @@ -3714,7 +3717,7 @@ requires-dist = [ { name = "accelerate", specifier = ">=0.26" }, { name = "blobfile" }, { name = "causal-conv1d", marker = "extra == 'automodel'", git = "https://github.com/Dao-AILab/causal-conv1d?tag=v1.5.0.post8" }, - { name = "causal-conv1d", marker = "extra == 'vllm'", git = "https://github.com/Dao-AILab/causal-conv1d?tag=v1.5.0.post8" }, + { name = "causal-conv1d", marker = "extra == 'fsdp'", git = "https://github.com/Dao-AILab/causal-conv1d?tag=v1.5.0.post8" }, { name = "colored", specifier = "==2.2.3" }, { name = "cuda-python", marker = "extra == 'vllm'" }, { name = "datasets", specifier = ">=4.0.0" }, @@ -3725,11 +3728,11 @@ requires-dist = [ { name = "deep-ep", marker = "extra == 'vllm'", git = "https://github.com/deepseek-ai/DeepEP.git?rev=bfded34800dfec415b71503f8205181de90b2480" }, { name = "deep-gemm", marker = "extra == 'vllm'", git = "https://github.com/deepseek-ai/DeepGEMM.git?rev=7b6b5563b9d4c1ae07ffbce7f78ad3ac9204827c" }, { name = "flash-attn", marker = "extra == 'automodel'", specifier = "==2.8.1" }, + { name = "flash-attn", marker = "extra == 'fsdp'", specifier = "==2.8.1" }, { name = "flash-attn", marker = "extra == 'mcore'", specifier = "==2.8.1" }, - { name = "flash-attn", marker = "extra == 'vllm'", specifier = "==2.8.1" }, { name = "hydra-core" }, { name = "mamba-ssm", marker = "extra == 'automodel'", git = "https://github.com/state-spaces/mamba.git?rev=2e16fc3062cdcd4ebef27a9aa4442676e1c7edf4" }, - { name = "mamba-ssm", marker = "extra == 'vllm'", git = "https://github.com/state-spaces/mamba.git?rev=2e16fc3062cdcd4ebef27a9aa4442676e1c7edf4" }, + { name = "mamba-ssm", marker = "extra == 'fsdp'", git = "https://github.com/state-spaces/mamba.git?rev=2e16fc3062cdcd4ebef27a9aa4442676e1c7edf4" }, { name = "math-verify" }, { name = "matplotlib" }, { name = "megatron-bridge", marker = "extra == 'mcore'", editable = "3rdparty/Megatron-Bridge-workspace" }, @@ -3767,11 +3770,12 @@ requires-dist = [ { name = "transformers", specifier = "==4.57.1" }, { name = "triton", marker = "(platform_machine == 'aarch64' and sys_platform == 'linux') or (platform_machine == 'x86_64' and sys_platform == 'linux')", index = "https://download.pytorch.org/whl/cu129" }, { name = "vllm", marker = "extra == 'automodel'", specifier = "==0.11.2" }, + { name = "vllm", marker = "extra == 'fsdp'", specifier = "==0.11.2" }, { name = "vllm", marker = "extra == 'mcore'", specifier = "==0.11.2" }, { name = "vllm", marker = "extra == 'vllm'", specifier = "==0.11.2" }, { name = "wandb" }, ] -provides-extras = ["automodel", "vllm", "mcore", "nemo-gym"] +provides-extras = ["fsdp", "automodel", "vllm", "mcore", "nemo-gym"] [package.metadata.requires-dev] build = [ From b66ec931ee911251da8c1f94e362eaec70d68425 Mon Sep 17 00:00:00 2001 From: Charlie Truong Date: Sat, 10 Jan 2026 17:19:16 -0600 Subject: [PATCH 43/52] build: Resolve CVEs for gnupg and aiohttp (#1755) Signed-off-by: Charlie Truong Signed-off-by: Parth Mannan --- docker/Dockerfile | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/docker/Dockerfile b/docker/Dockerfile index f78ba0ed62..62b8796dff 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -38,6 +38,8 @@ apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos apt update apt install -y nsight-systems-cli +# To fix CVE-2025-68973 +apt install -y --only-upgrade gnupg apt-get clean rm -rf /var/lib/apt/lists/* @@ -103,6 +105,10 @@ uv sync --link-mode symlink --locked --extra vllm --no-install-project uv sync --link-mode symlink --locked --extra mcore --no-install-project uv sync --link-mode symlink --locked --extra automodel --no-install-project uv sync --link-mode symlink --locked --all-groups --no-install-project + +# Remove the aiohttp in this uv cache dir to fully address CVE GHSA-mqqc-3gqh-h2x8 +# The ray install will include the older aiohttp version in its cache +find /root/.cache/uv -type d -path "*ray/_private/runtime_env/agent/thirdparty_files/aiohttp*" -exec rm -rf {} + EOF ENV PATH="/opt/nemo_rl_venv/bin:$PATH" From 35c7df9902c97042bdf21cfbfbc53e233f76e4b7 Mon Sep 17 00:00:00 2001 From: Charlie Truong Date: Sun, 11 Jan 2026 20:45:01 -0600 Subject: [PATCH 44/52] build: Bump mamba to d68d16e and causal-conv1d to 67e0a9d (#1759) Signed-off-by: Charlie Truong Signed-off-by: Parth Mannan --- pyproject.toml | 8 ++++---- uv.lock | 28 ++++++++++++++-------------- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 4e569098eb..3be30f1b61 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -170,8 +170,8 @@ triton = [ { index = "pytorch-cu129", marker = "sys_platform != 'darwin'" }, { index = "pypi", marker = "sys_platform == 'darwin'" }, ] -causal-conv1d = { git = "https://github.com/Dao-AILab/causal-conv1d", tag = "v1.5.0.post8" } -mamba-ssm = { git = "https://github.com/state-spaces/mamba.git", rev = "2e16fc3062cdcd4ebef27a9aa4442676e1c7edf4" } +causal-conv1d = { git = "https://github.com/Dao-AILab/causal-conv1d", rev = "67e0a9dfe1518fc0036444e9ab5fe06ab78299e0" } +mamba-ssm = { git = "https://github.com/state-spaces/mamba.git", rev = "d68d16ed7d5d5164eb5a57c0285f3b7eb8394ec1" } nv-grouped-gemm = { git = "https://github.com/fanshiqing/grouped_gemm", tag = "v1.1.4.post7" } [tool.uv.workspace] @@ -257,13 +257,13 @@ requires-dist = ["torch", "einops", "setuptools", "psutil", "ninja"] [[tool.uv.dependency-metadata]] name = "causal-conv1d" # This version has to match the version in the commit/rev/tag used -version = "1.5.0.post8" +version = "1.5.4" requires-dist = ["torch", "packaging", "ninja"] [[tool.uv.dependency-metadata]] name = "mamba-ssm" # This version has to match the version in the commit/rev/tag used -version = "2.2.4" +version = "2.2.6.post3" requires-dist = ["torch", "packaging", "ninja", "causal-conv1d"] [[tool.uv.dependency-metadata]] diff --git a/uv.lock b/uv.lock index 72e1577def..02cefb945a 100644 --- a/uv.lock +++ b/uv.lock @@ -40,7 +40,7 @@ overrides = [ [[manifest.dependency-metadata]] name = "causal-conv1d" -version = "1.5.0.post8" +version = "1.5.4" requires-dist = ["torch", "packaging", "ninja"] [[manifest.dependency-metadata]] @@ -59,7 +59,7 @@ requires-dist = ["torch", "einops", "setuptools", "psutil", "ninja"] [[manifest.dependency-metadata]] name = "mamba-ssm" -version = "2.2.4" +version = "2.2.6.post3" requires-dist = ["torch", "packaging", "ninja", "causal-conv1d"] [[manifest.dependency-metadata]] @@ -771,8 +771,8 @@ wheels = [ [[package]] name = "causal-conv1d" -version = "1.5.0.post8" -source = { git = "https://github.com/Dao-AILab/causal-conv1d?tag=v1.5.0.post8#82867a9d2e6907cc0f637ac6aff318f696838548" } +version = "1.5.4" +source = { git = "https://github.com/Dao-AILab/causal-conv1d?rev=67e0a9dfe1518fc0036444e9ab5fe06ab78299e0#67e0a9dfe1518fc0036444e9ab5fe06ab78299e0" } dependencies = [ { name = "ninja" }, { name = "packaging" }, @@ -2697,8 +2697,8 @@ wheels = [ [[package]] name = "mamba-ssm" -version = "2.2.4" -source = { git = "https://github.com/state-spaces/mamba.git?rev=2e16fc3062cdcd4ebef27a9aa4442676e1c7edf4#2e16fc3062cdcd4ebef27a9aa4442676e1c7edf4" } +version = "2.2.6.post3" +source = { git = "https://github.com/state-spaces/mamba.git?rev=d68d16ed7d5d5164eb5a57c0285f3b7eb8394ec1#d68d16ed7d5d5164eb5a57c0285f3b7eb8394ec1" } dependencies = [ { name = "causal-conv1d" }, { name = "ninja" }, @@ -2882,11 +2882,11 @@ dependencies = [ [package.metadata] requires-dist = [ - { name = "causal-conv1d", git = "https://github.com/Dao-AILab/causal-conv1d?tag=v1.5.0.post8" }, + { name = "causal-conv1d", git = "https://github.com/Dao-AILab/causal-conv1d?rev=67e0a9dfe1518fc0036444e9ab5fe06ab78299e0" }, { name = "datasets" }, { name = "flash-linear-attention" }, { name = "hydra-core", specifier = ">1.3,<=1.3.2" }, - { name = "mamba-ssm", git = "https://github.com/state-spaces/mamba.git?rev=2e16fc3062cdcd4ebef27a9aa4442676e1c7edf4" }, + { name = "mamba-ssm", git = "https://github.com/state-spaces/mamba.git?rev=d68d16ed7d5d5164eb5a57c0285f3b7eb8394ec1" }, { name = "megatron-core", extras = ["dev", "mlm"], editable = "3rdparty/Megatron-LM-workspace" }, { name = "nvidia-resiliency-ext" }, { name = "omegaconf", specifier = ">=2.3.0" }, @@ -2939,12 +2939,12 @@ dependencies = [ [package.metadata] requires-dist = [ { name = "av", specifier = "<16.0.0" }, - { name = "causal-conv1d", git = "https://github.com/Dao-AILab/causal-conv1d?tag=v1.5.0.post8" }, + { name = "causal-conv1d", git = "https://github.com/Dao-AILab/causal-conv1d?rev=67e0a9dfe1518fc0036444e9ab5fe06ab78299e0" }, { name = "einops", specifier = "~=0.8" }, { name = "emerging-optimizers", git = "https://github.com/NVIDIA-NeMo/Emerging-Optimizers.git?rev=v0.1.0" }, { name = "flash-linear-attention", specifier = "~=0.3.2" }, { name = "flashinfer-python" }, - { name = "mamba-ssm", git = "https://github.com/state-spaces/mamba.git?rev=2e16fc3062cdcd4ebef27a9aa4442676e1c7edf4" }, + { name = "mamba-ssm", git = "https://github.com/state-spaces/mamba.git?rev=d68d16ed7d5d5164eb5a57c0285f3b7eb8394ec1" }, { name = "megatron-energon", extras = ["av-decode"], specifier = "~=6.0" }, { name = "multi-storage-client", specifier = "~=0.27" }, { name = "numpy", specifier = "<2.0.0" }, @@ -3716,8 +3716,8 @@ test = [ requires-dist = [ { name = "accelerate", specifier = ">=0.26" }, { name = "blobfile" }, - { name = "causal-conv1d", marker = "extra == 'automodel'", git = "https://github.com/Dao-AILab/causal-conv1d?tag=v1.5.0.post8" }, - { name = "causal-conv1d", marker = "extra == 'fsdp'", git = "https://github.com/Dao-AILab/causal-conv1d?tag=v1.5.0.post8" }, + { name = "causal-conv1d", marker = "extra == 'automodel'", git = "https://github.com/Dao-AILab/causal-conv1d?rev=67e0a9dfe1518fc0036444e9ab5fe06ab78299e0" }, + { name = "causal-conv1d", marker = "extra == 'fsdp'", git = "https://github.com/Dao-AILab/causal-conv1d?rev=67e0a9dfe1518fc0036444e9ab5fe06ab78299e0" }, { name = "colored", specifier = "==2.2.3" }, { name = "cuda-python", marker = "extra == 'vllm'" }, { name = "datasets", specifier = ">=4.0.0" }, @@ -3731,8 +3731,8 @@ requires-dist = [ { name = "flash-attn", marker = "extra == 'fsdp'", specifier = "==2.8.1" }, { name = "flash-attn", marker = "extra == 'mcore'", specifier = "==2.8.1" }, { name = "hydra-core" }, - { name = "mamba-ssm", marker = "extra == 'automodel'", git = "https://github.com/state-spaces/mamba.git?rev=2e16fc3062cdcd4ebef27a9aa4442676e1c7edf4" }, - { name = "mamba-ssm", marker = "extra == 'fsdp'", git = "https://github.com/state-spaces/mamba.git?rev=2e16fc3062cdcd4ebef27a9aa4442676e1c7edf4" }, + { name = "mamba-ssm", marker = "extra == 'automodel'", git = "https://github.com/state-spaces/mamba.git?rev=d68d16ed7d5d5164eb5a57c0285f3b7eb8394ec1" }, + { name = "mamba-ssm", marker = "extra == 'fsdp'", git = "https://github.com/state-spaces/mamba.git?rev=d68d16ed7d5d5164eb5a57c0285f3b7eb8394ec1" }, { name = "math-verify" }, { name = "matplotlib" }, { name = "megatron-bridge", marker = "extra == 'mcore'", editable = "3rdparty/Megatron-Bridge-workspace" }, From 6e6c476723c5d880f29d80df40de4f7c3505d886 Mon Sep 17 00:00:00 2001 From: Parth Mannan Date: Wed, 14 Jan 2026 17:33:55 -0800 Subject: [PATCH 45/52] Update uv Signed-off-by: Parth Mannan --- uv.lock | 317 ++++++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 283 insertions(+), 34 deletions(-) diff --git a/uv.lock b/uv.lock index 02cefb945a..007137cb2e 100644 --- a/uv.lock +++ b/uv.lock @@ -466,6 +466,19 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/f6/22/91616fe707a5c5510de2cac9b046a30defe7007ba8a0c04f9c08f27df312/audioop_lts-0.2.2-cp314-cp314t-win_arm64.whl", hash = "sha256:b492c3b040153e68b9fdaff5913305aaaba5bb433d8a7f73d5cf6a64ed3cc1dd", size = 25206, upload-time = "2025-08-05T16:43:16.444Z" }, ] +[[package]] +name = "audioread" +version = "3.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "standard-aifc", marker = "python_full_version >= '3.13'" }, + { name = "standard-sunau", marker = "python_full_version >= '3.13'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a1/4a/874ecf9b472f998130c2b5e145dcdb9f6131e84786111489103b66772143/audioread-3.1.0.tar.gz", hash = "sha256:1c4ab2f2972764c896a8ac61ac53e261c8d29f0c6ccd652f84e18f08a4cab190", size = 20082, upload-time = "2025-10-26T19:44:13.484Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7e/16/fbe8e1e185a45042f7cd3a282def5bb8d95bb69ab9e9ef6a5368aa17e426/audioread-3.1.0-py3-none-any.whl", hash = "sha256:b30d1df6c5d3de5dcef0fb0e256f6ea17bdcf5f979408df0297d8a408e2971b4", size = 23143, upload-time = "2025-10-26T19:44:12.016Z" }, +] + [[package]] name = "av" version = "15.0.0" @@ -583,19 +596,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/ed/40/be3858ffed004e47e48a2cefecdbf9b950d41098b780f9dc3aa609a88351/bitarray-3.8.0-cp314-cp314t-win_arm64.whl", hash = "sha256:2a3d1b05ffdd3e95687942ae7b13c63689f85d3f15c39b33329e3cb9ce6c015f", size = 147015, upload-time = "2025-11-02T21:40:35.064Z" }, ] -[[package]] -name = "bitsandbytes" -version = "0.45.5" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "numpy", marker = "(platform_machine != 'aarch64' and sys_platform != 'darwin') or sys_platform == 'win32'" }, - { name = "torch", version = "2.9.0+cu129", source = { registry = "https://download.pytorch.org/whl/cu129" }, marker = "(platform_machine != 'aarch64' and sys_platform != 'darwin') or sys_platform == 'win32'" }, -] -wheels = [ - { url = "https://files.pythonhosted.org/packages/07/b7/cb5ce4d1a382cf53c19ef06c5fc29e85f5e129b4da6527dd207d90a5b8ad/bitsandbytes-0.45.5-py3-none-manylinux_2_24_x86_64.whl", hash = "sha256:a5453f30cc6aab6ccaac364e6bf51a7808d3da5f71763dffeb6d9694c59136e4", size = 76059261, upload-time = "2025-04-07T13:32:52.573Z" }, - { url = "https://files.pythonhosted.org/packages/a6/4c/77b535e025ce780d2ada8271c1e481fb7337c1df2588a52fe1c9bd87d2e8/bitsandbytes-0.45.5-py3-none-win_amd64.whl", hash = "sha256:ed1c61b91d989d6a33fd05737d6edbf5086d8ebc89235ee632c7a19144085da2", size = 75430204, upload-time = "2025-04-07T13:32:57.553Z" }, -] - [[package]] name = "bitstring" version = "4.3.1" @@ -1313,12 +1313,21 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/52/57/ecc9ae29fa5b2d90107cd1d9bf8ed19aacb74b2264d986ae9d44fe9bdf87/debugpy-1.8.16-py2.py3-none-any.whl", hash = "sha256:19c9521962475b87da6f673514f7fd610328757ec993bf7ec0d8c96f9a325f9e", size = 5287700, upload-time = "2025-08-06T18:00:42.333Z" }, ] +[[package]] +name = "decorator" +version = "5.2.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/43/fa/6d96a0978d19e17b68d634497769987b16c8f4cd0a7a05048bec693caa6b/decorator-5.2.1.tar.gz", hash = "sha256:65f266143752f734b0a7cc83c46f4618af75b8c5911b00ccb61d0ac9b6da0360", size = 56711, upload-time = "2025-02-24T04:41:34.073Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4e/8c/f3147f5c4b73e7550fe5f9352eaa956ae838d5c51eb58e7a25b9f3e2643b/decorator-5.2.1-py3-none-any.whl", hash = "sha256:d316bb415a2d9e2d2b3abcc4084c6502fc09240e292cd76a76afc106a1c8e04a", size = 9190, upload-time = "2025-02-24T04:41:32.565Z" }, +] + [[package]] name = "decord" version = "0.6.0" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "numpy" }, + { name = "numpy", marker = "(platform_machine != 'aarch64' and sys_platform != 'darwin') or sys_platform == 'win32'" }, ] wheels = [ { url = "https://files.pythonhosted.org/packages/11/79/936af42edf90a7bd4e41a6cac89c913d4b47fa48a26b042d5129a9242ee3/decord-0.6.0-py3-none-manylinux2010_x86_64.whl", hash = "sha256:51997f20be8958e23b7c4061ba45d0efcd86bffd5fe81c695d0befee0d442976", size = 13602299, upload-time = "2021-06-14T21:30:55.486Z" }, @@ -1395,6 +1404,26 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/d1/ae/afb1487556e2dc827a17097aac8158a25b433a345386f0e249f6d2694ccb/devtools-0.12.2-py3-none-any.whl", hash = "sha256:c366e3de1df4cdd635f1ad8cbcd3af01a384d7abda71900e68d43b04eb6aaca7", size = 19411, upload-time = "2023-09-03T16:56:59.049Z" }, ] +[[package]] +name = "diffusers" +version = "0.36.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "filelock" }, + { name = "httpx" }, + { name = "huggingface-hub" }, + { name = "importlib-metadata" }, + { name = "numpy" }, + { name = "pillow" }, + { name = "regex" }, + { name = "requests" }, + { name = "safetensors" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/88/45/ccb2e2180ddf475a0f931dac6a50346310e4c464ce3cccb8a65d1fc1e16d/diffusers-0.36.0.tar.gz", hash = "sha256:a9cde8721b415bde6a678f2d02abb85396487e1b0e0d2b4abb462d14a9825ab0", size = 3795088, upload-time = "2025-12-08T10:14:34.255Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/35/50/281f92cb1f83854dbd79b6e958b3bc5018607e2542971d41604ba7a14b2f/diffusers-0.36.0-py3-none-any.whl", hash = "sha256:525d42abc74bfc3b2db594999961295c054b48ef40a11724dacf50e6abd1af98", size = 4597884, upload-time = "2025-12-08T10:14:31.979Z" }, +] + [[package]] name = "dill" version = "0.3.8" @@ -2178,6 +2207,19 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86", size = 37515, upload-time = "2025-04-24T03:35:24.344Z" }, ] +[[package]] +name = "h2" +version = "4.3.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "hpack" }, + { name = "hyperframe" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/1d/17/afa56379f94ad0fe8defd37d6eb3f89a25404ffc71d4d848893d270325fc/h2-4.3.0.tar.gz", hash = "sha256:6c59efe4323fa18b47a632221a1888bd7fde6249819beda254aeca909f221bf1", size = 2152026, upload-time = "2025-08-23T18:12:19.778Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/69/b2/119f6e6dcbd96f9069ce9a2665e0146588dc9f88f29549711853645e736a/h2-4.3.0-py3-none-any.whl", hash = "sha256:c438f029a25f7945c69e0ccf0fb951dc3f73a5f6412981daee861431b70e2bdd", size = 61779, upload-time = "2025-08-23T18:12:17.779Z" }, +] + [[package]] name = "hatchling" version = "1.27.0" @@ -2208,6 +2250,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/9e/d3/0aaf279f4f3dea58e99401b92c31c0f752924ba0e6c7d7bb07b1dbd7f35e/hf_xet-1.1.8-cp37-abi3-win_amd64.whl", hash = "sha256:4171f31d87b13da4af1ed86c98cf763292e4720c088b4957cf9d564f92904ca9", size = 2801689, upload-time = "2025-08-18T22:01:04.81Z" }, ] +[[package]] +name = "hpack" +version = "4.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/2c/48/71de9ed269fdae9c8057e5a4c0aa7402e8bb16f2c6e90b3aa53327b113f8/hpack-4.1.0.tar.gz", hash = "sha256:ec5eca154f7056aa06f196a557655c5b009b382873ac8d1e66e79e87535f1dca", size = 51276, upload-time = "2025-01-22T21:44:58.347Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/07/c6/80c95b1b2b94682a72cbdbfb85b81ae2daffa4291fbfa1b1464502ede10d/hpack-4.1.0-py3-none-any.whl", hash = "sha256:157ac792668d995c657d93111f46b4535ed114f0c9c8d672271bbec7eae1b496", size = 34357, upload-time = "2025-01-22T21:44:56.92Z" }, +] + [[package]] name = "httpcore" version = "1.0.9" @@ -2258,6 +2309,11 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad", size = 73517, upload-time = "2024-12-06T15:37:21.509Z" }, ] +[package.optional-dependencies] +http2 = [ + { name = "h2" }, +] + [[package]] name = "huggingface-hub" version = "0.34.4" @@ -2291,6 +2347,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/c6/50/e0edd38dcd63fb26a8547f13d28f7a008bc4a3fd4eb4ff030673f22ad41a/hydra_core-1.3.2-py3-none-any.whl", hash = "sha256:fa0238a9e31df3373b35b0bfb672c34cc92718d21f81311d8996a16de1141d8b", size = 154547, upload-time = "2023-02-23T18:33:40.801Z" }, ] +[[package]] +name = "hyperframe" +version = "6.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/02/e7/94f8232d4a74cc99514c13a9f995811485a6903d48e5d952771ef6322e30/hyperframe-6.1.0.tar.gz", hash = "sha256:f630908a00854a7adeabd6382b43923a4c4cd4b821fcb527e6ab9e15382a3b08", size = 26566, upload-time = "2025-01-22T21:41:49.302Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/48/30/47d0bf6072f7252e6521f3447ccfa40b421b6824517f82854703d0f5a98b/hyperframe-6.1.0-py3-none-any.whl", hash = "sha256:b03380493a519fce58ea5af42e4a42317bf9bd425596f7a0835ffce80f1a42e5", size = 13007, upload-time = "2025-01-22T21:41:47.295Z" }, +] + [[package]] name = "identify" version = "2.6.13" @@ -2309,6 +2374,20 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3", size = 70442, upload-time = "2024-09-15T18:07:37.964Z" }, ] +[[package]] +name = "imageio-ffmpeg" +version = "0.6.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/44/bd/c3343c721f2a1b0c9fc71c1aebf1966a3b7f08c2eea8ed5437a2865611d6/imageio_ffmpeg-0.6.0.tar.gz", hash = "sha256:e2556bed8e005564a9f925bb7afa4002d82770d6b08825078b7697ab88ba1755", size = 25210, upload-time = "2025-01-16T21:34:32.747Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/da/58/87ef68ac83f4c7690961bce288fd8e382bc5f1513860fc7f90a9c1c1c6bf/imageio_ffmpeg-0.6.0-py3-none-macosx_10_9_intel.macosx_10_9_x86_64.whl", hash = "sha256:9d2baaf867088508d4a3458e61eeb30e945c4ad8016025545f66c4b5aaef0a61", size = 24932969, upload-time = "2025-01-16T21:34:20.464Z" }, + { url = "https://files.pythonhosted.org/packages/40/5c/f3d8a657d362cc93b81aab8feda487317da5b5d31c0e1fdfd5e986e55d17/imageio_ffmpeg-0.6.0-py3-none-macosx_11_0_arm64.whl", hash = "sha256:b1ae3173414b5fc5f538a726c4e48ea97edc0d2cdc11f103afee655c463fa742", size = 21113891, upload-time = "2025-01-16T21:34:00.277Z" }, + { url = "https://files.pythonhosted.org/packages/33/e7/1925bfbc563c39c1d2e82501d8372734a5c725e53ac3b31b4c2d081e895b/imageio_ffmpeg-0.6.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:1d47bebd83d2c5fc770720d211855f208af8a596c82d17730aa51e815cdee6dc", size = 25632706, upload-time = "2025-01-16T21:33:53.475Z" }, + { url = "https://files.pythonhosted.org/packages/a0/2d/43c8522a2038e9d0e7dbdf3a61195ecc31ca576fb1527a528c877e87d973/imageio_ffmpeg-0.6.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:c7e46fcec401dd990405049d2e2f475e2b397779df2519b544b8aab515195282", size = 29498237, upload-time = "2025-01-16T21:34:13.726Z" }, + { url = "https://files.pythonhosted.org/packages/a0/13/59da54728351883c3c1d9fca1710ab8eee82c7beba585df8f25ca925f08f/imageio_ffmpeg-0.6.0-py3-none-win32.whl", hash = "sha256:196faa79366b4a82f95c0f4053191d2013f4714a715780f0ad2a68ff37483cc2", size = 19652251, upload-time = "2025-01-16T21:34:06.812Z" }, + { url = "https://files.pythonhosted.org/packages/2c/c6/fa760e12a2483469e2bf5058c5faff664acf66cadb4df2ad6205b016a73d/imageio_ffmpeg-0.6.0-py3-none-win_amd64.whl", hash = "sha256:02fa47c83703c37df6bfe4896aab339013f62bf02c5ebf2dce6da56af04ffc0a", size = 31246824, upload-time = "2025-01-16T21:34:28.6Z" }, +] + [[package]] name = "imagesize" version = "1.4.1" @@ -2570,6 +2649,44 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/ab/60/dfbbf40e3a371388c0e03ff65b01319b7d4023e883df6d7261125772ffdc/latex2sympy2_extended-1.10.2-py3-none-any.whl", hash = "sha256:f910442c5b02a466c1046f47d05cc5285181068b882399281f30102715337fb7", size = 207855, upload-time = "2025-07-02T15:26:04.88Z" }, ] +[[package]] +name = "lazy-loader" +version = "0.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "packaging" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/6f/6b/c875b30a1ba490860c93da4cabf479e03f584eba06fe5963f6f6644653d8/lazy_loader-0.4.tar.gz", hash = "sha256:47c75182589b91a4e1a85a136c074285a5ad4d9f39c63e0d7fb76391c4574cd1", size = 15431, upload-time = "2024-04-05T13:03:12.261Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/83/60/d497a310bde3f01cb805196ac61b7ad6dc5dcf8dce66634dc34364b20b4f/lazy_loader-0.4-py3-none-any.whl", hash = "sha256:342aa8e14d543a154047afb4ba8ef17f5563baad3fc610d7b15b213b0f119efc", size = 12097, upload-time = "2024-04-05T13:03:10.514Z" }, +] + +[[package]] +name = "librosa" +version = "0.11.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "audioread" }, + { name = "decorator" }, + { name = "joblib" }, + { name = "lazy-loader" }, + { name = "msgpack" }, + { name = "numba" }, + { name = "numpy" }, + { name = "pooch" }, + { name = "scikit-learn" }, + { name = "scipy" }, + { name = "soundfile" }, + { name = "soxr" }, + { name = "standard-aifc", marker = "python_full_version >= '3.13'" }, + { name = "standard-sunau", marker = "python_full_version >= '3.13'" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/64/36/360b5aafa0238e29758729e9486c6ed92a6f37fa403b7875e06c115cdf4a/librosa-0.11.0.tar.gz", hash = "sha256:f5ed951ca189b375bbe2e33b2abd7e040ceeee302b9bbaeeffdfddb8d0ace908", size = 327001, upload-time = "2025-03-11T15:09:54.884Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b5/ba/c63c5786dfee4c3417094c4b00966e61e4a63efecee22cb7b4c0387dda83/librosa-0.11.0-py3-none-any.whl", hash = "sha256:0b6415c4fd68bff4c29288abe67c6d80b587e0e1e2cfb0aad23e4559504a7fa1", size = 260749, upload-time = "2025-03-11T15:09:52.982Z" }, +] + [[package]] name = "liger-kernel" version = "0.6.2" @@ -3434,10 +3551,14 @@ wheels = [ name = "nemo-automodel" source = { editable = "3rdparty/Automodel-workspace/Automodel" } dependencies = [ - { name = "bitsandbytes", marker = "platform_machine == 'x86_64' and sys_platform != 'darwin'" }, { name = "datasets" }, + { name = "diffusers" }, + { name = "ftfy" }, + { name = "imageio-ffmpeg" }, { name = "liger-kernel", marker = "platform_machine == 'x86_64' and sys_platform != 'darwin'" }, { name = "megatron-fsdp" }, + { name = "mlflow" }, + { name = "opencv-python-headless" }, { name = "pybind11" }, { name = "pyyaml" }, { name = "torch", version = "2.9.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, @@ -3449,22 +3570,39 @@ dependencies = [ ] [package.optional-dependencies] -fa = [ - { name = "flash-attn" }, +all = [ + { name = "backoff" }, + { name = "flash-linear-attention" }, + { name = "mistral-common", extra = ["opencv"] }, + { name = "numba" }, + { name = "numpy" }, + { name = "perceptron" }, + { name = "pillow" }, + { name = "qwen-omni-utils" }, + { name = "qwen-vl-utils", extra = ["decord"], marker = "platform_machine == 'x86_64' and sys_platform != 'darwin'" }, + { name = "sentencepiece" }, + { name = "timm" }, + { name = "torchcodec", marker = "platform_machine == 'x86_64' and sys_platform != 'darwin'" }, ] -moe = [ +cuda = [ + { name = "flash-attn" }, { name = "transformer-engine", extra = ["pytorch"] }, ] +extra = [ + { name = "flash-linear-attention" }, + { name = "perceptron" }, + { name = "sentencepiece" }, +] vlm = [ { name = "backoff" }, { name = "mistral-common", extra = ["opencv"] }, { name = "numba" }, { name = "numpy" }, { name = "pillow" }, - { name = "qwen-vl-utils", extra = ["decord"] }, + { name = "qwen-omni-utils" }, + { name = "qwen-vl-utils", extra = ["decord"], marker = "platform_machine == 'x86_64' and sys_platform != 'darwin'" }, { name = "timm" }, - { name = "torchcodec" }, - { name = "transformers" }, + { name = "torchcodec", marker = "platform_machine == 'x86_64' and sys_platform != 'darwin'" }, ] [package.dev-dependencies] @@ -3498,30 +3636,39 @@ test = [ [package.metadata] requires-dist = [ { name = "backoff", marker = "extra == 'vlm'" }, - { name = "bitsandbytes", marker = "platform_machine == 'x86_64' and sys_platform != 'darwin'", specifier = "==0.45.5" }, { name = "datasets", specifier = ">=4.0.0" }, - { name = "flash-attn", marker = "extra == 'fa'", specifier = "<=2.8.3" }, + { name = "diffusers" }, + { name = "flash-attn", marker = "extra == 'cuda'", specifier = "<=2.8.3" }, + { name = "flash-linear-attention", marker = "extra == 'extra'" }, + { name = "ftfy" }, + { name = "imageio-ffmpeg" }, { name = "liger-kernel", marker = "platform_machine == 'x86_64' and sys_platform != 'darwin'", specifier = ">=0.5.9" }, { name = "megatron-fsdp" }, { name = "mistral-common", extras = ["opencv"], marker = "extra == 'vlm'" }, + { name = "mlflow" }, + { name = "nemo-automodel", extras = ["extra"], marker = "extra == 'all'", editable = "3rdparty/Automodel-workspace/Automodel" }, + { name = "nemo-automodel", extras = ["vlm"], marker = "extra == 'all'", editable = "3rdparty/Automodel-workspace/Automodel" }, { name = "numba", marker = "extra == 'vlm'" }, { name = "numpy", marker = "extra == 'vlm'" }, + { name = "opencv-python-headless", specifier = "==4.10.0.84" }, + { name = "perceptron", marker = "extra == 'extra'" }, { name = "pillow", marker = "extra == 'vlm'" }, { name = "pybind11" }, { name = "pyyaml" }, - { name = "qwen-vl-utils", extras = ["decord"], marker = "extra == 'vlm'" }, - { name = "timm", marker = "extra == 'vlm'", specifier = "==1.0.16" }, + { name = "qwen-omni-utils", marker = "extra == 'vlm'" }, + { name = "qwen-vl-utils", extras = ["decord"], marker = "platform_machine == 'x86_64' and sys_platform != 'darwin' and extra == 'vlm'" }, + { name = "sentencepiece", marker = "extra == 'extra'" }, + { name = "timm", marker = "extra == 'vlm'", specifier = "<=1.0.22" }, { name = "torch", marker = "sys_platform != 'darwin'", specifier = "<=2.9.0", index = "https://download.pytorch.org/whl/cu129" }, { name = "torch", marker = "sys_platform == 'darwin'", specifier = "<=2.9.0", index = "https://pypi.org/simple" }, - { name = "torchao", specifier = "==0.14.1" }, - { name = "torchcodec", marker = "extra == 'vlm'" }, + { name = "torchao" }, + { name = "torchcodec", marker = "platform_machine == 'x86_64' and sys_platform != 'darwin' and extra == 'vlm'" }, { name = "torchdata" }, - { name = "transformer-engine", extras = ["pytorch"], marker = "extra == 'moe'", specifier = "==2.8.0" }, - { name = "transformers", specifier = "<=4.57.1" }, - { name = "transformers", marker = "extra == 'vlm'", specifier = "<=4.57.1" }, + { name = "transformer-engine", extras = ["pytorch"], marker = "extra == 'cuda'", specifier = "==2.8.0" }, + { name = "transformers", specifier = "<=4.57.3" }, { name = "wandb" }, ] -provides-extras = ["vlm", "fa", "moe"] +provides-extras = ["cuda", "extra", "vlm", "all"] [package.metadata.requires-dev] build = [ @@ -4579,6 +4726,25 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/49/fe/a2da1627aa9cb6310b6034598363bd26ac301c4a99d21f415b1b2855891e/peft-0.17.1-py3-none-any.whl", hash = "sha256:3d129d64def3d74779c32a080d2567e5f7b674e77d546e3585138216d903f99e", size = 504896, upload-time = "2025-08-21T09:25:18.974Z" }, ] +[[package]] +name = "perceptron" +version = "0.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama" }, + { name = "httpx", extra = ["http2"] }, + { name = "numpy" }, + { name = "pillow" }, + { name = "pydantic" }, + { name = "rich" }, + { name = "shellingham" }, + { name = "typer" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c6/ff/87efbc3988094e09eb29261d545c84cd0a21376daa997435f5566281e2d2/perceptron-0.2.0.tar.gz", hash = "sha256:369ff3078ba7ac9e3b5f30d9f75ff44d72991b64c94f93c5267e751552cab3f6", size = 87447, upload-time = "2026-01-14T23:42:37.713Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8b/83/983a6663a7814c0772eabdf3f2e616758abd50a244dfbd770785c9c2ab95/perceptron-0.2.0-py3-none-any.whl", hash = "sha256:7dc7713778b797f3cb013406eb507ae729ca360347dba8196e82361134a436e8", size = 61076, upload-time = "2026-01-14T23:42:36.525Z" }, +] + [[package]] name = "pillow" version = "11.3.0" @@ -4685,6 +4851,20 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746", size = 20538, upload-time = "2025-05-15T12:30:06.134Z" }, ] +[[package]] +name = "pooch" +version = "1.8.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "packaging" }, + { name = "platformdirs" }, + { name = "requests" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c6/77/b3d3e00c696c16cf99af81ef7b1f5fe73bd2a307abca41bd7605429fe6e5/pooch-1.8.2.tar.gz", hash = "sha256:76561f0de68a01da4df6af38e9955c4c9d1a5c90da73f7e40276a5728ec83d10", size = 59353, upload-time = "2024-06-06T16:53:46.224Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a8/87/77cc11c7a9ea9fd05503def69e3d18605852cd0d4b0d3b8f15bbeb3ef1d1/pooch-1.8.2-py3-none-any.whl", hash = "sha256:3529a57096f7198778a5ceefd5ac3ef0e4d06a6ddaf9fc2d609b806f25302c47", size = 64574, upload-time = "2024-06-06T16:53:44.343Z" }, +] + [[package]] name = "pre-commit" version = "4.3.0" @@ -5486,6 +5666,22 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/89/32/3836ed85947b06f1d67c07ce16c00b0cf8c053ab0b249d234f9f81ff95ff/pyzmq-27.0.1-cp314-cp314t-win_arm64.whl", hash = "sha256:0fc24bf45e4a454e55ef99d7f5c8b8712539200ce98533af25a5bfa954b6b390", size = 575098, upload-time = "2025-08-03T05:04:27.974Z" }, ] +[[package]] +name = "qwen-omni-utils" +version = "0.0.8" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "av" }, + { name = "librosa" }, + { name = "packaging" }, + { name = "pillow" }, + { name = "requests" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b8/b1/cc58b03b5eadddc0812cef884d013ed6cc66b09f9b0f5b45123f89dcd056/qwen_omni_utils-0.0.8.tar.gz", hash = "sha256:b5808673e1455f4115cb784a62cdc8e8616576221a01fc738610b0f9268cb33c", size = 8145, upload-time = "2025-06-12T11:02:05.411Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a1/b1/dcdd69246a3c3c3bd6f6ced58e2307b3afbd894c4412c29fd49dd897e562/qwen_omni_utils-0.0.8-py3-none-any.whl", hash = "sha256:c42bcc633fbfd84d565ff0de9d45fae68a6b57a9b7b97a4b77eda71a0d3ee73a", size = 9218, upload-time = "2025-06-12T11:02:03.981Z" }, +] + [[package]] name = "qwen-vl-utils" version = "0.0.11" @@ -5503,7 +5699,7 @@ wheels = [ [package.optional-dependencies] decord = [ - { name = "decord" }, + { name = "decord", marker = "(platform_machine != 'aarch64' and sys_platform != 'darwin') or sys_platform == 'win32'" }, ] [[package]] @@ -6243,6 +6439,27 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/e7/9c/0e6afc12c269578be5c0c1c9f4b49a8d32770a080260c333ac04cc1c832d/soupsieve-2.7-py3-none-any.whl", hash = "sha256:6e60cc5c1ffaf1cebcc12e8188320b72071e922c2e897f737cadce79ad5d30c4", size = 36677, upload-time = "2025-04-20T18:50:07.196Z" }, ] +[[package]] +name = "soxr" +version = "1.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/42/7e/f4b461944662ad75036df65277d6130f9411002bfb79e9df7dff40a31db9/soxr-1.0.0.tar.gz", hash = "sha256:e07ee6c1d659bc6957034f4800c60cb8b98de798823e34d2a2bba1caa85a4509", size = 171415, upload-time = "2025-09-07T13:22:21.317Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c5/c7/f92b81f1a151c13afb114f57799b86da9330bec844ea5a0d3fe6a8732678/soxr-1.0.0-cp312-abi3-macosx_10_14_x86_64.whl", hash = "sha256:abecf4e39017f3fadb5e051637c272ae5778d838e5c3926a35db36a53e3a607f", size = 205508, upload-time = "2025-09-07T13:22:01.252Z" }, + { url = "https://files.pythonhosted.org/packages/ff/1d/c945fea9d83ea1f2be9d116b3674dbaef26ed090374a77c394b31e3b083b/soxr-1.0.0-cp312-abi3-macosx_11_0_arm64.whl", hash = "sha256:e973d487ee46aa8023ca00a139db6e09af053a37a032fe22f9ff0cc2e19c94b4", size = 163568, upload-time = "2025-09-07T13:22:03.558Z" }, + { url = "https://files.pythonhosted.org/packages/b5/80/10640970998a1d2199bef6c4d92205f36968cddaf3e4d0e9fe35ddd405bd/soxr-1.0.0-cp312-abi3-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e8ce273cca101aff3d8c387db5a5a41001ba76ef1837883438d3c652507a9ccc", size = 204707, upload-time = "2025-09-07T13:22:05.125Z" }, + { url = "https://files.pythonhosted.org/packages/b1/87/2726603c13c2126cb8ded9e57381b7377f4f0df6ba4408e1af5ddbfdc3dd/soxr-1.0.0-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e8f2a69686f2856d37823bbb7b78c3d44904f311fe70ba49b893af11d6b6047b", size = 238032, upload-time = "2025-09-07T13:22:06.428Z" }, + { url = "https://files.pythonhosted.org/packages/ce/04/530252227f4d0721a5524a936336485dfb429bb206a66baf8e470384f4a2/soxr-1.0.0-cp312-abi3-win_amd64.whl", hash = "sha256:2a3b77b115ae7c478eecdbd060ed4f61beda542dfb70639177ac263aceda42a2", size = 172070, upload-time = "2025-09-07T13:22:07.62Z" }, + { url = "https://files.pythonhosted.org/packages/99/77/d3b3c25b4f1b1aa4a73f669355edcaee7a52179d0c50407697200a0e55b9/soxr-1.0.0-cp314-cp314t-macosx_10_14_x86_64.whl", hash = "sha256:392a5c70c04eb939c9c176bd6f654dec9a0eaa9ba33d8f1024ed63cf68cdba0a", size = 209509, upload-time = "2025-09-07T13:22:08.773Z" }, + { url = "https://files.pythonhosted.org/packages/8a/ee/3ca73e18781bb2aff92b809f1c17c356dfb9a1870652004bd432e79afbfa/soxr-1.0.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:fdc41a1027ba46777186f26a8fba7893be913383414135577522da2fcc684490", size = 167690, upload-time = "2025-09-07T13:22:10.259Z" }, + { url = "https://files.pythonhosted.org/packages/bd/f0/eea8b5f587a2531657dc5081d2543a5a845f271a3bea1c0fdee5cebde021/soxr-1.0.0-cp314-cp314t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:449acd1dfaf10f0ce6dfd75c7e2ef984890df94008765a6742dafb42061c1a24", size = 209541, upload-time = "2025-09-07T13:22:11.739Z" }, + { url = "https://files.pythonhosted.org/packages/64/59/2430a48c705565eb09e78346950b586f253a11bd5313426ced3ecd9b0feb/soxr-1.0.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:38b35c99e408b8f440c9376a5e1dd48014857cd977c117bdaa4304865ae0edd0", size = 243025, upload-time = "2025-09-07T13:22:12.877Z" }, + { url = "https://files.pythonhosted.org/packages/3c/1b/f84a2570a74094e921bbad5450b2a22a85d58585916e131d9b98029c3e69/soxr-1.0.0-cp314-cp314t-win_amd64.whl", hash = "sha256:a39b519acca2364aa726b24a6fd55acf29e4c8909102e0b858c23013c38328e5", size = 184850, upload-time = "2025-09-07T13:22:14.068Z" }, +] + [[package]] name = "sphinx" version = "8.2.3" @@ -6430,6 +6647,40 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/a9/5c/bfd6bd0bf979426d405cc6e71eceb8701b148b16c21d2dc3c261efc61c7b/sqlparse-0.5.3-py3-none-any.whl", hash = "sha256:cf2196ed3418f3ba5de6af7e82c694a9fbdbfecccdfc72e281548517081f16ca", size = 44415, upload-time = "2024-12-10T12:05:27.824Z" }, ] +[[package]] +name = "standard-aifc" +version = "3.13.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "audioop-lts", marker = "python_full_version >= '3.13'" }, + { name = "standard-chunk", marker = "python_full_version >= '3.13'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c4/53/6050dc3dde1671eb3db592c13b55a8005e5040131f7509cef0215212cb84/standard_aifc-3.13.0.tar.gz", hash = "sha256:64e249c7cb4b3daf2fdba4e95721f811bde8bdfc43ad9f936589b7bb2fae2e43", size = 15240, upload-time = "2024-10-30T16:01:31.772Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c3/52/5fbb203394cc852334d1575cc020f6bcec768d2265355984dfd361968f36/standard_aifc-3.13.0-py3-none-any.whl", hash = "sha256:f7ae09cc57de1224a0dd8e3eb8f73830be7c3d0bc485de4c1f82b4a7f645ac66", size = 10492, upload-time = "2024-10-30T16:01:07.071Z" }, +] + +[[package]] +name = "standard-chunk" +version = "3.13.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/43/06/ce1bb165c1f111c7d23a1ad17204d67224baa69725bb6857a264db61beaf/standard_chunk-3.13.0.tar.gz", hash = "sha256:4ac345d37d7e686d2755e01836b8d98eda0d1a3ee90375e597ae43aaf064d654", size = 4672, upload-time = "2024-10-30T16:18:28.326Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7a/90/a5c1084d87767d787a6caba615aa50dc587229646308d9420c960cb5e4c0/standard_chunk-3.13.0-py3-none-any.whl", hash = "sha256:17880a26c285189c644bd5bd8f8ed2bdb795d216e3293e6dbe55bbd848e2982c", size = 4944, upload-time = "2024-10-30T16:18:26.694Z" }, +] + +[[package]] +name = "standard-sunau" +version = "3.13.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "audioop-lts", marker = "python_full_version >= '3.13'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/66/e3/ce8d38cb2d70e05ffeddc28bb09bad77cfef979eb0a299c9117f7ed4e6a9/standard_sunau-3.13.0.tar.gz", hash = "sha256:b319a1ac95a09a2378a8442f403c66f4fd4b36616d6df6ae82b8e536ee790908", size = 9368, upload-time = "2024-10-30T16:01:41.626Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/34/ae/e3707f6c1bc6f7aa0df600ba8075bfb8a19252140cd595335be60e25f9ee/standard_sunau-3.13.0-py3-none-any.whl", hash = "sha256:53af624a9529c41062f4c2fd33837f297f3baa196b0cfceffea6555654602622", size = 7364, upload-time = "2024-10-30T16:01:28.003Z" }, +] + [[package]] name = "starlette" version = "0.50.0" @@ -6862,9 +7113,7 @@ name = "torchcodec" version = "0.6.0" source = { registry = "https://pypi.org/simple" } wheels = [ - { url = "https://files.pythonhosted.org/packages/d9/b3/11326a0e7a3c803a95975cfce4ac88fa4ea1a0d432bb876081046c5a5554/torchcodec-0.6.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:fba260145a239b5afe13336e3a5bc1b089c9c31a073e9a7c2026d4cbd853fdd9", size = 3482584, upload-time = "2025-08-07T08:51:32.535Z" }, { url = "https://files.pythonhosted.org/packages/a7/d1/3f90561df013f6a015ef19de22726b64073fee405f53d3c4b8255ab05a67/torchcodec-0.6.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:fdef91a17fb1f1a159ce23710324a9a4e6d6a885275de73700f94a9ad562c6b2", size = 1370954, upload-time = "2025-08-07T08:51:15.021Z" }, - { url = "https://files.pythonhosted.org/packages/87/d0/0b5dd42652e4527d578e1d6239dbb907bf83e502115e517b83a55d8b7f8b/torchcodec-0.6.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:de20cab5df7fa7cdd74ec1dc0d508324685573f86de6789f0ebb860b7ea20b33", size = 3446017, upload-time = "2025-08-07T08:51:34.484Z" }, { url = "https://files.pythonhosted.org/packages/97/62/a938334e39101d4304619b90847d8aef7d1c607c6bcf33638f72931ae990/torchcodec-0.6.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:46dab701a2d809e975a8b07d7ee47ed34f1d903511e374c74cfc1de6a5ab0e3f", size = 1374794, upload-time = "2025-08-07T08:51:17.355Z" }, ] From 0b5d72f1a71a14d65396b79be5f75d06d431059f Mon Sep 17 00:00:00 2001 From: Charlie Truong Date: Tue, 13 Jan 2026 13:07:20 -0600 Subject: [PATCH 46/52] ci: Clean up disk space for lint check (#1768) Signed-off-by: Charlie Truong Signed-off-by: Parth Mannan --- .github/workflows/cicd-main.yml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/.github/workflows/cicd-main.yml b/.github/workflows/cicd-main.yml index 2ff16efe76..87a3a076d8 100644 --- a/.github/workflows/cicd-main.yml +++ b/.github/workflows/cicd-main.yml @@ -155,6 +155,18 @@ jobs: needs: [pre-flight] runs-on: ubuntu-latest steps: + - name: Free up disk space + run: | + # Remove unnecessary packages and files on Ubuntu + sudo apt-get clean + sudo rm -rf /usr/local/lib/android || true + sudo rm -rf /opt/ghc || true + sudo rm -rf /usr/local/.ghcup || true + sudo rm -rf /usr/share/dotnet || true + sudo rm -rf /opt/az || true + # Clear pip and npm caches + pip cache purge || true + sudo npm cache clean --force || true - name: Checkout repository uses: actions/checkout@v4 with: From 454c3047b1e5df55c6c14609567f479a115bbd54 Mon Sep 17 00:00:00 2001 From: Jonas Yang CN Date: Thu, 15 Jan 2026 09:37:56 +0800 Subject: [PATCH 47/52] docs: Adding dtensor TP debugging summary (#1767) Signed-off-by: Jonas Yang Signed-off-by: ruit Signed-off-by: Rayen Signed-off-by: Yuki Huang Co-authored-by: ruit Co-authored-by: Yuki Huang Co-authored-by: jgerh <163925524+jgerh@users.noreply.github.com> Signed-off-by: Parth Mannan --- .../image-20260111142255534.png | Bin 0 -> 596511 bytes ...mage-20260111160656891-1768118824549-2.png | Bin 0 -> 388037 bytes .../assets/dtensor-tp-accuracy/kl_hf_prev.png | Bin 0 -> 94922 bytes .../logprobs_unequal_1.png | Bin 0 -> 263393 bytes .../token_mult_prob_error_qwen3_4B.png | Bin 0 -> 689121 bytes .../validation_accuracy.png | Bin 0 -> 303769 bytes docs/guides/dtensor-tp-accuracy.md | 242 ++++++++++++++++++ docs/index.md | 1 + 8 files changed, 243 insertions(+) create mode 100644 docs/assets/dtensor-tp-accuracy/image-20260111142255534.png create mode 100644 docs/assets/dtensor-tp-accuracy/image-20260111160656891-1768118824549-2.png create mode 100644 docs/assets/dtensor-tp-accuracy/kl_hf_prev.png create mode 100644 docs/assets/dtensor-tp-accuracy/logprobs_unequal_1.png create mode 100644 docs/assets/dtensor-tp-accuracy/token_mult_prob_error_qwen3_4B.png create mode 100644 docs/assets/dtensor-tp-accuracy/validation_accuracy.png create mode 100644 docs/guides/dtensor-tp-accuracy.md diff --git a/docs/assets/dtensor-tp-accuracy/image-20260111142255534.png b/docs/assets/dtensor-tp-accuracy/image-20260111142255534.png new file mode 100644 index 0000000000000000000000000000000000000000..4754c8b7cc823af8053a8d02c892768e984a48ac GIT binary patch literal 596511 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
  • c#X{=Id|4E9T7agdpXD7?~nkn`*^s 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%0DMPDgPG_ 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≫*=*S9KF09e`E`SI0{8=VdSq+Dk>m*1_|UB?+O78yF7z(0Rz_Vx4U zwkrFJJG-m<h-p=;@-R*oP^@WqCzH#Bw zXmM0jPzXt--PDW6Prfn#!s5>Mrz`j0UzACS!!W$Nz4br-n}0PkG_u#I);sMW0t0Z@%(o%nqqt|s^)sV*Ve9>iCy0VM2B%k zjvO6%Fg??;LT_TSEAoOi0CieYYI(KUN)PMW?|M;K$@PDbcs)bA; zo6ZW+$V#)KD|>C_`n8qox+zBTBlAb*E3L|B%U2tnW~0;85B&Jvm5=XT0U(FD4B4C4 zfBBET@t>cWIrE^3Jm7jjV$H|S$MAH2?itzk4bilH51x&`z5YX9=2RCw#P{CW>O!>* zJ|}RJl}100V)ecz<+wuA{IPL)D_!#=2QpYEb9+g(51$5>wai_~tm%f`X1ATr$djI_ zz~`32R9rzQJ>|m07Rke&{INZUg!rXSvk&D&i6I@Pe763zdW`RNpWHEH1$#fy!emN< z@zjnGg;Y5AiHH+(U8(S@(*no#vq&+;TYyL4w&;FJBGE6Ghz}tXL)6|4CG#Dl-oYfm z#d6nULXX7n1_EL#PSfjBy%|y%<}yz2xQ)JdK9Tf`Et!E@MKhKq_f>P7AdF03ZNK zL_t(YEJK28M2he!1QK|3X(S3m3Ijq{r-PGWBnmh>2ou##CB{%?*FGbL_AfPjvJ*&NH~-IT+uT3Sz6NM&!?7#jZ~Su3!_B~`au0T!fo z3e-n9<;LX(@I>pyilize{T-Q<+v*Of3 zl1J9_gh{Gb&=_Heh>(opb9AqhVQ?CY40$MQs%$z}yYfB#`z>9{(mK27(x>f$?Ej&#^HAltFZ+p~yO(Qg5ZS+d$>&5PhyS6-hfF z#d`j5N2K_vs^1{jm17d674kYVNfQDzI`v=O`1Mad`$@gih<)$Y`t?71`(H9-#cc89 z)QPXnf9=@BF(PPn8k?onTD!7Y-dNvX?f4znagR?Pd-cq#7mr4DZjziGMZ3(byb*$hLhz#wFq4Xj0KwM8SBp$EUO}ZPpxEoA zGY6RZCK5M}5b0i1#+9{#qm|4^*@BodFF#|e-a>PZ(*d}5`^m4$a0OR&;(n_6ydCjGc!5~-FDnJ6t|4j>D{z~+2J zItkHXT3rp}qd77jM96vyl)s46L2;jUH|ad~38hfsBb>+&0&|3>C#-V7iji41V;;oVg|$*7 zmq5$&uCJ|$p9gZeub!L#!U?hzPb?7tWZcyJ?2-A|Bi*38w!d*_d+TR6 zuHWC;edo^25AH1-8=p8gbEw*GUR`~w+-%w}_59%DrNxhz7R9f{Z1$xSC#MGoR!gN) zt94^-?X%UDpI!g-)l+A-LRb+_<(=GtxaoRB1LpYAymmCYAca$uocN)z??|H`-k< zo6fenEru-RxL-VV@(*78La9+NH>J^AItYN*6MPfou^O0tIca{rb6Q z&P*S+Hqqe-a$uQZ>NIA}l$(d7Ahra&I#akPz ze{=Q2(L%oC`|m9-HahJE{gjhJ#yr1Mu9xdxoe1_D`zyOE z*H*71;^pI)fA7Wb9UeVQK+C(!FQ0sQv$9!l*R$!|?C9a$+RhKJ{I%%2FbtTR4tVhA z@BN$q?)U%k!DV>h^+5abk@7Koe*ebf7-HJr5%3X>8S&dVhR@-m-UaQEE-tqLu@a$( z?d|QUrbl%T2+Sl7`%{}A^|H=&s8Ua(CRywA0$PA`5QdM(R}B^T@)(8Z>fFG22vOk= zZOrP05IO2$FaFvII<0O!AGj+0uZ8}8o>N1XO>QSjv*wB23^xAKr!R5dauS_Bo&o_Lhq0pp}cI|4BbtlGc$OKm^bU3?1emV5<{W z8UYedry}_VW$ZRGThc=7(gq=K2Y#Ce0hg%`NTa;+AT3Iv;@V~F=q3=;Qi<6TaNN&6ZA06RH4z4K)sz^$$*5p?lNAbVC5X1+ zYc4~Uh^b7G(o<#1ZjEZuv?~3PZBro=+*KqXWX!UxqAelr7ks7OWx0=AQ4cnd5+%uP zY%Mtt*tUqw7c}T&{go?@tRAgkeZv@&66MiTLi!@eaWS8F^LfX0n9x|GSW`Rz!Xnb- zSW*I08l{pWuID>I%0&Stz>Dm5Cgpn65eewJjyX8#Nolzm(aK~amOUAU0%)2&nuMUY zODrBes&#`AQAlx%F5-;U=zl`@$*6lt9tR6aM}{aOQrA zzD@DwqeocO1A(deE8~;w39H(QAgXbfFzqPWqC-S4@EYw}rB$wX8u^qvJ}@l)uvg!I z=hmCQyzy4R4RtY}&KGlo-Jn}3`y!>_7(fN=~t$EMN{p#vl+W;858r+$4lh`jZx4T#jod!Y4whqK3$X6r`>t zA_hEYbtNx?6B%<(^f3pW%0kU>{8=7HO&e@0|5Fad}RS$}NvAF+gj_V0Z zl1{I+jEF*I)=}5@Tb=fy;ZeC8D!Kp?=%ht<$3>@=@{0g6Cfc8f011gO3?o=oOeJ5p zQ3TP_e&gu00)qWUXy zcI$~*$(3x9D35+o$iwBm-5-4X-j(HhEzc8m{%m>e+ZRh0j~op-ZB?u9-&?A;JMFGF zK2UTV7l7(s+Yfy}s&!g#FWkAhw(19=ZnEoZYja~`l~%LbYEKRh?jLQtPHt{&9IQd0 z%`-&Qkr^B1{h!}_`^wT{E}gk_v9_|ZzsDFmJ~8#XmtMR$cf4mTf$O?n7{;C+ z`Hd*$I_GC*&dnSuH~lwnUi)xqabat7VQW(yS5uC2YU;0Nz`? zcYRH&l>Fq{wP)w%{Lrto+N=A2DOyZP<&(llEXp( z94QR#)aoBEE&8GV)$`}S{p?GE^Q62xCaMU5vZ+)ym9lndM9ZKz1J;U=E@ZObz4YRd z(TV@{=YQSow2x0reEHmk3x|)rd-wMH_ZD71cj493=X0slPIV`jN;9;?#O!mSwlfKk zAu01ftRy0d9T@93vM7oJqh9&|G37Yt4$T&GsrAwh5uKem1mITNt=(Gb&p)4X zQWB80Prhn)sKIRV-sLmtk$eFFQVzQ?JNx|?zWC0g$8@GEbKqt;%%y0p924gIv^W>V2@DCx2-^cZh|;ucrzi`J*s_r#K`+n-dZxe*CC zz?wEEx?~^)Ewf&%c*?OCIgxRS*e42SBP+D`fCfo2+j{;KQPOkd7kv5J~gm#D~2fW z$G-1Yxqam~^?;16Hi!`V!2|u$4^?anu78r}D5#fdP~1FLQMcs5BM>SuU>RFcYN#ri z*$hZW`^!JsRD9!oQGK9@56HPZrQ0eMdde90mP#`x&~_G8pSD1a109M)$iP7d5s5Ge zgI@DOqph5i5bgzqXoDJ|s(vKn!4X2CXhsHA;7Y-pBmqz=#u&s&Jr5#B;>ZYamcxHASF|kAL>$YnCe_b(?&ok*N12)s}Q{)bZ?MQ^^R3lg>LYWLLR1> zE2&WiGvsPJum_#m+ce<`7^<8o44KfOQA!|4D*31t_aJ~U2bs!7j-Y8u!s(UJHR48O zD3XyUwR2>3dytPo4|1ai7l%TicLW)IFy(f(Zc;((Rw*nNx9A!U;D{k4sQ^ir3XidE za@`Q7V0PJT^HoF$aT38}#(Yt79x4G3aiJRTAhUJP1soZvwZ!d2W=|1o!Wna8=~Q|z zaWYidL!_5Z9A1T13FiiVMx7NfGD$FTc}JaLoK(Pvo*x=K5gByV+0QW7EH{7zn2qHh z#Z;m`60n|v(S8xXY2_R;!6?ZM)DJ?9Alk7|u$~9?CM1s)N3CHdv4hEvt6*OZOz14r z;(isMrkf?vib}TG&=P1$1Ur^@m*2ep%NuJq_Z$2A!$KxMH-04TX11$4^>(%8wKA#9 z3nyRr(z(|OQl(~@Au?nk=Y>pmD3@z_jg|eCkMDhQf9L+c{Pn*S56Px7!-dgecJRd1 z$uFMy!ra)j)!>nWThq5MsiogZP~aq-LMwrU{#;E%L_`)z0wJV$q|{B)iB)yEFx%N2u?lpqEa1w6NOEDvNa8C!ct9n?)A*5`gp8r> zcSNDK!nA!8hkk5+C<#JL-?hbrc^OZJ@JtBpFBMycC=3#jJ6g=yO1rgD*`FR7&@)vS zy$*BG5&$t1O0~Du8w5zmn4GNwXXy$2jE%VH^i=8Dk-Wg)D3{93`bMSn;k~2fdY)&S9mJbTTaA9lX&p-IhhxZr6`aGD+59V?^waRY2_J639XkBp5!J9osi1#v$N*UF{qYa6#VHbx4?-+$qi?>_gExWNy7n>}qWw#x3( zE4Qhg!*C>D7%k+EjJ87JgSleI_X}y~d(S_=SFa7^3TI{_5SS>7kTcZB-+l&~=)Sb$ zUYMPppFMhYZTX-5@+bSv`rPQ)i^osDdit5!(XoJsD|=goO#1B1 z)Xb@=DMhEDfn4@G7ccHNnj7U35!Kr5D@*qi-`Mmz@7`U|zcR)One=#ZU^t%x#HHQ+ zaEe;}#7YAQGb^hMYitUwW2t(Q2w=N$0-t#Zt z*}7lvbPkV9neteKn}@^ABALJ7SSh0!<$aT8-K9tn|j^^T4HciP>pj_8uk6$gi7?q~gB#6pY!C$U#k?7RK1 zSi|ZcVqc`B+xt9G2aiTS%w@8LZXt>KW$p=ipbp4P?foQT8V)FT@6QMSn|M8DK8C0J zdBj^153dHB6dC_(go*RCki_q0k;0}K3a8M6b3R8s#S~F;(WHzp1m`LE7-F6H*uz;HkFmp~ zUhO)qptS3GLAOwJ6dgn>*d)CcvD|L7oArS-BT{RAk7;i2{ZdPvAu7dfk^u~QGgbhR z=mt|%)Y{UBOmWp!K|~1ngEN4G~5vets&4qk_M>VCP=^}FOUdr^&Kgf@d#NTj7S z_>CTwL~t0>FCb;aMdo0%Gl{6-HCkRPpDBo}o{=|_W$lRfgrwv6 z2snUaj~7RBx}`%*zfoteMJ?d(!hT3mvk{=r(F3M0IO)IzQpwIOVMRn<%l5{ol2+6qJ1_4A=@(%ZLoZ7Z+>O%th48Dk>) zLA80(R%Q32p2i^&aj~?D|8#&3*#%>cX4lDap$scDHI1Bh5ip<1ryRG|ZU6)_Lwtm9 z%n_O6*k}CMGN{{9EFB@D*%1IB#hj6RK9@@6QfYhe>@^zYR`b~S0GixIkpiFe|G>z@d?maw<@J)4j=y7`Ag3nJ_-P> zZU<4WFk%f*SijjgI1el%M3XkG;2S-~%!&?(zzHx)^K=*+$mP;bDin!&qsxM6z=*XL zNeKX!w4r4HL^n;6q42R)GV$jazgrtNz1^x;V9)Q=I?YO}K0Yv(FxjnToFPsRkNnY# zuio2T-*1$2BIbak7d9SqY4k$XK59M6<`OtoHsFT=uOeOrio+%`Q#SFEv3D9D;M(xk z1_RT(gEjw*_@bT=OgRDVlE*v_vA0V`Q6KMxu7*YuOrVLb{=vx@P-m@=?juPag4nlW ze~GaGW2T+9xa23gvrXrkb5``RJ@xHdmxS`f$9bQhdoOLVh+kt;QT@JaE1Di2J)BOZ zJim+9**ud<&yCL=T#+Zg9y1@q)BW83B<@&??Iiu(Zoj>r%GLF`=Mk~+@nxt5jz|Ci z0r74a#sUV#C0M-7k;FCtApX>PQ>+*oGUc56yzBFBH}u6SrphSPCg_2a{D6y0HiE~% zsdZLEuJ=Vy(5<|~T47^sO->ku5OR#|G@rY_jR2&L&KV`|I*;>I>u{cULl|<+uLs5+ z{;eq0X@sp{4i>_03jHp}#9*68t$+;&J^sZ7ip@c!WQ#fB1+||z1_AMq!jM4cL?%>9 zWkLf&eaxvF`mMmr1U@H25!Jh`xJ|3&>I(sx;~;9MfEc7&J_z*OAyarm^;Pmp=BOWr zB+sJA8PaKIIYf#-YN;kFR7 zo?iqMghAKuGDMxZy&6B{@@WKT%mBP(S zd7h**LqAh-;=o8M^}Vc7O-eV=UjK9nwalM7*@H^fVIcr&H;$aIrMuaT6TP{kwZ^H0 z_9~AE5osJDQeNxtat?8{PtO31VN8JN#@dY^eDH&nz16Ye*tywfX2*`rjvY=psinQO zYICpL*eNxtxpd*u(Pv*i^+Gn40RTS?nR4bahQx)OqHO2Mp~*k~;@|zw^WRz6zF%oJ zV$u3`-D8;7gQubXYQkrTzz9OHqJf zGJ+EWan!1ymUVk1q#Tz3Dy_yZZ{2?D_Vs$ZMb|_*66Okt z-`(2$!N>3I)XFcPI5Acn;Q%Xp`%8PfBZWdPmENh>UB)iX%?)I;x_Lv+*UI~UbM?yN z_9hX86fSOWO$-c-7PH4EriXF`B666MO{LPVn{wS!z4pQVyF0b=tHlAu6pGZcRUV8PCDb70p03ZNKL_t*4*}X>N_SVYO z;OK6>`Qy(%*{M|kAe&A-cjWlrdH!Vp+CU}0hWz8Dg&P|iH#atN>2xuZX?DDZ*ZJx7 zPk(y-Q(Y3rx$~D--tTmMPTX*mJV z!q!^L@4R;U{L%55YwP!)Ju*9-E9}%N8|AVe@`mRf9vS+=sdMwQCq*J$K^Xt`#fx7# zcdpg#W>e{=*Eu#ena>RT)h8eR>h^U6$fi>DPG_f9)AjYkFyJ9WoEjSX{^c)xWB$3m z^RGXUXnxQrCzF^d5;Eohger%6G+mrMh!Gto$%6gD%j|dR(Va=9a_LOF>)8bq{`yeF z`pJb+=TZUy^uxeq&QN}6W+anwU6+M(qZ6)^zPr6TGcY4C>%R7JvlVA zu(b;4oSi<}={Ehat6$_g&e@sCS5H54ZS5{YHZ?e8wHRr3pb>|$3>gKQs~Vv(n-ZEo z`p3jw46$D~nJnUZ$5GL3hA?hg-ZHCDtW;_Oa?TwmqKk`GkJ>Tfu`Q2VRBP+uHp+n^ zg`VH>g04=bBe5M-U}ZD(o`$SnNdoN@=etPOft9A4Vl8Pa_db-9fqbHyV=vWo{L~?-T zW9Ye}aE*RZ%z+VWsD76XcxXpd?`uW8g)Izar|CLa1F9zxh5dG`3Xz%q;Db**@WnhZ zg8n7F3mLL+UVP)PKKh|BW<>G6d-=Ql%J~$pN6N<_^NBtEpQDiqV)2VQ5ADC2new?~ zss9mPPu!$2$7TbR3k*Vv^^)7n#d=O!V#u6|< zL`(hio)=;gGNxbj@5$9ifI@s;1>-$zHHnBY!G$G3-Y^d2J$?bB|9`wol0y{;8Ud66 zfXHuq3W<_%3KRLpEn#0Ca%+pRE5|^9IXx6ddkFDR{_HTvK6(lSJ62rao-3_(15HTojldi1<_<#WhCJXr zEpyTer5zG!ob8JAxhw_;B69@u8bi))GurBd*l$`?iWEPHg(7F8Z96K10VVE=dTuFk z*2usUrxfNel{?|VlZVUDkUoaJY8e#>!WEiHjLC*_Rg`zX*J-@_A%hrV=A-_^oVctI zY;7_-%ru2K&}gVjWYJ zR#CQ>21#RQGx4hPHB={4}=WKr>KptY7{%VFy+~k>RA@IPUu!e zU9BJ?dnO%G(VF!o$=l3&&>})H-(7Tm>XhiRp;#nqv|4cirHYRUFC(4iRL(2SN(0Lq zA;&$JMm3tO>WODFQ+HI}66G;eqYQvJg`6Ces$3D@Vq%9`CszesXy1!^zuGxuP#Ga( z4oO8zM<oTr}0M#~dB{;7wl0Y*~XAk^I? zDBWgCD)a{QC`e*fX{cT07ytlp92Sz%giPuaLZx0P>8Q%RtR5aQU;My-fANFA`slBA zYkNn>k9_mew~kJpYI$BRo$-QBE|r~~o1YpS*{YUm?dGB3iLBB0KvN67`o}B6vZ;JN zV~l|$v@int*qeJI{upbh$m7UP_G|>qnSy-8c8g39+)XV6>ysPYN-fc9m)E`==}I>v z8@*O!YAa1!M&aBE6aCFjcTdUT(6XOYcd7z`=w^r`|D3Xy1B7dZ8bBgl;;QEzkJzYNJLGq{qfTM>+74PMjZee-Og66Vn6ua z&i1FPE8oBT%C|3G27r3I^Q$|zudS}-Gnui0;$E%R?)t;|!s+R0KlInj<=t8x08);7 zc4qdC`RDvFNT*VVM@BurdwX-5h|i6Urc>#Zn?i!YT=t8n=D+vc%iGn`^|kxibn4{P z?09i#d2eelm;2sxm;e5&uWwd%T3)y9ceksx_wOy%+a1QRkjduK>78n|6?%wxXk_fW z&%OBix%sTpe77~PirM_7Bgckvna#?6+Hu8JonmZycqrq#jKRdfP(Gb)cG~%L+Dsfl z=|EPl=5rx2A`Nj*U;G99HXeTuf!t?w8L# zb9^GfFK7mv(r;9QO*;rx8Wc75w98os7h7)NzWA4fk>w2}M1CIW*sD=Otw0jf_tVo_ z#y`uW5O9zHs_ljp3adOMwIzXN9f8K-b#$X$Q`2-d93cI(A^{1Z0#z-HxMznV^C!(2 zV(4&+swkR^5*A5SoY-w(NgipNR<2@}@*Zj?lQzkE#7NDkh?qhVD1#Hn=w`1D4l)$e zK0s0A>_j>lM67)*j=a^vs)WjblolIUY!%CAX<4vBs7;w&4;eVAsf^JrPd!ENNxff; zQGZNh$Nlip#*7*#0Ak9ZrC(*JDi|}L^r26-3+p{Fso@>p*+ptM7K7R&ST6KwG!3T3 zK8f8NV_rs~`&bov-$1tgfNF?hY(82Jm5_&~F4WhB@bH%zI1hcd{;B7b7jIbgvAj)m z+$*PEIWji)%bUO2DsRq?&3^g(m!CU!Nq^s-Xcj(i|NCG(Kk<5`d<^(`{hV;-iBCmH z`u(?Y44>Qe_zfF!n-nG%<^=FvTNMHw)n9ljm%!z0sR#AB%Je8P*%7Ov#{(%;)u*v zq#+_e#``x?7=}b7>~97RK*))QA`yXATD{Cjuc2_vg2s*P4pXMk%g-tv0cku#qnO$dyWRVBxl&*$jTyB!tQ+< z%k~*O+-ydj%)orlI4?yn0Rk7Ca6Nq0!m0W|B8}#-p{Fz{_({6@fH8S!QGz;F>^#~) zx)>)R7lBaYXRp#OtzW~;*k*#ktQL%?8I7+NC@{cv1BLdDM|O6VfR0P zWk5L4BuFbr!XV>*h!DYL$QTwg1I5e$GISgleN=%;^0cY~n+Ul0khHwg0T)^^A`H=C zOwg>m91I+w2%n6l_*7bsPLl^S%Xzl6lF^x zV?wkov>amUp;kx4+B(^(XdyeG)C3f&@K7uUj4oL=J<}{hRzd}RvlP+iWW{8f(hTHs z1GyY0zFpn3T9`$VVp9sRPQPRoz`iQY@@9E`tT-OA4L~`-ftp@(d2e}be|ceZ;r7Pu z?dnbt1^{qu;^^Ob@q6bFUnsX4Vq`kPCB{Wyjb3w1YYV}26Cm0H0@^!iFH)vz6-O2@ zVG74Df~0H>sMNb+D285sRV5f>U{W%0dvqz+uN?xX;jKv7Ywgy0X@9>_zrVZva z*DAGki!nA@9LT5A`E=@)lc!!jamJAUwF3i)bFMr|5vWD)8s@Lc6^_b}tQ?f+IE<;R z23C8THqy_Q(P*3)V{PC2ct&O-BbQDO=JJ(Rqugwin~hj^aSq$n>UOni6%Mkg z)b!9uHl1mAy^h~?n9~jXaH*;I;%+Fc(2W`;+< za`qYKup4X3Yo&dLEbXQ`zE^9vcWc#u`sUyMi+6rGF*sCjw@S^1h-PSc9so=ajr`He zuU?uva%*!b<)(_6!dhu3;NgYC$0i5I_8T?N_k|JRI*#L{7&6y!86qHZPMo;IoWXp4 zY@pcmJW%E|B4kqTP(Hs^MG-di+L?2I_~Ms#YSn7HmU1wg%H7)7{P6zbh1t2+&&?m7 zn1Vi+LUKvrmC_jJg62#pRPu!Kk8WKR8bz_K5fEH-2C})7<6;J1JA3Bq7v}4ori082 zf?~TfGd$J}x@or`aHQ9``0TUX=b$&Z$Z{-l=1EH&N$Obk@#qt<_~)n$Ev~S8%Q%Qw zt??6(Ho0Q#Zvi7Pl)1re8VwIaVvG28rjRKF*2a+xk)@lDyM~VWV3}RPJE17=;Lh(uOp+p?P zjoBP}?}~hE^%W?`G)op2kWO;FNZQT_0uVkG-Bp^k4N8en*NTZe#z7dPrP>ENeVNy( z61#R9n0QcIQn`D4?DlUDgF~sqH3_~PQiSzpuzqbv_dHS;!9nNH@C+wvb(Jc5=Q43AS zE=NcM@rD9MV2=MG54*e@Vcf_kv!3+?pvP`WG*|TT_kowPOp>hJKEBncmtKyF%O@^h zK5;qm=2*#X6dn^kPyRXaddz$bPxoirBJ9b>Kwt;PMxo5##xXqo>&coldBaNNQ-N9w zjR5Fl%QN*9Lmtu1QXu}v!$5=L>PFH~-Q&GWCzQsBx8$KNZq$b(tA>r9^#o2T?<)gE zxzl0qVD9`pr-lwDLaRJa`3*^zV4x#Li4za^K;6Ajwj+kV|ELt0zVEP{0Z-H+HkH^yo94zMz_=QN=gU=!B4bz( z9i`Co0RvBXzsm+W<6t$DC9o1N1&uWv8oveUS zj6WY_de|OwpLnlfr?3@9BqJjorrG#%U@E-ZM4I%Q`^FM|Xcu&ntJNsRh^0#hI*ZR3 z(>g+?{n4CxBdEJ3Xz4`Y%mHAs)?!uEr+2$vkveK}omyE`$dNdp+UHd?iB&~%6^4!@ z6?f3OAZd#iEg=+#G-TWxz@)SL#^R_BzO-n1>|?nC8Ic{*2@=p6e~g)7pjS~qy9I<& zFHj`u`az3&RH{e;g=$pmciCqT+pD8nGL%xb3Sw95s&W*`$2!ch2x!3cie~{AYOn!u zA|xeeuXDcju@NlCiiAZ}?H%SIatp5*$?WO=Gn4(X!B7kGT z_7b&HJ`9GMR6((b{z|j*>)UU?dHv0LyLo!%%s}ot!+D`9g8>g(Ud!{n-Rkz+x8L3< z#gi_aKYacVU-|vxlgBmpTrukrkQ5yudakyb&0$P9$>RLG2Qp!LHu9u9B3HfB*{YU_ z!dyDtdn-d!>2-{X9oS<`u7ftmS+yZrCb{+UrQMys{P?|kr}4^(lS7V!h_z1p$|oQG z@Y4@>s+HanH-%6>z|GC|&sJAoJ9B2YUjN0-Th(@lfS;b4dUkHM)M~C*YEy%wP0zc# zy|Le@`+e(}`VS57@c#P98{?NrMEaAe2CuFP}ZbIj^)@ zxpZo~R(t2pLdf~~Lx<1I%mraMlrOw;;>=LK(CT^%n;ZA{w#Nqsrw0d0&B{-%U%Rrj zEaC|Uve~iX;E}P36O&V;h5XNNe)iG*B|&;R>#0TeQs z*sE;*fK5=40SX|w4xBhT2neAFPcc+zv^NTs%13j>6j!5X@lzp{$?4YZgH=3&2F%C8 zo1Zi)5r~*d_Z4yV_Pz_5tu&|&JZ*r*?7AK*J=!ZgLx#Y@fa{1}aS582_BS)eM4twM zAYgEmONm;&IS_Fr6l0a#^fYL1P;75XJ5I+Bx|Wo zPS`hcA~}xbA%m&=m6@u1zBZ&wib-KvvvHFTqJ#~ixYj0_Q4%{30At9d4^2TQB09u@ zShMQ^9%&!4^d=M!OaYJjL$t>;>97=wz>aD#>tFjfvAG;8dL}lzbT0ZnPBndE0t`0qEWDBX>om+@97n z@Iq<@fMH}C1F$V@&_`&wOh4{W3iVO=F`htVxey*$_Xya*Ik$}r?Bn$RJT8fFA%>i= zzajVp&yNfYF9^DUpK@GHdX<4}NvXtpA9c{55y%gLqL}UDUP)36k8?%w4TI8%O&$?B z0TLlV$a!cq=ryqodO=3{0~p=h*q?gJz%@Q540o<1XVl?bPbiJ+2~f#4cUXLheuzdE z^8O+pgHSm_#DE8hEJ&pY5UCMa2COs>nLam(Oty%Gz4)>ClLk?3JJ@)^ZNoA~{g8=< znZ|E9ak9zdj3H;jC{GM{)Iasw*E|HS@<#)iuM;6DopaSe$({ydf+>^7afD#BMSV)R z-SEfbGL%Nt%OoD>Vr#ib^Y9J`%(-zapvwiRMrz z==Q|kp?-K+Hv?Ih)fUn{W5cN`sa<^Xi8d0hAHhl^qw8gE;-N_RjEpfc*%*q`OLCPI zJ6;2UDyOp|RXX6L-Apc(6IotWPF?G`sDOGsv&6J#QfB~spIY^R05Vy}O`$&UYbkl< zL5r6#F{xv}i*q8*r3L_F5L<7}KrpoND4#&zhp}&{5oL3erHSy6D>_1iE2=#&ERruK z&H~fXDmtP;gkEW-1Hn?>8EomCDhv zG4&2+`SxY8yujbCR_^U?mzy;QhtjUw^t{FGt>4_e`!}C`Tx+!eV69X>Ha_0!c1w-s zexu=s(jSv@-QyEe=VxX^&a0hP#&y$7nyX!FY{6N%ZWpDpiw{C|- z-N1+FwY0Z;XKVY9UV7~dCr?>W1*rudP}(+f91#bM`k6YuzgMrfx?MjAesz1{&em3= z)7GO)Q22pxAeVdY$noE~aOvpS*j{}<;Ne(txR}Y-J54>@M~j6wo_%(!Qh#r8VXIR4 z)vX(@47?aub3*y6~_P+^3d?d5t!p38uNz~ zGY5eYaTQ7}t!T$_I0*+=f;&UGv?F9GyK0 z78#L@22c$L4ij3lBJvWx+YX!SKjU9d5uhoMM( z(jlO35Ri-mls2)%@g=oCj_D{qAM}T}L@A)3L#+II*y@ERS_#qF1$27zh&450O-V4;VgrjgFh_dT92JpC0eaQ^2NruLq9%N6N?W`TZM@W6-lF z#zoR@YWuIhy`Jio1b#g9W%CHE7`?>fC|3tp+q3<2I<)OmwFBHC4&Yd!f(r4mHhU5_ znHBu^h!^ot*;9`khoQ!~unFatW!@(X0EC>Bi}PNAyxIbNJXW%|HFb59?9 znO!Zq{gj*aR@WQM<`GcnH6vppeeeOVw!KP3hMO6NG3I{w6w);7f@}Nh31V_kfzw|t;KVwyh^eC>3@~j$lsfadFB)^LgGD40=d2C4r>Nh)~#u;DMLX8OGShVB6N5 z12Nz{)PS(y0doRB3_{Lb$8i}Gr*P3xn#?ZdwaB}`94Q0@js}||?n&#AV5sr7JT9q! zT$V~_vO~Fnw40HCQ4Sw@Gm(G*Eb5j<NXzJ}U51n{UsQ<8Y`!D|GAz(60a!Fkv5B@J045h)1}Hq28vjGY z-P+DiKl{v!DN;z4aR%82k36Z-0IM^@O_HEvbev z4|yPbPzf<^vcxDw`FdU7J)QKRl~zrSxaei6(fHw~AN=Uk5B(qnfUB!(cQ&{DAoO~W zdH{HD@!sj_nd6faV_#kl001BWNkl5r*my}d3k?# zqr87*<$l}q?4}qW7`$}!xXak`-u7<2mUdH@=8k;r{Ie&gW&xnxZAb7yRGb0?02s>U zUp#j9_n!aadyBV!cKx%B^8P?BJ3TydYVz>qV<*lXnoa0G1coe=O1n-+#qr3eIgF(o zNADSSh9@a$BGcWojN^_Eq-vdd%5@#b<)pfpDCIb#h2rGEU^nm&cRHnJW4JH~I`nGsh@MjU7i$N~=uFPJprxoyI;N?j{d=nM%p#^>H7?~4A#p+oK%tRN3@Po)09qDc2~zvUqEiiE^!U|0rrdx^3z#z#h9bi zrt~Hy+gEwMnQ;7sJP>YN&N-nrMAepuR&GYisi5dkL{Y}R1=^zPI1Xc+xE}@)o1Tn& z1_9;r4?x64IxdAiCquNVD-T{*d)8&EZS~K#BS#+eWc;LD=!Md$j^xnc><@ltlCH1# zF;WsxkrRa4mWT;{5vV09=1-7+jg$t}@kAYtdKysM1Dq6@&sq%x?(Z{0@ z9e7bUiG&;@=e37BW7!BA5a@ndPKJY@6B0*4Tlesx>WFbkZo6p$KL{T^ zi$=f8>cJ;c{W8WVfn7Y3c!;pE6c37oZUK|FZ)lalDwxLP^vBAJz%=@4k0Hq!WxyQf zI1Yp|Td&&B1aJ(NJdXzWh`7waqSR61eGx8>t|pbD1CPEXx>^0)kN?dEl-bx zL>Pub%s(DYDSk36B@klMR-4#hmfgZ+>Mm_!c~%ob7N`yt3e=a%_a<7?)lx@$L!x)R% z3rV)Vu@8lROnjyR7p1k$jtZe*c!VibDEa6N$Ntzem=WF=idk$$l@h>gxGkwYnAZaC&6A%fniy;rWdq z40dZJ*KsP%{Tr*-OO1Vo_{{A2Z(aK4@yX-ekT36T9Gg6Od;Qw=)vMjW&!uyxrq7(7 zIqe1Q?aJ=V$n5#q3;k+j@K%*5UJJs+iJA5uBsZ77Yr7e?ed*MZo3*IDKz8;U^}qc1 zy&rz^Vajn%Oity~nVTDHjZVj5Y+`U|Vqi#oG2~&#@0Od5TDyI9b@}S*vVP`Xz5cW7 z*B7?7+J1MlQstZv=kqDo*=sZ!?M|!!9pCTxJ^&Q5*^`sgFP}JbbbR#2`qK6FjUWt$ z^Mwnu$6h>sW~?|+@3imlrrX^vlR3Qw)(o5|?YLh(cj5V?r+#+*>TbRIjSH8KO-wKC zuHW9;xV64HJ39K(iPMAmV$g}ANeEyryKL4dN=a%+1%gy@i=)}?SL%qEw4=Ttk2dwyu5x^v+ zB*}m|ifFDKhuqG?Ei7N1-`wVS+E5)LA{lJd0H&y!&T(XhLr=~&Q+! zQ5qX99FQP5K(m1cKs0(^YhUiZoF&6u4-xL+k(uYzt))i~Ks;2PdroF#WUTI=yMHbs zQXy%u5riO#_%7pr#%5H=9wM5{Hbpd%dB)FL5rqV%l@LbznCc0LNXS9B3Pm+`bBEf| z214`$XZc5fqzTQS8up8q+3cNU#8ysYJB*ML44GsILQW2cNG$|!#z~dD<~#6cO7>7y zEm2~QT#@{2ScJjnJ5f&r1V-lIebwVZ6hkv(OG4~ZHdQkL?yUubdNhZ?HCA3!M8siL zv&eWl&0bOQuu$AqMMwW)MgOCcvUwHQyuz5FC(|q@3t~4R zuz}Yt71e)^ZZWn+ATa!xN1)tpQrb(35(KVfc1HW2x@&QU?ud^{1If2!?>m!)5h&OURi!4)hVOhSuH^=T)*XxJy+U zYPWD!W8!lNF+2!8yY0v3*W2@Jcb$4u<+05eJ?DY@JpbR`@{su$9`E;swWOVo0lsIW@WMm&XB(JGa8D0jwLdx9o*b>$E33HRje-x`@S?DJ`=&qH zt%Zo?ncU1E(1eH2`pZ&ej(wma(#^({yK1_>KRG<4;R0_kR6glE5J?_5Kxw)wf}aEc#vyEuM}j<1oxI?2Km;TKPKugYAX1RKk*)$o<|cJC~cs_lCnW=kuV+nA=S2F)a&FHpj(meEZX2!5W>8?KQ3GKKL8L0>F(u$ailk5d>z!wO-&@SEY96Kc zIq6Ulf8CklzeNH}eT&Epq;?3i1%lxwHGxB4raRZk zsrPc08S6<%>=KaTm7Ol@woeBlD3C41ffLP>nS$KDoIRuZ0J~yGazLWAd0O?|TH1Uz z{pXqQj!~UC!+P-K$+PE9oH`tjZtdK&L)bA{3lzt4`p|@MG&vkkM??bv*g4v{w)xq$ z&6@|~{m<`xdVBk(hKu#HSDjor`NNn0=m#(TV0Cd7049g~0B~yc)W7=nU;a0*{>dkI zt_}yQXV=f1TwXnz?C+d87m1n;9{8yei zdof;nFdlt&@5a6T?Y+_X7oU9o+v}e%4F{J_pFO*_{@d$UuWfE_9UNH22hQK0kS?D& z`)99w?WxnJKD>SH^Luyi?(LmFvGM&EUwZk;X8_>#?&i7m_4DiNgSxJ(!BeNspI%+F zVKt;t9j3YA5QIVG!if|A{nuZ=wt45o@(PFy>-x1zm%e`a%Kmt~y12MB7!Io1=Iy0Z zr(SvT%DXpi{?%LmcyDj_Xfnyu1pxr|jt>9RuiyH~`|qqSENmVen)zXAIJ|P^+_Psd zJay{yu%^%M-E5ejJ9qK*r(alESWu=2wILS}FAxx;_X!oBLC23}2c_v;kuv&1OV8`v zh(wj6)DS{s;r;PwZL+XBTuhE(h*ez;>MC(kwI+t*agoeKABq-S70;0rom-Tdc{rKv zgiq*pVq8G5ZLO|qiz*XfOQA$$8?YqlD*~w~Q~|~BGShto+9lc@`ukGf(s&n5V2FuQ z)X_yU@r{G#jen{+lg+$HFbzPA< zgiAWAFuI7^j?NDvVT{ye1^0|ms< z99DIa^#bW@#nlmFO~}lXrirwdM5vZ25M`<{Q#AnDY-txezKJTLY3SDqY+$-QoI5V# z)7i5-v`^SH8Dmah6UtL4OvkMRt*Vw_+v@s`v=Zwf#2DPe94sM3+snXJE}a8Di5X}P zbIGBE9Y3&NW9p%obUNQe%iPoD5$YCkUG2T8C>e3*v0IfMFi|haFKGT8JBJ6`hx=uw-$EDFzoiOVXQI04+P3PuigyW4^2#tRny|%F6ObwOB)5YR6H6eEu0< zVKH5`H%dIAd)I%x@{su$9`E<1Y}(QN`c_EqpT94UUM3BXr%d%j^2ex;N;;C`@C5F0 zteu2r)J&J934Rhj7DJJ`p1Qpw6-`g)6++!MA2#Q+RrL@a@lMEcPgneeC(|$*8`Vtq zTuvgX+vfm^tVv(6y-iOij;(m;u4@%NK-(K`{4>X(B&0()gxQsWKZjWImFy3v=`=lc z)`{?7FJPY@abKdS#|S`ZSX|yAVF8Y(zQT_z#^=nCIf4p2)uLq;_fjCNm^M9THdA|y zt=!2jULud$7iLG(6zn~jOh=>9U|2UHB~%E3SSp#_NrKUWMUk3bEi3IQt;YP6T}lIW z?Mfr*hU8u{9M@RbjC8p>_`^#-LFNiGV;52q`yZ`7Yf-F=bNwTi0n) zvy-KzwI;guNIQixhn1}nW=_Tjp8z9oI;K%)ry^VM`j=P+8rSwY3zd*O@nFidp)0It zJj~n}dXyK1OJ<;fsUrw+X}Hvc=Dq9hzJ2Zer_Vm)tF+TdiO6v@Il8rd^EX$2^Y`!k z@a=Iqmhdg;dY zy*zvft=Zmv*ly&|jt=5M8dB_J5k-_{kpNPRy=dEbTb*Q`o`eMEo7-Ez`uvmk zZ(To{PEW0@+}qpx?B3nA<%O?YeB#XN+Kru^-(LHXGYZPrR64st6O(ghQn_@^Gx6{ZFpmOrTrcv973P?t(#%WWG>7_ z^r68W%uJQ}ev+|yp}yw7{Q9@Q^ZbiHdgoW~-MI0@$+J&voNBl^n2c}lZ0;T%e0ulZ z-Mzj2QI5TM>eQKk{p~;a{)=CU^W@gfy}Du+SzA~%&?oK+%I(9swVFP~{_N+ORQHAZ zspKNIo#|#DBd~H8sryt#iHBrZ4^AwvR8&oyuzPg4wpguHwH-i&ROjx(NP1`C-H>*o zEE=irYLY712dbipE(VB~L#TrRV*iUx^%z)KQxyfPx~c(C4Y9~&ET;+ym~hgVxJv}0 zhkLT!Nx#|98Y7a$U2}NXJyflqz!CyigdKt-0hSo+nb%068b{O>A#Pt45r|BhsmNj{ z7OQu(leMMX8Bu-7J7QIdhgu4QzOyz3N49{x*dN)+w+k+7VGboE2S~tz+(9ZdLo*gW zMhr2qUQo06D(N0GN9siv4=13JoO5IxLLAg}6L`vDpjN2D>noZW1l6+JmZ)4P53~T& z`zYvn1@w$-^j2|w=*&*hegt*(l2y;SHJI7PgF<2ohZ9VUKC9*RU)QzOJ-3VVEn24=Eaz=-e^fK6!^}~~bk{TU zG=$M~vNT9;yULK!S4|(*-(`IAx&2a%l8ae4^Z>KAJ!>98OL)Fte>vTv?>L>+OXf{v zoDGOLtcHjfcx*3KCa!M}pIb_fWxag9ySBF-t-rj^Yq#g;&L4CyB73f2FEaI;5sy*% z7hN7GAA_JKG=I#W%SZ(_WbVJESlI7rm@TU4RVv?DPgx!+E+zqwu$ zX9a<%$9!s0JJ)8vD9S9k^POjqY46d-lU)8adc$W-O+hd;)69_LvyLC%mZoXes{F0O zkvmmv!xWX^MPxLcHWCnVp{i@DEJL7y5$OTR{muNvK(mZPP1Rz(yinIMlZdk-Pz-T1 z(y%N;tB+E&H4tL=5VVuVb^}l##vFk}@eCis8@)I)d?o#Ahqy(?Ga0aQ2Nw#YkMW2~ zTA8OkrB!3_Bt;PeYI#vf{t2N7@lL<0L273ElF5!VG9w|&F6}K?eu~0oroW=Pj3t{` zbc{7zF8&un5M~5IiNl4#vO}tyVTA9a?Y{|05|WldQwOQ*r-Bs3)H}4`5Ti_0m&wC?$B~WD@L?@uU-*PN*yfM+(~THN*&i* zx-tnOj+^oIt?P&5qhEdctN-%;Pmd-?zg<5|_!qA~^9|h~B=H}zF!S4=|K`W<{^XO} zpI9ZM$8I8y|geG#R%ZdV3c> zym_nj<;9ItfBDVt{_#t%#$W|~e%D{k;A{)~OIEjYYwJ(G@=8tBsA<+0R{>#je;W}u zmQOr$_Wbg2!FQL=eQE6=5;fWK;3KSvf;B02S74cj-~>e#-lUC-#XIcGii>7_ap~L7 zJp1g~vxvhJODjjy@y_A?u#&Z<3xEFF>+f8@@#A-YbLI5;fAQ)!Ub%ERFvnmBNKO#h zfT3+nD>!D;DPSN0aan5AxhLlbD!`6DT(7tEo~Ifwn56McbdI>Zu&}Yba&Lbx#sXp* zf=I1THPyKeV4wBc3@A1QOp=T*#mt_3wQ#v_Z!F-dg${5d2vAWK8&eS?V8cN&H?OK| zkV0<-g(VUBQ8iX$)Kv^IXelVcih#%BTXvI zED?ocyI$<)>demUaWX(GHV0{6TIfv<)g{D`!Z4MuDV-5rxkI465BMp^X0|qANhQ`+ zs&hSY&66f2tisl_%BSZyb^YLy%4HcNlM=Ti!+4W*`f*^~nd_pBr1zb|DiP_qmJSow zRM4J5n2~e1N93K;+Kz>$i;VY72v=Hm&6cj!Cr5QgO11lL<7qh{`UIO;Wg66>f@ML3JTRw* zJw$9mV8IGCaMiU@l#47IsEk1>JCm7^2ZYGcfk{LHYgM9dbSMA^)6w4KP(YqMa}sf} zI0q{NME2RS)vZj!SL|!CC-aQVx~akH9BmqAr9eEhkosW9iye%ZXAhN*W#)V7r)VA* z^RJPh=re(fD9X;xi6A-iG;}C}%7&=Y*0M?}Z%nE)(jv2akS&??XNM2USCw0NynUT> z(vz~H^pa#R8^1+_sv-%901XEgsj;f4vRDHE^zW$EU}9Zxf)Xi=2l|}`)1dhUXa2w> zdKO_wUL{r!)AUoR{s9sJhAg!sa7>8Twwa;Wh!8>$5!pN1+aK*$RBfzmEDjdcCC914 zbGzDG0{Zs2o|_#3g-uBDim`i5^iKEsB}lev%qzz9lTK%mEah8We#`*W!W*>?tf)dH z76_I^SGQ_s4^p}_%5r_g1P~*Cg5NNJ8JLA?)T9_u(Q?AZ-1qX#;igs=+f-X3Z+E*h zRfA$-l__ZolbJI$raI%kF2Kx{v7hMx%8Zs{VP4fs^W<__vK517g>{nzm$xxxf)YQ9-8MX`He&TtDZU-Edu zOElCuXXo|~urOFSw|)*0o6t;}Nw2S`Sq2_2-uzNl$uB@J3T|0kbLtEt&V|MgKz#P-5xl$mT za+8?QW%<|ngIS20tC`yKGWeNtuHdAZ-r3u|y}M0>i-Sb~0Zciy5J@DcMLx3J>3e`t zEM~ccNDqFbnrcKkxxD&kUw!TQ^QXsCzObB z2IM$JeIdk!!GHh+*r3eubn@xF+tVgoI(24oIB3Z?xrxckpdh`$lBkPNyHTC?iN`hm?e5- z*%Z6#MrT*|Nd|l1WB=-j(@${}6`ufO$}!i1^gU&2OxufnJ1eTvf}NQ;xoByMJRl@T zrG-u`_bwX#M$>8%P=)TN-rZP5Dc|P8-s4P?P+XAe@W1P}5_31|1Vg`lsCb0nw!31Z zD9s@~#RnFc8t9ui2eP=oO~t)3GyBHmoKjgCFn7bO?Au#7Hm$fi`m6xkKqSA0GbXoY zkC3kRdf#FaT_Kb@jl26S{ZPEV);8;No-^gYc;C;x|MQ)NC5tA^=Lt;Q$Eljy_A zjDkQUkO{NIRT~dmk zRu&!48;-4-!M;`p*Hm|Ib!1i%NgU%<c5LfP4Tmu%~2ED+Wa{3|;3aU^+kA+6fnt ze78F~Dr_ZPDOn?u$C#}gkd%2WNsEy($&8Je${bNZI6jS1X0;MMS7vc1d}Xpykf>)G z({TA&4g0EWdxvBPK8h+^$w&m_+uh{@ANM$<}Vk|uGl0AoQ0{uh(Y6KYAx1>4z` z-F+!bF6Pecc2|B@{{=HjUPT37r^C%G>=NTyALvW#;=+_2H)l;(NDhGzOug0D%(Mg% z^+>BDR_u&bBFqle^~0Ir@Z>O_IF1stm-4_WEU0*s_g44oMH2FoDi`;v&V=(IJEiGI zI)$zAVi|&4qnWHATz=C*NfiIe9-Ro9_PKCfpEF@%LvjX)=-*AoE(A`;fFvV%$ySoP zg8@X;vRQc!Y|yzIny@6C)xF zGi`Nw+9gy25fMmv=bS2<^DzLSZENOE2s#5@)w#`Be&~I{mT@ILp3TVNlyOt7{r!Q% zjjbE+-FWY}*WUTy=7-w{+xF9qt!w}Bt@iWYyZ-jla49e!O%CHX>r3meKl{y%l~Zqh z^7E_rKE1nl_wL?ZyM8nsZSLQTpI^B6!hiSrU%Ytn#X(iy+1osI_xhx10N}!j)5{Ah z+lPl)Nk#{jgZEDtBI+F#iImFz9MM@Z2SDuhrqjy+p;#E^{LaFAP8JZBIH8 z0BJaE9qb>Br+cHLH$VRHXCJ+PI38WtIQbW^ee;K3c_lF4+uw~E{?YVk_h@fe(ZXQJ zQe8N4=FHl97s^9rFqiiCX7V%ixyMpq;aq0PENYHy&MEysx1-wAPm2Euu@aEL+$3UE z+ZNRKT)iS&=nNuyi#TeOYkYm?lt)*&zw}0;f+wZ5mFZ$Owh)Y&=S#=TW6p=TL*4gU z=Z?{KNw$rP2nh>U&^W8raBJolDN;kHt%bw||CaL^-7XdhjwFY+iwHAPRpJvx57^d@ z?gCA|6@y=+^pnD2g9LZr*s;l)Ud7g?exV+VaE;*IiXY~MLO#?&{ zA^#B1@6?OLdBwp0UJ{r)kw{aHA-FgO1`%mO06=3li$*cTh+qQrT1PPNl*Te-Zxs8y z;}zlcSa*u4+G2C1XEVyCl$kx*?{Ho8M8b=0TL>W$mEuTX;DL&E!A{;N>E(N;Mp@KIh9arY3tUI`oPk;MH^U`yQz9G_6tF46z6x; z?LxY*Y|U1^QtV271%JIs*Om^teV}{dJF7k4?!`DZFD+$~-1 zIC6ifQ3m0(ef|V@2BD zw}?pKFqLUzfT;*`)ugn@g`CYCL;(2V^D%g?{|7C-Z=20LIRk<89S_lc(S+v5l2YJU zMg34DiqMZC-SaVuG(4S71829#`6K4{20;lX#2^OdNi&%q9t7u5^N?XEMH6MxOu1*zc?W;#q0zl!&&I}?bXtHk<=whHjI=n37nHNp5v^o5}bjbm;> zMe@zsAO`QMn~ORPrhh~aBm`*dvA%?m08Pkb=z@KUSE4LW_LY!Owzjd&y|SQ45NL@$ z02z&?_(-ZMMD!Z7@wkX_C6qFu;|B6GDuL zCqmOLvJnz7syD(jB?-X@JfTTo73R9kb+@{dQqQZ0GKqBimDil((`uO3DE;3`fG~-d*a#>Ru}OsPkmMPdl9BG zZKgrOpc+)vn+G7<1R$v>Mpl3sCsO4>*n3wvZ$ZahkY-roGt7z{wT{k292CKhl)c=+ zQ;tx`u*Cv>7V9HDo}>G`NHY?PJ`6eWUd`PXAuvqYQ{r0}N-_99(pgS1sU{?SR@-1{u~AKc z=5yeKe!zu%+0NqfIw*Z}X_cQLKNp5ZO((86Ug96~SA&R5IUG$Ui9a55gb)^ECe9iO z5w6Wnmu1&@JF$%&s`(s~9k_Ulf(E!VA);Ba{H7f(H3^e(GaA$@fWpGJcCLMP=aY&C z=Qhq?yZ70@|A&9tEz=>KT|aYv zwC@i4nD}a>4G)!O5?j&GSBw!Q?mh*>*l`Occj=T}1`!dbp?UA-^*26x|JLr#&cXhq z3A>}i&HX*QDdr!3?ea5Uy>#XD>gv&S`qPg-eDmXvN0X^t^Wudk{>^v)@U_d&0Kooe z)G`jGse&;3?dB-kX~DSpsitOqN+vh!&9M)uR1Foj4&Kmncg`E_gkYj0pq? z35g)Ip-FY3C|)h|z7a(~Yl@`*LF^sVTebYP({@w>F#-UTMzXst__-lYZ0v~N)aMId zbcI{`b`-bNey@e{)OA{Z@R)G51nRsF5D6A{tcnaiB;aN$ExX`9t8I=A$&Mk;NA3 zh+#|spJBJ?G%21!?t(%>R;o$#EjC%xUc_97(|iVT$h){F_q57?(|d}{MDVqEt5uHz z+n(*(OF3);TNiU#VYj7zdJ~ZWO0BnRWl-=IqvI5l^AWl?_B0;y)b-^-CA{Oc?S2m2qr)mF&_(c_h3NbuF{KuTq(|!&i8i|s3p0s7+Ii;{F1s+XDhr4^@&CR-D z57j+l2^?-8?u;j+Csvmi=78w;Z7osCddu8o+X!g-4Nn#?!oZ2Z1USJ{V6!5s@I3+RF=mbR^L?XSY zPBRrsIA$EQ^{crell@GDl8A4En65`n`H=Kn)u9kk0Hu%b6%sg-x{@@4Mf1A~3nNg0 z_quJ|ySF5O#}E<$pN~OUm}55MxStad0p_UxLgmPCCFX?CWq12UG-)PvHK>#ntCd?N z4qlXNQ+|o)6=q<03xLxQklu-yad46D+yj7yo9)Bx!|~y%)l;jBtHl(7d~25eH665| zy1Jt!^-Uh;g(*awgK`HfO_xN=L<(9jq69?iiThAsRvKbm^Vn`Mbtv(pcckiH4p1o^ zeo)>0rPy;=dG_PHQV63J_a=Qf&aC2^r#7|{(CglyLx4^(6R#*`V?zl9pt*XQ%jMks zKbVkT)@<%ri)JM zVa752Ty2V=n!l(Sk|LgBYdN~2A2pK`%gY(xK}eZbFh4AVoVLUGK|#z-a4eK*5jwfD z*p~!ATBul{2_((t&2TM`^xVe4p$G`o* zuig865~j~xc>eV2nU8OMcy04qi#~g4xOn-@<(Hm%>G=!KUp#qnX}ElC>(=$HJLlF< zUO97-nLoJo$<@tU%L^-rw0E?(d$={49zK8mnQuP(^@YKLpDoXxf9AC-uioC>-XHA` zE2ye!@95}YJX%{?dh+DCjg^fV(=0ngyFE?q+sT(06An8|2C)$_DMGi*w{OnY?rT>O0r3{=1+3{l@YNBHrE0 zW}Ee;B4tQ8H*(mZ%k&<_R%2owwlPM zh*jHfR|FDyBiJf7!=Wcy)NzRCXIj)$=~BeJZQ8=Y_|ztFkctQiO4skcM!K!nLBbd# zmdYH@ihJfTM87=(kUy_s7Mo>J&}0X+kitAxVqz`3beH2!?YkU5=dxo5{fWrOi8w1>R^Ivv;gGo7pf{>OehTpTYo9%b3|h!DHdp+9TpVe zV6=g5Hn0Tf_h3^R9OpZbM<)@odmCJf7bhBA^D@xDL^a9?c*-y>HB}P{0E{#C71xrk zg;S#|q?1?~&^%)-4KK{yh!C-^Y6J?L6H!E3)Fk6-*BI}ZFNI(q@zaVzXxQzC`XUL! z_GXnFa>ANc*98P{r1E6!J6$132%X}sBqoh?ji{=QLB~FxE7AQyusl!O7k5B>-@W#s zjk&wZ2+3k8oXb<Gc)F-LX*Ya=0 z+qvD}duK&a+yZJ$ng(dcWULGqo;a~lRqgB`vr3h148FIuIrC37i`{RpWmKN7crXeZ zk5-Zk+B&Q+y{pWIJ#YTWN3PFRAM^idxv{-SM&7eYyLDS`N$aKBld~Mk-X1Dmsx`IS z_Oq;tcC_Z4e!M+1T`$8C?)y6ZKXqoc6_Z_$Mdalw#Mz(c z|Jz$0C?CTY_pej_oe80LTD1P`SRH>~9;x&$&Ic-)%iP#bJ1ay)LQHi98Ag9Z^F~>} zK36x&_&qC}mmicIwQ;sWcHd_?E&4&5Um{<=7H>Ator(kBt>qjv=kXSB>S@*9Z>`%<}9@+>^MTEXtAy`&qH6jLKupH zNuLUOu+Ho6>|>Z*W%@#8q7>zm1gl&l-t{|gL3~U&qGTfxGfl*YXZIHq;?>*J zocELR;KR#UWEv&_1J_6?L{K5=kk$tu`}IwIcCL-Yuuxrhj9s znA$qf3tVDmiD+Gu5@b@JQlsW7yEN}I@PQLLy`(#7N7HBUKt$6g&YiDZxwZ zZNo<6ZL$~4_i z+mvncUBfxpF95?0K9+W{e$s-y!bbt{Zsr6lYW38)^|K8(r&rfIeGGoXOe?eWd+p9K8yvq5 zlk8`smNS}n&4{_?65lB`=DtS<<~Kk7;IH0#FwR^d;5C;FsQ26t~~RNr(ZZ2 zk1lR(yzPrPf4PPD_rjjU}g!AoJtAfcnen)C` zY3F^*GRwo=`cau=)F`1HAd0`QE-s!}URkII{!uYhS0Yy`f|0~lgtg0PtxxLD<`l<) zL-fh1G$c#>?WE^vdfjp^X;h_!(df03T;py25LCh-<^*QdVU|@r+o!}}`)q`64?+7~ z+^n&ytkH39bD74r$VP+N)m#6ZiRs7iFG8w_qzO1Hh@m53`B#V=($RE$dv|;1U}tGK zD1UeRfAly>UE5DagMc+vntnV5;6|??=0=fj0gxty0o83&Qnz{0MM|$DqU6J%^i8Fc zHA?CcY)yEMZZFZu(Au{OVp?dqRL1(F?x5i>+D-=%N0%TKjN4NMot)+z80M!NEOp=3 z6i_xce_&-HB}QK%qB-EGT&j=8b*A`gl>I&bOjm)6!9M?bjs+r%ib_^7Md+-P-IA-ijF0ZlEN82U-5 z(x&pcr50xZ%NexNawqqV&9k{Z*2M{DU+Ws+C$aZjx$o#$&(HeFxtItbE)Et()3JNa zVyMc9vw4s1k-?5pX3aN$fa;atd#@Ffai6Em{XGBQ-tv(77#{EUg|(!ej{(4a)Be>v zZ9OJ<`ggocn&zOHG?SUkV)IMpL(C4l{gXRND(3oOkkjKRqM(CrKz5jAYq`mSvC+MW zTaHzXN$?@86pnShICDS~GDNvSk05E?TpW9?j}O|E2Wqw_sXz$ab_aUYQZ{}XCL)4C zVg}0rQB~JR6B7>l%V-o14gwM|7wrEcax@A%`=im_=IknARRJNxV~EDE_*rl7DT+w5 zw6;#UjPtO~5y@m^!*BLbY`IKCBl7S(y z0J8{E)(u3xr2QIBZWS4dGSht8r6KPz8M^fPk zffc`&4)L21eXj%vVK_vpFfdLg$<7zeA`!83#jaVpKG8 zoH#-Z-$x7mE^w!WEt^e1*-O1BgG$<79LiDIK@?9@lx74-W_8nS5UDF#GY@1pV-)f(9)=6ZCFuN2b`tZz4oB6d37jxVoId2Jo4>NZQ(z|Pkj!EjO;bOIlSl39E zfze>xR{q^ZfHaofV0KYwD|^xMmU(@xAT<(Ixiil2MJNkj~ESOArEcjTncIyp;Gzi zRa&sj2Cnu6g#sZ(O#(oWkim-?i>Rz$5-tH`17j&T(d)WVZj9W3aiTLvUJ69Gx^?w$ z-~aLTt=kL3;qG|z*7o&jGX;QQJzQQ`nKa`YTQ~pq?H^q{_2k{%yLWbPAB_+Fj`7C( zKe5kyN4sx*@{9QSg$vKWeEHQod-vY?{5MCFgUe^1`T8^8I=g=EquU?d*t&LR?d-Rn z|Asd(q^7!lvhGARQYV{`>jVuQvmQzA(iP#-U{DhctGYcVUY^UlqhJEUK#?6(+0hJ2 z)EeJHWAY}w0!(k0!2Dl6eD{C(hrhkKz1977G@XvrQP|f9u&77V7%;?#?ei`}o&aKVDm0`r%i;dV2N5-qF#p?o&t$ z`6n%~T>3>NQ>HM(tx3Bl(fvNGl?TaAFe0C0cD80OOaFY<|8^$(CJ? zt|lNlTBw9G?#L@|CKToX^&t7hYl^J$t+P-;gu_97IGMl<1DiWdQfzS{T47A9j7bj4 zz@;XG)QI?Jdwv*EfxI%%&UrZdwLt)1zivC@`bXrKvV?Q+mYw@4E?OShF2tdis7 zJCAT?2`}8XuWzl3SYcfamaxPw+zOi2likua)7~!xFm*)tjeL}0=dQ;J$~|m($b1Zs z_xrX;)A|W#j@*M<5r1FqTMnD)UNa8W;Gw4{LIu+3Uo)zS9@vSp<6)mPtB3?H49~W$ zC>WlnO#)vY*dXnmhL6IxWBXn9&bQiPYS1p5hsr1!bV%FQ9I@lEmPDVscOv~RIWdC3Gmvv$z)w%B?`(h6?c5EXccN+jek`G;+70eh_mc|j-UepakxOkg&gr6)z`e^S=0)EW|dG!Fc;UDm#1Xbf_VlXH*mno z@5Eb2N{6OgiE$-)aWSJIQfy5oj!3VAOrOG>+ojkbGixAPTmb0cIZIiQXGNxSjSj5| zM`O(&kf6i1*8l(@07*naRB|cAZ6t&sEEM^o-J{Lm%F9o^^t~7V*>JG(=0`t&>*F`BZC<;!dCe{u*25=HJ$dEq zmD@Xa-o5^gh+IDN^yRZpZyjuXcK74`qrERZ@zP(s{^zGwPknmt#)}ufv^W@4G#u7T zEPQ7D+?n-r*rs#H4NDlGy|0M)`1F3p46)&g9D_vF(twr*`EB!vMM)@fq8#CVxje=<>leR#f?)d3&ST* zu8o@M@^I*6^>$yitRxnwc8txURS}S`F|#;kOg+`6vk{`X4*l*F0Y?_Dl2bxizaHq` zC;~-l=}3-;9D?ya=}sxy62E;VYO=U9b3UJ4(58NhM+rK%v>BU~gV=P6CO?pz>8#b` z$M7f3X4^T}fSR-|Gzub2Y5f>)8hf-0E?AB#k0U!j@+ zP-V?yO=?WO>XI-f2PS%NWs52<7fUj=LH;#$oi3_&8;EdNRqKmO+Xsg!yLjIKw{GjA zr~n-0ST1-%IP;5|b_p}K&eTU(#TA%LHDHQEP=?mH5r>9h2tK874DTyy6GWj9gf%Z? z5&}|EFSpFp92in4ss`?8{|m>It2lShM`n4AKfl8|Glg_F_F)tOqIB91ZbL+0;8}kn-yn(G@Louun+V zQ)a?|qB0dF{x`o3VhU34m~G4vHYcmg2BKvAH9@7n&yENFkfIIf@>Nu2JV#Fg7JX&T zhPUGJSs%(fe?B1WAfC~m(o+%GQR0sy^X`}8&ayGaQ`N%0yK}v-F}=kB4znBYYn>&i zmk}yypv~E$UmFFs@AaoUvcsW z%Eu608oz+gWuyX_GUN0j_iLV>kJ)?r_XVJ$N8-JSz9#P2qxSKkMHFs`!wrftT7FLQ*Z?jKgEFx_sF`4?~nNk5F z11sUC7b%dUyEg)WL@y+;ZcAYTv6nb?mb8Ys$h&R^jE=cUoELkR4LK;OlGYX-!&!;l zLnLximu1aumtvTsw!s1%8fls=kSO9S7VuDNZZ#o>7=n{^i0E3J!=uIhn_(A+^y~D{ zXl(_TbBF^f7U~jn#ql%dP}i48BpkHDtTX}0xEXViqr~@rYdj*NVJy8_)AsJ1?Rn*< zO)HkA|4Os?_CSd}8-bdI^8`{9zUXX)U6Vng9C0Of;gf9MgT~YFxeaJ0|?a%EW9_`y1H{UU;{#* zZ+&ok@A~b%>j%wNsJ{2yh3D6omRkLv5l={xpeUV#=$-^p8i6oj0g~)b$Rc<4ZoKu; zo1bpJw?EzkfR*9e;$V5y9Ih-bzk20sfAFR6T{`{5(PaGDy&IR$Jk8wv{G*>8j1MlH zeDcdrzI5g6GpANhpIbjE58mRXt4#<$eEE;3&1Bq6*OyMj7B37I z76-#g!;p8tnJRkr{Emm3)2ov~rIn7o4G$y`np`UTImWh}EhF})YUm`KSN$S3lo5Jb2})r%tb)+*n>i1%YNw<?aH(N(?9#c z(`V1epLP!S>#DkN;>5G(&X1>4M7+3hG8!0kYGnmHQVconcQNV3AA_^{*!s$F)t;2K zc2PMzt*VURQ#Sx_@JkJ+yepQH1Yn|kZ`&ZnPPumILkF~vfk-8%bKdP8nvlHVsp{Db z{b?p5!dOAo$i!MUbGkw&ctC|8!89H&LqgGuG2F=YbkE5+$L?cRO0d4_HE9a~VC5gA zHwj2k^Q5w_OL;Fd2N7;UI2ezqkUyg3GKn8VG#FG#oMtAX2qV^2O;lNcX>NHk;Q#ftu>I#l=BgBlfce=DHz=YIV#EdAYkOsyRB8y;D*? z!g*(IUDbq%E!Cc4^ibyR6r{Za$KEJ55X8Zt#wq%E_s9$rtz9DEfMBGmirLh1@SQFy z77n2i;Z6vdJ-L8{t(OqnCTvu&*2^T&!uneXy90NlglAFRd2rfK>3mt92%gg~{w;~= zGv`8yrE10JS*nJ<>I&B|T`}dM zN?_R8hv^gsCrinRr3p=q6r_p1PRZq-W&7Y@cXG5a7@S;Qt;>i6KaWD{Ix$}co=gJ= z91d`DoT%hu6`!NB_kv?CD-lNEiYN${Vzx+#Nfkts$R(8vi2#v{DZJ^p4YYakM^)Xo=usKBAkj0pB2`p-tN-A+NNKjK1MNh;C*H)-;{pfPEc0qGZ z2kG^qG{V6J?l@x}B<`4wmSQ7X=EZG=O{D4^<3EeQ?#^g3=EbFIxJcB6IaF0c`+b{xqw`;c7zE?2?3OXyrE)HlLYf2fPk34BW@Sbcf^sWp-J%eWH%p|!A|&ry&_@vD--J{*^E!Vd` z{||3`zPh;f{DtR+_3*R1pDhko{`9MVa_Q6s&x<9kDe4qqLb$tk=V$M|`NjutY>&1U z>ZPT@>iWuBUBPI2G@6b!_css6hX8PP{megq=})h0eEI6Vdt8l|maEgNCr_=Owt*v} zZ$1CbXU|{0v3>X4i6>4hpIBX30o9g=gN2tay$S$>s!y@dC4*#FGfBC<^^~Ubup;hqKr=M0d z_}Ab1uDjcufk6bOp}DrT`R2zT{N(+2KD~RJh`#gOi~r`ke|Y)yS@#z19fT2Dc`wa( zKWzeei;!*=4^-~s1?3zkJ1B-4ja+A8K7jO_n(FnXH33-}E_u5vsr^PkP`KPKh$vF} z^dzzOsA|l|Kx8K=>ihwdm$Jb@AW|zimm+WwDxg{-2@o2~8$5UFqWxoE6xm{+c&})q zcfa;^zE3$Ydr&+wrALsYB7nj@~Cy2N(SU9S#Kxuo_SeC_y+#AfR*#$76><7^+%TgJdK|&L&c_hhh?> zBc>+tEU2*J5RIS;%0 z2gOW;{c{A#PF1~t2#0mOx-f)}KU`{4iBLwfw~fB7vNm2=o=b?7(u^@4QrX&{8RSS#@u79?)iivhwzk7qS6e~glR=i58q7=1iwjS^rh+Wk7RCb_PV7T<+a%D1F; z;mX2F%jHXtO|mYXX<$ruwV}fK5@1%YdW;i20ZHCm4ba~hocS5c!F&KbzqdSOK8DBp z*%1{(%e`03La#rU5cU^|r2bA8^(uXoj!pWz*&BN6Y8pG{V(52i*?yEFGG(5G5G3V# z%0Uar0+GKZZG4RcM0|({1S|QpxQ}~BUtvyZa51Otl_VjtA$9E&*Brau4jI+-p>EDsa}wKtwnQ zv!DPD>Rvaohb;=6&EiVREt~DAh(^?oM3nT+SbOwX^V%9Pv&0mzsGj2JT)jH&i@J%C zHW#5FDZ_zpi}=n_Z^R|y3fdhOE#U+^%>T~pM5G*<5x;1^4y7fNA%LW- zb8>ce0%fMXVfQN{8U`1WCkg~Wtg8xw>Uc$~iq1(>%1dYo48o)=0V5%|MP`Y>BC|-P z@PWo5k-Fw(A;g0q3TKG={-c*B5CuV)rD?LTY3dS9~s7Wmgyk2cB0h%c{101$&x_MeN9e-tt^v|F%S3 z9K=2gq2wuwiJ8uYc~LYS14dflzzKv>TczbswotaReJ*S*GZD?$ctZ%+x32&A-M@e1 zgMaKA5;hO+Z64ffeYrSTdgaM)tu1W4fBT>A>|Ng7oQ*EIslBD(dO2ThK@E?USv5T0!NdB|M;u_mRcb?T|Bx3}B@YLI0b&86Ye%a>kRU%t6FI#BO9n~OcVl~_7+XIqL~h3#jw zN~Y-$1%*O-J=|NGaoq5~U^wn{oa9Qg&$XFQN%0+IV!aTh1&F2bod19&E0?QMijRx-biqP)eqtkqL(93eO~= zjqj4}n#Mn;02Xs7qS{I)Y(-0pH*o$CZAm6JX;4+G3rk71ozW!w+{+&m-TcjZf%$to z*8n6*ztUTUdmv#gJn56oWA)r{7)__s(3Hn^WZ5llsH;lTRuyk#J(Go4L?Q^>guug! zDyqCf7o%a+Go(iv>7-cjKP9InGYND#RVe$_^i`6`ous`b7vi}n?;;acz|!@N?8t#& z$${0UUy@MaPT_RM0(dz|x|^`#*QNJdIf!~{ci*wKtE=Q^M4-_N%lnh$8#xqms6yDO zG3~se$@vVN57^xE<^DygPWqWyR@>H%eneXPa{-VdsIy~F^U5eRFmZB!IU`GFlt)|Pzc0rq zkJh6I$Q;z^-r%8L)jTiSguwI#qdj~(3WuruOmxtjqX*#`jXd7N9=4e0c$QlgPU4*Q zs=rlSCetpQ;~pF4-(N!HN+KX6ejK4Et-`Hy7kSE|rixjk2GO*6%iGp&gB#7lwG0t? zIssuIqQSyrY<%04-dprkn_Y=$5T}GDG$D9DUl9R81|R~=#xtyl5P$)s&$?k>%{P7& zl=_iZGp3`gh}61ZO9h;KXLb=0XquR>)OaV2rzGnwO3>fmk_ezC!*jHWgdP)8Y)n-p zaZ;7i1bLertOO%uZqJAu$xM=@E&$2r9pdz;sG>$7#snw~%^^U{Ef*PJHOsd4oQd5k za8UG#Nl6gEvWHo`sj?`s%C2!W8mAc%gOjQh$Dg1O#O#Ni6WBHlDEYqc*LZ2A zuNr@=kPw6jh(QvQZ7GyED-M-@E?Eb&y-P$nr4*o190zrDP>nuulv6^Sh;mbbXnH%p{Xydoef)9itXOJsxI|#gvbjxnj^xIxoBC)5cA5w#bvrdY7#WY9L91 zy$bZHSHMNI3kyojvz_vMkXkC79PFfWTMicB9Q`&@QX78|JMcS8w0>^)_ky?#jhXRD zbBad)-kMi$`IzK@)D+%yWys3Z*@)HF!F^e~9K@*WoDNr!{3XxeUV!RzxF&zShI8!;2!zu+6W`QA% zHWCT28#%}m!6sOXhC^U99sT6pfA~+o{J-w*-Suy@JY0MB+;cCSe{ni#-o5$u_Gt6$ z%7x1(p9iS#9o@OL_xakwiKoxJNK#)sd1+~xu5Eqt_UFGo81JtvuI(M|Z0&FU;^Vh| z@o};`4C~>_!derW!|{GJTmItXf4Fky%Kqr^)4QKcnlS*JUOsc>)blID)&23o&UmMh z(V6v)7cM@xvbb@02OEOJV(+1naQ$zrD#!FKk>E1*h_-N~>y$;20 z3(Wn=EL8<5b+!`n_dQ-uD{&*#KexIp=?H+=w(kA%v#W^m^(&XpuCIT5=gwdK;ujy? zzO^{0&#tcl;Ai*l#YD>AdG1U9C~B>!~KtLUt6fFpMLP+yEm@Cd*gaEKb%=z zee&eV-O!6m5Qoo&t3S#FTM2bXJ0&jVxy;3qSlPKwRUo0&UWi_ou$2Pi9=>V z4`zx$wc^ZlDJ{)xtzLA%aobBP8)8rM>7AoSC0K7x|8Q|L_#9V&efafxaS=cJ*kfpGpQl=Y_e_Tp==?? ziP^uZ^Fu66Mj8tSsQkkRRBbFTPnwx&@a*;VxbZDcml$zjb|`T`9cJT7@@VOOP<+au zu43Y6l@Hk{6Qgp?EFtD&^IJkE4ucRYA_fke{b|%LNHJNC%Wh|ZZh{VrjQ52Q)C5*~ zM#sB22gzxtw_d8xVv?s}DT})0t6#Jd9T$<5z1wALA1F3O{Z)mCbXiiV${je?5)}kP zFlMY!?0hJST9IeiG+SGG;rM|j-xk|z>&dpjyfY0V%q&vzAbPX**w66Vs4Ab+2dPnf4w>G?W$V)VXipW|%D zV&M<>ZlIfAt%aGkd#L#xzGJlT<~wKKNggV#=%QA)%+aL!i|e;u*{FLImR3D+7auFA z=z+?8t9zh)3}4*8?KlRXrl~!F+;;hR+}?k;%dKli+`!4R!^Ne_X#F3>coW4MB65Tc zZFv__X^Q|@ED}DH!SCIblT1VU{7}fr^d3a9djo5?CZmlM`-orDopR z-<-g7Wnty?>e`^>N*eF&AKtoK4J&@?bZ|Mw%-u%-a&pec@&b9_`lWF1&^@mj77!o+ zq{;`lXwHua-J%EtVN-45Mrj@A;oAIYM_{WTeDsa~jF7Z?ib7vV-av`}J$maZLLi($ zZEx#Rw=WYiR1f!=2U;bXA1bO*5D}+GN3efL%Zq$=1C|!tWeJ}&q*lG_3-KZig(_f) zXI9ZqYeZEc0L0)HBBDyvBPsXc&Uk-kyuU7MPo~LauL+7-5m9Bfia18*_>&}BwI+xn zy>4`}+%6fGk5@qSi4#cy62f`ci0R0vq8PC+O#n?A;l=sb5`&MUd>&^{!=VzXAvsqX zSWslsRWooQw15G!ki0)^3M3&NGc`(vP{9xvucmubV6p)?@H)|hx%pFA#j@omZGjZw z)Y4v{uu1Z|>Ys&Wz5Ua)u*76I$RkZ$yc%<6x02|rXCkXXLMF@V>J?v9jRZm>BoT{s z(`lu?q7m!Hgr;N8D$qWNol&O^KOrDVr1BR40V*RM@|A5XOcuHeKd96+?I#8Cz1|TQ z+-P!iSPcd%bq8WdtKAz2F!SIW*zRuV!~QIMiLi=<&USGIm|_S*#1DMna zxVJvEVaq)%s_(Xy%xGKgg|H1+K>{Q+Yn=CUoG%}Uo7T3G&$*@LE;~yk2*U4Nzxp?C z|LXSc*3w`w<*<41vz^1E@w8bS493lLJe>l-hqrDm3Pfgn$+=rh;(V})z ztL&vPMeH#^ z9T>(iXRJ2>_UeaC2wN-bg1W z=1g@M(^=QC)kHv)@<7CUh_Eo9!@RA-pV~fHSJFWy@zBsiM2|Bn&~RH*&TJOSMgRaH z07*naR3SZOEH9kh%A=HsmWBhC=`7!8cVBx1^|gdKgb<1^vy_d+q@IN`$2UT(t2$GA zLJ`*$-y_73_29zXvA<>l;t-FG)QyNxQFU^4c0FiU#$fL5 zC|Znp_jNGe-}!$s|8u-+|r8GvFu5em30+*;c3L z6o1kk!+bme`mvdTOA=OZB5 zGd;6s8~Nr|=kcb_=lTEkmIunm@WuUG$O?YxcXir1fBwEaOi3F^R;zjwtRAzdl;)v| zo|P$i>(9qmJNoot3r8Ltw~~XpA~u1A*=s^cy2a|DjSLbR{q*29VD!Y7HooSvFEE=Y zyWbNPPRf7g_xb>QK!d-pV0(-7g&;{beLR(B>8H(4!Yq@}Z~&C5P`XlMdW;;ZuDNNJ zDp%AOBj*VE?;mAL$pHF&-tRtf3{icmh^EXTG~R0fBWWaM-*IM97eC0J1^}VS0m7ne z)7|HKy7}T))&Een`H0Uj7pz=XOY+}U@sg5{Kzbt%r)oaVkpE z3^N;{xxsn*A_*)i1S|vcvo%LeO0%&)b?`UPQQFk- zk@2lB@P{Gqr9AT)IlCZ~hL_U%ke_HK4t*%;R2Mb>WSz}^YUz#%g-NL66-Wd^WzysJ=&K}1(jTLA0t7qL7OktzuDnvmQzb#`+cikJOT)mVZ#f1N2sr9|qjJNGGwWL5(SVti~pSV_U4qe%+Vwn=Jj zic#?Cx4_IoaT>?n)mC3NYL+H0FI2?6C9ZvI%-#LlfAiiy{Py}U5%IMvum0gzzW?0$ z=W1Gb@9On?u&)eqSk#=MUa;&eJ{ToFeRXl|g)jfX<b`t^p!4iF>= zir^-SqSlctYb4p4nV6XmcKB~}gdMgcW+uilGhq)cIb?|vC6OROiv&TSfd+bC-*T5z znf_3fSy^??z3;t7^TSvyG8*^YdzRWO^Ou>w6cGSM1izLlzx$;x|L&K*^8M@YJvu%LG&x)@e}3oY{iCCAe(v-C;+wzm^5y4F zo9sH}Tppvr)_^(%ZMEv6+xEZ_dqd$hb&*QNaM2VIufVrPzJh}IUA5Xgq*<+A70tMD zqCo@NF2#9es&H8-nGO11al&y(*LMJcmvgd=_u19*f%)?R7#~i9T z+NyN$Y-uuR>WHn|WNlVMBub}5_WIZQhd^D|;u3a{slUI(7=_0uvk+Eb&5g1L#Y&Ki?O zB&Kkbyroz3NVL(mKeWH0xrw+{=zBF#h<$I>sLeUH{LB8Be#?r+fT5_lvEXmIxLC*K0767*qG)ot$b<0*efcnp?sfdh3bbAkr`BEs}a31b#FBy`c{lA zim^wxtsAplw7EBOHB3;b+BvrFhVR<-dH27g0=LY9&$zh2cF6A7zsMIRS#!-BmVnqnW*<%k zlMQLx`}Kq%k0hlK5T)-ZHrX6 z95c>ks3l2q**h!)i9UHOY}W?sI+wNC99LPk!i;ohHCdW9r7$u3+lnTeW{PFQ7FHBz zdojq2oJuWQcl*p;P_n0LWUDq1vIzksC7K8DRp7Lel6sbuE}}prS<_N>ooHbj>Wn@n zC3}8@VbVn@8!RAAr!?t!y#kIXSynGDl@4{vdICpKB4%facdrn^Chw--RdQUHzexmO z8oHTGdjJ%yxqY~?32B&nN>b=r)Oi1>Zs|2Y(}NR0X~7!$y^w*;Z=d5Y={MZRh=@~6z?){t z8_3H7C1r@ykyrzUBw(0!6DDMJnn}X{x?gWjR$WK4$>e0ST1VNN&5K*2mSla&E49d@ z+DoP8>{w`xhQU2Y0U7U|R4WFaY~7g?pd9*6_K-ftHLoN0Q<)sCjwju8gfS@%n=z>?Wje7dPX)FE{k$k3{66C;b^ zOZnIX5#l zNqG8kRlhq=w*r2UuVFQR@=l)T!TqD-?|tyW_dfXfoyR35#>K_r^8OwGT$s&Xx_tH0 z;^1VnX69F}Tz%u(wR=wiVQ#>XeSTp zj;+|P+eA*QW8KpkB2S!SYVW|ZU#Z=~n5l+PvT@)9hcjm<4<;D)1C?Df2_-BNSps!M z=@1Zxax9|BC;liDZ&!23dFmW;Cn03h`gs40M+sze7cz}sP%hL>U;uUiR|e(wtqxp6 z72B%RL8X%ejyxn8Z|y8kF{90mp4ZWXxuAV%Cwqz#3m71?;ek2z2Oal_a__tK$+ul`0vX=!50=~GwI z5@K-lM1^(!VLh^~Z$Z)Lj>Z!Y4h@95i6Rt=P*IAt(vKF2t7{ICBstNK&IEh-Y%-lq z=F@HpIafxeE-+Y7GWbyY3?vGsDv>gTKxQi~y^!Et0k0+^VhFg22*3y!s@<}fB2enQ zCZmQUH;d|yL;Fg*1(GeKqp&Vof88O)D@w|rLk!TKttrrk`-I7ai61rlEE&XH7`=+` zUK+NLxsp`Z8=#^pthP-U5vl}6(|(NX`%*df=UDFwFmK+1)rcet$~u9uRW_M?le$NP z`kV_f5GYxfy`&%t62 zww1H4h7Q|4oMw%<3y-u^VOZf*PXm*w2W0V(N26&Ljs&(rO` zLT^XbfWbZ`PFBUd&z_cK;J;yKrurcJ9kDUgpSN(#y%%FV?{hd7XtqNBvZDlA=T%-u z2mru+)D4}}h&i9x)77ufQq*9hDW-ti4u8t$nsithEz%fuNI_^qG@o>nE&yWkmH;xU z)w*E$k0&n@W+}9l1>SlV^%nqGM?PAf;PK(*gNu!gL4+TymM14Cv(2UxCLB}d^&IK2 zTg#@blZ?@`xn5&oj!79OMt!m&L;T76CYHn%SsJNsD9b)!@kw1#x*M`+@qBfC>gtik zN|RGu$i)<9G9$#+36qSDc236_C!^Wm(~hP zen$)x5TfcAZQn2t9Ffqn6BjDR?5PJ(ocr}OLx9kQ+2#G&{vO}C1N|m8Udy_q$@&?w2PmZ#xot|WwWwkU!E4Hn&Fi7y2 zyplU7bTF7eYoJrv)j+9E%{x7dvC88qVEtkGx@(#Df`{b$yf@vuya)3x5NN_*)Nqhm z?bB5-G6zrH4#aBUhRGc$c1^i{z2?=b4;?CO&I-XvUdd=ftg}?0q(9M7ND#oKy^CQ2 zPnO3DPznGnH?fba=>!S!WW5oHlWsy#*11M&wav-+U9A-hps=Jsx}42o!~rMOpBt`E zNeL~HifO?$LkdHYcp&3=y*^wY0m!8VE!QU}-E)MK#>jolOT!}8GFK9U z?Zj0T^OY&}XqT4DqveCY{pc@$c;jy$FCPHFic{aT{v2wY6t2j;@-;Wu6~-VG6oZtGwqkG>KxH zJW#e%SJlKi_f%>^*#()|14_Fdu4?Xy@_0HORqp~b&Lgbx;A}-Rk2;Q|% z;rJ%2D;rpafI;xI8b9(bD0+vhEC5T?anFMrIY#cYF+dkA8suIoQ;o%`@%9<<)~!ru za5ZmLWkV2TS?a=v5>7?nf3*1^QeBzc4CRnO-+wEm6sqH;iTj| zH*-rDPVu{T{AL;&;SLDnM)o74F~_>}MANoyKXC(vi}Qoc1=*j?H*u|%EPICQOutKG z;(KY}!j3{p-q5xekwVC9JW8&~QPlZJERG?8=ZP?x1#v*CmT+ND)arT4O>nbRdA?c#wckcn9FuKx9IJQA&e3e332$j@6$Auu0wD;%)`vS5R(F-g zxE2L)zD~O-5edMmUoEB!m3SJRT{XLcm5-omv$6k&9qbu3}un1^O6Tr%70WkZ8Ga@?Wiq3m31T| z7rV1IzuBrZE+p1}?CJzU?4?>ebz6)U3F|M5$lMg|obvk-(K==&iLL_EkD_^{?GRi^Q9?zdzQh<)-bQar6N;mW}llp-Aj#K=iW$ohHcx-95m18abfJJ0p2+1fh+-OT@loYukFk{l1auPb$h9? zK$m?ZE5T_16kE#kIJuKS#GDK;gyh45WtABkE$$^~im~=e?m-Ha%n_Bd7?_V+GW_`d zV-e^QSuZ#xJOgc{C!ZU^EUy5kM6wBLsOD1T_^8v*iMb*O*ilINth2Qe1OZvy|2>IE ziY;-~POGfOHKaIUqTXk%H;ku5w-itOA~h0G$u|RPL_q+NNtpGxhArn*3bardIXfch zW6|ZJ(6?=&+-SbrW%N*p%#8q*AH7FeF#`jv`LXm3^@DP6woeB`)Br-}tO76JnxQVK3D-!S^@hbB%E?bU zvHRO%Fk5SzfwHtKOAZFKa0>3=!AGmr`?qgDIDB|@ z|A2G2ed}$<%zuCVga7%v-@X0#(VZuc50@tZaQ)uBcW-?9_1E5bczpQ7k3YQm=+UOn zl$(p`^qX&d;a`69H{X6Ga~$1!^5CwGbZh9%K)r3A3IuF9UZq-~H3aK4tFx383Z~qH z?L=_nQsRgzd$0pNO}gE}fMfs-=19cq_U1DGXT4POGism(D-9ePG^YX4B*hx(_Ut(~ zN^OX|v#L^{`yx`vqD6Hf+hIMS;73~smf8p*QGvxb1VWNYr5KWx~8bX zoTf_{y=BhrT0c$YPzlTUky>M|jvK6r%5l?qs zf3D)NKmEWyT%hQI=!Ej8Hdnbb?A(=aEG_wgAc=2uy@BInnaxGPL1%t&78J|`0=`O5 z8;5enY7;OEgp@oJYbViXPy}kCRUMn0+t%bzml{5DtkAu3YeF*EfgS4l?KfPFz<%mF zKRk?g9?NPCJ#RT=6v=>7UgXSlRJ(_Zut0E6U`;dvQYiTKdjFQ9STZw!i=S}Vz;F-| zF@%yYWauWdUMK4g^QDX%dM_Pe*#KC&8tU~y*=(AOePd# zf^(%g!<|o;8NHH@noKp2?IB`YM6&UuDBuuC(THN{Dd}zzqsYDGa>@Pkv*|@)8|);t z1uCqa>GnWGfRUMogW_}nYS3yl8XOZxbN?g>kp>cTYDz`VWnN1}x+SA(4(O*bvoNp# zOu}Rn7;%f0&Rpm+5s^7HV`T)=)z8esX+M%pdhjZn>KW`Ao6kNWswlZI3+I=L4(u3e zmiD)VX_&`i9*3;o5J68#X1;O%<9DwA;QHN9t{hwefZGpmZQ^D=T}19T{p!lWl^3qO@bKut zd!PQplat36W*6VQ_O)Mm;a6Y2{POb$m)kL=LT_d6!)lw%93CjBwn4PnpKjl5_~@u- zmd##~Rs8Xxfh$<{Mlq!z_XjBvR@2)Bf>xsK(Lj+LMdD1P$%-t_PT-Mcv}!oGLdI5Q zD)$bb+jIcGJ%O#WH$cZ=9zJAA5kSwGsLCa8)= zS!lqz)c~e^avq6JITdo&pmb^wZU@=L(d9$(NW$cvq81>`WPJ<}pfQmuge@SHOxZcC znKyAW7CnGO1Q8Iiqi)+EI}eF+Qu%$`+e5R(4>bt59NkLHII;xV*QHa?5Od*TR&lUl z!{wWNWyz!WLFfq$!EpsXPyz9BBlnppp& zZvxT5e6j8$Q7F-AQl{1TAh^>RQF@LKjtQIUjMi1r9opbuRM5w;0z>rAWaFlJXDH(W$!Vg|NGDegf>d{)3Q%_apu!`y+AWpsETi*H z1|J;Uv*TG?Kim1!{EMf49xYFqkKx&V_U^;O*vTriq=pfH8OQKhOHruuhrW-^8FS9( ziD~Z^WEbO(r&UVCNIKc4t3`S=QMF1G->ahM#GSHFHJjMn*Uq1ofD?6#VInF#q`LII zY&J5PI+RZVI8|7zQ7LBA+POVJ!Luls5fH%I(fKo$vRTSVPj>S~kBbS+rWX!~m+7+P zFPi0^x*E(VB9wcq{KiV*BRL>Lj3@WARDQjY)kdPAh(sO{t-$6V>`-nU|4J0;Sy;OQ zK@4t$?3JGqQ6yyv^@4#MP=Xl+3SOVut)K)}kT*a|Y$zy5lpTCTFtdA=T_g6~_nd4_ zHj|y!#LS`Z!E&prhFdSorU$Z{8DZwm7;zIz)31R|vuA9L8mlTw=xApgikC&Ar0j7N z!j6c{wW``X^hK#_qrhe(II(4zD29b5A>g!|PH4RbHE@bphGan`0Lo*bSVF3QNNQ?xtbIAy+#vkHV$`hQ z!;p4sS<{?mwqkvQxW_ox^yZyl4bf$bfAJguG1VLj?c;AOJ~3K~x^n zd(kxSp+le38LY}m5L9aF)N-vdz`9@GIsD{@pZw(ZgS($T{_yV6r&)HoGg7Tj9)0+u zkMrl3FTM8bum8bI2cO^8-YR=9N)D~C2)2BU+nucGkUfI?4Hv7Jl$n;Uu=oHeyRic; zvI&?hXCNye}4C!fAe?Wz4xT#OIWTq z-}&*6zVqWBg+PnRl!cF1YkzMb`ub~c{LWine&gB;SN8Wlx_|3?@4xr%C!gMa{3sB; ze)Z}feEIFKzxH~{YEKjf*s}Gp8GY;ru_I{+d2BP}D=iXw+kmHd9^Nu6M%5)6(>io5 zB*HN(UmY3Lv~*bC8g4H}x+2F?bGB8|eb)R_|O&ooxVjXfZAylCru15zj)0Mr z-EA>Ks-a?{z_i1Law36L0WK^K#dtXA4Q+nXvSW;(G+!#{*E)O?A%qARk<=|gUl%!g z`;T2qNV9IX-mI}?W*({1m?>SDBSO%G>y~I|1Y$OmgmA9@dDl3L<15A-Da%~M;No~x zEz)c%P`TDOK~kWIH#sLgC`B|D_8ZhAFg3aMdN$o>hc{k!Xei0#%T5%CF755DdUl(S zDGlxwO1ufSJxN*-2mq_TU&l?76S%b^G{r%5gENAKvG|X;X{;v^E2CL$(X5(UY6yeR zdi-uRJi9(mu5A8h%{5K!7J=FK#&2S?Zc0ERvf3;|s0_p=9yI%T)r#|A1_nXfpYzEy zGW)&eEE9fkD3wZ^Sexu6#j9iR@Z#0spXCY8%eWVnK2HF1oJx=Kn;}9O0zx09q4VJ! zrAd|QKdAHQQ2iTGE4CFU0XiAA{xwZz_w1^vwPVs*n{}3~8)to1**x244n0495uo6y zMDtIXkKx&V#_Bw)_vO|RVX$levV4XzT)mC4@#&vzT(;xk&rXdtSo0Yrea<`#&NIvQ z#2BLmMwNPMVCmDn&M>T}cmhH&L7|!2iYdAmIVmUQfXzddH%fM+`P9)^XDXTwmXJ^w zVtmG76GMyu0K#Gxy1i-GpItr(k9!yM4(cIW^+`%9DbTt>Ri(si+{?bh6cDP|+H8DJqBN#O^ZWSzIW1vE>dLa0G!H+$_ZeAP>WnRp?NTxIiSAI@I7E0D$Mvf zw8A;6+q*>okYhP9reW42fb@-fT4e%p8@SlYIg%OHKEUhD#?1v6$NFoFc_VWWWwpzsFdpm76z|D z>(D?psiftvneh@+nN6?UiV%!7qWE1F-mx(iqI6@TDe&jDB-h}ryGJoCmBEud&U%w2 zNNs5P%eEjE9q5&h>=?T3-2q7{H3T(BN16lF3h^QRdf@V%gxEOn|$fzw|@O|zq>~-9xvD9 zsE{}RX0vEhW7`MBJ)x4^P=R}ouV#Y-3TEE3;;u;Mc9;f_^0uH8M#)c{^`k~e-RB0= z@HL8oDnsB3e+^#j(6`m90?E2Z3-eMa(SQPIEw!f4h{ zYKV->*@&L5a_7sEft0Y1Suogk*Qnd3>#nph`>ojtiWQfMYoyi|)J5scKCI=fIY37= ze-29tr%+vqnSn@8c6E<%B3S)sSWKrE_x6sKCwHDaESb6#7}{2w^t8(G;o+wp&|ap@ zusBHny9{{4>w7^8;iTRu*|KuF{)LE>E~MbVoZ^1esFndrnFN}4!3}cB?_|d-5fX;v zmLU%4Hgv|Ej&rtoL1qbE<0F(^LtItUE7CN}d02@Mkks>7j=D<2Z(yrgPPdbhpCBU=!)gv^ z)E<^DW(TYdHhJ)|bk1P&6b=x(ifhJDS#1nSrErTN?lN#bbvd=2=gP4{k!%=D~0;!}Dw$tWIx z5|DuM9XrDYbBBWD(=VT|6o};f_x2L4$;oXz)!$oOEW-|4#t0N}l-8hfjqiaSFFjnI z+&g+gKrdasG6`d8hfgb6lov7f(r2>}EBBdNKXeFf+7K96fKMJg+-#Q9y~XD0%Z-si z!6HSrov7hhLEH;I+uX~qQCq<1!&unBl&#OP38m@7JnWPGZUbUWM`+4=B8EFRRdRI` z(3H{kA_Y$rD5^ui^@3ahj%?B2>T8cDYdTrYLXarN=qn&Vc@IzWAGv6kyb?LKncu1| z004l{bpWevjtQkFEjed;vbkaDq2aMUkhC?ihQ1_E7zhEU`+H$;zPNIQx(;#*;?g6+ zK4qnfQ((z*kvWSgm*-ajU_PNkIZ~y<`!y>~EyD47ef#KWeR6y?_K%m#yUTlvuG^Qr zBBA^CW&n;zB{x#%Vnfrp_SqL6NvK#s$p{(BjF_N2M7jO=;mLY^bbJyy`hLuo7^l4` zuMvA2t-?1s&4B78ra!6|tx~L{DXF>V#D+CBWVt@MwOKO5HM|l+Qc!U=nXe=Y^rNfR z1m9FcRXosx$VJ<(&!*I50g24_kB^U6%S(&B%loh+Q;S%2ZDlFGUs>!R+u)Ra2q{DU zDbEU-e(u8Ilew|%CuZYA$BU}2-bFoS2jM4#I)T2JU1vpY65`S`w(ZLEKc(8P$p)Lo z=g>gKNYe6SgS!e>lJ9Dl_tnkVOlp@OhB;qFS;+b0)z`oM=C>|Pu6=U%!4W@1M2yp9 z0ZK>W-d;DGQy1v9t1nGq|C8J1gFoVlm&7pJrGTuDlzMVgFZ=(n3>d&?$YOsWP*mZ+w-^7&8e4L#%(2Ofz(8@avKu=9wU zyMuSZL`-wu&+x(WNE>H`LberfC+1>0d+o||>)7wl=5_%Q1|pDjP!==1b&7vuMynm% zmPK#32O?ldZYD*r*(#2sC);v8qk1oc;IJ_Mp?kG^~8MY0j0wAt>OM zCjbBefs}|nCpYE(O39o>4^RO#Ik5?=8U^E2UdRWf*xPeDOX8>%b2GeD7?DEA>sHOi z$?0m-uk*DmU|2I@N8O~G>aSztTzRzUbP z&|5pp*ojwr%xr5hmfrSQ{g%BlTk`A())$qAmxWN-3vDK3No+QmK7a81w0lU1q`4a% z)gikcE4`PNVNx+%n(JB;Zp~j~l8l2s8W5m4ktGaGNjC?08!KCL8WVo&a}+7U%*PDt#gJHbNbz2A*O<>^ zo?#8=VO1-|n^Kw;dw7|jqKLQx1)|vuYDEPru>v84psUi{8_TtMXlg)a-LE_9z`e_q z*mn9kYm*C^s4Buz0<+7|Lbi`qwHdXd5h*!sD_dvJ486r=SJTZxba%we2bIE-&?H>* z*B&Th4wQHPU@+p+l>d2yF+ZP*409F&7ceQbvwt&l&>ZnyrU8(UuB&^5C z{effJO9Bomr4h5fU22la$AJwVgPkP-sww9ULde{S(yltcem{Qj@xOiNfBC`nAFN$O z0^BbjpDZ^|mLu;vm>>N1Tfg(>bKi{X>6J^1m#iZk_?>|{C59W&y=;6^30KECa zOaJ|E{_eNG@TIQMX9EDtCX-8xz2^@ueE!;Vk55kaXM1Y&6GuDlUS5YKH6TJeAa=W2 z3Y+sObCZ>ZomzCc;Gm<TR!SD0h!Y&X1HS4oim)1*h@10}x=6fkUS$+3G9uY(d$Z zP3Dts5@=dEQJJe*wqynhi7BOzeNtD$I3${b8zj**Z6OOXf!}pYvLu1u%`iLDkpW=@ zIsaD9EV?}(#;~I#lcsVqY}k7;7EUxokkxx237xjpg8)R1eT>W?0)fcOSA;a5%#w{^ z+q`$eq4hw*noHa;1&HSFB>>Q5P{@L!2tkvU@AM9_N2G_b5E4=4BQUnZ<}ASg(L22> z17+&Na_S)(1y&^wVUE<%mEIJK4j$osO{*h`($Qao zhWtxg-*!YGi*g>kMf67R&C@pIJjHB{+Z(s_iC#R|vS;eSQSYKdwX3pkjczus`~9nI ze1|{zH<}6D)B#%nrQw4nY&C5UuprRKayyw-u*~wt@QGfsEeCG>qt*w^Y;XNGemXRF zkK#z^g&S;xt#>qBoZWr+*rGvixxG@0&M;qb=jYx3j+Up)$M9^wm+ixo`q(d$>eut5 zy1y*GNVNe!i&80g!w>p4Zc^yT_;pWJB1djFu(B5F<4j7_>u2bI1`0WQVTHKRCx%U` zc!q7HgzlC~`>oqq>N3NCoF$z`s_W6}q~|#6x>+|nyUv#TP>_f~;xk``eqFn>5G7^S zN`EE*h*?CqXXZ8!9W!hq1Vj+zj1x)a;0_>Cdr^I+I)h>Vgf`cAyuK zv*FbKI7wS0L6=##FjJN4JJcqB-G#&}i!s~k6zQn-91rnmlhL5D%3AH-Nkm{y`t~2) z?@i~|9G(pea{f-FIB2S+XUs_{X&n=s&cb9G%w5uNovCuknG}f{Lm)G6WRuJ}X3bF( z^{(x)W`ru%N~yjDoBSz12T=g%L1|meFBQxlP~v%Q1(CW%*50hXcA9y(m{kE7xM%KJ zSTcb^9=kG>r4RGySkgTGVsJ)ig$=VRS%tDknYTDfwVP?r74?AGqFS`=etg8Hiw&!y zjfHW!6&{N|>S~Q$2-B|XD8!Ae}3oIPi}rZa~VkyVbX=gY&x4v zi16okZh!y!&tJTB@yT-e*YCf7`|;z0#o|jZzBCEp``16be|VJcx_5YZ@9@wb@??3E zHp$<8>+S#Hw}0=I%U7!rSLU)tXi}aTDIQwSB38oQh{-ihyn$46T5az6=zQ^gRV2GO4w$zC=hj_ z%Tq2pZ7=yZ%h( zSLL+iWWOLA65X70ld0=~*8m33N(w8&$=2R5DlN#CanTV}lP#jKS4G;CG(?oB|22g- zipVBzM2*olup0Kz%_fO1X`H6a+0HfBg$v^=YD#wEG0{=$D2cErAi2&tDk6ll0ab$g;EWM<}Qi(A)V~R*f?B<|*7VK6`n}d<@U_d;d*4>UD?ho)f<;=PkC#%KXf`?Nh?8 ziBKhf<}8X0pH`F&Pu?P8nS!3~?fP^*P0M@pew4DZdRK8wyzMwbHFMUtvHD$}e?E#Z z0s$}&tO6<6(^uZsiEzxhZ3Qg5fOZ{dN~_)P&1m&U_io)kdi27@D{owTWfIQ38)Rmf zw7EmSX^7FEvUr1+7hwFMM&`#1VlLYv9J!5SSZ?5O-Ax#yB2y~bp)&cSJzPZioLm8; zEl5D9iRS~GC_i2w9iAM$yjfn}(qoeOkwA%{i-4OA>Xi6HfSE)x_o(`;IE=|l3APZ( zGjzWe2FvF=TOYe2vg*}oelMd&T#U9Nr&aa5z?W4n6 zM@P~ZDZsnxr}mprYu{GxApl6qki%?sQb9yPfF#JW!b_ffInP_FSa+!Mi!7a@gzkXI zB1njgUI#JOAlH9cXbeapkbrPxVZnd~i4)a6dmg4#JyAr4&M=7*iV>K>8rOuai3gPh zTag)2_i_=DKC*Lw%-Wp7TcY0T0s#9L0?fKDgrF4Ad8^d?yQ-a8f|F`aZQ`a#Y^v|e zU`G|dDjONbImp!hHRX7%9GTTVoT_D5SWahG2R$iBC(MlMqp1`F`FVw5O(RM~V7cj6 z{dyfYJ;#YTcWQ@>c!j1!069u*EGkQ(;*{i2nDW_bW(fofmTz3ZT$qlV5)RiEu{6}K z551UfHCFbFk6&5~RJ@WUwdi9k*{MsM>#+%>9_59;okM6GSOy)gGSf6xPE?m5H ziB6Ws_a3Z(CW}1;+{l_P;H9g3m(2}5)ifFW63Q$Jjihm`g18$Gi_x}-WdteXQ9@x1 zwlD>@+H7^q8nJI6kQ84`7h{HoajUbtZFE>u6)3`u%k}!5k3RfAe)NOCzy5w7RCHNj^?`FW{_|u|cheq6JG7r8|!ZYfD$_xtGCNepaO5DUAKth)o zGFyp8#6$@m1*Z_nb-UO%ECMLZJz`$znx05==O$6IFHmC!Oem%h)g*M2ZnA3{l!E|mho=&kY!VPgjv2ld zsKvsZSkQ$zo~NLNd5JI+0WqZm+4fsz7OD+_iCqWCCvo(@5)qrrLK-m<7V&v0QYX29 z(cyuovv|DcavmnJGd8~a~3n5+EzYGA2>B2q3J!IE}KOG1ys@a(ARrP04 zOx&y8U4AoZo})dfhC@O(VT#o%&92#G_Tr@%eGiN_;f&w7pRCd&NvFN>W9tJ4)4l;f zoJ~bWZXc_ZQyBjpYZ<{`#xZ=xQahJHQ5!!?#};=iRoMq}Qb`F2;N^JKOs$`#44K|VbYD~G)9R5R zh>QU~RVm?GXEDsSrGPyg8Jr7Vj4@4nYYubo1ayDcQc13>Puuazvi+HB!#Pb#Sus#z zNuX2Sc-B&Ryn=no(u@Ez1VAF}x=`JbYz#7)r6vFXAOJ~3K~zm6veyPA_J3xzei;Rb znr=*n{>&xwmu!1fVtoYw7|WSfYMqgztfJ^(XMT?;f`KSdl;RLXIZ>v$!()}inhHtO zs1%blUU0BT=2}WI#FZ*tR;bYqWg&xAJkH;M;-d(l-t}d(*_r_(4L2cm6i8D}fu7Pe zjw3lcLGd5}OD(Hb%&fkb_yDnFyh4P?h$MkD3!@}EX(di!ZH~&1ZwdE@QiEP!=`E54 zab{zWRlX7DRqBmANlRb>f#iL!PGOFWRb`u=V-Lca4VaxMspg*o)tMPXItqleff$8@ zlSrCShTMmF{2ULFbFN8zUPYS(Brq>UX!$@?B+dw_HkyzCdfQaJdZ2I|`tK_k8Zu^< z$fXTX@%yu>dX3$MnK!W~?^X%pf`8$fPvhm_>83J-1QK`Sa zvt$O=F)9zPeXlGorP#o93b;LDs6IJ!PU?0-8k~~K#$?^Ai$b*!O`$2kZi_CnMZA+i z?TiCBVi?mdK*yz23>vBwsF^_&lS0`m5`Af1Z2@9xosG>o3d>e*3N8`J-?A*Dqdv0RRryn`zf|J@p)kbK-GIIC%ZJ=Z;sa8xI~FE|*_=>E-|K zH-Gzc&t1EI_tV#}UYT@(87?j^62aB|`LDh4xh{m+WT-AlIVhaxtBqQ=zoI|Z$FV1; zdk?V{J2(-Wm0J5<+7rr9jES}CCSd-;;vvX0ni*`1H}!2hu3dKNYB`sB7Hqwdq8*$o zx(FacNZSb~?OD(qUb^I2&Ac8q(!{);AiKdL0bv9U_v^@oed$eR7S#hWADxV-i`t=1_83bGF?#RdvDskOur_Tg z2sjCy0LCa2Y9X;az1TSNMWaf}C4@vs%uIn4FHBBmF-AUFFGVB(O~Ry*4Y@?o%#2+( z8gnxYV^Rje>~w@gjx$i0Sv3I3u}LHrjzBdT)2NGXj*!#FGRF`mDKWJgtx^=CKLwf^ zr=-wbn)V{X3>l~$>3&I}B=gC9)vwMlTq%q%`Sa-Xr4D$N3>#<<)i##xi-;&u*las# zt6~=1Mp8&g87Ex_wd@CaLbne=V&N#9BQU%HpE;`6v60;jgMQq`J3x66F|#(g_!SCv zL*D;I9Br!GkP(A=l%$Qf&RU-vg-A&fOkM|AHXk&xL^Mpr`={^dTkQs@dss}{@|Cn% zpKM>KdfAp@Lf`-(QXz7*O0@@K>9wFq1Q9hCo$Di$k*fG_hb5ZlrEh&2sLGpTw4=_B zA7C{-T7%{3sCt?z-c8o2#M&47s}D^>aoh$&v7vsK%V${f4}tS_fNGd(p(S!!MB~Xm z_2Hv}P+L9wx-tHlqd>a6`F>O&NkEDJd$fA~`fQcdEGeg5ujxXond`>dHEno+Hr7GM zyjMM|Eo0I{Beaxj>k|{lKYM)M|9d)~KU&U}j{$#CpGOYVEeoLj`&>>p|354JlP9v- zgvB1sXHVnO1JHW0QXH`qhIL1}P$%K@9WD{xKceYV`)KMe*+?L@n;xi1Np;KqrYzOx;g9vp2xle(> z&(_*EYV(+c2?CL35JW`I9?F@Jw5dbSn-woR46KBx`Qea5781_;40n*^&d(yq70Tx? z$RD;(wu&U#4^oZDB>0yl%c_>1xFjbN;nk{t^azQhk0*URT(5z`@aRf;*W9x8VeDXt zHm9Um0!CgJxg>N-tBNIOVNthdGku}uGRSmS+viKl!D)@iY&C-(V?|x&Q#x2+Wb8Uh z>B8Dvqr!+12si5lAeiH`^Kx_6M}e9~zw9PuAj)`|G$sH9xwj-GXAb6|hlN=P5QWg3 zSOKX-$VW|>Y;P-O#Y~e#foR@Mg9ye6z^2qAN%Z@B(jhKa#3$f9xXpiVK&lUjIca1< zR7t4phfWk!aNp$ZOr$Gqhk(&JB_Lxk<(z^k4&V^+IXX%NZu&19h^@II^UJmZB6&;| zo-0^gx*!3{weyaEY~ngl(8+<4(-*gIadr+)ZdvO!pDZIHTw2)5Dq@T%l!KUJU_Gf< zo)^y;n=@_Vq{I_792%_JCE{@>d-esuGr z#bo-8S3bXH**{#p_T1&NPvf}y1CrAbNw(?gw*X;6dj}JaeDpXN?Qd#Rps_w5$$AX{cMcz>hX$h8uU`9azW!@hFYNvKPk!{yM<2g?u)^w+~MjZvOGRHSxl#|Ub*Ul*Ve~#)W2KjU}ZMVH-Z96;;jOD zEULj=d0U+QuSKyvj)T>X*HAx>lvd4lo04{~HNjG}pQ&VHx7+`>-HAkr#;}|mbps86 z9tpy533VG0WwfTUeR?ZkloKyGo2%%T*{eeLkWsFrGCf9Vg{a1xDvOaoAPN*R2}6!l zPVr)jU!iS+_AboFe{E2&a>?WrCX{U5m~s(~4G1C4yV=FX!F)0sw#$Tw@gCHpAkg@% z8yUW_XQW61Lz?P4wjN4}-jFn9)L<=GB|uZYHnbI*7DW@~A^;JEKq$1~e$}rLaWa{L zPG#4Q~!FxeMLp{mVolCABj1w&HAg@_O20}jl6b-Vkf0QiiBW>NoeIaQYI@ubch(bAdDj%v$Z=B1?)nXGIIo% z?PCa4wTCZA23Xn+94r-C(rTN|-<$0rV(wBAvR$EqE^}4={!ruTIVh!ieim{{eFk@# zK$QeJ;>a$58;j*kvFwx?IK|j(8>jM8XO^*AHouJAUv036h^u~m|M0=VVlS_MF={ZM z!(beSGTb@MJf9P;oYX~ztZzPpon}z^!S&_ixM4UILW-b%8<9IGSP>)6d*%`lY~>hp%bRdqSrx)dvqiV$PtM1@^POat0PO~Mo{}k8&Jrj*D9#xc0H8lvb|F9rED~ef^t9@`&=sZ| zdnZ=Au!&H~zWZjLyyvKTI&VdFgvjU1&9$>`TdR>63=uF9-vA^5!VvBD zcnALAiZ27o4ji3SpmF zVUfBC5(a8^RsevwT*b`^hK{GtaB0&5pSrDL_5Ltf*vDPG*~*6SED*oZB z4ypJ1ChE*;GAhRyEsL}1z&rLgv;1w=d~(=_4r9z>3|j)gS`AF7KVdehFvq0KOs2Sh z5Eiol05PhU@i0GLv7IDyT?tU|;%u=;vUBD@H1XPt!VM`FV)izd%;V>^Vm|?lW5o@q zxt1k2VV#6t)wd&h5Ls0moz*(Ro48qSmaENrm3e#ZdTfOFU8qwn_s=J@3C<`;NJ*=q zoWgcZ(lH}*_W#0a{yaK<{QVF9{x5#|m)Gxnxb8RYOSL?I@%caf=AXX#{Fkrax_4pv z0thUod$Y-W9y-F%w0#mnM?qNn7>OAa4M9X;Soa&jxF6;nW)6_qj1Hum&j?9fp4CmR zYJTahx?{%F4@B%JEV>1SlrN-Qv+Vm@_dfmj@%`0i`DA(glRKX*H|ynQ{b%p}@Xy}+ z;Uskb^sC?a#w)MuK!UjW;u8y%W4NA#A>ecYw;n%v=jMm+-@Lgu?M`6%V7Xkb;k{39 z{pgbq?i@Zy36{Tj?bT^Fx%v3+!D9ZKUwrGo`tmnkyYk#7#*gpc`i;+j{=#hWSMR;I z?AKp;<<)=k)>mG+`uv62{OW}Zn|^)$-p%JP9tgWE zIR)-{8Beyj+q=hBNV=L91-3Xs?GWQNJxt=J;gU9LaG{=819@I##D~9bdvj`fl_qT{ zlr!-HC;M$?l=Ogjqap(;3nD7Z&!BpePZDNkK{b;M3lYtya{-!7W@Q`oGiv)hK&8)f zQFJEPXi+}_nt9glBs7i&Ea&MuHU~*AMAQtt50+vFyDZ(*Fl~#k9Ev`6P`?f0*!6wEm zL7`DWCIM4pbjF_`03ao76afXY`~?lmT>9$essJpaxDSeL2Ng8J6Kmh@n zCC1o=u<5fuiSBAX2{<4EM+vkQ9oyORreBC#MQS*8S^K@KF(xx3jSN{3?y{=LoT!aJnS1cbDhE{s~oNqXjF49!pN!?UX8 zEIMA%-l_X*%IoqTseLKymzHQeNN`2m!gr*dQv|}2P^-AfpG_GTL^#=;L_SFoILW0j zP@=742Zo>sq>vqdf2fzdML1jRH46jVPSu`z)-7k8s}@YZ?bkDW->`0o7X#8JIrfY# zZ*89Je#l=58;%dwIpfc-(m-zOk2aQlM^PAWG}y&W<7!pe#RKzo3-1hN7=N_|L(ACH z+PlP#=mw`KM`VE$a3F6Dp6%P~)Vk`ureqC%^zR>e&ND2hBr1IBd<@U_b7PjQUs{b< z`|GoUHvda3ty26Mp5kU-I$(vL^4Tf*o<34()d$Yv4oIlIhDQ_Cp0jMC<}uJMr6yGs z&l9Lr6`#edlG_q@=WrP-?w|)|iOXeoVLu;iU_u1O$Tid?fDpM_-B~v#gm~7#y^Q3X z-&U73MKLbj^J}Q%B|n5KJvo1#O=f`vVzws>phmF?0Q8%lS-?pP+0-NqAkmVHXIVbe zoX1$4Ek2XMGS4XCB*)}lZ5L4y=eGBj3sw;7iXX0ex@R0)m;^9Pr_yz#EFV>{9jUjz zBBt&nEHb%wx3L$gIFUoe(=*eVm#D=6yR7i%TOef%R&3BYL5Ob{hzJrP^0qnSoVgMT zASGpHJ3y!y1p0eLVVmkg=1l&C2#Gl@lk6+{nzCOoCoMKg4t^;ry^>a;rXk5`bxWH8 z0D>kkbYTb;sk3CaEwM}+X~0Wj0&Q!t1xi+K03hiyc@lYOBUg|57%}FbrM77q&Ys~& zEWp0a*J7(vX{kUYL<(Yo_Jqo`t}r`lI!!u}b*4h`nbV^e5d{a#uQwQSGJNLVN9>)_eIJLTDDYb^;QL7l`YW20HOd z9qd-m4dn*WDr4ku+O2BR9*m(+N((WP%-JoX(n>jsRoja`wQI;Uh83_&pg$3+YNfTrJ=EKV;!e?Em9CfA<$Z`EdwgZ!-OFr{8?zg%_$Ew)$z=Z_rBdZ+A#gfkLJtiG5KF z3V`m!g&``Z2U6L!M5EBg>g7JQ&XP*M1_j;KzSZ+XY+?)}ezxV+Xk?S71r;?%X6MmR zENO47{R$dC)C}c&E3DgV3A1dV2l{wL^`IXN7Gkw7wlq@&nTQZ7GEOg(Y`M{ccm7+! zvwHSmpgc6S<(u_}Ow3;OURutz zhj@(wG7$yPYIl>c-t?Ai8IeRVo!V#IW>UH@<_IE@qX1*(+sQmRVm2Uus5b3_d_2@w zpg;umYH5O65?#_+b{N~ul4zY{6bJ|b37I1hm8d(H%PjY=;CXlf@)p4nkn);I?mGbk z;K;607XguUrShV`LK z?<|Lw8u_2f=FvQEs~j+peUl8vk=-y=Pf8J4$#W=1$r{|S2|xg`B%vJopq~9Sk~~#e zO+TEo;O338;<6qLi{B^IHPB1r`3hz|scu9r4Xa9;Ua z2?w41FW>7qNLeIcVy41!3FPUG2rOHloo*TSSS@B_84A;+w{}Qn2h9%~JIDyzz{Jr9 z`d=Fh=ty(yVkb*@oz5z0{$aZgXx|^DCScNwudQV?+f}`-Hl$}$PHo4z@-h74{%zwJ zJYe9vseoec*MF=VPSo?O8UUg+ zp@PC9okAK<`MxvM`QD>GGF;rJ`LtD0GF?0-_YID#6)qOcoH99k5TuFX^r{B52<$H3 zgaYG=953<7aX0TkP9?Xko&W&QbsaOynn%X>sS0ykKYFrUt!K|)^t2lK9|}m2vreXX z$ntC7w-XrMe?$Z|yP#L$%?51hw^c)~ytNDyf@ ziEMexL8J~(m7>WfJUcU?xl<4c00pzBv!bO+Sd{p1lEj?3lH6)4xT0I?b_pi`#j0D% z&OIu6>Q;{;LP!BAv1=+D!{`(>$DfMR-(shv_>+o(-I-clg){RKgp>nAZImUI0|0=m z)_lAcnLqL~CX0S%h(?G%ljZHxSKtV}fW25sZzgiKcajk$5Q0h2(t`I({{!^F8{AhW6 z_vlHO5!X(^LvQ_I$?^B8ab(7d|LukOg>S$4>)-mquf25X zrOOvCKYqOa>Bl!8Eg!ycb#DTb$B#Gj{rSbk0o2eDR*52guL>eeLg<8|?$DTnt)%B3 zrSHOG8m1(q2Ecr9nLR}xOT(Er5>7gp+()bBk3aeNCpT^$98FqGwYO;5 z=PQ>#{L)L8FMR7u%P@oY@7?^#o$H6IB>+5vqyO&6nfI~M@B-qPFPM3u z8QQmFsx+Nj{iTc7Zmd8(a4RGuEQp%oe9XnItROq=N>MX^#=L6al}5JZk?8iPkl)(K zryc!+NPt8ka*Pt~bxwD0oc(>xDvYZZ>&9LM=%`YMOFKI?M`qE0KCv-TP2Rt~dIPaqHVdiXW(~ z2n~S3ImO+8*$e>)DPYi-potu5yqJZECS78rsbr^Ynqm+t616XsbrSPb&1n_VV-t^S z3U<&*T)?R8dx7d-B00_#7;u7NdwvT<1R(8EBES?bkR^Eqs|y-gcSz=(&A@mWIHQh0 zq$&k@zKdqv49-^63!YP^A`yuZ2!p1=C>|>oZHev|A1H9vH&Wi)QW9VWCZs5_&Thsn zC@Vlnfhf`3Hce1#e__A}mAERdBme-8tU_IjB^~BBs>lwhD6H!SGp?>vZx_I&Oi|3l9nY`Xr%9EXL zCFE&0G}B7eH>~>BEh{L$`g#)4D_5=pz$R|&?bw`L=?%K4ky_Zx6n6jGZR)|pq1)0H z!1k_frJ9*_e-xLvnidbsuctk`we~fyNCb}-fV*vIoC&A>rvBRb_6@8Z!#aC4s`kFp zrx8KqoQR~6RCl+0XE}{?XxG1^ou>| z+{c2ADkC@`Ov03-dR`NybdX3WAk2LqlK>fs9_m8?0)hRf~BDljP zz*p9Hmh*>w+?| zn{KQb4Op0C$qbe!(7@4Y3$<_-q0~{RSXKlwOs|^^57P&wF}3lo#5n|2#>9HhWm8m6 z-Ud=Bjypx*mJyR7M~=*qW0Yb*vO6m%D&Yqiz)4jt9cU}UcV2ZGA}C{V+ByoTsP2Cw z&MMx{nW+^7DCG3PrbcdKCp2XzJA&=p;JtmCMJdHJd?)$5rgz0&*6SDo$vmmkX-q5N zH!XHV=+_cAA`^2!^Ld-m*}7ciux(D%FvGe9?#M1~lO`UZr4ngGd;nN(PX4cV|KdkC zzJGb|^1u3xfBAcF{}bh&2Esn1bna3z4R|Z2y}blEHGY5q0Vz-r-WbD7LIeALje#d& zG6@st^MiFk=enbXDKuK2NE!3Gw`}4(JUaTD58nHa@BH2Sw{QBM+Mn*dG=Jf9SFXHr z?ZTDC!E0AuI$p1Sdi$g6Hy_>q;bQXX-=IiKs4_r9nrGabJQQoer=|)Mur?uSxNhLP36!aoX$~0 zkB3bV(<3UgiZg_4@7UBcL`X=&X^Z1^zm6PxHhPNjDdd4mJLWR+rZ-FMVi5sC5(Z|- zNN(+OWm0M0!KEF`WTIej9=0MP5~$P8K-rPVBwly|U+=;%Ur20yh z5KjMBmklL%Qhr83%$^54#?57~6p4TmIkFV%ED=JMr;3=417ChIn~$FF#p5ss&-yrq zvh)&Z?b!=Q6tWy_5)g$mk5cJhC(Qd@_q>{Ac2U*45+7IG^yV$3M`gQrB|)8I%(|O< zW|~EgfGf%13CgdMIxtJ*2$n|4^_v%xVjO9eCX9_L$hR>}u90AZ84><}?7eBTrN?m| zn3?sS<*vP9Y3u+&0t5+y6bZ_rWKoMHMOg9&hbJatKKc*L&za8?^9LL;V^2(2A&zK^ zL0Kjxk|MYO#7cBGy3u?0UCuq{t;+e3m04Nua_+s|O)chBAR6bM^Debl=98IE))EBT z`WEK|BhW7q(zRk}W}e|vWy=!G-K9$`;zu@H=BA1hI{_pZG?IDiLjI;e`~Ex~Gq6=F zf)FF5%u81Gv7oi-VicX_BsKRgEKqIls*mWq>Q~czG9T``k<$0#e*oai1EjUOQH#VK z15b^*%_mdghF$-zLK<1Zw>WVMAj%i`10xf|iIr%`yyVP^gFkiZYhsbNljTE8BEr|y ze8{}il`g85*6YA}H76h$6$`oo7&rz<`!EnfH2fI5zT33U1%w#A&2s#~?wQB$r?~d> z`hN$@1Lk9RwBJ|Ol5Rc*@XVXtUmp>;`OmR<&%OtLhq2QdfEo#~hFLWkFuK*M?a0cG4TL!;Br&(&9;FSHNt*QzyYJ->X*+K#U3_IMyW##o&~3 zNJp(RXJ?1t4MK`2y9ftF2$bof%qSxXv+H~eE=matr7U&vDwTbKa!|UeIwI>8Ng1=p zc|X-vevW#?x!%Ldy}c5)0e~qxx-mMfyMS`lD3mOn&dQZ1b>`AQ6=ppE=AM>APo&2Z zBMiuG9-7YsY9O=W`MF5yjmqQO9w$RDW|gr-I~h!8PRx|`IB(C;8?i)(*jvEKJ*@jD zRmfS%S?nWXHE0Q4(2=b_fLJl_2p5x)G#P4wni#{Wb6wvXqY1J_-vKv^;!$~r8&e`? zKSa)sT3q&8Kd@qTLt87VRUjvbEyS2Ou<6yP$0=g<1P|=yz>j*Ockm{sTH9>Qfkvyi zx^nx<+gIMba{GE(;l=HX=g)7Pg-yBaoloBS#r2;B3V-NpbpQU{)xCrH>i)*$ zPJZrkAC~(JSK;aQxr<-D2xs7`1Ja{!^2rKdHT%b=Qnn) z?cKV1|JIHB_v8s*c;>l(_x0a?{h8+l6aVDKO*IXs98AMNs^BByY6UUDWRl73r?ap) z;>G?7H_;LZ*=p?0SnUftsnt+dW1PmDI|6@~S*18mO4)0t@}9)r9eG1{XN=c@27F*$ zi;*igv% zxeG~%9-=^qWWF_u_W0)_5-IziSr#!TBnJ+GCZS0jJ7%qNlCU1={l0OmETEFJ#%bo! zG6(8>-f5q^O$i5jV7O279JXLPIy0J=Z#Zi5n2VnHREwc$haBB061|9znrx~Hdc~{J7 zvVdbuz$`+VUt&c)aguxo3L}?McTBJEo(w(qHa3M>HBc`k_Y}BcOGc+wa;ah28UmjC zkcf2XG<3M<5;V{V9ATVi&Z$k->|ok8M3hn_RIr3~wqwp4)9D#d|CNEpqMqIUxYsS# zaV0&XGS)TY`{(e{GxS*3vDM>-<1H#{$6%GX^DDcezvw2WGkBEC5P*;pq=ET8)^@Ds zEfIMKN-y{i+&S`%o~k`{#(lOwV~T4+Oo|ZhA6}G`BC|NvxT?vZ80Lo19gfhQ1OB(c zhWn-Z2i?Zf(HXHEQjiXvxKXhH@*A4L|8ZU?$KU}j|5=Y{i;84Aa_^czQy zVxux?qN6^5;xi2y5i3*nVHcE0sA~xF(&!vPnUhKczD~orEnRC63X;SM&k{q0~_xB~dl0nTQ;GXneuU zSRxoS$8wIXu?@M`>!{e5l56-3y-;o|>Q=r1F){RJl!j!BtCwbnm)CGIXuNp$u|j&q zpV+-M&m6D)c9~x^HHd;1CAipt4X$$kNc~-;O4aSzD3vGAP)>Ut&ZrqP+<8|pCkx2v z$3mzcgtql{Jz0UBFF}5O;>4O@UArNxtVEdf^eh}uW}gt^os>BeGAN~*fD4H!^MMtw z(jM>k0tYkL0#w^hCR-~>_PEaSBmrvq#0Ps_*((5`U8UFpPc`pOo@;DCt*=QvU9HvL zrdk%W87_Ty6XC(~;4gmst-t)qxAzwXaQ}}#nY{4W3$H!(@!YkiHV(HtHy+;O4}a7G zv;araRsd*b_~O@^t&8!-<<;uW^xh|Y<^98Jml$cf^#p(IkIsDgD^D)l<=)|a0N7uy zuH3kH@BZSM-6tktc5``siHj?@?_Iia>#5!IfBdDdy!`Y<*D*v$%=x%MafBy3p~Wwl zKfQ8v_xeF|)V}-_zV`YV)Z~qW2~@_^hrFc^>Zc4A__Y4qmOWnDcaQr|Nyi#u7BV$o{+Qe>+03bGZvIYu--fPE$@`iet96&N1@CVoq9)KP#{M=ahqP5#ZY5!5 zsxM|vdVg1asO$|{9IBk+MffgQ>X>6ose>GXgMb*<>6dNyfE>uqC2Qsy5*X3+&uwf! zzI_$|7OSQBiqvl1&f#Af>9cO0*cRGILrU_w3N_ZlXly;YQ$YSt30h=ePU4lH^8^5t zEDL4H)Z4oy8xu9SJLe=z3a6ZM<&j`+*n19EzYZ0ye=50i5MeabY3S9%&mOs&(0K-- zo7NdFaJX7&Nl`dXxqe66J_x~c`3ZX$OHPhsU*8?<`frw35~PIP|z{Q2$k z%zV@yjWt9~<2_}hqiwrfWbK2RMhV7=uY+$rk3*LGKE+YS`@l`TdAWC z1o?V}5e?KKI=Ov?H6k$(1!}U|@JJRS=Izqsn=a8%u|OHshjZ{1j@>c=m9nE?S%g8u ztdmKf`fLN#9&i?@+Xw<>7`i|0ElhQdN}rVL!Yu8|y{S?-QY*o_pwc7(1?P#c;xOp$ z>d;S!u_C)v(SZQQq!gRc|cwIZXv*$Fj=ZPM&ufP9t3P%*9E~ zdVtOO$L%jECC>*?_=PzkGS+xn2t*2Hr&Pid%q~Y1C_rkVjT}-+DT1B+2%4Y*RdMoM zC{?r;WlhgiCImG0HuJM7zTetRWl2&6MGZFEnORfhpbn3m{W^={n#0jiUFtXi2CgJ* zuzGfiVYVFEf%WXK7r2dT>q{ZoD1(_%U?Pl&#_a>hB)%XyTSvZ2mksI!)|cALRR$Ar z-@akCjiRgV=w!EGTQ!|K?;6ZL{^NTk=J1q377+uPVr*05JiQb-;+$7N!e#O*?x^l1 zxK5u=9V(l=H?bcEB4Q-TXM#DQqJm8b;5;eIR-j2jN~&#>X}!g$cFH5kAj)d0FS~Bl z2+c=gJDWiY#ox^aCnY;`?6~)bSf1&YfV^$FZ6(Qk$%`N@rH~;bPZv;LmkmfF1L#KK z&V8qw<&}8<==S&CyL{>Pd+%L)Z&~LzUbU-tufF^4)pzC3FFyCh-}(ISJhpS8+ZTXM zm8#D)i%Xe=6hrj>nTUS0zkvDHX`|ORE=k117apMfV^y<#@pWR-p z4&MFo{Tr8JGr_IxNrZH`T(*aB{snyU^9U23o`ucn6y*>!NF1{Q4^Xc&t7=x!c*7I-GhW1lge7-+sAq)$apUf;s-z9``iC| z`~AyDcliJUPmZR0AKm=qy~F?Ie|>2Q6_m3Euq(c1Zi<$XEY~>MUJX4w-9bXXZN%yD?w5lUkrNW#DRGz(QH=&=GlSNf3{$NGLK;HI5)(4Y3*ep6`( z!O8X#M$izUP{ryihF^^+P7taNr0R8*Ql|)!Kkh|PZDUfoTIQY*@dI-X2Tp!NR+7u? zlFt%HNWPM4DNhWcwh3Wz4)9nQt8}g#0g(@b=w?+L>{59};-py|Du-DKek^f6NSwH5 zSkeIpM4}LA)wb8~-(|pgZ96}q*<+}NfP}0O_d?2ws%`l(L!H5(cE^;uA=jg&j@mKD zh-{n&55kscweG&mKtRUy=(;iwrDz0I(-1-xC58alX8e84G#)jq>iN$ahBAg4xTg=q z9iipf_HQ&jrHWHVAi~%dsnMfAI``ZzB>4%z*%-PUXn>G&TC5p7bxl-aUf1JTpQi(@ zcN9E?1RQnDlV`TI7@BHZFb5S^L@7{HTy=t@%KvR_k1_3^wB%s=`jk4!JnvEky9bW4 zU3G+t!E?dem8+i7{Na`b-J7~i_tm>JX{c%y!WKMSD`!OSwQ;=tWlEr3>{ajndg(h@ zc*7eUC-RtcgY3xbB+2pm*F)gHH!G1Y&ynUEJ!99fU2v7L{_Iwu6T^hVpFKYB|2-bh zA1tTJ$AG`8&jaE$)_)Fl*y#;r|3ejK7?G7vUJBAz_KahWhkn_+w_=8k%@CUEtQT(b zv6bxSbiH3ZY)O^84~SSCrvz4ZN#T4_pa-nL@!66`FDPr?U6PhZVq-ALz+@(^C-}`J zd%7w-x%P$Nn<>wANp4S6ib_t%Ala!OQNr+2#Y)Iqw(007Ef*}rK8S!#T@?V1LJw08 zZ*eIRd0iQ4be`#~r$BJZToj{407s5Wx-sO_<;m1X+b-yC(v(w0AeNK|j2u&*J2@@5 zWD%&=F(ANd#rsP}0uCznF(VoN$U3_c5{buA;_^LYSqLcv6EB3&J=3r_88oTjk&nYV zQZf}%E7fU7t@EWjv-du$aiDvLa-Q1tkzlXDxA3~PyjaKiZ*vO16DJbxY9^=?t{2mw#zm#0>%`f zP^x<9!F7h!51~yhNlmLYAz1#f$x|@O1nFRTc+@VJ?NYuJn?^SE)wQNPmsG6uPc!8N z2ZS&e<;IrTQigI8nt3ywg=R%7f0OpHbE_YmJ}MU$lT+R(yQ?wljvmNy<6>r#LEOu? zB~=jvLziS8+W~q_>m}}mI1!=P4-%)n#a_haDz^4CT^>1uqPzw*%XAK6C<72#3qUuZTg=+@0l>Rg8tTG^Tj#;O6Dqmw$ToM<3t$u%UTO?VZCLtGEP!?fLef zef7^?fBq}?4vy~MKU^Ff?5A5lzVdhPUwa<_o;&~2zxv`Izx?E9hNc7%V!#FvV-gbR zu0NwKv`&?@$tawG;`E)PsSprhKH1ouZP~7?jRYG+-LGvfxQV2f{p`xe-}=d0mu}wv z>a(wKf*)LY=k~!p0NA+w^h@_Y`}}hkUU_5p)!*1{XUnTM?==lQbzygRzIo+Z+Isp3 z5rFBj-E(`(#Rs2WX;Zr~n{I4O7e`sgdFpf1^N-E0Up~BX{b27C{N(+k|M0(EnQh|M zS=u~O@vLkwLjjwHQ*~!=B ze3n`f1wu-kBDc=}v8?yuPIgAnB2!d1t*_ot|X?6Lf=_GE&B<>{0sY#Q~8(@HB%MR5f(GPdXr)lnU?JJN3U>e-qH=Q}jP^CxJN<`>PfRkZ@ z4lZ$us3uqpl(#dP-_CVFCVJ>$SjGK_069S$(*jyVoHY~auCWlW6BctBk?a%z0FZ*L z6#r1p@L#S>u#^-hLU@KY4VD4-4KOnH zy}z?nO#%+IU#pzYx-Q0|s%#sS-Uvi$%gg?AL_|Ibd)e^IoV3b7cKPZcVK%1zjSr7E z;;fl8914daSE|$4eD6&0ai5jyOLw>p{M>(RU%XH1j%gQWR$Gr_Wa_z`W8Bhb4mSjF zHkpOc%$lBCN$(h{#N)hg5A={*&L<_K7+zc*5I@&}I-c&M&va7#kS=IWQs9Q9OZ{Y} zL;B|xgnVO1ajS&Pek+iL*feq0VK1`vQ%k#aL7JtAtOZgoaC{s zY+IHGI?Y6DHF{LXlw`b46&q_HC#j6}s7!rDj#H0UdGcxriv=tW@+L{j-0o*-O5G?| zFYgHEtbJ3s<72dtmxtR*)RjcrHyD|I7ne6jK>5OY-shnbO^kBtu_QeHDJlp{2$oxwu;tXYi99c- z8(~%FJf>XMT1ttL1L5{ggUIt~$X@d-d7aS?dm=)ma4{27iKqbpfK^)Ux67k;x#XC# zCj*;Et)O9<$pyv*l&lz3oXRc9b_H0}{a&WoVzt;iI#|V|kXE4&@*XRSb3*b=#Ljk= zUA>4}YoXba{du014$;bRvzfwtb2gbBu9n`_H>H#kG(_gO({a}_49ZMC6=(>)3EE~X zQCXD~nDafT{j3ht(AVYul^rDI^yJ_Jn0lK^y+}DjDk(WbSyelfWP^vR!xoO(*lO!i zpX|NUuBWt0@IpF!y#4HoH}wJkR+KxwiIY{I$Dgfb|{C4mo^!g0;vrGb;X$d zflE%Qyq?s)nqvSE5SPn#wMt>aet-($esLtI^z&7FbboOt;Dq5Zna44$KD_bKk1l=h z=a=99;L{KH7JJYuXE)D&>4n$-<*UE*;uA04Jv_L7xCDls*_kgr{mSpX@r^(K;a|M> z$>lFR{go$npYGqQwZbMe1gVvX;9Ku}KfiP}+r9DJo990NC;#&cFMn}IyBYdszZgkN}9Kf_MD%ND@r0)wEEtsy0D(S-sU$}RG>vH zEPmz3e$xP85<)W|`EeGx5x}`}jM-6-X*0Mev*W->1SASE#h6OOa8ZxfU@N_!`ciKH z0(HT`-fb!}ba9Xl9y8VibkSnI@{i6NmzxB>#@MDv&t;Q)vnYKP@c6GU`c#Wd3Lcb3nC+0y#};A;0g;UrO37>?8B8D?vCM!ys<-hMDXPGMG_D$Qz>23qHie=8 zY*Kh%`1nn_$(ZCwqSP-1>l`mZE`L1Pd1u!FBpO16Cs-)oN~3;-+23C+2UDW>8vpy@42 z!v~w4lb9rHS5ZzdyM%GfY&j1LbOfTuchB^iQv;qOrNfV;TdFl;>@H^>I4%xjuz|G$ z6>8AE!sXoz;#J1=!B?E$K0o~W5w)~Z7{OEtQ%Smusut(!w|mXAcR@!C5yO8-3-WSRWlpKJ2ifOmgrIpqRequX03ZNKL_t)p23RZ~s8mZ`Yny%EW2+=TB)M3f#{pqxM5;=*tLN0# zK9LtB1<=t>tcPqt%7&jr1m^eDDaE8QzTF#th}h2+cw*r!LclhH0L_pEQlK1Wfa+Xd z1a8Rr%(X|593xoatrcF{I&-RXdg+4G;y)TA?1A!3f4NRV2JY_mTvcubm6{WU=(wT1Q5%RtdlU5?@H5I zTccE9&qqT>SqzRrH(Po*MFvW;>mp*AiV9XMmGe-2tPeq%!jjknLV37vk>ozi_m)+Y zE1$PehmuQPg5midU-`CYcGim=cQ+ zpZ_^r9^ANgY470RaB+0y_J=nQuFaZ_h~IeanJ?emyY~GLzH?*$6W{%T!n0?e-=3el ze*aob?TZ&a|A%jU^Oa|xL)Qr;kQVUHeD~|0`Ry~)%hP5uCUq*dJ3(wUxk{NY4g&Tr zNS#Lj05llnfHRxo#$!Rlxds7>jp zZC7o(Sgj7*qg8CNoiYG4OJJJbyYTYjmEZl1m*4#T3+JDhS@nFiUA+qY*3oQjEf{^- z?nQX*jjfA27j9l#T>fb9!ym7%y}vrV1ps&i?cQC0U%-3cUH~lgIRLUiO}`6!<>q#? zb(W4+tNptvE~?sW?KEHf`nj)t^TN0O)1{yM@D{}oIB0kibI;N_RQ!(7ztR{P*_I@i z`}*)x*$S)WQ*DD4&3#cl9WQg{bt%v6s5#D)hhK&KP(MU)EDMA~QxhY5x8z__fu{sSJV;ioa5qCR!2WV4O9nA{mjAh0iUWv*b zbyd%I?q^%o4q4j~B8Zx4JS!fkj4nlI@ALZ-MlIg&(b-1guoIOoSv1p;kBZN0uL zX&NN#X{)v*g@uMfQ%^ls=0_J`L@ISimM*Vh*#dXyk6PNrCB+}cLwP?kgi1m7+nAzg zMH&c&fRs{;XxSYYB?ZXP*cP875iptho97y&cugT9q5v9y34kdk3YdkjBGlyFkTlsZ z5~djGICuMgkpar;lKSm>4-xJhUDgTOQK>j6mLHiRI=_2ej8&%~0um%AUHP$7X%5B~ zpjli}Q2+;9=o+F@nLWa%szx9;=fHXzYBDZDLac0cJYsQ1MB#=?%nIwviBlzhAR=W7 zs1KHbVyu6qzbl`=!9!d}#|+J4T||VKQcMi2eUg_~HV&=DzEvl!85D>xesGFGpL3s6om;sJn%Dg|oZq{)A=NiPHRp@KQ|T5&1RUJ}b{+6fSZXH;bl-IF z@tzn~)wx0-J6D>OrEgOoJhuad6C^7gXy@@ll<9dxw{z{I>Rd4f=0M+@b-=KJJ{ap! zmSYF`RQVWwb^mtb7z)L5ZKAP_wIl!kIu?EuTb^>RSwQkCwfpV4h=yI*6()?_V*V@+wEHs2hp7=<{tpp_$c}T@? zgp{(?Kxp9s&?T`IiVm)ymH+^A4qLSJ(B@eqeTYRud+?|rHi8m8l}DT=+&*@Keh{Ko z_a!qxLLvZ3yC)pBp@Mz=B;za;=!8fdJApc;=S#vYO&aXUU5$dj{AclTx@};}2?|)y z%D%ZRl~|!+(AMgseFTKLY1uP;U3= zlQK1p+wq23^>tLmi?R#4Dd0<$1F7V!Bf{3%SSkav^_o7<%flw*8AB?ABpRqjOotvc zae~eB;iy=hlgM1OFB2!aS|LJ8$#;iuyLb&V$Mu_ADrwSvEu4*tEA-q734=h6M@E}O zyAX%Qo+`ocbS@IH1cnE@*=6uA z0B`;Bt^f1;|M7!QKj`)eEkombpGDr*1K>2;L@GD7b7I~etqIM{!%?=|MCkXaHC*JhQqm>3cfbdN|-tY?&= z$k$;)!MuZQma2<~x*2rGu| zQMx20`67*)O{_7omG{HiX($vZ%&{X^_@+rUco?li1PuAu1wc*XP*HiBqGB-iaj8s*hQ7#X*1o~*xs1ToDsLEu5D})Cs==P6To7UJ2far z27+cw9%&}3dl?&iqjk-B2g_NaQnVY4$}wj^74;{PKlQjmGm+FTX!W!Ze%+{2CLQP$ zBXR;>td4H(-RfI4ytKKdNTjWCA|(S25&*Cql@&?D(DO{UeW+;wftyLrEa?=XrCF=6%m5SMkrYUnV;4v-^r!1^#7xOYPQChdw zW6+gqGAr&?UC`@_CNwL}%{G3Xj^19?zBuA=eeu{`^&VYICVs3-9ORmU!*gcvtvLR9 z{lA0dRQVWwb^m$^uU-{(-~In_47rS0<4^qa|*- zE2f!q<&pvYu43}@CsM00uvKrr^kqQXm0Hq>O4 z12flt**4AjLKkpB5{w){JmSb`g}}Rc$?YjCFpQGz91^GOV3Km`^Wi=xb(?lpPweO$ zpmoSUD>gJHdlyGt<#h6@i*r;mWY05$nR(iIPxsu~oQGNuFLPB&nsNr+x)b6c580TN za?(sz$t9tzJmKt_YL(&C#@IB(O2VhQU*`BiL`Yd#?L0=SLY%m-ION$?WhuiPQxDN3 zC9Fp(rMw4u+{V1_8fqwnh8hD^wF=dSlxLYnK_zBDY~$*OAN}xe-~ayGSKhvVIKVX| z<)a(F{NKO*fAqha-}3=t#+qv^g>o z>)3@M?XG6XF|WLoI6w$QpI$zC?{BW(zP7r5d%0Ss*?HJ_Iv$4oE4S`_aO2u7xWt>_I8ZSKa3_rJMTVq%y~=DuC$b?DIo?HkNz)6sv}%C!W@A2? z)j6MYX_==32Zz&ycmQf(<}rIxRY~tj-g6kri9Bk@TqvGfC)wkey_}F|niOm?- zeqR6YV0plN43GBv3OVZLW2jswy1zae|LK2zrE+Y1s0XEA$I-(jy?6RZk7X2|MOT(CKj2JO;I)y&9mh$| z1H{T)ZtTWb*GZgua)xkyy=*o(2@`}RA`?-b) z9RQeyX4*6fIL2t>2({&)_lUgG7$hZRYshca&y|-U0>IH>{N=m*m)_ey+>b~=go~s0 z(<_G`+_-UVa&@tBKZR9l+H`ctztlwN&Zw|8*?jf!7hm0d@$hzh_v)vqrKdK|O}D~| z+xccV^H|t=jHlatZg=yA$DV>Xy>#u))2~bcV4O;)OcE7HAfrY(*d}T1iw+OCPS0Y*MAlboo@@5LG)`YS=ED^Ng6r%-Q;<17YJ0OywdTD(wX##gg zu~!mJx>q>gJ%%bS%`2A0xEhEC;~4B1^Bc9wBk4pAaaG0Sn6|%0@0I<8kOEN>cNr(E zpz|T^KctrQ`~y#2v=g(ty-g3J2gGbOA71HbNyxA^30D(q9r38}i?#*xMS}`^_H&?; zeZ!(vx=dN_h-E-#IcL(S%-@-R_MmPjjThtQ@{$FhNTh23GL?y4j1dt^au*K_tr=JX z2#71|`X2r+GAq{$(6>^zuM+mk93?3N6+G0h+%iS;bjbm=1FcJ`^eiG1AxAQL{Vs>F z3I;^ECyS_Xf~hT+rIb?Qobtg9oF!f&aelJRWBh3$V2B~cqkaU;iA}9_QC}R$`y9y8 zC=OvA>$Sq-Z1J6`ZJ`Orda_#$^`#&to0P@-EasSeHSXgqlrO!XCH^x|CGaE4^;lhn z$dFQ6t=h?SW|Q1%NM8H`2sGTuWoI5U*C8@+f`mQSz5&>=(o@uj54fYI4Hj!_ep(%a zSEb&}7nn%~VvKt65F%uUKJ$IdIS*jiawK29y+{4%o6mQNcplxT{DEkHb zQ_P%rKponCRW^pIGUI2ceL&<9)8j}DZ4D0mTH~p;_5skN;>jZ{AtT}%WjiVqkH9sR zIZ-jDP(Nw)@GerII$anU1$aNm0a>B|Wc@v{S6hT;EEu$^Y8jcq-|b(&C)noUt=e@} zJK2Uh@9MQ~3{BB#+zVa(2PzMkkKxgN-%)P6KaJaG{vp=e5gQ3 zL1#Te$U{Av820X`!$mxLd~~iEji(@_)+k9!l^CT92+7na6cs@gW2oDMnM@x{0uV0` zv<}Xk`3VTK@lVN86**v5qEZd2Fcr>;s_M>QP_n|Nz$kdDI9cNwCqy5sfFQvKBeWAe zhQWNPin;wRrkp+X+nsI2@+|nOLTgBY$K;s)kZ~G zv&W!#hUZF_L4iyr94xMldVzml*pRn>9Apa_x0DC943 z>WzDszC!;pZnR1))6K!fF|eSUO_+qxKx{Q7^uWkQC@CQ&lpXz%B%-G!E#oSA3M#$#JEfQ=(w#x{BEY|_x#^V9h@Y;G02 z`Rbi(Klt#6Kl%7)x9;DWh4~AQKN};w_vw4L_OG?6{oGTZd-LV5z481TkMBN~6xvv{ ztK~t<43BR;`R~8^?~h>bt&iTlaeM!BPkrWx^HzZE*I#^XBTSDDA|Y<>hL7)j z@Uu%lzkc@?!sLmar|%x#{P^~J!e}&DR@9mE-oqh2v0Bq2d0rr=RX$U*pO*4xv zM|6|Z=HHMA?bGrU4_wS@57*9#eL$eV5EjSK5h=~k&w565&2N%BM{hQEM03%VjpT*T zZhiLi(=*}xix;1mOo<_N^wM$7E87D!g-Pj+vVU|fvZHaXl?6I?os(~CNYXo|T7t-*&}_7?1{iY<&^4g12~;hMu&P)HfYXt-46f+aZJ|gk_A8qyHJO zLa#dac6!fVJR-2MU*`Sk?F{8CNgZQ~-W8FE)Ue&X8xfI^fm39Q`0O`!jVz2HeDP52 zIck6@#8a9dNi_@X9(=NpQ%T{ZY&Z(vk2_u3c`>MWhp^6>+TTKChgX*Rcs%^QfbYt! zYt!{K6AlT31lNtUkvSy@frn>yS}L4S9EQ$sfd{Ehe${%C4~SM?dim7sp@cC$Xaq*X>jL{cc!{k7g6c>6) zE|gRKREjiV?$~}sB6Fv=^%mt%x4`t?1>zaTK;vMuCeYHq`#Xd8*H*tbaQj9V%mnwS zEW=~x0zGzVU}>1$CAZNSlyjdCCYH;YC$c}jatdgcX6_xn-TSpZq>B$kzm{oli9LE) z7FR(4T8IL~sD5mzyu;d<_t*!G=~-KRl7MxwEKW2TG=y}w3eI_Mtdj@1lKNg3u3`j9 z34XJT)I+N|OENmp&SmSApwPf!-IFT4ElMdg$`)P4q7DiOoo%~DANy7E8Lf_O&d9-0 zDRk~Vy{C0F;PTyo&4zn7)YWq@9r^qZR!)_VA)5yu{pUJT!Kr^;L0``g9jt#0v&=t* z;#S^6P8wyhQyC(;)956{S;zs@HA!SgGBFmrF*;t~^uMHZVv?ruB2bZk6Jv2|&x96E z^-YOcD0LplvNBB9ajL3{v!0`m5wB)Mt_49O7!gN*)4?^_03znF+)A+*uWR?55_`p^ zlTOj-3IJq?@zEGa9oUx=8=F@4I#*}v;)KD){Y~h4TCN4A{8*#4;Vf~cm;|`+IsLM; z>Vr-{=}b#J&C1zd9SrKcZ=mNuQTItCb7?8EMcYPEk4U}TMG+<4F8z}V8H4vUfwGt8 z%@%8lKW?iNinl^W-prltuBoNg94VPu{!WWowlK}S&KbUo!8c( zT}8bwYdNO)tsj5u&;R}}?(E;OD?h&dzI>QZ=70RgAN}F$e{gR5Tp0rZ1Wdq)keDN< z5SpiVpT2!>wOm}AP39Td5n4j!@<5<3zxd^U@!8*c=i@7vuHV?0&Q|U6g~vYI!v1tR z+uqoDZ0r2~{_^VWTg&!n8k+OFn~QY+r2se(#$#? ztNm;Gs(s-X3+u3sf?TtvnKsS6bg*pO3bP*BxfL@939@F&Jp1?Vtp5Hxci;Z`(e{gB zvdN!b;t99Y8Qi_Lx_R}^jpo+PGoLJ8xyjSR{xhFEbMECQE}oyC*`4e@``Gz2&Gw|7 zZfrJZ&QCYDE9qS!GvT|_G~?O77*v6;LA{}dpqo^hiOZ!~)%J*v(8s?bAWgyuSxondokQ((#p-iHG$9~0 zp;;`KZETC-dXK_p{p9f{Kp@R6gh)Ln)4XoS+Q7CS+L4zf9ztwFLoobq6N@C<))3_g`xT^e z0E(nJkTS(;t4)@>Q{kanTe6{u0XgMNbm(N-j9N-MnLOFL>x(t~N?n?WLdG{K3-Y1f zY973lJxYQ_GML_J5th@$&hQgIzq|q&Qe;U;Mq-IcStkG*V?fI;8Yz{)i_Wjy`vz)u zqild=UbQi+=^bv8&YOD=%#K+t{*IU2hAiA-o=R(|WtBTopshKYkoD?<&4ol?vY1ua?F$Z-;wA)S5 zhT66K5tcENPgO}XoK$`g-AS@;$&ARk4ksD-v6$>QAJURjeHZ8HRXzs%Rec`V(Q4?V_w(?tzcz(awQoMebMgn_M}06g z!~YqR;?0%7)DP>?`YV=}tC7YTR8Cx4%_-;AHhXVJ_BKs?oJw?Ekx*6t@O4+OgM7qM zT0!<~br69gCXQVrf!l*BJ6r|pbfzv!-w3MTBpc~~Y z0gFS^WU_Do00@|kF4a7%0y_;i07H!nAY_Ql!&F>co`>8vtt7254G8^K)zaYXY?rB5 zfjLD+AZP*-iO@mfPEOPfQx{Kh1V~lA3gF=pTU0{Il&Mx&MGEosLKCumh>R(Vm^0|* zVADVth}3`~wXYXf$9B@KHs%x5!qU0I({pD^dTRfrxCd70)U4SI6olO0Kp&6n1R|k} z726j3=^?MHb`Ip!#bpHbP@gpM)FVVpN%9r5DN)pu4+MTSStHL;EFG>Z0!grytUmMe2BQG-QBUzc9iVeFl zBb{zwI#SHY_3{vy&QrC3TG31%T?3|)y5w}W9Z`cDYMPMR7}IEceOVE0Y*Pxg`J%DhjswIx;G7dU~n?xBs5HI%9>&6V}Ar_(1$)h>j+&?l^p?mn?MZ_{eyaCLxyk8STfe*Ux1oqP5At-bR*J3;f0 z>qwNR$~(!Uv8swY-Hc7utYGVUfM=7*v}xKDm$7YA*24!~6m?9C%F%=gFs2Ca{BZB5 z|8?*B$43Bg^Mk2g+XBFyjXT#azJIiH1F(Dg%qO!8TRY$Q+$(?h#W$YVJ-dIey?=K# zozrX<7Kbs$VZJ6V=1$$>GO&|mA`)S&m;V}hMWi^(y5y8PHY}*~lzPw1F_}_qXAb0E|gUou9om&PfTy3{dppVO-A*mfO2ZKBBHB$=wK){&Va~KPWEvuBYI1 zpfo3cj%YppWxBT%oW<_ap99foj6XVLYN+2&U`g@CS>TVkPbwBB)JROEHd9_mfoNkk zoiZsZNX(n-!?b#aO=FHNiOY^GUdJ-9*(_m*sYnwr8u7 z?4<;hEGBPl-w{!upk79)1Nr6tP{DQJNeBd#o#h2tMD<(|8-v;p%0|xiYDCHz5~`)E z?-j3hd#R+6<`xXj#p10DA^4}8xR5iR<;AHvpT~qX3&KlT-0}+tlSYcvM3?1$eK#Uv zpfI7y5iYX?U3;vr$sfL^xXFn&BB=GuBT(wB4jHzGpLjBL4{=21m^g{|R92Gey$%8U z{`I2hsGMD`GGNb6!zcu@RQD%mF0Gg%^m@!p0xHc7O;6P2pCd4aS8C71<&-!(6#8I; z&bJ{U96O&K%@KM4GB}U>?x9BZ4`$vy9?o3t?&Z|ojnHPo8oUGn=hJyWYN*Mwbl$zP zr=`TA*>(!KF~hXc^_$odFl7HsED;%jPQm+f@={O5(JAj^7e*zx`mZ7yjHBV>wHm}) zv+qY@1HQ7GES97-35JD>01?zN!DkV?Pg;2h7LtXg@Qs z7nSM-#FcRA1Kxg(;~1bvO!Q!-L=q}}{aB8v(RvhcM7DWmUjQpCmPTVz-cWb%^U? z0&i0sDTZi!SJoV$;J{l(LLWD3-doP&-5o0;gcrvMGYS+mi!qzzmWyOTphk~s;d7cH zr99lQ2_$odD+X5cq%O0fClDyg01`9M@xHMT92f6U4Y@&|t7S^_9IG6C@W*j!6%|NK z{?*!I9T#OWw&f{`W9dLI(btdnVy^YN#;gbjMG>2F%ysn;&a}fi;F=+DXj4T62lM`B zb`CEEiaLsJd)AqO*n|dg#hhsZhBmlj6=0Y2h6`=8D$66lPELV@RYHr-70xLW^E6A0 z0D+K&l1t%6^Sy16`^wvGY`^i!Z~fU<|8&(h?|gij z5kZlqU@e9#yHjoU_Yuw5>Czi6LU< z$edDA=0KfK+A3WVhNt*0_lw|Jc8L z^$Rawcy=4NccvQz7+Z!}obTZFd=9qvRNTq~^(e8w>@2B8?CAluYl}kR-8%?NC_{~N z+MpJ~u$0o_e!Ez-uq*DXptFYj9@04xBz=yo`5=C;?sV#4C_Uu)lp-7qFo7^DPv3Ex zxwm?_YE*#H#9* zBye`4;U+5xCBaNt2+Hm!Cwyr(%*)|U<9txr8G7gm**5_53?e!IMTMcRU{*mDnGF?S z(5H%1L?hP7>zV|IW9;tOdN|6A%5&M=aKSiO|OvRx5om9`VdaB7$2y1{uZS#IqRpyM$DSfgenF#D-(8_X>7IWvPmgjK+e zR;<4SO4_;Zs?WX?CVL3YMmH^o?G}ldLe~+&&NvGx?luiGvkfA}*b)v<`uOK$^L)KU zbqyOs&etyWHDsl!8^%y!Y`%izQs5TB)QniJ0-9h0MsRr?$FO_=^3d-9O=zAx^CSRB z(yvT2CFDzT(B#VGlxw=UvdkE|Bv)0uZ#lMgxNWwaASd^OmD6DlJo?9QaU{{lUt8aZ zF2p1|mym_YIcvAi9k4EX`k2yfS;sS}17sOo*>Uyj)PK00PN;A*q+1*x+Nhm%5+*Vm zk7=9hu4;)54hj|^XiX!kKPq5+?E6Q7)79lzKD!6Z$M9%BubCDd^lV_`{u2am zOKhV8XsjYP8ccJllHE#EIj^#>GFCWXey?7ZIw~4JY|3fK8Y3!*gUWZ3GkhlJKB9mSauQE8Ca#QWSc zT`HUhY=%3evdT0_hLkh<<`2W8QqrM=W;uqe#vuw_K7>F-fcdlsB&Hstz0;%7Q8QKe zn|%_J)VOL>Y^@fC4&?qNmQak2|0s+0s}y9My-L*mCyNT4GG%kYRfeNgYTyMy-Pg-P zE4A*i!4yYV%QmMK&9bW`c1sTW%)P|9<0rE~OIRGHr21Pnp6XaIvjhM+rx>5K&~=T& z?ODw(2Hg32$Nb0~Bb=#!H6V;7ZXz=Wlco7ZDvG5fEd+qnQjDTSU}PUylS!_I<$7aw z>L3@6l7iHw%jT8&oMk9}P&IMTXC(_}zV!m@_o`H{apsgdqpz$O)+{62F4Hz|q9tRP z6D~VYjwMSL-sgaUD8`5|92tzt&5vzLi9-eUp*og|!Z`#=keWR6H0G`gMMf%}ii|l? zCN`mAY}*)1N(`3iEr*F#L-&(Z)H}`J+%{zbd-FN=mr+2T}nfNb0_nUwE8~^&^ z*^8HM-XuZ=1Jj@nnDwVEXF0BPekij9I_Gz#<*M;LJGFJkHUJJ-HgMfw66#bez$=m6 zXx*zZ?_&^fnPa9NcP1erZq8=&$z<8K_ZNqYwjDg;uYP>^?f>iQJ3qSH{|NxFNz2dN zx_0*cJFD9pX*WVV!ae)-^G`qfXJ2{q%g?>EIh!pG;@;g=R4HKEglSV?queUL^!km; zS&MwBaHs$*`^mxK@|sgdyCHnrv@x?b)wpVs0%uqNL?eQUQ~ z61zae97~^bc}sO;>Ozxf`>Ccq@3-;f?xG?l5dlH3Ej`(&1hCY8cr}8MSVfWXaI3B^ zrixPjxQ-BftS~bsP~qzMi_J}f%R;c9*Qm6TF<2Qu*Su)B|1qEWnR5hCL{|_Bzr;!W z(+6(MQbgV`2fE1WQs$>79$=0!fk(&K-zMj~>foqzaRemly*7!QS{aX3w9?&En%m#V zSOq+i0Fjgu!a%U;`axM!I-YH^Qxaj{E3Kye6h5F-kshxpDj%uAk{Cd^D?{KMx1{`$ zqsh?MDF2d)$Srroobq|d7%bq%z~h{x1RWgE9~mgg+xrC5?#l75P|U#55gE>o<(WQ3 z++dupgO3fSL-eL=GcEXQoU{)J&`>k%rp+LyK(&n*O;=rXj@w9WR}>yd@nR_`mdC-@ zo-y8sy%ugTQ#(4P^dGO}`D40%*9(5sgQP;YPg_K@GmkmZN{nvHpLWF;Qfqt4;%=#c z3jbWJngq~cF{-z(A+=5ACHr&O!7Ja7A%qwsz({71vt zd+euQfsNtVVLnwphF{&k-8hDlWu_i}a~t=+{u&l$zI$}ET&;HJ^W6uEWRzkclpwMW z$$RjQMd+Sm{mS`;UE4Drupz#*DVnHf$D{qKIfnFo1ehqbkyGBEPSu$m&1CSJ;?&j` zJN(hi(5{j>hA}5WrUo90HFUy-4y~_xRTLR@i7^k6Pqce%LC7rXA&3NlF}9CnC3;TA z0Rf8<04Ol#`~gLQY?_dw)XI&lCPWh&BLF}M-irwUV#}c^FMY`RGw^Z=-12Ph>JarxkF=4Y!AYPdWH&AZAPmsgY;}pH#N^)PeHg)(2B#2^h&Z7c zVBC?Uq}QtBt4y!yM8HC4xPuv?GG-{NB9^O0`j9P1fSIz55@PR$j$eR^nwj>>;BTvj zs9UM!#UVE-GBXkv06k=wGE9U@8)H3y$|I!>Psw7{5vwE0K4qss%*|Fm)10r{>80|I zxHMv3u(kdoIJ>d;i}5C<7Wn<9lY*K-BS?j zcn9&RG!VAJB^iJT%nK6HHyG01;&A^cQEDJ(W<$e0&@+kKeufo|6}rd^wbyh)tMlt} zW-`69{zd|}48L1�^+B-{9Hmu?&|ssTP*Mu@B7d2g36Y4z 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

    -EL2VCSnf@+)mf3!h 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

    702YHmTWRTur_@pB81+YRsp1JQnQJ|Gh85l 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%0D2s>9sT>j%LMI?roxa*l1XkVqWFlT71^X<2 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 EKPi9EhyVZp literal 0 HcmV?d00001 diff --git a/docs/assets/dtensor-tp-accuracy/image-20260111160656891-1768118824549-2.png b/docs/assets/dtensor-tp-accuracy/image-20260111160656891-1768118824549-2.png new file mode 100644 index 0000000000000000000000000000000000000000..82ceed40453b84024aedc39ebd2f5a207ff0b619 GIT binary patch literal 388037 zcmd42XH-*L8#U@VuL>$nMS2kgq}KqUA0tIVj}!?ABE9$CJc1xyA%OHl2}lV@2|XYp zLYFS#uUxr8 zt@%V1cI67?z?Cc4XeoaOe&PA~#RB;F%^Rixxl)N|TfK7S{uNEtM}`5}>r z``=gK;Ilu|5a0j(LqO1ztpEG_>?)V*-?#DK*Q=7~y8p*Hb2JVOpXJ{>YmqowG~ zl6C))NN_?kFfs_^1cfD565r=}I!!$?(^ zyOyWOAv5>OpC#ej_Wj7>g&&sfp-A6c5@*=nV9OT9lIFFYx2L1yHb2eT>5JUm(4#r* zWjD!TZ2Va>g!kGDSxKG zyyU6fXWGs;gSUdhN{!uHkGq}sgQmDN-pRy3;;{>64Q}qPu6Zi{X;O)fdz*u*0&;9L z?vt&l_L`V!%95wNBMqU?{<*+U_E-O|0EZS-nj=Z&WRXB7x>r=8l>O&kFM#96W+vl< z5Z{ll28m(zk~bR3Waq>Mwh>SeFnhu0a}Hmb%q%UdjLVB1IW%!Itk+4Eq|9QgF`2>{ z^D@eRE-@qYZ-CBL7tt5at(?;;pY2zLpN^M{$!2MlmkXuYzIW$yD?oVRS@*kfV(oXX z+IET?8ymy>i(O4E+dXxjq}iW`g-hOGCZUXL4R@%u?;c)(GTX*)yRY2&&)?Vhe0ZnL z^q(~OY^{m3GZ^NiYCgYkkr9f8IG-nMzK6kYLLcg}0c&mm6~XP8A3kx)s)K1J@12Gk z(5K#i=7wg&=6^G!$wv$YD&39E{Ab*=<$sJ{{pW~w2+pYXo~P%9_>Zx%44o3h3OJ@^ zYI=0Ee(N;RIvvW3_2uUxj0tCULEiqw)>v6yMAhjbpL0_{X~4|<*(X=CyE*oOY!5Y) zZA|$hzpG{y8wnn#Lc3~&!}#@*AvUHA*y_=*zLBn`2m|OxLqVMs@$6U#xbmq$dMeC- zO|OIi(nOEeTc?M#8w!rqpMQR>o%ybS|BL1iM}NveEv>k6=kmk_I!GiPVbz5}Eq)MI zYPfUGqxnUgs^lrkmkz|(1EfB^bU}?62m8A3#q9;}7UkE5N8Jt+a zuOrnt8&e1%K)3z;z#6ol$ ztk^M)M>ClxFqg65ek3??;WVu0kP}P*>DU|4W2yiG;>vs#7_9*f!TESU(I1Xn&klQol6detPKWm|E0*-^p5b#8OsXuTbawkPo(c&GDYOI=D=lZHrx^;s z!OMNDRqbv}QGD`=DHaX>y9cO^oT)hvp14-?(t3EmHQCv@ynMuIM4U=s$phRPwy?Z8 zox2tIP%n29>?ceKjh850d;x9^IreH-`K0Y_8+g1vRy*SK##=PCM9lb`$)27_^HSK&yQ2XkeM4U@~uao8l+I=IfvA?@!an&76e^KO(` z10w^2j7(xvVheHA924XUW|L1m@5PDb$OjJ9yK*gosQeEP+-BNpTN-4u)YELGStZmUde=+dhp-ubmCuq8@!Rgy3# zLvfW0qt4RZKN7MUE)Lu;4#r2yFHghIl2}<;{bd@$E^y&3AsgykOG#lz%R*upaE@-( z^Y)9mXwIqT+9u-W-sw3w(+hXw_3TmgzN}^NezZ!+Y2PXV35(G$L(`NH^u#Pq!Y@wR zPbzm)8fM^@mWPT&aVmqiIa5>Z$KjWD-p=Gy6HE34bQ2l8 ztIEY7C+7IX8JKxR^S#0wJ-Z>G%({u^M9(xc5&W@YA~bn1C64iOH~d7el6Ak6b zC3ec=e<3wVmAcbo{dnC;^=U7YHyc)*dS;g$n_({pCxa9D=IRKXVL{uq{iu!poSca) zvr22Rql+O(=WZ*;@06gYa()_q6m9<9&U^c;$s69Y?K93vRrS2(wr(-<{zqfMO0pL| zW)$+)l-^f<>hs~3F~ge@mcmd+0EVknnnRr@ye0=7CReE^a@_QHLI!elOQzh!a5b>f zy2ekR+S>3;SsHvnZ4OT}{aU72fkis$#Q`Zu;TUTOpphq-J)RG!>OIH-G0WzlQ1`0m zJ4zeR9yQH_b<>Jv-KNhP{HFs+vh5RNV<^LNl5QSVh&`C4A^6<#{G=hpW3Abu=THY% zBOC|I{JQOywy}Zk)O-fY%H9PhD&%bTXUR@%)Z0$nN;vTV!G%WIusyr26B}-BuC8vb zLP%leF|)%+Cr~nM!7SRHs&6cseVRK2HTK=0Tw4*|wIKV!Zz%sIZB++aY-}!(-V+GIofF|?Y$ovKHBLRoXiuR)~ zyQG2K<)}fohMCaIh`&SWcx@yu@438ZNa2{1eB$F9ypj5lA5)DBf9^-{ODDIk_yj?o zVD|^|RKn*n2+-232Deb4NO;I&LYCG_Qyxx-k##2O4;u#Ig7?%st7f+LP98P2*3<-5 zsp;_BR+0}XB7nN$Tp)rCUP?8|mGe#3KlyTNz^s1C(O>y^kuZZfy;vR{9ba3coe5e% zGFtLeEU`AYov-Cswx3=^Z-xFGJQ*MND))5>MVX6=HKZ{xux#l1D{@57)$!jXfJ&@> zkoVOK-`ko-t_(UTvLw_BKX~+R3CK)#s%SXb*xS+5s^c&eTIy<+xByB|8zm-U&W3ie zi74i5cQ^OTdB*nEkp1z$L6~LV9-m_dhc9xJAnu@;7ou!wH42@H?&95K^vRf1Ng})1 zbMt55!1+d3v-7Y^fMbPhozvF)`=v234&*4Eo_P<9uA#?3C&cjc5!6IO=h&hJ@t3er z{H;jmAC&%izuOcI58WKQg|Z_^R!n3~WGS@t+wCS0EraLYFoq1&3QyFF-~$clRiENN z7&|F)aH_Ozcay6y`^#DX@WN+lOJKZL`F=_GNeKxUuc_(tXU~3`1M!;E&tz@IbP#mD zv9ZzLkGeIW?3}?M3+9T1ePOa)&p%;-3XlT1YJ`KAC&xJ3&JW()8W?pl;$4d73>A)@ zFHBOI8lP zy&n7E4Y#TZM#vpZUb+KnS8?m`w03O0Y1dvh5oMOP|M~b1B(7Cldv~8`84kSZ<;dGA z$ndHPj%@ghZyZcdTcp`JmkY6CM3#I6?#EBI77THEY-|K7S7}y7WMpLI zx1IyBC15o(n=56RsIVz9q~;R69F`<(M8}Iey7T;^u`gw^HqaBD+dP!L11jP9aFisT z8QHd#Cl?Bb_AsXaHW;%v~*@hxN+0`BcBnQaGTR0pp$`J+u zabesJ0TP$4(ykb{P-{P+=s)*m_31;_gzMJYj=r(k=BB3gu3AEo|K`%Y`@dB9E3twb zgPDDu@z{H<4yYTv$mH;|qwehl>X}2D0zL>OX|mo`z_x_oxP?}j!oL8sB&eI2DNI=m z)b)XM7QpYJx6f5?N7KC#j_vAtqmFUQ%E|0rv0oQ7!`9-<$oxY0OOsXqmq-$kH}WH!6Q9z&rU0h#NhUH!_wXcvm00<_-P_(9#BxuK3mH2P z*7ELt#-(aO4==6yqy?2D(b~YHI^GPy?y1IgHhoC;lF9LH!Hfx8JbNZ=(o4%WcgDkH zUr8P%OJjX$b+rXjNq}yHP$GvNK!2AuI@ zHCl}vi*T8^kePOG65as>4%}Jn?v~*CI^s->0%ie}*`Ab- z(_B*1q3@f~QvvqmUuMve;D0A3y-5MZj!ep(bF-NE3bxOF3SG@#N<$c9+_t9tXU;h< zcS*8tQ@Q;GUQMmlZGIaD%IPYLkbJ zVq|D&sDKo>mwzq)fEX#+XvGvied|TtDCAqgx75+UNn1mG!wp_o+4=b$Xx%}`0H`8x zNL>JhzzLND0KK%FgYqkp&FN>uwt1dAwG+>`lfs6b(0nQ1>o+W_h@5-a6wPq3i$6sw zbm^!YpcYhw`#``9k`KZTH(OLLm#UOoeB=^S-l#A97+)Jdak_&gx=%7CJ%kFN_Ra|_ z?~hld@L&>cwqx3oX0l{AHC~6Xn5|Ow@Sm``(#G;%T;%2F+H;%2El6?caP$@+j7>Ao z&lua!Na4qMfFN@h75SUri=E97o;r*_FP&}++uU9$)Ee5W#ibvP zZ=@R6j+lF~AHH`aJQ&Z9l(3sfBL&8Lb{~(AuUVcQ=ZSz=BJThxZ!=AgL`b#Ox2=I` zxFT8Ak>(a|BCL5K%4@WT2M0qu%rplUW=C^M9Hs7AFt*C?4`0NwtbX#})uZv$bu4 zqv%iz;N19!gD!R~*R5w>eBz2^O2B3{xJRdGB4Hxecss>=Qu;YHZsf<0B|a@DmW|xB z1d)WXe3aEV8!p}yXI8X(69Cnruw zIKasHuf@g16)#am6;3p`(_W8&BI_E5KO%5ZR^I_#Rvhst&ui$}M>HIT9vOk@!=PQB zk}QCGV;5gt1-i|FeAG1gkw~px#D5aeF*v4`+VG!xAlS{%wR9is zdoo;Jg#q*fE=TtibExvs7_f$N(8A7&xviHS6o7kk59aZvD)tvwzBeoM%N$fpb7Vpp zd;8iVVKe~$oH|rqIix5rFUO7&bAvaV60EUrN8u@oj0V{^xX`1Kuuz9x0C{U_%*%}d zwKq~uynKIt2>2mI{IPQmiYtdHJoyM{X%S-40)sGy6&tvCK6Wmk#cHVDHPRRP(J3V6 zSdco*T?n5pKNtH z&(K!BSR@Q6Uxp}Vn4hh~YMWFAfUuvoP#Ea4yjUNI@X{|gMZlnM9a;8+LYqcfJ$Jh| zEzAUccaF9J-{2-R%Br!lrLpdrJE+ne(~QPgXWErF)qVO-`T9lM(+JijuRz;Cq`4>% zuYkpZfEkw?8PEskY&wAH3%b6Nm2i`s&V4|sY^>FF~t_Z!)iiH z1C)<5!F{^f_aeidWnaC#$!09gdSV2Q95XK?Iwx9l()`(Ig@~9vCglO{Vcxre8sXFR zS}j?($xrN9?24|Ghl&Ft^$?peSx zFfcwRD$vUrbUXBT6VtQQ?#O0|;N`efp>kPj5gmUS?#Rj{O0)RlK%A6iOxC$%nY9E{ z#IW=J@fWQ_-`5@F{gd4R6%)!1rWT)LXbWL=Kd6%I(H)7) zLf2GRhn?cr@SC}anx?v8bElKs0l5a(;QT>wecR}&Ptm(aasab)78N)}apBJutqw{d)^0Oy9u8s<4?udTz<3!umZVT3hNnLnG*NV0_DBPF4ey$(yLZSEs`#hzs(~JK&zchfj;*{&#E>buz9Ri!sK(sSa zAz-;A>9zf*C3?q|vTO-54fReVcJsYBbY5KM+p#e_U{z;oxoyj2Thbb2AoKXZ} zEjigTKn9FejFe^X0!fykoeV;|wir~U3)$k29<3DI5QtUGjs*0RWQI+ko2efXR%u*T zZ_TJC!9+#L^+?~s0VIsGiRaan%+>B*xWQGl7_6nGRctHS8;LLgu~J1D&@)F>H`l-f zQH2v;EXP+�q{d8L|Y_CuS$Wq!!O*I3m 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 literal 0 HcmV?d00001 diff --git a/docs/assets/dtensor-tp-accuracy/token_mult_prob_error_qwen3_4B.png b/docs/assets/dtensor-tp-accuracy/token_mult_prob_error_qwen3_4B.png new file mode 100644 index 0000000000000000000000000000000000000000..05cdc399eec7d7636a9d6b3b8abe9a181df1dd18 GIT binary patch literal 689121 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%0ANSdnAS&4>HKTK+)rhu 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

    w2HKq%l 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

    c^1%OX9&)nz-v&>c=pK3V`RA5? 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

    y7%&7=yj_5PbK*a4J8p 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%0Ah96Cq=-@{ImJA-N#9~114sfk zCu_6d^B#+QqBLqV49{>gO!N1z;l6R1SlV6Sr#%T+4o@xcj-^fBjq_TYBNjX~9Fxz1 z>GWOAdrIW$W_U>N*;sj(F6y}WtH{YEWtVV_P!p#clqQkJC;en&CyP8FupXrwEpn8- zX^T>xLIy|v!D-r!;_tY@D!D!K z7-5g3bmL!pmaQNjUyRucQdCf5aD93I9%z?4H^pW<_ti8`^!k0C=p-_(i>4qR$aY+& zAoT>u>IizCG|bG6?ymBR1#Nq%lMjBCwx?CG?z%4g%D}GN*Zjezfb*{;ZMB49u&d{J zIed{dFntagR3N{OK_uu=g}`Zizv6RnA(X!$l#xM{k#Hd2FAUUGaSWJ{3o}d4jRiss z=X?9@%$TSAz*v4=_$pW-zWw-9`ef6+i~qof8RbsIxiqqf}BVYR-MGo9M}CBfgY_hQ z{n>arsRM=b52F>nbF9aQa2O`P#^x3*`vGzJ{A^{iY5udsf?y_DS|fZN>MZ@=IaaPsy65B|~Z{stWW)1LS z=*nz5_%&40R%o0|TB^wmy*d?0cw$I+Z+HAYlrX9~P|}A|S`;K}eu;CbZ_*rM6sB12 z#URD{jQ0B$C2H%Q{r3@yT?NpT?63N#mKe73-KM*0_T)=_3+I}xy#^tzc4>3UA+4mo zLjN)dW{RS!G@VbjQnF7W$GY8n0$maK%Cm!HYv@5BwcTeazhl;BZDz5e-HZvYg_15w z0P`m9`?rpkX+o1aIwIe7GO$qB#{*S=3>MjipP7H_+b1pFBppB+j*ZU>&KHDIdLO1M zgWK9!kDH4zU0XViS)`{NG-lR_r^jjBr;~%YKKB%D(SbzQKBqu)_DE28ufAC-jKuwX zIov%y%lQmtV(@Ey`8H>f{@DRsfCjf~CHZ|lDZtL{-)2`Lit>!zZ_E3}2{gHW(LNO~Px-vZOMNE=~ytnuL zy_K#dYigqV8T~%^EK?|Hg@udJcBx%lho%RT-x8c)zB=n&z?or$^XHR~d=)ZwcD#gI z4u17Wz*5?QGh4LPTd-EDCU^x5v(N(_#aAKr6v)n*n#<&J6fn?g$!R3g(S#!X&1|f5 zPM30~La$bEmQk>^+j5JKP`+#~pNy(g-sxn^WqV?#vD=n!3L*YdXb$v8WO0TKWa)$H zBDQ+#S*UTNPh{6zIx#jaq(HJ}LD!qrKyX5=KdP`pD_^6ZA&Q${&E=Z)7Ub z+t>`2>3|fIHF>s8)4}twYuSRoh0HT+BB(dYTq7$#76*E0-n4^EKi9EsREFhi+x8=- z*jRaf+9KAv6`fWmxQM@vhBcVZxdzWo1V}Lvl27Hf zX2#^pZaA1hRi{i_*8d*8EWGr+)fHp0fo6JH*GhciuUJW}zpJRbdu@wlP3V&X48Z?V6{-u7bK4*pe66jY^4@k+dvihDQ1 z`8I=m z4RG$dw0>qxBWY20!zu^g>w1Z-fBd)kx2aOGB9KUuIZdFd1lt>m?ML!1B|aMJ=VJk@ zL!@+10nm(qQQq)7gU1OO?HkBy<9;2NsEkP#qo3Y;B!XtS{7ph177|+y!Mt+T3sT^ZTy8+Bbd^|KOsb? z#=J=0X>?q?G6;Mx%%Xb8YtYtNH>3DNJFN1nN6Pgq9lwT$a?+DAxn2zj+uDj{m*H5+ zvu(AZs6`13+x?VGc@{1{XoBXP5RG!^iuY9{_`UpyinF?6LKamd;W*(bMkDe|ZTM`6 zk+Ke!F8`lW{)E8&deBXtdaYy~KS+({fjC+|G;)y(In@4u7C`4{CvJ$PoX~3NMtSVw9zJwv}a{H@}kfw4AxM}{cIq06;`1|4rh@`X@L@I z;V3c%VWa@44oT?DSKcBjNe}jeVe27_0bO{wcNGZAs-f?wDkoSg$=JT`SVsw?O_|K5 z>}M^QyldO6pb5CN_-m%DQ~gSh^g zbG!QBH`B~7``PFcCX`n+MXU+ievVnQ7~<#FCZJ(%L_|UQ0qm;uyY{l|Pn?jz2ylG& z5--bi=AZqh3vGW?5pK9PQPs=Xve(an4ZXOSMZ_Sxz&lbqP7Y!OlII+2!}c)4rWJhE zc6<6dicY}pUh{x*lV0&Z!g94?R1pTN&;PF}3Z8S()NNzPPrmcKvoHJ%cBA{7vz;su zW4)-Sr1+&oK&42wEtzXX2RO5(7DOfd1Ix5W04cyuieI=EZh2hL^nTa8Y_UUH;@rR; zFars~q%zN3ytHtkX-{l6brOsdOIM;7o6py4XHxDNp2SgB1s)eN82w6YRj^0>y(txn z_Q2Y(5Gu1`R;^pcQD)J(`!2Tv2VF`g^IoK|$O1#2dkKXEt+Y-xBZ%>r(M*ZN@26g7 zHDf#F@DRf)ddN85^dLxwo0()beC61DywB+>*)Uj##($w@ThG#0q#8W>?H#Px_VC3d zcmhjezLT+;dHn&6tc==5b9rQ3>cSd-r;{h7i5}xr1^#lXhKNk4y9&r0CzM|@WrP%% zot5)$rb-Qr>dbPKeXI{h*rkp4MpGKHE3g|Z_!i@C0zgA&$Y_f77V0rDWX>NR;BmTj`I;6Y1fjGR}}g%UA(}}@r$vBdj$4m=x&ut@ZRB9j&w`%Bi{`ifsg75@ zvhI+22WC=v8FtIqKDAPsnZpQs$AZx8RIgi)zY??6Qr;9NZf=(uKC_j6h%W(Oa!u61 zNRM1}^zB!Qi@7w?*w!QNxICe1z29V_5eVhjirI81s6uQ>wi0>D9 z_`2jC-<7sjKwUaWCIwkli{++Nc;l6Il;&j?9>J?b2A?Y8fvS zlSr#}be5_YNc(-`)^gAsKt^D43bPLYn%b1u(_u}4q=7@EQwAM_an_9PEbz=M2h*N=A7yMdE4+_*P9j}znk`g!9`&xWT7BW#km7|tc z`q^n{=nGyEWK`xXV0D2`K$Sjw7DXo7; zAv+|9PN(OOWYA?bFn@$>O20@@8U2GbU?nr#29mvgp+|Yv@X1UiO@sYS9CFB<;-FDpF-SRuOP69bl1pTM9P1!iz!MX zB@jcjWEg)X?U0L6b~XJNjBo#ff!)1{v@N-&SjBvD~6|jTfcR854@?W!t{;s_-ay!-8 zphr$j`zg*P(=I!+m-r;E!kz}7;=pzBs<%217i+%}zmV%y@={7HZ8;5UIW+_rGZwm^^?o@b}ot%$m4UNa9Fr!<0Dq#$jnk|k;+2d>d_$` zxC)XDfQ> z8mAVe>y&*{J{qD#^Z*_%q+9KeApX?hHF2A^^>mp&9`=xtRXtF7?;XaQIIjmX2Fku` znvIl2l4Sy#EX-{2;Qq1`Y^57Rd^i1qDRzP%6h55kKh|d|>xeawGcJp}my!}+q?}PD zHz}30_`9^!i6N-3vTlij6*kV^FWy)uc3us-0h_ig)y+=}1PpHACrx#cw$3w*w&vF^;&` z`2aa+brG*_%~#^Ot15MwKz3xGQRe4jrapqYTWd@@(jXB}Pj9Z~QG?xd(G#hR<0oc= z&+38PtODwIDAM1?lzCS__MN3iaY=4=t^A;q25UqNb}F|DSC%oK7u6O>_4A;)Io|eB zpnObm_^cg`dLg0;sb!K9`B4XS$HP`uv#%^mkKUL^XK&}LwLGMXa3ru_``~lhd_*-< z{RjPdO)+(w9@d+29qCOoySfH|TVKo#K(49o2Nu+cD>*HZf=FIeog872lolz&Beu8vKy0+KV4ukd>E1~OJyyE6 zVPC9JC)+V;k1L=n!8_u15jg_aDbFZ$D_65VVi;T$7>P+>GfvTM@(m95EMZhxt=IJw zd~ZUN*7+gO{dB$6<)&#>x}EPcRNXp_4UjdvX4FiX^aF)Hxd;R(SJk1h!JnIv-d(o` z1L#kNeH5kPS#HCuIb3S(Nnb9jl?r`qM*neOmcg{~z56E68zE{oW$+(D$fMZiU3?9R z5??eyp%%LUa1U##A41D;hTj7clmovi{u~~@5TskD+SJH!igwtJLlkoiLEWzw$tClu zy-am6Pl5vi>E@ZZ+<|B+>I11dY|#z*W87=#c)RhLm&6#P(QlxfYqijjI<@tpY3arE z_nPvbKBdR|n2u3qNej7PCo<#V)BtN7o7fv9AUSDPXz!MJ=?Z9#KirAfrB+MStW(yF zMq*8ER#qAS$;`fG6u8s|SI=hq6(jm2|ED!HhB>1D$Fd3voBRJoHFoE%WvANhM zbwF?uc8~p<*%L9JJA-_ z9lagtC%mJ-?!XIkD+7|2Ane=)dL2maP`S1ha7M;O85cL>T*%;#z-ygD%pZR z=2^eE#fZN(TFF72_OQOJA{&>3jeqxQ^Ws%^>nJQG-dP1P3z1CDGOaS~A%EeuOY3Mn z12~qA<{I;-QH*R}p0PEv8?CLahVz;E{$@}JP#&AEkRdezK$8wQH!&q|s(CSCARH;Q zq^a7Kb~@XR_u6W)K9Z{d59C!3<{#)ijxYKQ@-)$9+*W`NHBqMoQcQynzIL_YdJviR6;sa}D(|udw+%l@#4uShqw3tE=FDYLkna;t86AqONZ} z;yoJ?pO^P9qQawWi^+JO=$^|fjrUVGfdj13MuP+2JGYV_vf*Yq?Vss}vF-^Rx1uhU z($?rArEY1I*;9qyZ4O~OKT=+Y9M_$sZQX{S{~;)a9lI?I3PL6Yq_a20`3?FmIZ*Q8 zv>34Pe)auAI%vE+D*ELG&jmDDs%4ie5hApH4406}sx*@BvedcsJ4l`E ztaxBHJ+RshlMIgl{zttf0bCOBp||`fY|{E0-Vk$tiY`0;9}}%oTTth;oKS2k&SY+y zLhs?KZ9-^=#9vP&rANOvEz3f&^X&KhDh9^R7n9Lm!8W%OiUC`J*`ZizO%(Z4^teW6 zVHrol`$M!CIVcv@CDCge3*(MnK1E|^n}-03?%>reajf>=TZ>ihvl{^1?LKe&CTfR# z3^t;dJWH7_y2<}QCy&~6a5-^Y>kAN~@C9uYjieb-=qD~Dt%{VQ4X5RA`RW18|FPnp z`}UG(&yF)s@K}rb0{Z8~3?p0^Q}_K^OKI6V zQB_KurVnG~DEuu_ll-PkD~fc5v&!yaXy3f^bUUsnV@zFk@o*o6@-lvTd>ZNCA|m74 zr%4Xx8dIyYv487$hnIaH96fz-SQ+o7V_Rf&M4jvEw^h9uHzi*=;khG2`OGP}5e??^ zy3hra{p8G~vExlN*ts`$7z_ziyEE8oJ*7OU+W@gf%`(Oa`SKf(oQi2KRH-{u>L*yv z2p#b(GCHS4 zg&z4n92jgA<}p3y7nkM51a;ci7C1+#0_1yPWr9}BWwAVApbR}JD5g9myjpA=^D*Fp z_{-oie2E=y`}#M^0Yds{x|mS}63L3?-BtUF%bL(CJt@3s6uLC*yK?LsX7##di2q+K zZr{{BrSg+Yi(6p!bQ>Svq%Pz`b1-v6huhdl`D-p<%!idXlnK$Q>O}sjmA0BZDemU# zc8^90V`@e&oU)Z+8AF7QVns*00b~+^1&oEK5#ojAW-?gB^M3NM0 z?v?>M9-IvM|BJ4-3TrcJ*L9)L0xjh&LAg6Wq_nueb& zqf#Q5;4#0`D)1IHr;ULYUe*rcq}sP3_7I!dU;RLvZ;`GEf^?FvxBc}ObeS6W+HP;V zQ_Z$d^AuJT39%Is$9jGXH~R@`B1rLLQ++wF)Zb{G=)Xv6nqs_yXy83ip|emk`1%V6 zk+Z0ifbppK-E?Vi(3GnZIn!U+HxLX6x>VUW#KzW|FWhLdyQx?%V!;%*jj->TejfsW zkf-eue;2F(IH28kSfp?8(cO^R&3eB!tsV2lW}b2WS+E>}9=AgLq^6f|-|Y@c{MAdc z2iWv)OY&XvO)6jPb?8m6vwu2xPQIhJX9eO*tdP|>e{SUA_y#MQzgW5lh` zZi1tMW<4u3SHS$8dOsr2&~$1=fb>-&2y6JvVleb7lRdhB>S#Fm81JvKzM>nExwh!7yfhcy-X>9pw%!@Jc<3;ct# z(AZrBgvZpW3V-+fa%{b5d7RvVMy6e*QjM5Lw&*_U1qo729J*0 zOWC{vck9C+7nwT`RzJw^^vq0iPf8O|_h!9OG-~$Ldf2avh01J}8-~ zEXhfPz?Zb=*vz9Q0@72Q?2d~(y~$^@;XkqD7txGPc+3&s;l>K7ScXxyK%<1$lsVA z-j4A%4c12pKV$Z}I*CPir(W%PA7$n!aZ7rd?pqt|3wJk5{AYvWfuwB#3>+=td&oB~O zo8O&`aE#@Z*{#E%m|*{7h;tbtubbSLcONZHghZO8+N2PKqz;2_#Uh=k%G(txYgUps zl&qY9&V26_8$C5`7$s2{X}QGgbNhy}2m7|#zPkw?HBC)9THH3j0FclHed7a>g4GtF zXCh@hvX6>qs@Ii(_{3(%*@;TPFw&wDAA&FQc@0M~Hch4IsT=y{WiF<7#O5T6WrcQ` z%}pUa_m~Caat6TFrHxgTgriFptT~BiMgGg<&kD^0j$>u?JJVvlFWo`qlNgN7aPya9W6mk2K1dh0Z~Z0qpI4siHqn z)GWN}j;=(H^`5T+)^VQVsPX=y7Sjk_% zA5O(QgyVG|TXg=Z(g9X|xe;#2m+aq1u=NqTBwAoo+x!I?OZ6siFDy+)tN)834~vgF zcCuGxy^*N8ApCA#cse zsB-J+zkY7>Gw;56<91(_yxp|E;)|)64uEEhFGHK^1-!?Bd5N`4+mQkqsLb_74joiH4bg;r{+PeL*hr#6c|niNg`tua{B1LgZmF3 zVUHac*f4K)BU@N~5A6IK&?Wu)b(-&r6v;Q7@QB8RjL%~B@5)rqXRb^+xaZC$(+|By zou2RsA}%)WLRLT;{is6yStJ&eDR`HZnKKTWC9L0m#_9v_jiBGzCmG9~2_57Gy5 z0;!>?xq%potCj>FB$LnDB-fV@kK%h(lCZo?eksDOM8w`#0#EfYqNVrLitu}`R~PR% zs+!XFWTFeJ!;3&x8y4Lu{~g5tMjJ}Jr5rN2}_W{xW!2p)c?JZIZ&1v z^&+HI%3=UMA>ThgAVD6GILVJa{FV|!dE0CzvCe36#s2`oI@`s^sxztgdm7|D$~Aqt z>#jVuG6<$Aq+Y$7TDWCwMmNV*{s+fBjIlMw1DPO7`@M3s)%>OS%{G~0z=GjrIw#C7 zQt;yMaZs&k2kbUD53DXlBol4@eJCG~WSfg!41o}^c5L-TEJSo1aWCWqiYXTdajpG> zI}}gG`5eg-JG_~*beeHH#Lj$u2&D^nANTwHlXiL~uK z@YDs&92L79ALySC&l(G1aOs znUv%IX|ij|kZ9XhCr0u;0U4b|vIIWIeR63iX6Wm+GIQhC-kD>zrcg}>k-%+RT9!}p z_VxvF601=bm63d!>GMtQH9CdRLV+6xV2Yk+Le(P;Y%Xw`T~o#6`qOW(mFh*)b@nm; zvljVcJ@vju>o9a{nK{>O+3SAQW2j%*5f3e@4X%I1e0;e+s&&|(Zb=Y z)0zTK!b_pu%C|ycK;X9?;5Q-B4MUP|YUL9ntFEu?g*o z*{#-E!o{MS?^U>Wa|{ZDpEus^knM z8r4r#915=h!biudJU$EB@~FOYnM#VxsnDk~Q+<3{eVvxJS{a_xM(}nsPuBAuF#Jd_ zB!cJy&C(gK@QtWvxF{?Xx#L;9CGQ@=ceiit_sA9W(=00swByBFM~J%nDJrbAQ?5qI zpWvr;?lCDH`_${lrI6P(*B5E=eb7_I`9RH&SAhcA|2#r}f}2$`+-Wa6r?X=|r$L%$ zo+|xmplt_D60)=;4awr&hNHf;vXC>#rH_8g|2^amHa~wDSr2b@wXE6 zJSbaJXDX{~01bz&7m*cSjZei^dh_&`miU(&#fL^BB1y*8r#mI#FYPI5kO)(Sy(kxG z(#qY&xmk$_=A_`uHl6p=a1+TYkg6NrfH5M@=odA zTdI2BaB~0Ux26vx@k092NgY-n&U^Z8_O;D(n`mR9Z&+Us%y_p$I&hBf-rcM9k{pn_ z9zs9K2!vTfRkh0{@lWC|E5=@gKK}CU_^|~AG@H}EnZh~`&vCF2=j)#W6v(+D;Rs6#4&$1^{pYLB!_)3H+=rD?xpnFhpUuNjgVU6qas zIo6h=vn)_0^eNW@n9ZA=?xA55%BV2S)F3I%!bMxOUNXtARgfoCR0@+IkDVa5L~mY@ zrSf%CLGSto*60;|tuB>L_VUV7kIaaJI^rfKR)I z0LD1Tl#%PEg(O4IxBkSqgQ{i4vBD*t_Ecg>P-m(LN;R=fx1gJ>vM8WdT+phJ9u2Ae46S-fUw-U5mSUD@ zCYx^uS|J+5prF`-b2l9RJPua)A*cEuVB3d}0FC?Z#0FQi;#@L(kbm31XJ-@$>{+Ty z^Jrz)llybyrtN}QD7yF+TdB}-CU=AW-A|5jx7mG6Np_SL0p#)&!R<$NQ?*4SA(;fb zJK%tmf<>6T!(hGl9~kRhMC%966dcZs5NRw|mul*}XHG?nA5l8Q8->nBi4gs+lBtP{ zzrOfB7_{#1JSF>Y{GkW~p`!tG-RH#0ex3RzcNC)Pb&%StuokdP4Ztjq^v)!~!{2m2 zuUsK%RF~s5;4mRN5R+B=gEYw*rl}qS(GoTS4J<<-0QR}4vLMemX71duIP%H-(P19p zn$o0EHipBg;BknT>*VZN(6&^jRICz=NVKAIlC|M>Uw0rDAs^>mbU^V($c{61*#$u^ zgAnO*LRu05un`I!9x7M}+pN|t9sFt@TCGXnx!SWkwH$WvYb5b~3CE_CFKrRNu92*n zj^Q0CkOr}`I0K|(19prnh;LaO*e`75w=0nHLH1~-He_jmmcSU3jH!j_3{1ctU|{3f zH$>8C3v4gGyQGtqM)^DCxf{z5kg-d)8@Pq#MfyTIy5AxNCsxboKoQ9=TOf;@$Kr#z zK^4RSE!(;?#g@)oC~%aw9KWay+BiA+^wW+(Grf)FEjiL~E>JVWGtrxujZHGGc&r74 z`YO&b^KLk|ylG~FqiB%v?y?)4C7;0Z(z5@_f z2+aESm)SvWWPu<}7>frhsR9WT3o}LhV&s(7m3T{~9GCkndOW~-R3PJ9R8SM~plV$L z&J~^}z%rV{6_l@#ZPJhtM??SlU%*vuX@+Z{^}`=O88=GU z=_o|VPyi=rD=o6DE|xk|t8|cShvNhLyB~1K3u(VqUbs%qqkdvi#AI%CrQ`F%J?z_f zg3U-*Za87DNg0eF17Gum!6sL)Q=+_#F&hva*R>MM(XOdpPOMB*D(|(;Ed3h&d6Cg- zX%VP~$UHESXD+{vi9yNKWG?2*GT*j?x3DWw*jQ*-U-CO;J3uwDwHsL2U#${Ulp}`! z?x#W0Qq;hJ_D~|Zva~PL$*_q>?gHue%JRL+x`OQXXc{EZ3gWqn{@yg~-SEX-G0>*{ z7tX$rom@mb2iq*0EieF68*wjPu%HAI~tx9RbrW7UAZzo>DFQ97F=eu z=o6kGD-*CL!w>$IZzIz7@srsy9#bE)#W2I>>;Atx$p79@@MzO%K&BT?aTmg(U!!A% zb!hquv>g;in4U~zA6q%HyGNd$;T~R$7E#I0DBVT9MhjFdNWicBLfrOZm=R@(|3Arv z{}_vzycQ+75<%M9o*}UE5^uWxq-5O`mu`J$V{mx$QPN{^h64;rEKk+{%~QwwePz50>$mEV@IjQZ(qkInF)uALj8Clz;s8SgL~vmqiaoq4<2= zRHd4qUE`%`5r@c-p_~!LYGs&^b#IP~L;oGNO!J-U>wg6P!jG%Kkj=%j`fYFWrNVGJ zU2|neh0vDVaR)Ry^4Fz`m-uY^nZ=8?W(M3^q_IFpL`3~rh>Bkvivj;!8HZegj*y1R z`9mQ3&0>OTHs+&Ph0NeaO2f0^(n{{vbeF26XpNZ&pRO^fSDu_L-+b#@hXqrynl06@ zrVDi{_$hyUG)kNyAYnxrHc)lxpz|jwm%NHbImWJmM88Nda9eC|k_9`sS%ske}c-U~7!| z;rG>kKy(c+;c3kTIq)l~!*ENJ0KsDh12SR49uJ$){86w`NlsGpnP@OAyrWbt?YuAD zNzzUF5^u8>-ib?ej_y2PF&9WUw(WKWSqbJ?@RJ~8;(uB>)Kab9z_$HX5jqNAdY2As z3Pw8>F|S#ow#_%1F65SvXA}i!9nC~RImrG{=5Wi>CcP`5>*bTT47nr>4CBta znP#fSBI`0Kavfb3$<@?nHFKO&r|QO~Fi?iDJT9yZ|F$2>y9}&=Hto*S(w+g|<8Q`k zNpq-jSuNIzeBAA?1y51e zA(@up6@tp9uXci}3m%v#U&U;fab(h-ZznO?L?jrQ?9gLb^Hj;m7HIJw{B}V-C*!pf z$65X#l#dpBDMbr`aJ_Mb7#LsZHkR~jUoY2*@6Bx3Y=&AQ>+w%p2GV)9k{@Jrb~DOQ zXR-yy3b!@|F3sF$9ybyd>L)~$qDADH`1|su94&Om7c!1qY$Y6(j8uoPn?9d?K9f!i zDWqW)Y)rX|+j7KZuGx1E&*xb3#p5Gn3rVR(!OQ~6mx2;z{}?yrr%0(J>F@4p(qP=t zK^!Qgowp^|7#Is9O@Z!P!f}`(mhsODrrWBNh7vwxj&qhPh-+L$X-^dGF6*wh`Y-X(Zb3b z8W4ll^s(;|DPWAC$0xCY+(LlH2r?>1oPw_QNsrT?JvefsSDv{6!K*~;_RyJT!p&uD z_e*|Dp~4;Y>{yW|5+hGnmzHz$M@fzVU5LkR;zKUBmEJ!%f4A5HpC$nX?fs5!Vfk$9 zxJ0`0|ek$tAZ2zLaL?l%CN= z%hkJFi|dO8Iek~=ifH}3TAroDbdJ_`JH(-wm>>cyocVB4=v$zZvN(#c)O(CZtZ!b) zpM2ipE_`T-<7!B%G33dH!iWVXx@|u@5A|g>7+k3BAlo)JvUm9hSFe+j;Z|9!5{iU6 z!#QRnmU*Io5*?bKlKAUM5p07)V^ClGO%dum6+9khH5|0w{&Bmxg{uEQAy9}%PMaNO&}{%nb5{*T>Rn(}UufSM~UrZn7P zBjQPr$CzuIwRoRr3)FBM085r6oB!9)0llfXsHiOUyF%CX#OQpMr6zhMPzE(Pif2Xo z787L{0eptV9`Q7#k7s#CL^7|^;pHg8BiMOaDKTc3RX%YSe_Rim$g&a)*ARR?Y?hmm$ zC0A1BPmG*z9K17-lCt_uWN{zq0uMA_SP7Ia*CvPtL~(+rt2L; zal9Puu)p!HeQwlzf+%-)Lw>lt&pHlP%6};r{izn!VSsXXNOgd1q}21Nxt3M=X2g$X z>0Y{f;0zXdeO@?j^z?BA?~f5?cPq$7JsZ!)cv<_l#2j_>jxvD4Mo`!$T9Aa{v~6e~ z-(z^tWVyV#WR=cW?#lBeKaq_Id>Q&=lOGa1!Ue)`g;!dA8XbwT^Eb0>oCk+m_edmgp zo$Zp>yvCa9>3W%#STW0Ro8gkXdHsz!$Z$vS6_`$}x~driaol5s%2?eN&W(-*?qZ&YZ>+unisiR6h3s!#LTY8!J| z=iPTnuR=n#H`xO1($gCLN%!Ot2hU7W!&W1`TSm4)*3nrxmF?2>(T*CNSQ~@|jdimz zY&iWo76T0-ETl=HU@9q4f=W=?Z&+u5Lp75NvZsRWDUBThwotk)0l@KdH{&mF__1_C z%I(9ONeBI^Pb@kQ1*=Gq7ybDA+apP-Yq3N4xAl|=QQF}N(`r@koV?W030CHWgsZE$@JsU76rXxL+Fx9twla|siHZa^&0KfOC&+jrq z1d=4P-Pdpf5i;;nRP$AqK0c zOPX~ecZ$6o-Pp-mO|~F&s*;eedintNv`V~J>C=^tii$9+`C1II^CmOjdsh%8o z0FAbWa5K<3@X8^Q;)V=YGEf@8Hz=ic8;seGW#kvjx@GO0(zJY?cs*u-ZVF7Qy6#kO8VJ+Jk&`d)V0cz8S(+L&M3sizQ?XW(on!P$C2BM?^C+-3Y=O|*`({8P87jyQL z%ayu~uC(NO0dw_Y`WY?kS%UQp?PlURA&O{fQ%7IVyyg!=;$Ng4Abm)Y<_&LFkFqf9 zO&4(WHLcN66)uERt5DZ9+vcx`gB)1|9Z@R&hcQ$my&^TU=q)!X)BCx~oQm7YcrwpgR!*PLuFl~S zVE@w5Rh*b!I#X1Ui8SZ0iSJKI&XO!>RPK{0r9eUHe%*JZQEQW`GlAcTNO`=R!m;&w zX?=Cje<_?U9@sPg@G%6NJ2lt{28%A)-9(ffsC6IyJh+L~YwL{`m|u?8pXouBE^uQpA%d)gn3R6jW_yF&}O*Z$?M)V^@Bq!R84~%m%)Z93_24S6I#PCdQk! zrQuORI`hO;2P2z&W^ff47>rf$pgm2d0iXhPCo;>JBseJo$(@T1WJ;9Kix<*oSidzC zWA*|+S=0}qCZ%S|mrNz{WvnT-!7$EMrflbnEXOb;R*M^iJ zcvheZU7tg>4g1zLh1mz=A4z@Ylx?B(pDfgr*Rvc*>ST6VPbSAlX{$plU6ZDm{f!$j zCq`*+t-tZopxo=83q!O&nFwOQ(c0`Kvmq<3SosArlsr8aqG|oJR0Pga4d3O zoB9f+@XfTb_oAe~Z5m2qBR!`>e+&kH83hv=epenC>xFudV+|A5>xew5rxG zSR&cvj5O0DO{_c?bG+{HiF-C>YMc)<@Cv9n25sSEe_Q%HuwiQ{k-bhwJ>6~HUQqF# zQae=+y+tj712h;j>+n+*+`6e}jZa$KmhBuc?kNc}SY%n} zz@*#6Ci&hk$B8>9CvJ`*ENf(O`Em|;yu8*rye1t@_m+N<8r^K zfQ_TXmfOOKnBX<6A85@|NlGugURh7=47x*LNkVUQ%W%qYkJTS2q ziFRoEq;jQq{dqSUI{Bbz?z1QV4{p}V_7)v{0eS_NtEQ>FBz0%%f&zx&qBllPas0ky z_`FZ>#)>+46Zs_6W7)g4J^XDIw&e+{)>r$~4rE>~Asmy8Gk?eMD^>xzzDpi5pbt6z zQ*zzc=<%F;%CP)#QjOG9Y^SZ-q6ly~Harc9-v&v%FgQ1f#n|UIp}LiA*r zUk*~+nQ;e}-(=R!Rtd&G^km?6;z#u^@INUZ0GrMt+``r}ja*B*z2vlrTdTE9%rw<* z1B#lX+iAGX)^S&Mg4aMbO6;tU@t!5G79p2({qGr72meI9?}|G2%TJ^AerG*yG4Xj? zdi=-ln*jEHQj1!a!-NZu8Y6BBjI24*Z$qT6Krv8Q+sJqvi|RwvKKlpF;4Dsj!=d8M zfk{2=R$Pwp1qv5=DMN)JAokCR5!WG;>nVprvyf5jpO3#5lE=^77f&vTMtXX7(-JN6 z0-95h*cCIUIz7lmy?DYZ>LML))FsQr>$L%s=)*4GeSG~{^ z>rc6Gg|uz0sv~E$``u%&P zE&0NBrsu^$MNByt$S-p( z%U!%uj&imD8Sp_~+o#(>^5^ta{!r(i*fK_CKa}`C>)Ti2oo=T@>aLi}zSyr`9rl7f%sGUYpU8K(Wx#{EMl-1g;fclVA8L6FkM<3)g^+J+t-`JEZ=P|8${}-}*y<_Bo$#q)7`Z%q017kpZxje=h z9;j~fVSKq|bzSO?8+Zza>4-KZFw^lzRVF|u&x<;Tm16-IAD)g3W|!OCT^-9lC&lX?Z6wC6eXu#Q5&e$!V@0&OJbI&UrOhd0XO1qQ3X z2=)rLl8D))C;aK%_ujlKtl=;xpBcn)@wI=@aw#TOw1mA2>&xrK@_1oP{b09wl-`d> z)7sd%sD(l0L0Vc#X6Z3haxads;v<2h0X}1jnTc{F0mC0Q+u1L5)LRL!g$!>pY;UDl ziYjog1PtvIN1nKTF}cm%=@&%%X=UK2`<=1ZcJ3xUxuLPAK7_oZchF8rrBGdziERhU zpddD`Iv%1vwD{V)>?atad8l4W_4iYKmNr)nM(uC*Qv_I{MgmiNl<9K|R_*6(z8YS> zKDh^jTXJC`>ff~(WTrNHxWtZ9tB)TcC zzIOV;FSjCd-Av|7Zb=sOLd9JGnxWq}ghRr*U1Ji)u4&>*gVGa20Tjvn!%)?7C`RcQyyb>Ckzv!&!b91J4PnGkM@Q2)I-D@5o2EU^E`^^uWRxD!%v*rcU z8MquTZiX$T>#xkfs#b~r=53$Jn=|eoSb99ke->p|4JB?%Kw+5!ios1A`o1KPO z*7j#=U8^YVo7}ORGMLC1oWDRd_wIeZBm6@n@%pPDDmd+GXm4EhwBn^tW=iCT=y2${R}t1p1ZCgqdbhzv<9|(UNqqGPC~PjaJcA16xhh+1 zVtz;om2_82+MepAKST1taXAHv&7#^**Z9opZjjq%DZXKxB<~oVxj&KERNWWm`xi4W zC$EjZf{3?|iBdnM&b?HpLdaD`?)>eYc7vMt*3B?SUGKBaZ*Z4Yo}cHk@2_8=E?3;Q zbQfo;`p<;kRz^(&0bq(>5{5I?KWJv0lU7y{)6j=nqBvVEF7F~4Lbd}2-(J;IWQb0jn85T83$Zhcfs zpIx=d5f|h=O}1pwuzKF!uetLhCwZq=r0&BMODp`*dAtABx`WEF^pRU3w5a{Ng49DTBDEJqYNa^4kt=%KY&P%v^|J8!L(RKmh zS-0#cV9*aOgx(KB5G%{TChbLsFJ+!8c6BHgKoH}*+T8DZV}Rxv1}EZGudU8DW?h^v zOu21GcHeIiyDh@*1z1-+*_c;bn(EQ|Tlxn>qc4vs)8rrALdo)MMpU()K-~{;iqqFO z-n|c=F5}jX&5f>SBvDh+WW)d9BCADEqnvx9O*7W><$HQm*W}=AviHc3huw|MexvnU z&v!TWxzRr#{Wu--07HcCo(YdH74Rq>Y`33Rzfy2JX?hv_gX4^fS&DeW!|#Ms)hoc* zf}VWwDpnXuZHMqRFzj<+(+|pPylDPVe9BkNDqc-E8EZ-67E(w~$@pmVk;!32vm8|u%%S6km|db&$Mg_!CkpO*S7e))!QE@RSVF_)SIt` zklzcvL@JUy@|U;c=7=@Ev(Ody%z?kc7Ih-CPi$hJii@mc0QhM=rK=0BVlPAEZIyaz zNNjSK&DaInN<@*W4kMKReHY;gdQvg~j&?eoEn?svQM|+tja^*gw?ZW6WQv<`1o9c0U6{AEKUa)Hf@Uer`7L4v{Dat*2Wg z-k|-aAEe{?#W=H4)VG*eS_1!k$nyf|m(fNhKr2Ca)GC3+PKW^6FRgzai8iuithckj zWNK{0WGiY+ZiIZv@|M703s!Cu+C+!SroX8S-cC*ErtySgp0@V6UQ1`*smiEA>o4qa zj@pGQ_MKlhZ}#~%;LJ9*8;lzc1qmjz;Nu61J`N9V)K7fDbl6Yq4pk;>>tQ%KB4`yU zuH%fJ@{MW7nzFghjxuF7zIWS8_5BAYo5I04&il0kXU-G4Z;-!D>;QJ#y5_&2;WK+i*mg@Lo92Go$JWA#Dfx9ssh zoB=$H=vSVC-uCxl3No>v%^(y>*C489$YZbnij(clx}$YgJaM4#BWX(!(?2-u=O7~T zakEG2ky^X~i)n?IpuUHCCxmOq!%?PF9C_!~r0cDWD%x1<*?e*s7fMfwuVz6!Q&w?M z+tfNHpW4z8Z0EaOEnFM9T+gvVfTfVk5t_~YlTzsU3)(q^VO zJ&5ylagV+TTxx(JUZ!nkc-YXERV76U`Jn|tnNs|Chm^`}<{qQ3>e04VXeY10m#VKj zoa9j0zPb2S8*0l|9b; zu3u5-v;We46Xm=2XJ8KH`np2dtTbfx^%$*36kF66NuV}XsiLMS7s@;U_XUg$;_(| zDYp=f7x)klI-IzjLyEOOenmuDiz?7RywB79sXx<>+ah&4&xs$cd%Xt25lg%Vqu3}b zmxqwjN%p{a-jbk^n@A6{gmYk(#LMC;e0OYlPRC>Rr90aN-rL8neB5XjN?t2iTEs*C ze6O&%W%5Cg@A8SWmgKq_J?jXy8!e|BDp}skApEBcWv1-S=~z~2x;a}=14 zt-P29|#dw7Qb22E;Af{c!jgwI38?w4gc6=Uf_6xKXeI9e9V)? z@?y|YYsCEr=ZW>Ao=uTKhea+AGDgQ}e->9f6{4Sl$x3-0WljEdmC|k9cV2+ILav54 z@C?hB(#l<&Qa1?&05#xxQ&r$-h&AV+$*2zt-z9c9_pJx-5IP6>3e%&i{~tH3o;0Ry z`!d*tlSW?j0v;r7AB%24VIk~bIN%`vR%ywUxrAa3 z-7JoZrKjCJ$EvUm3@mX4j6*6glxkK^KObq7tUK>)f#Q8pf$z#$3$kJ~H_0TMX~idd zyNl+ArvSpFUJP>O6cR=WrynXT(OSN}#ze~L%lenS^g4BCNC<^avYO((@)n7{j)g*A zdS_z1?Og{SpcPt%;I09Yi~Zr(&qL6iGFW=rm2G@mSYr4_bqsHzI7>V1x?~LFsd;Me z@K!t$Z@mbe5w%Q&wUROMgn4{FXN|h?Btu^^D?r)UJyqDQK+SOsR$;LJyas-#$DqIV zW4(OPFUHRXzbGSY^RkKv`lbLrHd-M1?!e0W0AEFTpSLf&yDJ&HAFwx`p)BO2`H4M{ z)zTLA-kOc#(0aQl+nU9&fl9I0lUvmNstK?#U|rz8>Y67|(6$YB4wpeXpl6@y6w(GI zcv9O&Db&!3*i3Z^EdIPD0SNQbW^{)qKE5tTWsJ;IbXeyMY*ay+OzFWt2b&(9kREDI z_pcWDz5Nt(5JpX<m4Ko9&imsJ?&Ra{Mnt{z_%B zuZuPb5AkF8)hAUf)A)Ox(SLBR8LcUTug>mXNWWu|yI`K!pR7QVtmk{y5VQWB{S+hx zk$kIl=1aR^-WxdI$SL}1P-=s=eX}9A^3kRU$1FDgJp3DT!EYEczBzoL#K}gn`%WkA zfg|8C53j5*B3n{oz46<2H=CN=`R?w*XC9A_O<#;1AKP@iabhQMzdUGnOF&l3ODXf4x?TU0$NwQvw_;*$sYfJA$G$Q@kaQdRc4 z?@lvsmYYUSiF`-!nzp|U`P!D%Ea+?*ik7%7(ZMrJ$@TjnNxW}RSjN+_*Fh_PIi>MG zPmR02sGN8xB|WseE9L(9sQk=Z2HL1_h0Km-*tC`3vrtB^xAsOqZvQ6!+Dq;2T%$@>}KOM0&mNHust%7UhYrmE-4nis-k+lr62 zx^#5pogfrls*Xpcl?(dOrXy#loNJc~lzFEVcfepx^{uzgU0yB9iB!`3I&&AO=_e<^ zKb_#?xnZ?Nnh0Xg;X%w^8|2Im^Ko25rlHB9v8sGN8lR8-)Alx7zIawP)3RH}nN&8x zV-ia2(pX3A5}K)#?}V*96H7Is`Q&`etRN-Va8t0;j)TUx;(WeKlcanbGw7@=#D8CO zm)B61h2An+^M#q!xFxtS_-Pmi$>lxmd(48ke2OgR^y2N!hX!dD{{EkOwluZtHa0LL z(8Ec~SY;)HLo?=9N^-8nCtv{3pL+gY#7GT$vF>w72c}{H4PMS6?Snlfn1efv_9&^D zh%(s!L*;3Ov=BzpJm3Uu${~5umRorG*Wg-QQ)8na6{}gPX53TA5>+SF(rw7aF3W5X z2==px<#_`=ayKs1%O{wbk>5mX&lL69vE)UyOla&Qn|!1-_?wK?^>-*QWkRUOdClT+ zFi%8Ad&tb>%1^4|Jl*>C;x577=#c`!!0!C2dA&w3$Lpdxpv9#DDus8S#&6edE8LEr z?WaATkINZ)D}B$8reY%e_Y83Jo5V{}P<-kdc2{jvWxKBX2lrr}M^@aT{v?3kx;rN`Qg>=i<Ax2D{G3|h3mR6avwG11ngx0ws&$V6i z(qpk>O9ynOc8Fu8s7`#TT%G7yvX*Jl46-zu2{J?3`pNRjy`0PIfAUw9B z*L>PV$GTEiw;zeT{gF6$Kd0AT_w>{t3^rqw!6B18%b!fC^88?2j3< zck5jn9hB&y7*Y#gR6TXIQu(HLb}C*1Khu3C5lNXXSIBbHNMR^`qTQ-_ab->?6kB&| zHLwsSUEmEAoYth=jG3}kai;V~_Crb`-ydh3+Kkl0<9iJBgYS-X9t5rO#)7=e4}oa|H2)uK`rwizXWF z1z2l7F0wG`mP~&AsKgQO7H;zuDhcxPJB$iG72BF-VO_K`o`a-8?0~EhA+64!lx^$M zJ;J0`P3`2LyHFMs4=tN_ju!JFbj!Q%2{LbnXBXf_04hz0Z)0q*%t*9R+pGm%hORj5 zGf_Ns`N^^EyN;5nQ*i6xTMriD%qmxZrVZksn*pZCH7wA29G-At>4Zz3Rm*ezW>RKp zl2}3?iw>O}U((WIHA>=Gt+yKyYjFEWn`$WBl9WUVGxa-gXFU9X@NA@R_(y5pO8rJ( zC7<`1rOnnyNrjKU2*RkEPfv9k7#n_2yK3UN1ZdDvDRZ^LJj!|Sy(%@8F;Kz-T`e~YeXe<>YAqrD z^8)6QvQ#IKdE<%)DD-3UK{C*I7Ty?+ug~y10-}LLj!yUIbF+`h;;PSd<;Rk&0sT!( zPpaeUGv}@Qf;25>FpQD5YS!n`rx)o!2*Z#z; z6YG7vDQ?6=P&>rlj*isVtsMDz^id2TQ*~azTCNQf_$lc-(@K?=l!R-H0}pqFa-U7L z(70Jjd?L>>jw>8K+jbXb6k0D9?Azz}-tsS5#%q?1H5J&Vm@yuuF_PDj(1-A4BRi`5 z`5%%;Y*&_ZFCarPM)wZvDaKpzU?^LflP@ z54rzeti1(STE`?X&1TQFp1cGaDC|nD7 zx6^fB-}m~Q9`D}KZ;bu}yK3+6TQ=8RbJ>{)E;296&5?m|Z7%|G5zpII6=Z@1JcOl? zdS`4!)vZ`TN$U+GRkK8`e2H@sxD z#8jQ;+R5Wnl6T69spm=$;QO|@u%;`gm=1<45^^=^cMZ#DVHAJV<;oi$)^x#NQ;Z_f z38UKzyfeq%jY*LCQugN+jHtE>Ny-%7$D+lJPLJy~^59$+=6ci5CZy~W9J<}U*v0uq zfuCncovSf(KGSPKp;D2Po9Uc`r-lF-vtS;`l0yCk>!)aqSJa7A)gwbsyBZy%Lr5vt zq7>>7Nwl~2lKmlkA^f;nvmM5={K$qGM^czspri3M0P^H%{1*xqPImg^L|IS{vh(*_ zHf2vtrD>)w>y}A|e|zgM6!&st1QPu_`Ev^kT4G7Roez58VV?5ObE=BxJyVTw`up!u z0Sy`%^d}JI(=v0%`c_f&B{<%D&8h-wOhq9+rE$2!2{cB8Xdw`<{MSixDA;a6`tC;3 z1jBJM;5G!m5Kb@I9H&^^4kR+vphA_pf^x?XMocJsM{go<6k95-<} z&)3`Lq>mtRtj?h`D?!5DD1{{Yz9@>|ZdXd+qJFvO4qz%R!$%U68WYmXC`hQ|N*q(> zG??{v0mB0-ui(IjAZHhJM*~wcwllx5lb9iD^OJpbo;iYkcxr}CA%5s$XUp?lsw`Tj zMh8nBMD0kL(Ojxzpg9jA2o4u2OT#NljmQM1m|dk!b);aAp&u>OJEWG?4R0!HxMyoI zdk)^NSzAx z*$Dib%P(a)U|mNMsk)D17w5MyZ@}B`t3EuUaAARz^Ax%Tt{1Uw_+dU{+zW%5)|AIO zJUESfY4ju)(LI3QDV6Zbu!HqUYO+^FoQ^mh#e6G*96S;oeqMdbVEeQgaPZ(MAZpm@|`0vnT`nt;l{@NU+D` z8Fbr{*rEp|rjtEbW@x7O^nqmh>@#lkLWvod0WQ^2f~Cs)-S@Y_F>wYQFz0VM*kuy1 z%}G^gHHlw@qzOI#l+ZLo6+?bOO3H9QgGuTOtcg$kv@RJV{)-()sR|DV9Z#f!+GP3) z>W&2t%^|=BfuwNAXKNsG7mCb@1g~u>y$z;3CLp{k=~I&A@+&&rQ2|Q3%>v?;zg_gt zf4|)0;eP-7D_!u9Bu2gTR%}K8zd!0viP~8}J5*$L;1g#DKgT@;_!o*W$6qKBk$i=SipK@deuI}c}jp<+YKKwuLP4)L@h6}|fA70jOw*zov|7M?Je=}}O z4=TomeX|kY@>92v$NUQM+Cdyo#c{-{chlC_4v<}wm9&+5h3#czfKoX}K%J7Mh5n}b zMm_@ZmB`|fslh0vi-mi$P|ndXz5kL*_$j@QcFHx@?_i6)agXj7{$%NKY4SeH=U5l2 zX?_h!78BjYB!4&18Tu}<9!HVDMDrS_dagc2MrFK={#8tQ5x!>a8{&X_7-gW8XS|Xx zc2QXA&2xVroL4&&>C5V1kjN}MJl?Q>C9r+Db|xc1kA6jaRFgw9UGx4!hZHgw>hUik zaU5WSQ!tN#%EelfG3RGqT_#|658+=eSl_OyG_(0rIPmX&E*a0$)LZG0t3A>1a*-9= zzdZyt7a9>y%}|gmmv023zn3<2MoI%-Zwzk!?YpU|<6+*n0b*qe8oL@?ypj-95Y@z{ zB8pzYOU6Fp+AioYBJ5<3Z>X9Dj+CL|IoU?+J(0}(?)uLMU07W6f8tN+UOZ1l0hc1{ zhgZ}wZzbnK_^1!0G-e&Y?pQo7ldZ^Hv>duDo{BrqX|?HDGo9-(AZ(lz8xX4d$_2l? zFmcWQW*`5!C$Ww^lLONp&?S`t7Ysc=f>&o6{oY{@f`6W+mFn%nn|XzxGV)AiYK&K3)7(-I;Fc?9Wf z-tfHnk<#6#{;e0_Y51&4-7L-Lw(}0fwA3K*U@!b;hu=1sr zo&iH|iiD=N4}{N_=_6+3L?MP9ERbhu8QBwo1J?_65AwdgOFyew@JhPmFD3BZ*X6^gmmdi@e;$H)HZC38Lg@2LMlIF!Jt+syF;R*3&A z*B8zBZ%u|o>Gk@2c#qGjCAM)8;-+&hS_Lbx!Yo~|jvxzPOTu!3a53kC@Fj4Jf&1CJ znkuQrcGcycbYC(<)&|}v`eieW7J~|1R(XN>?q!WZ3@4IKU`=9(cMZmOBDqT|1rELG zk!z|ltrv5aR-sAA%`e)qZ3Y|#wnhYlHmM|q>nhUJ4VK#Rp z`f)L}%uZ9x7pn;%+g zY)JOp(^{XULD1eV$J+Rk(F+?~8)E85DW8QEXuTYOq1-vWI_DK?~t^1{|pQQ~~~C*w|4)#k7RIRW8gqFEr3*`SiFOqt~)vyRd_SZQ-c!V?8(9MIH?$#f!bg6$fKc zI!wf+cw_z9fiRhUIhXqK8a_RmU%Apuv(n%vb(1wa0tB?M?ZAo`p>u@AamAOLu*;-< zc8=1e&?KW5yGsrt+|16lZJAW)=z)41pwSK;?+hGDI)RK=7>}(<=%9gj+qs4pSZZo= z+fbcC_=Je9a7shu>>qT^8?}qs!JvG1uk6%m1?`67Z^NgMlF70bbz$lu_Pj3CZC-6F zatXm+bNv7bt7iF2(~euoFdQ z2#I4WlI2uXbHvF=^@Km=^~JmG9k;9Jd=gG(hNOk+B7*NH_IjP2vH9+b92_W@4C6Qg z_qUBEJvGX6*RYyAw31C*G^#r#9j}Y^hX4bYpD;f~f0IK?z)pZqmt$?5#qV9}&9#7k z0Jz-mRq$C2@~6vEqcHN1-8Ir!c#h?h0+@s;53SI?Bzcl@k~nWQMPBoiPDu6;^P61d zzLV08GhUpkPC$;wexAIi+F4Hgf@8DW=lsU*g?eD$O*yZNJ-a7)m6uBurTP0wV)K1U zjq9JT3^Om=*orxL0jBkX$JujvBn$!VbWWT6y=MGEZ|I z7pVSK8`zIagoTD_+UG|Q&w-zjl~Xg2@|7R7XKhStAVI zgrE?^ML$&ba~$#6$UxMn%9IY5hc?`y;_Hh=dz1rFSi5wkzqTTOU=yRGMy}48(_=vg z)J6{5VO3;wtA{ZA6*|uYnM-kHnDPh_j*eDQvLoCT)m zkfjkbQt606@ovSx{83>h3D?e+Yx^{}gU&x~f6T$k{&TjiivQX`VxHL$`h2@*RG4-e zUC0QGEjm@P+@;Pu~Nikll1?){475s zHo5iDuHZf#RwBgkOgSf4PKha{#RJ>FRF(^VAv1u6Tn353_k44!8AV<=7*^E;U4*_l zZ1^A09_V1nf0LH%KLu`)|CQEDGnZ$N0ae(K4Eu0kC+MGt=<=L9hxPyQU!(2RZH6=s zYIre2Lafh~9XDZ}_)Ju%hV^;4IcKs01C(#~OWlr4D=oQY-&8i_iW-Vc&zOgn@*tdp zoVfBtcQ+GU+PiPOb8BmGt6b|8G&hu-r^?Bu^<+LLt%5OqWyI~U4O)&9lz;Vh{w=v+ z<5V+2&%*y)lh`*qB9MF8{sN=v%l^FW?GJLby~y-klDta*CGG9TYx@}8l!MSVdZ{=o z&&9FG-z71D>1ZL7Qsq>ja#=i;!{r*cJt_=)BpKN35N;PTQGyCAji1VuocDK}IBhC& z?c8%)H?3wf9^G$jBPtynl^8PjI3}Bk3z%7$G|a}oTTD9(w8n8m_MM!sq;kF20nRso zVXC{-9yfCm%QBz_!j5|ZZXrn@9r9yF1kWz>$kK&Wmzg2WaITe)uCp8@fOZuf)&_kS^ z6ICmRlYgM`->-UHEHJlLDeqrUW^(4!0(($Hb;gCGk(gSx5obqkd?jlS8NE!O$=dId znI)o%fz=Wkw*IW*$6gJa3iA$B4KaB8uc@kFSz4L5^ooALq5YuJeM~eL{E~GL z-E5$y<}VcM3?Z*$N(D_b#udfa0Rw)0SBj4JEFNV=(MSQ06PwBJeYM?hZZ1!{^>~W1 zEJP6E;H~S0Yq}e0$dqx^e-+WD8&V*pfO+R7{7GprUU35JXH>-A~r51mlLhBG~iZ0#{TD83!yZBAp z`~CJDf37lB#ds(9>v^iIFH6%g{dpbCYP`kV-_+|LUZ-bRzwLn)bJHZ&2j=Q3dI&a>wf$T6{})x-Gp=LHH-e9=?5`ZEu()(Li7E+~a0S1hKueEcN;=uuH-!~jYkKom z)c+ZR{M2;$Z^$C)e6Zp&u9aYqlMLr(d`z74aN)N%45DlS8TuKT~3hwquZSwYLLu%uMFpquyiM*if(c$(u$hWz92gS_etVyX1w+)GKNv5YOVgE z4oFpPm*vWEsFvgV*}Tg(ArU`tZtEf{Zu;LK0cj_}7sX$Bvr^@@dS4z5owJwRFXTnC z-SzGSy^g&&3~--HkB12+o)CCB?_W~XGvh`vbFQ(ni(%1r@wUf@>1eM@QdaG&s#J=z z=Rlt;gH}^gsgUNK_9gINe=Ml2NPjnpp3mYb55#!#ecJ{NT^Hq4g&W48 zE66A)(B;$9i<4#H%w1D7dEA74tic@718QGm3JMFIuAkBx2Lw)~BGsa-9`#IfOGEEI z0v~p%R}qEN?Z{+;HuPOgqhMe>#~lRt7+!sdY?~$I9b1>OaJ?q|EiXGth_w@~jq7Us z{UpU1r^r<}&R|R|QJYNcpyQr3QZ$#hXmWSIDye6jiuR=Rfxps6^nH!yX^!-duQ3k; zB1N^Ms7kA-?QZc+OgT2Y>t&;Pn4+Shz8_YdPQ|S91b$R-y%x$ewAWyvdmL5yKzU_+ zhM#zE+;2r~)qU{Zq680HP*9`;WJ`_dp5*Ci;M8067s|V{CpW?<${Y8UBkOm2b~Do+ z@B7fZ`Y^_Pw7=m_ryFZ3z4LaulAx*^*TU!%JCurjsDF4k-JXd+^0u~c4}nkIi!5Ww zqq3aTL-}rVSfeO6eT8l*mxYf-$do1UUOtZmX?c5St5)OwZkJYIpP%!~YHp%!_eK?y zR`@$jN>vPo3NewIza`SVUehNf4?hblDWgU(?vfIjgzet_h4T34lkYT`_`M1?AvRU0 zct)v}Q%o_&{A6Eo)94<`o_(Dxw=|&Dhkj#-Qv68ZJHv{qQaTHg=dGAYM~)R4=yM3= z9KLrU)Eq(jf};0%Agi--)G$Ipjyz5F!#tT^6mBu+iw^kZB1w}b*AWo4X9SsBUxe9Z z%OgiWTExv0)9&p`3K+d4h=l&3Lrp{Wsl+e;}_q z|3i6OD(IP?zgvevypipHjk1F){}ZQGLj}hydol0t0LzHS-sj7p&u*J){=<)ks_pLc zrw-jg)Zlum=7Q|l4*~;ReIoHRu`t(onI3mvX=`u1=39H;d#I~jbytMSV(cG5f+;&= zg-{XbjVl8GyR&Jy0wrGT+4W72jckHyBm3AiX?%rR z&X+rUTZpCzT6(|}c=Gn?Pb%Vxh7y;mrEG}r(CiWb4w7qiHcVeZp-lQ+eIMglMsSTq znj7d^Mt6rw=2dqeuqD!=;7TD<^!tRss!l)Cy>2EDuypNe?+iZ893xjHbvcpRN2u+_wku5wDQyAhy1 z&U6?+>gEgercRm9WCds%W_Nvb+5vWgBYemO%G9KDHZ_EhN>4$8^DMJ@4~ z*QkS<%v-*_g!+Ho@11VdE)aLUDC7*~ml^e+nPsY7kNu%kSmjt2QNmKH$xtMb=3KRF zLBA!Ws{<6Ukd#xwAWLpFcn)gCnHEYsKej;53)M@>lgNB=4zzmeJjd1U*VBR%BsPR^{0f~<-KT#$Xn7s(eIpMjnct^-!1lbN@{jz-^}+&A&NvQ560*dXch}Gf^%>!Z z-szJa4-t39n0dqUl5rO5^%h0%1p_9tH<@m6vRPtm(=U5U7B(Vk&LWi+6BB3c5s73n ze7QeZ89MUxL)sVeu8K!hPL+SpliS8bPrA$nYuKXQ`A^i9=+HUW*Al0rkR#j@Cpg`G z2w4VU;u87Zubb4ySQpJqbjeUtz~ub4^bs0YxHJEz<-BG1{z#N+(p) ze+160#y0D#%(AmKgq_$F7lV?Un&RUH4s>oYVJ{c7i=ihXfV*B=bZfch^2aV|88H6N zRC4ZVu)Ib#9fE6lsYTXtFhSRI>p28S{6jIwA$^5j|7m8QeDFnDJUH=Z6r&9zhmwa= zb}h%*2lAY3g%2106?uFfmVJQ2y}1Msl03^+W|bEH1}~K!lUa3CrZ3O|M$+w{E7(CZM{o;_@H&&>qAf2@< zZ1Lf=yS8h}LOhLbQzs8<1JD3{IN2fGXN+u$FF|%OUsv$?PBPv7JM_NvuL6RL8I8R7 zzWDNc~ec6Ji|cAaQOc5O^Vw8PumKcL-cuegVvU=VG7titErz{-i=Kx>>g%E{MZ z>}=^|2lce-pAsyZY81F zsi(DF@-m)w>=!B#o;_LOFL5;NW;>EAtOw62!9G6dJioC_xvG=X1#~GD`p@R>KRaP1 zW&iF@8C7TW+i5hdys=t&zjKCoXx;cJ&CHLM#vP_p$8tqTue-vC8=O;8#WeMxQ7-sg zHF0_9t`jIL_{jFBg3Qc52H}1D$L5Ii>|CuBWhqu^a}(AJTq(yXqI@e*|Ft6uK}viY zxy|bQw4{G?Fysk`_6Fj-wE{KE#(lTUm!Bon5ccy)zq{- z9hqcoe!<1n?T{0;{A|V1DpQ!;fs6>SoUSCkj2Co2x@i0KV^H9Gra)dPQ*jzRN7Sx^~eIq*FAB5-al~0E`8Tgjf~(asuOzC#CKj$pB4x^ z;BBlXU4t(9H{DG8=GJfk1;AjgiV@pimq+MaJ_nQNrG0TPUAdc}3x7*qfhlD#%JYJPOF!3;6MpyYw3Yi#lsHl0D3fr(Q~Ox^u>U*6b=Zq}v9 znAQ)11Wb!ZQV;W(7zOz%8_dx;77U36*UFrF!k*0^d%nNj(w&zC%@2dME+*s!ca+iD zGZ{fTgiZ9!ysV9G)6p?4mSr(DgLUb`eKYe|`PW>^1ok+UH7O1)k=z=4Xj$1xP{b%9 zPMe%sn(GG1Gq?DB=WSzDlub7h!6@Po&Ba=cPa)dxQ26T4`uE@#3mxB6q6Vzd4>1T)|DBL@s3jarcj~ zl001-Jz~of?+?M>v)RZCarkm~2&lx%)v`DddL^v}Ga%$q?)X+yj)#+TPDuhp5_Mr) zcr1h{-c-Uuy+L-ZDi7qxUvrJ6RC=lo8-UnGQvh<2m-MvPek=-`u7_?zVwzk5LAj>-vt-?&T0dfS`-ytE#Sa?pWs-xbLrBkT}+KFC6a z3f~D*;kkl*MG*a%Ks3{2`y=NX+JP?YB#yOk*K#Nn;K!3%3OZ3HN02XPDkB1*f1v~k zB*HO{j+f{t$R}kZTw=SkW@MI0?pi?I3_s~Qc1+Zl^ThLHv$WB@`>@ZeOVW$1PP|5C zyiU6n*x z^KLF}B}_P7z{Rf_e!ab45wWF4WS$q|03U3}8@+KFrYd}&Cb(+Zxav^2EfhF-B{GUF zKPHw7!K3Xfy{&CyP~s%BkzhYx?{+;Aymor`E39slB2~MI(%j z{z5S*;~_M~!*{3y3d<2eA3MIxYf?BEXoc5=_$)e_-<Uv-Y?sCh$N1Aq3@G-0Pp zli4SgUc&K}UXs@~pV4Y=;7-{d68(eO(M}>p9hrx*Ph*>32uiIg#N_E5xIuBmJU^#g zepe9}mYD)J^>=28eJBsGt9iGZlKUBEfPZL2q8V)W z5{1wUTlphr`Vv`S+P1`~7kTg&NznwqvCF~kUnqcZrt6VK^SAXa*Ellsxrdi#y7f4s z;-2)gR-|GEdn>?w+N&Q!s) zze=IDa=rO81gb=-edp)v^O`o6!6r#iRfm6J_**{gULKaEJ{x5t09S|{l6aoynk!s;@9@*6 z$IUZ>uGCPEK53#^@m;jYT}>w7NUkg2oOf$@P8FsXOj(J!lm1weghaapcGKcstOHeMeGdVDma%a*b`o6f%A8C%c+&ol8M znt(Q@xva`DL7S9R7_hIm9ZPs~)jUs z8l5(-kr+5}eS}6iC2WXDDx=Zw|CNA4S^GcXsc>jvl|u7?!0^uvN)eW1s%&xMX46P0 z7$lTzOeHWSqb`7ftq|g^F(y7Sx4U+@%Hhqj4VbOQ!#0w-FLB=4^rdCSVO~JrE?tb zdwWVa?S!B^>=1;0BT4=*O=abodC(@ zcM0sDcy0%yk5Yf3s6z~FS5uHa3VE-kEM~a(g$1xVKM1a_9(N=}Pnb$tH(3zvp0AQ2 z6;Y0fA3OjRBo{8Q_485BP-ArIV+(ejgWvSnd9kV{RNlMKXxAHrwPqfklmi;=73i9N zxW83dv(dLk+!CTkEjap%v_|bV-jnWaMlZ~=sv%=5x?k}zqv$^Q=MY;P1G>A9FT|?9 z3R1kk`P*@*_stzovhL;I+3}0KT9L@U6j(jSnl2U1@8rJ->0@BC1&$>UvEJw0`mVl- zv-<7g0;m>hy?rP=^Ey#_W%jfaEp7zXymsIU5X=9uK3v!g09jF!HL~F*{6eD?S;aOB zY;N2Hr+HY&B1q#8CQ-k)rLT*ZRwyIJYhiPThxS*zS(cLt>_Yey_WWxvg7TckOg(e2?68ygsG4&!GPVr#z`m#CMu9M;TE}EzDYEh2h7iB6Zic3^Os7%V9R~KVKh# zrk*{7HTc|bybhS0`3^L`lqvMKv=JtGrA$Z>_7by@oP zAnovCW!YWFp9r%ddrF_i>~fU3Gl$#HsYf)qBySNG$|?L#UO3RFz&PIl9bt9b-)D|O zHK@O5%r|x)#s!2!4>pBEbI(h43u4+pF6}(Bt5I+TZEzj4a)P=Z2F(ll{ELR&J1HWzXj0jUl5bPWkEn z*ooIQ`T6%{-o1$uHf~?nYLG2$o9%&kU2W5=EaeqQ+_PU}QNu<-fA8;n7cpLAzKzF9 zJFy&6Hkcu#*Y^voMeJXWJ}WDV%EIFt$jKJIl^6VaeE0Fax&;W{Ab$3)_X(i$7m8Pk z*3d%rJUECBma1W5;*-xxD?c~}n0UKT3T zgs9vz>VuH|g|YL+ryiqoP6YZuO95|LPD6QqkcP0j9mA6dF92<{ullg^y!Up&{!U!| zX2)) zSJ>-r3@ms0z)ae8MLr;a_AIW5bEgejxzr?n40h)R#({QLKQ?t>j!Lq=4LO!SkCF53C z2VU@G`r2Fv_T?p&YqO*Zxo=i|%2R7P)ZN9{WsWG`Vx(uV;Tjzp0gP}pkz}L?Kp->5 zHa*aNyU*W%N%@Kf#xJr%TyY`S!ll61iQAn?!v|t!*zbmb?-k=9b^DGGy0BFG?S6G9 zp2<>un;X8WhM#h2(sAvWFTZRSyM(`)kh_`L=3mCrbNMWIuV=D?rEQ(tfh@BYj){g< zkAi><22_tJWX|qm%fIe}c-(-l)3+6m%Pq&whSevmF}c&Qr#4N$l7uUqauMjQPC1pp zPFmWo*=u0&rJK>gYm-}Z1pA+@SQ*#SvtU8CA!Sk_&?Nwvnob~#GFHaCDH^&LPbKUz zT7GeuJTI&?@#75G*;rj=P^nPj-=v>uI#ndLGa$h=ZA)uwVkgghYy@ywKE)~YBWFyW zXwHbD*nWXdJn@2cv-)M1<=FQb*l>@Hxc|Cs2e!R19~XAlo>Nn7_@SRy_v_hw&!ddp znKJ9?5_?Ykj|Tk;m%7a>c}GVjMa8-X8V8Z^0v6It zom(z@VPG}Cho}Awmcc=z+c0be#%gKcc1<5CaLsw%lV@1^-mhWhAp}y;`pBAtDW5QDM3td#S2hhk?Z7l@6Hly*eP!OM} z(gr(zUA2UjYFwbI^v6d}$7p%2_(5G(O^^XmR`&^qo9Hz?&gRkbg+D>(Qr2 zOc~97AK-RbUOAD3m-_^9Q`^$`l=CWGFD0D@**a}d!9T7M<+8*t9}x&lH<@rQk(|?) zVT|x|3IA!f+Qv4_$wE?wm1vtd0Ih!ZC$G(&;Hl0d$yd3W9I9QK5YK_`7&uOZ6V}q_bn`9R}(WttF@r9%0wR5()wMRl!-cS zm~hlD8Qbm}q9U7@8#GI-?d1YoNc>TwS<7NtIKTc(cOB(>F3=Ge zsGB)JQsy%+pEhyOI#o0>tROb=3rJycr2)-xu%U)nBb}He+P4E)er*2-&eQj30~!7) zD&rv`XooZpDTj44{`Rfut zal44-9kL^VCUrUJG0EUoPA`NA9lS8jpOI5a8?)swrk&?7j7{gVWwiC@YATIly@F@e{3uI9U!{*^tEH7czLCYqC|l&le9f#LV#Nv!APn=!dyt&Kc&E%0 zLo1(XhY!{fc_X9OWU$_oRtrwzVsXNg6dw8YzUWpok{?9N@kZ;|&QdN0Spf~cD90s# zUc}_4*Shx<^XO26?o}-s!|S`8p4MgMX!s$kcrOQonw-U9B|88cn8PBN^3xEcBX_CQ zL_qqTwC`5ZkA8)NLAp)5M32`|Z1+y9Ku+Tz9lVSlt~fkpmsB@})*QZtO<(@I02A#) zY(4DMa2YNQ@lBa`QgvVNYvT$I`{|~4VLLp@4Dbe8AQ-{RS!sIsdj$htS$Z!ARNr2$ zNFuhrS*ILO^jMl(_X?ewuq+2uO}upRXik!+!CD^=aeb!M@3)w-85FuctSHydA1x{2 z96#uM*$q%?=PH2t4-l0ZVs143ha{4qj|ZdTyN9Q)}l{4 zA4qOWS(-^zbTBqq^p!JM{wZG46L%YdIC5)EjC^i(h;Aoa7u^Jf9XuK(!FA{Xa_Qig z32xmFTIM%2O%Qp(@~EV^gn zFQ!V^DxQT{`yV>lH4OjKJt3a($8@KubT|r_4TgaoC}2Y8YO1cli9ZbUB+bJCMthxt z?umiwZ*qUnDvvl%U6@ofcDAUN$kk%7zHeHu|9Aj-U&7OM-?X*KkZa-3tc_Y#)5!OO zFr3DK73HLiMZT9Hi3`ikWo%e^j;CzC3AG-dV>0bL8!A)U0Un#TZVvyE-|*B*Ro2s} z0}g&R`=-@MximFMk*rv>*BiWll_to3k4<{0HQ-ueB{ccmgq=li)n=E`G6eALbtKy6P6LJ?Cn}Cri>Kgf)^Nh;1q}B% zbi@`Ng(jEksR_M$BR(rra3x*UMTi6gPen~Y0k6$2J7{zocscADb+Ho{Ft^m zJ7@@w$THQ+VIQ(~!1x7tE+L0{BC)kG4vSD8kA3a-riXg?H)jA%H)Jds+uf>Q(CPKB z0vHYsd(9o04^y%@ZVy3@IT~y8f}Tem^Peb1(~L=1)Ar%g40lUn8|2EK5q1s4f~SN+ zY?&O3&9_s@(Ty~qQhnR*t50I;h7RvbTQ3-;J>CjA4O zpZz^^MgH@2Hh9y+IN-QRv=MQ})WNKo-?fm~djHXOL;e|4=1(U6*aAacbWubhd}Lzh zGc`dei@6DMY60_8m`7ZNe<8BPuu>tK?w)p&ZXI&3B~}htIA_myY*cuh(mmP##(H+56(fog#E!Si2N`>hUam)~n=tt;?!QSk}wY@^sp(;mtr*O>37%GqvJ z2PIfGoZ39($>mHwr?kUwWqwi{#4%`&Xe!mJjiF90bj`IKURxNTV>(*;TE>*KkbkO6 zh44zJyam)GVJyFjGJw8_^ySlQwa=D0u#sO?*Jf*y`2hu+MFtm^(eotbzQym7`N$a~ z+YaCP&{}LA#~8u%I4OIPY68w1;5-l}@#sFrxaxs8vhpHa&4w52W2BSBlxZTK*FW8% zmCDH@jx1sxNMqnFTZPx1Hhi8{Hf^K(i!?A>ibF?@5`ol##(}{pgKV3XcR3c=p|uji z(#5Z6sW&M)$-kY(es1~s;_7oNYKP#CMUjd=NXK~^LyDp`+BXx{LJ^NLbM}lUc;!69t(C)F&*qxAwR{>;65b|Z z#<$N}zZna)VHXX9JtDbZm4FzIn=72?4(f%CAfDGTJ!5{#JALz~&E^<3x2m;7q+WT8 z3{noYBgemg=eFU5`E1;wU0u{a>N7%loBRi9>9Z`$Y^2|-PzPc%ur`Dl5SEO7Ol_fX z`tA_{Ec*6q{E}+xeUqi_!PG_MXWrN>3(0w}k#rxW`DF8^I357ZYfQcdOwO#7s-A@0 z$Prybh&bbo?7ym4Y~X%7bAoro%!ul|<;Nx@kBV-Cxfn1nhrW@R4kp67m7V1Fik1J;Hl#EWzk8Edn}UMl>H(MlFjEQ8$B{nFe6AQ_z8Rid~h zrWMJMR^P0iEGOUp%(kDAUg1_jn6-^3D`48Ntzo9P5>>gQ;cT~Lgs;%$*J)w@EM%^; zUp=lpLOnFyjL?r_H@7^U?0I4|4XqCBt2mAvZbg$02U_wsy5iouUy1g|x>&TGj(7)G z>!t94+{l_OgQIEClv|*kQPUBw1bnIdC+~7NSU(E^nXJdzfF)$KmNt|ZWm5a5WVJ4a z%O%L6VHkiDurWy5=t{ulz>!h)5_+pGN^&J7c|~sC4|_q(O>_FOAABHEvfTV{x@)G- zyyK{ZP}8B{xuo|$Hms)upwlj0)7IUk6Y5o@pYibR_CKCG7B4!&Q`pq@;TAyXh*CFG zK@W6Nsf>l0M!~0bHHQ4;g&CR*U|A1T0Mu$EEOWorWCqZs;!Vh_(Iv?vVBg|O+V%6f z2IVm`@~ppje0FGo;6zCQs@$?YzxmtLMLt2qjRh)R9+x^|#VxE%?&o+D`mm5C^;7uH zo|8f@*(OH*L`rtrWN`>&SqypA*{5G=c4?{&5Qg!)dVT1gHbubnX3Lgd6IbSK zm_Yr$@J`#FMHa9oe@Kpa!KvN4j@G0FJSu zU0?Rt16PN(SWoL}-=ixHBr1a}9rJVC8mu6h00`*wq+%1RtO}U}xU8EV)`WrjY??~% z;}wzJqg&&LeUFOSTJ{DdAY?abSK3S27EdVJaw}o3d$m}7w=ND4PDjX`j+kCz^k|FS z7|(7qcvsb1aMJ+D{0pT{7*~|ot!|6(UF3)hCu*Cs{oe5zT#(1+T^uY_WMjDx zE)o$zPtnLg$qX45(kPuE9HgHYk`|zsM}aWwEAu>${iE?bEIHDYIV-G0&V`T_22$ma z?wrX+*OQl5@ODEBbw&)^i`Ofi z{?_p~!V>POiv}<<(s2gohYus!-+spO#;jE~z!GVA!g^%ln!ZI+B(i~NFcKMdF@fIz z8U>=IaH*s!`8g>tM5wPNe<am0I9|%K}Of{g`H&VM;%RDuX zWKi(|BBQBGLe7on*gD?7Xkta{JJE zQF5>id!v+cH~dpV(A!>pHEjVI8Y1i_F2KN&8?>W{N%q`d*u%4aVx9h&>{_GrxkkWg z-1uWMsDZhEO{`8^rg;3ZnUrk&6BR{3wA|0&bxwAoL6H+&Z${n0h8o7UDTg|al-{OTh+`}vJ<;a1h_jb zp~dMUp;gU6jVa;zlXj1@G)L@Cx%A z)^z|Cp!Z;iOT^-~2pf6Yv?8j;o%TI*+ZUYZf1ihUvPtT_+ZYK>kgWiyzDYnMzzegP%rkHHKKWGJhvr%thj+3z}$Q-9c$ zoa7w1!A?w-O5qI5fRsHHG%@%qx@U=_m6_T97Xbc10lyAXQ{2+x$lKy1H1_`h!L3yx zgdrU5NTeYMQjt_?`iiTUR{6{AsGkyFnCa6P{LyR0L#ITV?az=hRM|M?w9LmXx99KY z8eBf=$md^}eYG9m9Utc}>eamnLN`>3MLlRJo6fF!DKljM0G&=ScgXgg_B`U@jX|Yr z#){iIp-H099vY5V?h+SxmcXTf=mz0ZC97 z*fc4Vn8lli7EHGh2spGwVc82x1ArB&EhS|r2FWTQCh7wBAR76vGQ*J+^Q|(KKdO~F z;#&$)O~OH00H}aXhIR*qZS;O_wA1aam)dRST}eZYI)u2}h)}|iw$=((k~S$&AdX@% zv`ebjxmpj~mn8<^WT%KdM66TltrYX(4oFNsf}9X?4mal+=%jJC8d{rmwYIe6q&S5k zX*?8_07pR;Jqro}Xiy_+RD}XE*g}Eb#2TY+&dhzB@1;2H-=R83a7??!$3Ici>si{K zRro~}K}$_VwJVuZb4XD;lN!Hf_HfY+7S$@XTT3+hmu62?>Jqfs<4K&XdNZ<8)5&?6 zbW`T)Q#AQ>p~n_HQi65cbfaAhDJo8~R1T_?FJ%yV>@P}mp2G?LQRBYV$q8;w8|}U! z?RuFjLw4uh7khCR00+2^^xCFb(IsU9vPWi{JB2sGIWA`0rrl$bm1SDQH;{dsbe?#KI&BhP3G zu%UKG)Vh&8A+0s2v`%sRd8EjX3}@0n@!!P8{T+;EVwhw=E@fhvd|)`2-({dW%B|I0 zJ|N(436AaZYYD|%B>n7{SL6w~t$6G$OBDXh^!IphD>TXbh#U|WE0xEm_`%zVI2_^% z>yx<=ztyFFvSx|f^(C*VvDd~mKeGiOQF}Ysl+F$nN@*>im4XQ3aZDw}Ekml5Na8r> zob@rab%UD{WbOS)YtO4+Z)|oNc_d8IJaS4+((XTqEj;N`ld5_(LV7Br1#6MQA~$Ok z;cWxb5O0?3`Oi&xscomyK2UvF0DjW!@nomj-_zK0Z*B&0xZB1(4N9^!*?jU>@G_hH zey&)LK5P{FPs$700bp?nT>{gFy85T)gmE7ba+Bqsf%FBERV${8&T_Skbw8y>bJKB; zj`@$5!0{7F-;2%L%_t|QV9!00QQ!DiW)xO zfH9P^_q5ONms98F>%94XXuxWk@YM_qWixNDfACrxjzn$t%t$P8`q67WeK?=tIN?4% zF=UL~cwc*VADR4jnz{z_TpxlqADY&|*I%`T{cf^6Cg+CO+Y>Hrx13Dk7hs>(^JBt# zpqzMOY0tL%#L_maY3V+ClOHx2KZ8fr6o@r_Sh{Ug__+T7zbJ44(;U7(Oy(>5jaa)a zQQ)^vk1*inf;w;Gk0_Y{UG=^Fj2I(Kl+tO!C83b)cJ{X|cBR6;g5 zwn#jcst-9wj$t)miJG2Tqwp!wdcs@3B1aVRa z>k9J6Q8gd673tdkv7_CdZ`&f&m9p(SdgZA#eA_bBswBl;w8;!6VtP)SGhCPN8Ao)q zOFpLC;NlDiJ!rkvc6_VWku6lTtFnHqFvh|AGV8moDum)k<0;#|t4xtYi^t;AW!p(O z;UH!z4##aK?(HMmk5$o^CEV3&O@U09P)`%o$^|tOE%1?$5Qk7bCq{Hz5pEWb;E9&3M+#SUJ3ag|EV-+CYzZ(Xtws3@O_v~)1b_%Pt1_^J zGM-JP0K+#bMrB2`saGI{Z9C5}%DlI(cE;^%YtpI`nyd19YJ8(&S;S0L^tSt;YJ(gH z8F>`jewgZ;Kp8wgJHBy_B9o9mI#0@nqL%drPD4>NqqM%3E?z`S%uU|88P}%QaJBMXbE-9%&ErG^VdBpl`ftn zkV=sH+Z|VeV|3}-=c2d8Dx#YwSMXqkT{F8w?o`n*Zd(@Et}WFm_b|5?Ql(6-PH*b3i-{+6s3-`I zY9GnV*rMd5Rc7Y20@J0EwGg;LU#K_qzOXFM)CZbQqVHa$W^bAJ9I`dRUJh=(AcpDShn#5Hi3}= zi-0+k*;C%iO3fng9M8|LFFS9>R&oI7ao55&);vtmZl*?62K}$B^WJH1$|I?zw!dJe>eYd6 z>Vb75k|rxv>YT%aVTCv-?yTgL@F)Wp+Eak&w5)b{YffT8kfpVDahwMmjM_<#)q#(exaB_bPk$xpMstb~|pn0K}kjYoz_qhbeKm3J~_w;U&=w2vKf`+u855pW^%xg%M zg1Dpip&HltxmA}UPlDqr=H(KT*yg7i^v)6HXZ}$uy4^q1GqAU83sIyGzt3CRe%!uZDU@DcUnrnE|CfQl$iG|Ur zmH9b-6S9`{(isQ)W;cvi>~*HWDq9*mI}t)bDqap)#?lfqD%Qc?oC-kCSQ49OdsDgI z+8a{7Wta5|tI^2ERn93@6aD8g{;6IOt@hV#j>y+?nne?|ZjdSG%2Ld=R`;UYvyQD_ zg4=R;6wNAWZXS&#lIC(aatvO-bW{tH-KbP;%IzM%AgMRFC#aPuRh#$LVMJbR6@@pJ^g6eVEn7W>p5>t!dBtOr-vQY;|=$@U<*!29sR8 zE@};{Nos*oZB;vluOmm1?-wlSLrIyReTG!?iXknsg%?~=2tpLHks9sUXSMfb_oy{$ zOvb%weIlUcUy5E*^BKd2QIA7FVOVfoG?#Gvm+rgHtJ&m*725lvPvJ38*FH1(@?TQ@U5b9E)9 z+kU-Eth7_!Am_ZM&CDdH2a6z`x8=&>w@(!glze2F{{XujL21@xyxYw<%F}IRIF%tl z**+3f0R-o?3uY=qV2Lk+EON-?b|SMdgd=52q#+1WzZspSrVoP-{{X90X-1T~w>1`L ziA04~-daJ<2dwBEKC#E(=f`Yv5xR5A;F6qP-lVL;x8>@zv%i+nqxwF+Ekj3(lde2* zoD!#|GIt&a;q1g|c;u1AN%AcpX!RALqikah`YcZ?@q*~TmbSUgwFY0#ito@z^LTTK ziJ6ZEM^Eu-@Bi!Ypl6wbCI{{W09$Nl~hA`rZ|-%i==P&Fz4021fSSDK|V!xHl2!Ip=?35{uy{(r)1P|k)CG& zZb&B^MZO9BXm0MDH1cJV+;kmcsxE!k&k^6Q z+2PIVYizFqIN>Tc?FB|EgNs$G={O`>lg9+@g4#gX4=)~(FVgjKxl&d+OUkF@fJDZ@ijPhIK~pZ^yj`uuw$8wob%n*lhw#LQKio`l6+L9By#7mA66oY zUU0C{#i$!O*D!XQUZ6O2S0z{2%iUIKi+YZ2_0qOl?(}Mgj1j|3Liu3i&OD&4iRec- zxFkPl$$yedf2l-P6xO?)CZ!+`z@y762gOS&_=2zJi#nWhPmw+{a>wGzBD!yY=JD-} z-~F%k=&xc8P||orjxWC?+M-nLue$1dX!1(MKs(r1^zzkKnKAT>9JiQV@iBTj>y5CVuR0gZ}^}CZ8Ta5$xxloZ@v5Y8Ll()OSJRC#!E9~iJ`U({-6U(#%U z+!0<#99s9G&pL%vfOEI5t-ZS+2(f5`6nbDh{R&_GT6|(!t|2G#rFMoJ^Io+^_?*o7 z-BtX;y4N_(y;vSHFMr+hkJgBDL#O`$khSzTkB5hpeB5A~4Ok3k&|ld90D~ViBbo&~ z{{VO+my!t2znppfL~~15m6ZLJzwZA4?vIgU?Wnb>wX<6ztx~i{mQezKcUK`^Zj)SPqIs-Eg@v$=h0Ieb$Z|_jMT=VbWRFbw~{LMOTw`u^}&%<`g*lAZg z${lfhU-|BUe923RNh8^haPf_fPvEDosyFvWu~FB@ZPpdHtyH2od5w(PdS_vkcx}{; zf!Wl40zbh|)FM2g?{;|iOu^Wgzi&-jLN|!f-b;k^m6PeOsD@Fux~@aunN<8xlefcv zKD`9aA(Tz-d!XZ!l8Mic-cWY@`}64_BP>$;)Zh7b z#aLER;;mdt>DZ_lea_K$#Ioy1CRDB-1E2(=XWsk%#bJfVj`$bP94RD-L z>Zg6AW)9r;LHi#l%*G1mJT~=Y_*3Rj{aN^XdPJn{9V5?FPGsAM?-lh;Vs!lG)u!{< zJU9OU8m?YleDfH0_nyA-{{Rqda_i{h!0t~@v6Iuaaaz(|PClM_D^QK>P^qd$Oct8FxaMy$0+T^eW(lIVuEr9>g2aP^h1ZIvwx3Bk_E^dO>&Pcw%V2e zB{r}-Gf*3d<6kzO=)1`nCapRTPwj4PU8l{3X)Sz=eeUC}xskW*Q*1A%fzLDTF>NQo zm$uxz6SsdL;H?vLDIbA+{{V)8=OVU2rT2|A=jFDA?aS6kR^J%?Bcn@Sc}%A{&%BY8 zUVp-uZC{={(NR*;Zj_!N9??|IL)BKMq@BuSff*l-CZDT2MoNH3&r^#0i!zpydTz@n zzTzKqb%m*HdM@5s=0s@2YL5oyy94n0wsR!#{!WNnNO6B;6q zc04WTeAT`%uY17DGbSnK%LjydeRkCYI0&1yI`Lc-mwMwp`{~I5jlA=mpEHf3qwRIv z!xZn#|+h-w(6=)n(m!*l1*o}A6tb_dvEl()C9$S47usy#5rxgPdKK9<6QinN$g?I zH%)mb#>V8{(mvxH_Ty*60AZRw<`ylu4`*z3F3HG zZXIWs{Glf@PsL?N?Dfm?*B|Sa%GeyqT*q^d!KZE0UNMeNd8p{eDlxt zw}n$_6O)5SlUIjOuWv9+M8xxT2ZW~uxy+dP^^B?`!1B0<7PeP*8??bGG?qAhQzp}Mwz^bt;D#0iCrk29PNxrmcpD#gn+x8Pb81$ECU zkInSNT9^VGst`9ibhC~B0OKxX=gWj|?i~zSGA|{O{{VEO{Of1a{A&UI8hDwE`59l^ zS^XCnu@I5IDm6WhM>Qc>-0h6xZMuLXw?SD&k8z$|)Wvjjy@hM?lI(pte4ny;&uY$(Blle6Zg|7?(gd`D+U}W;?zS!O(sNOCk^vG8>YkYC% z;peTdr&|_Uc*|g0rDzsCwNA|tX;zvxDmNWS;O;;S(+KD6BWGf~>=~+|YNA|wH&kWjAL-m(l7#^kO@E#-d^qA%J zczqe)haYgk##z4Lze|zQGULy<>@{7A{{T3~Yc768GI?9_ z+Fj0Zs+1&_=pCIE{{Y1l;(hMbXBD0yw<31uf_EF|Xl~W;+P4D10~A_l*=du%4qGipg~Wzu;D+$Z>^DLFi*+p!iv-sx?^cgO7WM2~_;^2O0MK$V#% zkYUsCLcAiGVLUd4im(1D8&T+S-_#S0_UH!tVlqi1v<}>_@cAgdaf#+ z>*Mp;C-_q}6Q85QF$(P|>sT_a^>*Q^+sZF^wZ+AsWAZrNR!J7} zR!ZITMd=7aDyteo5QQlSLKLJ`Qp5=jPG3OvOk{rYN@K%)zTINgij|cSMbx$9@TY4n zXZ#i(Pt>98%y_Q>&zOA_WM2@&#~A>2>W@uOml_YWL(N4}DW|SSurN zaPS8>Cm;@DHjhuw6`w{q$?oRI!hURhLN&6a$E4jgl6Nw?Np7SZWF)SyPMTLO^WAZb z=WLwyjfvAY3)Vda(s;Yccbw1ob8oNdDkqTV$}AkpAVvHJaH2Nk7R1#N)87Nvl}~)@ zMq0j3Gm9XeVq-d<(zTs}t36tChTxaq7^O+0-t6q!55z1F=7>c_JQkFS&NKIANJit4 zQshDR@*DNsb;PGwSHWFu;F2WiLm19;QgGl83>820N;^O{{WY7WmvP|x2~2?g6vwGN0%nd z%KUn(kQoC6;Ab&=#TQ#0-nr@V<=$GA*1B>-6Dr@{p|_7Nv3f;I8(;ck!}~V)dhp7m zIpX7e0o`qqA0EGLX{NdYyT;;B!R{<8e*p9_cz~_ z`SBMxNH@f};JTil2>$>a`njoa{{V(!eC0kzr32S|x~pI!344w;+UK2--tlVbPuERiZED+8YgXDztS#eH zt2s<>foV^4xrxc59$z0cCxr0??s{*S&1x_8pH}|>3Z4G|;Yld2+E)d;WF(w~U4zFb zf@Sm9m*E|}$DCMNj&W#Ihl`Z){{Yb$Q~9G~%_SIgcL495Vf}3O>UW^qV6eW+Ue!Mc z9{a+rx4L29sn)$2*H-?=+>!|7AEgnW@`eEN>(^-P+?(9?N^zXc)ffCpW)IPv`@G|= zs9vq0zXZKZ=eH?_J^uinI~M^4@Um0js@k#t0LHT9ANnWrMwYU9XM;_7ov$Z@?OZ;5 zMnD}rrWy9vHZSZqARL9;SR>d(u>SzxVqrM02}z~?OuNV6+M*p~Y^$Xk`j=f;Z~htw z$8Gm9E2^u8nNe5d$xSQZ!p~j0b%`UsaXjirmepSvdy8YFb?Xu5s(#x~0`$D&@R4=& z{HGs1JOanNoL%utQWM>sDm=1_hdBQLlntxt;yL%l(-s(^)^Vf6O8)@(gwOTssVW;f z$6}A$RQ{}0WvHm2RA$?K*>)eOaknm()bfjx&9t5by5mSVQ-G+Ij3g+GoC7himKSJH zmNSJ)tc>G0^oRC1$jJ7^S+B=5x(Yh3YIoie+`5my1H^TUFHP0OWLv7|nI-=K?@Rvx zZ$5EIl#W?S-gU=fBOCc`R&KhZhBC>vsyms%mSIlF#?q|!f*MX+h&4BaAsgzdkc1&h zLJ);12tpL3AqY~Cgds{o5QQlL$a_BBPu6{~faE=&Zl~)$*iyLh=g*F4~O&mMaFkLL6I-tpB+ttx-nI^5^|Mt`2?_A2+8k2JnZA>LZr zkx(D`+gr7Ec%RGSsL|Tu&Q3;I!00%AvFTM@@akOwTaFqW%C|d=F&e>{1+@>Qcc zM2Y@iJ8B-S&gXwyH!_*x831#Z>5;J+$Ra+AquuU->Egaz%@Sv|y(NCf{{T;ZqrTO> zyYesFd26t1pG90>DbKChou)bZR;cOZzB7V&s&fm#@%#+qpak@d)v)%GtR!a$uTG?U znwCD!L~@NP`AmI%0=1?2`d+qatiC*Wrm9B(WDNSb_j8Tbv9@BojAMr4p6mYrB`h)S z;pd3M5X;!#Mg_Lxx>n`-MvS-nmh@XX<)feaONwvzh7_CdvBZ^apM8D1>Nj{R7v-Ka zuvDkTbMGhVz>N&;GEDc%57}x@Ir)o5b(*=3d>=W}D%5Tu4#SKmfUB9<4e=Y*das86 z0JKJT%{Ts?Rpf*9#))e;>Hh$fyHDkR2{bOpS2bky?$=S&I@KVbB2ZEfEQKe;N5?UP zc3V%%#xTFslFPgJ7Pn`S=s%+UjnWZ_$bV-c>}#ia@b0`Gejm5*ySm+W-)hEus8SMD zZqHqw=#?pU=IQmG(7H`ao|JfTGc_kUL%CR*mvK81+srM-mH|mASpba23X$0}U3)p) zwJVRX-lMjQbutv1&0n*YtL#0fp|&HpEWVg_nX~Q=%9^@I zb}0Imq%~pJmXpA#yH`<*a`ZXL2b>4En5i0cqpmFyvK0!WxLUSGUS?i$*E7Jw8^(^Ag1{JZQrgejMqd9^90S#`As8+ElQ4k1ZWR8pW~z|?Im)16(nCM_*avaQSJ z-I?N2sdpVNTB6erDJ24KLD!IGDYNZ^_lku*=~?M@VN6Umpa}A{?#CLjqO@t+_ha36 ztXZ@s?-eL$R;ihr(@JJ$8*$Fy(&`f)mtVDl#{*Mu$}>GxpTlNiw99hsBv{Ffp?XDS zM3lV>#T12};>1j>PevYJdvO~SWfC!rBq-Q6#Q2!2DI}M%R$EQSb%d!GT9AUDcZd|7 zZDD<9NcqQ>W>(zN;-wx!?iW;oWD=fYhOk*c9Alpl!tBy zn7M8lMutcVm95d{n|%p60mjy_lJ5*%vK_u|-5!{ex4Ug<9p$1E3waW0)tfq2V^H); zs_K@MH8b}z=+$vffZMTc8HzacHwxt14u*Q_!$m&oQGGd`B1Su-K zhSY4JNIl|B^VnMGMqZ$FDJ@BOAb@Rof18d-|pOipF0<2wnqkMWyU5B(nx zsw`TG;iu25!b)iT7+H$jOV8eG1O8rE{{Yc+M7ZPmuMt0g7s%-QYPH+fdn_;H zy;`t@BCe&tT#tn(|_ z9xQ>2mJuc-*^nMgh%)5Dke>zkkGmP<@9$k@Xjsexl7`Ck5|eb24-iN_qP*Ow{Fz!w zK%G@%v;L;*pJtlCf6`FanQBFG>uKkT_|_^k3x;B*^z5^W&m58}^0I46l+%nYgWV32 z`z-eIwiKsqZW!4a+Yy}WORJ4Svh)BW~LevMQ5RSDz z$a++;l+T$58vq2AX&wiG=@aWn*p*Ahu<6qX8?7J_xQg4$x_lxR^oT=;tgR|OTJtP5 z@~&y>(Kxw|%Uz%;ZIU0PG%hVZyJnD_D>9RA%g}9kC)@y`E=;{T%1Jy@;9+CAG4g`k z`fA=gOZGzT0i+GG0%xw9W}8gatviz`*~ezD3wio;4K#445QZfuT_^_uKouWKAp@m& zMA8N|p;|up-y;MwbZ%%H!UPxI!NvB1?h5e+);hOIa;QEVEuM61Hm%$VPihUXmkQK9 zIqmJ(`&7#fTH5(xu{|-umg!e)`}P%8Z>Vo9%#H0WKzedvCn?~O6G>kRl+xTl<2z|7 zIVnFZ%p-tOYHGODi&cgcvPn{yo^47vQ6zvyu1@@!+8;!jex;%pzPfgA zs=B2-9MTO~xnwDBOep0>c9n5Ia3*3^#bmo9Ej1#-l6$86ra*2yRDA%Peea2BHjk}d z3wV?W82m(&v^j`j@8J^AlN=>e_2V$H-`{bo#^paA4Q1w>nRn|tJTM65G zboW0rO>+J&dh&}3JeIBKm&y&McdZ4jH|=9(>mhDZVfs}YUNrTJIYUWA?;Mon&1p4O zuT-6Rwp<99c5a;7pIQQhvU|tGxjm@6duhNd>i1z)-%_m~zTG+ns8SWCpF%cUk~TZ( zxo$P_?xxzDo{)54Bq4lUN%5@*a$hQ}4@tB~9M*Q}VZ3QLB-3;@H9L<=S-@R!&@(N@ z?u-4+P7LaF#)_K5^-6Mt0M=4aRy(2du7I@yQb{8_D_JTUxdMF}yAKVySU=uQ4|ypA z=`m8(SDi4UZ_ca0dGbQ)N&f)fK=yJNjXR$CPrE)jPMo*(O4`_F~$xn7}P1#A6%2yL2Dr^~vS(n&!nsN9eM&cd!}LJ>z+6oerPQV@hGNQKp3aTkTW%3NAdiVQL6g z5b*^`2MQyEV<6!2n3@nP&@v>3$ ztd7@GJvBdsArR|rAqYa0iuTA>XYS7*o}E|3tEPOn_H7mvR<;_mQo8z&ofNM>S#I?6 z$Bb)NjBoS)t!ZD5WBupV6=g;?sYaw%B~>L_rBiDXOV1poQbtyxDy-~yrRLgsrDSu; z4r3(<+=Z>RC1_HRw40?!QA(0V!j%FDBZxPxqy++%0Hl#(2m}$pgOMFIt`|>a4$Ie< zcx$>3rb>0tuJ&q^Yt!wi=SqnsZcp27(q~+ACudhMTpIwO0L2$M@@V#HVqtTZGWADF zCsv@bIj4G=aLCNIuyPdJmkRDe3Qjn9f`V{3Kmt7jgmmz<-%N1ia!~Z69%YMI#`e-< zkrW2y#C6vrEORZT4c4l+@H`qqwcf(uEzJGbxmio1`$%;NOMvr*3i9Ud?2WDVoANSN z2W?$tTPT;P&dW*abd-jsH7?w&yNgRj+N|uWVGaa$Ac+Mw(7{6-ARtI>`WMPiYEfyE z6dUWaZmUw0DJ~h4yQnuEt6N(E0|-iOnMzG5E`*K(TQP(Od{g zAQS=>h(Uu35nav6Dws|75l|6~2GT5$4U3X<-)4geR`ek9tJd&KD$|jnsgVlLvoSG{RHv4b3 z^HUBbYHdt_=GXRo0j))#wvZBmZO@@8N^mfhFaQ|j0O`mB?IKOub5eBv%YL~^yKiew z*sIoQ(hH%}ZVQ5yMxCq%SmBuYvR zI)tmV8lY}wN@c0G7D6SIcphPHAo`>q!ao@LJd93OE1^Y42#15=@v!NshaU}MYcN)~ zSTZEZN~cPi*QsONGrVw297BB)0eI!25~E zv%|-qluI=UTsAe>uL=!I;pon1=!h?8rvsW%ZDa8hID?RSPCbpuIT*)=IbcW0TSxsF zl)G%kq9*?U`6*p~jhpMBQT}siaf0{l+50NltktBbG>WZqrtfi0qSI%p)d#Q-b0tod zc5-dp5&`bmWyRo-4mpl-ywH6HSu=WCB=q zGKOuDvQ_B|a1+Kz+Ru~^Q6AG?$vVAMkXprR;Gv?&p)k=Q*~*3AGSwaFMu_#h$0<+L z)P$fZN-gk#xg!(V=TDl_-3Zf*5g|Nwy!E3@m~l8I>9kX&S2X(7$hzyr#~eFlWaMwR zTY81L4cOmTesk!W{ZoHQX=3Et8Y}i>o zD#?oy5xI#nBDful`_Y{n9AVY6;I?ARZAnnE&m&%fLAWFyAlUYb(aXQ&+3ZJpcZ#WK z4XsOgWT`J&6$_He?v``wH!W&bsS+d%oHXpCjB?9I0~L(N$#0}mOonVtZS7O0Z8Xqk zQclj+X_jfytfw8^x@Br~N{jxA*aL->PBcab-!{a0V+iV_dmw4NR3)ToPB!Z(Afbtq z-=7@>e2DXvA(Zp#wgKOI*~>d?a*HE^iBRaWt}V@8GuJ*#jRB_B=96B%_0IjMH!CYK zIas_k6}hSRCMKR7L@Jv?rlY$lQ3*@pVZnfpi71P?sA* z>NbsPUR_E^Kc(C@r8caQzWwc4^&UZK7z5B-m>1`-IkS=_%@$c5KrN`Hen6ZgZk4H`q@4DogI-Qk{!Q&_wN#(D4&Iu>Y_Q+p$~j87 zCgt1--LyK*KUCXeS{cyJT zym25X>SFpMqcTm%@VR#Iwq*qXGEk5R+-f6wJBAlqO9`0^S!hqZF&sh~KvIAsl4432 zS3=rQ=C3a$b*tq>qRY!qPxfxn{X?R6VQQ#aR|K^(p*G%e#+iDCr5Vt*;E))#&kt5c z!ZJ*D``3$o!rr8I3fDR`q^LhQR;^|$*DQl+PI%sJPFU3HVp|v_aoh_*8~5aI9*o$k z;iA2SWSteDQk5qpuZMGm7~aa=zd*R;mruB;l#2a5VO`{nYMUojlUPu~ zf~9AfeU)(mf(i~s#x!P&*!Qyi_f@V-Tv{Ke>TO6_ zf$-*k8*>=0cd=yG8Sb0|OzbRI9lfGH3h~o#-5LC zOAnGYm#UcC|#$1*>^e|{f$=j(?hK#&+rvZ zo|y{%2{AK|H*5a@B`;(Ox?B{Se)+SDnc-c(f7faXWRsk=_iDSjAdZ1)T1PBmAu9PY z>(+~5of7SduexZ$Gu_M1R2{6a5>F6qOxjhwHw&HzSfkk7vEdI z+Dlt0x(B591@kc2ovo=Y(QMix2YEAIyXxFh)Jk-`x4GL-X*e!Ru;WNtU2&}G zzh+*^_6)@ds*bu?7H*;HJ^Ays;d<2W+j^B>ot3NArV#hd(lgZ=SLWp<>Fq5t>GW5a z4m=j}&>mXJr>>5~oxIJ>WZcd6hSI%nb4}{YuG)0nZcY0uNNT6uhSNDUN}|cvU7MXq zZI#QtH(hhMeWsia1vZBfCZOu4%1LHc*_*5OWYLXTQ*Fb5X}wQr)tT%RXbWBZN6GBlNoc6=Ttr|m12?6+K(R`^pgauu{vQlL&kmrhw2 z*nyC665WBR7T70E`$~4G)8LVYY4qJw6$^bB`~c+|dW(sKAo4@AWMd!@Nihch0Ll}n z7N7QE>?hiy%4Hi(RIKZ6S5qi*rz90QT9r+;B&L&sqNJ>?NCi!_y@AM6zE%##%b7%t z(RANhcRZq$s!sOP3({6$m8kIWyqX;@zLxk^veu<{NZhGmAgEQPk7l$o8)bS$kHtXm zTa7M0nnVd3kcJ+{qv~(6Mxnj!V^%8Bd?={6j3O&*J6wd?W2~M$q$1jh&%)NfJxCtx z@!MY8QB{xIeag(J{0e5G==G&iSqaYyUap~aIrlU8>t;rAk0m6 zd(`RXs^LnOWA2XJsm#8IlZ6x%(W$bCeQ6vjQFRI50XQ+R+MV)}_H&`wPStdN_M&T6 zqt_-_px8QXX}LD_!&|v(N4cjap-OsQTBlE?GV;*mAph+~iru?>c?X^s$}l2xeO^~`B018v(V1nPv`++2_A=W1#ctL)v~kZLoi zO!}7fPR!J*1zob?NeW98scAZ#$pmhI?BW(b1w%24?G@V6t$X%oyfmh3vzKVw4(Yk* zRN5?+QsmRek!L9ar6Vxw>A2dQOR8l^mMKH1r75+Ak6#4i2{qVy=(VJ#T+<%cy`*h6 zW#ge)m1I629{ z+(o%rC-gsg3r}R^^)~?D5G>RXZvagDjn>wi^gWNn# z=~R=IRKmu4#J5jnw5yX~bCFd0X7-q%+0MyoH_7*`bjcLc*=fq&o?WzUP-DA7+9qg8 z(I~RL+iKz227S<+fL>6^j%yLnoN9gEgFi+wMLQu6C_>WBALZ0sj>$HOHxP$8MM}9! zL|t_P6{rEq$~;A)KB5-Gnz2-b>OR%Yih#08lAsOk;Mg3t*Lz43CVPB#qi|tDTSheT zfO@Bfn)+}ue|S8`-u?ELIj3p5^Y{}BANFy#=N=i~e8-2{SKF&bY@XDb_o=#>NYw2% zq~CUBvu@Mrw`GS>O~Xl^q)Iz3`&R`jitSpn?ioHV0|HA}^lrTh|(X zb8nI1QmFy#^rhqN&L;5()BgbK3de;`q&koIQu=uR05nb`#ce$%q{s0L{Th7Kir(m7 z4clw;7~(ktJlt@7zcg79SKX`OyRDPpl;_Jc3m;M5EHJ@&Dj$nV{etTmUMPJdU$jkH z5QHMSq*5teNU66*e&DRTg4G*O?mDA^dndb)m2z=;J8iV!+jj959*JvR z${q~6E2R~g76?`rw`(rT(tET4xl)^*aPW+hkh6`BZ17ks#PNJH4Qvv;LlA`t0ADpq zl+yrZov!A5+2yvhypB_nZ~I5uM@F)My=yPYvrBQk2WIb^Dpc+Dtanw)|4ouDZx|E$Ta%gSO8^icfge& zSnZwT(CF#Ckme$Ol;aZHAhPZ&h=wh&M{V$i0I&m8GM2(X*eo&@scxt(MM=#iM_1}YVw*ExL=X0xu-L5Obl|9dI_&c5(`#j=-w3ZF$Dv_U7sW5}fo?Rq)jQjk_=X_nt z3AOG86M!ibC1m1dhKRFow{gp(~i%j}X$qQR*O50M9w2)G?D5XgwVM>7n5x9a4D_d@E$32v;^tQc><>l86G+IY9z;Ks`8DemlAQnEIq&5Z51 zEFXT^8)pQZMjNv)t46v}wi8yBAaXvml1VrlV?49J(jxB@()}r$2+EP9IKrP{-BuQi zLQ6f)ktNY)P|Jg5!zdm-t-QEBZc#wRd~>M@GTUN0RWYUGwN zPV8tWJ8J3#^AS^9lKFXQF0Dx#)=Jf`kz#->6>v73t-r3k@N=@~Z%bW8b{EPIIa!uT z`_(T}bVkjrte|p4&3W0H%=4u~0Zy|eD(5l@&fk{@%Ee<6pzmazZjeX^foQy}%a!1s zVH^p!ZP`~B$SG@_Z+w)a5$U8NSkt-gi((iShhk$OY@Jn98)3VJX@OE`fue=t?(Xgm z!CguV6b)5#dFS1GKN~Do=*j(A2W31d zNVd;{KIe$d_T}cPT)3f!lTcSl9>x6{DQDFIV)7$y?xm~xySkrmt{YlEJzX5QRB+95 z;eIC9UTNCG+%~BKjgTIA(C*AVgjH5h}I%lwpH8|@u*tcMZMT# zqR81OB{`j+EU?Sl;(Y)EHyqv+=0mo{LVvIHyS|(HXVFyhcY;*jK1_B?jfX?~Qu^tY zJ~=_1ZU2T;;S`vN*q-9Cl9Rj^bIJX?<;l@GM(-ICkpSEd1kniq^Ly zk{}!N;PxAjD41lYqI*EaM$_V6bE$HcR2dR&f%hK<))YKJPe0O15%|iCREs_Lm>w~R z(`jBDx9KD+hDSd4{ljapVr9r1W*8>s6lWtb1tWP3R&d*ZSC;uL;CR{F z_A>zi#cn= zAiWw^uZ%+sL@F0WGw!RSDW_bfaWIMwDs)ADI0#+_6mC%+qy4aK*>=&)g9W0a>YIuHTuGo{^OiMu(pvdrYUqT_UlGXFg zSqyD|iS=>2{neZ${xpy>9MJ4Nvpl>RpBat+44TOm#}A4US4{O9uHIbvK$Wbe!ZSc| z#9!+&%&orv!8~Nw7>?Xg3x4} zt1#-Rp|kvQnX&E;50WhA9g~&N{Uq11a&pe8{J$h6KL{8E5a#wuZ8dA@V`%L8Yw$4j z*i-BSD6D*|xK$0LbUG>4%N_iQ3Kx2;Fhx-$qiuf9QozqtKLc4R(hqJaOxGkFz%{3& zKO5s|!qzzDue;HKCT~hLnPUmZ=wJ)19I0K9yYTb@lj?%_)x+Qmdx%%I8{M9I3&2(+ zyOa0OfasZ`v?E@#iNueJ@O0ka2+mKhzB7~%5F$q}x=uYAUO`*(`e*|iJzAlS3tAb_D4yJEdTc#4wR#7RSqq%`67XA=h{{fKk$#VF7IQ-V3UsN;FiiLcv zD17tPbUsSua?69faWi#(BF(V(Zwj&(<7G7ykJm|qwh-_8rPCi6_mH22!^~tKhaeiM z$nCWCbt){3OE6+)(w@H;g^ia#^=DE9GO~gj?`(+_RW#$%xfPaF4+aw#%AZK{#=Pg2MGHPi2bM%@`3Nsl+3?d0}5;)S*Kyt3**FxrUN! zb)E#lGMc!^P;}_g9bB&Rw}p)X&C{ote#l4uOYHv9pX4WHY6N=|LsRr8CfoWomMsaE zav1_W;P_jOlsog#LlAOpMV(3{G;w6%=^*I-pjq2eSX)l}`8(J%k2KLzF45cLvcQU@ zTea*%$ME8lqJj$;l56X&&1o(128EU7P}`*B%9@I4%c#L<6Db)z#4fbxGU=AGTc~N) z?Qs#@RmY#vS-!}UvRd{^m87eUok*_eU7gXYe@IN_nG$RDE{lU!>2O-vYh+8ID`LsK zJ%+AJHSAhv9f-dqIhW+yvd~<2PJO9F6`??7y3UIHwe{Uq>ol>x46ppvujRRH&xaV` z7)$0icnPepxdrBnlvBmTQCyS>o5|@)W-s`T$%Xqtow)+}AA*hc3x$OIjXv&U({BS1 z05>G4I6IX36B3XHZ(*ZoX5HG#t(4(18aOnU($bVlL|$M`!w3-gBtJ|=Y+mNPRmR84 z98u#N$t>7+spzoYkzC0dRT&3LTU$Uw0-JoII-Mff$z!#T8XXY4e=Xw9KDBW@_VJ?- z8{hnH_6fT2n8uj>il>vyvGe$iZooglmHe5LZ;~&TJe04JG|n@gY7So8y;@U_;=iW>bLjuKnx94F7`XWX_dJ;w~FA| zn`V(#%}{f<4Z>0AVRR-#X80{I|MIo@kmxKM2C>)Qo6Xi9cx`?ldR5Wq#j$;A&*M}^_46ynSC+n?^|F}Dd0Y`P+d)zn`0TVkaC6JD_Qo7)Sv z8AAUM^w9*CcA_IJ;V^QkB*JPUVGX<#OR>@~1VadY#(SrTCv`QdabG7y-EF2<&zHbls60*7%1|-UM$QAXF^~+iv+91vk;IYn(i?IKajmirJZ)VvE`{>i@R= zo$4P|7cfE>FF(82VgPje?6kIFx?c!JP|dyNqyvw_=$47C`O~a=xIoIxRRbOTgMrOe{za>C+q4W zgohLJ>=dVNsZoDrEJWP>PVN5cTVuQjeQIwY`9<>n)=My%{bY_%v+PRZ@7$u(%4K8Q zpFbkCNI6xXUZluEk@nXTgfM4F1ng4YpXhoN&4oE-@D0Bp-dx6|bX7sMZh%kXm(T>g zXXtR=oa&z0*jU%?CEWYl8DA)7%tP3G+hmIbTga}eOvQjXEl$X$=}xhX1x1oAW*626 z=V=L}4heYL3;uK>DzH1T)YfvJm^3zdW!odVjAd!Z>$jd;9cBW9Oi zrG0#i*chJ2sz@DCYbxPXI3sE`K`~1_P@x*X^nJuiFtgEn3C+7u`G>HIRj6afH_2*x zqHOjTR%s-*sqF8Ot$Xxo?A;y7f-kKF!mYO;=B4ZH)w<=UagT*sIcJ5=}UsZ2*+9BxixwTZbH#{ab1(chuczM6l@3at^Oep zf^Y8RXoYzn)&lNAT~Cb~x&I-o-3uJ<7Fg_+AIsJBN87Xo>@U}1u8tl-mgl6ysB|L- z>kY3GJbh(F*M$o;+~X2q6?9#iy|TR(wpb-F-lo>%fsua*#pws=`!@)?{(VcNMDj3r z0&}NN$iT|QwsDV-Q#5R9gDlRhW@I~k4!s>*|C4VdQGLnN(%0>N;6C-8MjJ)kEGG{{ z$4g7=L;Xj;P1sWuydm#yCfw-gPEpkesA>A-eU|OxHJIo9ceYCeJczq?NiCg!QYqrCkoUhf@r5 zfq3dY6w$Ae)Y{hNlYxArV1@Q=td~r^UHp(*_elb8`&cJ#HN~+A?ZZSSa@h5+h(_Og zx>i>2j>4w7X2&r#fK$}095l@M;CxtQdpxREOS_*%ibO`8@s-KuRc|Hly)GTs=F~Oa zQAq=D*vFK)d_JCv2G#fqylwfTc#Q7vowKx0YxM1gL@7F~z8F4tv59|fHmvHZ@(fa( z+Na0XEW|g1Jm`F%WLJmvLah!(s8o((&yE)DwXz?|8yBwztFjE-4ap+BnM32MTWZbU zma6gBQ@&VRy%`pIVBBa~J+s0M4bC1>qPvd`@gwHv$cktN!F+7hQ(lgnp7_bU5bRW? zV+%F$=qSBa?9A6n;_?6ZXrOD{WTVE)pqLt#JY9}U4cExWgnoR@Ytx1VK}(7ee~MXi z7i3$GTrIhfm=T$%;lP8qk_PafriOX>)lYHa+M!m~8*bqW+Ias%a3Rt`NxMAzLJ{xI zw=MKB)SL0>GwEGFTlXz+K4f5{NiVR`v{_v{UtPc)J&;Q)g-m#Ef5^*TemLySaN_cq z-r$y_*O(%)51OpsE5Y6Uk<18($ahPGG^<_UI1fXgv&d_JvR${3?N~cZHCedVKM|7Z zDBvUf(e1tf8BL6lXgF&tCIFMgMe*L}AA%_RK_{!l!H%iT&jm7ry}YA-89)Aw46Sm6 zdwUFFvmY#jPHNU@#4#cD1m~x-@kONo^{S3G+|JC}z+5!RxOZYS!64x_X9W?b*cdx- zNez=tL=`M5i`nJGj;wXTYdF2_^~dkqXxfE?Zw-9sq%GA|_ogpLJ#r&gXb`4z?N`*t z!qgT=Tdm;uzRES$H~Z2p&tZV!;Z%V)(K&0Gj`zI1PbCbMT0bfs5+^lvsWOHJzIFfF z$dn+uypy4(vLq4e%+!9UC7fQ)F{2wAhCc=_4pD2+=rhZX`3lQ@A2#_D+!0aoX0Z$} zrf%oc9N%=uDk36MMa%~77X8V!1U8P*cyGpCmR)`AP)j?EvxJX*Kb+q=^|%v#l%_p& z6tNgBBYXW!KeHQq%Q@zN5OeG(K}gL6Y{l}3C?@`lAmsNvB7*#$tjz~qCYd!fu-%4e za;PJ=!^2BzN^Xj|`vGcLY3LBf>wu}^}@dp^PtIC2zj0bv{7ST9lu#1FY%_XNQaSyd!`HmB}D&|u?MW6M0rKLoM} z%pptr)whsk&B}7UwhFocoyj~Que7@<;T|Ekh;gaF^4Dwwt3p25z|lR4S5Eu&z5MCm z8%G`9HD0YPXc<#FDTE`z%ZHMOT?xqV<&o)}>_y!67{1_gzQSVm%oG32k_cy`taRg5 zVeX%1M2Z#udgY;;o=Y}hk_**v{J2x;{QPU=H+15PW7@)at-!Y^m#Nv+^!khxh`2M} z@APL#RsObxlnAJqF63FBVfUgQny!o7>YH!=W7p9%V0?;iB-;hjW|sde&}mgKaeSMk zi_}1+?cUJictgYJ^Ds95WNhmJA#Fu!f~Iy0_~Bh;qj+3TQ-#FsD~i-CVq&zSIgaI8 zz@Tni7)S5~u%ljx5(TCZ0wVZ-et zP+RB1?n}876bx0az{QLqGn0kfL&))c7goRf^dr_2Q&Kc6u7^bSb$tE7B^*%019P#R zI_tqC4ho!F-VmFdVLrDf508Ik& zSsx6jBi~A2+il$lr9g6g5b@#DnV0+&m6>BK7`T;~t;5yN{4iYKOi=coq2buqpT#MK zc=IYVk8YeO?{2VNOPG84Qcz(cphCCtC@SZo-(0_f2x%Ui91zOEugbBldNri5c9nEc z#@Qtrh959w`Y^-PToQ#=VO$zu;LEgjfRp_^{CVa(%ZiZC_a!+|p{dktH>zpNDHM@Q zl=+ba^Dm}_71fhZu%IqJF1CLN%%(n)2pz@=L!2f(){$4kg;OtHuf~P$oIF3ore?+V zpd`70IulEZWLYN(}h(z?K^>v1~7fmcDLUgcwr`BXwLljO6`n^$W?~~U);*mzG zF$#!*+(#hWNx9$I2_>U=-(DBJ5>xnG9lx!BFNs)kD+R<3dQ@) zQ_Q*ngUhlkxZz$IwVBjjn-va$`&4y*`5OumRreXhvJEh)YI91n<#QzaZGk3qL)xl2 zcN4wN;uJs%*{zOwNd0@QV~bDjC{OAQ|5Gda{x?vC`(*QCZ^PMoQ_0ix(Q=Y1ugMY` z;~M=FhC+PN+QKjt$MWIA(q8bz)N+_r>7$t_qrmfhjP7>MBae={%!M$w6DViHf9ZPO zl5(-wXt8ianB^cAHQDX=519{Y7sH-I_X0>TsFT%ElnVd|s-C0Pz| zQN_T!X&80+{x1YRPnxe&_t@Dh9BI<`$_4Qs;~CfrP?oZvauTV$K_otJzm9P}RDf4? zJB4>h$VBx0B>a*Ckl3hDVm$Z*9C4-P?3mkBf+IPDpbH(|F4{6lb69}`T<0*758cGP z9}LZ3qcpM-=P8PVV;->DiE@35^e)sM*0Kd&QAzk-9Qb5(rFetm1JhY$iSDX*p*Oxa zrp5#ghE4Nw7k_n`^p6@*{vni5jbMB1eU4GT3w*zz!v2-AoG7y3nZXrXG`34Mfx}bA zOs+S9AD$d+npbog7!vdRdz^4^4L{<4(K>jjuUPb2Mh>!Bj|*^S`H66XlNLFITjz(J z)YnIDj;<7@1YQ$U3HLUAyX4P<4ngc3bTlRPG zh##tiYwOsv1%+B2qae?7`i=PF96yV_MaeT{(!e~DE!e*i4uFCo`%x`kM%=d60>kJK z4dDmePPQ9!7f7pT;|=}xYz`^g$bG;t!4vRCIz#+P6(Q$D>5@NDXNj+`u6E4Ke;Mzh z?AObP@`Dfn5`R*H(jaEASnZ=9{5x~I`!#S7wkejD?NqjNQy{W?BlZu$$6^S+%h0lqiFL;w6=7 zHP0zBqk8|Hx{38lDr$uU%=3;d$^pi98&$EQB21+ul7dNg63bmB>*$<>L=y~=bt>>Xe;o&7n5QH`Ec+vA)O!nGi-MU-Wt zn=(z(aHmdQRE3m!R)(L>oI+6|Q>V@V-mQ_*;TWs%QELu{mk%qb%(DfWkzd-LcZAUt zGtX{BAF=nOiz$qEn8DWc8g<#0h*;Ok1R*}8aAJV-qf}u`9Cd4u_4qD^06CH4=N-d8 z;@_Z&8~iIWlQoj00+tzd%emuM(L#H)Z@k4yIALTZostJGh$4zPRiEAsz~-l*Cq&WW z6{FMoZC`UVBdv9nCptVo8L7MN=97QIaP-7gphJAeeYQt@bA2U6)4StWdYu#FG9}}s zH?(;Z@F&xvXl1R4x1?|p%MM+_`bV^* zmXfj|D2bc#L|BB$u$=!8M;<4#io0C@pqMr@PtFf#7Gyqtca1l)&A7n;KHv-m@6#Jc z($E;Vp?wf{E~;=9*jKUzXcY4g?Dl~)3h{;$69A?!ZO73{T0SoBY_pw*(M(P&Jdf|H zlyu7)!E^Njv^UM%O8VsW>{6di)c6$7T^I4h9}3SNZq%eY3KU zvvNm??2Z`^1q&)1n?;A!wX65HxifZ2snC2w|0wFBxERjMO-wO363$X1s|lc4Y5-k+ zCY>BRPM~pry0c-S{UsEn&Lq6F1P`nK5Pl?0{EHsrq9^-&{N!u)Y*gInd;ad7 zNaq8=)jxzia#b(Du_j%R&+DA`*W}lm=B7}b*aqx_(GhYdvvQ)FZ%jO4vK~*M5;~&1 zrE&Tp49>`We`A`0_d{8Vo5VS{?34}9SrI5P?XOL z&z%^b547SNr+aEf+ZhD2lP>WH74#oam)*vv6aeGRJal}lmuMtu8L564oKG0}$^5fr z2KXS2;sp6v=Q$tFKeJHmmF6nLAEA~|=SAzBq}G!Tqa4y$1`e%C5#6#HKo6;GID}NWnz^Ay~5E zj15#}s~?v3WeNLZ*9`iUJYX!mA$Vbt(Ys|eF@2Hh-@!2pkl7|air@9>rSsDUWGTk} z*?ghSr4@V%lkP;ai&a4ffeF|)^oEN=(DN{bIWVy@FJr_Vwy zL8K=q3Esf{_h5?U@62>Z9x=(w0OI~wwG+h;_M~A9)rW9MDMW2jG6__s-wY3J6jxnm zT~6{|R~>h1YCvc-l`%eBY$&cc3HSR1bPGL~1wTew*(eX9}CG%(=7I1Hwd@Ma#eyD4mVz zresSsgacTcnyk}%Etpl9ER8WA-#7MiRGGcY4zG*R#p+v|Ti9biX!yntsQ=6qb7aGd z=p}%GH>u<{l-vM~1{y;gi|O-&$3Fg6cz3(xVF*0ZDi&4wLQ_r0AXGq7+No-lbd+W> zbifUia&EWeR?bOVa&ne#kA2hz zWwEC2i`_eAk50KH{DD1V<^6cRAh{(geUxF~e8*hHM5Y45by~$i9WbX)-Js5vSTe&w z)2WV1tONI)UY72acm{U%(kjDczwiT{;3>h#R;HF z%d$DRndiHv&s>js(H19)kgbMq^d5@o+vdK3laysmjm~8K$A1Xm*(*(gQwEniW5KoR z?!ova_9OQ_ z{_h;s1o&3{DaPB)%D2Ept%zP3QP*F;T0knJEjE~Capr_{`^ls&PA4}6f@UEa0F6%J^&1R0ehl4x` zTF#CP8hHlllUv#q(2A~DM5dKHW=JFh75}8XMQ(&7J7IrU3fcN$ZjD7kWB?kE;b&?2 z>qf73Ts1Wu&c?hw}Xj zjp(Fv)=xO>o!9+Pny{_F+1GUMtM#G|yKAR`_T>u3sWL4Z24@FVNcXCuQb;+>r`34# zgMp#K>9SND6O(~lMJQHwHiGTop-2)2J8BjCR_x3GTtbqbde0th`%=X)(4(*!a z*)&b1sB!y0rv&`<{c3nltr!&NV_p2lm`>lm1$NMAc&Dg>B-9u+HIjf+EmN-*{OTPb zEe|%?c#P5&{atg$NFl_32=C1J&#AtD^e-Ra=yH&&izMJBi~!8V=0DLi8^pBGv~!%|3zhTV*m!YGbmOnwMbAP1pR zF|Aa7fY$A|>ba*33YDz&2uY1=lwU_K#v*ElgjFg`j5YN|mfocZJPKh~^ZztBBP=av zd5atAtbzSqki+4*q-8BwF>kh8?s&euWd{JDi6SjF^uTL0_=X8K20b{=CnV12Ebo2m0W3;Z`F@<^wOW+SY>LGR6Ce4MD2*cDKTeq2 zf6u&@gQ|{N*O@(yvds$5Ws8FAx4UU{jp}Dw;g>5tE_dH7Rf7l$vJ&vhqF;w+VMiuW(on@?2Xz7Pfw;oZXMZ&V$dc zd;NW(mA}!%5R^4C9S#?5jCvl&$4KeItjz?D7LTF}&3=%HU9twOYH133^4mIK_&RGc z5|V91Z#a-<9JK2F-uN=C*ws-qtBr~29yy>-!XY!*nOgZ(baWjQ1e^A8EyV-`azT?%Kcvu1E_aYek3Rl4CuiF14h_xsCy)7KM zh;d>1hv1gke27yuYhFTE@^+lFI?V_@q}+l$FeH=#m61B;ZE-yRfdG?i`+;3%C?}v4 zkYmAys#ulWw8JPBxg^BG9==RnycvYc?gXO3^Ajd)KFr$efC3T6-MWIWLlV#8ZYo@W z)2gweM*k50M1`~!ck$qAXe88W$ZKdeo@go5OYB^AWRfVdnp{G--oJc=O|9=Rj>?qJ-(Xn#EfzU~OwSNfFt}o5{ zhA45-U-w=l6IC_u>D3VZS`md?VCks~7_M99q^|A87m%}R;8{dUUdo?S;`ry8K99Y_ zmV8lyy}dSp4Rrm0IUwP(P8RA?QoB=VZ2Oz~jWo@!uK=A&^gW+mEFpg_{Hx_ool1>v z`CluK$NbU9Ee&x#=#QMxCY{_{C;5z%JSf&+F$-llP=P4|`E9bM5i$}<@_T*;@*qwO zS&sUf7vw)rhw)a77t=4C?Z%nq${ZYAhV{UTkexC*g6rj|@B6=}w&eX7kwEXMhdOTc zkxv(M8cBtx)xZiqLKV)csIZZ;9hXI`wFgO2i^f(6y7xE4+yQ>g*v9J@y*Q7zS)91K zxxuW;a(?yc`Nz6zF=zcbvdQm5G#L^PX+5*6ek5O^(j|mE@2$QupX8-Xj5Vt>}L-R zELNzRf5cC8L5Q4ncx%O&BrObMeAoBrW_99mec=_@)L?z2p{3i%ii*saPvE9D<2Qi= zH3)H6GvS|v(U9Uq4T(?EyRNSuA%&zR+DK21RDYQdPIF}AmIT#fmPoa7gQ z-W6|IDa)0MF|G}h5Uy5g(zD37IraC}G(P>&DNF@ZP+#hYR2-n#PYEn$;is9uF7w`S zEKjmLh_k($8F=22FSN1GF!We$8nwOwE2dY?SKy(BCEvbr18V3TFlvCdwIfo{JjN!i zFlbpZhP@k^H!AyeN)M6i4bv3^$U4E}&^dh%9RV^Wui{Dp+i;|_$sm4fF6%?adBh1z zuh4txeO?lgfn2dEe$j|+C~JErU67ogWIxSVU*Wfg1^)+!awA-1m3Rt8i^3-E1~pWg zV(JZlAQ)w_rfY(v@iY9P?Z(IqtaFTZsOKDC0;q4aLO8`Yzq`55vTZ-;0Gdrzt^~q6a z_%l+t1^Hz!y3GGe@F@FKobaAJ=99!y5HI<$wC*B);(^RMepaKh>*ZgipW!%8`tECX z{FvU$93lW)R2=1Xc-_nR<86jGW->Z$vgN-3WO#nVw=NJGwG3P=CP>y|lcwX>2yws5R&<6rsubRPwjL zP_gI75&oa@mi{vF^u#vvBb*;!7tttn{B_K$Ti}A4V^E6G-{V@dXEK7|xaMeUL9)Ia zt$oLXHVon&PU>MGK-%iNI>$`Qu-m(+g(@~(Eu6$^dx8TNwq!RNHW~#5Anl>Ny8Ob2 z@gBk)&D6u?SpGyA*3tagtS$6eRz^30H&h{xV~UN8>`rz4QV2Vy9Bt&l7@M_p)Mf*d zSMY5ztVU`}=qx7YlkZi}MZ&CvNIH(J-`Vf6|QC{58Imb z98Ao@G|MDhPhb2tG8y?WlJ-?h^FrFMRs1ZO^s25NZzLN;44zj|AzEp1B5i8K^?6hg zy|vno27Hu_G3up|mmGf~A9%W`G5iQT>~UlNa69GoSgw9_a*$0@=RSGiPfElJ(+$P; zy&Ap^y&>PcCnFfg_?-D?hbMPto2@lgGR$xP1~TY)V?%^9-LhZo{u4wu`gVwv=66(M(3_4k(3GzXVg^c2)0>usD}wb95_b_nock%J*>A-9J` zwlW5WyPwof7Lgp=anf4nHpDd^=yUybOaxD04>uKo+EzF@%K=akiBh~$RVInG=TQ8O zl`9Gl{@U{v7}>l&B5eC@G>nT@4j1RQ64Td+1U_Q+^W4np32ZN3;qCJ%+LV@;&J8kw zc`kB|mH<$feL+8`h~ot`8rJ=(cZ{5jR03-nESF2beUB-Z8BT*fPwo{7sreW3ZI^LE z>t1`olhgCKQp={)jjk0DT5H9FoL!=GqO0c`%QU@S-whPUT?IGYo%IRrJG+jqqRdL1 z^IZ&7+p)f|^@@fXib3be;1NTv&L<7keyS=Z7OE_pn1C+0m%_^g3%?qJsW2a5jdx-l z09dxml@fm5R;R{n{I* z1`5d8_B+CipS9kazVMxIDoaNfe17k+Xdb31EyD6~#cjy_3G= zaH#Bz`ea!PUQX2z+~sz!Fco`eLi|UNS-)6o_`8&qA<~i(af56Yh5e8|&9s^Pk$L5UW=G1MdEES~I_=2+lgW}&F@FyjxI6D7>49`L?6cM}1My6AK-U#Ux z(P2X8$eCgwFyw+!+w@JNG(!5IuIterXX73X_J)-|#JiU@Dx@sULG5~~)IyB?5dQ<^ zHv=!~KayHi$jNPBe-3>Cj)UjRDC$ytR0ZX#zMwD(WESS2_rH;_5`!?jWB?Q6v+g+^ zJ7@e)m6c5&;`vLBbU(Bc8b)hOz3XQrop8y+QROJ-Bm_`l$~tkUaT%>)Pxl;jN78i` zZY7om0W(f3uhv_|7{u}C!qTc%l6f-ic2g**v9a-T+cr9y_AT{#G=(JOV5cLGJQd1Z zpy#QyBP#qtV@0nT6NBgU%(BP+b3^5%GkeinfV5ie?eu)5xBG!f(Jl4jBcjXaW?rz4 zaq>heSZO*p%{o`md%xKHFQ}1?KLnZmz}vVvbY~t$IxSnLT=|)2Wqp82!-_f{!D4y! z$;&JidOewoT)ae`#IF3um{buoj;6U})J@rM;)rTz@K=Y26-`llBPc>)0x3b$(G}p8 zPq-MfQqvrF1IWJzA2*EI1MOyk`^_s#dnU(m6aCH}1FvP)%9rsUKwrYay5`xt9dM&B zCYQaU(UJzn`04mhmnpuOSgO{q=0uG;R@xP+R_LN>VA{336ld?PGUXNQ6VbmUP}Q1~ zryn-XH1??391+2Tp&&5s0l|>liDs^)cox#6{OeCRtmm2c1;$1#MR_M!B z+>syBq?-!cnRx8Aax-j-N*9VD-j_JZqBtT&@9-rCXCa^KC_!`!QW>HnAXzUpqtNSyezA0zH2&7Q-1XA$39(NsW`60?p}#d zkg_R`Y>YA8&X1#Lh+Jn{gvSC$^^Jhc!{>Y0i6h%9^!?Sv;e@ZPp$ACKZSY)m8<7AW zk{uqWym?<-uDZP9kA~tDzACpMi)CsG^PiGw8+KocsC-Hnv!JNFSEcr+EpT_lR&nXk z(3;=Rh%2StSCZ2r_sDGOB(9pp8P9l1i{u?W(%;w5RNb!b(kGVY<0C4|Wc0MfT3I$= z#z+JA(u0%kfYL6FK10JB#b)C>Kg~EE-_`B3q&RHP!ujLy<*BFRBefb09_*`vuO2){ zZpNPnPW%G_>BZy9B05`6ueX^;ADd|}yp+_xYsTp}eM+4}7;sJ0|K$k$JTr2B-H1B0 z`+eeD^yV0Ie@#0PDAxi0aU1n6Qth(XN>>u6+PTv zDV*#+awlGnXvrQ=n|A$Z3XIrjvAxmsH80Cgbsh0qnEV<{?33(-!>BOHnv)Y>pyc;4 zUs~qkg)OaZq?lC7tbOEQR%oCh#zmndS09x64?!!vGG!aS%owonQd_Lm75#f}dih0O$9`Aez~J0lFT45&>Q3{Vw8 zPW6g#WFDL+I77Z-wGG$1uA(#+nnx}e%*z!i^*)y6j6yRuhJ?}1lCykOY+oJm%W9dO zFQ6^ngC0F6ayYi$wl&j(X!i;uv?cd+sh*9w!Tkq>(X#OEQ?4+zh1eV)o(+J0@z<`X ziyGmOpB>E31rg;i8j$q@Nce|9`QIA9%+5O^pFq%F_){30{kL1kD$2MgmdQ6u+t1L4 zNq?TiOl@(`F=4U4Waef-c#+ffRrbDw&(nvZD+d^%P1z)`FYy`uKLpl*`U>`zu|^xs zdB}D2YFFy5e0DcV#4z1s1@{=83lUZP&H z44rf8KeTZ{5}%1|QBqfJSBc-$3ydy3?YPm4R>x`yK&o|wA07vMWSvgdxeFiFWCFF+ z_bX;_x!TsY`4IC_oZZhO9evF;d!a~Kd+qi6?Y*ft3POXjLIZLmhj!jjW z)r>28&;SD`@W-UyuODBq8fTvBM*ksz9A3B04EBi7)ji)20ini|L+`iK(?m&q$S~9! zoHv@`BpB?)mw}=3TpF@eWs<<)gG#Hn(?mpeT735NTd$oXQ@vJUhWb3w^>P_yV-J^U zYLHZ?w#T1XToJ(9yzCl~_uTT`R*IjfnB9Td=9Pcsf84#(*E);BwqybUjoLbbbphIY zDZzIg&QrsLXeO8lObYN$57kLz{e@Wo7z8I+!c@uBtI#ub^gxPxElt|*289d~%MSQU@ zHp)KyhUu#DiRYJ4P^?}$sJoJTAy_6VRKE^>DGH8`bv4+_ABcsrvkUZzBjPMdl8<7+ z_-$I?eIN+?C~DQ85!2Y!o|#s-&tt2Nef%sjoZ8J;@_E%}E28_alkI}=?ke#`_Q@?4 zeMHKolkGg;kUr{OuFYHCQmX?}?_%HOG}X=deV&L}#4J-UE!yyxcc_obzGE@HWhhjH zvTI^iZ7zZFZ${!AXI`pXvE?@5!3AGGS(N?w3eT~#+1T+&sF1lrmvDRw-OwoKtGR#W zc$_z%H%wjsg1zxR>IKwzSg}4WFg;Iymf1BbA~C2yc<~ELa6laHc?1Fmaqj(AHhK53 zl}2?$FIzvJ3>g5CJC8P!139L9s6l#3XV4bvHLXHd9jM{}3A6R7LGDRaB1g{9E=i;VaKx?%@j(x;(Ci z5EV*H)4aKgAVD7E3f{z)QKi^T;Jz||vRohM;1%!K;nT?Girn95!-{!@#Sxs=&7r+a z6X6$kxp2)JUrz3#yYZ#VP4Mi@dpiCHa8Y1Rd+Z%4L5#(ir{$TEizaSv-sN%314uQG zeq^R`^=s5~1_SN|sYx{x>AC_P|2p^YDVd%ZvR2XDm9D{4y}s)1IV_(O03N&%)>2zz z(GfMb?hz;>_JWg1eR6{2w$2NXvR$YXw$>QCeR)9qySMYu+;=-hcm0eAQkNB;Ld8Rg zAlz%kg62-w&lsBAe9M{qVzkqb^PUV~Ry`0oCnriqe*JV)|5Ow>)}CT1@M=k!<=XW3 z^Efj+P~q1^TUylBVGnOzQCrm+_FJ~vjJZT1g!bq2FIDo$=v2Rv`)&>Df~zSc|HIZ< zctrvA>l#EsP(Tor1_@~pkS>i8OQT@i`73>kV$xWgRY?WbDQ6Cgj1eJRI6YxGkL|>_Y=} zz4`bY(kI?d0bf7gEY!Mq@^6A{7VmZK_$f_L6+vvX=CqQ6?Sv zLTc|R?IFyxq^b$KSTDtWO|nx3S592&c$_=_%(V*%_2p86Og4iC>3od&tqgk>_x8ze zT7otx^fbhgU)yUEnk)Ig@yS8(4Iq)IhnR{V<7U|G8Sb)c#c}C`p&vBjg6^)$G1}m; zk0S7q1RFMy)hc&Ve$bp+h4~4amU?aWb?{$`T_G1De)yO*B7kr}Y4W~5VMLlCF;}+S z+OHo%Z%r1^o8#GPY{P=krdm^VG;&g+#|?Is&4>gIeRyz~eBH0cH98Rg;F-j(-b5!M z{nBKfKvMVJ2M2VHma~b=9#6^_l+i!cpO6qUq6T_YaRxbG6E<{m>G{ z%nx-kU&BWp{t3ICJK3jbU@{}L&sL@{xJgt|n^wxPgj!0gCtYr~IbN4NZQ1n5G_pwP z_;zKMpc;&G$&f}mZQxVj-#cWR{Al&_rK%7$ zXGllBzQfX3ngY^JlIVklSfiYHhx_r5AX&!s9E~$@iI~OL0AcEGLGe4|APUpbZqo&Otvl2bU&x^+ z#R5g`T)a{(Ge-&7`nH}+da>4N->kL1YJ6e(Kxty0aGJKBsPL4L^rdz9A*UG`VPTm> z-h27EqO)GZhWHNgmeV#ZvfG`pkgft7jYhA)_roWM$ftR+YTXvH3Kx`rC{iBYUR-0< zfxns8@>SPZ)j5T6U_D=0jOx9jf{^*tY2x!y@Dj%BaR`94Q0Xt@}yw@X^X zpK;rR`g%rDRlSLu9{0Q5BZ((bVu(OMz#TgA=6OP@uqvKa3}ZJ~&26 z;ki=n^6}mJOr$AwlHY+|#l;C*_?N+rU9auT7P3=#O7zZKaYIl*n9jr340uZCw9o+= zlUf%zV=sx=tUONZg2Z1ghhAxyh@b4^8yXY`CQCa9q*G527%jn49PhnXofy^KoUM)< zQpA}*wv-Jfsxl1~XeJrjSlH2}DS2}_70WA#81uZ1R{t?V`9*&N?Mc(gl^oZdu&F~3 zo^5EX8y5(_F(Gg9WPP!5;fu?yEYI5?9z7@QEodN4KQUKVz*h?Ajcq zrL-BM92;el&H7X+G^J*Z#>-lgqacRyr)Y3RsO$BP@o(Vn2j^Tq^n`iBDfMj>vud(7 zzFT;r`a&z3JFxKQ2D;UCEe5IIicoBBjE&Ten6MpBcTzl;~FP#@FBJT+<8bNK*8!^H|DIrpeQKj3X^tbMoZ!60M`%N;R zlj67m637SfZ#D! zTS26U>*V4fte0OYJuFblRIGEzPDC4R&LS`e12Le1M*zfwDur zQ%;39`=SS9JrfyK&*HY@mnkbDJJTp$Ilr3jdFl3!dN79GlNHhVjvq0>$jy?mc!nvQ zLn4W_;}vocZM3V8oPcbKs{X8IifBYk>I#2bfElI-x0B6DJjSmgaStq3GWej z1^j8;@ME2;_2=Q;dxkN*7@RAbWYGBgQ@o2x(!3r1k-LKlTe2r*#rEH}F&gyadm`1g zM^0=tZU=H@7sHe@Na!Lu3lwR{?Wz0KmQB71PEFzk5Z35#g4`~N65sk>rkJ5!0T(7z zBGzBeRkDCQOEgH%uXYozPj3e{3A~>9oFt_e#<-kJuMdYkE5+Q4j!*_hu z3OJ7r%A{AKQCZL?zGXqLf)@P+nz1$rYYvXfRS>_YA7#AT9WbENd4xY_3E-`_(X;2q zmLadsd&W5Ea+BK9+f}K(L13Bf5z+(ez5YAKflR=360_LU=jY9s;OeYZl;e3ijh&R- z9li66oKwWjr9q4_I@;>hCuBv*Uz}h=VyeDqd$upIE4nb11|=M2lzMsoe8?9B8Ly}t zdYZx29@RBPM7-@)PfviI2;6ybpz#`s?NepfR#|>IyMNjb;-$9arcRh$3svsPRXw!2 zcYd}KVG*~@O)bKOyv6C;eU?d&%%t9FhAK$u(R+K4Px3oOgeao}QzRo1LY}4>c$}Jz zZ-TQ~Cf2=TaOw0mmSlSG3OIJ`xo<7sK4wlpbQ25>noJ8Q3f*-W>7#YKgjpJ!&rx3W zn@IQY<2}e{GjA=eJ5HG;dW8e0F5`B`R^JKwnaIxODD1+lAL4jF`??wZwhv97D~1*8 zeH{%5Rf&?)R!N8ezWQV-YvCo%utjD6?n^c`Dn0SIrIY{cq;y+J%Li&-o)#6vd5~bR zjFwdA279(s)$eC3UnEu|APR)@oX+VqO?B2a#yzRFCv585>kqzx&OO$qwh{JOFT_NB zb`u>+(e@F2xch0?n=LM53C{*H0b7>twEB7Kuwv7absazbbT5>CNvBC`3~Zzpb1M&? zuc9QzNO&~p6-gk~l9p?HmupCA!bIBhMvA6nmZ+1FQrM_=4l6{6k9c}AjT7y0S41=0 zdxfZxx}v1G%}P#UtzeF^Gaxep^Kr#*sF9U#^~>s8=CF95tt^rBSZDg2JLqYp`}{e! z#E67~8n-$MYNl!G9kk2$k=iLAsn*H(odBK|dUV*D1f+eYa$odOukhRCP!T23y?tE& zDSv4WSE%f1D*qhUbjv90RjV#!un#&wx>nEL0A4RzKyK2AMlP5q)B``ghAEc*AIkgx zfxctOLh2E-PiC;!I6s!I54`IULCi4}p7-SUZvRl|>xZ&Cx9^ZQZQgdL?IEy8h(i5`R|ZeQ1vb%bBi0{Lm9mBY=p! z^vK7rpdYk_pHsc=fwh{+Wt`K~O|)jk!aU8h71PSn7B`GnX_&LQn#zT6B1fE$sG{He zzk9`SD8;hxd%wdV{P0ynb|Qon<7DAi^EZ=RJFLP26z8(3f*t-N>9L^6Z*%qMVHAS4 z^*@`ms^*t}u5nEWulC}sx+r@Fd)kxYftqzJtJZvOZM-(O558;+AI9h(+#FVqzV?_| z`V0UUT(?g9XaH|b>2+YxliQoY?qAFs871|1YD-t!DH{+ru1F-|g0@a_HdB7&k!NxD zLn`x$#paC*!gfTrL=;N2wAYJlWXIa-@)*ljucSe+R6Xp{9eFRU?>$gFXPk9=gH=*S z$buER9~zg1g}N~1b2VvhFl|{Qk7`84V%Q*vUkT?a*B}YdUu_PDNq_r;6gU(95>@0* zJgAwd8-pJ204FC?3lekY@MBvkfihb}JP7PO&22wGCM?kG`E~uub>Z(S--o`AAiQ%& z3JQJM!eudmd6;p#<9@{w?PlDo0k$YC870iGUGSyx7k#`hd*sA{J}|j^X{MiLfxH zlxwx4tm%Xuk&;~QP0jcQl{*bo(E%e-=n=*!`+q2E$g?b#Mo*p3SIfecLQ!jrWisVV zl@vWC2w{Ak{n}|{NkWa{;4PZbF0v<6YoovVyc#V2tv4B+H6*9#9%{ArfM#j4H9vWO zv)9F1>y&$`B-^nmS&QrJYl zt2uW7av#daY=3EZb`8?(rY;uA)>UP;@LrkGru~O9{RnpjlistrZYfLdwGrI0yO%h6 z><08+?~S;KgxBZ37MGX(Ps-ze?Ef;;9etc49k@|%*w5_|iQjI|N)hP{4{4gSqik?9 z#?rGP{Lt>xNA`l$c4|TN1D}0BDz0R9RjrcwqNoT3c$wiIR04dqw^SY4C06=}VrBen zUR3T~h;I^5Yk63TKQ%}GUlwvA2YSb&wMiFS+3{+O0cxs;WQt!QB=h)zB+>l~M%(-7RU5OEw6 zb*lkTSbTJm>UrjYci)M3Vl|N_Z%45Ln?vgef*K1yS*REK$;5w;7vp~?hT$cVDE0j{ zErnJ^Pc8Y?6KSQYF#H_k%+Q&50r7@5nsCFLV?50Gb!z%#`Fod>>kb+iX%iD-gJfCb zeXt?edAa{kMj}j>e|F^x=XofY8~5_06fZAla4SM$F*c|TL-<+xR}LBZ#@-X=O~<1s zW1=eUH&Ac!fcGmT0$xvB>)qzfhlI+42m%aZ$p^w*bY*p@-|)~-zb@^$@oi$r<6}6) z8PIiOo+!;8d1}&RR3qK})bfW!3Y$yg=&JaNIw$sp$9{r6O*uQpdtVmtcq^-`=7?rWrxFwvkC6b+u@BC4|`nZArYM@XSu1a1(iO z^uJxQl-Sot{bm&ewI8l$ckC{7uu>!=yC-AGSFFYdVCzgz;IKRFZ%4W1mD~@k_#L)- z$%#j!7>`Q#EJ-Bt>?Owb@~TTF5W9F->6V=Oyr`wk(ucPQV|~5AW5L=tENRQxaR+ob zJDajLq9JswBW?l%;{N>+IY*w^y>|mghMiD^v6l0>+Z+>1cLH6IJ?E*N$_|8EpsUSL9 z9D?omXjHtkBF{V*!YsL1lD@@ih)EdjctPv0>OU1lCmAM*g$@1>kinIv)Z-VD#4Ne+ z<}W$Det3UH3d)1$GGIc0G5V#$1aKa$^X3G4wA)@5gERm0bab0|dMyH9odU|3^F?_i z`CKfjK;Zjqx7+8cD(#;m_A;TQ8YW1}MYfc3!&sdbA8|O;1j|4nxT1*ZV@zjai=5 zU3E%+u(t<(MbIsSK(>uJi6JCyHF7wwRwJBYe6m1Fp)~ITYOZ<{wPoviB%{F3-D_jr z!e_0K$hAVS<-5l1tic_@QcfJ5?~%QuL=#@H0=qq{oR}v(wTSxbXh>Q>S6?sl zf~`mIBO{q|>weNkyqX*nfz17{;@wMbvp=9wZfXBRX-<90t3U|T zLp71kH#ZpxftnM0>C%o&7l-#&7&kp3d_MbzoE#L$2M%zaa17rDyM0s=90@cKfO00B zWdViD(Pn-{P_MEG2^|q>TQ~D8D^0zQser6U20%gYSX9W`Hcy!nLA!Tv<&EEv-)uS zGSb<6Gakw}^4q!9PqTxEzoEeG=yGG-MuiRacnF3kglr6wiw5$GZE^^1&YSchPT?P3 z8jiHFdXZoleyd!}X{6(`Lyn~pgnDlEVOj~BY-hJT`2n@&^YV^#i|qb08?&}P;O1UMv&5OCg~)|OnIE~bo6 zldV!*-*X%DG5s6EvMx^h?)m4><6$?G-Z=2BL&~kXFb`O0dvEL6N3K zh3c-+h_HM#NMlRBQ>$cMYSLw5oK-%zctb@;6<>%FH@Krw`6os=X4GmaJO099;X$CO z@V%_!_d>{fX`2J%KG_3Ul+rG98MDHpSk(m?QxD(T7DUk2S+c#)htoM=h9?n8tnd={ zPGoV`xqaenayM6b)i>37*iQdDb)+4DV|S3}_`M@N=z4mC-&jZ4e{c#S=m68=jxxYy zR%%zk1bLXMFgiLmKni>2<8&m>`q;qe^WK=BnMm#IW?B2P5?d#?$xYX&C?^ntz=p{f zFD(u0@-hdNR7wA*lr_WAoDkz11HCqo>d%2#<>EWXM|k< zAb)4O84rr5$?Ho@5>GBDWqL_U5SyE*WoF*IRJQ`-nGI15sto!ht!*18;~(#}EOII( zI#_?7eBuI3L~Efa#KnWh%qbKQBcAnaa2nog}_qDq!1t+pEv#D`cc-^{U_s zVOwPfJIvFUk2H!^CUgZ$wxwdPA99;z<{>W&=xXj0RSVy}P>xH&|At~BNjkXNYBv+o z0|EO>A5thgZ+4cecgAU6ccfP#qa&(p%ZLQaI)9J(XBW^EQxbmSi<)dl zD+{F3jNhIl__|1{t1WR~dCZ>p=GzM^$NgNNnVkY={L7eDmx_^*Hbb|2VaXP-H(0e` zd^Y*9Mn}QLU_{+iBa%%GONgV{`DPSJ7wqQT(~1595^DubCl7(_WLG}q1r(`C9nY5M zMM-|6GYg>;qdlkn-On~RW2q2tzFYWPIYTmknqj_;YqFG)sYG?%zNsvsp5E@_BEiaS zD2p~ldW(M~s;b$MSKOwRG#sgElVju6kkwASa_EIvR@>h*e(JuwqJyKAYE-1)=QLEj zDhNU`N)L|I{Ytp{4pZqBP>}FcF)uNRR%j)MAkO23Rtw~2L6E%i6CO3oc<;O#d2h*a zcf9|I%AxWyE<`A3>8Ec!F)xa-Wy6fT&U88g0-BhDZ~@AuLyOOtOtai{5-M_QmZA77 zDW!aYv~YecB6_mxFC=?y=4J3*#?X0eHnnemb_y4$v%W#zZfW!`DyuOu?Vi>YoR+?- z`CjvST#O;hzm0me&gr1i=x5~&FMtb2=5ax#6}YcHA3Wcs{e8V!d58R4_ow2*Oml|~ zvOs0XVqaY!^>?j~j}7T2OEMld1SDk?+F52N5tq42@5ScWodi(b$!(S}+ zDkqKvrJKkpAydkhE=43xsNY`cJp_{ZDo&QGw%bYAu6)TsGaWrHH7*tC+j1eo&HyL> z9n0?W9t2HuSIu}eFg1)UX-7sZ)XT{Nq~y5xnK@yOdv@FJSy%^k#poGTtQbWT-ECQl zM2sMzk2=Xf3g`@zG|>eGshMka1ABdE>|g8w(2QgB^oJ;c%_5aDZmqBC$0RcVg?lC) zw#K&ba&>PtCZaLU6JEC0WGwlK027`Z*ewl1o2eL-BW=K_m@BHbQR3le5PKKPfMx^SkYnjTV#kyF%JmeomigV{Mp*-iAL)ML}rdcki?&`G}O0|FFv=9mDf5 zSw$(kH>C}k(duOxkoSc+N{P4|^3pg)Hk|u|IIzn@Xn}QdCIvH_e=b;Cy1q-e8#)u$ zI92{sn%UQI8IS(C6mAEqBUA6UM!%(@;h)5zF>CmU@po-Fb5-?7R=Z6fb%UWC3^ciOQ-83*I=-muAy?Q40lvCGq~2$J(Hty^Be-2?P@q zgGGL1dLiH5FsbTLtd4_iVrt(%=e@C2K2m%9nU@jhRMzy-4;486QJ>?v?kqHBka?wE zVN$}WeZt%`2k1=kK~jSQ{D9yUY+M=$V zEAmr*W8BPSm;G_FlTA_?a1Y>?<{&~>Zsn`b8!BgNQP_UV>XB^#$EC%6*j49!u>KGM ziYQYqRo2;fN0TUD%GgmK+Ov4|Ls+QO)022IV0WG|Y|swyz8~+sL@=qf>nF60Sb-Bl zoe=4Z&+U@E?#2=rqmzNhcm#Mcdye%-ip5LarSp5zAvvYgGGc`W@8|DbXv2oNXq4@G*+r}U?x%}j(%mCI8}l_qpEe~`BS z_NURUsduY+{jn_l1NZy;&!wz3SB^;Z#8@USI-_p*5FTlpfQX5DD`wi_QRh4~UOuEW z05GNpsWn7P@%G|y3R z`8r*M$aRmUMe{l0MIh=09=DVo(V{)>722^|tq1Kx*bS%W{1#@!D7R#pMg?XS^%;gS zyG$58GLd9!*f4F3Ghm_5vAGID0{|0s6X+tgvQJp9lk-89}RX5qB1;mS)e=XXt9Sp;9 zBjzKfSQ&UKJNUeGEP1`u=mxsNeFu+=Aq!|+H4HDHZ(C?1B*kGy-Qth*-4v=1h`Kw! zzhv&~+9aV6&+146&AyZBUlxpCZBx8iMqSszR_X2nBAULIg>;>S_1qZ!4cqy4(CxLV zWA+RLquuU{+L{S(xe@b1)(fGRq?g*&pIs|N&yhu6T-33FG(fQe&+7kbMve56>?_7@ z_Iy`=Djmf9^H^Z4F6DPoVPoR#<@j=@c5~Y-BYO$GZ=ol>(2X=b5iAq zK$m_1sDk6pj8%(zS`6%+i664<(_;hJMg0L-@bBNqC8PPb=`rj{y;L+V+wu!8oJMu@ zhte4LxK1u2ULO_WQ?W9lB|GxfXItSDWMr%jsWEQWr(bbugm<^p1b0(rFUKUg9Fkdm zGRki)U8!^x2GA^~eNNcCL>xs>GassbDi7bcvQus$Z=`vl$2jSgPpR-ylcUP5J>FYI z32N`=Mov0-a@EULZfRhf=sK?3gpQy0Hzy)h7=Y z!3R+uq!41Wda4)JB|NQQPD*Z7P!wE>(0BqrOjziC4Ucc9UBB0%W+M5t)rfFB>F7Uj zUa`inynAX~rW3pUp*yMs14gmj^WU?&OP>vsX=x&y;xrX5!Ivj1UQ6VFe{4RV`Rp7eq;Q*vlOn7smBE&Z-#&+CjN7EqTu1j z6TB2bD{?Qw`YCz9#vu@GbiVZV)^R_QGNzMFvj~nvzf4{t3v_x1IHw z-ncum>Lrp@_MVtKUE5`>ep=kANx0yBtIub5%3k}&Ojq)ji@`J0nOA!qbeTIEW=g|v zpDtrw@T`lbW)ArNq1Uqs$m-mnMd!gV)5o9?+&F1aZ~fK2uIsJtzbV! z_0Vp)Ivgc*}zUDRrOWEdg ztvu z>vGQ(-APuJH4!PKV=TvWcg$%DU+~be->l0SnY>v$7&?@^#H!1toPO#Sn2Hg_=e-Bv zhcix4r#r97=%=tR&fvB9dT(Tsdz(U^$oj(r#qwwD$NntBpHX0|qfEw>b|7R4rss7o zH)|IrWkNnw2|}iic)kzKUC0}u>Fa*<%qK1>`{cZkWPp*4fW~v_p3rqRX)VT_0N9vCMWXR4yj@4JQuO-MCZL*LIbOrp(P^= z(gg>q0Z+Mf&(f^Vg%qUX3KdvR$NbL~H5lzieLlFa8;yM|kO*cxQpHsEQEKaLGnFZ+w2%5Z=bk!1lq7lH!LwZB7YD*mhR8~O z!1cr+D0435@)h>uJ*7*eh1tf8w-IHNytRImS)q^O6GX%E&-m)klLIA_XfD4)xf0-| z*KZIFyM)yHgx6@Oun+nMotq2NWRnlZ57&o8K&_|RU!rlg!wHdBS&A6h4|fg}-?=Vx z!z1&29BcpZTTA_jSR`+CKyf?bX*7?q@Ezm*yndmLw1*Ss`Z+1U(i?SH!n@ZSU`Lz! z+I+61b4j4j_I_a6uvpR6nG(EU15c8qFWClaZZ=wrl?_q%PV|d7kK4?7#o=)pqU-w@ z%OAN`t24x@T|CaR zoqMJ1X2YNDFX|-(cp0Td{7BM{EKbaHed55)%(|2*I3L->RWI6|RU2V+PvhyKADf4= zX)VI>1Vn&it80=^ZIV+;?Nlm;|{^XZP9=h=$D!AiaFBS25FT=L?UY9VyS6t5i z(!7$jV>)k)OSoB15NgRL$bm1vUbNpepBTWEQ=9yDO! zz}=y>VcJ|p;`Fyi)rn?LyTBa8A7ExeV;=`dT(Hc7Sx=bnk;KVlO~0ik0qi1b8^?j# zg-!3*0ZQn^`nz2sswWboQrDL5T%lPnij8f&xGx!cZmHodTBo) zI({YS3XE=t8Ue_jQ*c`)zd|!XyKK`O3njaMj*PY?P~>0a_}xNyq1oyeI|*4g@R>#G ziN~jgdkKJe7TQ>ahaeXq#yl!(I8R`HsA?jKzLqDcGXI>7sd)M?WjejmtJ-V%-fUgo zmv=(|t=@`~`;b?kf4a^SUrwwQ~ zX3S8zLY4HHo-Tc6p8A9b&cPI

    (oF-N7*1wt7@F=UeGFx!FMj$D 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�cO~7(e0*p28UI+<>|LGXGdpz4_;@Km`_!`EO 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 Yf5mG4e)hkLTK+xn{6Af1?_c}=8;DLeiU0rr literal 0 HcmV?d00001 diff --git a/docs/assets/dtensor-tp-accuracy/validation_accuracy.png b/docs/assets/dtensor-tp-accuracy/validation_accuracy.png new file mode 100644 index 0000000000000000000000000000000000000000..83cf93b0a6b3927ec71f33629bd3dbdfba727366 GIT binary patch literal 303769 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

    Fig 1: The token_mult_prob_error of Qwen3-4B

    + + + +### Discrepancies Across TP Configurations in Reward Modeling + +For the reward model, different TP plans lead to slight but noticeable inconsistencies in the validation loss. As summarized in Table 1, the loss values vary across TP settings, with TP=4 showing a larger deviation from the TP=1 baseline than TP=2 or TP=8. This suggests that the choice of TP configuration can subtly affect the numerical behavior of the reward model, even when all other training conditions are held constant. + +To investigate whether mixed‑precision arithmetic was a major contributor, autocast was disabled in a separate set of experiments so that computations were performed in full precision. However, the validation losses with and without autocast are essentially identical for all TP settings, indicating that mixed‑precision itself is not the root cause of the discrepancy. Instead, these results imply that the primary source of inconsistency lies in how different TP plans partition and aggregate computations across devices, rather than in precision loss from autocast. + +| | TP=1 | TP=2 | TP=4 | TP=8 | +| ------------- | ------ | ------ | ------ | ------ | +| With autocast | 0.6035 | 0.6010 | 0.5864 | 0.6021 | +| W/O autocast | 0.6035 | 0.6010 | 0.5864 | 0.6021 | +

    Table 1: The validation loss of reward model training

    + +### Overall Performance Degradation Under Tensor Parallelism + +Figure 2 and Figure 3 present the reward curves and validation accuracy curves for multiple runs under different tensor parallel (TP) configurations. We also apply EMA smoothing for better visualization. The mismatch between the policy engine and the generation engine can lead to degraded downstream accuracy. This issue is most evident in the blue and purple curves, whose corresponding experiments are also the most abnormal cases observed in Figure 1. + +Combining the three images for observation, it is not necessarily true that abnormal `token_mult_prob_error` leads to abnormal reward and validation accuracy. This occurs for several reasons: + +1. **Spike pattern instead of continuous growth**: In many runs, `token_mult_prob_error` shows frequent spikes rather than a monotonically increasing trend, indicating that training is unstable but not fundamentally broken. +2. **Stochastic occurrence of spikes**: The abnormal `token_mult_prob_error` is itself unstable; even with the same batch of data, spikes may not appear in every run. +3. **Dilution effect with large datasets**: When the dataset is sufficiently large and no critical samples are repeatedly affected, these extreme but sporadic spikes may have limited impact on aggregate metrics, so the final reward and validation accuracy may not exhibit significant deviations. + +image-20260111142255534 + +

    Fig 2: The reward of Qwen3-4B

    + + + +

    Fig 3: The validation accuracy of Qwen3-4B

    + +However, such training instability is unacceptable for an RL training framework, so we aim to identify and eliminate the underlying issues. There are several challenges in resolving this problem: + +1. **Model dependence**: The issue is model-dependent rather than universal. For example, this phenomenon is observed on Qwen3-4B but not on Llama-3.1-8B-Instruct. +2. **Poor reproducibility**: Abnormal spikes in `token_mult_prob_error` cannot be reproduced reliably. Even with the same batch of data and identical configurations, repeated runs may yield different outcomes. + +Our in-depth analysis across multiple models and runs indicates that this behavior does not stem from a single root cause but rather from the interaction of several subtle factors. Taken together, these findings point to a small set of dominant contributors that consistently correlate with the observed instability. Our investigation revealed multiple contributing factors, with the most significant being: + +1. **Batch-variant kernels**, which can produce inconsistent results across microbatches. +2. A **row-wise TP plan**, as row-wise partitioning can introduce additional numerical inconsistencies during distributed computation. + +## Batch-Variant Kernels + +In RL training, log probabilities are typically computed for samples drawn from the old policy, denoted as `prev_logprobs`. The same samples are then evaluated under the current policy being optimized, yielding `current_logprobs`. Using these two quantities, we compute the ratio between the current and previous policies as follows: + +$$ +\begin{aligned} +\text{ratio} &= \exp\left(\text{current-logprobs} - \text{prev-logprobs}\right) \\ +&= \exp\left(\log\left(\frac{\text{current-probs}}{\text{prev-probs}}\right)\right) \\ +&= \frac{\text{current-probs}}{\text{prev-probs}} +\end{aligned} +$$ + +This ratio is the standard importance ratio used in off-policy RL to reweight returns when the data are collected under an older behavior policy. In on-policy training, this ratio should be exactly 1. However, in our experiments, we observed cases where the ratio deviates from 1, indicating a mismatch between the intended on-policy setting and the actual behavior of the system. Figure 4 and Figure 5 illustrate this phenomenon by showing the mismatch between `prev_logprobs` and `current_logprobs` under TP=4, as well as the reward curves under TP=4 and TP=1 for the `deepseek-ai/DeepSeek-R1-Distill-Qwen-7B` model. + +![](../assets/dtensor-tp-accuracy/logprobs_unequal_1.png) + +

    Fig 4: The mismatch of prev_logprobs and current_logprobs under TP=4

    + +image-20260111160656891 + +

    Fig 5: The reward of deepseek-ai/DeepSeek-R1-Distill-Qwen-7B under TP=4 and TP=1

    + +### Root Cause + +Upon further investigation, the discrepancy between `current_logprobs` and `prev_logprobs` was traced to a mismatch between `train_micro_batch_size` and `logprob_batch_size`, which caused the model to behave differently for the same logical samples under different effective batch sizes. This behavior is a typical manifestation of **batch-variant kernels**, where the numerical outputs of certain operators depend not only on the input tensors themselves but also on how those tensors are grouped into batches or microbatches. + +In batch-variant kernels, low-level implementation details—such as parallel reduction order, tiling strategy, fused-kernel heuristics, or algorithm selection conditioned on batch size or sequence layout—can change when the batch size changes, leading to small but systematic numerical differences in the computed logprobs. When `train_micro_batch_size` and `logprob_batch_size` are inconsistent, the same token sequence may traverse slightly different computational paths during training and logprob evaluation, resulting in `current_logprobs != prev_logprobs` and importance-sampling ratios that deviate from 1, even in nominally on-policy settings. + +After aligning `train_micro_batch_size` and `logprob_batch_size` so that the same samples are processed with identical effective batch configurations, the importance-sampling ratio (`probs_ratio`) becomes 1 as expected, and the observed accuracy issues disappear. This confirms that the mismatch was caused by batch-dependent numerical variation rather than a conceptual error in the RL objective or data pipeline. + +Importantly, this problem is **model-specific** rather than universal. Models such as `deepseek-ai/DeepSeek-R1-Distill-Qwen-7B` and `Qwen/Qwen2.5-1.5B` exhibit clear batch-variant behavior under these settings, whereas `meta-llama/Llama-3.1-8B-Instruct` does not show the same sensitivity, likely due to differences in architecture, kernel implementations, or optimization choices in their respective stacks. + +### Recommended Solutions + +When using DTensor with TP > 1, or when `probs_ratio != 1` is observed in an on-policy setting, the following mitigation strategies are recommended to restore numerical consistency and stabilize training: + +- **Align micro-batch sizes**: + Configure `train_micro_batch_size` and `logprob_batch_size` to be exactly equal so that both the training forward pass and the logprob evaluation traverse identical kernel configurations and batching patterns. This alignment minimizes batch-variant behavior in underlying kernels and ensures that `current_logprobs` and `prev_logprobs` are computed under the same numerical conditions, which in turn drives `probs_ratio` back toward 1. +- **Force an on-policy ratio**: + In strictly on-policy scenarios, enable the `loss_fn.force_on_policy_ratio` flag to explicitly set `probs_ratio` to 1 during loss computation. This option is appropriate only when the data are guaranteed to be collected from the current policy and the theoretical importance-sampling ratio should be exactly 1; under these assumptions, clamping the ratio removes spurious numerical noise introduced by minor logprob mismatches while preserving the correctness of the training objective. + +## Row-Wise TP Plan + +Row-wise and column-wise parallelism are two common ways to split a large linear layer across multiple devices. They differ in **which dimension of the weight matrix is partitioned** and how the partial results are combined. + +Consider a linear layer $y=xW^T$ with $` W^T \in \mathbb{R}^{d_{\text{in}} \times d_{\text{out}}},\quad x \in \mathbb{R}^{d_{\text{in}}},\quad y \in \mathbb{R}^{d_{\text{out}}}. `$. + +1. Row-wise parallel (TP = 2) + + In **row-wise** parallelism, we split $W^T$ by rows (input dimension) into two blocks: + +$$ + W^T = + \begin{bmatrix} + W_1^T \\ + W_2^T + \end{bmatrix}, + \quad\text{where}\quad + W_1^T \in \mathbb{R}^{d_{\text{in}}^{(1)} \times d_{\text{out}}},\quad + W_2^T \in \mathbb{R}^{d_{\text{in}}^{(2)} \times d_{\text{out}}},\quad + d_{\text{in}}^{(1)} + d_{\text{in}}^{(2)} = d_{\text{in}}. +$$ + + We also split the input: + +$$ + x = + \begin{bmatrix} + x_1 & x_2 + \end{bmatrix}, + \quad + x_1 \in \mathbb{R}^{d_{\text{in}}^{(1)}},\quad + x_2 \in \mathbb{R}^{d_{\text{in}}^{(2)}}. +$$ + + Each GPU holds its own **input slice** and weight slice, and computes: $y_1 = x_1W_1^T,\quad y_2 =x_2W_2^T$, then we **sum** the partial outputs: $y = y_1 + y_2$ + + + +2. Column-wise parallel (TP = 2) + + In **column-wise** parallelism, we split \(W^T\) by columns (output dimension) into two blocks: + +$$ + W^T = + \begin{bmatrix} + W_1^T & W_2^T + \end{bmatrix}, + \quad \text{where} \quad + W_1^T \in \mathbb{R}^{d_{\text{in}} \times d_{\text{out}}^{(1)}},\quad + W_2^T \in \mathbb{R}^{d_{\text{in}} \times d_{\text{out}}^{(2)}},\quad + d_{\text{out}}^{(1)} + d_{\text{out}}^{(2)} = d_{\text{out}}. +$$ + + Each GPU gets the **full input** $x$ and computes: $y_1 = xW_1^T ,\quad y_2 = xW_2^T$, then we **concatenate** along the output dimension: $y = \left[ y_1, y_2 \right]$. + +### Root Cause + +Our analysis shows that the **row-wise (colwise) tensor parallel (TP) plan** is a primary driver of the observed spikes in metrics and the instability of the reward model when TP is enabled. Row-wise tensor parallelism inevitably introduces cross-device reductions on the output activations. In the row-wise case, each rank produces a partial output $y_i$, and these partial results must be summed across GPUs to form the final $y=∑_iy_i$. Although floating‑point addition is mathematically associative, its implementation in finite precision is **non-associative**, so [changing the summation order can lead to different numerical results](https://arxiv.org/html/2408.05148v3), and the accumulated error can grow over long reduction chains. This makes large distributed reductions—such as the cross‑GPU adds required by row-wise TP—particularly vulnerable to run‑to‑run variability and small but systematic drift. + +By contrast, when the entire reduction is executed within a single device and on the same tensor core pipeline, the execution order and kernel implementation are typically fixed for a given problem size, which tends to yield deterministic and more numerically stable results for repeated runs with the same inputs. In other words, on a single GPU, the hardware and library stack generally ensure that the same matmul and accumulation schedule is reused, so the rounding pattern is at least consistent, even if it is not perfectly exact. However, once the computation is split across multiple GPUs, the final sum depends on the collective communication pattern (for example, ring or tree AllReduce), thread scheduling, and low‑level communication libraries. These factors are not guaranteed to be deterministic and can change the effective addition order, leading to additional rounding error and small cross‑rank discrepancies in the aggregated outputs. + +### Recommended Solutions: + +To mitigate the numerical instability introduced by row-wise TP (especially the cross‑GPU reductions on attention and MLP outputs), we recommend using a **numerically more stable TP plan** that avoids cross‑rank summations. Instead of summing partial outputs across GPUs, the stable plan favors **column-wise sharding with local outputs**, so that each rank produces a complete, independent slice of the logits and no inter‑GPU add is required on these critical paths. + +Below is an example of how the default plan can be adjusted into a more numerically stable configuration. More details can refer to [NeMo-RL PR! 1235](https://github.com/NVIDIA-NeMo/RL/pull/1235). + +```python +custom_parallel_plan = { + "model.embed_tokens": RowwiseParallel(input_layouts=Replicate()), + "model.layers.*.self_attn.q_proj": ColwiseParallel(), + "model.layers.*.self_attn.k_proj": ColwiseParallel(), + "model.layers.*.self_attn.v_proj": ColwiseParallel(), + "model.layers.*.self_attn.o_proj": RowwiseParallel(), + "model.layers.*.mlp.up_proj": ColwiseParallel(), + "model.layers.*.mlp.gate_proj": ColwiseParallel(), + "model.layers.*.mlp.down_proj": RowwiseParallel(), + "lm_head": ColwiseParallel(output_layouts=Shard(-1), use_local_output=False), +} + +numerical_stable_parallel_plan = { + "model.embed_tokens": RowwiseParallel(input_layouts=Replicate()), + "model.layers.*.self_attn.q_proj": ColwiseParallel(), + "model.layers.*.self_attn.k_proj": ColwiseParallel(), + "model.layers.*.self_attn.v_proj": ColwiseParallel(), + "model.layers.*.self_attn.o_proj": ColwiseParallel( + input_layouts=Shard(-1), + output_layouts=Replicate(), + use_local_output=True, + ), + "model.layers.*.mlp.up_proj": ColwiseParallel(), + "model.layers.*.mlp.gate_proj": ColwiseParallel(), + "model.layers.*.mlp.down_proj": ColwiseParallel( + input_layouts=Shard(-1), + output_layouts=Replicate(), + use_local_output=True, + ), + "lm_head": ColwiseParallel(output_layouts=Shard(-1), use_local_output=False), +} +``` + + + +## Additional Observations and Insights + +Beyond the TP-related issues discussed above, our experiments also highlight that **accuracy in RL training is influenced by a broad set of numerical factors**, including attention backends (such as SDPA and flash attention2), GPU architectures (such as *Ampere* vs *Hopper*), and arithmetic precision settings (such as BF16/FP16/FP8/FP32). Different inference and training engines often implement kernels using distinct implementation methods, which naturally introduce small discrepancies in floating‑point results even when the high‑level math is identical. As a result, two systems that are “functionally equivalent” may still produce slightly different logprobs, rewards, or validation metrics. + +Figure 6 reports the KL divergence between the logits produced by the Hugging Face stack and those produced by NeMo‑RL for the same input sequence. The plot shows that, even with identical data and model weights, the resulting logit distributions differ noticeably across the two execution engines. In our experiments, similar behavior appeared when varying attention implementations and hardware configurations, where we consistently observed measurable numerical discrepancies, although we did not attempt to systematically eliminate every such source of variation. + +image-20260112204939998 + +

    Fig 6: The KL divergence between hugging face and nemorl

    + +The broader research community has proposed multiple strategies to mitigate these issues. We have referred to a list of publications: + +* [Defeating the Training-Inference Mismatch via FP16](https://arxiv.org/pdf/2510.26788) +* [Accumulator accuracy](https://docs.pytorch.org/docs/stable/notes/cuda.html#reduced-precision-reduction-in-bf16-gemms) +* [Systematic Outliers in Large Language Models](https://arxiv.org/abs/2502.06415) +* [Training-Inference Mismatch](https://yingru.notion.site/When-Speed-Kills-Stability-Demystifying-RL-Collapse-from-the-Training-Inference-Mismatch-271211a558b7808d8b12d403fd15edda) + +In our current work, we treat these effects primarily as **background noise** and focus on TP‑induced misalignment that has a clear and actionable impact on RL training. A more exhaustive treatment—such as systematically unifying attention backends, enforcing TP‑invariant kernels, or integrating compensated summation into critical paths—is left as future engineering work informed by the aforementioned research directions. diff --git a/docs/index.md b/docs/index.md index 18fd643104..d37b4c2098 100644 --- a/docs/index.md +++ b/docs/index.md @@ -217,6 +217,7 @@ guides/eval.md guides/deepseek.md model-quirks.md guides/async-grpo.md +guides/dtensor-tp-accuracy.md ``` ```{toctree} From 1ba733da705eb48f811b400c60befcf0770c54be Mon Sep 17 00:00:00 2001 From: Parth Mannan Date: Thu, 15 Jan 2026 10:54:17 -0800 Subject: [PATCH 48/52] Fix lock conflict resolution after signoff Signed-off-by: Parth Mannan --- uv.lock | 1 - 1 file changed, 1 deletion(-) diff --git a/uv.lock b/uv.lock index 007137cb2e..8017a65672 100644 --- a/uv.lock +++ b/uv.lock @@ -3869,7 +3869,6 @@ requires-dist = [ { name = "cuda-python", marker = "extra == 'vllm'" }, { name = "datasets", specifier = ">=4.0.0" }, { name = "debugpy" }, - { name = "deep-ep", marker = "extra == 'mcore'", git = "https://github.com/deepseek-ai/DeepEP.git?rev=e3908bf5bd0cc6265bcb225d15cd8c996d4759ef" }, { name = "deep-ep", marker = "extra == 'automodel'", git = "https://github.com/deepseek-ai/DeepEP.git?rev=bfded34800dfec415b71503f8205181de90b2480" }, { name = "deep-ep", marker = "extra == 'mcore'", git = "https://github.com/deepseek-ai/DeepEP.git?rev=bfded34800dfec415b71503f8205181de90b2480" }, { name = "deep-ep", marker = "extra == 'vllm'", git = "https://github.com/deepseek-ai/DeepEP.git?rev=bfded34800dfec415b71503f8205181de90b2480" }, From 0ff08798d8447ff789e1ae63993a09eeb2d04b71 Mon Sep 17 00:00:00 2001 From: Parth Mannan Date: Thu, 15 Jan 2026 16:15:09 -0800 Subject: [PATCH 49/52] Make DeepEP related args in all configs --- examples/configs/distillation_math.yaml | 3 +++ examples/configs/distillation_math_megatron.yaml | 3 +++ examples/configs/dpo.yaml | 3 +++ examples/configs/grpo_math_1B.yaml | 3 +++ examples/configs/sft.yaml | 3 +++ examples/configs/vlm_grpo_3B.yaml | 3 +++ examples/configs/vlm_grpo_3B_megatron.yaml | 3 +++ .../grpo_dapo17k_bytedtsinghua_qwen3_4binstruct_nf.yaml | 3 +++ .../grpo_workplace_assistant_nemotron_nano_v2_9b.yaml | 3 +++ nemo_rl/models/policy/__init__.py | 6 +++--- 10 files changed, 30 insertions(+), 3 deletions(-) diff --git a/examples/configs/distillation_math.yaml b/examples/configs/distillation_math.yaml index 62937754f1..9e32814a62 100644 --- a/examples/configs/distillation_math.yaml +++ b/examples/configs/distillation_math.yaml @@ -107,6 +107,9 @@ policy: &POLICY_BASE bias_activation_fusion: True defer_fp32_logits: False moe_per_layer_logging: False + moe_enable_deepep: false + moe_token_dispatcher_type: "allgather" + moe_shared_expert_overlap: false optimizer: optimizer: "adam" diff --git a/examples/configs/distillation_math_megatron.yaml b/examples/configs/distillation_math_megatron.yaml index 644d240a7b..04802ac0ca 100644 --- a/examples/configs/distillation_math_megatron.yaml +++ b/examples/configs/distillation_math_megatron.yaml @@ -59,6 +59,9 @@ policy: &POLICY_BASE bias_activation_fusion: True moe_per_layer_logging: False defer_fp32_logits: False + moe_enable_deepep: false + moe_token_dispatcher_type: "allgather" + moe_shared_expert_overlap: false optimizer: optimizer: "adam" diff --git a/examples/configs/dpo.yaml b/examples/configs/dpo.yaml index a5e4f037af..fcfc22e1bd 100755 --- a/examples/configs/dpo.yaml +++ b/examples/configs/dpo.yaml @@ -119,6 +119,9 @@ policy: bias_activation_fusion: True defer_fp32_logits: False moe_per_layer_logging: False + moe_enable_deepep: false + moe_token_dispatcher_type: "allgather" + moe_shared_expert_overlap: false optimizer: optimizer: "adam" diff --git a/examples/configs/grpo_math_1B.yaml b/examples/configs/grpo_math_1B.yaml index ec8c2c5ecc..52de51905c 100644 --- a/examples/configs/grpo_math_1B.yaml +++ b/examples/configs/grpo_math_1B.yaml @@ -116,6 +116,9 @@ policy: bias_activation_fusion: True defer_fp32_logits: False moe_per_layer_logging: False + moe_enable_deepep: false + moe_token_dispatcher_type: "allgather" + moe_shared_expert_overlap: false optimizer: optimizer: "adam" diff --git a/examples/configs/sft.yaml b/examples/configs/sft.yaml index 747564f422..486841cdc2 100644 --- a/examples/configs/sft.yaml +++ b/examples/configs/sft.yaml @@ -113,6 +113,9 @@ policy: bias_activation_fusion: True defer_fp32_logits: False moe_per_layer_logging: False + moe_enable_deepep: false + moe_token_dispatcher_type: "allgather" + moe_shared_expert_overlap: false peft: enabled: false diff --git a/examples/configs/vlm_grpo_3B.yaml b/examples/configs/vlm_grpo_3B.yaml index 47233d87db..ec2f8531c0 100644 --- a/examples/configs/vlm_grpo_3B.yaml +++ b/examples/configs/vlm_grpo_3B.yaml @@ -104,6 +104,9 @@ policy: bias_activation_fusion: True defer_fp32_logits: False moe_per_layer_logging: False + moe_enable_deepep: false + moe_token_dispatcher_type: "allgather" + moe_shared_expert_overlap: false optimizer: optimizer: "adam" diff --git a/examples/configs/vlm_grpo_3B_megatron.yaml b/examples/configs/vlm_grpo_3B_megatron.yaml index 64f8ea158d..7ae6f38c67 100644 --- a/examples/configs/vlm_grpo_3B_megatron.yaml +++ b/examples/configs/vlm_grpo_3B_megatron.yaml @@ -146,6 +146,9 @@ policy: bias_activation_fusion: True defer_fp32_logits: False moe_per_layer_logging: False + moe_enable_deepep: false + moe_token_dispatcher_type: "allgather" + moe_shared_expert_overlap: false optimizer: optimizer: adam lr: 2.0e-07 diff --git a/examples/nemo_gym/grpo_dapo17k_bytedtsinghua_qwen3_4binstruct_nf.yaml b/examples/nemo_gym/grpo_dapo17k_bytedtsinghua_qwen3_4binstruct_nf.yaml index d6d550a12c..4f1aae5da0 100644 --- a/examples/nemo_gym/grpo_dapo17k_bytedtsinghua_qwen3_4binstruct_nf.yaml +++ b/examples/nemo_gym/grpo_dapo17k_bytedtsinghua_qwen3_4binstruct_nf.yaml @@ -102,6 +102,9 @@ policy: moe_permute_fusion: false bias_activation_fusion: True moe_per_layer_logging: False + moe_enable_deepep: false + moe_token_dispatcher_type: "allgather" + moe_shared_expert_overlap: false optimizer: optimizer: "adam" diff --git a/examples/nemo_gym/grpo_workplace_assistant_nemotron_nano_v2_9b.yaml b/examples/nemo_gym/grpo_workplace_assistant_nemotron_nano_v2_9b.yaml index dea76e41cf..ac3d793dfb 100644 --- a/examples/nemo_gym/grpo_workplace_assistant_nemotron_nano_v2_9b.yaml +++ b/examples/nemo_gym/grpo_workplace_assistant_nemotron_nano_v2_9b.yaml @@ -100,6 +100,9 @@ policy: apply_rope_fusion: True defer_fp32_logits: false moe_permute_fusion: false + moe_enable_deepep: false + moe_token_dispatcher_type: "allgather" + moe_shared_expert_overlap: false optimizer: optimizer: "adam" diff --git a/nemo_rl/models/policy/__init__.py b/nemo_rl/models/policy/__init__.py index 0c02251964..363399cbca 100644 --- a/nemo_rl/models/policy/__init__.py +++ b/nemo_rl/models/policy/__init__.py @@ -186,13 +186,13 @@ class MegatronConfig(TypedDict): # Set to true to enable DeepEP for expert parallel communication # Must set moe_token_dispatcher_type to 'flex' # Must set moe_shared_expert_overlap to False - moe_enable_deepep: NotRequired[bool] + moe_enable_deepep: bool # The type of token dispatcher to use. The default is 'allgather'. # Options are 'allgather','alltoall' and 'flex' # Use 'flex' when using DeepEP - moe_token_dispatcher_type: NotRequired[str] + moe_token_dispatcher_type: str # Can be used only with 'alltoall' token dispatcher - moe_shared_expert_overlap: NotRequired[bool] + moe_shared_expert_overlap: bool optimizer: MegatronOptimizerConfig scheduler: MegatronSchedulerConfig distributed_data_parallel_config: MegatronDDPConfig From 6b344133b2c62a667ab59ace427b25c48be2b868 Mon Sep 17 00:00:00 2001 From: Parth Mannan Date: Thu, 15 Jan 2026 16:15:53 -0800 Subject: [PATCH 50/52] Add deepep args to policy tests --- tests/unit/models/policy/test_megatron_worker.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/unit/models/policy/test_megatron_worker.py b/tests/unit/models/policy/test_megatron_worker.py index 5f09460cfb..426c64a0d1 100644 --- a/tests/unit/models/policy/test_megatron_worker.py +++ b/tests/unit/models/policy/test_megatron_worker.py @@ -135,6 +135,9 @@ def create_megatron_test_config( "apply_rope_fusion": True, "bias_activation_fusion": True, "moe_per_layer_logging": False, + "moe_enable_deepep": False, + "moe_token_dispatcher_type": "allgather", + "moe_shared_expert_overlap": False, "defer_fp32_logits": defer_fp32_logits, "train_iters": 100, # Required for Megatron training "optimizer": { From eb596a48a837ea5b6330a050f00c963c5b504d73 Mon Sep 17 00:00:00 2001 From: Parth Mannan Date: Thu, 15 Jan 2026 17:27:54 -0800 Subject: [PATCH 51/52] Add keys to vllm tests --- tests/unit/models/generation/test_vllm_generation.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/unit/models/generation/test_vllm_generation.py b/tests/unit/models/generation/test_vllm_generation.py index 1599b7e703..87730c8908 100644 --- a/tests/unit/models/generation/test_vllm_generation.py +++ b/tests/unit/models/generation/test_vllm_generation.py @@ -178,6 +178,9 @@ def get_basic_megatron_test_config( "moe_router_load_balancing_type": "none", "moe_router_bias_update_rate": 0.0, "moe_permute_fusion": False, + "moe_enable_deepep": False, + "moe_token_dispatcher_type": "allgather", + "moe_shared_expert_overlap": False, "apply_rope_fusion": True, "bias_activation_fusion": True, "moe_per_layer_logging": False, From f72d32101dc2fb44fa5dac60b8d6135e31668e73 Mon Sep 17 00:00:00 2001 From: Guyue Huang Date: Sun, 18 Jan 2026 11:36:01 -0800 Subject: [PATCH 52/52] Fix lint Signed-off-by: Guyue Huang --- .../configs/recipes/llm/grpo-dapomath17k-dsv3-megatron.yaml | 3 +-- .../recipes/llm/grpo-moonlight-16ba3b-4n8g-megatron.yaml | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/examples/configs/recipes/llm/grpo-dapomath17k-dsv3-megatron.yaml b/examples/configs/recipes/llm/grpo-dapomath17k-dsv3-megatron.yaml index eb3528a99c..bc636d931f 100644 --- a/examples/configs/recipes/llm/grpo-dapomath17k-dsv3-megatron.yaml +++ b/examples/configs/recipes/llm/grpo-dapomath17k-dsv3-megatron.yaml @@ -30,8 +30,7 @@ policy: moe_permute_fusion: true apply_rope_fusion: false moe_enable_deepep: true - moe_token_dispatcher_type: "flex" - moe_shared_expert_overlap: false + moe_token_dispatcher_type: flex optimizer: lr: 5.0e-07 min_lr: 5.0e-08 diff --git a/examples/configs/recipes/llm/grpo-moonlight-16ba3b-4n8g-megatron.yaml b/examples/configs/recipes/llm/grpo-moonlight-16ba3b-4n8g-megatron.yaml index 411bcff959..83ea6128ef 100644 --- a/examples/configs/recipes/llm/grpo-moonlight-16ba3b-4n8g-megatron.yaml +++ b/examples/configs/recipes/llm/grpo-moonlight-16ba3b-4n8g-megatron.yaml @@ -32,8 +32,7 @@ policy: scheduler: lr_warmup_iters: 50 moe_enable_deepep: true - moe_token_dispatcher_type: "flex" - moe_shared_expert_overlap: false + moe_token_dispatcher_type: flex logger: monitor_gpus: false wandb:

    @ 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 a;~1;NGT!!-8a}~4Na4P!EJWJq)&Bu4olATG literal 0 HcmV?d00001 diff --git a/docs/guides/dtensor-tp-accuracy.md b/docs/guides/dtensor-tp-accuracy.md new file mode 100644 index 0000000000..88c7cf6304 --- /dev/null +++ b/docs/guides/dtensor-tp-accuracy.md @@ -0,0 +1,242 @@ +# DTensor Tensor Parallel Accuracy Issue + +During reinforcement learning (RL) post-training, maintaining accuracy is both **critical and challenging**. Minor numerical deviations can propagate and amplify across policy updates, ultimately distorting reward signals and affecting convergence. Consequently, understanding and mitigating accuracy issues is central to ensuring consistent and reliable training behavior in large-scale distributed RL settings. + +## Observed Accuracy Issues Under Tensor Parallelism with DTensor Backend + +During our development, we identified that the **tensor parallel (TP)** strategy can be a significant factor contributing to accuracy problems. + +We have encountered several accuracy issues related to TP in **DTensor**, including: + +1. **For policy models**: We observed severe `token_mult_prob_error` spikes when TP was enabled during post-training of a Qwen3 dense model (e.g., [Qwen/Qwen3-4B-Instruct-2507 ¡ Hugging Face](https://huggingface.co/Qwen/Qwen3-4B-Instruct-2507)), indicating a significant difference between the training and inference engines. +2. **For reward models**: The reward model exhibited large discrepancies under different TP configurations. +3. **For overall model training performance**: Using a $TP > 1$ configuration often leads to degraded downstream performance when utilizing either **DTensorPolicyWorker** or **DTensorPolicyWorkerV2**. + +### Misalignment between Training and Inference for Policy Models + +Using [Qwen/Qwen3-4B-Instruct-2507](https://huggingface.co/Qwen/Qwen3-4B-Instruct-2507) as an example, Figure 1 illustrates the `token_mult_prob_error` observed during training. We applied a *time-weighted exponential moving average (EMA)* smoothing method and used a logarithmic scale on the Y-axis for better visualization. + +The `token_mult_prob_error` [metric](https://github.com/NVIDIA-NeMo/RL/blob/main/docs/guides/grpo.md#multiplicative-token-probability-error) measures the discrepancy between the inference engine and the training engine when processing the same sample. It is defined as follows: + +$$ +\begin{aligned} +g_i & : \text{the } i^{th} \text{ item in } \text{generation-logprobs}, \\ +p_i & : \text{the } i^{th} \text{ item in } \text{policy-logprobs}, \\ +m_i & : \text{mask the } i^{th} \text{ token , whether 1 or 0} \\ +&\text{global-valid-toks} = \sum_i m_i \, . \\ +& \text{token-mult-prob-error}= \frac{1}{\text{global-valid-toks}}\sum_{i} m_i \exp\left(\left|g_i - p_i\right|\right) +\end{aligned} +$$ + +In general, **generation logprobs** and **policy logprobs** should align closely, resulting in a `token_mult_prob_error` value near **1.0**. In our development, when this metric exceeds **1.05**, we consider it indicative of a potential framework issue that warrants further investigation. + +As shown in Figure 1, numerous spikes can be observed during training. Occasional spikes are acceptable if the `token_mult_prob_error` quickly returns to around 1.0. However, in this case, even with EMA smoothing applied, the figure reveals an overall upward trend, which is unacceptable and indicates a persistent misalignment between the training and inference behaviors. + +The token_mult_prob_error for Qwen3-4B + +

    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íi(F@N{LW=b*lb$WPI5hG02<)En`Xk%^0>i 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 TP}+Bya~GtkrAdjgOU(ZPs%)@h literal 0 HcmV?d00001 diff --git a/docs/assets/dtensor-tp-accuracy/kl_hf_prev.png b/docs/assets/dtensor-tp-accuracy/kl_hf_prev.png new file mode 100644 index 0000000000000000000000000000000000000000..646c88faf902d79db5d6558a8876e06dbabf2364 GIT binary patch literal 94922 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 literal 0 HcmV?d00001 diff --git a/docs/assets/dtensor-tp-accuracy/logprobs_unequal_1.png b/docs/assets/dtensor-tp-accuracy/logprobs_unequal_1.png new file mode 100644 index 0000000000000000000000000000000000000000..c67819d92c2c08f3b1a3017c08678f5d27c4e5a5 GIT binary patch literal 263393 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