def my_get_peft_config()

in scripts/ft_gemma3n_image_trl.py [0:0]


def my_get_peft_config(model_args: ModelConfig):
    """A version of get_peft_config that handles comma-separated target modules"""
    if model_args.use_peft is False:
        return None

    # Import here to avoid issues if PEFT is not available
    try:
        from peft import LoraConfig
    except ImportError:
        raise ValueError(
            "You need to have PEFT library installed in your environment, make sure to install `peft`. "
            "Make sure to run `pip install -U peft`."
        )

    # Fix the target_modules to be a list if it's a comma-separated string
    target_modules = model_args.lora_target_modules
    if isinstance(target_modules, str) and target_modules != "all-linear":
        # Convert comma-separated string to list
        target_modules = [module.strip() for module in target_modules.split(",")]

    peft_config = LoraConfig(
        task_type=model_args.lora_task_type,
        r=model_args.lora_r,
        target_modules=target_modules,
        lora_alpha=model_args.lora_alpha,
        lora_dropout=model_args.lora_dropout,
        bias="none",
        use_rslora=model_args.use_rslora,
        use_dora=model_args.use_dora,
        modules_to_save=model_args.lora_modules_to_save,
    )

    return peft_config