kubectl을 사용하여 JumpStart에서 모델 배포 - Amazon SageMaker AI

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

kubectl을 사용하여 JumpStart에서 모델 배포

다음 단계에서는 kubectl을 사용하여 JumpStart 모델을 HyperPod 클러스터에 배포하는 방법을 보여줍니다.

다음 지침에는 터미널에서 실행되도록 설계된 코드 셀과 명령이 포함되어 있습니다. 이러한 명령을 실행하기 전에 자격 AWS 증명으로 환경을 구성했는지 확인합니다.

사전 조건

시작하기 전에 다음을 수행했는지 확인합니다.

설정 및 구성

  1. 리전을 선택합니다.

    export REGION=<region>
  2. 모든 SageMaker 퍼블릭 허브 모델 및 HyperPod 클러스터를 봅니다.

  3. JumpstartPublic HubJumpstartModel에서를 선택합니다. JumpstartPublic 허브에는 많은 수의 모델을 사용할 수 있으므로 NextToken를 사용하여 퍼블릭 허브에서 사용 가능한 모든 모델을 반복적으로 나열할 수 있습니다.

    aws sagemaker list-hub-contents --hub-name SageMakerPublicHub --hub-content-type Model --query '{Models: HubContentSummaries[].{ModelId:HubContentName,Version:HubContentVersion}, NextToken: NextToken}' --output json
    export MODEL_ID="deepseek-llm-r1-distill-qwen-1-5b" export MODEL_VERSION="2.0.4"
  4. 선택한 모델 ID와 클러스터 이름을 아래 변수로 구성합니다.

    참고

    클러스터 관리자에게 문의하여이 역할 또는 사용자에 대한 권한이 부여되었는지 확인합니다. 를 실행!aws sts get-caller-identity --query "Arn"하여 터미널에서 사용 중인 역할 또는 사용자를 확인할 수 있습니다.

    aws sagemaker list-clusters --output table # Select the cluster name where you want to deploy the model. export HYPERPOD_CLUSTER_NAME="<insert cluster name here>" # Select the instance that is relevant for your model deployment and exists within the selected cluster. # List availble instances in your HyperPod cluster aws sagemaker describe-cluster --cluster-name=$HYPERPOD_CLUSTER_NAME --query "InstanceGroups[].{InstanceType:InstanceType,Count:CurrentCount}" --output table # List supported instance types for the selected model aws sagemaker describe-hub-content --hub-name SageMakerPublicHub --hub-content-type Model --hub-content-name "$MODEL_ID" --output json | jq -r '.HubContentDocument | fromjson | {Default: .DefaultInferenceInstanceType, Supported: .SupportedInferenceInstanceTypes}' # Select and instance type from the cluster that is compatible with the model. # Make sure that the selected instance is either default or supported instance type for the jumpstart model export INSTANCE_TYPE="<Instance_type_In_cluster"
  5. 사용할 수 있는 네임스페이스를 클러스터 관리자에게 확인합니다. 관리자가 네임스페이스에 hyperpod-inference 서비스 계정을 생성했어야 합니다.

    export CLUSTER_NAMESPACE="default"
  6. 생성할 엔드포인트 및 사용자 지정 객체의 이름을 설정합니다.

    export SAGEMAKER_ENDPOINT_NAME="deepsek-qwen-1-5b-test"
  7. 다음은 Jumpstart의 deepseek-llm-r1-distill-qwen-1-5b 모델 배포 예제입니다. 위 단계에서 선택한 모델을 기반으로 유사한 배포 yaml 파일을 생성합니다.

    cat << EOF > jumpstart_model.yaml --- apiVersion: inference.sagemaker.aws.amazon.com/v1alpha1 kind: JumpStartModel metadata: name: $SAGEMAKER_ENDPOINT_NAME namespace: $CLUSTER_NAMESPACE spec: sageMakerEndpoint: name: $SAGEMAKER_ENDPOINT_NAME model: modelHubName: SageMakerPublicHub modelId: $MODEL_ID modelVersion: $MODEL_VERSION server: instanceType: $INSTANCE_TYPE metrics: enabled: true environmentVariables: - name: SAMPLE_ENV_VAR value: "sample_value" maxDeployTimeInSeconds: 1800 autoScalingSpec: cloudWatchTrigger: name: "SageMaker-Invocations" namespace: "AWS/SageMaker" useCachedMetrics: false metricName: "Invocations" targetValue: 10 minValue: 0.0 metricCollectionPeriod: 30 metricStat: "Sum" metricType: "Average" dimensions: - name: "EndpointName" value: "$SAGEMAKER_ENDPOINT_NAME" - name: "VariantName" value: "AllTraffic" EOF

모델 배포

kubernetes 구성 업데이트 및 모델 배포
  1. Amazon EKS에서 오케스트레이션한 HyperPod 클러스터에 연결하도록 kubectl을 구성합니다.

    export EKS_CLUSTER_NAME=$(aws --region $REGION sagemaker describe-cluster --cluster-name $HYPERPOD_CLUSTER_NAME \ --query 'Orchestrator.Eks.ClusterArn' --output text | \ cut -d'/' -f2) aws eks update-kubeconfig --name $EKS_CLUSTER_NAME --region $REGION
  2. JumpStart 모델을 배포합니다.

    kubectl apply -f jumpstart_model.yaml
모델 배포 상태 모니터링
  1. 모델이 성공적으로 배포되었는지 확인합니다.

    kubectl describe JumpStartModel $SAGEMAKER_ENDPOINT_NAME -n $CLUSTER_NAMESPACE
  2. 엔드포인트가 성공적으로 생성되었는지 확인합니다.

    aws sagemaker describe-endpoint --endpoint-name=$SAGEMAKER_ENDPOINT_NAME --output table
  3. 모델 엔드포인트를 호출합니다. JumpStartModel 객체에서 예제 페이로드를 프로그래밍 방식으로 검색할 수 있습니다.

    aws sagemaker-runtime invoke-endpoint \ --endpoint-name $SAGEMAKER_ENDPOINT_NAME \ --content-type "application/json" \ --body '{"inputs": "What is AWS SageMaker?"}' \ --region $REGION \ --cli-binary-format raw-in-base64-out \ /dev/stdout

배포 관리

JumpStart 모델 배포가 더 이상 필요하지 않으면 삭제합니다.

kubectl delete JumpStartModel $SAGEMAKER_ENDPOINT_NAME -n $CLUSTER_NAMESPACE
문제 해결

배포가 예상대로 작동하지 않는 경우 이러한 디버깅 명령을 사용합니다.

  1. Kubernetes 배포 상태를 확인합니다. 이 명령은 모델을 실행하는 포드를 관리하는 기본 Kubernetes 배포 객체를 검사합니다. 포드 예약, 리소스 할당 및 컨테이너 시작 문제를 해결하는 데 사용합니다.

    kubectl describe deployment $SAGEMAKER_ENDPOINT_NAME -n $CLUSTER_NAMESPACE
  2. JumpStart 모델 리소스의 상태를 확인합니다. 이 명령은 상위 수준 모델 구성 및 배포 수명 주기를 관리하는 사용자 지정 JumpStartModel 리소스를 검사합니다. 이를 사용하여 구성 오류 또는 SageMaker AI 엔드포인트 생성 문제와 같은 모델별 문제를 해결할 수 있습니다.

    kubectl describe JumpStartModel $SAGEMAKER_ENDPOINT_NAME -n $CLUSTER_NAMESPACE
  3. 모든 Kubernetes 객체의 상태를 확인합니다. 이 명령은 네임스페이스의 모든 관련 Kubernetes 리소스에 대한 포괄적인 개요를 제공합니다. 이를 사용하여 모델 배포와 관련된 포드, 서비스, 배포 및 사용자 지정 리소스의 전체 상태를 빠르게 확인할 수 있습니다.

    kubectl get pods,svc,deployment,JumpStartModel,sagemakerendpointregistration -n $CLUSTER_NAMESPACE