  Models derived from other models are extremely common in machine learning
(ML) today. For example, transfer learning is used to create task-specific
models from "pre-trained" models through finetuning. This has led to an
ecosystem where models are related to each other, sharing structure and often
even parameter values. However, it is hard to manage these model derivatives:
the storage overhead of storing all derived models quickly becomes onerous,
prompting users to get rid of intermediate models that might be useful for
further analysis. Additionally, undesired behaviors in models are hard to track
down (e.g., is a bug inherited from an upstream model?). In this paper, we
propose a model versioning and management system called MGit that makes it
easier to store, test, update, and collaborate on model derivatives. MGit
introduces a lineage graph that records provenance and versioning information
between models, optimizations to efficiently store model parameters, as well as
abstractions over this lineage graph that facilitate relevant testing, updating
and collaboration functionality. MGit is able to reduce the lineage graph's
storage footprint by up to 7x and automatically update downstream models in
response to updates to upstream models.
