跳到内容

llmcompressor.args.utils

用于解析和处理参数类的实用函数。

提供辅助函数,用于将命令行参数和配置字典解析为 LLM 压缩工作流中使用的结构化参数数据类。处理参数验证、弃用警告和处理器解析。

函数

  • parse_args

    oneshottrain 传入的关键字参数将

parse_args

parse_args(
    **kwargs,
) -> tuple[
    ModelArguments,
    DatasetArguments,
    RecipeArguments | None,
    str | None,
]

oneshottrain 传入的关键字参数将把参数分成以下几类:

* ModelArguments in
    src/llmcompressor/args/model_args.py
* DatasetArguments in
    src/llmcompressor/args/dataset_args.py
* RecipeArguments in
    src/llmcompressor/args/recipe_args.py

用于 oneshot 的 ModelArguments、DatasetArguments 和 RecipeArguments。

源代码位于 llmcompressor/args/utils.py
def parse_args(
    **kwargs,
) -> tuple[
    ModelArguments,
    DatasetArguments,
    RecipeArguments | None,
    str | None,
]:
    """
    Keyword arguments passed in from `oneshot` or `train` will
    separate the arguments into the following:

        * ModelArguments in
            src/llmcompressor/args/model_args.py
        * DatasetArguments in
            src/llmcompressor/args/dataset_args.py
        * RecipeArguments in
            src/llmcompressor/args/recipe_args.py

    ModelArguments, DatasetArguments, and RecipeArguments used for
    oneshot.

    """
    output_dir = kwargs.pop("output_dir", None)

    parser_args = (ModelArguments, DatasetArguments, RecipeArguments)
    parser = HfArgumentParser(parser_args)
    parsed_args = parser.parse_dict(kwargs)

    model_args, dataset_args, recipe_args = parsed_args

    if recipe_args.recipe_args is not None:
        if not isinstance(recipe_args.recipe_args, dict):
            arg_dict = {}
            for recipe_arg in recipe_args.recipe_args:
                key, value = recipe_arg.split("=")
                arg_dict[key] = value
            recipe_args.recipe_args = arg_dict

    # raise depreciation warnings
    if dataset_args.remove_columns is not None:
        logger.warning(
            "`remove_columns` argument is depreciated. When tokenizing datasets, all "
            "columns which are invalid inputs the tokenizer will be removed",
            DeprecationWarning,
        )

    # silently assign tokenizer to processor
    resolve_processor_from_model_args(model_args)

    return model_args, dataset_args, recipe_args, output_dir