mirror of
https://github.com/clearml/clearml-docs
synced 2025-01-31 06:27:22 +00:00
128 lines
5.5 KiB
Markdown
128 lines
5.5 KiB
Markdown
---
|
|
title: Accelerate
|
|
---
|
|
|
|
Hugging Face's [Accelerate](https://huggingface.co/docs/accelerate/main/en/index) library simplifies DL model training
|
|
and inference. ClearML is a supported tracker in Accelerate: It automatically logs experiment environment information,
|
|
such as required packages and uncommitted changes, and supports reporting scalars, parameters, debug samples, and plots.
|
|
|
|
|
|
## Setup
|
|
|
|
To use Accelerate's ClearML tracker, make sure that `clearml` is [installed and set up](../getting_started/ds/ds_first_steps.md#install-clearml)
|
|
in your environment, and use the `log_with` parameter when instantiating an `Accelerator`:
|
|
|
|
```python
|
|
from accelerate import Accelerator
|
|
|
|
accelerator = Accelerator(log_with="all") # For all available trackers in the environment
|
|
accelerator = Accelerator(log_with="clearml") # For the ClearML tracker only
|
|
```
|
|
|
|
Add `Accelerator.init_trackers()` in the beginning of your experiment. Specify the project where the ClearML task should
|
|
be saved in the `project_name` parameter, and add any experiment hyperparameters to be logged in the `config` parameter.
|
|
|
|
The following code initializes the ClearML Task, which will capture all environment details, such as required packages
|
|
and uncommitted code. The logged hyperparameters are displayed in the experiment's **Hyperparameters** tab:
|
|
|
|
|
|
```python
|
|
hps = {"lr": 0.03, "num_epochs": 3, "seed": 42, "batch_size": 64, "image_size": 224}
|
|
accelerator.init_trackers(project_name="my_project", config=hps)
|
|
```
|
|
|
|
:::tip
|
|
You can also pass parameters to [`Task.init()`](../references/sdk/task.md#taskinit) by adding a nested dictionary
|
|
to the `init_kwargs` argument of `Accelerator.init_trackers()`: use `"clearml"` as the key, and a dictionary of
|
|
parameter-name/parameter-value pairs as the value. For example, the following code adds tags to your task:
|
|
|
|
```python
|
|
accelerator.init_trackers(
|
|
project_name="my_project",
|
|
configs=hp,
|
|
init_kwargs={"clearml": {"tags": ["tag_a", "tag_b"]}}
|
|
)
|
|
```
|
|
:::
|
|
|
|
![Accelerate params](../img/integrations_accelerate_params.png)
|
|
|
|
## Logging
|
|
|
|
### Scalars
|
|
To log scalars use `Accelerator.log()`. Specify a dictionary of name-value pairs under `values` and the step number
|
|
under `step`.
|
|
|
|
Within the `values` dictionary, the name in each name-value pair is a string representing the title (metric) and series
|
|
(variant) of the scalar. The `eval_`, `test_`, or `train_` name prefixes, will cause the scalar to be logged under the
|
|
corresponding `eval`, `test`, or `train` title, and the remaining part of the name will be logged as the series. If none
|
|
of these prefixes is used, the entire string is used as the series, and the title will default to `train`.
|
|
|
|
If `step` is not specified, the scalar is reported as a single-value scalar.
|
|
|
|
```python
|
|
accelerator.log(values={"accuracy": accuracy}, step=epoch)
|
|
```
|
|
|
|
The scalars are displayed in the experiment's **Scalars** tab.
|
|
|
|
### Images and Table Plots
|
|
To add images or table plots to your experiment, you can use the `ClearMLTracker.log_images()` and `ClearMLTracker.log_table()`
|
|
respectively.
|
|
|
|
First instantiate the `ClearMLTracker`. If you have run `Accelerator.init_trackers()` in your script, that means a ClearML
|
|
task has already been initialized, so anything logged through the tracker will be logged to the existing task.
|
|
Otherwise, just specify the experiment name under `run_name` and any kwargs to pass to
|
|
[`Task.init()`](../references/sdk/task.md#taskinit):
|
|
|
|
```python
|
|
from accelerate.tracking import ClearMLTracker
|
|
|
|
clearml_tracker= ClearMLTracker(run_name="Example experiment")
|
|
```
|
|
|
|
#### Logging Images
|
|
To log images, use `ClearMLTracker.log_images()`. Specify a dictionary of name-image pairs under `values` and the step
|
|
number under `step`.
|
|
|
|
Within the `values` dictionary, the name in each name-image pair should be a string representing the title (metric) and
|
|
series (variant) of the image. The `eval_`, `test_`, or `train_` name prefixes, will cause the image to be logged under
|
|
the corresponding `eval`, `test`, or `train` title, and the remaining part of the name will be logged as the series.
|
|
If none of these prefixes is used, the entire string is used as the series, and the title will default to `train`. The
|
|
image in the name-image pair should be either a numpy array or a `PIL.Image` object.
|
|
|
|
```python
|
|
clearml_tracker.log_images(values={"test_cat_siamese":[image_obect]})
|
|
```
|
|
|
|
The images will be displayed in the experiment's **Debug Samples**
|
|
|
|
#### Logging Plots
|
|
|
|
To log plots, use `ClearMLTracker.log_table()`. Specify the data under the `dataframe` or `data` parameters. List the
|
|
name of the columns under `columns`, otherwise the first entry in `data` will be used as the column names.
|
|
|
|
The plot will appear in the experiment's **Plots** tab.
|
|
|
|
### Additional Logging Options
|
|
|
|
To augment its automatic logging, ClearML also provides an explicit logging interface.
|
|
|
|
See more information about explicitly logging information to a ClearML Task:
|
|
* [Models](../clearml_sdk/model_sdk.md#manually-logging-models)
|
|
* [Configuration](../clearml_sdk/task_sdk.md#configuration) (e.g. parameters, configuration files)
|
|
* [Artifacts](../clearml_sdk/task_sdk.md#artifacts) (e.g. output files or python objects created by a task)
|
|
* [Scalars](../clearml_sdk/task_sdk.md#scalars)
|
|
* [Text/Plots/Debug Samples](../fundamentals/logger.md#manual-reporting)
|
|
|
|
See [Explicit Reporting Tutorial](../guides/reporting/explicit_reporting.md).
|
|
|
|
## Close Task
|
|
|
|
Once you've finished training, make sure to run `Accelerator.end_training()` so that ClearML can mark the task as
|
|
completed.
|
|
|
|
```python
|
|
accelerator.end_training()
|
|
```
|