diff --git a/pkg/apis/serving/v1beta1/trained_model.go b/pkg/apis/serving/v1beta1/trained_model.go new file mode 100644 index 00000000000..650f821b0f2 --- /dev/null +++ b/pkg/apis/serving/v1beta1/trained_model.go @@ -0,0 +1,40 @@ +package v1beta1 + +import ( + "k8s.io/apimachinery/pkg/api/resource" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" +) + +// +k8s:openapi-gen=true +// +kubebuilder:object:root=true +type TrainedModel struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + Spec TrainedModelSpec `json:"spec,omitempty"` + Status TrainedModelStatus `json:"status,omitempty"` +} + +// TrainedModelList contains a list of TrainedModel +// +kubebuilder:object:root=true +type TrainedModelList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + // +listType=set + Items []TrainedModel `json:"items"` +} + +type TrainedModelSpec struct { + // Required field for parent inference service + InferenceService string `json:"inferenceService"` + // Predictor model spec + PredictorModel ModelSpec `json:"predictorModel"` +} +type ModelSpec struct { + // Storage URI for the model repository + StorageURI string `json:"storageUri"` + // Machine Learning + // The values could be: "tensorflow","pytorch","sklearn","onnx","xgboost", "myawesomeinternalframework" etc. + Framework string `json:"framework"` + // Maximum memory this model will consume, this field is used to decide if a model server has enough memory to load this model. + Memory resource.Quantity `json:"memory,omitempty"` +} diff --git a/pkg/apis/serving/v1beta1/trained_model_status.go b/pkg/apis/serving/v1beta1/trained_model_status.go new file mode 100644 index 00000000000..a8da893191c --- /dev/null +++ b/pkg/apis/serving/v1beta1/trained_model_status.go @@ -0,0 +1,13 @@ +package v1beta1 + +import ( + duckv1beta1 "knative.dev/pkg/apis/duck/v1beta1" +) + +type TrainedModelStatus struct { + // Condition for "Deployed" + duckv1beta1.Status `json:",inline"` + // Addressable endpoint for the deployed trained model + // http:///v1/models/.metadata.name + Address *duckv1beta1.Addressable `json:"address,omitempty"` +}