다음을 통해 공유


AI 툴체인 운영자를 사용하여 AKS(Azure Kubernetes Service)에 AI 모델 배포(미리 보기)

KAITO(AI 툴체인 운영자)는 AKS 클러스터에서 OSS AI 모델을 실행하는 환경을 간소화하는 AKS용 관리형 추가 기능입니다. AI 툴체인 운영자는 필요한 GPU 노드를 자동으로 프로비전하고 연결된 유추 서버를 AI 모델에 대한 엔드포인트 서버로 설정합니다. 이 추가 기능을 사용하면 온보딩 시간이 단축되고 인프라 설정보다 AI 모델 사용과 개발에 집중할 수 있습니다.

이 문서에서는 AI 툴체인 운영자 추가 기능을 사용하도록 설정하고 AKS에서 AI 모델을 배포하는 방법을 보여 줍니다.

Important

AKS 미리 보기 기능은 셀프 서비스에서 사용할 수 있습니다(옵트인 방식). 미리 보기는 "있는 그대로" 및 "사용 가능한 상태로" 제공되며 서비스 수준 계약 및 제한적 보증에서 제외됩니다. AKS 미리 보기의 일부는 고객 지원팀에서 최선을 다해 지원합니다. 따라서 이러한 기능은 프로덕션 용도로 사용할 수 없습니다. 자세한 내용은 다음 지원 문서를 참조하세요.

시작하기 전에

  • 이 문서에서는 Kubernetes 개념에 대한 기본 지식이 있다고 가정합니다. 자세한 내용은 AKS에 대한 Kubernetes 핵심 개념을 참조하세요.
  • 모든 호스트된 모델 유추 이미지 및 권장 인프라 설정은 KAITO GitHub 리포지토리를 참조하세요.
  • AI 도구 체인 연산자 추가 기능은 현재 KAITO 버전 0.1.0을 지원합니다. KAITO 모델 리포지토리에서 선택한 모델을 고려해 보세요.

필수 조건

  • Azure 구독이 없는 경우 시작하기 전에 체험 계정을 만듭니다.

    • Azure 구독이 여러 개 있는 경우 az account set 명령을 사용하여 리소스가 만들어지고 요금이 부과될 올바른 구독을 선택해야 합니다.

      참고 항목

      사용하는 구독에는 선택한 모델 배포에 대한 GPU VM 할당량이 있어야 합니다.

  • Azure CLI 버전 2.47.0 이상이 설치 및 구성되어 있어야 합니다. az --version을 실행하여 버전을 찾습니다. 설치 또는 업그레이드해야 하는 경우 Azure CLI 설치를 참조하세요.

  • Kubernetes 명령줄 클라이언트 kubectl이 설치 및 구성되어 있어야 합니다. 자세한 내용은 kubectl 설치를 참조하세요.

  • Azure CLI aks-preview 확장을 설치합니다.

  • AI 툴체인 운영자 추가 기능 플래그를 등록합니다.

Azure CLI 미리 보기 확장 설치

  1. az extension add 명령을 사용하여 Azure CLI 미리 보기 확장을 설치합니다.

    az extension add --name aks-preview
    
  2. az extension update 명령을 사용하여 확장을 최신 버전으로 업데이트합니다.

    az extension update --name aks-preview
    

AI 툴체인 운영자 추가 기능 플래그를 등록합니다.

  1. az feature register 명령을 사용하여 AIToolchainOperatorPreview 기능 플래그를 등록합니다.

    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 클러스터에서 AI 툴체인 운영자 추가 기능 사용

다음 섹션에서는 AI 툴체인 운영자 추가 기능이 사용하도록 설정된 AKS 클러스터를 만들고 기본 호스트된 AI 모델을 배포하는 방법을 설명합니다.

AI 툴체인 운영자 추가 기능이 사용하도록 설정된 AKS 클러스터 만들기

  1. az group create 명령을 사용하여 Azure 리소스 그룹을 만듭니다.

    az group create --name ${AZURE_RESOURCE_GROUP} --location ${AZURE_LOCATION}
    
  2. az aks create 명령에 --enable-ai-toolchain-operator--enable-oidc-issuer 플래그를 사용하여 AI 툴체인 운영자 추가 기능이 사용하도록 설정된 AKS 클러스터를 만듭니다.

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

    참고 항목

    AI 툴체인 운영자 추가 기능을 사용하도록 설정하면 AKS에서 관리 ID를 만듭니다. 관리 ID는 관리되는 AKS 클러스터에서 GPU 노드 풀을 만드는 데 사용됩니다. 다음 섹션에 소개된 단계에 따라 적절한 권한을 수동으로 설정해야 합니다.

  3. 기존 AKS 클러스터에서 az aks update 명령을 사용하여 AI 툴체인 운영자 추가 기능을 사용하도록 설정할 수 있습니다.

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

클러스터에 연결

  1. az aks get-credentials 명령을 사용하여 클러스터에 연결하도록 kubectl을 구성합니다.

    az aks get-credentials --resource-group ${AZURE_RESOURCE_GROUP} --name ${CLUSTER_NAME}
    
  2. kubectl get 명령을 사용하여 클러스터에 대한 연결을 확인합니다.

    kubectl get nodes
    

환경 변수 내보내기

  • 다음 명령을 사용하여 MC 리소스 그룹, 주체 ID 및 KAITO ID에 대한 환경 변수를 내보냅니다.

    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}"
    

AKS OIDC(OpenID Connect) 발급자 가져오기

  • AKS OIDC 발급자 URL을 가져와 환경 변수로 내보냅니다.

    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}"
    

페더레이션 ID 자격 증명 설정

  • az identity federated-credential create 명령을 사용하여 관리 ID, AKS OIDC 발급자 및 주체 간에 페더레이션된 ID 자격 증명을 만듭니다.

    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는 크래시 루프 상태로 유지됩니다. 페더레이션 자격 증명이 만들어 gpu-provisioner 지면 컨트롤러 Pod가 실행 중인 상태에 도달하고 다음 단계에서 배포가 실행 중인지 확인할 수 있습니다.

배포가 실행 중인지 확인

  1. kubectl rollout restart 명령을 사용하여 Pod에서 KAITO GPU 프로비전 프로그램 배포를 다시 시작합니다.

    kubectl rollout restart deployment/kaito-gpu-provisioner -n kube-system
    
  2. kubectl get 명령을 사용하여 배포가 실행 중인지 확인합니다.

    kubectl get deployment -n kube-system | grep kaito
    

기본 호스팅된 AI 모델 배포

  1. kubectl apply 명령을 사용하여 KAITO 모델 리포지토리에서 Falcon 7B-instruct 모델을 배포합니다.

    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. kubectl get svc 명령을 사용하여 서비스를 확인하고 서비스 IP 주소를 가져옵니다.

    export SERVICE_IP=$(kubectl get svc workspace-falcon-7b-instruct -o jsonpath='{.spec.clusterIP}')
    
  4. 다음 curl 명령을 사용하여 선택한 샘플 입력으로 Falcon 7B-instruct 모델을 실행합니다.

    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 리포지토리를 참조하세요.