-
Notifications
You must be signed in to change notification settings - Fork 10
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Define the client library in Python for model registry #46
Comments
Suggesting using https://github.com/microsoft/kiota for the purpose of generating a client (in Python or other PLs) from the OpenAPI |
I didn't realize we were going to build a brand new custom REST API and client on top of the existing CPP server. That's going to easily take a month or two. |
When UI or Model Serving makes calls into CPP service, they can call higher level coarse grained API which represents "logical" layer on the top of the MLMD layer.
There are three clients we are trying to serve. Python clients, UI, Model Serving teams. Are you suggesting we implement the logical layer independently at each layer? The need is to provide a friendlier higher level API than what ml-metadata provides, unless I am not understanding how MLMD logical definition of the data model works. This is similar to |
The issue is that the amount of extra work that would be required in implementing a logical types API proxy is not trivial. We are still going to expose the gRPC API for DSP, so why not re-use it for the existing Python Client? We can write some helper Python code (to lookup type ids, maybe provide higher level classes derived from the generic Python classes) that makes it easier to deal with the gRPC API. If a higher level API is needed for the UI, it's going to turn into a Backend For Frontend (BFF) pattern.
This is an ideal scenario to separate concerns and keep the backend scope from getting out of hand. The alternative is to implement essentially a hand written version of the gRPC API in openapi with a few higher level types. Which still leaves the problem of extracting UI queries or having to implement them in this proxy layer, which turns it into a BFF. A BFF is really meant to be a specialized backend, ideally implemented by the UI team. Please read the BFF article I shared and how it solves the frontend to backend coupling problem. Edited: link to BFF pattern from AWS blog. |
I was not advocating for DSP, as it already has existing Python library, how are we going to support Model Serving? we would need to extend Python library using gRPC or something else.
IMO, this is not limited to UI. It involves Model Serving and DSP teams too.
agree, I am familiar with the pattern. If UI want to implement that is fine with me. This is not our decision to make. The question I am trying to answer today what is API that MR team exposing various teams. For the model registry access, we are currently saying we will be supporting python bindings, tomorrow we may also need to support I asking our team to
If it makes sense then can we explore extending the |
Closed by #77 . |
Is your feature request related to a problem? Please describe.
DSP/Model Serving teams will need a Python bindings to the Model Registry to interact with it.
Describe the solution you'd like
The text was updated successfully, but these errors were encountered: