Open Tostino opened 1 year ago
I think we need to unify our 3 model concepts between PostgresML trained models, HuggingFace downloaded models, and SDK registered models as part of this effort. We're currently working on organizing the Dashboard, which can provide a UX to help organize/download/update/delete models, while providing additional visibility into their various stats, like disk/RAM usage as well as their key performance metrics, and usage.
There's a lot of deep functionality buried in various library APIs that would be good to surface in a UX, that also provides a reference SQL implementation for interacting with the pgml-extension to manage models across all the surfaces.
pgml.project
and corresponding pgml.model
with pgml.files
for each huggingface transform task, similar to what pgml.tune
does (except without the fine tuning).What about adding pgml.load_model(project_name, task, **kwargs_for_automodel)
. Ultimately it'd be nice to add more structure for kwargs, but they are very dynamically handled in the various underlying libs. That'd also give end users the ability to group and deploy models how they see fit, allowing them to mix and match different model spaces for a single Project. The question is where all the huggingface model metadata get's stored. Perhaps the right place is the pgml.model.hyperparams. We'd also need a new "huggingface" algorithm
, to handle running these correctly?
Description
Currently, there is no direct way to interact with the cached models downloaded by PostgresML. For instance, when using HuggingFace models, they get stored in
/var/lib/postgresql/.cache
. Users might want to delete or even see what models have been downloaded.I spoke with Lev on Discord and he mentioned that there is no API exposed to work with the cached models directly.
Suggested Feature
It would be helpful to provide an API for users to list, delete, or otherwise manage the models cached by PostgresML. This would give more control to the users over the storage and management of models without having to manually intervene at the file system level.
Use Case