Logging artifacts#
To log artifacts that are not of kind model or dataset, use the log_artifact()
method.
You can apply this method to the project object or the context object when logging an artifact in runtime, for example a job.
In this section
See also
Basic logging of an artifacts file#
log_artifact
can be used to log many kinds of files, for example html
,pkl
and more. This is the most general method of logging artifacts.
Tip
Each object type requires a different way to convert it for logging the object to a file. This is just an example of one type.
To log an artifacts file, specify the local file path to the file using the local_path
, or use the body
to dump the object content.
Log with local path
with open("file.txt", "w") as f:
f.write("abc is 123")
project.log_artifact(
"file-example",
local_path="file.txt",
labels={"Test": "label-test"},
)
Log with body
project.log_artifact(
"some-data",
body=b"abc is 123",
format="txt",
labels={"Test": "label-test"},
)
Log a Plotly object as an HTML file#
This example illustrates logging a Plotly figure using log_artifact
as an html
file:
import plotly.graph_objects as go
import numpy as np
# Create a Sin(x) Graph
x = np.linspace(0, 10, 100)
y = np.sin(x)
# Create a Plotly figure
fig = go.Figure()
# Add a line trace to the figure
fig.add_trace(go.Scatter(x=x, y=y, mode="lines", name="Sin(x)"))
# Update layout
fig.update_layout(
title="Sin(x) Plot", xaxis_title="x", yaxis_title="sin(x)", template="plotly_dark"
)
project.log_artifact(
"plotly-artifact",
body=fig.to_html(), # convert object for logging an html file
format="html",
)
Logging Plotly artifacts#
This example illustrates using MLRun to convert and handle the object:
# Use mlrun to convert the python object
plotly_artifact = mlrun.artifacts.PlotlyArtifact(figure=fig, key="sin_x")
# Log the artifact
context.log_artifact(plotly_artifact)
Logging directory artifacts#
When using log_artifact
to log a directory, by default:
The artifact is logged as an
mlrun.artifacts.DirArtifact
object.The files are not uploaded. If you want to upload the files, set
upload=True
.
project.log_artifact(
"artifact-directory-testing",
local_path="./artifact_directory/",
labels={"Dir": "dir-example"},
)