Skip to content
Closed
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
274 changes: 271 additions & 3 deletions apis/modeldeployments/definition.yaml

Large diffs are not rendered by default.

181 changes: 180 additions & 1 deletion apis/modelreplicas/definition.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,6 @@ spec:
count:
type: integer
minimum: 1
default: 1
topology:
type: object
required: [tensor]
Expand Down Expand Up @@ -214,5 +213,185 @@ spec:
properties:
name:
type: string
prefill:
type: object
description: >-
Prefill role placement for a disaggregated replica. Mirrors the
top-level decode fields (workers, nodePoolName, deviceRequests),
pinned to the prefill pool the scheduler chose. Absent for
unified replicas. When present, all three fields are required:
compose-model-deployment always populates them, and the llm-d
backend reads them unconditionally.
required: [workers, nodePoolName, deviceRequests]
properties:
workers:
type: object
required: [topology, template]
properties:
count:
type: integer
minimum: 1
topology:
type: object
required: [tensor]
properties:
tensor:
type: integer
minimum: 1
pipeline:
type: integer
minimum: 1
default: 1
template:
type: object
properties:
metadata:
type: object
properties:
labels:
type: object
additionalProperties:
type: string
annotations:
type: object
additionalProperties:
type: string
spec:
type: object
required: [containers]
properties:
containers:
type: array
minItems: 1
maxItems: 1
x-kubernetes-validations:
- rule: "self.exists_one(c, c.name == 'engine')"
message: "the single container must be named 'engine'"
items:
type: object
required: [name, image]
properties:
name:
type: string
minLength: 1
image:
type: string
minLength: 1
command:
type: array
items:
type: string
args:
type: array
items:
type: string
env:
type: array
items:
type: object
required: [name]
properties:
name:
type: string
value:
type: string
valueFrom:
type: object
properties:
secretKeyRef:
type: object
required: [name, key]
properties:
name:
type: string
key:
type: string
optional:
type: boolean
configMapKeyRef:
type: object
required: [name, key]
properties:
name:
type: string
key:
type: string
optional:
type: boolean
imagePullSecrets:
type: array
items:
type: object
required: [name]
properties:
name:
type: string
nodePoolName:
type: string
description: The prefill pool on this replica's cluster.
deviceRequests:
type: array
description: >-
Resolved DRA device requests for the matched pool. The parent
ModelDeployment's compose function joins the nodeSelector
requests with the matched InferenceClass devices and stamps the
claim: DRA devices here. This function turns each into a
DeviceRequest in a DRA ResourceClaim for the serving pods. At
least one request is always present: the scheduler only pins a
replica to a pool that yields a claimable device, so the
serving workload always has a ResourceClaim to bind through.
minItems: 1
maxItems: 16
x-kubernetes-list-type: map
x-kubernetes-list-map-keys: [name]
items:
type: object
required: [name, deviceClassName]
properties:
name:
type: string
description: Request name; becomes the DeviceRequest name.
minLength: 1
maxLength: 63
deviceClassName:
type: string
description: >-
Cluster-scoped DRA DeviceClass to claim through, from the
matched InferenceClass device.
minLength: 1
maxLength: 253
count:
type: integer
description: How many devices to claim.
default: 1
minimum: 1
maximum: 64
selectors:
type: array
description: >-
DRA CEL selectors copied verbatim from the nodeSelector
request, ANDed in the DeviceRequest.
maxItems: 8
x-kubernetes-list-type: atomic
items:
type: object
# A selector must carry a selector kind (today only cel).
# An empty {} selector would match any device, silently
# widening the DRA claim the serving pod binds through.
minProperties: 1
properties:
cel:
type: string
minLength: 1
maxLength: 10240
routing:
type: object
properties:
template:
type: object
properties:
spec:
type: object
x-kubernetes-preserve-unknown-fields: true
status:
type: object
Loading
Loading