

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

# Menerapkan logika preprocessing ke dalam model MLdalam satu titik akhir menggunakan pipeline inferensi di Amazon 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 Rodriguez Garcia, dan Mateusz Zaremba, Amazon Web Services*

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

Pola ini menjelaskan cara menerapkan beberapa objek model pipeline dalam satu titik akhir dengan menggunakan pipeline [inferensi di Amazon](https://docs.aws.amazon.com/sagemaker/latest/dg/inference-pipelines.html). SageMaker Objek model pipeline mewakili tahapan alur kerja machine learning (ML) yang berbeda, seperti preprocessing, inferensi model, dan postprocessing. [Untuk mengilustrasikan penerapan objek model pipeline yang terhubung secara serial, pola ini menunjukkan kepada Anda cara menerapkan wadah [Scikit-learn pra-pemrosesan dan model regresi berdasarkan algoritme pembelajar](https://docs.aws.amazon.com/sagemaker/latest/dg/sklearn.html) linier yang ada di dalamnya.](https://docs.aws.amazon.com/sagemaker/latest/dg/linear-learner.html) SageMaker Penerapan di-host di belakang satu titik akhir di. SageMaker

**catatan**  
Penerapan dalam pola ini menggunakan tipe instance ml.m4.2xlarge. Sebaiknya gunakan jenis instans yang sesuai dengan persyaratan ukuran data dan kompleksitas alur kerja Anda. Untuk informasi selengkapnya, lihat [ SageMaker Harga Amazon](https://aws.amazon.com/sagemaker/pricing/). Pola ini menggunakan [gambar Docker bawaan untuk Scikit-learn](https://docs.aws.amazon.com/sagemaker/latest/dg/pre-built-docker-containers-scikit-learn-spark.html), tetapi Anda dapat menggunakan wadah Docker Anda sendiri dan mengintegrasikannya ke dalam alur kerja Anda.

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

**Prasyarat**
+ Akun AWS yang aktif
+ [Python 3.9](https://www.python.org/downloads/release/python-390/)
+ [Perpustakaan Amazon SageMaker Python SDK](https://sagemaker.readthedocs.io/en/stable/) [dan Boto3](https://boto3.amazonaws.com/v1/documentation/api/latest/index.html)
+ [Peran](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) [AWS Identity and Access Management (AWS IAM) dengan SageMaker [izin dasar dan izin](https://docs.aws.amazon.com/sagemaker/latest/dg/api-permissions-reference.html) Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-policy-language-overview.html)

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

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

**Tumpukan teknologi target**
+ Amazon Elastic Container Registry (Amazon ECR)
+ Amazon SageMaker
+  SageMaker Studio Amazon
+ Amazon Simple Storage Service (Amazon S3)
+ Titik akhir [inferensi waktu nyata](https://docs.aws.amazon.com/sagemaker/latest/dg/realtime-endpoints.html) untuk Amazon SageMaker

**Arsitektur target**

Diagram berikut menunjukkan arsitektur untuk penyebaran objek model SageMaker pipa Amazon.

![Arsitektur untuk penyebaran objek model SageMaker pipa](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/images/pattern-img/1105d51b-752f-46d7-962c-acef1fb3399f/images/12f06715-b1c2-4de0-b277-99ce87308152.png)


Diagram menunjukkan alur kerja berikut:

1.  SageMaker Notebook menyebarkan model pipa.

1. Ember S3 menyimpan artefak model.

1. Amazon ECR mendapatkan gambar wadah sumber dari bucket S3.

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

**Alat AWS**
+ [Amazon Elastic Container Registry (Amazon ECR](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html)) adalah layanan registri gambar kontainer terkelola yang aman, terukur, dan andal.
+ [Amazon SageMaker](https://docs.aws.amazon.com/sagemaker/latest/dg/whatis.html) adalah layanan ML terkelola yang membantu Anda membuat dan melatih model ML, lalu menerapkannya ke lingkungan host yang siap produksi.
+ [Amazon SageMaker Studio](https://docs.aws.amazon.com/sagemaker/latest/dg/studio.html) adalah lingkungan pengembangan terintegrasi (IDE) berbasis web untuk ML yang memungkinkan Anda membuat, melatih, men-debug, menerapkan, dan memantau model ML Anda.
+ [Amazon Simple Storage Service (Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html)) adalah layanan penyimpanan objek berbasis cloud yang membantu Anda menyimpan, melindungi, dan mengambil sejumlah data.

**Kode**

Kode untuk pola ini tersedia di GitHub [Inference Pipeline dengan repositori Scikit-learn dan](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) Linear Learner.

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

### Siapkan dataset
<a name="prepare-the-dataset"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Siapkan dataset untuk tugas regresi Anda. | [Buka buku catatan](https://docs.aws.amazon.com/sagemaker/latest/dg/notebooks-create-open.html#notebooks-open) di Amazon SageMaker Studio.<br />Untuk mengimpor semua pustaka yang diperlukan dan menginisialisasi lingkungan kerja Anda, gunakan kode contoh berikut di buku catatan Anda:<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><br />Untuk mengunduh kumpulan data sampel, tambahkan kode berikut ke buku catatan Anda:<pre>! mkdir abalone_data<br />! aws s3 cp s3://sagemaker-sample-files/datasets/tabular/uci_abalone/abalone.csv ./abalone_data</pre>****Contoh dalam pola ini menggunakan [Abalone Data Set](https://archive.ics.uci.edu/ml/datasets/abalone) dari UCI Machine Learning Repository. | Ilmuwan data | 
| Unggah kumpulan data ke bucket S3. | Di buku catatan tempat Anda menyiapkan kumpulan data sebelumnya, tambahkan kode berikut untuk mengunggah data sampel ke bucket S3:<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> | Ilmuwan data | 

### Buat preprocessor data menggunakan SKLearn
<a name="create-the-data-preprocessor-using-sklearn"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Siapkan skrip preprocessor.py. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/deploy-preprocessing-logic-into-an-ml-model-in-a-single-endpoint-using-an-inference-pipeline-in-amazon-sagemaker.html) | Ilmuwan data | 
| Buat objek SKLearn preprocessor. | Untuk membuat objek SKLearn preprocessor (disebut SKLearn Estimator) yang dapat Anda masukkan ke dalam pipeline inferensi akhir, jalankan kode berikut di buku catatan Anda: 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> | Ilmuwan data | 
| Uji inferensi preprocessor. | Untuk mengonfirmasi bahwa preprosesor Anda didefinisikan dengan benar, luncurkan [pekerjaan transformasi batch](https://docs.aws.amazon.com/sagemaker/latest/dg/batch-transform.html) dengan memasukkan kode berikut di SageMaker buku catatan Anda:<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> |  | 

### Buat model pembelajaran mesin
<a name="create-a-machine-learning-model"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Buat objek model. | Untuk membuat objek model berdasarkan algoritme pembelajar linier, masukkan kode berikut di SageMaker buku catatan Anda:<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><br />Kode sebelumnya mengambil image Amazon ECR Docker yang relevan dari Amazon ECR Registry publik untuk model, membuat objek estimator, dan kemudian menggunakan objek tersebut untuk melatih model regresi. | Ilmuwan data | 

### Menyebarkan pipa akhir
<a name="deploy-the-final-pipeline"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Menyebarkan model pipa. | Untuk membuat objek model pipeline (yaitu objek preprocessor) dan menyebarkan objek, masukkan kode berikut di buku catatan Anda SageMaker :<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>Anda dapat menyesuaikan jenis instance yang digunakan dalam objek model untuk memenuhi kebutuhan Anda. | Ilmuwan data | 
| Uji inferensi. | Untuk mengonfirmasi bahwa titik akhir berfungsi dengan benar, jalankan contoh kode inferensi berikut di buku catatan Anda SageMaker :<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> | Ilmuwan data | 

## Sumber daya terkait
<a name="deploy-preprocessing-logic-into-an-ml-model-in-a-single-endpoint-using-an-inference-pipeline-in-amazon-sagemaker-resources"></a>
+ [Memproses data input sebelum membuat prediksi menggunakan pipeline SageMaker inferensi Amazon dan Scikit-learn (AWS](https://aws.amazon.com/blogs/machine-learning/preprocess-input-data-before-making-predictions-using-amazon-sagemaker-inference-pipelines-and-scikit-learn/) Machine Learning Blog)
+ [Machine Learning ujung ke ujung dengan Amazon SageMaker](https://github.com/aws-samples/amazon-sagemaker-build-train-deploy) (GitHub)