Skip to content

Commit

Permalink
Allow disabling creation of the HPA in raw deployment mode (kserve#3086)
Browse files Browse the repository at this point in the history
* Refactor autoscaler functionality into an interface.

Add no-op autoscaler so users disable creation of autoscaler resources.
Add AutoscalerClassNone feature with test cases

Signed-off-by: jooho <jlee@redhat.com>
Signed-off-by: Dan Sun <dsun20@bloomberg.net>
Signed-off-by: Andrews Arokiam <andrews.arokiam@ideas2it.com>

* Rollback getHPAMetrics to set ScaleTarget,ScaleMetric

Signed-off-by: jooho <jlee@redhat.com>
Signed-off-by: Dan Sun <dsun20@bloomberg.net>
Signed-off-by: Andrews Arokiam <andrews.arokiam@ideas2it.com>

* Fix merge conflict

Signed-off-by: Dan Sun <dsun20@bloomberg.net>
Signed-off-by: Andrews Arokiam <andrews.arokiam@ideas2it.com>

* Fix autoscaler api group

Signed-off-by: Dan Sun <dsun20@bloomberg.net>
Signed-off-by: Andrews Arokiam <andrews.arokiam@ideas2it.com>

* Fix autoscaler merge

Signed-off-by: Dan Sun <dsun20@bloomberg.net>
Signed-off-by: Andrews Arokiam <andrews.arokiam@ideas2it.com>

* Fix autoscaling tests

Signed-off-by: Dan Sun <dsun20@bloomberg.net>
Signed-off-by: Andrews Arokiam <andrews.arokiam@ideas2it.com>

* Updated hpa disable test.

Signed-off-by: Andrews Arokiam <andrews.arokiam@ideas2it.com>

* Replaced "AutoscalerClassNone" with "AutoscalerClassExternal"

Signed-off-by: Andrews Arokiam <andrews.arokiam@ideas2it.com>

* Fixed autoscalerClass 'external' go test.

Signed-off-by: Andrews Arokiam <andrews.arokiam@ideas2it.com>

---------

Signed-off-by: jooho <jlee@redhat.com>
Signed-off-by: Dan Sun <dsun20@bloomberg.net>
Signed-off-by: Andrews Arokiam <andrews.arokiam@ideas2it.com>
Co-authored-by: Curtis Maddalozzo <curtis@tractable.ai>
Co-authored-by: jooho <jlee@redhat.com>
Co-authored-by: Dan Sun <dsun20@bloomberg.net>
  • Loading branch information
4 people authored and israel-hdez committed Apr 24, 2024
1 parent 78e63a1 commit bb39cda
Show file tree
Hide file tree
Showing 10 changed files with 468 additions and 40 deletions.
2 changes: 2 additions & 0 deletions pkg/apis/serving/v1beta1/inference_service_validation.go
Original file line number Diff line number Diff line change
Expand Up @@ -139,6 +139,8 @@ func validateInferenceServiceAutoscaler(isvc *InferenceService) error {
} else {
return nil
}
case constants.AutoscalerClassExternal:
return nil
default:
return fmt.Errorf("unknown autoscaler class [%s]", class)
}
Expand Down
4 changes: 3 additions & 1 deletion pkg/constants/constants.go
Original file line number Diff line number Diff line change
Expand Up @@ -154,7 +154,8 @@ var (

// Autoscaler Class
var (
AutoscalerClassHPA AutoscalerClassType = "hpa"
AutoscalerClassHPA AutoscalerClassType = "hpa"
AutoscalerClassExternal AutoscalerClassType = "external"
)

// Autoscaler Metrics
Expand All @@ -170,6 +171,7 @@ var (
// Autoscaler Class Allowed List
var AutoscalerAllowedClassList = []AutoscalerClassType{
AutoscalerClassHPA,
AutoscalerClassExternal,
}

// Autoscaler Metrics Allowed List
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -151,10 +151,8 @@ func (e *Explainer) Reconcile(isvc *v1beta1.InferenceService) (ctrl.Result, erro
return ctrl.Result{}, errors.Wrapf(err, "fails to set service owner reference for explainer")
}
//set autoscaler Controller
if r.Scaler.Autoscaler.AutoscalerClass == constants.AutoscalerClassHPA {
if err := controllerutil.SetControllerReference(isvc, r.Scaler.Autoscaler.HPA.HPA, e.scheme); err != nil {
return ctrl.Result{}, errors.Wrapf(err, "fails to set HPA owner reference for explainer")
}
if err := r.Scaler.Autoscaler.SetControllerReferences(isvc, e.scheme); err != nil {
return ctrl.Result{}, errors.Wrapf(err, "fails to set autoscaler owner references for explainer")
}

deployment, err := r.Reconcile()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -319,10 +319,8 @@ func (p *Predictor) Reconcile(isvc *v1beta1.InferenceService) (ctrl.Result, erro
return ctrl.Result{}, errors.Wrapf(err, "fails to set service owner reference for predictor")
}
//set autoscaler Controller
if r.Scaler.Autoscaler.AutoscalerClass == constants.AutoscalerClassHPA {
if err := controllerutil.SetControllerReference(isvc, r.Scaler.Autoscaler.HPA.HPA, p.scheme); err != nil {
return ctrl.Result{}, errors.Wrapf(err, "fails to set HPA owner reference for predictor")
}
if err := r.Scaler.Autoscaler.SetControllerReferences(isvc, p.scheme); err != nil {
return ctrl.Result{}, errors.Wrapf(err, "fails to set autoscaler owner references for predictor")
}

deployment, err := r.Reconcile()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -181,10 +181,8 @@ func (p *Transformer) Reconcile(isvc *v1beta1.InferenceService) (ctrl.Result, er
return ctrl.Result{}, errors.Wrapf(err, "fails to set service owner reference for transformer")
}
//set autoscaler Controller
if r.Scaler.Autoscaler.AutoscalerClass == constants.AutoscalerClassHPA {
if err := controllerutil.SetControllerReference(isvc, r.Scaler.Autoscaler.HPA.HPA, p.scheme); err != nil {
return ctrl.Result{}, errors.Wrapf(err, "fails to set HPA owner reference for transformer")
}
if err := r.Scaler.Autoscaler.SetControllerReferences(isvc, p.scheme); err != nil {
return ctrl.Result{}, errors.Wrapf(err, "fails to set autoscaler owner references for transformer")
}

deployment, err := r.Reconcile()
Expand Down
Loading

0 comments on commit bb39cda

Please sign in to comment.