

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 mithilfe einer Inferenz-Pipeline in Amazon Vorverarbeitungslogik in einem ML-Modell an einem einzigen Endpunkt bereit SageMaker
<a name="deploy-preprocessing-logic-into-an-ml-model-in-a-single-endpoint-using-an-inference-pipeline-in-amazon-sagemaker"></a>

*Mohan Gowda Purushothama, Gabriel Rodríguez Garcia und Mateusz Zaremba, Amazon Web Services*

## Zusammenfassung
<a name="deploy-preprocessing-logic-into-an-ml-model-in-a-single-endpoint-using-an-inference-pipeline-in-amazon-sagemaker-summary"></a>

Dieses Muster erklärt, wie mehrere Pipeline-Modellobjekte in einem einzigen Endpunkt mithilfe einer [Inferenz-Pipeline](https://docs.aws.amazon.com/sagemaker/latest/dg/inference-pipelines.html) in Amazon SageMaker bereitgestellt werden. Das Pipeline-Modellobjekt repräsentiert verschiedene Workflow-Phasen des maschinellen Lernens (ML), wie Vorverarbeitung, Modellinferenz und Nachverarbeitung. [Um den Einsatz von seriell verbundenen Pipeline-Modellobjekten zu veranschaulichen, zeigt Ihnen dieses Muster, wie Sie einen [Scikit-Learn-Vorverarbeitungscontainer und ein Regressionsmodell bereitstellen, das auf dem integrierten linearen Lernalgorithmus](https://docs.aws.amazon.com/sagemaker/latest/dg/sklearn.html) basiert.](https://docs.aws.amazon.com/sagemaker/latest/dg/linear-learner.html) SageMaker Die Bereitstellung wird hinter einem einzigen Endpunkt in gehostet. SageMaker

**Anmerkung**  
Die Bereitstellung in diesem Muster verwendet den Instance-Typ ml.m4.2xlarge. Wir empfehlen, einen Instance-Typ zu verwenden, der Ihren Anforderungen an die Datengröße und der Komplexität Ihres Workflows entspricht. Weitere Informationen finden Sie unter [ SageMaker Amazon-Preise](https://aws.amazon.com/sagemaker/pricing/). Dieses Muster verwendet [vorgefertigte Docker-Images für Scikit-learn](https://docs.aws.amazon.com/sagemaker/latest/dg/pre-built-docker-containers-scikit-learn-spark.html), aber Sie können Ihre eigenen Docker-Container verwenden und sie in Ihren Workflow integrieren.

## Voraussetzungen und Einschränkungen
<a name="deploy-preprocessing-logic-into-an-ml-model-in-a-single-endpoint-using-an-inference-pipeline-in-amazon-sagemaker-prereqs"></a>

**Voraussetzungen**
+ Ein aktives AWS-Konto
+ [Python 3.9](https://www.python.org/downloads/release/python-390/)
+ [Amazon SageMaker Python SDK](https://sagemaker.readthedocs.io/en/stable/) und [Boto3-Bibliothek](https://boto3.amazonaws.com/v1/documentation/api/latest/index.html)
+ [Rolle](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) [AWS Identity and Access Management (AWS IAM) mit SageMaker [Basisberechtigungen](https://docs.aws.amazon.com/sagemaker/latest/dg/api-permissions-reference.html) und Amazon Simple Storage Service (Amazon S3) -Berechtigungen](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-policy-language-overview.html)

**Produktversionen**
+ [Amazon SageMaker Python-SDK 2.49.2](https://sagemaker.readthedocs.io/en/v2.49.2/)

## Architektur
<a name="deploy-preprocessing-logic-into-an-ml-model-in-a-single-endpoint-using-an-inference-pipeline-in-amazon-sagemaker-architecture"></a>

**Zieltechnologie-Stack**
+ Amazon Elastic Container Registry (Amazon ECR)
+ Amazon SageMaker
+ Amazon SageMaker Studio
+ Amazon Simple Storage Service (Amazon-S3)
+ [Echtzeit-Inferenzendpunkt](https://docs.aws.amazon.com/sagemaker/latest/dg/realtime-endpoints.html) für Amazon SageMaker

**Zielarchitektur**

Das folgende Diagramm zeigt die Architektur für die Bereitstellung eines SageMaker Amazon-Pipeline-Modellobjekts.

![\[Architektur für die Bereitstellung eines SageMaker Pipeline-Modellobjekts\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/1105d51b-752f-46d7-962c-acef1fb3399f/images/12f06715-b1c2-4de0-b277-99ce87308152.png)


Das Diagramm zeigt den folgenden Workflow:

1. Ein SageMaker Notebook stellt ein Pipeline-Modell bereit.

1. Ein S3-Bucket speichert die Modellartefakte.

1. Amazon ECR ruft die Quellcontainer-Images aus dem S3-Bucket ab.

## Tools
<a name="deploy-preprocessing-logic-into-an-ml-model-in-a-single-endpoint-using-an-inference-pipeline-in-amazon-sagemaker-tools"></a>

**AWS-Tools**
+ [Amazon Elastic Container Registry (Amazon ECR)](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html) ist ein verwalteter Container-Image-Registry-Service, der sicher, skalierbar und zuverlässig ist.
+ [Amazon SageMaker](https://docs.aws.amazon.com/sagemaker/latest/dg/whatis.html) ist ein verwalteter ML-Service, der Ihnen hilft, ML-Modelle zu erstellen und zu trainieren und sie dann in einer produktionsbereiten gehosteten Umgebung bereitzustellen.
+ [Amazon SageMaker Studio](https://docs.aws.amazon.com/sagemaker/latest/dg/studio.html) ist eine webbasierte, integrierte Entwicklungsumgebung (IDE) für ML, mit der Sie Ihre ML-Modelle erstellen, trainieren, debuggen, bereitstellen und überwachen können.
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) ist ein cloudbasierter Objektspeicherservice, der Sie beim Speichern, Schützen und Abrufen beliebiger Datenmengen unterstützt.

**Code**

Der Code für dieses Muster ist in der GitHub [Inference Pipeline with Scikit-Learn](https://github.com/aws/amazon-sagemaker-examples/blob/main/sagemaker-python-sdk/scikit_learn_inference_pipeline/Inference%20Pipeline%20with%20Scikit-learn%20and%20Linear%20Learner.ipynb) und Linear Learner Repository verfügbar.

## Epen
<a name="deploy-preprocessing-logic-into-an-ml-model-in-a-single-endpoint-using-an-inference-pipeline-in-amazon-sagemaker-epics"></a>

### Bereiten Sie den Datensatz vor
<a name="prepare-the-dataset"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Bereiten Sie den Datensatz für Ihre Regressionsaufgabe vor. | [Öffnen Sie ein Notizbuch](https://docs.aws.amazon.com/sagemaker/latest/dg/notebooks-create-open.html#notebooks-open) in Amazon SageMaker Studio.Verwenden Sie den folgenden Beispielcode in Ihrem Notizbuch, um alle erforderlichen Bibliotheken zu importieren und Ihre Arbeitsumgebung zu initialisieren:<pre>import sagemaker<br />from sagemaker import get_execution_role<br /><br />sagemaker_session = sagemaker.Session()<br /><br /># Get a SageMaker-compatible role used by this Notebook Instance.<br />role = get_execution_role()<br /><br /># S3 prefix<br />bucket = sagemaker_session.default_bucket()<br />prefix = "Scikit-LinearLearner-pipeline-abalone-example"</pre>Um einen Beispieldatensatz herunterzuladen, fügen Sie Ihrem Notizbuch den folgenden Code hinzu:<pre>! mkdir abalone_data<br />! aws s3 cp s3://sagemaker-sample-files/datasets/tabular/uci_abalone/abalone.csv ./abalone_data</pre>****Das Beispiel in diesem Muster verwendet den [Abalone-Datensatz](https://archive.ics.uci.edu/ml/datasets/abalone) aus dem UCI Machine Learning Repository. | Datenwissenschaftler | 
| Laden Sie den Datensatz in einen S3-Bucket hoch. | Fügen Sie in dem Notizbuch, in dem Sie Ihren Datensatz zuvor vorbereitet haben, den folgenden Code hinzu, um Ihre Beispieldaten in einen S3-Bucket hochzuladen:<pre>WORK_DIRECTORY = "abalone_data"<br /><br />train_input = sagemaker_session.upload_data(<br />    path="{}/{}".format(WORK_DIRECTORY, "abalone.csv"),<br />    bucket=bucket,<br />    key_prefix="{}/{}".format(prefix, "train"),<br />)</pre> | Datenwissenschaftler | 

### Erstellen Sie den Datenpräprozessor mit SKLearn
<a name="create-the-data-preprocessor-using-sklearn"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Bereiten Sie das Skript preprocessor.py vor. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/deploy-preprocessing-logic-into-an-ml-model-in-a-single-endpoint-using-an-inference-pipeline-in-amazon-sagemaker.html) | Datenwissenschaftler | 
| Erstellen Sie das SKLearn Präprozessor-Objekt. | Um ein SKLearn Präprozessor-Objekt ( SKLearn Estimator genannt) zu erstellen, das Sie in Ihre endgültige Inferenz-Pipeline integrieren können, führen Sie den folgenden Code in Ihrem Notizbuch aus: SageMaker <pre>from sagemaker.sklearn.estimator import SKLearn<br /><br />FRAMEWORK_VERSION = "0.23-1"<br />script_path = "sklearn_abalone_featurizer.py"<br /><br />sklearn_preprocessor = SKLearn(<br />    entry_point=script_path,<br />    role=role,<br />    framework_version=FRAMEWORK_VERSION,<br />    instance_type="ml.c4.xlarge",<br />    sagemaker_session=sagemaker_session,<br />)<br />sklearn_preprocessor.fit({"train": train_input})</pre> | Datenwissenschaftler | 
| Testen Sie die Inferenz des Präprozessors. | Um zu überprüfen, ob Ihr Präprozessor korrekt definiert ist, starten Sie einen [Batch-Transformationsauftrag](https://docs.aws.amazon.com/sagemaker/latest/dg/batch-transform.html), indem Sie den folgenden Code in Ihr Notizbuch eingeben: SageMaker <pre># Define a SKLearn Transformer from the trained SKLearn Estimator<br />transformer = sklearn_preprocessor.transformer(<br />    instance_count=1, instance_type="ml.m5.xlarge", assemble_with="Line", accept="text/csv"<br />)<br /><br /><br /># Preprocess training input<br />transformer.transform(train_input, content_type="text/csv")<br />print("Waiting for transform job: " + transformer.latest_transform_job.job_name)<br />transformer.wait()<br />preprocessed_train = transformer.output_path</pre> |  | 

### Erstellen Sie ein Modell für maschinelles Lernen
<a name="create-a-machine-learning-model"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie ein Modellobjekt. | Um ein Modellobjekt zu erstellen, das auf dem linearen Lernalgorithmus basiert, geben Sie den folgenden Code in Ihr SageMaker Notizbuch ein:<pre>import boto3<br />from sagemaker.image_uris import retrieve<br /><br />ll_image = retrieve("linear-learner", boto3.Session().region_name)<br />s3_ll_output_key_prefix = "ll_training_output"<br />s3_ll_output_location = "s3://{}/{}/{}/{}".format(<br />    bucket, prefix, s3_ll_output_key_prefix, "ll_model"<br />)<br /><br />ll_estimator = sagemaker.estimator.Estimator(<br />    ll_image,<br />    role,<br />    instance_count=1,<br />    instance_type="ml.m4.2xlarge",<br />    volume_size=20,<br />    max_run=3600,<br />    input_mode="File",<br />    output_path=s3_ll_output_location,<br />    sagemaker_session=sagemaker_session,<br />)<br /><br />ll_estimator.set_hyperparameters(feature_dim=10, predictor_type="regressor", mini_batch_size=32)<br /><br />ll_train_data = sagemaker.inputs.TrainingInput(<br />    preprocessed_train,<br />    distribution="FullyReplicated",<br />    content_type="text/csv",<br />    s3_data_type="S3Prefix",<br />)<br /><br />data_channels = {"train": ll_train_data}<br />ll_estimator.fit(inputs=data_channels, logs=True)</pre>Der obige Code ruft das entsprechende Amazon ECR Docker-Image aus der öffentlichen Amazon ECR Registry für das Modell ab, erstellt ein Schätzerobjekt und verwendet dieses Objekt dann, um das Regressionsmodell zu trainieren. | Datenwissenschaftler | 

### Stellen Sie die endgültige Pipeline bereit
<a name="deploy-the-final-pipeline"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Stellen Sie das Pipeline-Modell bereit. | Um ein Pipeline-Modellobjekt (d. h. ein Präprozessor-Objekt) zu erstellen und das Objekt bereitzustellen, geben Sie den folgenden Code in Ihr SageMaker Notizbuch ein:<pre>from sagemaker.model import Model<br />from sagemaker.pipeline import PipelineModel<br />import boto3<br />from time import gmtime, strftime<br /><br />timestamp_prefix = strftime("%Y-%m-%d-%H-%M-%S", gmtime())<br /><br />scikit_learn_inferencee_model = sklearn_preprocessor.create_model()<br />linear_learner_model = ll_estimator.create_model()<br /><br />model_name = "inference-pipeline-" + timestamp_prefix<br />endpoint_name = "inference-pipeline-ep-" + timestamp_prefix<br />sm_model = PipelineModel(<br />    name=model_name, role=role, models= [scikit_learn_inferencee_model, linear_learner_model]<br />)<br /><br />sm_model.deploy(initial_instance_count=1, instance_type="ml.c4.xlarge", endpoint_name=endpoint_name)</pre>Sie können den im Modellobjekt verwendeten Instanztyp an Ihre Bedürfnisse anpassen. | Datenwissenschaftler | 
| Testen Sie die Inferenz. | Um zu überprüfen, ob der Endpunkt ordnungsgemäß funktioniert, führen Sie den folgenden Beispiel-Inferenzcode in Ihrem SageMaker Notizbuch aus:<pre>from sagemaker.predictor import Predictor<br />from sagemaker.serializers import CSVSerializer<br /><br />payload = "M, 0.44, 0.365, 0.125, 0.516, 0.2155, 0.114, 0.155"<br />actual_rings = 10<br />predictor = Predictor(<br />    endpoint_name=endpoint_name, sagemaker_session=sagemaker_session, serializer=CSVSerializer()<br />)<br /><br />print(predictor.predict(payload))</pre> | Datenwissenschaftler | 

## Zugehörige Ressourcen
<a name="deploy-preprocessing-logic-into-an-ml-model-in-a-single-endpoint-using-an-inference-pipeline-in-amazon-sagemaker-resources"></a>
+ [Vorverarbeitung von Eingabedaten vor dem Treffen von Prognosen mithilfe von SageMaker Amazon-Inferenz-Pipelines und Scikit-Learn (AWS Machine Learning Learning-Blog](https://aws.amazon.com/blogs/machine-learning/preprocess-input-data-before-making-predictions-using-amazon-sagemaker-inference-pipelines-and-scikit-learn/))
+ [Durchgängiges Machine Learning mit Amazon SageMaker](https://github.com/aws-samples/amazon-sagemaker-build-train-deploy) (GitHub)