Skip to content

llmcompressor.pipelines.independent.pipeline

IndependentPipeline

Bases: CalibrationPipeline

Source code in llmcompressor/pipelines/independent/pipeline.py
@CalibrationPipeline.register("independent")
class IndependentPipeline(CalibrationPipeline):
    @staticmethod
    def __call__(
        model: torch.nn.Module,
        dataloader: DataLoader,
        dataset_args: "DatasetArguments",
    ):
        """
        Data pipeline where each modifier is assigned its own calibration epoch and data
        pipeline

        :param model: model being calibrated
        :param dataloader: loads data for calibration
        :param dataset_args: dataset arguments relevant to pipelines
        """
        _logger = logger.patch(lambda r: r.update(function="IndependentPipeline"))

        session = active_session()
        modifiers = session.lifecycle.recipe.modifiers
        with patch_attr(session.lifecycle.recipe, "modifiers", None):
            for modifier in modifiers:
                mod_type = type(modifier).__name__
                session.lifecycle.recipe.modifiers = [modifier]
                pipeline = CalibrationPipeline.from_modifiers([modifier])
                pipeline_name = pipeline.__class__.__name__
                _logger.info(f"Inferred `{pipeline_name}` for `{mod_type}`")

                pipeline(model, dataloader, dataset_args)

__call__(model, dataloader, dataset_args) staticmethod

Data pipeline where each modifier is assigned its own calibration epoch and data pipeline

Parameters:

Name Type Description Default
model Module

model being calibrated

required
dataloader DataLoader

loads data for calibration

required
dataset_args DatasetArguments

dataset arguments relevant to pipelines

required
Source code in llmcompressor/pipelines/independent/pipeline.py
@staticmethod
def __call__(
    model: torch.nn.Module,
    dataloader: DataLoader,
    dataset_args: "DatasetArguments",
):
    """
    Data pipeline where each modifier is assigned its own calibration epoch and data
    pipeline

    :param model: model being calibrated
    :param dataloader: loads data for calibration
    :param dataset_args: dataset arguments relevant to pipelines
    """
    _logger = logger.patch(lambda r: r.update(function="IndependentPipeline"))

    session = active_session()
    modifiers = session.lifecycle.recipe.modifiers
    with patch_attr(session.lifecycle.recipe, "modifiers", None):
        for modifier in modifiers:
            mod_type = type(modifier).__name__
            session.lifecycle.recipe.modifiers = [modifier]
            pipeline = CalibrationPipeline.from_modifiers([modifier])
            pipeline_name = pipeline.__class__.__name__
            _logger.info(f"Inferred `{pipeline_name}` for `{mod_type}`")

            pipeline(model, dataloader, dataset_args)