Развертывание модели ИИ на Служба Azure Kubernetes (AKS) с помощью оператора цепочки инструментов ИИ (предварительная версия)

Оператор цепочки инструментов ИИ (KAITO) — это управляемая надстройка для AKS, которая упрощает выполнение моделей ИИ OSS в кластерах AKS. Оператор цепочки инструментов ИИ автоматически подготавливает необходимые узлы GPU и настраивает связанный сервер вывода в качестве сервера конечной точки для моделей ИИ. Использование этой надстройки сокращает время подключения и позволяет сосредоточиться на использовании и разработке моделей ИИ, а не на настройке инфраструктуры.

В этой статье показано, как включить надстройку оператора цепочки инструментов ИИ и развернуть модель ИИ в AKS.

Внимание

Предварительные версии функций AKS доступны на уровне самообслуживания. Предварительные версии предоставляются "как есть" и "при наличии". На них не распространяются соглашения об уровне обслуживания и ограниченная гарантия. Предварительные версии AKS предоставляются с частичной клиентской поддержкой по мере возможности. Следовательно, эти функции не предназначены для использования в рабочей среде. Дополнительные сведения доступны в следующих статьях поддержки.

Подготовка к работе

  • В этой статье предполагается базовое понимание концепций Kubernetes. Дополнительные сведения см. в основных понятиях Kubernetes для AKS.
  • Для всех образов вывода размещенных моделей и рекомендуемой настройки инфраструктуры см . репозиторий KAITO GitHub.
  • Надстройка оператора цепочки инструментов ИИ в настоящее время поддерживает KAITO версии 0.1.0, обратите внимание на это при рассмотрении выбранной модели из репозитория моделей KAITO.

Необходимые компоненты

  • Если у вас нет подписки Azure, создайте бесплатную учетную запись, прежде чем приступить к работе.

    • Если у вас несколько подписок Azure, убедитесь, что выбрана правильная подписка, в которой будут созданы ресурсы и взиматься плата с помощью команды az account set .

      Примечание.

      Используемая подписка должна иметь квоту виртуальной машины GPU.

  • Azure CLI версии 2.47.0 или более поздней версии, установленной и настроенной. Чтобы узнать версию, выполните команду az --version. Если вам необходимо выполнить установку или обновление, см. статью Установка Azure CLI 2.0.

  • Клиент командной строки Kubernetes, kubectl, установленный и настроенный. Дополнительные сведения см. в разделе "Установка kubectl".

  • Установите расширение предварительной версии Azure CLI AKS.

  • Зарегистрируйте флаг надстройки оператора цепочки инструментов ИИ.

Установка расширения предварительной версии Azure CLI

  1. Установите расширение предварительной версии Azure CLI с помощью команды az extension add .

    az extension add --name aks-preview
    
  2. Обновите расширение, чтобы убедиться, что у вас установлена последняя версия с помощью команды az extension update .

    az extension update --name aks-preview
    

Регистрация флага компонента надстройки оператора цепочки инструментов ИИ

  1. Зарегистрируйте флаг компонента AIToolchainOperatorPreview с помощью команды az feature register .

    az feature register --namespace "Microsoft.ContainerService" --name "AIToolchainOperatorPreview"
    

    Регистрация занимает несколько минут.

  2. Проверьте регистрацию с помощью команды az feature show .

    az feature show --namespace "Microsoft.ContainerService" --name "AIToolchainOperatorPreview"
    

Экспорт переменных среды

  • Чтобы упростить действия по настройке в этой статье, можно определить переменные среды с помощью следующих команд. Обязательно замените значения заполнителей собственными.

    export AZURE_SUBSCRIPTION_ID="mySubscriptionID"
    export AZURE_RESOURCE_GROUP="myResourceGroup"
    export AZURE_LOCATION="myLocation"
    export CLUSTER_NAME="myClusterName"
    

Включение надстройки оператора цепочки инструментов ИИ в кластере AKS

В следующих разделах описывается создание кластера AKS с включенной надстройкой оператора цепочки инструментов ИИ и развертывание размещенной по умолчанию модели ИИ.

Создание кластера AKS с поддержкой надстройки оператора "Цепочка инструментов ИИ"

  1. Создайте группу ресурсов Azure с помощью команды az group create .

    az group create --name ${AZURE_RESOURCE_GROUP} --location ${AZURE_LOCATION}
    
  2. Создайте кластер AKS с поддержкой надстройки оператора "Цепочка инструментов ИИ" с помощью команды az aks create с --enable-ai-toolchain-operator флагами.--enable-oidc-issuer

    az aks create --location ${AZURE_LOCATION} \
        --resource-group ${AZURE_RESOURCE_GROUP} \
        --name ${CLUSTER_NAME} \
        --enable-oidc-issuer \
        --enable-ai-toolchain-operator
    

    Примечание.

    AKS создает управляемое удостоверение после включения надстройки оператора цепочки инструментов ИИ. Управляемое удостоверение используется для создания пулов узлов GPU в управляемом кластере AKS. Для него необходимо задать правильные разрешения вручную, выполнив действия, описанные в следующих разделах.

    Для включения оператора ЦЕПОЧКИ инструментов ИИ требуется включение издателя OIDC.

  3. В существующем кластере AKS можно включить надстройку оператора "Цепочка инструментов ИИ" с помощью команды az aks update .

    az aks update --name ${CLUSTER_NAME} \
            --resource-group ${AZURE_RESOURCE_GROUP} \
            --enable-oidc-issuer \
            --enable-ai-toolchain-operator
    

Подключение к кластеру

  1. Настройте kubectl подключение к кластеру с помощью команды az aks get-credentials .

    az aks get-credentials --resource-group ${AZURE_RESOURCE_GROUP} --name ${CLUSTER_NAME}
    
  2. Проверьте подключение к кластеру kubectl get с помощью команды.

    kubectl get nodes
    

Экспорт переменных среды

  • Экспорт переменных среды для группы ресурсов MC, идентификатора субъекта и удостоверения KAITO с помощью следующих команд:

    export MC_RESOURCE_GROUP=$(az aks show --resource-group ${AZURE_RESOURCE_GROUP} \
        --name ${CLUSTER_NAME} \
        --query nodeResourceGroup \
        -o tsv)
    export PRINCIPAL_ID=$(az identity show --name "ai-toolchain-operator-${CLUSTER_NAME}" \
        --resource-group "${MC_RESOURCE_GROUP}" \
        --query 'principalId' \
        -o tsv)
    export KAITO_IDENTITY_NAME="ai-toolchain-operator-${CLUSTER_NAME}"
    

Получение издателя OpenID AKS OpenID Подключение (OIDC)

  • Получите URL-адрес издателя AKS OIDC и экспортируйте его в виде переменной среды:

    export AKS_OIDC_ISSUER=$(az aks show --resource-group "${AZURE_RESOURCE_GROUP}" \
        --name "${CLUSTER_NAME}" \
        --query "oidcIssuerProfile.issuerUrl" \
        -o tsv)
    

Создание назначения ролей для субъекта-службы

  • Создайте новое назначение ролей для субъекта-службы с помощью команды az role assignment create .

    az role assignment create --role "Contributor" \
        --assignee "${PRINCIPAL_ID}" \
        --scope "/subscriptions/${AZURE_SUBSCRIPTION_ID}/resourcegroups/${AZURE_RESOURCE_GROUP}"
    

Установка учетных данных федеративного удостоверения

  • Создайте учетные данные федеративного удостоверения между управляемым удостоверением, издателем AKS OIDC и субъектом с помощью команды az identity federated-credential create .

    az identity federated-credential create --name "kaito-federated-identity" \
        --identity-name "${KAITO_IDENTITY_NAME}" \
        -g "${MC_RESOURCE_GROUP}" \
        --issuer "${AKS_OIDC_ISSUER}" \
        --subject system:serviceaccount:"kube-system:kaito-gpu-provisioner" \
        --audience api://AzureADTokenExchange
    

Убедитесь, что развертывание запущено

  1. Перезапустите развертывание средства подготовки GPU KAITO в pod с помощью kubectl rollout restart команды:

    kubectl rollout restart deployment/kaito-gpu-provisioner -n kube-system
    
  2. Убедитесь, что развертывание выполняется с помощью kubectl get команды:

    kubectl get deployment -n kube-system | grep kaito
    

Развертывание размещенной по умолчанию модели искусственного интеллекта

  1. Разверните модель инструкции Falcon 7B из репозитория моделей KAITO с помощью kubectl apply команды.

    kubectl apply -f https://raw.githubusercontent.com/Azure/kaito/main/examples/inference/kaito_workspace_falcon_7b-instruct.yaml
    
  2. Отслеживайте изменения динамических ресурсов в рабочей области с помощью kubectl get команды.

    kubectl get workspace workspace-falcon-7b-instruct -w
    

    Примечание.

    При отслеживании изменений динамических ресурсов в рабочей области обратите внимание на то, что готовность компьютера может занять до 10 минут, а готовность рабочей области — до 20 минут.

  3. Проверьте службу и получите IP-адрес службы с помощью kubectl get svc команды.

    export SERVICE_IP=$(kubectl get svc workspace-falcon-7b-instruct -o jsonpath='{.spec.clusterIP}')
    
  4. Запустите модель инструкции Falcon 7B с примером входных данных, используя следующую curl команду:

    kubectl run -it --rm --restart=Never curl --image=curlimages/curl -- curl -X POST http://$SERVICE_IP/chat -H "accept: application/json" -H "Content-Type: application/json" -d "{\"prompt\":\"YOUR QUESTION HERE\"}"
    

Очистка ресурсов

Если эти ресурсы больше не нужны, их можно удалить, чтобы избежать дополнительных расходов На Azure.

Следующие шаги

Дополнительные параметры модели вывода см. в репозитории KAITO GitHub.