Skip to content
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

periodic sync upstream KF to midstream ODH #123

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
c8bf03e
build(deps-dev): bump pytest from 8.3.2 to 8.3.3 in /clients/python (…
dependabot[bot] Sep 16, 2024
f7ecce9
build(deps): bump huggingface-hub from 0.24.6 to 0.24.7 in /clients/p…
dependabot[bot] Sep 16, 2024
5dcafb1
build(deps-dev): bump ruff from 0.6.4 to 0.6.5 in /clients/python (#385)
dependabot[bot] Sep 16, 2024
f5ae1a4
build(deps): bump github.com/kubeflow/model-registry from 0.2.5-alpha…
dependabot[bot] Sep 16, 2024
feb6569
build(deps-dev): bump postcss from 8.4.45 to 8.4.47 in /clients/ui/fr…
dependabot[bot] Sep 16, 2024
f363ec9
build(deps-dev): bump css-loader from 6.11.0 to 7.1.2 in /clients/ui/…
dependabot[bot] Sep 16, 2024
d67a803
build(deps-dev): bump @testing-library/user-event from 14.4.3 to 14.5…
dependabot[bot] Sep 16, 2024
765eb8a
build(deps): bump github.com/kubeflow/model-registry from 0.2.5-alpha…
dependabot[bot] Sep 16, 2024
c01a44a
build(deps): bump k8s.io/apimachinery from 0.31.0 to 0.31.1 in /clien…
dependabot[bot] Sep 16, 2024
39a5698
gha: fossa license scanning (#324)
tarilabs Sep 16, 2024
9bde34a
Adds scaffolding and mock support for PATCH endpoints (#382)
alexcreasy Sep 17, 2024
a5b1ea3
build(deps): bump send and express in /clients/ui/frontend (#386)
dependabot[bot] Sep 17, 2024
83d4098
build(deps): bump k8s.io/api from 0.31.0 to 0.31.1 in /clients/ui/bff…
dependabot[bot] Sep 17, 2024
8170dc4
build(deps): bump k8s.io/client-go from 0.31.0 to 0.31.1 in /clients/…
dependabot[bot] Sep 17, 2024
e5422f7
enable standalone artifacts (#376)
isinyaaa Sep 18, 2024
8dbc2e7
Adds remaining endpoints for UI PoC (#397)
alexcreasy Sep 18, 2024
46a0635
Add Registered Model View (#396)
lucferbux Sep 18, 2024
fcabead
Adds support for PATCH requests in live cluster mode (#399)
alexcreasy Sep 18, 2024
f464832
Merge sync remote-tracking branch 'upstream/main' into tarilabs-20240…
tarilabs Sep 19, 2024
519140a
disable automatic FOSSA scanning in midstream ODH
tarilabs Sep 19, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 21 additions & 0 deletions .github/workflows/fossa-license-scanning.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
name: FOSSA License Scanning

on: workflow_dispatch # disable this workflow only manually in midstream ODH

jobs:
fossa-scan:
if: github.repository_owner == 'kubeflow' # FOSSA is not intended to run on forks.
runs-on: ubuntu-latest
env:
# push-only token, intentional; see https://github.com/fossa-contrib/fossa-action?tab=readme-ov-file#push-only-api-token
# this also how other CNCF projects are doing e.g. https://github.com/cncf/foundation/issues/109
FOSSA_API_KEY: 80871bdd477c2c97f65e9822cae99d20 # This is a push-only token that is safe to be exposed.
steps:
- name: Checkout tree
uses: actions/checkout@v4

- name: Run FOSSA scan and upload build data
uses: fossas/[email protected]
with:
api-key: ${{ env.FOSSA_API_KEY }}
project: "github.com/kubeflow/model-registry"
5 changes: 0 additions & 5 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,11 +28,6 @@ The make command shipped with Mac OSX (at the time of writing) is a bit old:
```
% make --version
GNU Make 3.81
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.

This program built for i386-apple-darwin11.3.0
```

Expand Down
7 changes: 3 additions & 4 deletions api/openapi/model-registry.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -391,8 +391,8 @@ paths:
$ref: "#/components/responses/NotFound"
"500":
$ref: "#/components/responses/InternalServerError"
operationId: createModelVersionArtifact
summary: Create an Artifact in a ModelVersion
operationId: upsertModelVersionArtifact
summary: Upsert an Artifact in a ModelVersion
description: Creates a new instance of an Artifact if needed and associates it with `ModelVersion`.
parameters:
- name: modelversionId
Expand Down Expand Up @@ -1224,9 +1224,8 @@ components:
properties:
id:
format: int64
description: Output only. The unique server generated id of the resource.
description: The unique server generated id of the resource.
type: string
readOnly: true
createTimeSinceEpoch:
format: int64
description: Output only. Create time of the resource in millisecond since epoch.
Expand Down
3 changes: 1 addition & 2 deletions clients/python/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,7 @@ test:

.PHONY: lint
lint:
poetry run ruff check
poetry run black src/mr_openapi --check
poetry run ruff check src/model_registry

.PHONY: tidy
tidy:
Expand Down
50 changes: 25 additions & 25 deletions clients/python/poetry.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 3 additions & 3 deletions clients/python/src/model_registry/_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,7 @@ async def _register_model_artifact(
self, mv: ModelVersion, name: str, uri: str, /, **kwargs
) -> ModelArtifact:
assert mv.id is not None, "Model version must have an ID"
return await self._api.upsert_model_artifact(
return await self._api.upsert_model_version_artifact(
ModelArtifact(name=name, uri=uri, **kwargs), mv.id
)

Expand Down Expand Up @@ -206,8 +206,8 @@ def update(self, model: TModel) -> TModel:
if isinstance(model, RegisteredModel):
return self.async_runner(self._api.upsert_registered_model(model))
if isinstance(model, ModelVersion):
return self.async_runner(self._api.upsert_model_version(model, model.id))
return self.async_runner(self._api.upsert_model_artifact(model, model.id))
return self.async_runner(self._api.upsert_model_version(model, None))
return self.async_runner(self._api.upsert_model_artifact(model))

def register_hf_model(
self,
Expand Down
28 changes: 14 additions & 14 deletions clients/python/src/model_registry/core.py
Original file line number Diff line number Diff line change
Expand Up @@ -183,15 +183,15 @@ async def get_registered_models(
return [RegisteredModel.from_basemodel(rm) for rm in rm_list.items or []]

async def upsert_model_version(
self, model_version: ModelVersion, registered_model_id: str
self, model_version: ModelVersion, registered_model_id: str | None = None
) -> ModelVersion:
"""Upsert a model version.

Updates or creates a model version on the server.

Args:
model_version: Model version to upsert.
registered_model_id: ID of the registered model this version will be associated to.
registered_model_id: ID of the registered model this version will be associated to. Can be None when updating an existing model version.

Returns:
New model version.
Expand All @@ -201,10 +201,13 @@ async def upsert_model_version(
mv = await client.update_model_version(
model_version.id, model_version.update()
)
else:
elif registered_model_id:
mv = await client.create_model_version(
model_version.create(registered_model_id=registered_model_id)
)
else:
msg = f"Registered model ID required for creating a new model version: {model_version}"
raise ValueError(msg)

return ModelVersion.from_basemodel(mv)

Expand Down Expand Up @@ -295,7 +298,7 @@ async def get_model_version_by_params(
return ModelVersion.from_basemodel(mv)

async def upsert_model_artifact(
self, model_artifact: ModelArtifact, model_version_id: str
self, model_artifact: ModelArtifact
) -> ModelArtifact:
"""Upsert a model artifact.

Expand All @@ -308,19 +311,16 @@ async def upsert_model_artifact(
Returns:
New model artifact.
"""
if not model_artifact.id:
return await self.create_model_version_artifact(
model_artifact, model_version_id
)

async with self.get_client() as client:
return ModelArtifact.from_basemodel(
await client.update_model_artifact(
if not model_artifact.id:
ma = await client.create_model_artifact(model_artifact.create())
else:
ma = await client.update_model_artifact(
model_artifact.id, model_artifact.update()
)
)
return ModelArtifact.from_basemodel(ma)

async def create_model_version_artifact(
async def upsert_model_version_artifact(
self, artifact: ArtifactT, model_version_id: str
) -> ArtifactT:
"""Creates a model version artifact.
Expand All @@ -338,7 +338,7 @@ async def create_model_version_artifact(
return cast(
ArtifactT,
Artifact.validate_artifact(
await client.create_model_version_artifact(
await client.upsert_model_version_artifact(
model_version_id, artifact.wrap()
)
),
Expand Down
2 changes: 1 addition & 1 deletion clients/python/src/mr_openapi/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,6 @@ Class | Method | HTTP request | Description
*ModelRegistryServiceApi* | [**create_inference_service_serve**](mr_openapi/docs/ModelRegistryServiceApi.md#create_inference_service_serve) | **POST** /api/model_registry/v1alpha3/inference_services/{inferenceserviceId}/serves | Create a ServeModel action in a InferenceService
*ModelRegistryServiceApi* | [**create_model_artifact**](mr_openapi/docs/ModelRegistryServiceApi.md#create_model_artifact) | **POST** /api/model_registry/v1alpha3/model_artifacts | Create a ModelArtifact
*ModelRegistryServiceApi* | [**create_model_version**](mr_openapi/docs/ModelRegistryServiceApi.md#create_model_version) | **POST** /api/model_registry/v1alpha3/model_versions | Create a ModelVersion
*ModelRegistryServiceApi* | [**create_model_version_artifact**](mr_openapi/docs/ModelRegistryServiceApi.md#create_model_version_artifact) | **POST** /api/model_registry/v1alpha3/model_versions/{modelversionId}/artifacts | Create an Artifact in a ModelVersion
*ModelRegistryServiceApi* | [**create_registered_model**](mr_openapi/docs/ModelRegistryServiceApi.md#create_registered_model) | **POST** /api/model_registry/v1alpha3/registered_models | Create a RegisteredModel
*ModelRegistryServiceApi* | [**create_registered_model_version**](mr_openapi/docs/ModelRegistryServiceApi.md#create_registered_model_version) | **POST** /api/model_registry/v1alpha3/registered_models/{registeredmodelId}/versions | Create a ModelVersion in RegisteredModel
*ModelRegistryServiceApi* | [**create_serving_environment**](mr_openapi/docs/ModelRegistryServiceApi.md#create_serving_environment) | **POST** /api/model_registry/v1alpha3/serving_environments | Create a ServingEnvironment
Expand Down Expand Up @@ -109,6 +108,7 @@ Class | Method | HTTP request | Description
*ModelRegistryServiceApi* | [**update_model_version**](mr_openapi/docs/ModelRegistryServiceApi.md#update_model_version) | **PATCH** /api/model_registry/v1alpha3/model_versions/{modelversionId} | Update a ModelVersion
*ModelRegistryServiceApi* | [**update_registered_model**](mr_openapi/docs/ModelRegistryServiceApi.md#update_registered_model) | **PATCH** /api/model_registry/v1alpha3/registered_models/{registeredmodelId} | Update a RegisteredModel
*ModelRegistryServiceApi* | [**update_serving_environment**](mr_openapi/docs/ModelRegistryServiceApi.md#update_serving_environment) | **PATCH** /api/model_registry/v1alpha3/serving_environments/{servingenvironmentId} | Update a ServingEnvironment
*ModelRegistryServiceApi* | [**upsert_model_version_artifact**](mr_openapi/docs/ModelRegistryServiceApi.md#upsert_model_version_artifact) | **POST** /api/model_registry/v1alpha3/model_versions/{modelversionId}/artifacts | Upsert an Artifact in a ModelVersion


## Documentation For Models
Expand Down
Loading