Развертывание модели ИИ на Служба 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
Установите расширение предварительной версии Azure CLI с помощью команды az extension add .
az extension add --name aks-preview
Обновите расширение, чтобы убедиться, что у вас установлена последняя версия с помощью команды az extension update .
az extension update --name aks-preview
Регистрация флага компонента надстройки оператора цепочки инструментов ИИ
Зарегистрируйте флаг компонента AIToolchainOperatorPreview с помощью команды az feature register .
az feature register --namespace "Microsoft.ContainerService" --name "AIToolchainOperatorPreview"
Регистрация занимает несколько минут.
Проверьте регистрацию с помощью команды 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 с поддержкой надстройки оператора "Цепочка инструментов ИИ"
Создайте группу ресурсов Azure с помощью команды az group create .
az group create --name ${AZURE_RESOURCE_GROUP} --location ${AZURE_LOCATION}
Создайте кластер 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 \ --generate-ssh-keys
Примечание.
AKS создает управляемое удостоверение после включения надстройки оператора цепочки инструментов ИИ. Управляемое удостоверение используется для создания пулов узлов GPU в управляемом кластере AKS. Для него необходимо задать правильные разрешения вручную, выполнив действия, описанные в следующих разделах.
В существующем кластере AKS можно включить надстройку оператора "Цепочка инструментов ИИ" с помощью команды az aks update .
az aks update --name ${CLUSTER_NAME} \ --resource-group ${AZURE_RESOURCE_GROUP} \ --enable-oidc-issuer \ --enable-ai-toolchain-operator
Подключение к кластеру
Настройте
kubectl
подключение к кластеру с помощью команды az aks get-credentials .az aks get-credentials --resource-group ${AZURE_RESOURCE_GROUP} --name ${CLUSTER_NAME}
Проверьте подключение к кластеру
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 Connect (OIDC) AKS
Получите 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
Примечание.
Перед завершением
gpu-provisioner
этого шага модуль pod контроллера останется в состоянии цикла сбоя. После создания федеративных учетных данных модуль pod контроллера достигнет состояния выполнения, и вы сможете убедиться,gpu-provisioner
что развертывание выполняется на следующих шагах.
Убедитесь, что развертывание запущено
Перезапустите развертывание средства подготовки GPU KAITO в pod с помощью
kubectl rollout restart
команды:kubectl rollout restart deployment/kaito-gpu-provisioner -n kube-system
Убедитесь, что развертывание выполняется с помощью
kubectl get
команды:kubectl get deployment -n kube-system | grep kaito
Развертывание размещенной по умолчанию модели искусственного интеллекта
Разверните модель инструкции Falcon 7B из репозитория моделей KAITO с помощью
kubectl apply
команды.kubectl apply -f https://raw.githubusercontent.com/Azure/kaito/main/examples/inference/kaito_workspace_falcon_7b-instruct.yaml
Отслеживайте изменения динамических ресурсов в рабочей области с помощью
kubectl get
команды.kubectl get workspace workspace-falcon-7b-instruct -w
Примечание.
При отслеживании изменений динамических ресурсов в рабочей области обратите внимание на то, что готовность компьютера может занять до 10 минут, а готовность рабочей области — до 20 минут.
Проверьте службу и получите IP-адрес службы с помощью
kubectl get svc
команды.export SERVICE_IP=$(kubectl get svc workspace-falcon-7b-instruct -o jsonpath='{.spec.clusterIP}')
Запустите модель инструкции 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 и связанные с ней
kubectl delete workspace
ресурсы с помощью команды.kubectl delete workspace workspace-falcon-7b-instruct
Следующие шаги
Дополнительные варианты развертывания модели см. в вышестоящем репозитории KAITO GitHub.
- Изучение MLOps для рабочих процессов искусственного интеллекта и машинного обучения в AKS
- Сведения о рекомендациях MLOps для конвейеров ИИ в AKS
- Узнайте, как развернуть рабочие нагрузки GPU в AKS
Azure Kubernetes Service