# Manejadores de Kwargs

Los siguientes objetos se pueden pasar al [Accelerator](/docs/accelerate/main/es/package_reference/accelerator#accelerate.Accelerator) principal para personalizar cómo se crean algunos objetos de PyTorch relacionados con el entrenamiento distribuido o la precisión mixta.

## AutocastKwargs[[accelerate.AutocastKwargs]]

#### accelerate.AutocastKwargs[[accelerate.AutocastKwargs]]

```python
accelerate.AutocastKwargs(enabled: bool = True, cache_enabled: bool | None = None)
```

[Fuente](https://github.com/huggingface/accelerate/blob/main/src/accelerate/utils/dataclasses.py#L109)

Use este objeto en su [Accelerator](/docs/accelerate/main/es/package_reference/accelerator#accelerate.Accelerator) para personalizar el comportamiento de `torch.autocast`. Consulte la documentación de este [context manager](https://pytorch.org/docs/stable/amp.html#torch.autocast) para obtener más información sobre cada argumento.

Ejemplo:

```python
from accelerate import Accelerator
from accelerate.utils import AutocastKwargs

kwargs = AutocastKwargs(cache_enabled=True)
accelerator = Accelerator(kwargs_handlers=[kwargs])
```

## DistributedDataParallelKwargs[[accelerate.DistributedDataParallelKwargs]]

#### accelerate.DistributedDataParallelKwargs[[accelerate.DistributedDataParallelKwargs]]

```python
accelerate.DistributedDataParallelKwargs(dim: int = 0, broadcast_buffers: bool = True, bucket_cap_mb: int = 25, find_unused_parameters: bool = False, check_reduction: bool = False, gradient_as_bucket_view: bool = False, static_graph: bool = False, comm_hook: DDPCommunicationHookType = <DDPCommunicationHookType.NO: 'no'>, comm_wrapper: typing.Literal[<DDPCommunicationHookType.NO: 'no'>, <DDPCommunicationHookType.FP16: 'fp16'>, <DDPCommunicationHookType.BF16: 'bf16'>] = <DDPCommunicationHookType.NO: 'no'>, comm_state_option: dict = <factory>)
```

[Fuente](https://github.com/huggingface/accelerate/blob/main/src/accelerate/utils/dataclasses.py#L151)

Use este objeto en su [Accelerator](/docs/accelerate/main/es/package_reference/accelerator#accelerate.Accelerator) para personalizar cómo se envuelve su modelo en un `torch.nn.parallel.DistributedDataParallel`. Consulte la documentación de este [wrapper](https://pytorch.org/docs/stable/generated/torch.nn.parallel.DistributedDataParallel.html) para obtener más información sobre cada argumento.

Ejemplo:

```python
from accelerate import Accelerator
from accelerate.utils import DistributedDataParallelKwargs

kwargs = DistributedDataParallelKwargs(find_unused_parameters=True)
accelerator = Accelerator(kwargs_handlers=[kwargs])
```

## ProfileKwargs[[accelerate.ProfileKwargs]]

#### accelerate.ProfileKwargs[[accelerate.ProfileKwargs]]

```python
accelerate.ProfileKwargs(activities: list[typing.Literal['cpu', 'xpu', 'mtia', 'cuda', 'hpu']] | None = None, schedule_option: dict[str, int] | None = None, on_trace_ready: typing.Callable | None = None, record_shapes: bool = False, profile_memory: bool = False, with_stack: bool = False, with_flops: bool = False, with_modules: bool = False, output_trace_dir: str | None = None)
```

[Fuente](https://github.com/huggingface/accelerate/blob/main/src/accelerate/utils/dataclasses.py#L421)

**Parámetros:**

activities (`List[str]`, *opcional*, valor predeterminado `None`) : La lista de grupos de actividad a utilizar en el perfilado. Debe ser uno de `"cpu"`, `"xpu"`, `"mtia"`, "hpu" o `"cuda"`.

schedule_option (`Dict[str, int]`, *opcional*, valor predeterminado `None`) : La opción de programación a utilizar para el perfilador. Las claves disponibles son `wait`, `warmup`, `active`, `repeat` y `skip_first`. El perfilador omitirá los primeros `skip_first` pasos, luego esperará `wait` pasos, después realizará el calentamiento durante los siguientes `warmup` pasos, luego hará la grabación activa durante los siguientes `active` pasos y después repetirá el ciclo comenzando con `wait` pasos. El número opcional de ciclos se especifica con el parámetro `repeat`; el valor cero significa que los ciclos continuarán hasta que finalice el perfilado.

on_trace_ready (`Callable`, *opcional*, valor predeterminado `None`) : Callable que se invoca en cada paso cuando el schedule devuelve `ProfilerAction.RECORD_AND_SAVE` durante el perfilado.

record_shapes (`bool`, *opcional*, por defecto `False`) : Guarda información sobre las formas de entrada de los operadores.

profile_memory (`bool`, *opcional*, por defecto `False`) : Rastrear la asignación/liberación de memoria de tensores

with_stack (`bool`, *opcional*, por defecto `False`) : Registra la información de origen (archivo y número de línea) de las operaciones.

with_flops (`bool`, *opcional*, por defecto `False`) : Utiliza una fórmula para estimar los FLOPS de operadores específicos

with_modules (`bool`, *opcional*, por defecto `False`) : Registra la jerarquía de módulos (incluidos los nombres de funciones) correspondiente a la pila de llamadas del op.

output_trace_dir (`str`, *opcional*, valor predeterminado `None`) : Exporta la traza recopilada en formato JSON de Chrome. Chrome utiliza la vista 'chrome://tracing' para ver archivos json. El valor predeterminado es None, lo que significa que el perfilado no almacena archivos json.

Use este objeto en su [Accelerator](/docs/accelerate/main/es/package_reference/accelerator#accelerate.Accelerator) para personalizar la inicialización del perfilador. Consulte la documentación de este [context manager](https://pytorch.org/docs/stable/profiler.html#torch.profiler.profile) para obtener más información sobre cada argumento.

Ejemplo:

```python
from accelerate import Accelerator
from accelerate.utils import ProfileKwargs

kwargs = ProfileKwargs(activities=["cpu", "cuda"])
accelerator = Accelerator(kwargs_handlers=[kwargs])
```

#### build[[accelerate.ProfileKwargs.build]]

```python
build()
```

[Fuente](https://github.com/huggingface/accelerate/blob/main/src/accelerate/utils/dataclasses.py#L503)

**Devuelve:** `torch.profiler.profile`

El objeto del perfilador.

Cree un objeto de perfilador con la configuración actual.

## GradScalerKwargs[[accelerate.GradScalerKwargs]]

#### accelerate.GradScalerKwargs[[accelerate.GradScalerKwargs]]

```python
accelerate.GradScalerKwargs(init_scale: float = 65536.0, growth_factor: float = 2.0, backoff_factor: float = 0.5, growth_interval: int = 2000, enabled: bool = True)
```

[Fuente](https://github.com/huggingface/accelerate/blob/main/src/accelerate/utils/dataclasses.py#L229)

Use este objeto en su [Accelerator](/docs/accelerate/main/es/package_reference/accelerator#accelerate.Accelerator) para personalizar el comportamiento de la precisión mixta, específicamente cómo se crea el `torch.amp.GradScaler` o `torch.cuda.amp.GradScaler` que se utiliza. Consulte la documentación de este [scaler](https://pytorch.org/docs/stable/amp.html?highlight=gradscaler) para obtener más información sobre cada argumento.

Ejemplo:

```python
from accelerate import Accelerator
from accelerate.utils import GradScalerKwargs

kwargs = GradScalerKwargs(backoff_factor=0.25)
accelerator = Accelerator(kwargs_handlers=[kwargs])
```

## InitProcessGroupKwargs[[accelerate.InitProcessGroupKwargs]]

#### accelerate.InitProcessGroupKwargs[[accelerate.InitProcessGroupKwargs]]

```python
accelerate.InitProcessGroupKwargs(backend: str | None = 'nccl', init_method: str | None = None, timeout: datetime.timedelta | None = None)
```

[Fuente](https://github.com/huggingface/accelerate/blob/main/src/accelerate/utils/dataclasses.py#L254)

Use este objeto en su [Accelerator](/docs/accelerate/main/es/package_reference/accelerator#accelerate.Accelerator) para personalizar la inicialización de los procesos distribuidos. Consulte la documentación de este [método](https://pytorch.org/docs/stable/distributed.html#torch.distributed.init_process_group) para obtener más información sobre cada argumento.

Nota: Si `timeout` se establece en `None`, el valor predeterminado se basará en cómo se configure `backend`.

```python
from datetime import timedelta
from accelerate import Accelerator
from accelerate.utils import InitProcessGroupKwargs

kwargs = InitProcessGroupKwargs(timeout=timedelta(seconds=800))
accelerator = Accelerator(kwargs_handlers=[kwargs])
```

## KwargsHandler[[accelerate.utils.KwargsHandler]]

#### accelerate.utils.KwargsHandler[[accelerate.utils.KwargsHandler]]

```python
accelerate.utils.KwargsHandler()
```

[Fuente](https://github.com/huggingface/accelerate/blob/main/src/accelerate/utils/dataclasses.py#L64)

Mixin interno que implementa un método `to_kwargs()` para un dataclass.

#### to_kwargs[[accelerate.utils.KwargsHandler.to_kwargs]]

```python
to_kwargs()
```

[Fuente](https://github.com/huggingface/accelerate/blob/main/src/accelerate/utils/dataclasses.py#L72)

Devuelve un diccionario que contiene los atributos con valores diferentes de los valores predeterminados de esta clase.

