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.