API Reference#
Packages#
aim.eai.amd.com/v1alpha2#
Package v1alpha2 contains API Schema definitions for the aim v1alpha2 API group.
Resource Types#
AIMClusterModel#
AIMClusterModel is the Schema for cluster-scoped v1alpha2 AIM model resources. See AIMModel (api/v1alpha2/aimmodel_types.go) for the rationale of the CEL rules below — AIMClusterModel mirrors the namespace-scoped contract.
Appears in:
Field |
Description |
Default |
Validation |
|---|---|---|---|
|
|
||
|
|
||
|
Refer to Kubernetes API documentation for fields of |
||
|
|||
|
AIMClusterModelList#
AIMClusterModelList contains a list of AIMClusterModel.
Field |
Description |
Default |
Validation |
|---|---|---|---|
|
|
||
|
|
||
|
Refer to Kubernetes API documentation for fields of |
||
|
AIMClusterProfile#
AIMClusterProfile is the Schema for cluster-scoped AIM profiles. Cluster profiles are visible across all namespaces. They can be created manually or, in the future, automatically during model discovery by a v1alpha2 model controller. Unlike namespace-scoped AIMProfiles, cluster profiles do not support caching configuration since caches are namespace-scoped.
Deployable profiles have both aimId and modelSources populated; base profiles (custom-model derivation source material) have neither. Mixed (one of the two set) is rejected to keep status.deployable derivable from spec.
Appears in:
Field |
Description |
Default |
Validation |
|---|---|---|---|
|
|
||
|
|
||
|
Refer to Kubernetes API documentation for fields of |
||
|
AIMClusterProfileList#
AIMClusterProfileList contains a list of AIMClusterProfile.
Field |
Description |
Default |
Validation |
|---|---|---|---|
|
|
||
|
|
||
|
Refer to Kubernetes API documentation for fields of |
||
|
AIMClusterProfileSet#
AIMClusterProfileSet is the Schema for cluster-scoped profile derivation resources.
Appears in:
Field |
Description |
Default |
Validation |
|---|---|---|---|
|
|
||
|
|
||
|
Refer to Kubernetes API documentation for fields of |
||
|
|||
|
AIMClusterProfileSetList#
AIMClusterProfileSetList contains a list of AIMClusterProfileSet.
Field |
Description |
Default |
Validation |
|---|---|---|---|
|
|
||
|
|
||
|
Refer to Kubernetes API documentation for fields of |
||
|
AIMClusterProfileSpec#
AIMClusterProfileSpec defines the desired state of a cluster-scoped AIMClusterProfile.
Appears in:
Field |
Description |
Default |
Validation |
|---|---|---|---|
|
AimId is the model architecture identifier (e.g., “qwen/qwen3-32b”). |
Optional: {} |
|
|
ModelId is the specific model / HuggingFace URI (e.g., “qwen/qwen3-32b-fp8”). |
Optional: {} |
|
|
ProfileId is the on-disk profile identifier from the AIM image |
Optional: {} |
|
|
Engine identifies the inference engine (e.g., “vllm”, “tgi”). |
Optional: {} |
|
|
Metric is the optimization target for this profile. |
Enum: [latency throughput] |
|
|
Precision is the numeric precision used by this profile. |
Enum: [fp4 fp8 fp16 fp32 bf16 int4 int8] |
|
|
Type indicates the optimization level. Hierarchy: optimized > general > preview > unoptimized. |
Enum: [optimized general preview unoptimized] |
|
|
Primary marks this as a default/recommended profile. When true, the profile is |
false |
|
|
ManualSelectionOnly is DEPRECATED and no longer honored by the resolver. |
false |
|
|
EngineArgs contains inference engine CLI arguments as a free-form JSON object. |
Schemaless: {} |
|
|
EngineEnv contains environment variables for the inference engine subprocess. |
Optional: {} |
|
|
AcceleratorModel is the accelerator identifier for node selection. |
MaxLength: 63 |
|
|
AcceleratorType determines the resource derivation strategy: gpu or cpu. |
Enum: [gpu cpu] |
|
|
AcceleratorCount is the number of accelerator units required. |
Minimum: 0 |
|
|
AcceleratorPartitioningMode declares the GPU partition state the profile |
unpartitioned |
MaxLength: 63 |
|
Resources is an optional override for K8s resource requests/limits. |
Optional: {} |
|
|
Image is the deployment container image. Required. |
MinLength: 1 |
|
|
ModelSources specifies model artifact sources for this profile. |
Optional: {} |
|
|
ContainerEnv specifies container-level env vars for the AIM runtime process (K8s pod spec). |
Optional: {} |
|
|
ImagePullSecrets lists secrets for pulling container images. |
Optional: {} |
|
|
ServiceAccountName specifies the service account for workloads. |
Optional: {} |
|
|
Features lists optional capabilities the profile’s image honours, e.g. |
Optional: {} |
AIMModel#
AIMModel is the Schema for the v1alpha2 AIMModel API.
AIMModel mirrors AIMService: the canonical Spec/Status types live in v1alpha1 and the v1alpha2 wrapper is a thin re-export so JSON wire format is identical between versions and the None conversion strategy works without a webhook.
v1alpha2 onboarding contract: exactly one of spec.image (official discovery) or spec.profiles (fine-tune / custom-model derivation); legacy v1alpha1 onboarding fields and the deprecated flat spec.derivedFrom shape are forbidden on NEW v1alpha2 objects. Each “forbidden” rule uses optionalOldSelf so that objects originally created via v1alpha1 (which legally carry spec.custom, spec.modelSources, spec.customTemplates, spec.profileCopy) and the early-iteration v1alpha2 objects (carrying spec.derivedFrom) can still be updated through the v1alpha2 surface — the reconciler must be able to add finalizers and patch the spec of legacy-shaped objects without being blocked by the v1alpha2 schema. Adding a legacy/deprecated field to an object that did not previously have it is still rejected.
Appears in:
Field |
Description |
Default |
Validation |
|---|---|---|---|
|
|
||
|
|
||
|
Refer to Kubernetes API documentation for fields of |
||
|
|||
|
AIMModelList#
AIMModelList contains a list of AIMModel.
AIMProfile#
AIMProfile is the Schema for namespace-scoped AIM profiles. A profile is a self-contained runtime configuration that answers five questions without consulting any other resource: model architecture, accelerator, K8s resources, runtime config, and container image.
Deployable profiles have both aimId and modelSources populated; base profiles (custom-model derivation source material) have neither. Mixed (one of the two set) is rejected to keep status.deployable derivable from spec.
Appears in:
Field |
Description |
Default |
Validation |
|---|---|---|---|
|
|
||
|
|
||
|
Refer to Kubernetes API documentation for fields of |
||
|
|||
|
AIMProfileCache#
AIMProfileCache pre-warms model artifacts for a specified profile’s model sources.
Appears in:
Field |
Description |
Default |
Validation |
|---|---|---|---|
|
|
||
|
|
||
|
Refer to Kubernetes API documentation for fields of |
||
|
|||
|
AIMProfileCacheList#
AIMProfileCacheList contains a list of AIMProfileCache.
Field |
Description |
Default |
Validation |
|---|---|---|---|
|
|
||
|
|
||
|
Refer to Kubernetes API documentation for fields of |
||
|
AIMProfileCacheMode#
Underlying type: string
AIMProfileCacheMode controls the ownership behavior of artifacts created by a profile cache.
Validation:
Enum: [Dedicated Shared]
Appears in:
Field |
Description |
|---|---|
|
ProfileCacheModeDedicated means artifacts are owned by this profile cache and |
|
ProfileCacheModeShared means artifacts have no owner references and persist |
AIMProfileCacheSpec#
AIMProfileCacheSpec defines the desired state of AIMProfileCache.
Appears in:
Field |
Description |
Default |
Validation |
|---|---|---|---|
|
ProfileName is the name of the AIMProfile or AIMClusterProfile to cache. |
MinLength: 1 |
|
|
ProfileScope indicates whether the profile is namespace-scoped or cluster-scoped. |
Enum: [Namespace Cluster] |
|
|
StorageClassName specifies the storage class for cache volumes. |
Optional: {} |
|
|
Env specifies environment variables for authentication when downloading models. |
Optional: {} |
|
|
Name is the name of the runtime config to use for this resource. If a runtime config with this name exists both |
Optional: {} |
|
|
Mode controls the ownership behavior of artifacts created by this profile cache. |
Shared |
Enum: [Dedicated Shared] |
|
RequiresAdapterDisk requests that the backing model artifact carry a shared |
Optional: {} |
AIMProfileCacheStatus#
AIMProfileCacheStatus defines the observed state of AIMProfileCache.
Appears in:
Field |
Description |
Default |
Validation |
|---|---|---|---|
|
ObservedGeneration is the most recent generation observed by the controller. |
||
|
Conditions represent the latest observations of the profile cache state. |
||
|
Status represents the current high-level status of the profile cache. |
Pending |
Enum: [Pending Progressing Ready Failed Degraded NotAvailable] |
|
Artifacts maps artifact names to their resolved AIMArtifact resources. |
Optional: {} |
AIMProfileCachingConfig#
AIMProfileCachingConfig configures model caching behavior for namespace-scoped profiles.
Appears in:
Field |
Description |
Default |
Validation |
|---|---|---|---|
|
Enabled controls whether caching is enabled for this profile. |
false |
|
|
Env specifies environment variables for model download during caching. |
Optional: {} |
AIMProfileList#
AIMProfileList contains a list of AIMProfile.
Field |
Description |
Default |
Validation |
|---|---|---|---|
|
|
||
|
|
||
|
Refer to Kubernetes API documentation for fields of |
||
|
AIMProfileSet#
AIMProfileSet is the Schema for namespace-scoped profile derivation resources.
Appears in:
Field |
Description |
Default |
Validation |
|---|---|---|---|
|
|
||
|
|
||
|
Refer to Kubernetes API documentation for fields of |
||
|
|||
|
AIMProfileSetList#
AIMProfileSetList contains a list of AIMProfileSet.
Field |
Description |
Default |
Validation |
|---|---|---|---|
|
|
||
|
|
||
|
Refer to Kubernetes API documentation for fields of |
||
|
AIMProfileSpec#
AIMProfileSpec defines the desired state of a namespace-scoped AIMProfile.
Appears in:
Field |
Description |
Default |
Validation |
|---|---|---|---|
|
AimId is the model architecture identifier (e.g., “qwen/qwen3-32b”). |
Optional: {} |
|
|
ModelId is the specific model / HuggingFace URI (e.g., “qwen/qwen3-32b-fp8”). |
Optional: {} |
|
|
ProfileId is the on-disk profile identifier from the AIM image |
Optional: {} |
|
|
Engine identifies the inference engine (e.g., “vllm”, “tgi”). |
Optional: {} |
|
|
Metric is the optimization target for this profile. |
Enum: [latency throughput] |
|
|
Precision is the numeric precision used by this profile. |
Enum: [fp4 fp8 fp16 fp32 bf16 int4 int8] |
|
|
Type indicates the optimization level. Hierarchy: optimized > general > preview > unoptimized. |
Enum: [optimized general preview unoptimized] |
|
|
Primary marks this as a default/recommended profile. When true, the profile is |
false |
|
|
ManualSelectionOnly is DEPRECATED and no longer honored by the resolver. |
false |
|
|
EngineArgs contains inference engine CLI arguments as a free-form JSON object. |
Schemaless: {} |
|
|
EngineEnv contains environment variables for the inference engine subprocess. |
Optional: {} |
|
|
AcceleratorModel is the accelerator identifier for node selection. |
MaxLength: 63 |
|
|
AcceleratorType determines the resource derivation strategy: gpu or cpu. |
Enum: [gpu cpu] |
|
|
AcceleratorCount is the number of accelerator units required. |
Minimum: 0 |
|
|
AcceleratorPartitioningMode declares the GPU partition state the profile |
unpartitioned |
MaxLength: 63 |
|
Resources is an optional override for K8s resource requests/limits. |
Optional: {} |
|
|
Image is the deployment container image. Required. |
MinLength: 1 |
|
|
ModelSources specifies model artifact sources for this profile. |
Optional: {} |
|
|
ContainerEnv specifies container-level env vars for the AIM runtime process (K8s pod spec). |
Optional: {} |
|
|
ImagePullSecrets lists secrets for pulling container images. |
Optional: {} |
|
|
ServiceAccountName specifies the service account for workloads. |
Optional: {} |
|
|
Features lists optional capabilities the profile’s image honours, e.g. |
Optional: {} |
|
|
Caching configures model caching behavior for this namespace-scoped profile. |
Optional: {} |
AIMProfileSpecCommon#
AIMProfileSpecCommon contains spec fields shared between AIMProfile and AIMClusterProfile. A profile answers five questions without consulting any other resource: model architecture (aimId), accelerator (acceleratorModel/Type/Count), K8s resources (status.resources), runtime config (engineArgs, engineEnv), and container image (image).
Appears in:
Field |
Description |
Default |
Validation |
|---|---|---|---|
|
AimId is the model architecture identifier (e.g., “qwen/qwen3-32b”). |
Optional: {} |
|
|
ModelId is the specific model / HuggingFace URI (e.g., “qwen/qwen3-32b-fp8”). |
Optional: {} |
|
|
ProfileId is the on-disk profile identifier from the AIM image |
Optional: {} |
|
|
Engine identifies the inference engine (e.g., “vllm”, “tgi”). |
Optional: {} |
|
|
Metric is the optimization target for this profile. |
Enum: [latency throughput] |
|
|
Precision is the numeric precision used by this profile. |
Enum: [fp4 fp8 fp16 fp32 bf16 int4 int8] |
|
|
Type indicates the optimization level. Hierarchy: optimized > general > preview > unoptimized. |
Enum: [optimized general preview unoptimized] |
|
|
Primary marks this as a default/recommended profile. When true, the profile is |
false |
|
|
ManualSelectionOnly is DEPRECATED and no longer honored by the resolver. |
false |
|
|
EngineArgs contains inference engine CLI arguments as a free-form JSON object. |
Schemaless: {} |
|
|
EngineEnv contains environment variables for the inference engine subprocess. |
Optional: {} |
|
|
AcceleratorModel is the accelerator identifier for node selection. |
MaxLength: 63 |
|
|
AcceleratorType determines the resource derivation strategy: gpu or cpu. |
Enum: [gpu cpu] |
|
|
AcceleratorCount is the number of accelerator units required. |
Minimum: 0 |
|
|
AcceleratorPartitioningMode declares the GPU partition state the profile |
unpartitioned |
MaxLength: 63 |
|
Resources is an optional override for K8s resource requests/limits. |
Optional: {} |
|
|
Image is the deployment container image. Required. |
MinLength: 1 |
|
|
ModelSources specifies model artifact sources for this profile. |
Optional: {} |
|
|
ContainerEnv specifies container-level env vars for the AIM runtime process (K8s pod spec). |
Optional: {} |
|
|
ImagePullSecrets lists secrets for pulling container images. |
Optional: {} |
|
|
ServiceAccountName specifies the service account for workloads. |
Optional: {} |
|
|
Features lists optional capabilities the profile’s image honours, e.g. |
Optional: {} |
AIMProfileStatus#
AIMProfileStatus defines the observed state of AIMProfile / AIMClusterProfile.
Appears in:
Field |
Description |
Default |
Validation |
|---|---|---|---|
|
ObservedGeneration is the most recent generation observed by the controller. |
||
|
Status represents the current high-level status of this profile. |
Pending |
Enum: [Pending Progressing Ready Degraded Failed NotAvailable] |
|
Deployable reports whether the profile is materialised enough to back an |
false |
|
|
SourceModel identifies the producing AIM(Cluster)Model for profiles |
Optional: {} |
|
|
Origin classifies how this profile was produced: |
Enum: [discovered derived user-authored] |
|
|
Version is extracted from the spec.image tag during reconciliation (e.g., “0.8.5”). |
Optional: {} |
|
|
BaseImage is the AIM_BASE_IMAGE_REF the inspector extracted from the |
Optional: {} |
|
|
MatchingNodes is the count of cluster nodes matching both the accelerator |
Optional: {} |
|
|
HardwareSummary is a human-readable string describing the hardware requirements. |
Optional: {} |
|
|
Resources contains the definitive K8s resource requests/limits used for deployment. |
Optional: {} |
|
|
ResolvedNodeAffinity contains the computed node affinity rules derived from |
Optional: {} |
|
|
Conditions represent the latest observations of profile state. |
AIMService#
AIMService manages a KServe-based AIM inference service for the selected model and template. Note: KServe uses {name}-{namespace} format which must not exceed 63 characters. This constraint is validated at runtime since CEL cannot access metadata.namespace.
Appears in:
Field |
Description |
Default |
Validation |
|---|---|---|---|
|
|
||
|
|
||
|
Refer to Kubernetes API documentation for fields of |
||
|
|||
|
AIMServiceList#
AIMServiceList contains a list of AIMService.
Field |
Description |
Default |
Validation |
|---|---|---|---|
|
|
||
|
|
||
|
Refer to Kubernetes API documentation for fields of |
||
|
ProfileSourceModel#
ProfileSourceModel identifies the producing AIM(Cluster)Model for a reconciler-produced profile. Stamped from owner references during reconciliation; left unset for user-authored profiles.
Appears in:
Field |
Description |
Default |
Validation |
|---|---|---|---|
|
Name is the producing model’s name. |
||
Kind is the producing model’s kind (“AIMModel” or “AIMClusterModel”). |
Enum: [AIMModel AIMClusterModel] |
||
|
Namespace is the producing model’s namespace. Empty when Kind is |
Optional: {} |
ProfileSourceModelKind#
Underlying type: string
ProfileSourceModelKind identifies whether a profile’s source model is namespace-scoped (AIMModel) or cluster-scoped (AIMClusterModel).
Validation:
Enum: [AIMModel AIMClusterModel]
Appears in:
Field |
Description |
|---|---|
|
|
|