bridge.models.conversion.modelopt_utils#
Module Contents#
Classes#
ModelOpt quantization metadata for one Megatron parameter. |
|
Minimal quantizer interface for ModelOpt activation-scale export. |
|
CPU-only quantizer state needed by ModelOpt’s canonical scale export. |
|
Use expert TP while leaving the expert dimension local. |
|
Build one E/EP-local expert batch without a BF16 EP gather. |
|
Fuse gate/up locally without a BF16 EP gather. |
Functions#
Return whether a parameter name matches any ModelOpt ignore pattern. |
|
Return whether an exported HF tensor name should be ModelOpt-quantized. |
|
Find the enabled weight quantizer and owning module for |
|
Read the raw global amax without deriving a scale on its CUDA device. |
|
Run ModelOpt’s quantizer-specific global-scale derivation on CPU. |
|
Return the raw TP process group attached to a ModelOpt quantized module. |
|
MAX-reduce one per-tensor quantization value over its owning TP group. |
|
Slice fused |
|
Yield all synced per-expert metadata entries for a grouped export task. |
|
Map Megatron ModelOpt metadata onto exported Hugging Face names. |
|
Build metadata for selected local expert batches before EP gathering. |
|
Collect ModelOpt quantization metadata from conversion task modules. |
|
Synchronize ModelOpt quantization metadata across a distributed group. |
|
Compute the NVFP4 per-block weight scale tensor for ModelOpt export. |
|
Compute a static NVFP4 activation scale from synchronized input amax. |
|
Shape static activation scales for dense and fused-MoE vLLM loaders. |
|
Yield NVFP4 quantized weight tensors and associated scale tensors. |
|
Return the ModelOpt quantization format and exporter for a quantization mode. |
|
Remove a resolved expert index and terminal weight suffix from an HF name. |
|
Merge two projection leaves while preserving their common underscore suffix. |
|
Build a fused local-expert mapping for ModelOpt expert projections. |
|
Move a CPU tensor to CUDA only when its collective backend requires it. |
|
Prepare mapped conversion tasks and hooks for a ModelOpt export. |
Data#
API#
- bridge.models.conversion.modelopt_utils.HFExportHook#
None
- bridge.models.conversion.modelopt_utils._NVFP4_AMAX_DENOMINATOR#
None
- bridge.models.conversion.modelopt_utils._NVFP4_MAXBOUND#
6.0
- bridge.models.conversion.modelopt_utils._FP8_E4M3_MIN#
None
- bridge.models.conversion.modelopt_utils._FP8_E4M3_MAX#
448.0
- bridge.models.conversion.modelopt_utils._QUANT_IGNORE_NAME_SUFFIXES#
(‘.weight’, ‘.weight_scale’, ‘.weight_scale_2’)
- bridge.models.conversion.modelopt_utils._EXPERT_NUMBER_PATTERNS#
()
- bridge.models.conversion.modelopt_utils._FUSED_MOE_NVFP4_NAME_MAP#
None
- class bridge.models.conversion.modelopt_utils.QuantMeta#
ModelOpt quantization metadata for one Megatron parameter.
- qformat: str#
None
- block_size: int#
None
- weight_amax: torch.Tensor | None#
None
- weight_scale_2: torch.Tensor | None#
None
- input_amax: torch.Tensor | None#
None
- class bridge.models.conversion.modelopt_utils._Nvfp4InputQuantizerView#
Minimal quantizer interface for ModelOpt activation-scale export.
- input_amax: torch.Tensor#
None
- is_enabled: bool#
True
- maxbound: float#
None
- export_amax() torch.Tensor#
- class bridge.models.conversion.modelopt_utils._Nvfp4WeightQuantizerView#
CPU-only quantizer state needed by ModelOpt’s canonical scale export.
- _amax: torch.Tensor#
None
- block_sizes: object | None#
None
- bridge.models.conversion.modelopt_utils._iter_quant_ignore_name_candidates(name: str) Iterator[str]#
- bridge.models.conversion.modelopt_utils.matches_quant_ignore_pattern(name: str, patterns: list[str]) bool#
Return whether a parameter name matches any ModelOpt ignore pattern.
- bridge.models.conversion.modelopt_utils.is_modelopt_quantizable_weight_name(name: str) bool#
Return whether an exported HF tensor name should be ModelOpt-quantized.
- bridge.models.conversion.modelopt_utils._is_same_tensor(param_weight: object, weight: object) bool#
- bridge.models.conversion.modelopt_utils._iter_modelopt_weight_quantizers(
- module: torch.nn.Module,
- bridge.models.conversion.modelopt_utils._is_enabled_quantizer(quantizer: object) bool#
- bridge.models.conversion.modelopt_utils.find_modelopt_weight_quantizer_and_module(
- module: torch.nn.Module,
- param_weight: object,
Find the enabled weight quantizer and owning module for
param_weight.
- bridge.models.conversion.modelopt_utils._with_quant_meta_tensors(
- meta: bridge.models.conversion.modelopt_utils.QuantMeta,
- *,
- weight_amax: torch.Tensor | None,
- weight_scale_2: torch.Tensor | None,
- bridge.models.conversion.modelopt_utils._clone_cpu(value: torch.Tensor | None) torch.Tensor | None#
- bridge.models.conversion.modelopt_utils._clone_positive_cpu(value: torch.Tensor | None) torch.Tensor | None#
- bridge.models.conversion.modelopt_utils._get_modelopt_weight_amax(
- weight_quantizer: object,
Read the raw global amax without deriving a scale on its CUDA device.
- bridge.models.conversion.modelopt_utils._compute_modelopt_weight_scale_2_cpu(
- weight_amax: torch.Tensor | None,
- weight_quantizer: object,
Run ModelOpt’s quantizer-specific global-scale derivation on CPU.
- bridge.models.conversion.modelopt_utils._get_modelopt_tp_process_group(module: object) object | None#
Return the raw TP process group attached to a ModelOpt quantized module.
- bridge.models.conversion.modelopt_utils._max_reduce_modelopt_tp_scalar(
- value: torch.Tensor | None,
- module: object,
- field_name: str,
MAX-reduce one per-tensor quantization value over its owning TP group.
- bridge.models.conversion.modelopt_utils._slice_optional_quant_tensor(
- value: torch.Tensor | None,
- split: slice,
- leading_dim: int,
- bridge.models.conversion.modelopt_utils._slice_gated_quant_meta(
- meta: bridge.models.conversion.modelopt_utils.QuantMeta,
- hf_key: str,
Slice fused
[gate; up]metadata to match a split HF tensor.
- bridge.models.conversion.modelopt_utils._stack_optional_quant_tensors(
- values: list[torch.Tensor | None],
- *,
- hf_name: str,
- field_name: str,
- bridge.models.conversion.modelopt_utils._stack_grouped_quant_meta(
- hf_name: str,
- expert_meta: dict[int, bridge.models.conversion.modelopt_utils.QuantMeta],
- bridge.models.conversion.modelopt_utils._expert_param_template(param_name: str) str | None#
- bridge.models.conversion.modelopt_utils._iter_grouped_quant_meta(
- task: megatron.bridge.models.conversion.model_bridge.WeightConversionTask,
- metadata: dict[str, bridge.models.conversion.modelopt_utils.QuantMeta],
Yield all synced per-expert metadata entries for a grouped export task.
- bridge.models.conversion.modelopt_utils.build_hf_modelopt_quant_metadata(
- conversion_tasks: list[megatron.bridge.models.conversion.model_bridge.WeightConversionTask],
- metadata: dict[str, bridge.models.conversion.modelopt_utils.QuantMeta],
Map Megatron ModelOpt metadata onto exported Hugging Face names.
- bridge.models.conversion.modelopt_utils._build_hf_modelopt_pre_ep_quant_metadata(
- conversion_tasks: list[megatron.bridge.models.conversion.model_bridge.WeightConversionTask],
- metadata: dict[str, bridge.models.conversion.modelopt_utils.QuantMeta],
Build metadata for selected local expert batches before EP gathering.
- bridge.models.conversion.modelopt_utils.collect_modelopt_quant_metadata(
- conversion_tasks: list[megatron.bridge.models.conversion.model_bridge.WeightConversionTask],
Collect ModelOpt quantization metadata from conversion task modules.
- bridge.models.conversion.modelopt_utils.sync_modelopt_quant_metadata(
- metadata: dict[str, bridge.models.conversion.modelopt_utils.QuantMeta],
- group=None,
Synchronize ModelOpt quantization metadata across a distributed group.
- bridge.models.conversion.modelopt_utils._reshape_nvfp4_weight_scale_2_for_compute(
- weight: torch.Tensor,
- weight_scale_2: torch.Tensor,
- bridge.models.conversion.modelopt_utils.compute_nvfp4_weight_scale(
- weight: torch.Tensor,
- block_size: int,
- weight_amax: torch.Tensor | None = None,
- weight_scale_2: torch.Tensor | None = None,
Compute the NVFP4 per-block weight scale tensor for ModelOpt export.
- bridge.models.conversion.modelopt_utils.compute_nvfp4_input_scale(
- input_amax: torch.Tensor | None,
Compute a static NVFP4 activation scale from synchronized input amax.
- bridge.models.conversion.modelopt_utils._nvfp4_export_names(name: str) tuple[str, str, str, str]#
- bridge.models.conversion.modelopt_utils._format_nvfp4_weight_scale_2_for_export(
- source_name: str,
- weight_name: str,
- weight: torch.Tensor,
- weight_scale_2: torch.Tensor,
- bridge.models.conversion.modelopt_utils._format_nvfp4_input_scale_for_export(
- source_name: str,
- weight_name: str,
- weight: torch.Tensor,
- input_scale: torch.Tensor,
Shape static activation scales for dense and fused-MoE vLLM loaders.
- bridge.models.conversion.modelopt_utils.quantize_nvfp4_weight(
- name: str,
- weight: torch.Tensor,
- meta: bridge.models.conversion.modelopt_utils.QuantMeta,
Yield NVFP4 quantized weight tensors and associated scale tensors.
- bridge.models.conversion.modelopt_utils.get_modelopt_quant_exporter(quant_mode: str)#
Return the ModelOpt quantization format and exporter for a quantization mode.
- bridge.models.conversion.modelopt_utils._grouped_expert_projection_name(
- hf_name: str,
Remove a resolved expert index and terminal weight suffix from an HF name.
- bridge.models.conversion.modelopt_utils._fuse_grouped_projection_names(
- gate_name: str,
- up_name: str,
Merge two projection leaves while preserving their common underscore suffix.
- class bridge.models.conversion.modelopt_utils._LocalExpertMappingMixin#
Use expert TP while leaving the expert dimension local.
- property tp_group#
- property is_expert: bool#
- class bridge.models.conversion.modelopt_utils._LocalExpertColumnMapping#
Bases:
bridge.models.conversion.modelopt_utils._LocalExpertMappingMixin,megatron.bridge.models.conversion.param_mapping.ColumnParallelMapping
- class bridge.models.conversion.modelopt_utils._LocalExpertRowMapping#
Bases:
bridge.models.conversion.modelopt_utils._LocalExpertMappingMixin,megatron.bridge.models.conversion.param_mapping.RowParallelMapping
- class bridge.models.conversion.modelopt_utils._LocalExpertReplicatedMapping#
Bases:
bridge.models.conversion.modelopt_utils._LocalExpertMappingMixin,megatron.bridge.models.conversion.param_mapping.ReplicatedMapping
- class bridge.models.conversion.modelopt_utils._LocalExpertGatedMLPMapping#
Bases:
bridge.models.conversion.modelopt_utils._LocalExpertMappingMixin,megatron.bridge.models.conversion.param_mapping.GatedMLPMapping
- class bridge.models.conversion.modelopt_utils._ModelOptFusedExpertMapping#
Bases:
megatron.bridge.models.conversion.param_mapping.FusedExpertMappingBuild one E/EP-local expert batch without a BF16 EP gather.
- is_grouped_export#
False
- is_modelopt_pre_ep_export#
True
- _get_or_create_mapping(parallelism_type: str)#
- class bridge.models.conversion.modelopt_utils._ModelOptFusedGatedExpertMapping(
- megatron_param: str,
- hf_param: str,
- permute_dims: tuple[int, ...] | None = None,
- transpose_on_export: bool = False,
Bases:
megatron.bridge.models.conversion.param_mapping.FusedGatedExpertMappingFuse gate/up locally without a BF16 EP gather.
Initialization
- is_grouped_export#
False
- is_modelopt_pre_ep_export#
True
- bridge.models.conversion.modelopt_utils._modelopt_pre_ep_mapping(
- mapping: Any,
- pg_collection: Any = None,
Build a fused local-expert mapping for ModelOpt expert projections.
- bridge.models.conversion.modelopt_utils._stage_tensor_for_collective(
- tensor: torch.Tensor,
- group: Any,
Move a CPU tensor to CUDA only when its collective backend requires it.
- bridge.models.conversion.modelopt_utils._compose_export_hooks(
- exporter: bridge.models.conversion.modelopt_utils.HFExportHook,
- finalizer: bridge.models.conversion.modelopt_utils.HFExportHook | None,
- bridge.models.conversion.modelopt_utils.build_modelopt_export_plan(
- conversion_tasks: list[megatron.bridge.models.conversion.model_bridge.WeightConversionTask],
- *,
- model: list[torch.nn.Module],
- bridge: megatron.bridge.models.conversion.model_bridge.MegatronModelBridge,
- quant_mode: str,
- ignore_patterns: list[str],
Prepare mapped conversion tasks and hooks for a ModelOpt export.