Stellen Sie Modelle JumpStart mithilfe von kubectl bereit - Amazon SageMaker KI

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Stellen Sie Modelle JumpStart mithilfe von kubectl bereit

Die folgenden Schritte zeigen Ihnen, wie Sie mithilfe von kubectl ein JumpStart Modell in einem HyperPod Cluster bereitstellen.

Die folgenden Anweisungen enthalten Codezellen und Befehle, die für die Ausführung in einer Jupyter-Notebook-Umgebung wie Amazon SageMaker Studio- oder SageMaker Notebook-Instances konzipiert sind. Jeder Codeblock steht für eine Notebook-Zelle, die sequentiell ausgeführt werden sollte. Die interaktiven Elemente, einschließlich Tabellen zur Modellerkennung und Befehle zur Statusüberwachung, sind für die Notebook-Oberfläche optimiert und funktionieren in anderen Umgebungen möglicherweise nicht richtig. Stellen Sie sicher, dass Sie Zugriff auf eine Notebook-Umgebung mit den erforderlichen AWS Berechtigungen haben, bevor Sie fortfahren.

Voraussetzungen

Stellen Sie sicher, dass Sie Inferenzfunktionen auf Ihren SageMaker HyperPod Amazon-Clustern eingerichtet haben. Weitere Informationen finden Sie unter Richten Sie Ihre Cluster für die Modellbereitstellung ein HyperPod .

Einrichtung und Konfiguration

Wählen Sie Ihre Region

Wählen Sie die Region aus, in der Ihr HyperPod Cluster bereitgestellt werden soll und in der Sie Ihre Inferenz-Workloads ausführen möchten. Sie können dem auch andere Anpassungen hinzufügen. 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)

Wählen Sie Ihr Modell und Ihren Cluster

  1. Sehen Sie sich alle SageMaker Public-Hub-Modelle und HyperPod -Cluster an.

    interactive_view(get_all_public_hub_model_data(sagemaker_client)) interactive_view(get_all_cluster_data(sagemaker_client))
  2. Konfigurieren Sie die Modell-ID und den Clusternamen, die Sie ausgewählt haben, in den folgenden Variablen.

    Anmerkung

    Erkundigen Sie sich bei Ihrem Clusteradministrator, ob Ihnen die Berechtigungen für diese Notebook-Ausführungsrolle erteilt wurden. Sie können ausführen!aws sts get-caller-identity --query "Arn", um zu überprüfen, welche Ausführungsrolle Sie verwenden

    # 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. Bestätigen Sie mit dem Cluster-Administrator, welchen Namespace Sie verwenden dürfen. Der Administrator sollte ein Hyperpod-Inferenzdienstkonto in Ihrem Namespace erstellt haben.

    cluster_namespace = "default"

Konfigurieren Sie den S3-Bucket-Namen

Konfigurieren Sie die S3-Bucket-Namen für Zertifikate. Dieser Bucket muss einen Ordner mit dem Namen „Zertifikate“ haben, in den Zertifikate hochgeladen werden. Der Bucket muss sich außerdem in derselben Region befinden, die oben definiert wurde.

# 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

Bereitstellen Ihres Modells

Aktualisieren Sie Ihre Kubernetes-Konfiguration und stellen Sie Ihr Modell bereit

  1. Rufen Sie den Namen des EKS-Clusters von ab. HyperPod

    !aws sagemaker describe-cluster --cluster-name $cluster_name --query "Orchestrator.Eks.ClusterArn"
  2. Konfigurieren Sie kubectl für die Verbindung mit dem EKS-Cluster.

    !aws eks update-kubeconfig --name "<insert name of eks cluster from above>" --region $region_name
  3. Stellen Sie Ihr JumpStart Modell bereit.

    !kubectl apply -f $JUMPSTART_YAML_FILE_PATH

Überwachen Sie den Status Ihrer Modellbereitstellung

  1. Stellen Sie sicher, dass das Modell erfolgreich bereitgestellt wurde.

    !kubectl describe JumpStartModel $model_id -n $cluster_namespace
  2. Stellen Sie sicher, dass der Endpunkt erfolgreich erstellt wurde.

    !kubectl describe SageMakerEndPointRegistration sagemaker_endpoint_name -n $cluster_namespace

Rufen Sie Ihren Modellendpunkt auf

Sie können programmgesteuert Beispiel-Payloads aus dem Objekt abrufen. 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())

Verwalten Sie Ihre Bereitstellung

Bereinigen von -Ressourcen

Löschen Sie Ihre JumpStart Modellbereitstellung, sobald Sie sie nicht mehr benötigen.

!kubectl delete JumpStartModel $model_id -n $cluster_namespace

Fehlerbehebung

Verwenden Sie diese Debugging-Befehle, wenn Ihre Bereitstellung nicht wie erwartet funktioniert.

  1. Überprüfen Sie den Status der Kubernetes-Bereitstellung. Dieser Befehl überprüft das zugrunde liegende Kubernetes-Bereitstellungsobjekt, das die Pods verwaltet, auf denen Ihr Modell ausgeführt wird. Verwenden Sie diesen Befehl, um Probleme mit der Pod-Planung, der Ressourcenzuweisung und dem Start von Containern zu beheben.

    !kubectl describe deployment $model_id -n $cluster_namespace
  2. Überprüfen Sie den Status Ihrer JumpStart Modellressource. Mit diesem Befehl wird die benutzerdefinierte JumpStartModel Ressource untersucht, die die allgemeine Modellkonfiguration und den Bereitstellungszyklus verwaltet. Verwenden Sie diesen Befehl, um modellspezifische Probleme wie Konfigurationsfehler oder Probleme bei der SageMaker Endpunkterstellung zu beheben.

    !kubectl describe JumpStartModel $model_id -n $cluster_namespace
  3. Überprüfen Sie den Status aller Kubernetes-Objekte. Dieser Befehl bietet einen umfassenden Überblick über alle zugehörigen Kubernetes-Ressourcen in Ihrem Namespace. Verwenden Sie diesen Befehl für einen schnellen Integritätscheck, um den Gesamtstatus der Pods, Dienste, Bereitstellungen und benutzerdefinierten Ressourcen zu überprüfen, die mit Ihrer Modellbereitstellung verknüpft sind.

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