question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. ItΒ collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

InferenceService Status restructuring

See original GitHub issue

Currently, ModelMesh has its own set of status fields that it populates in the InferenceService status since we allow unknown fields there. Similarly, KServe has its own status fields that are predominantly based on knative fields.

The goal here is to converge on a common set of status fields that would work with the various different deployment modes.

As an overview, here are the current status fields:

InferenceServiceStatus

InferenceServiceStatus
  β”œβ”€β”€β”€β”€ duckv1.Status `json:",inline"`
  β”‚        β”‚    // The 'Generation' of the Service that was last processed by the controller.
  β”‚        β”œβ”€β”€β”€ ObservedGeneration int64 `json:"observedGeneration,omitempty"`
  β”‚        β”‚
  β”‚        β”‚    // Conditions the latest available observations of a resource's current state.
  β”‚        |    // Condition defines a readiness condition for a Knative resource.
  β”‚        β”œβ”€β”€β”€ Conditions Conditions `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type"`
  β”‚        | 
  β”‚        |     // Additional Status fields for the Resource to save some additional State as well as convey more information to the user.
  β”‚        β”œβ”€β”€β”€ Annotations map[string]string `json:"annotations,omitempty"`
  β”‚
  β”œβ”€β”€β”€β”€ Address *duckv1.Addressable `json:"address,omitempty"`
  β”œβ”€β”€β”€β”€ URL *apis.URL `json:"url,omitempty"`
  β”œβ”€β”€β”€β”€ Components map[ComponentType]ComponentStatusSpec `json:"components,omitempty"`

ComponentTypes are predictor, explainer, transformer. Which map to a ComponentStatusSpec.

An example of an actual status can be found here: https://pastebin.com/wkCrZyxk

ModelMesh Predictor Status

PredictorStatus
  β”œβ”€β”€β”€β”€ Available bool `json:"available"`
  β”‚
  β”‚     // One of 'UpToDate', 'InProgress', 'BlockedByFailedLoad', or 'InvalidSpec'
  β”œβ”€β”€β”€β”€ TransitionStatus TransitionStatus `json:"transitionStatus"
  β”‚
  β”‚     // High level state string: Pending, Standby, Loading, Loaded, FailedToLoad
  β”œβ”€β”€β”€β”€ ActiveModelState ModelState `json:"activeModelState"
  β”œβ”€β”€β”€β”€ TargetModelState ModelState `json:"targetModelState"`
  β”‚
  β”‚     // Details of last failure, when load of target model is failed or blocked
  β”œβ”€β”€β”€β”€ LastFailureInfo *FailureInfo `json:"lastFailureInfo,omitempty"`
  β”‚
  β”‚     // Addressable endpoint for the deployed trained model. This will be "static" and will not change when the model is mutated
  β”œβ”€β”€β”€β”€ HTTPEndpoint string `json:"httpEndpoint"`
  β”œβ”€β”€β”€β”€ GrpcEndpoint string `json:"grpcEndpoint"`
  β”‚
  β”‚     // How many copies of this predictor's models failed to load recently
  β”œβ”€β”€β”€β”€ FailedCopies int `json:"failedCopies"`

An example of an actual predictor status can be found here: https://pastebin.com/wBM3WgFW


Action item: Decide how we can restructure the fields in a way that make sense for all the deployment modes. Do we still rely on the Knative types?

Issue Analytics

  • State:closed
  • Created 2 years ago
  • Comments:8 (8 by maintainers)

github_iconTop GitHub Comments

1reaction
chinhuang007commented, Feb 17, 2022

For both KServe and ModelMesh to update and understand the status/state of an inference service, I would suggest to continue to use the Knative types. That probably means that InferenceServiceStatus needs to cover ModelMesh status requirements, and ModelMesh needs to include Knative packages and change code accordingly.

1reaction
pvaneckcommented, Feb 17, 2022
Read more comments on GitHub >

github_iconTop Results From Across the Web

Inferenceservice status is 'Unknown' with 'IngressNotConfigured'
My kubeflow and kfserving are installed in k8s, I tried the solution of the issue https://github.com/kubeflow/kfserving/issues/668, but myΒ ...
Read more >
How to make an ML model inference on KFServing ... - Medium
You will restructure the rpm model that you have downloaded earlier. You will also remove the unnecessary files.
Read more >
Run your first InferenceService - Kubeflow
Run your first InferenceService. A tutorial on building and deploying a model using the KServe Python SDK. Run in Google Colab View source...
Read more >
Release Notes - Seldon Deploy Documentation
Adding fluentd labels to inferenceservice deployments for logs ... Restructuring application paths and in-app navigation.
Read more >
Inference Autoscaling - KServe Documentation Website
Apply the autoscale.yaml to create the Autoscale InferenceService. kubectl ... 0.0000 secs, 0.0021 secs Status code distribution: [200] 4126 responses.
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found