Using File-Based Tracking
Rather than logging to an external backend like MLflow or W&B, file based trackers write to local files.
Minimal Pipeline Example with CSV
A CSV log file can be generated with the following:
from pykeen.pipeline import pipeline
pipeline_result = pipeline(
model="RotatE",
dataset="Kinships",
result_tracker="csv",
)
It is placed in a subdirectory of pystow default data directory with PyKEEN called logs, which will likely be
at ~/.data/pykeen/logs/ on your system. The file is named based on the current time.
Specifying a Name
If you want to specify the name of the log file in the default directory, use the name keyword argument like:
from pykeen.pipeline import pipeline
pipeline_result = pipeline(
model="RotatE",
dataset="Kinships",
result_tracker="csv",
result_tracker_kwargs=dict(
name="test.csv",
),
)
Additional keyword arguments are passed through to the csv.writer(). This can include a delimiter,
dialect, quotechar, etc.
Warning
If you specify the file name, it will overwrite the previous log file there.
The path argument can be used instead of the name to specify an absolute path to the log file rather than using
the PyStow directory.
Combining with tail
If you know the name of a file, you can monitor it with tail and the -f flag like in:
$ tail -f ~/data/pykeen/logs/test.csv | grep "hits_at_10"
Pipeline Example with JSON
The JSON writer creates a JSONL file on which each line is a valid JSON object. Similarly to the CSV writer, the
name argument can be omitted to create a time-based file name or given to pick the default name. The path
argument can still be used to specify an absolute path.
from pykeen.pipeline import pipeline
pipeline_result = pipeline(
model="RotatE",
dataset="Kinships",
result_tracker="json",
result_tracker_kwargs=dict(
name="test.json",
),
)
The same concepts can be applied in the HPO pipeline as in the previous tracker tutorials. Additional documentation of
the valid keyword arguments can be found under pykeen.trackers.CSVResultTracker and
pykeen.trackers.JSONResultTracker.