clearml-docs/docs/guides/reporting/clearml_logging_example.md
2024-08-12 16:04:50 +03:00

6.1 KiB

title
Using Logger - Jupyter Notebook

The jupyter_logging_example.ipynb script demonstrates the integration of ClearML's explicit reporting module, Logger, in a Jupyter Notebook. All ClearML explicit reporting works with Jupyter Notebook.

This example includes several types of explicit reporting, including:

  • Scalars
  • Some plots
  • Media.

:::note In the clearml GitHub repository, this example includes a clickable icon to open the notebook in Google Colab. :::

Scalars

To reports scalars, call Logger.report_scalar(). The scalar plots appear in the web UI in SCALARS.

# report two scalar series on two different graphs
for i in range(10):
    logger.report_scalar(title="graph A", series="series A", iteration=i, value=1./(i+1))
    logger.report_scalar(title="graph B", series="series B", iteration=i, value=10./(i+1))

Separate scalar plots

# report two scalar series on the same graph
for i in range(10):
    logger.report_scalar(title="unified graph", series="series A", iteration=i, value=1./(i+1))
    logger.report_scalar(title="unified graph", series="series B", iteration=i, value=10./(i+1))

Unified scalar plots

Plots

Plots appear in PLOTS.

2D Plots

Report 2D scatter plots by calling Logger.report_scatter2d(). Use the mode parameter to plot data points as markers, or both lines and markers.

scatter2d = np.hstack(
    (np.atleast_2d(np.arange(0, 10)).T, np.random.randint(10, size=(10, 1)))
)
# report 2d scatter plot with markers
logger.report_scatter2d(
    title="example_scatter",
    series="series_lines+markers",
    iteration=iteration,
    scatter=scatter2d,
    xaxis="title x",
    yaxis="title y",
    mode='lines+markers'
)

2d scatter plot

3D Plots

To plot a series as a 3D scatter plot, use Logger.report_scatter3d().

# report 3d scatter plot
scatter3d = np.random.randint(10, size=(10, 3))
logger.report_scatter3d(
    title="example_scatter_3d",
    series="series_xyz",
    iteration=iteration,
    scatter=scatter3d,
    xaxis="title x",
    yaxis="title y",
    zaxis="title z",
)

3d scatter plot

To plot a series as a surface plot, use Logger.report_surface().

# report 3d surface
surface = np.random.randint(10, size=(10, 10))
logger.report_surface(
    title="example_surface",
    series="series1",
    iteration=iteration,
    matrix=surface,
    xaxis="title X",
    yaxis="title Y",
    zaxis="title Z",
)

3d surface plot

Confusion Matrices

Report confusion matrices by calling Logger.report_confusion_matrix().

# report confusion matrix
confusion = np.random.randint(10, size=(10, 10))
logger.report_confusion_matrix(
    title="example_confusion",
    series="ignored",
    iteration=iteration,
    matrix=confusion,
    xaxis="title X",
    yaxis="title Y",
)

Confusion matrix

Histograms

Report histograms by calling Logger.report_histogram(). To report more than one series on the same plot, use the same title argument.

# report a single histogram
histogram = np.random.randint(10, size=10)
logger.report_histogram(
    title="single_histogram",
    series="random histogram",
    iteration=iteration,
    values=histogram,
    xaxis="title x",
    yaxis="title y",
)

Histogram

# report a two histograms on the same plot
histogram1 = np.random.randint(13, size=10)
histogram2 = histogram * 0.75
logger.report_histogram(
    title="two_histogram",
    series="series 1",
    iteration=iteration,
    values=histogram1,
    xaxis="title x",
    yaxis="title y",
)
logger.report_histogram(
    title="two_histogram",
    series="series 2",
    iteration=iteration,
    values=histogram2,
    xaxis="title x",
    yaxis="title y",
)

Two histograms in one plot

Media

Report audio, HTML, image, and video by calling Logger.report_media() using the local_path parameter. They appear in DEBUG SAMPLES.

The media for these examples is downloaded using StorageManager.get_local_copy().

For example, to download an image:

image_local_copy = StorageManager.get_local_copy(
    remote_url="https://pytorch.org/tutorials/_static/img/neural-style/picasso.jpg",
    name="picasso.jpg"
)

Audio

logger.report_media(title='audio', series='pink panther', iteration=1, local_path=audio_local_copy)

Audio sample

HTML

logger.report_media(
    title="html", 
    series="url_html", 
    iteration=1, 
    url="https://clear.ml/docs/latest/docs/index.html"
)

HTML sample

Images

logger.report_image(
    title="image", 
    series="image from url", 
    iteration=100, 
    local_path=image_local_copy
)

Image sample

Video

logger.report_media(
    title='video', 
    series='big bunny', 
    iteration=1, 
    local_path=video_local_copy
)

Video sample

Text

Report text messages by calling Logger.report_text().

logger.report_text("hello, this is plain text")

Text report to console