Repository: pykeen/pykeen
Issue: ResultTracker class has no option for logging tags related to the project
Root cause: Unimplemented Feature Gap

**Is your feature request related to a problem? Please describe.**
When training a model and tracking results, apart from model parameters and metric, I want to add tags (as in MLflow), which would contain the details about data versioning - to ensure reproducibilty. Currently there is no mechanism for the and I have to resort back to use MLflow directly.  

**Describe the solution you'd like**
A method should be added in the Base ResultTracker class:
def log_tags which takes in a dictionary add this info to MLflow

**Describe alternatives you've considered**
Initially I was Using MLflow directly. Now I am trying to create a patch to the file.

**Additional context**
Add any other context or screenshots about the feature request here.


I can work on the issue if you think its a valid issue and if it okay for me to contribute.

Hi @sunny1401.

thanks for offering your help. I think it is a good extension to support MLFlow tags 🙂 

Could you create a draft of the proposed changes?

The base class defining the ResultTracker interface can be found here: https://github.com/pykeen/pykeen/blob/ef0be081e00e15d299b1199513aba3702819dd63/src/pykeen/trackers.py#L21-L42

You can extend it by `log_tags` and implement it for the MLFlow Tracker.

Let me know if you need further assistance.

@mali-git Do you know whether there is something similar for wandb?

thank you. will do

Hi  @mberr,

> @mali-git Do you know whether there is something similar for wandb?

Wandb offers `wandb.config` for saving the experiment configuration:

> Set the wandb.config object in your script to save your training config: hyperparameters, input settings like dataset name or model type, and any other independent variables for your experiments. This is useful for analyzing your experiments and reproducing your work in the future [https://docs.wandb.com/library/config#overview](https://docs.wandb.com/library/config#overview)

> Hi @mberr,
> 
> > @mali-git Do you know whether there is something similar for wandb?
> 
> Wandb offers `wandb.config` for saving the experiment configuration:
> 
> > Set the wandb.config object in your script to save your training config: hyperparameters, input settings like dataset name or model type, and any other independent variables for your experiments. This is useful for analyzing your experiments and reproducing your work in the future https://docs.wandb.com/library/config#overview

I will have a look and provide changes if necessary.

@sunny1401 for clarification, is this the thing you're talking about (https://www.mlflow.org/docs/latest/python_api/mlflow.html#mlflow.set_tag)?

To me it looks like this is something that's experiment-wide, so maybe the tags can all get set during the `__init__` function of the [MLFlowResultTracker] class here:

https://github.com/pykeen/pykeen/blob/2c9101c41d1f757a30d5b57cb0d7650f7f60f671/src/pykeen/trackers.py#L48-L74

@cthoyt that is what I am talking about - but they vary from run to run. Each run can have different tags based on what you pass in tags.. I am not sure I get what you mean by "To me it looks like this is something that's experiment-wide,"  but set_tags would basically take in a dictionary of tags and these values are set along with other mlflow inbuilt tag. 

I don't think it can be called that way.. when its stored.. tags are stored using the same run_id as the run as foreign_key.. But I can just simply add another function to MLFlowResultTracker. 

This issue was closed by #139