Стадия жизненного цикла модуляExperimental

У модуля есть требования для установки

Deckhouse Platform устанавливает CRD, но не удаляет их при отключении модуля. Если вам больше не нужны созданные CRD, удалите их.

InferenceServiceClass

Short names: isc

Scope: Cluster
Version: v1alpha1

InferenceServiceClass задаёт политику публикации точки доступа, опциональные политики admission, scaling и update, modelPolicy для каталога ai-models и acceleratorPolicy для планировщика; список допустимых DeviceClass — в spec.acceleratorPolicy.allowedDeviceClasses.
  • spec
    объект
    Желаемое состояние класса сервиса инференса.
    • spec.acceleratorPolicy
      объект
      Ограничения размещения GPU для заказов этого класса; ограничивают исход планирования, потому что заказ ускоритель не запрашивает.
      • spec.acceleratorPolicy.allowedDeviceClasses
        массив строк
        Опциональный список допустимых имён кластерных DeviceClass для размещения планировщиком; при пустом значении или отсутствии поля размещение учитывает все кандидаты DeviceClass в кластере.
      • spec.acceleratorPolicy.allowedPlacementTypes
        массив строк

        Обязательный параметр

        Допустимые режимы размещения (Partition, WholeDevice).
        • spec.acceleratorPolicy.allowedPlacementTypes.Элемент массива
          строка
          AcceleratorPlacementType selects whole-device or partition placement.

          Допустимые значения: Partition, WholeDevice

      • spec.acceleratorPolicy.allowedSharingModes
        массив строк

        Обязательный параметр

        Допустимые режимы совместного использования ускорителя (Shared, Dedicated).
        • spec.acceleratorPolicy.allowedSharingModes.Элемент массива
          строка
          AcceleratorSharingMode selects how accelerators may be shared between workloads.

          Допустимые значения: Shared, Dedicated

      • spec.acceleratorPolicy.maxAcceleratorCount
        целочисленный

        Обязательный параметр

        Верхняя граница числа устройств, которое план запуска назначит одной реплике заказа этого класса.

        Допустимые значения: 1 <= X

      • spec.acceleratorPolicy.maxSharePercent
        целочисленный
        Необязательная верхняя граница доли устройства, которую назначит план запуска, в процентах.

        Допустимые значения: 1 <= X <= 100

      • spec.acceleratorPolicy.minSharePercent
        целочисленный
        Необязательная нижняя граница доли устройства, которую назначит план запуска, в процентах.

        Допустимые значения: 1 <= X <= 100

    • spec.admissionPolicy
      объект
      Ограничение namespace, в которых разрешены заказы на этот класс.
      • spec.admissionPolicy.allowedNamespaces
        массив строк

        Обязательный параметр

        Список разрешённых namespace; значение “*” разрешает любой namespace.
    • spec.exposurePolicy
      объект

      Обязательный параметр

      Политика публикации точки доступа и аутентификации.
      • spec.exposurePolicy.authentication
        строка

        Обязательный параметр

        Способ аутентификации клиентов API инференса (Token или None).

        Допустимые значения: Token, None

      • spec.exposurePolicy.https
        объект
        Опциональные параметры TLS Ingress при внешней публикации (type External).
        • spec.exposurePolicy.https.certManager
          объект
          Параметры cert-manager при режиме CertManager.
          • spec.exposurePolicy.https.certManager.clusterIssuerName
            строка

            Обязательный параметр

            Имя кластерного ClusterIssuer cert-manager.

            Минимальная длина: 1

        • spec.exposurePolicy.https.customCertificate
          объект
          Параметры пользовательского сертификата при режиме CustomCertificate.
          • spec.exposurePolicy.https.customCertificate.secretName
            строка

            Обязательный параметр

            Имя секрета TLS в namespace d8-system.

            Минимальная длина: 1

        • spec.exposurePolicy.https.mode
          строка
          Режим HTTPS для внешней публикации (Disabled, CertManager, CustomCertificate или OnlyInURI).

          Допустимые значения: Disabled, CertManager, CustomCertificate, OnlyInURI

      • spec.exposurePolicy.type
        строка

        Обязательный параметр

        Тип публикации точки доступа (ClusterLocal или External).

        Допустимые значения: ClusterLocal, External

    • spec.modelPolicy
      объект
      Ограничения на заказы с model.src ai-models; проверяются контроллером по фактам каталога.
      • spec.modelPolicy.allowedEndpointTypes
        массив строк

        Обязательный параметр

        Перечень разрешённых договоров API инференса на классе (Chat, Embeddings и т.д.). Обязателен и непуст: договор заказа выбирается из этого перечня, и заказ его не называет.
        • spec.modelPolicy.allowedEndpointTypes.Элемент массива
          строка
          InferenceAPIEndpointType is the serving API taxonomy aligned with ai-models catalog facts.

          Допустимые значения: Chat, Embeddings, Rerank

      • spec.modelPolicy.allowedFormats
        массив строк
        Опциональный список допустимых форматов артефакта (Safetensors, GGUF и т.д.).
      • spec.modelPolicy.maxParameterCount
        строка
        Опциональный верхний предел размера модели (например 32B, 70B).

        Шаблон: ^[0-9]+(\.[0-9]+)?[MmBb]$

    • spec.modelStorageClassName
      строка
      Необязательное имя StorageClass для тома модели заказов этого класса. Его никто не вычисляет: это решение о том, где лежит модель, и принимает его администратор класса. При отсутствии том достаётся классу хранения кластера по умолчанию.
    • spec.scalingPolicy
      объект
      Единственный источник границ числа копий заказа и allow-list имён PriorityClass. Заказ границ не называет, поэтому класс без этого блока даёт своим заказам одну копию.
      • spec.scalingPolicy.allowedPriorityClassNames
        массив строк
        Имена Kubernetes PriorityClass, которые класс предлагает своим заказам; заказ своего имени не называет, поэтому при непустом списке первый элемент и есть эффективное имя, а при пустом эффективное имя остаётся за PriorityClass кластера с globalDefault.
      • spec.scalingPolicy.maxReplicas
        целочисленный
        Максимальное число копий заказов этого класса.

        Допустимые значения: 1 <= X

      • spec.scalingPolicy.minReplicas
        целочисленный
        Минимальное число копий заказов этого класса. Ограничение minimum 1 действует на этот пользовательский вход; вытеснение пишет границы в нагрузку заказа и может увести её в ноль.

        Допустимые значения: 1 <= X

    • spec.updatePolicy
      объект
      Стратегия обновления рабочей нагрузки заказа.
      • spec.updatePolicy.strategy
        строка

        Обязательный параметр

        Способ, которым переводятся копии заказа, когда платформа вправе их двигать.

        Допустимые значения: RollingUpdate

  • status
    объект
    Наблюдаемое состояние класса сервиса инференса.
    • status.conditions
      массив объектов
      Условия проверки и готовности класса.
      • status.conditions.lastTransitionTime
        строка
        Время последнего изменения состояния условия.
      • status.conditions.message
        строка
        Человекочитаемое сообщение о переходе условия.

        Максимальная длина: 32768

      • status.conditions.observedGeneration
        целочисленный
        Поколение объекта, для которого актуально условие.

        Допустимые значения: 0 <= X

      • status.conditions.reason
        строка
        Программный идентификатор причины перехода условия.

        Длина: 1..1024

        Шаблон: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$

      • status.conditions.status
        строка
        Состояние условия (True, False или Unknown).

        Допустимые значения: True, False, Unknown

      • status.conditions.type
        строка
        Тип условия (Validated, Ready).

        Максимальная длина: 316

        Шаблон: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$

    • status.observedGeneration
      целочисленный
      Последнее поколение metadata, обработанное контроллером.
    • status.phase
      строка
      Фаза жизненного цикла (Pending, Ready или Failed).

InferenceService

Short names: is

Scope: Namespaced
Version: v1alpha1

InferenceService описывает заказ инференса. Заказ — это ссылка на класс и модель, и опционально — сужение перечня допустимых классов устройства ускорителя и выбор ветки рецепта. Договор API инференса платформа выбирает из перечня класса, рантайм и его параметры приходят из записи рецепта плана запуска — spec.launchStrategy лишь называет, какая ветка этого рецепта применяется. Долю ускорителя и оценки заказу назначает платформа; сузить перечень классов устройства ускорителя заказ может сам полем spec.resources.accelerator.deviceClasses. Путь через каталог ai-models задаётся полем spec.model.src.
  • spec
    объект
    Желаемое состояние заказа инференса.
    • spec.inferenceServiceClassName
      строка
      Имя кластерного InferenceServiceClass.
    • spec.launchStrategy
      строка
      Ветка скомпилированного рецепта (Latency, Throughput или Balance); по умолчанию Latency. Ветки на подавляющем большинстве железа действительно расходятся по maxModelLen (замер phase-2-4-405).

      Допустимые значения: Latency, Throughput, Balance

    • spec.model
      объект

      Обязательный параметр

      Спецификация модели — объект ref (Hugging Face — name; каталог ai-models — kind и name).
      • spec.model.authSecretRef
        объект
        Ссылка на Secret с учётными данными Hugging Face, только на прямом пути. Артефакт записи каталога монтирует модуль ai-models со своими учётными данными, поэтому на пути каталога поле отклоняется на записи.
        • spec.model.authSecretRef.key
          строка
          Ключ в data Secret с учётными данными; если не задан, платформа использует «token».
        • spec.model.authSecretRef.name
          строка

          Обязательный параметр

          Имя Secret в том же namespace.

          Минимальная длина: 1

      • spec.model.parameterCount
        строка
        Размер модели на прямом пути HuggingFace, и только там. Заказ через каталог ai-models берёт размер из фактов записи каталога, а поле отклоняется на записи.

        Шаблон: ^[0-9]+(\.[0-9]+)?[MmBb]$

      • spec.model.ref
        объект

        Обязательный параметр

        Объект ссылки на модель — name обязателен; kind и namespace для пути ai-models.
        • spec.model.ref.kind
          строка
          Вид CR каталога — Model или ClusterModel; для HuggingFace не задаётся.

          Допустимые значения: Model, ClusterModel

        • spec.model.ref.name
          строка

          Обязательный параметр

          Идентификатор модели Hugging Face или metadata.name CR каталога.

          Минимальная длина: 1

        • spec.model.ref.namespace
          строка
          Опциональный namespace для kind Model; должен совпадать с namespace заказа.
      • spec.model.src
        строка

        Обязательный параметр

        Источник модели — HuggingFace или ai-models.

        Допустимые значения: HuggingFace, ai-models

    • spec.resources
      объект
      Опционально сужает перечень допустимых классов устройства ускорителя. Число устройств и долю одного заказ не называет — их назначает план запуска.
      • spec.resources.accelerator
        объект
        Опционально сужает перечень допустимых классов устройства ускорителя для заказа.
        • spec.resources.accelerator.deviceClasses
          массив строк
          Перечень имён DeviceClass, которыми заказ сужает выбор ускорителя. Эффективный перечень для плана запуска — пересечение с acceleratorPolicy.allowedDeviceClasses класса; пустое пересечение — отказ с reason ClaimDeviceMissing.
  • status
    объект
    Наблюдаемое состояние заказа инференса.
    • status.authSecretName
      строка
      Имя Secret с токеном доступа при аутентификации Token.
    • status.conditions
      массив объектов
      Условия разрешения класса, модели, готовности нагрузки заказа и готовности сервиса.
      • status.conditions.lastTransitionTime
        строка
        Время последнего изменения состояния условия.
      • status.conditions.message
        строка
        Человекочитаемое сообщение о переходе условия.

        Максимальная длина: 32768

      • status.conditions.observedGeneration
        целочисленный
        Поколение объекта, для которого актуально условие.

        Допустимые значения: 0 <= X

      • status.conditions.reason
        строка
        Программный идентификатор причины перехода условия.

        Длина: 1..1024

        Шаблон: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$

      • status.conditions.status
        строка
        Состояние условия (True, False или Unknown).

        Допустимые значения: True, False, Unknown

      • status.conditions.type
        строка
        Тип условия (ClassResolved, ModelResolved, Planned, WorkloadReady, Ready, ScalingHealthy).

        Максимальная длина: 316

        Шаблон: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$

    • status.constraints
      объект
      Эффективные границы реплик и область модели каталога после проверки заказа по классу.
      • status.constraints.maxReplicas
        целочисленный
        Эффективный максимум реплик; у поля два происхождения. Вне эпизода вытеснения это граница, полученная проверкой заказа против политики масштабирования его класса. Пока эпизод держит заказ донором, это граница удержания, и восстановление донора возвращает границу политики.
      • status.constraints.minReplicas
        целочисленный
        Эффективный минимум реплик.
      • status.constraints.modelScope
        строка
        Область модели из фактов каталога (например Cluster).
      • status.constraints.priorityClassName
        строка
        Эффективное имя PriorityClass после проверки; пустое при отсутствии globalDefault кластера (числовой приоритет 0).
    • status.endpoint
      объект
      Опубликованный URL API инференса.
      • status.endpoint.toolCallingSupported
        булевый
        Объявляет, поддерживает ли разрешённый план вызов инструментов: true — план несёт toolCallParser в runtime.parameters, false — план разрешён, но без этого ключа. Поле отсутствует, пока план ещё не разрешён.
      • status.endpoint.type
        строка
        Тип публикации точки доступа (ClusterLocal или External); не путать с типом API в status.model.endpointType.
      • status.endpoint.url
        строка
        HTTP(S)-адрес API инференса для клиентов.
    • status.model
      объект
      Метаданные пути через каталог после успешной проверки заказа по классу.
      • status.model.endpointType
        строка
        Тип API инференса, выбранный платформой для заказа после проверки по классу (Chat, Embeddings и т.д.). Сам заказ тип не называет.

        Допустимые значения: Chat, Embeddings, Rerank

    • status.observedGeneration
      целочисленный
      Последнее поколение metadata, обработанное контроллером.
    • status.phase
      строка
      Фаза жизненного цикла (Pending, Ready, Degraded или Failed).
    • status.resolved
      объект
      Размещение, по которому запущен заказ, после успешного планирования.
      • status.resolved.acceleratorMemoryGiB
        целочисленный
        Доступная память ускорителя для выбранного размещения.
      • status.resolved.acceleratorProductName
        строка
        Продуктовое имя выбранного ускорителя.
      • status.resolved.deviceClass
        строка
        Рекомендуемый планировщиком класс устройства DRA для заявки на устройство заказа.
      • status.resolved.excludedDeviceClasses
        массив строк
        Список исключённых cluster DeviceClass CR после неудачных replan.
      • status.resolved.placementMode
        строка
        Режим размещения (Partition или WholeDevice).

        Допустимые значения: Partition, WholeDevice

      • status.resolved.replanCount
        целочисленный
        Число выполненных replan из-за сбоя или зависшего ResourceClaim.
      • status.resolved.sharePercent
        целочисленный
        Доля устройства, назначенная планом запуска этого заказа, в процентах; сто означает целое устройство. По ней владелец заказа видит, какая часть карты его, и по ней же платформа считает занятость карты соседями.
      • status.resolved.sharingMode
        строка
        Режим совместного использования ускорителя (Shared или Dedicated); от режима размещения не зависит.

        Допустимые значения: Shared, Dedicated