Tentukan pipa - Amazon SageMaker

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

Tentukan pipa

Untuk mengatur alur kerja Anda dengan SageMaker Amazon Pipelines, Anda harus membuat grafik asiklik terarah DAG () dalam bentuk definisi pipeline. JSON DAGMenentukan berbagai langkah yang terlibat dalam proses ML Anda, seperti prapemrosesan data, pelatihan model, evaluasi model, dan penerapan model, serta dependensi dan aliran data di antara langkah-langkah ini. Topik berikut menunjukkan cara menghasilkan definisi pipeline.

Anda dapat membuat definisi JSON pipeline menggunakan SageMaker Python SDK atau fitur visual drag-and-drop Pipeline Designer di Amazon SageMaker Studio. Gambar berikut adalah representasi dari pipeline DAG yang Anda buat dalam tutorial ini:

Screenshot dari drag-and-drop antarmuka visual untuk Pipelines di Studio.

Pipa yang Anda tentukan di bagian berikut memecahkan masalah regresi untuk menentukan usia abalon berdasarkan pengukuran fisiknya. Untuk buku catatan Jupyter yang dapat dijalankan yang menyertakan konten dalam tutorial ini, lihat Mengatur Pekerjaan dengan Pipa Bangunan Model Amazon. SageMaker

catatan

Anda dapat mereferensikan lokasi model sebagai properti dari langkah pelatihan, seperti yang ditunjukkan pada end-to-end contoh CustomerChurn pipeline di Github.

Topik

    Panduan berikut memandu Anda melalui langkah-langkah untuk membuat pipeline barebone menggunakan Pipeline Designer. drag-and-drop Jika Anda perlu menjeda atau mengakhiri sesi pengeditan Pipeline Anda di desainer visual kapan saja, klik opsi Ekspor. Ini memungkinkan Anda mengunduh definisi Pipeline saat ini ke lingkungan lokal Anda. Kemudian, ketika Anda ingin melanjutkan proses pengeditan Pipeline, Anda dapat mengimpor file JSON definisi yang sama ke desainer visual.

    Buat langkah Pemrosesan

    Untuk membuat langkah pekerjaan pemrosesan data, lakukan hal berikut:

    1. Buka konsol Studio dengan mengikuti petunjuk diLuncurkan Amazon SageMaker Studio.

    2. Di panel navigasi kiri, pilih Pipelines.

    3. Pilih Buat.

    4. Pilih Kosong.

    5. Di bilah sisi kiri, pilih Proses data dan seret ke kanvas.

    6. Di kanvas, pilih langkah Proses data yang Anda tambahkan.

    7. Untuk menambahkan kumpulan data input, pilih Tambah di bawah Data (input) di bilah sisi kanan dan pilih kumpulan data.

    8. Untuk menambahkan lokasi untuk menyimpan kumpulan data keluaran, pilih Tambah di bawah Data (output) di bilah sisi kanan dan arahkan ke tujuan.

    9. Lengkapi bidang yang tersisa di sidebar kanan. Untuk informasi tentang bidang di tab ini, lihat sagemaker.workflow.steps. ProcessingStep.

    Buat langkah Pelatihan

    Untuk mengatur langkah pelatihan model, lakukan hal berikut:

    1. Di sidebar kiri, pilih Train model dan seret ke kanvas.

    2. Di kanvas, pilih langkah model Kereta yang Anda tambahkan.

    3. Untuk menambahkan kumpulan data input, pilih Tambah di bawah Data (input) di bilah sisi kanan dan pilih kumpulan data.

    4. Untuk memilih lokasi untuk menyimpan artefak model Anda, masukkan Amazon URI S3 di bidang Lokasi (URIS3), atau pilih Jelajahi S3 untuk menavigasi ke lokasi tujuan.

    5. Lengkapi bidang yang tersisa di sidebar kanan. Untuk informasi tentang bidang di tab ini, lihat sagemaker.workflow.steps. TrainingStep.

    6. Klik dan seret kursor dari langkah Proses data yang Anda tambahkan di bagian sebelumnya ke langkah Model kereta untuk membuat tepi yang menghubungkan dua langkah.

    Buat paket model dengan langkah model Register

    Untuk membuat paket model dengan langkah pendaftaran model, lakukan hal berikut:

    1. Di bilah sisi kiri, pilih Daftar model dan seret ke kanvas.

    2. Di kanvas, pilih langkah model Daftar yang Anda tambahkan.

    3. Untuk memilih model yang akan didaftarkan, pilih Tambah di bawah Model (input).

    4. Pilih Buat grup model untuk menambahkan model Anda ke grup model baru.

    5. Lengkapi bidang yang tersisa di sidebar kanan. Untuk informasi tentang bidang di tab ini, lihat sagemaker.workflow.step_collections. RegisterModel.

    6. Klik dan seret kursor dari langkah model Kereta yang Anda tambahkan di bagian sebelumnya ke langkah model Daftar untuk membuat tepi yang menghubungkan dua langkah.

    Terapkan model ke titik akhir dengan langkah model Deploy (titik akhir)

    Untuk menerapkan model Anda menggunakan langkah penerapan model, lakukan hal berikut:

    1. Di sidebar kiri, pilih Deploy model (endpoint) dan seret ke kanvas.

    2. Di kanvas, pilih langkah Deploy model (endpoint) yang Anda tambahkan.

    3. Untuk memilih model yang akan digunakan, pilih Tambah di bawah Model (input).

    4. Pilih tombol Create endpoint radio untuk membuat endpoint baru.

    5. Masukkan Nama dan Deskripsi untuk titik akhir Anda.

    6. Klik dan seret kursor dari langkah model Register yang Anda tambahkan di bagian sebelumnya ke langkah Deploy model (endpoint) untuk membuat tepi yang menghubungkan dua langkah.

    7. Lengkapi bidang yang tersisa di sidebar kanan.

    Tentukan parameter Pipeline

    Anda dapat mengonfigurasi satu set parameter Pipeline yang nilainya dapat diperbarui untuk setiap eksekusi. Untuk menentukan parameter pipa dan mengatur nilai default, klik ikon roda gigi di bagian bawah desainer visual.

    Simpan Pipeline

    Setelah Anda memasukkan semua informasi yang diperlukan untuk membuat pipeline Anda, klik Simpan di bagian bawah desainer visual. Ini memvalidasi pipeline Anda untuk setiap potensi kesalahan saat runtime dan memberi tahu Anda. Operasi Simpan tidak akan berhasil sampai Anda mengatasi semua kesalahan yang ditandai oleh pemeriksaan validasi otomatis. Jika Anda ingin melanjutkan pengeditan di lain waktu, Anda dapat menyimpan pipeline yang sedang berlangsung sebagai JSON definisi di lingkungan lokal Anda. Anda dapat mengekspor Pipeline Anda sebagai file JSON definisi dengan mengklik tombol Ekspor di bagian bawah desainer visual. Kemudian, untuk melanjutkan memperbarui Pipeline Anda, unggah file JSON definisi itu dengan mengklik tombol Impor.

    Prasyarat

    Untuk menjalankan tutorial berikut, lengkapi yang berikut ini:

    • Siapkan instance notebook Anda seperti yang diuraikan dalam Buat instance notebook. Ini memberi izin peran Anda untuk membaca dan menulis ke Amazon S3, serta membuat pekerjaan pelatihan, transformasi batch, dan pemrosesan. SageMaker

    • Berikan izin buku catatan Anda untuk mendapatkan dan meneruskan perannya sendiri seperti yang ditunjukkan dalam Memodifikasi kebijakan izin peran. Tambahkan JSON cuplikan berikut untuk melampirkan kebijakan ini ke peran Anda. Ganti <your-role-arn> dengan yang ARN digunakan untuk membuat instance notebook Anda.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iam:GetRole", "iam:PassRole" ], "Resource": "<your-role-arn>" } ] }
    • Percayai kepala SageMaker layanan dengan mengikuti langkah-langkah dalam Memodifikasi kebijakan kepercayaan peran. Tambahkan fragmen pernyataan berikut ke hubungan kepercayaan peran Anda:

      { "Sid": "", "Effect": "Allow", "Principal": { "Service": "sagemaker.amazonaws.com" }, "Action": "sts:AssumeRole" }

    Siapkan lingkungan Anda

    Buat SageMaker sesi baru menggunakan blok kode berikut. Ini mengembalikan peran ARN untuk sesi. Peran ini ARN harus menjadi peran eksekusi ARN yang Anda tetapkan sebagai prasyarat.

    import boto3 import sagemaker import sagemaker.session from sagemaker.workflow.pipeline_context import PipelineSession region = boto3.Session().region_name sagemaker_session = sagemaker.session.Session() role = sagemaker.get_execution_role() default_bucket = sagemaker_session.default_bucket() pipeline_session = PipelineSession() model_package_group_name = f"AbaloneModelPackageGroupName"

    Buat pipeline

    penting

    IAMKebijakan khusus yang memungkinkan Amazon SageMaker Studio atau Amazon SageMaker Studio Classic membuat SageMaker sumber daya Amazon juga harus memberikan izin untuk menambahkan tag ke sumber daya tersebut. Izin untuk menambahkan tag ke sumber daya diperlukan karena Studio dan Studio Classic secara otomatis menandai sumber daya apa pun yang mereka buat. Jika IAM kebijakan mengizinkan Studio dan Studio Classic membuat sumber daya tetapi tidak mengizinkan penandaan, kesalahan "AccessDenied" dapat terjadi saat mencoba membuat sumber daya. Untuk informasi selengkapnya, lihat Berikan izin untuk menandai sumber daya SageMaker.

    AWS Kebijakan Terkelola untuk Amazon SageMakeryang memberikan izin untuk membuat SageMaker sumber daya sudah menyertakan izin untuk menambahkan tag saat membuat sumber daya tersebut.

    Jalankan langkah-langkah berikut dari instance SageMaker notebook Anda untuk membuat pipeline yang menyertakan langkah-langkah untuk:

    • prapemrosesan

    • pelatihan

    • evaluasi

    • evaluasi bersyarat

    • pendaftaran model

    catatan

    Anda dapat menggunakan ExecutionVariablesdan fungsi Gabung untuk menentukan lokasi output Anda. ExecutionVariablesdiselesaikan saat runtime. Misalnya, ExecutionVariables.PIPELINE_EXECUTION_ID diselesaikan ke ID eksekusi saat ini, yang dapat digunakan sebagai pengidentifikasi unik di berbagai proses.

    Langkah 1: Unduh dataset

    Notebook ini menggunakan UCI Machine Learning Abalone Dataset. Dataset berisi fitur-fitur berikut:

    • length— Pengukuran cangkang terpanjang dari abalon.

    • diameter— Diameter abalon tegak lurus dengan panjangnya.

    • height— Ketinggian abalon dengan daging di cangkang.

    • whole_weight— Berat seluruh abalon.

    • shucked_weight— Berat daging dikeluarkan dari abalon.

    • viscera_weight— Berat visera abalon setelah pendarahan.

    • shell_weight— Berat cangkang abalon setelah pengangkatan dan pengeringan daging.

    • sex- Jenis kelamin abalon. Salah satu dari 'M', 'F', atau 'I', di mana 'I' adalah abalon bayi.

    • rings— Jumlah cincin di cangkang abalon.

    Jumlah cincin dalam cangkang abalon adalah perkiraan yang baik untuk usianya menggunakan rumus. age=rings + 1.5 Namun, mendapatkan nomor ini adalah tugas yang memakan waktu. Anda harus memotong cangkang melalui kerucut, menodai bagian, dan menghitung jumlah cincin melalui mikroskop. Namun, pengukuran fisik lainnya lebih mudah didapat. Notebook ini menggunakan dataset untuk membangun model prediktif dari cincin variabel menggunakan pengukuran fisik lainnya.

    Untuk mengunduh dataset
    1. Unduh kumpulan data ke bucket Amazon S3 default akun Anda.

      !mkdir -p data local_path = "data/abalone-dataset.csv" s3 = boto3.resource("s3") s3.Bucket(f"sagemaker-servicecatalog-seedcode-{region}").download_file( "dataset/abalone-dataset.csv", local_path ) base_uri = f"s3://{default_bucket}/abalone" input_data_uri = sagemaker.s3.S3Uploader.upload( local_path=local_path, desired_s3_uri=base_uri, ) print(input_data_uri)
    2. Unduh kumpulan data kedua untuk transformasi batch setelah model Anda dibuat.

      local_path = "data/abalone-dataset-batch.csv" s3 = boto3.resource("s3") s3.Bucket(f"sagemaker-servicecatalog-seedcode-{region}").download_file( "dataset/abalone-dataset-batch", local_path ) base_uri = f"s3://{default_bucket}/abalone" batch_data_uri = sagemaker.s3.S3Uploader.upload( local_path=local_path, desired_s3_uri=base_uri, ) print(batch_data_uri)

    Langkah 2: Tentukan parameter pipa

    Blok kode ini mendefinisikan parameter berikut untuk pipeline Anda:

    • processing_instance_count— Jumlah instance dari pekerjaan pemrosesan.

    • input_data— Lokasi Amazon S3 dari data input.

    • batch_data— Lokasi Amazon S3 dari data input untuk transformasi batch.

    • model_approval_status— Status persetujuan untuk mendaftarkan model terlatih untuk CI/CD. Untuk informasi selengkapnya, lihat MLOpsOtomatisasi Dengan SageMaker Proyek.

    from sagemaker.workflow.parameters import ( ParameterInteger, ParameterString, ) processing_instance_count = ParameterInteger( name="ProcessingInstanceCount", default_value=1 ) model_approval_status = ParameterString( name="ModelApprovalStatus", default_value="PendingManualApproval" ) input_data = ParameterString( name="InputData", default_value=input_data_uri, ) batch_data = ParameterString( name="BatchData", default_value=batch_data_uri, )

    Langkah 3: Tentukan langkah pemrosesan untuk rekayasa fitur

    Bagian ini menunjukkan cara membuat langkah pemrosesan untuk menyiapkan data dari kumpulan data untuk pelatihan.

    Untuk membuat langkah pemrosesan
    1. Buat direktori untuk skrip pemrosesan.

      !mkdir -p abalone
    2. Buat file di /abalone direktori bernama preprocessing.py dengan konten berikut. Skrip preprocessing ini diteruskan ke langkah pemrosesan untuk berjalan pada data input. Langkah pelatihan kemudian menggunakan fitur dan label pelatihan yang telah diproses sebelumnya untuk melatih model. Langkah evaluasi menggunakan model terlatih dan fitur dan label uji yang telah diproses sebelumnya untuk mengevaluasi model. Skrip digunakan scikit-learn untuk melakukan hal berikut:

      • Isi data sex kategoris yang hilang dan kodekan sehingga cocok untuk pelatihan.

      • Skala dan normalkan semua bidang numerik kecuali untuk rings dansex.

      • Pisahkan data menjadi kumpulan data pelatihan, pengujian, dan validasi.

      %%writefile abalone/preprocessing.py import argparse import os import requests import tempfile import numpy as np import pandas as pd from sklearn.compose import ColumnTransformer from sklearn.impute import SimpleImputer from sklearn.pipeline import Pipeline from sklearn.preprocessing import StandardScaler, OneHotEncoder # Because this is a headerless CSV file, specify the column names here. feature_columns_names = [ "sex", "length", "diameter", "height", "whole_weight", "shucked_weight", "viscera_weight", "shell_weight", ] label_column = "rings" feature_columns_dtype = { "sex": str, "length": np.float64, "diameter": np.float64, "height": np.float64, "whole_weight": np.float64, "shucked_weight": np.float64, "viscera_weight": np.float64, "shell_weight": np.float64 } label_column_dtype = {"rings": np.float64} def merge_two_dicts(x, y): z = x.copy() z.update(y) return z if __name__ == "__main__": base_dir = "/opt/ml/processing" df = pd.read_csv( f"{base_dir}/input/abalone-dataset.csv", header=None, names=feature_columns_names + [label_column], dtype=merge_two_dicts(feature_columns_dtype, label_column_dtype) ) numeric_features = list(feature_columns_names) numeric_features.remove("sex") numeric_transformer = Pipeline( steps=[ ("imputer", SimpleImputer(strategy="median")), ("scaler", StandardScaler()) ] ) categorical_features = ["sex"] categorical_transformer = Pipeline( steps=[ ("imputer", SimpleImputer(strategy="constant", fill_value="missing")), ("onehot", OneHotEncoder(handle_unknown="ignore")) ] ) preprocess = ColumnTransformer( transformers=[ ("num", numeric_transformer, numeric_features), ("cat", categorical_transformer, categorical_features) ] ) y = df.pop("rings") X_pre = preprocess.fit_transform(df) y_pre = y.to_numpy().reshape(len(y), 1) X = np.concatenate((y_pre, X_pre), axis=1) np.random.shuffle(X) train, validation, test = np.split(X, [int(.7*len(X)), int(.85*len(X))]) pd.DataFrame(train).to_csv(f"{base_dir}/train/train.csv", header=False, index=False) pd.DataFrame(validation).to_csv(f"{base_dir}/validation/validation.csv", header=False, index=False) pd.DataFrame(test).to_csv(f"{base_dir}/test/test.csv", header=False, index=False)
    3. Buat instance SKLearnProcessor untuk diteruskan ke langkah pemrosesan.

      from sagemaker.sklearn.processing import SKLearnProcessor framework_version = "0.23-1" sklearn_processor = SKLearnProcessor( framework_version=framework_version, instance_type="ml.m5.xlarge", instance_count=processing_instance_count, base_job_name="sklearn-abalone-process", sagemaker_session=pipeline_session, role=role, )
    4. Buat langkah pemrosesan. Langkah ini mengambilSKLearnProcessor, saluran input dan output, dan preprocessing.py skrip yang Anda buat. Ini sangat mirip dengan run metode instance prosesor di SageMaker PythonSDK. input_dataParameter yang diteruskan ProcessingStep adalah data input dari langkah itu sendiri. Data input ini digunakan oleh instance prosesor saat berjalan.

      Perhatikan"train,"validation, dan saluran "test" bernama yang ditentukan dalam konfigurasi output untuk pekerjaan pemrosesan. Langkah Properties seperti ini dapat digunakan dalam langkah-langkah berikutnya dan menyelesaikan nilai runtime mereka saat runtime.

      from sagemaker.processing import ProcessingInput, ProcessingOutput from sagemaker.workflow.steps import ProcessingStep processor_args = sklearn_processor.run( inputs=[ ProcessingInput(source=input_data, destination="/opt/ml/processing/input"), ], outputs=[ ProcessingOutput(output_name="train", source="/opt/ml/processing/train"), ProcessingOutput(output_name="validation", source="/opt/ml/processing/validation"), ProcessingOutput(output_name="test", source="/opt/ml/processing/test") ], code="abalone/preprocessing.py", ) step_process = ProcessingStep( name="AbaloneProcess", step_args=processor_args )

    Langkah 4: Tentukan langkah pelatihan

    Bagian ini menunjukkan cara menggunakan SageMaker XGBoostAlgoritma untuk melatih model pada output data pelatihan dari langkah-langkah pemrosesan.

    Untuk menentukan langkah pelatihan
    1. Tentukan jalur model tempat Anda ingin menyimpan model dari pelatihan.

      model_path = f"s3://{default_bucket}/AbaloneTrain"
    2. Konfigurasikan estimator untuk XGBoost algoritme dan kumpulan data input. Jenis instance pelatihan diteruskan ke estimator. Skrip pelatihan yang khas:

      • memuat data dari saluran input

      • mengonfigurasi pelatihan dengan hyperparameters

      • melatih model

      • menyimpan model model_dir agar dapat di-host nanti

      SageMaker mengunggah model ke Amazon S3 dalam bentuk model.tar.gz a di akhir pekerjaan pelatihan.

      from sagemaker.estimator import Estimator image_uri = sagemaker.image_uris.retrieve( framework="xgboost", region=region, version="1.0-1", py_version="py3", instance_type="ml.m5.xlarge" ) xgb_train = Estimator( image_uri=image_uri, instance_type="ml.m5.xlarge", instance_count=1, output_path=model_path, sagemaker_session=pipeline_session, role=role, ) xgb_train.set_hyperparameters( objective="reg:linear", num_round=50, max_depth=5, eta=0.2, gamma=4, min_child_weight=6, subsample=0.7, silent=0 )
    3. Buat TrainingStep menggunakan instance estimator dan properti dari. ProcessingStep Lewati S3Uri saluran "train" dan "validation" output keTrainingStep

      from sagemaker.inputs import TrainingInput from sagemaker.workflow.steps import TrainingStep train_args = xgb_train.fit( inputs={ "train": TrainingInput( s3_data=step_process.properties.ProcessingOutputConfig.Outputs[ "train" ].S3Output.S3Uri, content_type="text/csv" ), "validation": TrainingInput( s3_data=step_process.properties.ProcessingOutputConfig.Outputs[ "validation" ].S3Output.S3Uri, content_type="text/csv" ) }, ) step_train = TrainingStep( name="AbaloneTrain", step_args = train_args )

    Langkah 5: Tentukan langkah pemrosesan untuk evaluasi model

    Bagian ini menunjukkan cara membuat langkah pemrosesan untuk mengevaluasi keakuratan model. Hasil evaluasi model ini digunakan dalam langkah kondisi untuk menentukan jalur lari mana yang akan diambil.

    Untuk menentukan langkah pemrosesan untuk evaluasi model
    1. Buat file di /abalone direktori bernamaevaluation.py. Skrip ini digunakan dalam langkah pemrosesan untuk melakukan evaluasi model. Dibutuhkan model terlatih dan dataset pengujian sebagai input, kemudian menghasilkan JSON file yang berisi metrik evaluasi klasifikasi.

      %%writefile abalone/evaluation.py import json import pathlib import pickle import tarfile import joblib import numpy as np import pandas as pd import xgboost from sklearn.metrics import mean_squared_error if __name__ == "__main__": model_path = f"/opt/ml/processing/model/model.tar.gz" with tarfile.open(model_path) as tar: tar.extractall(path=".") model = pickle.load(open("xgboost-model", "rb")) test_path = "/opt/ml/processing/test/test.csv" df = pd.read_csv(test_path, header=None) y_test = df.iloc[:, 0].to_numpy() df.drop(df.columns[0], axis=1, inplace=True) X_test = xgboost.DMatrix(df.values) predictions = model.predict(X_test) mse = mean_squared_error(y_test, predictions) std = np.std(y_test - predictions) report_dict = { "regression_metrics": { "mse": { "value": mse, "standard_deviation": std }, }, } output_dir = "/opt/ml/processing/evaluation" pathlib.Path(output_dir).mkdir(parents=True, exist_ok=True) evaluation_path = f"{output_dir}/evaluation.json" with open(evaluation_path, "w") as f: f.write(json.dumps(report_dict))
    2. Buat sebuah instance dari sebuah ScriptProcessor yang digunakan untuk membuat sebuahProcessingStep.

      from sagemaker.processing import ScriptProcessor script_eval = ScriptProcessor( image_uri=image_uri, command=["python3"], instance_type="ml.m5.xlarge", instance_count=1, base_job_name="script-abalone-eval", sagemaker_session=pipeline_session, role=role, )
    3. Buat ProcessingStep menggunakan instance prosesor, saluran input dan output, dan evaluation.py skrip. Lulus:

      • S3ModelArtifactsproperti dari langkah step_train pelatihan

      • S3Urisaluran "test" output dari langkah step_process pemrosesan

      Ini sangat mirip dengan run metode instance prosesor di SageMaker PythonSDK. 

      from sagemaker.workflow.properties import PropertyFile evaluation_report = PropertyFile( name="EvaluationReport", output_name="evaluation", path="evaluation.json" ) eval_args = script_eval.run( inputs=[ ProcessingInput( source=step_train.properties.ModelArtifacts.S3ModelArtifacts, destination="/opt/ml/processing/model" ), ProcessingInput( source=step_process.properties.ProcessingOutputConfig.Outputs[ "test" ].S3Output.S3Uri, destination="/opt/ml/processing/test" ) ], outputs=[ ProcessingOutput(output_name="evaluation", source="/opt/ml/processing/evaluation"), ], code="abalone/evaluation.py", ) step_eval = ProcessingStep( name="AbaloneEval", step_args=eval_args, property_files=[evaluation_report], )

    Langkah 6: Tentukan CreateModelStep untuk transformasi batch

    penting

    Kami merekomendasikan penggunaan Langkah model untuk membuat model pada v2.90.0 dari Python. SageMaker SDK CreateModelStepakan terus bekerja di versi SageMaker Python sebelumnyaSDK, tetapi tidak lagi didukung secara aktif.

    Bagian ini menunjukkan cara membuat SageMaker model dari output langkah pelatihan. Model ini digunakan untuk transformasi batch pada dataset baru. Langkah ini diteruskan ke langkah kondisi dan hanya berjalan jika langkah kondisi dievaluasi. true

    Untuk menentukan transformasi CreateModelStep untuk batch
    1. Buat SageMaker model. Lewati S3ModelArtifacts properti dari langkah step_train pelatihan.

      from sagemaker.model import Model model = Model( image_uri=image_uri, model_data=step_train.properties.ModelArtifacts.S3ModelArtifacts, sagemaker_session=pipeline_session, role=role, )
    2. Tentukan input model untuk SageMaker model Anda.

      from sagemaker.inputs import CreateModelInput inputs = CreateModelInput( instance_type="ml.m5.large", accelerator_type="ml.eia1.medium", )
    3. Buat contoh CreateModelStep menggunakan CreateModelInput dan SageMaker model yang Anda tentukan.

      from sagemaker.workflow.steps import CreateModelStep step_create_model = CreateModelStep( name="AbaloneCreateModel", model=model, inputs=inputs, )

    Langkah 7: Tentukan TransformStep untuk melakukan transformasi batch

    Bagian ini menunjukkan cara membuat TransformStep untuk melakukan transformasi batch pada kumpulan data setelah model dilatih. Langkah ini diteruskan ke langkah kondisi dan hanya berjalan jika langkah kondisi dievaluasi. true

    Untuk menentukan TransformStep untuk melakukan transformasi batch
    1. Buat instance transformator dengan jenis instans komputasi yang sesuai, jumlah instans, dan bucket Amazon URI S3 keluaran yang diinginkan. Lewati ModelName properti dari step_create_model CreateModel langkah.

      from sagemaker.transformer import Transformer transformer = Transformer( model_name=step_create_model.properties.ModelName, instance_type="ml.m5.xlarge", instance_count=1, output_path=f"s3://{default_bucket}/AbaloneTransform" )
    2. Buat TransformStep menggunakan instance transformator yang Anda tentukan dan parameter batch_data pipeline.

      from sagemaker.inputs import TransformInput from sagemaker.workflow.steps import TransformStep step_transform = TransformStep( name="AbaloneTransform", transformer=transformer, inputs=TransformInput(data=batch_data) )

    Langkah 8: Tentukan RegisterModel langkah untuk membuat paket model

    penting

    Kami merekomendasikan penggunaan Langkah model untuk mendaftarkan model pada v2.90.0 dari Python. SageMaker SDK RegisterModelakan terus bekerja di versi SageMaker Python sebelumnyaSDK, tetapi tidak lagi didukung secara aktif.

    Bagian ini menunjukkan cara membuat instance dariRegisterModel. Hasil berjalan RegisterModel dalam pipa adalah paket model. Paket model adalah abstraksi artefak model yang dapat digunakan kembali yang mengemas semua bahan yang diperlukan untuk inferensi. Ini terdiri dari spesifikasi inferensi yang mendefinisikan gambar inferensi untuk digunakan bersama dengan lokasi bobot model opsional. Grup paket model adalah kumpulan paket model. Anda dapat menggunakan ModelPackageGroup for Pipelines untuk menambahkan versi baru dan paket model ke grup untuk setiap pipeline yang dijalankan. Untuk informasi selengkapnya tentang registri model, lihatPenerapan Registrasi Model dengan Model Registry.

    Langkah ini diteruskan ke langkah kondisi dan hanya berjalan jika langkah kondisi dievaluasi. true

    Untuk menentukan RegisterModel langkah untuk membuat paket model
    • Buat RegisterModel langkah menggunakan instance estimator yang Anda gunakan untuk langkah pelatihan. Lewati S3ModelArtifacts properti dari langkah step_train pelatihan dan tentukan aModelPackageGroup. Pipelines menciptakan ini ModelPackageGroup untuk Anda.

      from sagemaker.model_metrics import MetricsSource, ModelMetrics from sagemaker.workflow.step_collections import RegisterModel model_metrics = ModelMetrics( model_statistics=MetricsSource( s3_uri="{}/evaluation.json".format( step_eval.arguments["ProcessingOutputConfig"]["Outputs"][0]["S3Output"]["S3Uri"] ), content_type="application/json" ) ) step_register = RegisterModel( name="AbaloneRegisterModel", estimator=xgb_train, model_data=step_train.properties.ModelArtifacts.S3ModelArtifacts, content_types=["text/csv"], response_types=["text/csv"], inference_instances=["ml.t2.medium", "ml.m5.xlarge"], transform_instances=["ml.m5.xlarge"], model_package_group_name=model_package_group_name, approval_status=model_approval_status, model_metrics=model_metrics )

    Langkah 9: Tentukan langkah kondisi untuk memverifikasi akurasi model

    A ConditionStep memungkinkan Pipelines untuk mendukung proses kondisional di pipeline Anda DAG berdasarkan kondisi properti langkah. Dalam hal ini, Anda hanya ingin mendaftarkan paket model jika keakuratan model tersebut melebihi nilai yang diperlukan. Keakuratan model ditentukan oleh langkah evaluasi model. Jika akurasi melebihi nilai yang diperlukan, pipeline juga membuat SageMaker Model dan menjalankan transformasi batch pada kumpulan data. Bagian ini menunjukkan cara mendefinisikan langkah Kondisi.

    Untuk menentukan langkah kondisi untuk memverifikasi akurasi model
    1. Tentukan ConditionLessThanOrEqualTo kondisi menggunakan nilai akurasi yang ditemukan dalam output dari langkah pemrosesan evaluasi model,step_eval. Dapatkan output ini menggunakan file properti yang Anda indeks dalam langkah pemrosesan dan masing-masing JSONPath nilai kesalahan kuadrat rata-rata,. "mse"

      from sagemaker.workflow.conditions import ConditionLessThanOrEqualTo from sagemaker.workflow.condition_step import ConditionStep from sagemaker.workflow.functions import JsonGet cond_lte = ConditionLessThanOrEqualTo( left=JsonGet( step_name=step_eval.name, property_file=evaluation_report, json_path="regression_metrics.mse.value" ), right=6.0 )
    2. Membangun a. ConditionStep Lulus ConditionEquals kondisi, lalu atur pendaftaran paket model dan langkah transformasi batch sebagai langkah selanjutnya jika kondisi berlalu.

      step_cond = ConditionStep( name="AbaloneMSECond", conditions=[cond_lte], if_steps=[step_register, step_create_model, step_transform], else_steps=[], )

    Langkah 10: Buat pipeline

    Sekarang setelah Anda membuat semua langkah, gabungkan mereka ke dalam pipeline.

    Untuk membuat pipa
    1. Tentukan hal berikut untuk pipeline Anda:name,parameters, dansteps. Nama harus unik dalam (account, region) pasangan.

      catatan

      Sebuah langkah hanya dapat muncul sekali di daftar langkah pipeline atau daftar langkah jika/lain dari langkah kondisi. Itu tidak bisa muncul di keduanya.

      from sagemaker.workflow.pipeline import Pipeline pipeline_name = f"AbalonePipeline" pipeline = Pipeline( name=pipeline_name, parameters=[ processing_instance_count, model_approval_status, input_data, batch_data, ], steps=[step_process, step_train, step_eval, step_cond], )
    2. (Opsional) Periksa definisi JSON pipa untuk memastikan bahwa itu terbentuk dengan baik.

      import json json.loads(pipeline.definition())

    Definisi pipeline ini siap untuk diserahkan SageMaker. Dalam tutorial berikutnya, Anda mengirimkan pipeline ini ke SageMaker dan mulai menjalankan.

    Anda juga dapat menggunakan boto3 atau AWS CloudFormationuntuk membuat pipeline. Membuat pipa memerlukan definisi pipa, yang merupakan JSON objek yang mendefinisikan setiap langkah pipa. Ini SageMaker SDK menawarkan cara sederhana untuk membangun definisi pipa, yang dapat Anda gunakan dengan salah satu yang disebutkan APIs sebelumnya untuk membuat pipa itu sendiri. Tanpa menggunakanSDK, pengguna harus menulis JSON definisi mentah untuk membuat pipeline tanpa pemeriksaan kesalahan yang disediakan oleh SageMaker PythonSDK. Untuk melihat skema JSON definisi pipeline, lihat JSONSkema Definisi SageMaker Pipeline. Contoh kode berikut menunjukkan contoh JSON objek definisi SageMaker pipeline:

    {'Version': '2020-12-01', 'Metadata': {}, 'Parameters': [{'Name': 'ProcessingInstanceType', 'Type': 'String', 'DefaultValue': 'ml.m5.xlarge'}, {'Name': 'ProcessingInstanceCount', 'Type': 'Integer', 'DefaultValue': 1}, {'Name': 'TrainingInstanceType', 'Type': 'String', 'DefaultValue': 'ml.m5.xlarge'}, {'Name': 'ModelApprovalStatus', 'Type': 'String', 'DefaultValue': 'PendingManualApproval'}, {'Name': 'ProcessedData', 'Type': 'String', 'DefaultValue': 'S3_URL', {'Name': 'InputDataUrl', 'Type': 'String', 'DefaultValue': 'S3_URL', 'PipelineExperimentConfig': {'ExperimentName': {'Get': 'Execution.PipelineName'}, 'TrialName': {'Get': 'Execution.PipelineExecutionId'}}, 'Steps': [{'Name': 'ReadTrainDataFromFS', 'Type': 'Processing', 'Arguments': {'ProcessingResources': {'ClusterConfig': {'InstanceType': 'ml.m5.4xlarge', 'InstanceCount': 2, 'VolumeSizeInGB': 30}}, 'AppSpecification': {'ImageUri': 'IMAGE_URI', 'ContainerArguments': [....]}, 'RoleArn': 'ROLE', 'ProcessingInputs': [...], 'ProcessingOutputConfig': {'Outputs': [.....]}, 'StoppingCondition': {'MaxRuntimeInSeconds': 86400}}, 'CacheConfig': {'Enabled': True, 'ExpireAfter': '30d'}}, ... ... ... }

    Langkah selanjutnya: Jalankan pipa