5

I'm new to mlflow and I can't figure out why the artifact store can't be the same as the backend store?

The only reason I can think of is to be able to query the experiments with SQL syntax... but since we can interact with the runs using mlflow ui I just don't understand why all artifacts and parameters can't go to a same location (which is what happens when using local storage).

Can anyone shed some light on this?

Kiran Sanjeevan
  • 149
  • 1
  • 7
  • 1
    I think it would be a design decision that is motivated by response time. Mlflow UI has to be able to list all the models for a given experiment quickly for a user. S3 would be a poor choice for this because of network delays. However, you'll notice that mlflow can async load artifacts from S3- which is acceptable. – Paul Bendevis Oct 05 '20 at 19:22

1 Answers1

1

MLflow's Artifacts are typically ML models, i.e. relatively large binary files. On the other hand, run data are typically a couple of floats.

In the end it is not a question of what is possible or not (many things are possible if you put enough effort into it), but rather to follow good practices:

  • storing large binary artifacts in an SQL database is possible but is bound the degrade the performance of the database sooner or later, and this in turn will degrade your user experience.
  • storing a couple of floats from a SQL database for quick retrieval for display in a front-end or via command line is a robust industry-proven classic

It remains true that the documentation of MLflow on the architecture design rationale could be improved (as of 2020)

OlivierBondu
  • 177
  • 2
  • 8
  • Maybe the decision should be up to the user as to what storage they want to use. As of now, having 2 storage locations increases costs of MLflow since you need to pay for S3 and for RDS. – PJ_ Feb 03 '23 at 15:49