Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
3 changes: 2 additions & 1 deletion charts/modeldeployment/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,8 @@ over plaintext gRPC and **no `DestinationRule` is required**.
| `model` | required | `""` | Preset model name. Used only as `spec.template.inference.preset.name`. |
| `config` | optional | `""` | Name of a ConfigMap in the deployment namespace containing custom inference arguments. Rendered as `spec.template.inference.config`. |
| `modelAccessSecret` | optional | `""` | Name of a Secret containing Hugging Face model access credentials. Rendered as `spec.template.inference.preset.presetOptions.modelAccessSecret`. |
| `instanceType` | optional | `Standard_NV36ads_A10_v5` | VM instance type for the underlying nodes. Set `""` to omit `spec.template.resource.instanceType`, as required on BYO-node clusters (KAITO `nodeProvisioner=byo`). |
| `instanceType` | optional | `Standard_NV36ads_A10_v5` | VM instance type for the underlying nodes. Set `""` to omit `spec.template.resource.instanceType`. Required with node auto-provisioning; optional on BYO-node clusters (KAITO `nodeProvisioner=byo`), where it restricts GPU nodes to `node.kubernetes.io/instance-type=<instanceType>`. |
| `nodeLabelSelector` | optional | `{}` | GPU node [LabelSelector](https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#resources-that-support-set-based-requirements) (`matchLabels` / `matchExpressions`), rendered as `spec.template.resource.labelSelector`. Empty omits it: with node auto-provisioning it inherits `spec.labelSelector`; on BYO-node clusters GPU nodes are auto-selected. Requires a KAITO release with kaito-project/kaito#2444 (v0.13.0+); older CRDs silently drop the field. |
| `replicas` | optional | _empty_ | InferenceSet replicas (`spec.replicas`). Empty leaves `spec.replicas` unset (CRD default `1`; with `enableScaling=true`, KEDA moves it into `[minReplicas, maxReplicas]`). When set with `enableScaling=true` it must lie within `[minReplicas, maxReplicas]` and is re-applied only when its value changes (see [Replica ownership](#replica-ownership)). |
| `minReplicas` | required when `enableScaling=true` | _empty_ | Autoscaling lower bound, wired to `scaledobject.kaito.sh/min-replicas`. Ignored when `enableScaling=false`. `0` enables [scale to zero](#scale-to-zero). |
| `enableScaling` | optional | `false` | Wired to `scaledobject.kaito.sh/auto-provision`. Gates `minReplicas`, `maxReplicas` and the entire `scaling` block. |
Expand Down
12 changes: 10 additions & 2 deletions charts/modeldeployment/templates/inferenceset.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -233,12 +233,20 @@ spec:
{{- end }}
{{- end }}
{{- /*
Empty instanceType omits the field, which KAITO requires on BYO
(nodeProvisioner=byo) clusters where nodes are not auto-provisioned.
Empty instanceType / nodeLabelSelector omit their fields. On BYO
(nodeProvisioner=byo) clusters both are optional node filters and KAITO
auto-selects GPU nodes when both are empty; with node auto-provisioning an
omitted labelSelector inherits spec.labelSelector.
*/}}
resource:
{{- if or .Values.instanceType .Values.nodeLabelSelector }}
{{- with .Values.instanceType }}
instanceType: {{ . | quote }}
{{- end }}
{{- with .Values.nodeLabelSelector }}
labelSelector:
{{- toYaml . | nindent 8 }}
{{- end }}
{{- else }} {}
{{- end }}
inference:
Expand Down
31 changes: 30 additions & 1 deletion charts/modeldeployment/values.schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,36 @@
},
"instanceType": {
"type": "string",
"description": "VM instance type used for the underlying GPU nodes. Empty omits spec.template.resource.instanceType, as required on BYO-node clusters (KAITO nodeProvisioner=byo)."
"description": "VM instance type used for the underlying GPU nodes. Empty omits spec.template.resource.instanceType. Required with node auto-provisioning; optional on BYO-node clusters (KAITO nodeProvisioner=byo), where it restricts GPU nodes to node.kubernetes.io/instance-type=<instanceType>."
},
"nodeLabelSelector": {
"description": "LabelSelector for the GPU nodes, rendered as spec.template.resource.labelSelector. Empty omits it: with node auto-provisioning it then inherits spec.labelSelector; on BYO-node clusters GPU nodes are auto-selected. Requires KAITO v0.13.0+.",
"anyOf": [
{"type": "null"},
{
"type": "object",
"additionalProperties": false,
"properties": {
"matchLabels": {
"type": "object",
"additionalProperties": {"type": "string"}
},
"matchExpressions": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"required": ["key", "operator"],
"properties": {
"key": {"type": "string", "minLength": 1},
"operator": {"type": "string", "enum": ["In", "NotIn", "Exists", "DoesNotExist"]},
"values": {"type": "array", "items": {"type": "string"}}
}
}
}
}
}
]
},
"replicas": {
"anyOf": [
Expand Down
9 changes: 8 additions & 1 deletion charts/modeldeployment/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,16 @@ config: ""
# modelAccessSecret names the Secret holding the Hugging Face access credentials.
modelAccessSecret: ""

# instanceType is the VM instance type of the GPU nodes; set "" on BYO-node clusters to omit it.
# instanceType is the VM instance type of the GPU nodes; "" omits it. Required with node auto-provisioning;
# optional on BYO-node clusters, where it restricts GPU nodes to node.kubernetes.io/instance-type=<instanceType>.
instanceType: "Standard_NV36ads_A10_v5"

# nodeLabelSelector is a LabelSelector (matchLabels / matchExpressions) for the GPU nodes, rendered as
# spec.template.resource.labelSelector; empty omits it. With node auto-provisioning an empty value inherits the
# InferenceSet spec.labelSelector; on BYO-node clusters GPU nodes are auto-selected. Requires a KAITO release with
# kaito-project/kaito#2444 (v0.13.0+); older CRDs silently drop it.
nodeLabelSelector: {}

# replicas sets spec.replicas when not empty (otherwise the CRD default of 1); with enableScaling it must lie
# within [minReplicas, maxReplicas] and is reapplied on upgrade only when its value changes.
replicas: ""
Expand Down
Loading