|
34 | 34 | from ads.evaluations import EvaluatorMixin |
35 | 35 | from ads.feature_engineering import ADSImage |
36 | 36 | from ads.feature_engineering.schema import Schema |
| 37 | +from ads.feature_store.model_details import ModelDetails |
37 | 38 | from ads.model.artifact import ModelArtifact |
38 | 39 | from ads.model.common.utils import ( |
39 | 40 | _extract_locals, |
|
65 | 66 | Framework, |
66 | 67 | ModelCustomMetadata, |
67 | 68 | ModelProvenanceMetadata, |
68 | | - ModelTaxonomyMetadata, |
| 69 | + ModelTaxonomyMetadata, MetadataCustomCategory, |
69 | 70 | ) |
70 | 71 | from ads.model.model_metadata_mixin import MetadataMixin |
71 | 72 | from ads.model.model_properties import ModelProperties |
@@ -1825,6 +1826,7 @@ def save( |
1825 | 1826 | remove_existing_artifact: Optional[bool] = True, |
1826 | 1827 | model_version_set: Optional[Union[str, ModelVersionSet]] = None, |
1827 | 1828 | version_label: Optional[str] = None, |
| 1829 | + featurestore_dataset=None, |
1828 | 1830 | **kwargs, |
1829 | 1831 | ) -> str: |
1830 | 1832 | """Saves model artifacts to the model catalog. |
@@ -1856,6 +1858,8 @@ def save( |
1856 | 1858 | The model version set OCID, or model version set name, or `ModelVersionSet` instance. |
1857 | 1859 | version_label: (str, optional). Defaults to None. |
1858 | 1860 | The model version lebel. |
| 1861 | + featurestore_dataset: (Dataset, optional). |
| 1862 | + The feature store dataset |
1859 | 1863 | kwargs: |
1860 | 1864 | project_id: (str, optional). |
1861 | 1865 | Project OCID. If not specified, the value will be taken either |
@@ -1937,6 +1941,15 @@ def save( |
1937 | 1941 | # variables in case of saving model in context of model version set. |
1938 | 1942 | model_version_set_id = _extract_model_version_set_id(model_version_set) |
1939 | 1943 |
|
| 1944 | + if featurestore_dataset: |
| 1945 | + dataset_details = { |
| 1946 | + "dataset-id": featurestore_dataset.id, |
| 1947 | + "dataset-name": featurestore_dataset.name |
| 1948 | + } |
| 1949 | + self.metadata_custom.add("featurestore.dataset", value=str(dataset_details), |
| 1950 | + category=MetadataCustomCategory.TRAINING_AND_VALIDATION_DATASETS, |
| 1951 | + description="feature store dataset", replace=True) |
| 1952 | + |
1940 | 1953 | self.dsc_model = ( |
1941 | 1954 | self.dsc_model.with_compartment_id(self.properties.compartment_id) |
1942 | 1955 | .with_project_id(self.properties.project_id) |
@@ -1965,6 +1978,10 @@ def save( |
1965 | 1978 | .with_infrastructure(ModelDeploymentInfrastructure()) |
1966 | 1979 | .with_runtime(ModelDeploymentContainerRuntime()) |
1967 | 1980 | ) |
| 1981 | + # Add the model id to the feature store dataset |
| 1982 | + if featurestore_dataset: |
| 1983 | + model_details = ModelDetails().with_items([self.model_id]) |
| 1984 | + featurestore_dataset.add_models(model_details) |
1968 | 1985 |
|
1969 | 1986 | return self.model_id |
1970 | 1987 |
|
|
0 commit comments