Terapkan model dari JumpStart 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.

Terapkan model dari JumpStart menggunakan kubectl

Langkah-langkah berikut menunjukkan cara menerapkan JumpStart model ke HyperPod klaster menggunakan kubectl.

Instruksi berikut berisi sel kode dan perintah yang dirancang untuk berjalan di lingkungan notebook Jupyter, seperti Amazon SageMaker Studio atau Instans SageMaker Notebook. Setiap blok kode mewakili sel notebook yang harus dieksekusi secara berurutan. Elemen interaktif, termasuk tabel penemuan model dan perintah pemantauan status, dioptimalkan untuk antarmuka notebook dan mungkin tidak berfungsi dengan baik di lingkungan lain. Pastikan Anda memiliki akses ke lingkungan notebook dengan AWS izin yang diperlukan sebelum melanjutkan.

Prasyarat

Pastikan Anda telah menyiapkan kemampuan inferensi di SageMaker HyperPod kluster Amazon Anda. Untuk informasi selengkapnya, lihat Menyiapkan HyperPod cluster Anda untuk penerapan model.

Penyiapan dan konfigurasi

Pilih Wilayah Anda

Pilih Wilayah untuk menerapkan HyperPod cluster Anda dan di mana Anda ingin menjalankan beban kerja inferensi Anda. Anda juga dapat menambahkan penyesuaian lain ke file. sagemaker_client

region_name = <REGION> import boto3 from botocore.config import Config # Configure retry options boto3_config = Config( retries={ 'max_attempts': 10, # Maximum number of retry attempts 'mode': 'adaptive' # Use adaptive mode for exponential backoff } ) sagemaker_client=boto3.client("sagemaker", region_name=region_name, config=boto3_config)

Pilih model dan cluster Anda

  1. Lihat semua model dan HyperPod cluster hub SageMaker publik.

    interactive_view(get_all_public_hub_model_data(sagemaker_client)) interactive_view(get_all_cluster_data(sagemaker_client))
  2. Konfigurasikan ID model dan nama cluster yang telah Anda pilih ke dalam variabel di bawah ini.

    catatan

    Periksa dengan admin klaster Anda untuk memastikan izin diberikan untuk peran eksekusi notebook ini. Anda dapat menjalankan !aws sts get-caller-identity --query "Arn" untuk memeriksa peran eksekusi yang Anda gunakan

    # Change the model_id based on your requirement. A list of model IDs is available in step 1 of this notebook. # Proprietary models are not supported model_id = "<insert model id here>" from sagemaker.hyperpod.inference.notebook_utils import validate_public_hub_model_is_not_proprietary validate_public_hub_model_is_not_proprietary(sagemaker_client, model_id)
    # Select the cluster name where you want to deploy the model. List of clusters is available in step 1 of this notebook. cluster_name = "<insert cluster name here>" from sagemaker.hyperpod.inference.notebook_utils import validate_cluster_can_support_public_hub_modelfrom sagemaker.hyperpod.inference.notebook_utils import get_public_hub_model_compatible_instances validate_cluster_can_support_public_hub_model(sagemaker_client, model_id, cluster_name) interactive_view(get_public_hub_model_compatible_instances(sagemaker_client, model_id))
    # Select the instance that is relevant for your model deployment and exists within the selected cluster. instance_type = "ml.g5.8xlarge"
  3. Konfirmasikan dengan admin cluster namespace mana yang diizinkan untuk Anda gunakan. Admin seharusnya telah membuat akun layanan hyperpod-inferensi di namespace Anda.

    cluster_namespace = "default"

Konfigurasikan nama bucket S3

Konfigurasikan nama bucket S3 untuk sertifikat. Bucket ini harus memiliki folder bernama “sertifikat” tempat sertifikat akan diunggah. Bucket juga harus berada di Wilayah yang sama yang ditentukan di atas.

# Set the S3 bucket name where TLS certificates will be stored for secure model communication certificate_bucket = "<insert bucket name here>"
import yaml from datetime import datetime # Get current time in format suitable for endpoint name current_time = datetime.now().strftime("%Y%m%d-%H%M%S") sagemaker_endpoint_name=f"{model_id}-{current_time}" def generate_jumpstart_model_yaml(model_id, model_version, namespace, instance_type, output_file_path, certificate_bucket): """ Generate a JumpStartModel YAML file with the provided parameters. Args: model_id (str): The model ID model_version (str): The model version namespace (str): The namespace instance_type (str): The instance type output_file_path (str): Path where the YAML file will be saved """ # Create the YAML structure tlsCertificateOutputS3Uri = "s3://" + certificate_bucket + "/certificates/" model_config = { "apiVersion": "inference.sagemaker.aws.amazon.com/v1alpha1", "kind": "JumpStartModel", "metadata": { "name": model_id, "namespace": namespace }, "spec": { "sageMakerEndpoint": { "name": sagemaker_endpoint_name }, "model": { "modelHubName": "SageMakerPublicHub", "modelId": model_id, # modelVersion is optional "modelVersion": model_version # acceptEula is optional, set value to True when using a gated model }, "server": { "instanceType": instance_type }, "tlsConfig": { "tlsCertificateOutputS3Uri": tlsCertificateOutputS3Uri } } } # Write to YAML file with open(output_file_path, 'w') as file: yaml.dump(model_config, file, default_flow_style=False) print(f"YAML file created successfully at: {output_file_path}")
# Import JumpStart utilities to retrieve model specifications and version information from sagemaker.jumpstart import utilsfrom sagemaker.jumpstart.enums import JumpStartScriptScope model_specs = utils.verify_model_region_and_return_specs( model_id, "*", JumpStartScriptScope.INFERENCE, region=region_name) model_version = model_specs.version
# Generate the output filename for the Kubernetes YAML configuration output_file_path=f"jumpstart-model-{model_id}.yaml" generate_jumpstart_model_yaml( model_id=model_id, model_version=model_version, namespace=cluster_namespace, instance_type=instance_type, output_file_path=output_file_path, certificate_bucket=certificate_bucket ) import os os.environ["JUMPSTART_YAML_FILE_PATH"]=output_file_path os.environ["MODEL_ID"]=model_id

Terapkan model Anda

Perbarui konfigurasi kubernetes Anda dan terapkan model Anda

  1. Ambil nama cluster EKS dari HyperPod.

    !aws sagemaker describe-cluster --cluster-name $cluster_name --query "Orchestrator.Eks.ClusterArn"
  2. Konfigurasikan kubectl untuk terhubung ke kluster EKS.

    !aws eks update-kubeconfig --name "<insert name of eks cluster from above>" --region $region_name
  3. Terapkan JumpStart model Anda.

    !kubectl apply -f $JUMPSTART_YAML_FILE_PATH

Pantau status penerapan model Anda

  1. Pastikan bahwa model berhasil digunakan.

    !kubectl describe JumpStartModel $model_id -n $cluster_namespace
  2. Pastikan titik akhir berhasil dibuat.

    !kubectl describe SageMakerEndPointRegistration sagemaker_endpoint_name -n $cluster_namespace

Memanggil titik akhir model Anda

Anda dapat secara terprogram mengambil contoh muatan dari objek. JumpStartModel

import boto3 prompt = "{\"inputs\": \"What is AWS SageMaker?\"}}" runtime_client = boto3.client('sagemaker-runtime', region_name=region_name) response = runtime_client.invoke_endpoint( EndpointName=sagemaker_endpoint_name, ContentType="application/json", Body=prompt ) print(response["Body"].read().decode())

Mengelola penyebaran Anda

Pembersihan sumber daya

Hapus penerapan JumpStart model Anda setelah Anda tidak lagi membutuhkannya.

!kubectl delete JumpStartModel $model_id -n $cluster_namespace

Pemecahan Masalah

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

  1. Periksa status penerapan Kubernetes. Perintah ini memeriksa objek deployment Kubernetes yang mendasari yang mengelola pod yang menjalankan model Anda. Gunakan ini untuk memecahkan masalah penjadwalan pod, alokasi sumber daya, dan masalah startup container.

    !kubectl describe deployment $model_id -n $cluster_namespace
  2. Periksa status sumber daya JumpStart model Anda. Perintah ini memeriksa JumpStartModel sumber daya kustom yang mengelola konfigurasi model tingkat tinggi dan siklus hidup penerapan. Gunakan ini untuk memecahkan masalah khusus model seperti kesalahan konfigurasi atau SageMaker masalah pembuatan titik akhir.

    !kubectl describe JumpStartModel $model_id -n $cluster_namespace
  3. Periksa status semua objek Kubernetes. Perintah ini memberikan gambaran menyeluruh dari semua resource Kubernetes terkait di namespace Anda. Gunakan ini untuk pemeriksaan kesehatan cepat untuk melihat status keseluruhan pod, layanan, penerapan, dan sumber daya khusus yang terkait dengan penerapan model Anda.

    !kubectl get pods,svc,deployment,JumpStartModel,sagemakerendpointregistration -n $cluster_namespace