logo
Alauda AI
English
Русский
English
Русский
logo
Alauda AI
Навигация

Обзор

Введение
Быстрый старт
Примечания к выпуску

Установка

Предварительная настройка
Установка Alauda AI Essentials
Установка Alauda AI

Обновление

Обновление с AI 1.3

Удаление

Удаление

Управление инфраструктурой

Управление устройствами

О Alauda Build of Hami
О плагине устройства NVIDIA GPU от Alauda Build

Мультиарендность

Руководства

Управление пространствами имён

Рабочее пространство

Обзор

Введение
Установка
Обновление

Как сделать

Создание WorkspaceKind
Создание Workbench

Развертывание модели и вывод

Обзор

Введение
Features

Сервис вывода

Введение

Руководства

Inference Service

Как сделать

Extend Inference Runtimes
Configure External Access for Inference Services
Configure Scaling for Inference Services

Устранение неполадок

Проблемы с таймаутами сервиса инференса при использовании MLServer Runtime
Служба инференса не переходит в состояние Running

Управление моделями

Введение

Руководства

Model Repository

Мониторинг и операции

Обзор

Введение
Features Overview

Ведение журналов и трассировка

Введение

Руководства

Логирование

Мониторинг ресурсов

Введение

Руководства

Мониторинг ресурсов

Справочник API

Введение

Kubernetes APIs

Inference Service APIs

ClusterServingRuntime [serving.kserve.io/v1alpha1]
InferenceService [serving.kserve.io/v1beta1]

Workbench APIs

Workspace Kind [kubeflow.org/v1beta1]
Workspace [kubeflow.org/v1beta1]

Manage APIs

AmlNamespace [manage.aml.dev/v1alpha1]

Operator APIs

AmlCluster [amlclusters.aml.dev/v1alpha1]
Глоссарий
Предыдущая страницаКак сделать
Следующая страницаConfigure External Access for Inference Services

#Extend Inference Runtimes

#Содержание

#Introduction

Этот документ пошагово объясняет, как добавить новые среды выполнения инференса для обслуживания как больших языковых моделей (LLM), так и любых других моделей, таких как «классификация изображений», «обнаружение объектов», «классификация текста» и т. д.

Alauda AI поставляется с встроенным движком инференса «vLLM». С помощью «custom inference runtimes» вы можете добавить дополнительные движки инференса, например, Seldon MLServer, Triton inference server и другие.

Внедряя пользовательские среды выполнения, вы расширяете поддержку платформой более широкого спектра типов моделей и типов GPU, а также оптимизируете производительность для конкретных сценариев, чтобы удовлетворить более разнообразные бизнес-требования.

В этом разделе мы продемонстрируем расширение текущей AI платформы с помощью пользовательской среды выполнения сервиса инференса XInfernece для развертывания LLM и обслуживания «OpenAI совместимого API».

#Scenarios

Рассмотрите возможность расширения сред выполнения сервиса инференса вашей AI платформы, если вы столкнулись с одной из следующих ситуаций:

  • Поддержка новых типов моделей: Ваша модель не поддерживается по умолчанию текущей средой выполнения инференса vLLM.
  • Совместимость с другими типами GPU: Вам необходимо выполнять инференс LLM на оборудовании с GPU, например AMD или Huawei Ascend.
  • Оптимизация производительности для конкретных сценариев: В некоторых сценариях инференса новая среда выполнения (например, Xinference) может обеспечить лучшую производительность или более эффективное использование ресурсов по сравнению с существующими средами.
  • Пользовательская логика инференса: Вам нужно внедрить кастомную логику инференса или зависимые библиотеки, которые сложно реализовать в существующих стандартных средах выполнения.

#Prerequisites

Перед началом убедитесь, что выполнены следующие условия:

  1. Ваш кластер ACP развернут и работает нормально.
  2. Версия вашей AI платформы 1.3 или выше.
  3. У вас подготовлены необходимые образы среды выполнения инференса. Например, для среды Xinference образы могут выглядеть как xprobe/xinference:v1.2.2 (для GPU) или xprobe/xinference:v1.2.2-cpu (для CPU).
  4. У вас есть привилегии администратора кластера (необходимы для создания экземпляров CRD).

#Steps

#Создание ресурсов среды выполнения инференса

Вам нужно создать соответствующие ресурсы среды выполнения инференса в зависимости от целевой аппаратной среды (GPU/CPU/NPU).

  1. Подготовьте YAML-конфигурацию среды выполнения:

    В зависимости от типа среды выполнения, которую вы хотите добавить (например, Xinference), и вашей целевой аппаратной среды подготовьте соответствующий YAML-файл конфигурации. Ниже приведены примеры для среды Xinference на разных аппаратных платформах:

  • Пример среды для GPU
    # Пример YAML для среды Xinference GPU
    apiVersion: serving.kserve.io/v1alpha1
    kind: ClusterServingRuntime
    metadata:
      name: aml-xinference-cuda-12.1 # Имя ресурса среды выполнения
      labels:
        cpaas.io/runtime-class: xinference # обязательная метка типа среды выполнения
        cpaas.io/accelerator-type: "nvidia"
        cpaas.io/cuda-version: "12.1"
      annotations:
        cpaas.io/display-name: xinference-cuda-12.1 # Отображаемое имя в UI
    spec:
      containers:
      - name: kserve-container
        image: xprobe/xinference:v1.2.2  # Замените на ваш реальный образ среды выполнения для GPU
        env:
        # Обязательный параметр для всех сред – путь к директории модели
        - name: MODEL_PATH
          value: /mnt/models/{{ index .Annotations "aml-model-repo" }}
        # Параметр MODEL_UID необязателен для других сред.
        - name: MODEL_UID 
          value: '{{ index .Annotations "aml-model-repo" }}'
        # Параметр MODEL_ENGINE обязателен для среды Xinference, для других сред может быть опущен.
        - name: MODEL_ENGINE 
          value: "transformers"
        # Обязательный параметр для среды xinference, установите в соответствии с семейством вашей модели, например: "llama", "chatglm" и т.д.
        - name: MODEL_FAMILY 
          value: ""
        command:
        - bash
        - -c
        - |
            set +e
            if [ "${MODEL_PATH}" == "" ]; then
                echo "Необходимо задать MODEL_PATH!"
                exit 1
            fi
            if [ "${MODEL_ENGINE}" == "" ]; then
                echo "Необходимо задать MODEL_ENGINE!"
                exit 1
            fi
            if [ "${MODEL_UID}" == "" ]; then
                echo "Необходимо задать MODEL_UID!"
                exit 1
            fi
            if [ "${MODEL_FAMILY}" == "" ]; then
                echo "Необходимо задать MODEL_FAMILY!"
                exit 1
            fi
    
            xinference-local --host 0.0.0.0 --port 8080 &
            PID=$!
            while [ true ];
            do
                curl http://127.0.0.1:8080/docs
                if [ $? -eq 0 ]; then
                    break
                else
                    echo "ожидание готовности сервера xinference-local..."
                    sleep 1
                fi
            done
    
            set -e
            xinference launch --model_path ${MODEL_PATH} --model-engine ${MODEL_ENGINE} -u ${MODEL_UID} -n ${MODEL_FAMILY} -e http://127.0.0.1:8080 $@
            xinference list -e http://127.0.0.1:8080
            echo "модель успешно загружена, ожидание процесса сервера: ${PID}..."
            wait ${PID}
        # Добавьте эту строку для использования $@ в скрипте:
        # см.: https://unix.stackexchange.com/questions/144514/add-arguments-to-bash-c
        - bash
        resources:
          limits:
            cpu: 2
            memory: 6Gi
          requests:
            cpu: 2
            memory: 6Gi
        startupProbe:
          httpGet:
            path: /docs
            port: 8080
            scheme: HTTP
          failureThreshold: 60 
          periodSeconds: 10
          timeoutSeconds: 10
      supportedModelFormats:
        - name: transformers # Формат модели, поддерживаемый средой выполнения
          version: "1"
    
    • Совет: Обязательно замените значение поля image на путь к вашему реальному подготовленному образу среды выполнения. Также вы можете изменить поле annotations.cpaas.io/display-name для кастомизации отображаемого имени среды выполнения в UI AI платформы.
  1. Примените YAML-файл для создания ресурса:

    В терминале с правами администратора кластера выполните команду для применения вашего YAML-файла и создания ресурса среды выполнения инференса:

    kubectl apply -f your-xinference-runtime.yaml
    TIP
    • Важный совет: Пожалуйста, ориентируйтесь на приведённые выше примеры и создавайте/настраивайте среду выполнения в соответствии с вашей реальной средой и требованиями инференса. Эти примеры приведены только для справки. Вам нужно будет скорректировать параметры, такие как образ, лимиты и запросы ресурсов, чтобы обеспечить совместимость среды выполнения с вашей моделью и аппаратной средой, а также эффективную работу.
    • Примечание: Вы сможете использовать эту пользовательскую среду выполнения на странице публикации сервиса инференса только после создания ресурса среды выполнения!

#Публикация сервиса инференса Xinference и выбор среды выполнения

После успешного создания ресурса среды выполнения Xinference вы сможете выбрать и настроить её при публикации сервиса инференса LLM на AI платформе.

  1. Настройте фреймворк инференса для модели:

    Убедитесь, что на странице деталей модели в репозитории моделей, которую вы собираетесь публиковать, выбран соответствующий framework через функцию редактирования метаданных File Management. Значение параметра framework, выбранное здесь, должно совпадать со значением из поля supportedModelFormats, указанного при создании среды выполнения инференса. Пожалуйста, убедитесь, что значение параметра framework модели входит в список supportedModelFormats, установленный в среде выполнения инференса.

  2. Перейдите на страницу публикации сервиса инференса:

    Войдите в AI платформу и перейдите в модули «Inference Services» или «Model Deployment», затем нажмите «Publish Inference Service».

  3. Выберите среду выполнения Xinference:

    В мастере создания сервиса инференса найдите опцию «Runtime» или «Inference Framework». В выпадающем списке или меню выберите среду выполнения Xinference, которую вы создали на шаге 1 (например, «Xinference CPU Runtime» или «Xinference GPU Runtime (CUDA)»).

  4. Установите переменные окружения: Среда выполнения Xinference требует определённых переменных окружения для корректной работы. На странице конфигурации сервиса инференса найдите раздел «Environment Variables» или «More Settings» и добавьте следующую переменную окружения:

    • Описание параметра переменной окружения

      Имя параметраОписание
      MODEL_FAMILYОбязательно. Указывает семейство LLM модели, которую вы разворачиваете. Xinference использует этот параметр для идентификации и загрузки правильной логики инференса для модели. Например, если вы разворачиваете модель Llama 3, установите значение llama; если это модель ChatGLM, установите chatglm. Пожалуйста, задайте это в соответствии с реальным семейством вашей модели.
    • Пример:

      • Имя переменной: MODEL_FAMILY
      • Значение переменной: llama (если вы используете модель серии Llama, ознакомьтесь с документацией для подробностей. Или выполните команду xinference registrations -t LLM для списка всех поддерживаемых семейств моделей.)