View a markdown version of this page

Menerapkan model dari Amazon S3, Amazon FSx, atau Hugging Face Hub menggunakan kubectl - Amazon SageMaker AI

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Menerapkan model dari Amazon S3, Amazon FSx, atau Hugging Face Hub menggunakan kubectl

Langkah-langkah berikut menunjukkan cara menerapkan model yang disimpan di Amazon S3, Amazon FSx, atau Hugging Face Hub ke cluster Amazon menggunakan kubectl. SageMaker HyperPod

Instruksi berikut berisi sel kode dan perintah yang dirancang untuk berjalan di terminal. Pastikan Anda telah mengonfigurasi lingkungan Anda dengan AWS kredensyal sebelum menjalankan perintah ini.

Prasyarat

Sebelum Anda mulai, verifikasi bahwa Anda telah:

Penyiapan dan konfigurasi

Ganti semua nilai placeholder dengan pengidentifikasi sumber daya Anda yang sebenarnya.

  1. Pilih Wilayah Anda di lingkungan Anda.

    export REGION=<region>
  2. Inisialisasi nama cluster Anda. Ini mengidentifikasi HyperPod cluster tempat model Anda akan digunakan.

    catatan

    Periksa dengan admin klaster Anda untuk memastikan izin diberikan untuk peran atau pengguna ini. Anda dapat menjalankan !aws sts get-caller-identity --query "Arn" untuk memeriksa peran atau pengguna mana yang Anda gunakan di terminal Anda.

    # Specify your hyperpod cluster name here HYPERPOD_CLUSTER_NAME="<Hyperpod_cluster_name>" # NOTE: For sample deployment, we use g5.24xlarge for Llama 3.1 8B model which has sufficient memory and GPU instance_type="ml.g5.24xlarge"
  3. Inisialisasi namespace cluster Anda. Admin klaster Anda seharusnya sudah membuat akun layanan hyperpod-inference di namespace Anda.

    cluster_namespace="<namespace>"
  4. Buat CRD menggunakan salah satu opsi berikut:

    Using Amazon FSx as the model source
    1. Siapkan nama SageMaker titik akhir.

      export SAGEMAKER_ENDPOINT_NAME="llama-fsx"
    2. Konfigurasikan ID sistem file Amazon FSx yang akan digunakan.

      export FSX_FILE_SYSTEM_ID="fs-1234abcd"
    3. Berikut ini adalah contoh file yaml untuk membuat endpoint dengan Amazon FSx dan model Llama.

      catatan

      Untuk cluster dengan partisi GPU diaktifkan, ganti nvidia.com/gpu dengan nama sumber daya MIG yang sesuai seperti. nvidia.com/mig-1g.10gb Untuk informasi selengkapnya, lihat Pengajuan Tugas dengan MIG.

      cat <<EOF> deploy_fsx_cluster_inference.yaml
      ---
      apiVersion: inference.sagemaker.aws.amazon.com/v1
      kind: InferenceEndpointConfig
      metadata:
        name: $SAGEMAKER_ENDPOINT_NAME
        namespace: $CLUSTER_NAMESPACE
      spec:
        modelName: Llama-3.1-8B-Instruct
        instanceType: ml.g5.24xlarge
        invocationEndpoint: v1/chat/completions
        replicas: 2
        modelSourceConfig:
          fsxStorage:
            fileSystemId: $FSX_FILE_SYSTEM_ID
          modelLocation: Llama-3.1-8B-Instruct
          modelSourceType: fsx
        worker:
          image: vllm/vllm-openai:v0.19.1
          modelInvocationPort:
            containerPort: 8000
            name: http
          modelVolumeMount:
            mountPath: /opt/ml/model
            name: model-weights
          resources:
            limits:
              nvidia.com/gpu: 4
            requests:
              cpu: 30000m
              memory: 100Gi
              nvidia.com/gpu: 4
          args:
            - "--model"
            - "/opt/ml/model"
            - "--port"
            - "8000"
            - "--tensor-parallel-size"
            - "4"
            - "--served-model-name"
            - "Llama-3.1-8B-Instruct"
          environmentVariables:
            - name: VLLM_REQUEST_TIMEOUT
              value: "600"
      EOF
    Using Amazon S3 as the model source
    1. Siapkan nama SageMaker titik akhir.

      export SAGEMAKER_ENDPOINT_NAME="llama-s3"
    2. Konfigurasikan lokasi bucket Amazon S3 tempat model berada.

      export S3_MODEL_LOCATION="<your-s3-bucket-name>"
    3. Berikut ini adalah contoh file yaml untuk membuat titik akhir dengan Amazon S3 dan model Llama menggunakan VllM sebagai runtime inferensi.

      catatan

      Untuk cluster dengan partisi GPU diaktifkan, ganti nvidia.com/gpu dengan nama sumber daya MIG yang sesuai seperti. nvidia.com/mig-1g.10gb Untuk informasi selengkapnya, lihat Pengajuan Tugas dengan MIG.

      cat <<EOF> deploy_s3_inference.yaml
      ---
      apiVersion: inference.sagemaker.aws.amazon.com/v1
      kind: InferenceEndpointConfig
      metadata:
        name: $SAGEMAKER_ENDPOINT_NAME
        namespace: $CLUSTER_NAMESPACE
      spec:
        modelName: Llama-3.1-8B-Instruct
        instanceType: ml.g5.24xlarge
        invocationEndpoint: v1/chat/completions
        replicas: 2
        modelSourceConfig:
          modelSourceType: s3
          s3Storage:
            bucketName: $S3_MODEL_LOCATION
            region: $REGION
          modelLocation: Llama-3.1-8B-Instruct
          prefetchEnabled: true
        worker:
          image: vllm/vllm-openai:v0.19.1
          modelInvocationPort:
            containerPort: 8000
            name: http
          modelVolumeMount:
            name: model-weights
            mountPath: /opt/ml/model
          resources:
            limits:
              nvidia.com/gpu: 4
            requests:
              cpu: 30000m
              memory: 100Gi
              nvidia.com/gpu: 4
          args:
            - "--model"
            - "/opt/ml/model"
            - "--port"
            - "8000"
            - "--tensor-parallel-size"
            - "4"
            - "--served-model-name"
            - "Llama-3.1-8B-Instruct"
          environmentVariables:
            - name: VLLM_REQUEST_TIMEOUT
              value: "600"
      EOF
    Using Hugging Face Hub as the model source
    1. Buat Kubernetes Secret yang berisi token API Hugging Face Anda. Token ini diperlukan untuk model yang terjaga keamanannya dan direkomendasikan untuk semua unduhan. Anda dapat menghasilkan token di huggingface. co/settings/token.

      penting

      Menyebarkan model dari Hugging Face Hub memerlukan akses internet keluar dari node cluster Anda ke domain Hugging Face termasuk dan. *.huggingface.co *.hf.co Pastikan konfigurasi jaringan VPC Anda (gateway NAT, grup keamanan, dan ACL jaringan) memungkinkan jalan keluar HTTPS ke domain ini. Tanpa akses internet, unduhan model akan gagal.

      catatan

      Untuk lingkungan produksi, sebaiknya gunakan Amazon S3 atau Amazon FSx sebagai sumber model, bukan Hugging Face Hub. Dengan Amazon S3 dan Amazon FSx, artefak model disimpan dalam AWS akun Anda, menghilangkan ketergantungan pada konektivitas internet eksternal dan memberikan waktu penerapan yang lebih dapat diprediksi. Hugging Face Hub paling cocok untuk pengembangan, eksperimen, dan pembuatan prototipe cepat di mana akses langsung ke repositori model Hugging Face nyaman.

      kubectl create secret generic hf-token-secret \ --from-literal=token=hf_YOUR_TOKEN_HERE \ -n $CLUSTER_NAMESPACE
    2. Siapkan nama SageMaker titik akhir.

      export SAGEMAKER_ENDPOINT_NAME="mistral7b-hf"
    3. Berikut ini adalah contoh file YAMM untuk menerapkan model Mistral 7B dari Hugging Face Hub menggunakan VllM sebagai runtime inferensi. DenganprefetchEnabled: true, operator menggunakan kontainer init untuk mengunduh model sebelum wadah inferensi dimulai.

      catatan

      Untuk cluster dengan partisi GPU diaktifkan, ganti nvidia.com/gpu dengan nama sumber daya MIG yang sesuai seperti. nvidia.com/mig-1g.10gb Untuk informasi selengkapnya, lihat Pengajuan Tugas dengan MIG.

      cat <<EOF> deploy_hf_inference.yaml
      ---
      apiVersion: inference.sagemaker.aws.amazon.com/v1
      kind: InferenceEndpointConfig
      metadata:
        name: $SAGEMAKER_ENDPOINT_NAME
        namespace: $CLUSTER_NAMESPACE
      spec:
        modelName: mistral-7b
        modelSourceConfig:
          modelSourceType: huggingface
          prefetchEnabled: true
          huggingFaceModel:
            modelId: "mistralai/Mistral-7B-Instruct-v0.3"
            tokenSecretRef:
              name: hf-token-secret
              key: token
        instanceType: "ml.g5.24xlarge"
        invocationEndpoint: v1/chat/completions
        worker:
          image: "vllm/vllm-openai:v0.19.1"
          modelInvocationPort:
            containerPort: 8000
            name: http
          modelVolumeMount:
            name: model-weights
            mountPath: /opt/ml/model
          resources:
            requests:
              nvidia.com/gpu: "4"
              memory: "96Gi"
              cpu: "16"
            limits:
              nvidia.com/gpu: "4"
              memory: "96Gi"
              cpu: "16"
          args:
            - "--model"
            - "/opt/ml/model"
            - "--port"
            - "8000"
            - "--tensor-parallel-size"
            - "4"
            - "--served-model-name"
            - "mistralai/Mistral-7B-Instruct-v0.3"
          environmentVariables:
            - name: VLLM_REQUEST_TIMEOUT
              value: "600"
      EOF
    4. Bidang konfigurasi utama Hugging Face adalah:

      • modelSourceType(wajib) - Setel kehuggingface.

      • huggingFaceModel.modelId(wajib) - Pengidentifikasi model Hugging Face Hub org/model dalam format (misalnyamistralai/Mistral-7B-Instruct-v0.3,).

      • huggingFaceModel.commitSHA(opsional) — Git 40 karakter berkomitmen SHA untuk menyematkan versi model tertentu. Jika dihilangkan, default ke cabang. main

      • huggingFaceModel.tokenSecretRef(opsional) — Referensi ke Kubernetes Secret yang berisi token API Hugging Face Anda. Diperlukan untuk model yang terjaga keamanannya. Token hanya digunakan selama pengunduhan model dan tidak terpapar ke wadah inferensi.

      • prefetchEnabled(opsional) - Kapantrue, wadah init mengunduh model sebelum wadah inferensi dimulai. Kapanfalse, runtime inferensi (VllM, TGI, SGLang) mengunduh model secara asli saat startup. Default ke false.

catatan

Untuk mengonfigurasi cache KV dan perutean cerdas untuk meningkatkan kinerja, lihat. Konfigurasikan caching KV dan perutean cerdas

Terapkan model Anda dari Amazon S3, Amazon FSx, atau Hugging Face Hub

  1. Dapatkan nama cluster Amazon EKS dari ARN HyperPod cluster untuk otentikasi 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. Terapkan InferenceEndpointConfig model Anda dengan salah satu opsi berikut:

    Deploy with Amazon FSx as a source
    kubectl apply -f deploy_fsx_luster_inference.yaml
    Deploy with Amazon S3 as a source
    kubectl apply -f deploy_s3_inference.yaml
    Deploy with Hugging Face Hub as a source
    kubectl apply -f deploy_hf_inference.yaml

    Jika penerapan gagal, periksa InferenceEndpointConfig peristiwa untuk informasi diagnostik. Untuk masalah umum seperti kesalahan token, konektivitas jaringan, dan model tidak ditemukan, lihatKegagalan penerapan model Hugging Face Hub.

Verifikasi status penerapan Anda

  1. Periksa apakah model berhasil digunakan.

    kubectl describe InferenceEndpointConfig $SAGEMAKER_ENDPOINT_NAME -n $CLUSTER_NAMESPACE
  2. Periksa apakah titik akhir berhasil dibuat.

    kubectl describe SageMakerEndpointRegistration $SAGEMAKER_ENDPOINT_NAME -n $CLUSTER_NAMESPACE
  3. Uji titik akhir yang diterapkan untuk memverifikasi itu berfungsi dengan benar. Langkah ini mengonfirmasi bahwa model Anda berhasil diterapkan dan dapat memproses permintaan inferensi.

    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

Kelola penerapan Anda

Setelah selesai menguji penerapan, gunakan perintah berikut untuk membersihkan sumber daya Anda.

catatan

Verifikasi bahwa Anda tidak lagi memerlukan model yang digunakan atau data yang disimpan sebelum melanjutkan.

Bersihkan sumber daya Anda
  1. Hapus penerapan inferensi dan sumber daya Kubernetes terkait. Ini menghentikan kontainer model yang sedang berjalan dan menghapus SageMaker titik akhir.

    kubectl delete inferenceendpointconfig $SAGEMAKER_ENDPOINT_NAME -n $CLUSTER_NAMESPACE
  2. Verifikasi pembersihan telah berhasil dilakukan.

    # # Check that Kubernetes resources are removed kubectl get pods,svc,deployment,InferenceEndpointConfig,sagemakerendpointregistration -n $CLUSTER_NAMESPACE
    # Verify SageMaker endpoint is deleted (should return error or empty) aws sagemaker describe-endpoint --endpoint-name $SAGEMAKER_ENDPOINT_NAME --region $REGION
Pemecahan masalah

Gunakan perintah debugging ini jika penerapan Anda tidak berfungsi seperti yang diharapkan.

  1. Periksa status penerapan Kubernetes.

    kubectl describe deployment $SAGEMAKER_ENDPOINT_NAME -n $CLUSTER_NAMESPACE
  2. Periksa InferenceEndpointConfig status untuk melihat status penerapan tingkat tinggi dan masalah konfigurasi apa pun.

    kubectl describe InferenceEndpointConfig $SAGEMAKER_ENDPOINT_NAME -n $CLUSTER_NAMESPACE
  3. Periksa status semua objek Kubernetes. Dapatkan tampilan komprehensif dari semua resource Kubernetes terkait di namespace Anda. Ini memberi Anda gambaran singkat tentang apa yang sedang berjalan dan apa yang mungkin hilang.

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