megatron-core 0.16.0rc0.dev101543__tar.gz → 0.16.0rc0.dev101856__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/PKG-INFO +19 -12
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/README.md +5 -5
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/datasets/megatron_tokenizer.py +9 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/distributed/fsdp/src/megatron_fsdp/megatron_fsdp.py +4 -3
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/distributed/fsdp/src/megatron_fsdp/param_and_grad_buffer.py +3 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/enums.py +4 -2
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/extensions/transformer_engine_spec_provider.py +1 -1
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/fp4_utils.py +26 -1
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/fp8_utils.py +101 -2
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/inference/async_stream.py +8 -2
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/inference/communication_utils.py +1 -2
- megatron_core-0.16.0rc0.dev101856/megatron/core/inference/contexts/attention_context/mamba_metadata.py +106 -0
- megatron_core-0.16.0rc0.dev101856/megatron/core/inference/contexts/attention_context/metadata_base.py +72 -0
- megatron_core-0.16.0rc0.dev101856/megatron/core/inference/contexts/attention_context/mha_metadata.py +220 -0
- megatron_core-0.16.0rc0.dev101856/megatron/core/inference/contexts/dynamic_block_allocator.py +118 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/inference/contexts/dynamic_context.py +616 -326
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/inference/contexts/fused_kv_append_kernel.py +2 -2
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/inference/data_parallel_inference_coordinator.py +23 -6
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/inference/engines/__init__.py +1 -1
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/inference/engines/dynamic_engine.py +447 -123
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/inference/engines/static_engine.py +5 -9
- megatron_core-0.16.0rc0.dev101856/megatron/core/inference/headers.py +26 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/inference/inference_client.py +18 -6
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/inference/inference_request.py +220 -17
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/inference/sampling_params.py +2 -1
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/inference/text_generation_controllers/text_generation_controller.py +256 -185
- megatron_core-0.16.0rc0.dev101856/megatron/core/inference/unified_memory.py +162 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/inference/utils.py +28 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/models/backends.py +61 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/models/common/model_chunk_schedule_plan.py +5 -1
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/models/gpt/fine_grained_callables.py +4 -1
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/models/gpt/gpt_layer_specs.py +102 -2
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/models/gpt/gpt_model.py +2 -5
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/models/gpt/moe_module_specs.py +1 -9
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/models/mamba/mamba_layer_specs.py +16 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/models/mamba/mamba_model.py +30 -1
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/optimizer/__init__.py +134 -173
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/optimizer/cpu_offloading/hybrid_optimizer.py +1 -1
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/optimizer/optimizer_config.py +57 -17
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/optimizer_param_scheduler.py +20 -11
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/package_info.py +1 -1
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/process_groups_config.py +17 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/safe_globals.py +4 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/ssm/mamba_block.py +22 -25
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/ssm/mamba_hybrid_layer_allocation.py +31 -3
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/ssm/mamba_layer.py +5 -5
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/ssm/mamba_mixer.py +301 -57
- megatron_core-0.16.0rc0.dev101856/megatron/core/tensor_parallel/inference_layers.py +151 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/transformer/attention.py +31 -9
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/transformer/cuda_graphs.py +22 -1
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/transformer/dot_product_attention.py +2 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/transformer/moe/experts.py +24 -20
- megatron_core-0.16.0rc0.dev101856/megatron/core/transformer/moe/fused_a2a.py +534 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/transformer/moe/moe_layer.py +3 -3
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/transformer/moe/moe_utils.py +12 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/transformer/moe/router.py +2 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/transformer/moe/shared_experts.py +4 -2
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/transformer/moe/token_dispatcher.py +189 -29
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/transformer/multi_latent_attention.py +12 -6
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/transformer/multi_token_prediction.py +2 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/transformer/pipeline_parallel_layer_layout.py +5 -2
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/transformer/transformer_config.py +79 -12
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/transformer/transformer_layer.py +3 -3
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/utils.py +143 -1
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron_core.egg-info/PKG-INFO +19 -12
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron_core.egg-info/SOURCES.txt +4 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron_core.egg-info/requires.txt +13 -6
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/pyproject.toml +13 -6
- megatron_core-0.16.0rc0.dev101543/megatron/core/inference/contexts/dynamic_block_allocator.py +0 -92
- megatron_core-0.16.0rc0.dev101543/megatron/core/inference/headers.py +0 -17
- megatron_core-0.16.0rc0.dev101543/megatron/core/inference/unified_memory.py +0 -89
- megatron_core-0.16.0rc0.dev101543/megatron/core/transformer/moe/fused_a2a.py +0 -264
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/MANIFEST.in +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/README.md +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/__init__.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/activations.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/config.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/config_logger.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/datasets/__init__.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/datasets/bert_dataset.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/datasets/blended_dataset.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/datasets/blended_megatron_dataset_builder.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/datasets/blended_megatron_dataset_config.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/datasets/gpt_dataset.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/datasets/helpers.cpp +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/datasets/helpers.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/datasets/indexed_dataset.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/datasets/masked_dataset.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/datasets/megatron_dataset.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/datasets/multimodal_dataset.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/datasets/object_storage_utils.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/datasets/retro/__init__.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/datasets/retro/config/__init__.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/datasets/retro/config/bert_embedders.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/datasets/retro/config/config.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/datasets/retro/config/gpt_chunk_datasets.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/datasets/retro/config/tokenizers.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/datasets/retro/db/__init__.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/datasets/retro/db/build.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/datasets/retro/db/dataset.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/datasets/retro/db/utils.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/datasets/retro/external_libs.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/datasets/retro/index/__init__.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/datasets/retro/index/build.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/datasets/retro/index/factory.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/datasets/retro/index/index.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/datasets/retro/index/indexes/__init__.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/datasets/retro/index/indexes/faiss_base.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/datasets/retro/index/indexes/faiss_par_add.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/datasets/retro/index/utils.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/datasets/retro/index/validate.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/datasets/retro/query/__init__.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/datasets/retro/query/gpt_chunk_dataset.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/datasets/retro/query/multi_split_gpt_dataset.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/datasets/retro/query/query.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/datasets/retro/query/retro_dataset.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/datasets/retro/query/utils.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/datasets/retro/utils.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/datasets/t5_dataset.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/datasets/utils.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/datasets/utils_s3.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/dist_checkpointing/__init__.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/dist_checkpointing/core.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/dist_checkpointing/dict_utils.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/dist_checkpointing/exchange_utils.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/dist_checkpointing/mapping.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/dist_checkpointing/optimizer.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/dist_checkpointing/serialization.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/dist_checkpointing/state_dict_utils.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/dist_checkpointing/strategies/__init__.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/dist_checkpointing/strategies/async_utils.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/dist_checkpointing/strategies/base.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/dist_checkpointing/strategies/cached_metadata_filesystem_reader.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/dist_checkpointing/strategies/checkpointable.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/dist_checkpointing/strategies/common.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/dist_checkpointing/strategies/filesystem_async.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/dist_checkpointing/strategies/fully_parallel.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/dist_checkpointing/strategies/resharding.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/dist_checkpointing/strategies/state_dict_saver.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/dist_checkpointing/strategies/tensorstore.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/dist_checkpointing/strategies/torch.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/dist_checkpointing/strategies/two_stage.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/dist_checkpointing/strategies/zarr.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/dist_checkpointing/tensor_aware_state_dict.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/dist_checkpointing/utils.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/dist_checkpointing/validation.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/distributed/__init__.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/distributed/data_parallel_base.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/distributed/distributed_data_parallel.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/distributed/distributed_data_parallel_config.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/distributed/finalize_model_grads.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/distributed/fsdp/__init__.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/distributed/fsdp/mcore_fsdp_adapter.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/distributed/fsdp/src/__init__.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/distributed/fsdp/src/megatron_fsdp/__init__.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/distributed/fsdp/src/megatron_fsdp/distributed_data_parallel_config.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/distributed/fsdp/src/megatron_fsdp/fully_shard.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/distributed/fsdp/src/megatron_fsdp/package_info.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/distributed/fsdp/src/megatron_fsdp/uneven_dtensor.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/distributed/fsdp/src/megatron_fsdp/utils.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/distributed/param_and_grad_buffer.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/distributed/reduce_scatter_with_fp32_accumulation.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/distributed/torch_fully_sharded_data_parallel.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/distributed/torch_fully_sharded_data_parallel_config.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/energy_monitor.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/export/__init__.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/export/data_type.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/export/export_config.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/export/model_type.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/export/trtllm/__init__.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/export/trtllm/engine_builder/__init__.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/export/trtllm/engine_builder/trtllm_engine_builder.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/export/trtllm/model_to_trllm_mapping/__init__.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/export/trtllm/model_to_trllm_mapping/default_conversion_dict.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/export/trtllm/trt_model_config.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/export/trtllm/trt_model_type.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/export/trtllm/trtllm_helper.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/export/trtllm/trtllm_layers.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/export/trtllm/trtllm_weights_converter/__init__.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/export/trtllm/trtllm_weights_converter/distributed_trtllm_model_weights_converter.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/export/trtllm/trtllm_weights_converter/single_device_trtllm_model_weights_converter.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/export/trtllm/trtllm_weights_converter/utils.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/extensions/__init__.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/extensions/kitchen.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/extensions/transformer_engine.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/full_cuda_graph.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/fusions/__init__.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/fusions/fused_bias_dropout.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/fusions/fused_bias_geglu.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/fusions/fused_bias_gelu.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/fusions/fused_bias_swiglu.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/fusions/fused_cross_entropy.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/fusions/fused_indices_converter.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/fusions/fused_layer_norm.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/fusions/fused_mla_yarn_rope_apply.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/fusions/fused_pad_routing_map.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/fusions/fused_softmax.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/fusions/fused_weighted_squared_relu.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/hyper_comm_grid.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/inference/__init__.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/inference/common_inference_params.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/inference/contexts/__init__.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/inference/contexts/base_context.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/inference/contexts/static_context.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/inference/engines/abstract_engine.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/inference/engines/mcore_engine.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/inference/model_inference_wrappers/__init__.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/inference/model_inference_wrappers/abstract_model_inference_wrapper.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/inference/model_inference_wrappers/gpt/__init__.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/inference/model_inference_wrappers/gpt/gpt_inference_wrapper.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/inference/model_inference_wrappers/inference_wrapper_config.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/inference/model_inference_wrappers/multimodal/vlm_inference_wrapper.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/inference/model_inference_wrappers/t5/__init__.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/inference/model_inference_wrappers/t5/t5_inference_wrapper.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/inference/scheduler.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/inference/text_generation_controllers/__init__.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/inference/text_generation_controllers/encoder_decoder_text_generation_controller.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/inference/text_generation_controllers/simple_text_generation_controller.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/inference/text_generation_controllers/vlm_text_generation_controller.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/inference/text_generation_server/__init__.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/inference/text_generation_server/endpoints/common.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/inference/text_generation_server/endpoints/completions.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/inference/text_generation_server/run_mcore_engine.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/inference/text_generation_server/text_generation_server.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/inference/text_generation_server/tokenization.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/inference_params.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/jit.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/model_parallel_config.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/models/T5/__init__.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/models/T5/t5_model.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/models/T5/t5_spec.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/models/__init__.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/models/bert/__init__.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/models/bert/bert_layer_specs.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/models/bert/bert_lm_head.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/models/bert/bert_model.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/models/bert/pooler.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/models/common/__init__.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/models/common/embeddings/__init__.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/models/common/embeddings/language_model_embedding.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/models/common/embeddings/relative_pos_embedding.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/models/common/embeddings/rope_utils.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/models/common/embeddings/rotary_pos_embedding.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/models/common/embeddings/yarn_rotary_pos_embedding.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/models/common/language_module/__init__.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/models/common/language_module/language_module.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/models/common/vision_module/__init__.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/models/common/vision_module/vision_module.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/models/gpt/__init__.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/models/gpt/heterogeneous/heterogeneous_layer_specs.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/models/huggingface/__init__.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/models/huggingface/clip_model.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/models/huggingface/module.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/models/huggingface/qwen_model.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/models/mamba/__init__.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/models/mimo/__init__.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/models/mimo/config/__init__.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/models/mimo/config/base_configs.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/models/mimo/model/__init__.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/models/mimo/model/base.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/models/mimo/submodules/audio.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/models/mimo/submodules/base.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/models/mimo/submodules/vision.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/models/multimodal/__init__.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/models/multimodal/context_parallel.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/models/multimodal/llava_model.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/models/multimodal/llava_spec.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/models/retro/__init__.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/models/retro/base_attention.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/models/retro/config.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/models/retro/decoder_attention.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/models/retro/decoder_spec.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/models/retro/encoder_attention.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/models/retro/encoder_spec.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/models/retro/model.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/models/retro/utils.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/models/vision/__init__.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/models/vision/clip_vit_model.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/models/vision/multimodal_projector.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/models/vision/radio.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/models/vision/vit_layer_specs.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/msc_utils.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/nccl_allocator.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/num_microbatches_calculator.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/optimizer/clip_grads.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/optimizer/cpu_offloading/__init__.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/optimizer/distrib_optimizer.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/optimizer/grad_scaler.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/optimizer/optimizer.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/packed_seq_params.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/parallel_state.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/pipeline_parallel/__init__.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/pipeline_parallel/bridge_communicator.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/pipeline_parallel/combined_1f1b.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/pipeline_parallel/p2p_communication.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/pipeline_parallel/schedules.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/pipeline_parallel/utils.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/post_training/__init__.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/post_training/modelopt/__init__.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/post_training/modelopt/gpt/__init__.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/post_training/modelopt/gpt/model_specs.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/post_training/modelopt/gpt/state_dict_hooks.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/post_training/modelopt/layers.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/post_training/modelopt/mamba/__init__.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/post_training/modelopt/mamba/model_specs.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/quantization/__init__.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/quantization/quant_config.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/quantization/utils.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/requirements.txt +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/rerun_state_machine.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/ssm/__init__.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/ssm/mamba_context_parallel.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/ssm/mlp_layer.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/ssm/triton_cache_manager.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/tensor_parallel/__init__.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/tensor_parallel/cross_entropy.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/tensor_parallel/data.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/tensor_parallel/layers.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/tensor_parallel/mappings.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/tensor_parallel/random.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/tensor_parallel/utils.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/timers.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/tokenizers/__init__.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/tokenizers/base_tokenizer.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/tokenizers/megatron_tokenizer.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/tokenizers/text/__init__.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/tokenizers/text/libraries/__init__.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/tokenizers/text/libraries/abstract_tokenizer.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/tokenizers/text/libraries/bytelevel_tokenizer.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/tokenizers/text/libraries/chat_template.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/tokenizers/text/libraries/huggingface_tokenizer.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/tokenizers/text/libraries/megatron_hf_tokenizer.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/tokenizers/text/libraries/null_tokenizer.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/tokenizers/text/libraries/sentencepiece_tokenizer.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/tokenizers/text/libraries/tiktoken_tokenizer.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/tokenizers/text/models/__init__.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/tokenizers/text/models/bert_tokenizer.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/tokenizers/text/models/default_tokenizer.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/tokenizers/text/models/gpt_tokenizer.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/tokenizers/text/models/mamba_tokenizer.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/tokenizers/text/models/retro_tokenizer.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/tokenizers/text/models/t5_tokenizer.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/tokenizers/text/text_tokenizer.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/tokenizers/text/utils/build_tokenizer.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/transformer/__init__.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/transformer/custom_layers/__init__.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/transformer/custom_layers/transformer_engine.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/transformer/enums.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/transformer/fsdp_dtensor_checkpoint.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/transformer/heterogeneous/heterogeneous_config.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/transformer/heterogeneous/linear_replacements.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/transformer/identity_op.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/transformer/mlp.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/transformer/module.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/transformer/moe/__init__.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/transformer/moe/grouped_gemm_util.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/transformer/moe/upcycling_utils.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/transformer/spec_utils.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/transformer/torch_layer_norm.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/transformer/torch_norm.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/transformer/transformer_block.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/transformer/utils.py +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron_core.egg-info/dependency_links.txt +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron_core.egg-info/top_level.txt +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/setup.cfg +0 -0
- {megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/setup.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: megatron-core
|
|
3
|
-
Version: 0.16.0rc0.
|
|
3
|
+
Version: 0.16.0rc0.dev101856
|
|
4
4
|
Summary: Megatron Core - a library for efficient and scalable training of transformer based models
|
|
5
5
|
Author-email: NVIDIA <nemo-toolkit@nvidia.com>
|
|
6
6
|
Maintainer-email: NVIDIA <nemo-toolkit@nvidia.com>
|
|
@@ -41,7 +41,7 @@ Requires-Dist: transformers; extra == "mlm"
|
|
|
41
41
|
Provides-Extra: dev
|
|
42
42
|
Requires-Dist: nvidia-modelopt[torch]; sys_platform != "darwin" and extra == "dev"
|
|
43
43
|
Requires-Dist: transformer-engine[pytorch]<2.10.0,>=2.9.0a0; extra == "dev"
|
|
44
|
-
Requires-Dist: nvidia-resiliency-ext
|
|
44
|
+
Requires-Dist: nvidia-resiliency-ext; extra == "dev"
|
|
45
45
|
Requires-Dist: tqdm; extra == "dev"
|
|
46
46
|
Requires-Dist: einops~=0.8; extra == "dev"
|
|
47
47
|
Requires-Dist: tensorstore!=0.1.46,!=0.1.72,~=0.1; extra == "dev"
|
|
@@ -59,13 +59,20 @@ Requires-Dist: wget; extra == "dev"
|
|
|
59
59
|
Requires-Dist: onnxscript; extra == "dev"
|
|
60
60
|
Provides-Extra: lts
|
|
61
61
|
Requires-Dist: tqdm; extra == "lts"
|
|
62
|
-
Requires-Dist: einops; extra == "lts"
|
|
63
|
-
Requires-Dist: tensorstore!=0.1.46,!=0.1.72; extra == "lts"
|
|
64
|
-
Requires-Dist: nvtx; extra == "lts"
|
|
65
|
-
Requires-Dist:
|
|
66
|
-
Requires-Dist:
|
|
62
|
+
Requires-Dist: einops~=0.8; extra == "lts"
|
|
63
|
+
Requires-Dist: tensorstore!=0.1.46,!=0.1.72,~=0.1; extra == "lts"
|
|
64
|
+
Requires-Dist: nvtx~=0.2; extra == "lts"
|
|
65
|
+
Requires-Dist: multi-storage-client~=0.27; extra == "lts"
|
|
66
|
+
Requires-Dist: opentelemetry-api~=1.33.1; extra == "lts"
|
|
67
67
|
Requires-Dist: setuptools<80.0.0; extra == "lts"
|
|
68
|
+
Requires-Dist: mamba-ssm~=2.2; extra == "lts"
|
|
69
|
+
Requires-Dist: causal-conv1d~=1.5; extra == "lts"
|
|
70
|
+
Requires-Dist: nv-grouped-gemm~=1.1; extra == "lts"
|
|
71
|
+
Requires-Dist: megatron-energon[av_decode]~=6.0; extra == "lts"
|
|
72
|
+
Requires-Dist: av<16.0.0; extra == "lts"
|
|
73
|
+
Requires-Dist: flashinfer-python; extra == "lts"
|
|
68
74
|
Requires-Dist: wget; extra == "lts"
|
|
75
|
+
Requires-Dist: onnxscript; extra == "lts"
|
|
69
76
|
|
|
70
77
|
<div align="center">
|
|
71
78
|
|
|
@@ -168,7 +175,7 @@ pip install --no-build-isolation .[mlm,dev]
|
|
|
168
175
|
|
|
169
176
|
```
|
|
170
177
|
Megatron-LM/
|
|
171
|
-
├── megatron/
|
|
178
|
+
├── megatron/
|
|
172
179
|
│ ├── core/ # Megatron Core (kernels, parallelism, building blocks)
|
|
173
180
|
│ │ ├── models/ # Transformer models
|
|
174
181
|
│ │ ├── transformer/ # Transformer building blocks
|
|
@@ -197,7 +204,7 @@ Megatron-LM/
|
|
|
197
204
|
|
|
198
205
|
- **Training state-of-the-art foundation models** at scale with cutting-edge performance on latest NVIDIA hardware
|
|
199
206
|
- **Research teams** exploring new architectures and training techniques
|
|
200
|
-
- **Learning distributed training** concepts and best practices
|
|
207
|
+
- **Learning distributed training** concepts and best practices
|
|
201
208
|
- **Quick experimentation** with proven model configurations
|
|
202
209
|
|
|
203
210
|
**What you get:**
|
|
@@ -206,7 +213,7 @@ Megatron-LM/
|
|
|
206
213
|
- End-to-end examples from data prep to evaluation
|
|
207
214
|
- Research-focused tools and utilities
|
|
208
215
|
|
|
209
|
-
### Megatron Core: Composable Library
|
|
216
|
+
### Megatron Core: Composable Library
|
|
210
217
|
|
|
211
218
|
**Composable library** with GPU-optimized building blocks for custom training frameworks.
|
|
212
219
|
|
|
@@ -239,7 +246,7 @@ Megatron-LM/
|
|
|
239
246
|
- **[Megatron Bridge](https://github.com/NVIDIA-NeMo/Megatron-Bridge)** - Training library with bidirectional Hugging Face ↔ Megatron checkpoint conversion, flexible training loops, and production-ready recipes
|
|
240
247
|
- **[NeMo RL](https://github.com/NVIDIA-NeMo/RL)** - Scalable toolkit for efficient reinforcement learning with RLHF, DPO, and other post-training methods
|
|
241
248
|
- **[NeMo Framework](https://docs.nvidia.com/nemo-framework/user-guide/latest/overview.html)** - Enterprise framework with cloud-native support and end-to-end examples
|
|
242
|
-
- **[TensorRT Model Optimizer (ModelOpt)](https://github.com/NVIDIA/TensorRT-Model-Optimizer)** - Model optimization toolkit for quantization, pruning, and
|
|
249
|
+
- **[TensorRT Model Optimizer (ModelOpt)](https://github.com/NVIDIA/TensorRT-Model-Optimizer)** - Model optimization toolkit for quantization, pruning, distillation, speculative decoding, and more. Checkout end-to-end examples in [examples/post_training/modelopt](./examples/post_training/modelopt/).
|
|
243
250
|
|
|
244
251
|
**Compatible with:** [Hugging Face Accelerate](https://github.com/huggingface/accelerate), [Colossal-AI](https://github.com/hpcaitech/ColossalAI), [DeepSpeed](https://github.com/microsoft/DeepSpeed)
|
|
245
252
|
|
|
@@ -326,7 +333,7 @@ Our codebase efficiently trains models from 2B to 462B parameters across thousan
|
|
|
326
333
|
**Benchmark Configuration:**
|
|
327
334
|
|
|
328
335
|
- **Vocabulary size**: 131,072 tokens
|
|
329
|
-
- **Sequence length**: 4096 tokens
|
|
336
|
+
- **Sequence length**: 4096 tokens
|
|
330
337
|
- **Model scaling**: Varied hidden size, attention heads, and layers to achieve target parameter counts
|
|
331
338
|
- **Communication optimizations**: Fine-grained overlapping with DP (`--overlap-grad-reduce`, `--overlap-param-gather`), TP (`--tp-comm-overlap`), and PP (enabled by default)
|
|
332
339
|
|
|
@@ -99,7 +99,7 @@ pip install --no-build-isolation .[mlm,dev]
|
|
|
99
99
|
|
|
100
100
|
```
|
|
101
101
|
Megatron-LM/
|
|
102
|
-
├── megatron/
|
|
102
|
+
├── megatron/
|
|
103
103
|
│ ├── core/ # Megatron Core (kernels, parallelism, building blocks)
|
|
104
104
|
│ │ ├── models/ # Transformer models
|
|
105
105
|
│ │ ├── transformer/ # Transformer building blocks
|
|
@@ -128,7 +128,7 @@ Megatron-LM/
|
|
|
128
128
|
|
|
129
129
|
- **Training state-of-the-art foundation models** at scale with cutting-edge performance on latest NVIDIA hardware
|
|
130
130
|
- **Research teams** exploring new architectures and training techniques
|
|
131
|
-
- **Learning distributed training** concepts and best practices
|
|
131
|
+
- **Learning distributed training** concepts and best practices
|
|
132
132
|
- **Quick experimentation** with proven model configurations
|
|
133
133
|
|
|
134
134
|
**What you get:**
|
|
@@ -137,7 +137,7 @@ Megatron-LM/
|
|
|
137
137
|
- End-to-end examples from data prep to evaluation
|
|
138
138
|
- Research-focused tools and utilities
|
|
139
139
|
|
|
140
|
-
### Megatron Core: Composable Library
|
|
140
|
+
### Megatron Core: Composable Library
|
|
141
141
|
|
|
142
142
|
**Composable library** with GPU-optimized building blocks for custom training frameworks.
|
|
143
143
|
|
|
@@ -170,7 +170,7 @@ Megatron-LM/
|
|
|
170
170
|
- **[Megatron Bridge](https://github.com/NVIDIA-NeMo/Megatron-Bridge)** - Training library with bidirectional Hugging Face ↔ Megatron checkpoint conversion, flexible training loops, and production-ready recipes
|
|
171
171
|
- **[NeMo RL](https://github.com/NVIDIA-NeMo/RL)** - Scalable toolkit for efficient reinforcement learning with RLHF, DPO, and other post-training methods
|
|
172
172
|
- **[NeMo Framework](https://docs.nvidia.com/nemo-framework/user-guide/latest/overview.html)** - Enterprise framework with cloud-native support and end-to-end examples
|
|
173
|
-
- **[TensorRT Model Optimizer (ModelOpt)](https://github.com/NVIDIA/TensorRT-Model-Optimizer)** - Model optimization toolkit for quantization, pruning, and
|
|
173
|
+
- **[TensorRT Model Optimizer (ModelOpt)](https://github.com/NVIDIA/TensorRT-Model-Optimizer)** - Model optimization toolkit for quantization, pruning, distillation, speculative decoding, and more. Checkout end-to-end examples in [examples/post_training/modelopt](./examples/post_training/modelopt/).
|
|
174
174
|
|
|
175
175
|
**Compatible with:** [Hugging Face Accelerate](https://github.com/huggingface/accelerate), [Colossal-AI](https://github.com/hpcaitech/ColossalAI), [DeepSpeed](https://github.com/microsoft/DeepSpeed)
|
|
176
176
|
|
|
@@ -257,7 +257,7 @@ Our codebase efficiently trains models from 2B to 462B parameters across thousan
|
|
|
257
257
|
**Benchmark Configuration:**
|
|
258
258
|
|
|
259
259
|
- **Vocabulary size**: 131,072 tokens
|
|
260
|
-
- **Sequence length**: 4096 tokens
|
|
260
|
+
- **Sequence length**: 4096 tokens
|
|
261
261
|
- **Model scaling**: Varied hidden size, attention heads, and layers to achieve target parameter counts
|
|
262
262
|
- **Communication optimizations**: Fine-grained overlapping with DP (`--overlap-grad-reduce`, `--overlap-param-gather`), TP (`--tp-comm-overlap`), and PP (enabled by default)
|
|
263
263
|
|
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
# Copyright (c) 2024, NVIDIA CORPORATION. All rights reserved.
|
|
2
2
|
import json
|
|
3
|
+
import logging
|
|
3
4
|
from abc import ABC, abstractmethod
|
|
4
5
|
from collections import OrderedDict
|
|
5
6
|
from typing import Any
|
|
6
7
|
|
|
7
8
|
import numpy
|
|
8
9
|
|
|
10
|
+
logger = logging.getLogger(__name__)
|
|
11
|
+
|
|
9
12
|
|
|
10
13
|
class MegatronLegacyTokenizer(ABC):
|
|
11
14
|
"""Abstract class for tokenizer
|
|
@@ -20,6 +23,12 @@ class MegatronLegacyTokenizer(ABC):
|
|
|
20
23
|
"""
|
|
21
24
|
|
|
22
25
|
def __init__(self, *tokenizer_paths: str, **tokenizer_options: Any):
|
|
26
|
+
# Deprecation warning
|
|
27
|
+
logger.warning(
|
|
28
|
+
"You’re using the legacy tokenizer system, which is deprecated "
|
|
29
|
+
"and will be removed in a future release. Please migrate to the new tokenizer system "
|
|
30
|
+
"(`megatron.core.tokenizers.MegatronTokenizer`)."
|
|
31
|
+
)
|
|
23
32
|
self.unique_identifiers = OrderedDict()
|
|
24
33
|
self.unique_identifiers["class"] = type(self).__name__
|
|
25
34
|
self.unique_identifiers["tokenizer_path"] = list(tokenizer_paths)
|
|
@@ -898,9 +898,10 @@ class MegatronFSDP(torch.nn.Module):
|
|
|
898
898
|
|
|
899
899
|
# Register pre state_dict hook to ensure that the module parameters are
|
|
900
900
|
# distributed before saving the state_dict.
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
901
|
+
for name, module in self.named_modules():
|
|
902
|
+
module.register_state_dict_pre_hook(
|
|
903
|
+
lambda *args, **kwargs: self._replace_param_with_distributed_if_needed()
|
|
904
|
+
)
|
|
904
905
|
|
|
905
906
|
@contextmanager
|
|
906
907
|
def no_sync(self):
|
|
@@ -2782,6 +2782,9 @@ class GradReducePipeline:
|
|
|
2782
2782
|
outer_fsdp_group_grad_reduce (bool, optional): Whether to reduce gradients
|
|
2783
2783
|
across outer-DP groups. Defaults to False.
|
|
2784
2784
|
"""
|
|
2785
|
+
# Sort parameters by their bucket IDs to ensure a deterministic processing order.
|
|
2786
|
+
# Performing reduce-scatter operations out of order can lead to hangs.
|
|
2787
|
+
params = sorted(list(params), key=lambda x: self.buffer.param_to_param_group[x])
|
|
2785
2788
|
for param in params:
|
|
2786
2789
|
bucket_id = self.buffer.param_to_param_group[param]
|
|
2787
2790
|
param_group = self.buffer.parameter_groups[bucket_id]
|
{megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/enums.py
RENAMED
|
@@ -20,15 +20,17 @@ class ModelType(enum.Enum):
|
|
|
20
20
|
|
|
21
21
|
|
|
22
22
|
class Fp8Recipe(str, enum.Enum):
|
|
23
|
-
"""FP8 recipe names: delayed, tensorwise, mxfp8, blockwise."""
|
|
23
|
+
"""FP8 recipe names: delayed, tensorwise, mxfp8, blockwise, custom."""
|
|
24
24
|
|
|
25
25
|
delayed = "delayed"
|
|
26
26
|
tensorwise = "tensorwise"
|
|
27
27
|
mxfp8 = "mxfp8"
|
|
28
28
|
blockwise = "blockwise"
|
|
29
|
+
custom = "custom"
|
|
29
30
|
|
|
30
31
|
|
|
31
32
|
class Fp4Recipe(str, enum.Enum):
|
|
32
|
-
"""FP4 recipe names: nvfp4."""
|
|
33
|
+
"""FP4 recipe names: nvfp4, custom."""
|
|
33
34
|
|
|
34
35
|
nvfp4 = "nvfp4"
|
|
36
|
+
custom = "custom"
|
{megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/fp4_utils.py
RENAMED
|
@@ -7,6 +7,7 @@ from contextlib import nullcontext
|
|
|
7
7
|
import torch
|
|
8
8
|
|
|
9
9
|
from megatron.core.enums import Fp4Recipe
|
|
10
|
+
from megatron.core.fp8_utils import _get_custom_recipe
|
|
10
11
|
from megatron.core.transformer.transformer_config import TransformerConfig
|
|
11
12
|
from megatron.core.utils import is_te_min_version
|
|
12
13
|
|
|
@@ -47,6 +48,28 @@ def is_nvfp4tensor(tensor: torch.Tensor) -> bool:
|
|
|
47
48
|
return HAVE_TE_FP4_TENSOR_CLASS and isinstance(tensor, FP4_TENSOR_CLASS)
|
|
48
49
|
|
|
49
50
|
|
|
51
|
+
def get_fp4_align_size(fp4_recipe: Fp4Recipe) -> int:
|
|
52
|
+
"""
|
|
53
|
+
Get the alignment size required for FP4 GEMM.
|
|
54
|
+
FP4 GEMM requires Blackwell and later architectures.
|
|
55
|
+
|
|
56
|
+
The value 32 is a hardware requirement: TMA (Tensor Memory Accelerator) requires
|
|
57
|
+
a 16-byte aligned address for efficient memory access. Since FP4 uses 4 bits per value,
|
|
58
|
+
16 bytes (128 bits) corresponds to 32 FP4 values. Therefore, the alignment size for FP4
|
|
59
|
+
is 32. With this alignment, NVFP4 GEMM can be performed efficiently.
|
|
60
|
+
|
|
61
|
+
Note that since we are also random hadamard transform for NVFP4 training, we want
|
|
62
|
+
fused group nvfp4 quantize plus hadamard transform. Hadamard transform will leverage
|
|
63
|
+
tensor core instructions for better performance, while group quantize kernels also
|
|
64
|
+
prefer a more aligned size in token dimension M. Therefore, we apply align size 64
|
|
65
|
+
here for better performance in MOE.
|
|
66
|
+
|
|
67
|
+
Paper link: https://arxiv.org/pdf/2509.25149
|
|
68
|
+
"""
|
|
69
|
+
# pylint: disable=unused-argument
|
|
70
|
+
return 64
|
|
71
|
+
|
|
72
|
+
|
|
50
73
|
def dequantize_fp4_tensor(fp4_tensor: torch.Tensor) -> torch.Tensor:
|
|
51
74
|
"""Dequantize a fp4 tensor to a higher precision tensor."""
|
|
52
75
|
if is_te_min_version("2.7.0.dev0"):
|
|
@@ -70,9 +93,11 @@ if HAVE_TE:
|
|
|
70
93
|
Transformer Engine. Please make sure you are using TE version
|
|
71
94
|
>= 2.7.0.dev0."""
|
|
72
95
|
)
|
|
96
|
+
elif config.fp4_recipe == Fp4Recipe.custom:
|
|
97
|
+
fp4_recipe = _get_custom_recipe(config.fp4_quantizer_factory)
|
|
73
98
|
else:
|
|
74
99
|
raise ValueError(
|
|
75
|
-
"NVFP4BlockScaling
|
|
100
|
+
"NVFP4BlockScaling and custom are the only supported FP4 recipes. "
|
|
76
101
|
"Please make sure you are using a compatible TE version >= 2.7.0.dev0."
|
|
77
102
|
)
|
|
78
103
|
else:
|
{megatron_core-0.16.0rc0.dev101543 → megatron_core-0.16.0rc0.dev101856}/megatron/core/fp8_utils.py
RENAMED
|
@@ -2,14 +2,21 @@
|
|
|
2
2
|
|
|
3
3
|
"""Utility functions related to FP8 that are used throughout Megatron core"""
|
|
4
4
|
|
|
5
|
+
import importlib
|
|
5
6
|
import weakref
|
|
6
7
|
from contextlib import nullcontext
|
|
7
8
|
from functools import wraps
|
|
8
|
-
from typing import List, Optional
|
|
9
|
+
from typing import List, Optional, Union
|
|
9
10
|
|
|
10
11
|
import torch
|
|
11
12
|
|
|
12
|
-
from megatron.core.enums import Fp8Recipe
|
|
13
|
+
from megatron.core.enums import Fp4Recipe, Fp8Recipe
|
|
14
|
+
from megatron.core.tensor_parallel import (
|
|
15
|
+
ColumnParallelLinear,
|
|
16
|
+
RowParallelLinear,
|
|
17
|
+
gather_from_sequence_parallel_region,
|
|
18
|
+
reduce_scatter_to_sequence_parallel_region,
|
|
19
|
+
)
|
|
13
20
|
from megatron.core.transformer.transformer_config import TransformerConfig
|
|
14
21
|
from megatron.core.utils import get_te_version, is_te_min_version
|
|
15
22
|
|
|
@@ -104,6 +111,53 @@ def dequantize_fp8_tensor(fp8_tensor: torch.Tensor) -> torch.Tensor:
|
|
|
104
111
|
return fp8_tensor.from_float8()
|
|
105
112
|
|
|
106
113
|
|
|
114
|
+
def _resolve_callable_from_python_import_path(dotted_path: str):
|
|
115
|
+
"""Resolve a Python import path like 'pkg.mod.func' to a callable.
|
|
116
|
+
|
|
117
|
+
Raises ValueError with clear message on failure.
|
|
118
|
+
"""
|
|
119
|
+
if not isinstance(dotted_path, str) or not dotted_path:
|
|
120
|
+
raise ValueError(
|
|
121
|
+
"fp8_quantizer_factory must be a non-empty string with format 'pkg.mod.func'."
|
|
122
|
+
)
|
|
123
|
+
|
|
124
|
+
parts = dotted_path.rsplit(".", 1)
|
|
125
|
+
if len(parts) == 1:
|
|
126
|
+
raise ValueError(f"Invalid fp8_quantizer_factory '{dotted_path}'. Expected 'pkg.mod.func'.")
|
|
127
|
+
module_path, attr = parts[0], parts[1]
|
|
128
|
+
|
|
129
|
+
try:
|
|
130
|
+
mod = importlib.import_module(module_path)
|
|
131
|
+
except Exception as exc:
|
|
132
|
+
raise ValueError(
|
|
133
|
+
f"Failed to import module '{module_path}' for fp8_quantizer_factory: {exc}"
|
|
134
|
+
) from exc
|
|
135
|
+
|
|
136
|
+
fn = getattr(mod, attr, None)
|
|
137
|
+
if fn is None:
|
|
138
|
+
raise ValueError(
|
|
139
|
+
f"Attribute '{attr}' not found in module '{module_path}' for fp8_quantizer_factory."
|
|
140
|
+
)
|
|
141
|
+
if not callable(fn):
|
|
142
|
+
raise ValueError(
|
|
143
|
+
f"Resolved attribute '{module_path}.{attr}' is not callable for fp8_quantizer_factory."
|
|
144
|
+
)
|
|
145
|
+
return fn
|
|
146
|
+
|
|
147
|
+
|
|
148
|
+
def _get_custom_recipe(quantizer_factory_python_path: str) -> Union[Fp8Recipe, Fp4Recipe]:
|
|
149
|
+
quantizer_factory = _resolve_callable_from_python_import_path(quantizer_factory_python_path)
|
|
150
|
+
try:
|
|
151
|
+
custom_recipe = transformer_engine.common.recipe.CustomRecipe(qfactory=quantizer_factory)
|
|
152
|
+
except AttributeError:
|
|
153
|
+
raise ValueError(
|
|
154
|
+
"""CustomRecipe recipe is not available in this version of
|
|
155
|
+
Transformer Engine. Please make sure you are using TE version
|
|
156
|
+
>= 2.9.0.dev0."""
|
|
157
|
+
)
|
|
158
|
+
return custom_recipe
|
|
159
|
+
|
|
160
|
+
|
|
107
161
|
def get_fp8_align_size(fp8_recipe: Fp8Recipe) -> int:
|
|
108
162
|
"""Get the alignment size required for fp8 GEMM."""
|
|
109
163
|
if fp8_recipe == Fp8Recipe.mxfp8:
|
|
@@ -112,6 +166,27 @@ def get_fp8_align_size(fp8_recipe: Fp8Recipe) -> int:
|
|
|
112
166
|
return 16
|
|
113
167
|
|
|
114
168
|
|
|
169
|
+
def is_column_parallel_linear(module):
|
|
170
|
+
"""Returns whether the given module is a ColumnParallelLinear layer."""
|
|
171
|
+
if HAVE_TE and (
|
|
172
|
+
isinstance(module, TEColumnParallelLinear)
|
|
173
|
+
or isinstance(module, TELayerNormColumnParallelLinear)
|
|
174
|
+
):
|
|
175
|
+
return True
|
|
176
|
+
elif isinstance(module, ColumnParallelLinear):
|
|
177
|
+
return True
|
|
178
|
+
return False
|
|
179
|
+
|
|
180
|
+
|
|
181
|
+
def is_row_parallel_linear(module):
|
|
182
|
+
"""Returns whether the given module is a RowParallelLinear layer."""
|
|
183
|
+
if HAVE_TE and isinstance(module, TERowParallelLinear):
|
|
184
|
+
return True
|
|
185
|
+
elif isinstance(module, RowParallelLinear):
|
|
186
|
+
return True
|
|
187
|
+
return False
|
|
188
|
+
|
|
189
|
+
|
|
115
190
|
"""
|
|
116
191
|
The code below abstracts the functionalities needed for implementing "--fp8-param-gather" into
|
|
117
192
|
several functions. It provides different implementations for each function based on different
|
|
@@ -466,6 +541,8 @@ if HAVE_TE:
|
|
|
466
541
|
fp8_recipe = transformer_engine.common.recipe.MXFP8BlockScaling(
|
|
467
542
|
fp8_format=fp8_format
|
|
468
543
|
)
|
|
544
|
+
elif config.fp8_recipe == Fp8Recipe.custom:
|
|
545
|
+
fp8_recipe = _get_custom_recipe(config.fp8_quantizer_factory)
|
|
469
546
|
else:
|
|
470
547
|
raise ValueError(
|
|
471
548
|
"Float8CurrentScaling, MXFP8BlockScaling, Float8BlockwiseScaling and "
|
|
@@ -587,6 +664,18 @@ if HAVE_TE:
|
|
|
587
664
|
if not FP8GlobalStateManager.is_fp8_enabled():
|
|
588
665
|
return original_forward(input_tensor, *args, **kwargs)
|
|
589
666
|
|
|
667
|
+
# With sequence parallelism we need to all-gather before padding
|
|
668
|
+
# and reduce-scatter after unpadding
|
|
669
|
+
if is_sequence_parallel := getattr(module, "sequence_parallel", False):
|
|
670
|
+
if is_column_parallel_linear(module):
|
|
671
|
+
input_tensor = gather_from_sequence_parallel_region(
|
|
672
|
+
input_tensor, group=module.tp_group
|
|
673
|
+
)
|
|
674
|
+
|
|
675
|
+
# Disable sequence parallelism on the module because we are handling the
|
|
676
|
+
# all-gather and reduce-scatter externally
|
|
677
|
+
module.sequence_parallel = False
|
|
678
|
+
|
|
590
679
|
seq_len, batch_size, hidden_size = input_tensor.shape
|
|
591
680
|
# Reshape to (S, B*H) to pad sequence dimension
|
|
592
681
|
input_2d = input_tensor.reshape(seq_len, -1)
|
|
@@ -612,6 +701,16 @@ if HAVE_TE:
|
|
|
612
701
|
unpadded_output_2d = _unpad_func(output_2d, [seq_len])
|
|
613
702
|
unpadded_output = unpadded_output_2d.reshape(seq_len, batch_size, output_hidden_size)
|
|
614
703
|
|
|
704
|
+
if is_sequence_parallel:
|
|
705
|
+
# Reduce-scatter after unpadding
|
|
706
|
+
if is_row_parallel_linear(module):
|
|
707
|
+
unpadded_output = reduce_scatter_to_sequence_parallel_region(
|
|
708
|
+
unpadded_output, group=module.tp_group
|
|
709
|
+
)
|
|
710
|
+
|
|
711
|
+
# Reset sequence parallelism flag on the module
|
|
712
|
+
module.sequence_parallel = True
|
|
713
|
+
|
|
615
714
|
if other_outputs:
|
|
616
715
|
return (unpadded_output,) + other_outputs
|
|
617
716
|
else:
|
|
@@ -9,6 +9,7 @@ import asyncio
|
|
|
9
9
|
from typing import Any, AsyncGenerator, Callable, Optional, Type, Union
|
|
10
10
|
|
|
11
11
|
from megatron.core.inference.inference_request import InferenceRequest
|
|
12
|
+
from megatron.core.utils import get_asyncio_loop
|
|
12
13
|
|
|
13
14
|
STOP_ITERATION = Exception()
|
|
14
15
|
|
|
@@ -20,12 +21,17 @@ class AsyncStream:
|
|
|
20
21
|
Adopted from https://github.com/vllm-project/vllm/blob/eb881ed006ca458b052905e33f0d16dbb428063a/vllm/v1/engine/async_stream.py # pylint: disable=line-too-long
|
|
21
22
|
"""
|
|
22
23
|
|
|
23
|
-
def __init__(
|
|
24
|
+
def __init__(
|
|
25
|
+
self,
|
|
26
|
+
request_id: int,
|
|
27
|
+
cancel: Callable[[str], None],
|
|
28
|
+
loop: Optional[asyncio.AbstractEventLoop] = None,
|
|
29
|
+
) -> None:
|
|
24
30
|
self._request_id = request_id
|
|
25
31
|
self._cancel = cancel
|
|
26
32
|
self._queue: asyncio.Queue = asyncio.Queue()
|
|
27
33
|
self._finished = False
|
|
28
|
-
self._loop =
|
|
34
|
+
self._loop = get_asyncio_loop(loop)
|
|
29
35
|
|
|
30
36
|
def put(self, item: Union[InferenceRequest, Exception]) -> None:
|
|
31
37
|
"""Adds a new value to the stream"""
|
|
@@ -71,8 +71,7 @@ def broadcast_from_last_pipeline_stage(
|
|
|
71
71
|
tensor.shape
|
|
72
72
|
), f"Expected tensor of shape {size} but got {list(tensor.shape)}"
|
|
73
73
|
assert dtype == tensor.dtype, f"Expected tensor of type {dtype} but got {tensor.dtype}"
|
|
74
|
-
|
|
75
|
-
assert tensor.is_contiguous()
|
|
74
|
+
_is_cuda_contiguous(tensor)
|
|
76
75
|
else:
|
|
77
76
|
tensor = torch.empty(size, dtype=dtype, device=torch.cuda.current_device())
|
|
78
77
|
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
# Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
|
2
|
+
|
|
3
|
+
import torch
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class MambaMetadata:
|
|
7
|
+
"""Manages the metadata tensors required for Mamba layers during inference."""
|
|
8
|
+
|
|
9
|
+
def __init__(self, max_requests: int):
|
|
10
|
+
"""
|
|
11
|
+
Initializes the Mamba slot allocator.
|
|
12
|
+
|
|
13
|
+
Args:
|
|
14
|
+
max_requests (int): The maximum number of concurrent requests.
|
|
15
|
+
"""
|
|
16
|
+
self.max_requests = max_requests
|
|
17
|
+
|
|
18
|
+
# Metadata for mapping requests to slots in the static Mamba state buffer
|
|
19
|
+
self.request_to_mamba_state_idx = torch.full(
|
|
20
|
+
(self.max_requests,), -1, dtype=torch.int32, device=torch.cuda.current_device()
|
|
21
|
+
)
|
|
22
|
+
|
|
23
|
+
# Separate mapping used only for CUDA graph compatibility
|
|
24
|
+
self.request_to_mamba_state_idx_cudagraph_only = torch.full(
|
|
25
|
+
(self.max_requests,), -1, dtype=torch.int32, device=torch.cuda.current_device()
|
|
26
|
+
)
|
|
27
|
+
|
|
28
|
+
# Allocator for Mamba state slots
|
|
29
|
+
self.mamba_state_free_slots = torch.arange(
|
|
30
|
+
self.max_requests, dtype=torch.int32, device=torch.cuda.current_device()
|
|
31
|
+
)
|
|
32
|
+
self.mamba_state_free_slot_count = self.max_requests
|
|
33
|
+
|
|
34
|
+
def reset(self) -> None:
|
|
35
|
+
"""
|
|
36
|
+
Resets all Mamba states and frees all allocated slots.
|
|
37
|
+
"""
|
|
38
|
+
self.request_to_mamba_state_idx.fill_(-1)
|
|
39
|
+
self.request_to_mamba_state_idx_cudagraph_only.fill_(-1)
|
|
40
|
+
|
|
41
|
+
# Re-initialize the free slot pool
|
|
42
|
+
self.mamba_state_free_slots = torch.arange(
|
|
43
|
+
self.max_requests, dtype=torch.int32, device=torch.cuda.current_device()
|
|
44
|
+
)
|
|
45
|
+
self.mamba_state_free_slot_count = self.max_requests
|
|
46
|
+
|
|
47
|
+
def reset_cudagraph_mapping(self) -> None:
|
|
48
|
+
"""
|
|
49
|
+
Resets only the CUDA graph mapping tensor.
|
|
50
|
+
"""
|
|
51
|
+
self.request_to_mamba_state_idx_cudagraph_only.fill_(-1)
|
|
52
|
+
|
|
53
|
+
def update_cudagraph_mapping(
|
|
54
|
+
self, active_mamba_indices: torch.Tensor, num_active_requests: int
|
|
55
|
+
) -> None:
|
|
56
|
+
"""
|
|
57
|
+
Updates the dedicated CUDA graph mapping tensor with the indices
|
|
58
|
+
of currently active requests.
|
|
59
|
+
|
|
60
|
+
Args:
|
|
61
|
+
active_mamba_indices (Tensor): Tensor containing the Mamba slot indices
|
|
62
|
+
for active requests.
|
|
63
|
+
num_active_requests (int): The number of active requests.
|
|
64
|
+
"""
|
|
65
|
+
self.request_to_mamba_state_idx_cudagraph_only[0:num_active_requests] = active_mamba_indices
|
|
66
|
+
|
|
67
|
+
def allocate_slot(self) -> int:
|
|
68
|
+
"""
|
|
69
|
+
Allocates a new slot for a request in the Mamba state buffers.
|
|
70
|
+
|
|
71
|
+
Returns:
|
|
72
|
+
int: The index of the allocated slot.
|
|
73
|
+
Returns None if no slots are available.
|
|
74
|
+
"""
|
|
75
|
+
if self.mamba_state_free_slot_count == 0:
|
|
76
|
+
return None
|
|
77
|
+
|
|
78
|
+
# Get a free slot
|
|
79
|
+
self.mamba_state_free_slot_count -= 1
|
|
80
|
+
mamba_idx = self.mamba_state_free_slots[self.mamba_state_free_slot_count]
|
|
81
|
+
|
|
82
|
+
return mamba_idx
|
|
83
|
+
|
|
84
|
+
def free_slots(self, request_indices: torch.Tensor) -> None:
|
|
85
|
+
"""
|
|
86
|
+
Frees the Mamba state slots associated with the given request indices.
|
|
87
|
+
|
|
88
|
+
Args:
|
|
89
|
+
request_indices (Tensor): A 1D tensor of request indices to free.
|
|
90
|
+
"""
|
|
91
|
+
# Get the Mamba state indices for finished requests
|
|
92
|
+
mamba_indices_to_free = self.request_to_mamba_state_idx[request_indices]
|
|
93
|
+
|
|
94
|
+
# Filter out any invalid indices (e.g., -1)
|
|
95
|
+
mamba_indices_to_free = mamba_indices_to_free[mamba_indices_to_free != -1]
|
|
96
|
+
num_to_free = len(mamba_indices_to_free)
|
|
97
|
+
|
|
98
|
+
if num_to_free > 0:
|
|
99
|
+
# Add the freed indices back to the free slot pool
|
|
100
|
+
start_idx = self.mamba_state_free_slot_count
|
|
101
|
+
end_idx = start_idx + num_to_free
|
|
102
|
+
self.mamba_state_free_slots[start_idx:end_idx] = mamba_indices_to_free
|
|
103
|
+
self.mamba_state_free_slot_count = end_idx
|
|
104
|
+
|
|
105
|
+
# Invalidate the Mamba state index for the finished requests
|
|
106
|
+
self.request_to_mamba_state_idx[request_indices] = -1
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
# Copyright (c) 2025, NVIDIA CORPORATION. All rights reserved.
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class MetadataBase:
|
|
5
|
+
"""
|
|
6
|
+
Base class for attention metadata.
|
|
7
|
+
High-performance attention kernels often require input metadata in specific
|
|
8
|
+
formats—such as cumulative query lengths, cumulative key/value lengths,
|
|
9
|
+
and similar structures. Moreover, when using CUDA Graphs, these metadata
|
|
10
|
+
buffers must be statically allocated. This class serves as a unified container
|
|
11
|
+
that manages all such metadata in one place.
|
|
12
|
+
"""
|
|
13
|
+
|
|
14
|
+
def __init__(self):
|
|
15
|
+
"""
|
|
16
|
+
Initialize the metadata.
|
|
17
|
+
"""
|
|
18
|
+
self.state_data = {}
|
|
19
|
+
|
|
20
|
+
def update(self, *args, **kwargs):
|
|
21
|
+
"""
|
|
22
|
+
Construct the metadata from request states.
|
|
23
|
+
"""
|
|
24
|
+
pass
|
|
25
|
+
|
|
26
|
+
def reset(self):
|
|
27
|
+
"""
|
|
28
|
+
Reset the metadata.
|
|
29
|
+
"""
|
|
30
|
+
pass
|
|
31
|
+
|
|
32
|
+
def tensor_copy_and_pad(
|
|
33
|
+
self,
|
|
34
|
+
tensor_buf,
|
|
35
|
+
unpadded_tensor,
|
|
36
|
+
real_batch_size,
|
|
37
|
+
padded_batch_size,
|
|
38
|
+
is_cumulative_tensor=False,
|
|
39
|
+
pad_value=0,
|
|
40
|
+
):
|
|
41
|
+
"""
|
|
42
|
+
Copy the unpadded tensor to the tensor_buf,
|
|
43
|
+
pad the tensor_buf with zero or the last value of the tensor,
|
|
44
|
+
depending on whether the tensor is cumulative.
|
|
45
|
+
Args:
|
|
46
|
+
tensor_buf: The destination tensor, at least padded_batch_size long.
|
|
47
|
+
unpadded_tensor: The tensor to copy, at least real_batch_size long.
|
|
48
|
+
real_batch_size: The real batch size.
|
|
49
|
+
padded_batch_size: Padded boundary of the tensor.
|
|
50
|
+
is_cumulative_tensor: Whether the tensor is cumulative.
|
|
51
|
+
If True, we pad the tensor_buf with the last value of the unpadded_tensor.
|
|
52
|
+
pad_value: The value to pad the tensor_buf with when the tensor is not cumulative.
|
|
53
|
+
"""
|
|
54
|
+
assert real_batch_size <= padded_batch_size
|
|
55
|
+
assert tensor_buf.shape[0] >= padded_batch_size
|
|
56
|
+
assert unpadded_tensor.shape[0] >= real_batch_size
|
|
57
|
+
if is_cumulative_tensor:
|
|
58
|
+
if real_batch_size == 0:
|
|
59
|
+
value = pad_value
|
|
60
|
+
else:
|
|
61
|
+
value = unpadded_tensor[real_batch_size - 1]
|
|
62
|
+
else:
|
|
63
|
+
value = pad_value
|
|
64
|
+
tensor_buf[0:real_batch_size] = unpadded_tensor[:real_batch_size]
|
|
65
|
+
tensor_buf[real_batch_size:padded_batch_size] = value
|
|
66
|
+
return tensor_buf
|
|
67
|
+
|
|
68
|
+
def __str__(self):
|
|
69
|
+
"""
|
|
70
|
+
Return a string representation of the metadata.
|
|
71
|
+
"""
|
|
72
|
+
return "\n".join([f"{key}: {value}" for key, value in self.state_data.items()])
|