Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Langkah-langkah Pipa Pembuatan SageMaker Model Amazon
SageMaker Pipa terdiri dari langkah-langkah. Langkah-langkah ini menentukan tindakan yang diambil pipeline dan hubungan antara langkah-langkah menggunakan properti.
Topik
Jenis langkah
Berikut ini menjelaskan persyaratan dari setiap jenis langkah dan memberikan contoh implementasi langkah. Ini bukan implementasi yang berfungsi karena mereka tidak menyediakan sumber daya dan input yang dibutuhkan. Untuk tutorial yang mengimplementasikan langkah-langkah ini, lihatMembuat dan Mengelola SageMaker Pipelines.
catatan
Anda juga dapat membuat langkah dari kode pembelajaran mesin lokal Anda dengan mengubahnya menjadi langkah SageMaker Pipelines dengan dekorator. @step
Untuk informasi selengkapnya, lihat @step dekorator.
Amazon SageMaker Model Building Pipelines mendukung jenis langkah berikut:
@step dekorator
Anda dapat membuat langkah dari kode pembelajaran mesin lokal menggunakan @step
dekorator. Setelah Anda menguji kode Anda, Anda dapat mengonversi fungsi ke langkah SageMaker pipeline dengan membubuhi keterangan dengan dekorator. @step
SageMaker Pipelines membuat dan menjalankan pipa ketika Anda melewati output dari fungsi @step
-decorated sebagai langkah ke pipeline Anda. Anda juga dapat membuat DAG pipa multi-langkah yang mencakup satu atau lebih fungsi @step
yang didekorasi serta langkah-langkah SageMaker pipa tradisional. Untuk detail selengkapnya tentang cara membuat langkah dengan @step
dekorator, lihatL Kode ift-and-shift Python dengan dekorator @step.
Langkah pemrosesan
Gunakan langkah pemrosesan untuk membuat pekerjaan pemrosesan untuk pemrosesan data. Untuk informasi selengkapnya tentang pekerjaan pemrosesan, lihat Memproses Data dan Mengevaluasi Model.
Langkah pemrosesan membutuhkan prosesor, skrip Python yang mendefinisikan kode pemrosesan, output untuk pemrosesan, dan argumen pekerjaan. Contoh berikut menunjukkan cara membuat ProcessingStep
definisi.
from sagemaker.sklearn.processing import SKLearnProcessor sklearn_processor = SKLearnProcessor(framework_version='1.0-1', role=
<role>
, instance_type='ml.m5.xlarge', instance_count=1)
from sagemaker.processing import ProcessingInput, ProcessingOutput from sagemaker.workflow.steps import ProcessingStep 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") ] step_process = ProcessingStep( name="AbaloneProcess", step_args = sklearn_processor.run(inputs=inputs, outputs=outputs, code="abalone/preprocessing.py") )
Lulus parameter runtime
Contoh berikut menunjukkan cara meneruskan parameter runtime dari PySpark prosesor ke file. ProcessingStep
from sagemaker.workflow.pipeline_context import PipelineSession from sagemaker.spark.processing import PySparkProcessor from sagemaker.processing import ProcessingInput, ProcessingOutput from sagemaker.workflow.steps import ProcessingStep pipeline_session = PipelineSession() pyspark_processor = PySparkProcessor( framework_version='2.4', role=
<role>
, instance_type='ml.m5.xlarge', instance_count=1, sagemaker_session=pipeline_session, ) step_args = pyspark_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="preprocess.py", arguments=None, ) step_process = ProcessingStep( name="AbaloneProcess", step_args=step_args, )
Untuk informasi selengkapnya tentang persyaratan langkah pemrosesan, lihat sagemaker.workflow.steps. ProcessingStep
Langkah pelatihan
Anda menggunakan langkah pelatihan untuk membuat pekerjaan pelatihan untuk melatih model. Untuk informasi selengkapnya tentang pekerjaan pelatihan, lihat Melatih Model dengan Amazon SageMaker.
Langkah pelatihan membutuhkan estimator, serta input data pelatihan dan validasi. Contoh berikut menunjukkan cara membuat TrainingStep
definisi. Untuk informasi selengkapnya tentang persyaratan langkah pelatihan, lihat sagemaker.workflow.steps. TrainingStep
from sagemaker.workflow.pipeline_context import PipelineSession from sagemaker.inputs import TrainingInput from sagemaker.workflow.steps import TrainingStep from sagemaker.xgboost.estimator import XGBoost pipeline_session = PipelineSession() xgb_estimator = XGBoost(..., sagemaker_session=pipeline_session) step_args = xgb_estimator.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="TrainAbaloneModel", step_args=step_args, )
Langkah penyetelan
Anda menggunakan langkah penyetelan untuk membuat pekerjaan tuning hyperparameter, juga dikenal sebagai optimasi hyperparameter (). HPO Pekerjaan tuning hyperparameter menjalankan beberapa pekerjaan pelatihan, dengan setiap pekerjaan menghasilkan versi model. Untuk informasi lebih lanjut tentang penyetelan hyperparameter, lihat. Lakukan penyetelan model otomatis dengan SageMaker
Pekerjaan penyetelan dikaitkan dengan SageMaker eksperimen untuk pipa, dengan pekerjaan pelatihan yang dibuat sebagai uji coba. Untuk informasi selengkapnya, lihat Integrasi Eksperimen.
Langkah penyetelan membutuhkan input HyperparameterTunerwarm_start_config
parameter. HyperparameterTuner
Untuk informasi lebih lanjut tentang penyetelan hyperparameter dan start hangat, lihat. Jalankan Pekerjaan Tuning Hyperparameter Mulai yang Hangat
Anda menggunakan metode get_top_model_s3_uri dari sagemaker.workflow.steps
penting
Langkah penyetelan diperkenalkan di Amazon SageMaker SDK Python v2.48.0 dan Amazon Studio Classic v3.8.0. SageMaker Anda harus memperbarui Studio Classic sebelum menggunakan langkah penyetelan atau pipeline DAG tidak ditampilkan. Untuk memperbarui Studio Classic, lihatMatikan dan Perbarui SageMaker Studio Classic.
Contoh berikut menunjukkan cara membuat TuningStep
definisi.
from sagemaker.workflow.pipeline_context import PipelineSession from sagemaker.tuner import HyperparameterTuner from sagemaker.inputs import TrainingInput from sagemaker.workflow.steps import TuningStep tuner = HyperparameterTuner(..., sagemaker_session=PipelineSession()) step_tuning = TuningStep( name = "HPTuning", step_args = tuner.fit(inputs=TrainingInput(s3_data="s3://
my-bucket/my-data
")) )
Dapatkan versi model terbaik
Contoh berikut menunjukkan cara mendapatkan versi model terbaik dari pekerjaan penyetelan menggunakan get_top_model_s3_uri
metode ini. Paling-paling, 50 versi berkinerja teratas tersedia berdasarkan peringkat HyperParameterTuningJobObjective. top_k
Argumennya adalah indeks ke dalam versi, di mana top_k=0
versi berkinerja terbaik dan top_k=49
merupakan versi berkinerja terburuk.
best_model = Model( image_uri=image_uri, model_data=step_tuning.get_top_model_s3_uri( top_k=0, s3_bucket=sagemaker_session.default_bucket() ), ... )
Untuk informasi selengkapnya tentang persyaratan langkah penyetelan, lihat sagemaker.workflow.steps. TuningStep
Langkah AutoML
Gunakan AutoML
catatan
Saat ini, langkah AutoML hanya mendukung mode pelatihan ensembling.
Contoh berikut menunjukkan cara membuat definisi menggunakanAutoMLStep
.
from sagemaker.workflow.pipeline_context import PipelineSession from sagemaker.workflow.automl_step import AutoMLStep pipeline_session = PipelineSession() auto_ml = AutoML(..., role="
<role>
", target_attribute_name="my_target_attribute_name
", mode="ENSEMBLING
", sagemaker_session=pipeline_session) input_training = AutoMLInput( inputs="s3://my-bucket/my-training-data
", target_attribute_name="my_target_attribute_name
", channel_type="training", ) input_validation = AutoMLInput( inputs="s3://my-bucket/my-validation-data
", target_attribute_name="my_target_attribute_name
", channel_type="validation", ) step_args = auto_ml.fit( inputs=[input_training, input_validation] ) step_automl = AutoMLStep( name="AutoMLStep", step_args=step_args, )
Dapatkan versi model terbaik
Langkah AutoML secara otomatis melatih beberapa kandidat model. Dapatkan model dengan metrik objektif terbaik dari pekerjaan AutoML menggunakan get_best_auto_ml_model
metode sebagai berikut. Anda juga harus menggunakan artefak model IAM role
untuk mengakses.
best_model = step_automl.get_best_auto_ml_model(
role=<role>
)
Untuk informasi selengkapnya, lihat langkah AutoML
Langkah model
Gunakan a ModelStep
untuk membuat atau mendaftarkan SageMaker model. Untuk informasi selengkapnya tentang ModelStep
persyaratan, lihat sagemaker.workflow.model_step. ModelStep
Buat model
Anda dapat menggunakan a ModelStep
untuk membuat SageMaker model. A ModelStep
membutuhkan artefak model dan informasi tentang jenis SageMaker instance yang perlu Anda gunakan untuk membuat model. Untuk informasi selengkapnya tentang SageMaker model, lihat Melatih Model dengan Amazon SageMaker.
Contoh berikut menunjukkan cara membuat ModelStep
definisi.
from sagemaker.workflow.pipeline_context import PipelineSession from sagemaker.model import Model from sagemaker.workflow.model_step import ModelStep step_train = TrainingStep(...) model = Model( image_uri=pytorch_estimator.training_image_uri(), model_data=step_train.properties.ModelArtifacts.S3ModelArtifacts, sagemaker_session=PipelineSession(), role=role, ) step_model_create = ModelStep( name="MyModelCreationStep", step_args=model.create(instance_type="ml.m5.xlarge"), )
Daftarkan model
Anda dapat menggunakan a ModelStep
untuk mendaftarkan a sagemaker.model.Model
atau sagemaker.pipeline.PipelineModel
dengan registri SageMaker model Amazon. A PipelineModel
mewakili pipa inferensi, yang merupakan model yang terdiri dari urutan linier kontainer yang memproses permintaan inferensi. Untuk informasi selengkapnya tentang cara mendaftarkan model, lihatDaftarkan dan Terapkan Model dengan Registri Model.
Contoh berikut menunjukkan cara membuat ModelStep
yang mendaftarkan aPipelineModel
.
import time from sagemaker.workflow.pipeline_context import PipelineSession from sagemaker.sklearn import SKLearnModel from sagemaker.xgboost import XGBoostModel pipeline_session = PipelineSession() code_location = 's3://{0}/{1}/code'.format(
bucket_name
, prefix) sklearn_model = SKLearnModel( model_data=processing_step.properties.ProcessingOutputConfig.Outputs['model'].S3Output.S3Uri, entry_point='inference.py', source_dir='sklearn_source_dir/', code_location=code_location, framework_version='1.0-1', role=role, sagemaker_session=pipeline_session, py_version='py3' ) xgboost_model = XGBoostModel( model_data=training_step.properties.ModelArtifacts.S3ModelArtifacts, entry_point='inference.py', source_dir='xgboost_source_dir/', code_location=code_location, framework_version='0.90-2', py_version='py3', sagemaker_session=pipeline_session, role=role ) from sagemaker.workflow.model_step import ModelStep from sagemaker import PipelineModel pipeline_model = PipelineModel( models=[sklearn_model, xgboost_model], role=role,sagemaker_session=pipeline_session, ) register_model_step_args = pipeline_model.register( content_types=["application/json"], response_types=["application/json"], inference_instances=["ml.t2.medium", "ml.m5.xlarge"], transform_instances=["ml.m5.xlarge"], model_package_group_name='sipgroup', ) step_model_registration = ModelStep( name="AbaloneRegisterModel", step_args=register_model_step_args, )
CreateModel langkah
penting
Kami merekomendasikan penggunaan Langkah model untuk membuat model pada v2.90.0 dari Python. SageMaker SDK CreateModelStep
akan terus bekerja di versi SageMaker Python sebelumnyaSDK, tetapi tidak lagi didukung secara aktif.
Anda menggunakan CreateModel
langkah untuk membuat SageMaker model. Untuk informasi selengkapnya tentang SageMaker model, lihat Melatih Model dengan Amazon SageMaker.
Langkah membuat model memerlukan artefak model dan informasi tentang jenis SageMaker instance yang perlu Anda gunakan untuk membuat model. Contoh berikut menunjukkan cara membuat definisi CreateModel
langkah. Untuk informasi selengkapnya tentang persyaratan CreateModel
langkah, lihat sagemaker.workflow.steps. CreateModelStep
from sagemaker.workflow.steps import CreateModelStep step_create_model = CreateModelStep( name="AbaloneCreateModel", model=best_model, inputs=inputs )
RegisterModel langkah
penting
Kami merekomendasikan penggunaan Langkah model untuk mendaftarkan model pada v2.90.0 dari Python. SageMaker SDK RegisterModel
akan terus bekerja di versi SageMaker Python sebelumnyaSDK, tetapi tidak lagi didukung secara aktif.
Anda menggunakan RegisterModel
langkah untuk mendaftarkan Sagemaker.model.Model atau sagemaker.pipeline.PipelineModel
mewakili pipa inferensi, yang merupakan model yang terdiri dari urutan linier kontainer yang memproses permintaan inferensi.
Untuk informasi selengkapnya tentang cara mendaftarkan model, lihatDaftarkan dan Terapkan Model dengan Registri Model. Untuk informasi selengkapnya tentang persyaratan RegisterModel
langkah, lihat sagemaker.workflow.step_collections. RegisterModel
Contoh berikut menunjukkan cara membuat RegisterModel
langkah yang mendaftarkan aPipelineModel
.
import time from sagemaker.sklearn import SKLearnModel from sagemaker.xgboost import XGBoostModel code_location = 's3://{0}/{1}/code'.format(
bucket_name
, prefix) sklearn_model = SKLearnModel(model_data=processing_step.properties.ProcessingOutputConfig.Outputs['model'].S3Output.S3Uri, entry_point='inference.py', source_dir='sklearn_source_dir/
', code_location=code_location, framework_version='1.0-1', role=role, sagemaker_session=sagemaker_session, py_version='py3') xgboost_model = XGBoostModel(model_data=training_step.properties.ModelArtifacts.S3ModelArtifacts, entry_point='inference.py', source_dir='xgboost_source_dir/
', code_location=code_location, framework_version='0.90-2', py_version='py3', sagemaker_session=sagemaker_session, role=role) from sagemaker.workflow.step_collections import RegisterModel from sagemaker import PipelineModel pipeline_model = PipelineModel(models=[sklearn_model,xgboost_model],role=role,sagemaker_session=sagemaker_session) step_register = RegisterModel( name="AbaloneRegisterModel
", model=pipeline_model, content_types=["application/json"], response_types=["application/json"], inference_instances=["ml.t2.medium
", "ml.m5.xlarge
"], transform_instances=["ml.m5.xlarge
"], model_package_group_name='sipgroup
', )
Jika model
tidak disediakan, langkah model register memerlukan estimator seperti yang ditunjukkan pada contoh berikut.
from sagemaker.workflow.step_collections import RegisterModel 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 )
Transformasikan langkah
Anda menggunakan langkah transformasi untuk transformasi batch untuk menjalankan inferensi pada seluruh kumpulan data. Untuk informasi selengkapnya tentang transformasi batch, lihatJalankan Transformasi Batch dengan Pipa Inferensi.
Langkah transformasi membutuhkan transformator dan data untuk menjalankan transformasi batch. Contoh berikut menunjukkan cara membuat definisi Transform
langkah. Untuk informasi selengkapnya tentang persyaratan Transform
langkah, lihat sagemaker.workflow.steps. TransformStep
from sagemaker.workflow.pipeline_context import PipelineSession from sagemaker.transformer import Transformer from sagemaker.inputs import TransformInput from sagemaker.workflow.steps import TransformStep transformer = Transformer(..., sagemaker_session=PipelineSession()) step_transform = TransformStep( name="AbaloneTransform", step_args=transformer.transform(data="s3://
my-bucket/my-data
"), )
Langkah kondisi
Anda menggunakan langkah kondisi untuk mengevaluasi kondisi properti langkah untuk menilai tindakan mana yang harus diambil selanjutnya dalam pipeline.
Langkah kondisi membutuhkan:
-
Daftar kondisi.
-
Daftar langkah-langkah yang harus dijalankan jika kondisi dievaluasi.
true
-
Daftar langkah-langkah yang harus dijalankan jika kondisi dievaluasi.
false
Contoh berikut menunjukkan cara membuat ConditionStep
definisi.
Batasan
-
SageMaker Pipelines tidak mendukung penggunaan langkah-langkah kondisi bersarang. Anda tidak dapat melewati langkah kondisi sebagai input untuk langkah kondisi lain.
-
Langkah kondisi tidak dapat menggunakan langkah yang identik di kedua cabang. Jika Anda membutuhkan fungsionalitas langkah yang sama di kedua cabang, duplikat langkahnya dan beri nama yang berbeda.
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 ) step_cond = ConditionStep( name="AbaloneMSECond", conditions=[cond_lte], if_steps=[step_register, step_create_model, step_transform], else_steps=[] )
Untuk informasi selengkapnya tentang ConditionStep
persyaratan, lihat sagemaker.workflow.condition_step. ConditionStep
Langkah panggilan balik
Gunakan Callback
langkah untuk menambahkan proses dan AWS layanan tambahan ke dalam alur kerja Anda yang tidak langsung disediakan oleh Amazon SageMaker Model Building Pipelines. Ketika sebuah Callback
langkah berjalan, prosedur berikut terjadi:
-
SageMaker Pipelines mengirimkan pesan ke antrean Amazon Simple Queue Service (AmazonSQS) yang ditentukan pelanggan. Pesan tersebut berisi token yang SageMaker dihasilkan pipeline dan daftar parameter input yang disediakan pelanggan. Setelah mengirim pesan, SageMaker Pipelines menunggu tanggapan dari pelanggan.
-
Pelanggan mengambil pesan dari SQS antrian Amazon dan memulai proses kustom mereka.
-
Ketika proses selesai, pelanggan memanggil salah satu dari yang berikut APIs dan mengirimkan token yang dihasilkan SageMaker pipeline:
-
SendPipelineExecutionStepSuccess, bersama dengan daftar parameter output
-
SendPipelineExecutionStepFailure, bersama dengan alasan kegagalan
-
-
APIPanggilan tersebut menyebabkan SageMaker Pipelines melanjutkan proses pipeline atau gagal prosesnya.
Untuk informasi selengkapnya tentang persyaratan Callback
langkah, lihat sagemaker.workflow.callback_step. CallbackStep
penting
Callback
langkah-langkah diperkenalkan di Amazon SageMaker Python SDK v2.45.0 dan Amazon SageMaker Studio Classic v3.6.2. Anda harus memperbarui Studio Classic sebelum menggunakan Callback
langkah atau pipeline DAG tidak ditampilkan. Untuk memperbarui Studio Classic, lihatMatikan dan Perbarui SageMaker Studio Classic.
Sampel berikut menunjukkan implementasi dari prosedur sebelumnya.
from sagemaker.workflow.callback_step import CallbackStep step_callback = CallbackStep( name="MyCallbackStep", sqs_queue_url="https://sqs.us-east-2.amazonaws.com/012345678901/MyCallbackQueue", inputs={...}, outputs=[...] ) callback_handler_code = ' import boto3 import json def handler(event, context): sagemaker_client=boto3.client("sagemaker") for record in event["Records"]: payload=json.loads(record["body"]) token=payload["token"] # Custom processing # Call SageMaker to complete the step sagemaker_client.send_pipeline_execution_step_success( CallbackToken=token, OutputParameters={...} ) '
catatan
Parameter keluaran untuk tidak CallbackStep
boleh bersarang. Misalnya, jika Anda menggunakan kamus bersarang sebagai parameter keluaran Anda, maka kamus diperlakukan sebagai string tunggal (mis. {"output1": "{\"nested_output1\":\"my-output\"}"}
). Jika Anda memberikan nilai bersarang, maka ketika Anda mencoba merujuk ke parameter keluaran tertentu, akan muncul SageMaker kesalahan klien yang tidak dapat dicoba ulang.
Menghentikan perilaku
Proses pipeline tidak berhenti saat Callback
langkah sedang berjalan.
Saat Anda memanggil StopPipelineExecutionproses pipeline dengan Callback
langkah yang sedang berjalan, SageMaker Pipelines mengirimkan SQS pesan Amazon ke SQS antrian. Isi SQS pesan berisi bidang Status, yang diatur keStopping
. Berikut ini menunjukkan contoh badan SQS pesan.
{ "token": "26vcYbeWsZ", "pipelineExecutionArn": "arn:aws:sagemaker:us-east-2:012345678901:pipeline/callback-pipeline/execution/7pinimwddh3a", "arguments": { "number": 5, "stringArg": "some-arg", "inputData": "s3://sagemaker-us-west-2-012345678901/abalone/abalone-dataset.csv" }, "status": "Stopping" }
Anda harus menambahkan logika ke konsumen SQS pesan Amazon Anda untuk mengambil tindakan yang diperlukan (misalnya, pembersihan sumber daya) setelah menerima pesan. Kemudian tambahkan panggilan ke SendPipelineExecutionStepSuccess
atauSendPipelineExecutionStepFailure
.
Hanya ketika SageMaker Pipelines menerima salah satu panggilan ini barulah ia menghentikan proses pipeline.
Langkah Lambda
Anda menggunakan langkah Lambda untuk menjalankan fungsi. AWS Lambda Anda dapat menjalankan fungsi Lambda yang ada, atau SageMaker dapat membuat dan menjalankan fungsi Lambda baru. Untuk buku catatan yang menunjukkan cara menggunakan langkah Lambda dalam SageMaker pipeline, lihat sagemaker-pipelines-lambda-step .ipynb.
penting
Langkah-langkah Lambda diperkenalkan di Amazon SageMaker Python v2.51.0 dan Amazon Studio Classic SDK v3.9.1. SageMaker Anda harus memperbarui Studio Classic sebelum menggunakan langkah Lambda atau pipeline DAG tidak ditampilkan. Untuk memperbarui Studio Classic, lihatMatikan dan Perbarui SageMaker Studio Classic.
SageMaker menyediakan kelas SageMaker.lambda_helper.Lambda untuk membuat, memperbarui, memanggil, dan menghapus fungsi LambdaLambda
memiliki tanda tangan berikut.
Lambda( function_arn, # Only required argument to invoke an existing Lambda function # The following arguments are required to create a Lambda function: function_name, execution_role_arn, zipped_code_dir, # Specify either zipped_code_dir and s3_bucket, OR script s3_bucket, # S3 bucket where zipped_code_dir is uploaded script, # Path of Lambda function script handler, # Lambda handler specified as "lambda_script.lambda_handler" timeout, # Maximum time the Lambda function can run before the lambda step fails ... )
Sagemaker.workflow.lambda_step. LambdaSteplambda_func
argumen tipeLambda
. Untuk menjalankan fungsi Lambda yang ada, satu-satunya persyaratan adalah menyediakan Amazon Resource Name ARN () dari fungsi tersebut. function_arn
Jika Anda tidak memberikan nilai untukfunction_arn
, Anda harus menentukan handler
dan salah satu dari berikut ini:
-
zipped_code_dir
— Jalur fungsi Lambda yang di-zips3_bucket
- Bucket Amazon S3 tempat akanzipped_code_dir
diunggah -
script
— Jalur file skrip fungsi Lambda
Contoh berikut menunjukkan cara membuat definisi Lambda
langkah yang memanggil fungsi Lambda yang ada.
from sagemaker.workflow.lambda_step import LambdaStep from sagemaker.lambda_helper import Lambda step_lambda = LambdaStep( name="ProcessingLambda", lambda_func=Lambda( function_arn="arn:aws:lambda:us-west-2:012345678910:function:split-dataset-lambda" ), inputs={ s3_bucket = s3_bucket, data_file = data_file }, outputs=[ "train_file", "test_file" ] )
Contoh berikut menunjukkan cara membuat definisi Lambda
langkah yang membuat dan memanggil fungsi Lambda menggunakan skrip fungsi Lambda.
from sagemaker.workflow.lambda_step import LambdaStep from sagemaker.lambda_helper import Lambda step_lambda = LambdaStep( name="ProcessingLambda", lambda_func=Lambda( function_name="split-dataset-lambda", execution_role_arn=execution_role_arn, script="lambda_script.py", handler="lambda_script.lambda_handler", ... ), inputs={ s3_bucket = s3_bucket, data_file = data_file }, outputs=[ "train_file", "test_file" ] )
Input dan output
Jika Lambda
fungsi Anda memiliki input atau output, ini juga harus didefinisikan dalam langkah AndaLambda
.
catatan
Parameter input dan output tidak boleh bersarang. Misalnya, jika Anda menggunakan kamus bersarang sebagai parameter keluaran Anda, maka kamus diperlakukan sebagai string tunggal (mis. {"output1": "{\"nested_output1\":\"my-output\"}"}
). Jika Anda memberikan nilai bersarang dan mencoba merujuknya nanti, kesalahan klien yang tidak dapat dicoba ulang akan dilemparkan.
Saat mendefinisikan Lambda
langkah, inputs
harus kamus pasangan kunci-nilai. Setiap nilai inputs
kamus harus berupa tipe primitif (string, integer, atau float). Objek bersarang tidak didukung. Jika dibiarkan tidak terdefinisi, inputs
nilai defaultnya. None
outputs
Nilai harus berupa daftar kunci. Kunci-kunci ini mengacu pada kamus yang didefinisikan dalam output Lambda
fungsi. Sepertiinputs
, kunci ini harus tipe primitif, dan objek bersarang tidak didukung.
Timeout dan menghentikan perilaku
Lambda
Kelas memiliki timeout
argumen yang menentukan waktu maksimum bahwa fungsi Lambda dapat berjalan. Nilai default adalah 120 detik dengan nilai maksimum 10 menit. Jika fungsi Lambda berjalan saat batas waktu terpenuhi, langkah Lambda gagal; Namun, fungsi Lambda terus berjalan.
Proses pipeline tidak dapat dihentikan saat langkah Lambda berjalan karena fungsi Lambda yang dipanggil oleh langkah Lambda tidak dapat dihentikan. Jika Anda menghentikan proses saat fungsi Lambda sedang berjalan, pipeline menunggu fungsi selesai atau sampai batas waktu tercapai. Ini tergantung pada mana yang terjadi lebih dulu. Prosesnya kemudian berhenti. Jika fungsi Lambda selesai, status proses pipeline adalah. Stopped
Jika batas waktu tercapai, status proses pipeline adalahFailed
.
ClarifyCheck langkah
Anda dapat menggunakan ClarifyCheck
langkah untuk melakukan pemeriksaan penyimpangan dasar terhadap garis dasar sebelumnya untuk analisis bias dan penjelasan model. Anda kemudian dapat membuat dan mendaftarkan baseline Anda dengan model.register()
metode dan meneruskan output dari metode itu untuk Langkah model digunakan. step_args
Garis dasar untuk pemeriksaan drift ini dapat digunakan oleh Amazon SageMaker Model Monitor untuk titik akhir model Anda. Akibatnya, Anda tidak perlu melakukan saran dasar secara terpisah.
ClarifyCheck
Langkah ini juga dapat menarik garis dasar untuk pemeriksaan drift dari registri model. ClarifyCheck
Langkah ini menggunakan Container Prebuilt SageMaker Clarify. Wadah ini menyediakan berbagai kemampuan pemantauan model, termasuk saran kendala dan validasi kendala terhadap garis dasar yang diberikan. Untuk informasi selengkapnya, lihat Memulai dengan SageMaker Clarify Container.
Mengkonfigurasi langkahnya ClarifyCheck
Anda dapat mengonfigurasi ClarifyCheck
langkah untuk melakukan hanya satu dari jenis pemeriksaan berikut setiap kali digunakan dalam pipeline.
-
Pemeriksaan bias data
-
Pemeriksaan bias model
-
Pemeriksaan penjelasan model
Untuk melakukan ini, atur clarify_check_config
parameter dengan salah satu nilai jenis cek berikut:
-
DataBiasCheckConfig
-
ModelBiasCheckConfig
-
ModelExplainabilityCheckConfig
ClarifyCheck
Langkah ini meluncurkan pekerjaan pemrosesan yang menjalankan kontainer bawaan SageMaker Clarify dan memerlukan konfigurasi khusus untuk pemeriksaan dan pekerjaan pemrosesan. ClarifyCheckConfig
dan CheckJobConfig
merupakan fungsi pembantu untuk konfigurasi ini. Fungsi pembantu ini selaras dengan bagaimana pekerjaan pemrosesan SageMaker Clarify menghitung untuk memeriksa bias model, bias data, atau penjelasan model. Untuk informasi selengkapnya, lihat Jalankan Pekerjaan Pemrosesan SageMaker Klarifikasi untuk Analisis Bias dan Penjelasan.
Mengontrol perilaku langkah untuk pemeriksaan drift
ClarifyCheck
Langkah ini membutuhkan dua flag boolean berikut untuk mengontrol perilakunya:
-
skip_check
: Parameter ini menunjukkan apakah pemeriksaan drift terhadap baseline sebelumnya dilewati atau tidak. Jika disetel keFalse
, baseline sebelumnya dari jenis pemeriksaan yang dikonfigurasi harus tersedia. -
register_new_baseline
: Parameter ini menunjukkan apakah baseline yang baru dihitung dapat diakses melalui properti langkah.BaselineUsedForDriftCheckConstraints
Jika disetel keFalse
, baseline sebelumnya dari jenis pemeriksaan yang dikonfigurasi juga harus tersedia. Ini dapat diakses melaluiBaselineUsedForDriftCheckConstraints
properti.
Untuk informasi selengkapnya, lihat Perhitungan dasar, deteksi drift, dan siklus hidup dengan serta ClarifyCheck langkah-langkah QualityCheck di Amazon Model Building Pipelines SageMaker .
Bekerja dengan baseline
Anda dapat secara opsional menentukan model_package_group_name
untuk menemukan baseline yang ada. Kemudian, ClarifyCheck
langkah tersebut DriftCheckBaselines
menarik paket model terbaru yang disetujui dalam grup paket model.
Atau, Anda dapat memberikan garis dasar sebelumnya melalui parameter. supplied_baseline_constraints
Jika Anda menentukan kedua model_package_group_name
dansupplied_baseline_constraints
, ClarifyCheck
langkah menggunakan garis dasar yang ditentukan oleh parameter. supplied_baseline_constraints
Untuk informasi selengkapnya tentang penggunaan persyaratan ClarifyCheck
langkah, lihat sagemaker.workflow.steps. ClarifyCheckStepClarifyCheck
step di SageMaker Pipelines, lihat sagemaker-pipeline-model-monitor-clarify-steps.ipynb
contoh Buat ClarifyCheck
langkah untuk pemeriksaan bias data
from sagemaker.workflow.check_job_config import CheckJobConfig from sagemaker.workflow.clarify_check_step import DataBiasCheckConfig, ClarifyCheckStep from sagemaker.workflow.execution_variables import ExecutionVariables check_job_config = CheckJobConfig( role=role, instance_count=1, instance_type="
ml.c5.xlarge
", volume_size_in_gb=120
, sagemaker_session=sagemaker_session, ) data_bias_data_config = DataConfig( s3_data_input_path=step_process.properties.ProcessingOutputConfig.Outputs["train"].S3Output.S3Uri, s3_output_path=Join(on='/', values=['s3:/', your_bucket, base_job_prefix, ExecutionVariables.PIPELINE_EXECUTION_ID, 'databiascheckstep
']), label=0, dataset_type="text/csv
", s3_analysis_config_output_path=data_bias_analysis_cfg_output_path, ) data_bias_config = BiasConfig( label_values_or_threshold=[15.0
], facet_name=[8
], facet_values_or_threshold=[[0.5
]] ) data_bias_check_config = DataBiasCheckConfig( data_config=data_bias_data_config, data_bias_config=data_bias_config, )h data_bias_check_step = ClarifyCheckStep( name="DataBiasCheckStep
", clarify_check_config=data_bias_check_config, check_job_config=check_job_config, skip_check=False, register_new_baseline=False supplied_baseline_constraints="s3://sagemaker-us-west-2-111122223333/baseline/analysis.json
", model_package_group_name="MyModelPackageGroup
" )
QualityCheck langkah
Gunakan QualityCheck
langkah untuk melakukan saran dasar dan pemeriksaan drift terhadap baseline sebelumnya untuk kualitas data atau kualitas model dalam pipeline. Anda kemudian dapat membuat dan mendaftarkan baseline Anda dengan model.register()
metode dan meneruskan output dari metode itu untuk Langkah model digunakanstep_args
.]
Model Monitor dapat menggunakan garis dasar ini untuk pemeriksaan drift untuk titik akhir model Anda sehingga Anda tidak perlu melakukan saran dasar secara terpisah. QualityCheck
Langkah ini juga dapat menarik garis dasar untuk pemeriksaan drift dari registri model. QualityCheck
Langkah ini memanfaatkan wadah prebuilt Amazon SageMaker Model Monitor. Wadah ini memiliki berbagai kemampuan pemantauan model termasuk saran kendala, pembuatan statistik, dan validasi kendala terhadap baseline. Untuk informasi selengkapnya, lihat Amazon SageMaker Model Monitor wadah bawaan.
Mengkonfigurasi langkahnya QualityCheck
Anda dapat mengonfigurasi QualityCheck
langkah untuk menjalankan hanya satu dari jenis pemeriksaan berikut setiap kali digunakan dalam pipeline.
-
Pemeriksaan kualitas data
-
Pemeriksaan kualitas model
Anda melakukan ini dengan mengatur quality_check_config
parameter dengan salah satu nilai jenis cek berikut:
-
DataQualityCheckConfig
-
ModelQualityCheckConfig
QualityCheck
Langkah ini meluncurkan pekerjaan pemrosesan yang menjalankan wadah bawaan Model Monitor dan memerlukan konfigurasi khusus untuk pemeriksaan dan pekerjaan pemrosesan. Fungsi QualityCheckConfig
dan CheckJobConfig
pembantu untuk konfigurasi ini. Fungsi pembantu ini selaras dengan bagaimana Model Monitor membuat garis dasar untuk kualitas model atau pemantauan kualitas data. Untuk informasi selengkapnya tentang saran dasar Model Monitor, lihat Buat Baseline dan. Buat baseline kualitas model
Mengontrol perilaku langkah untuk pemeriksaan drift
QualityCheck
Langkah ini membutuhkan dua flag Boolean berikut untuk mengontrol perilakunya:
-
skip_check
: Parameter ini menunjukkan apakah pemeriksaan drift terhadap baseline sebelumnya dilewati atau tidak. Jika disetel keFalse
, baseline sebelumnya dari jenis pemeriksaan yang dikonfigurasi harus tersedia. -
register_new_baseline
: Parameter ini menunjukkan apakah baseline yang baru dihitung dapat diakses melalui propertiBaselineUsedForDriftCheckConstraints
langkah dan.BaselineUsedForDriftCheckStatistics
Jika disetel keFalse
, baseline sebelumnya dari jenis pemeriksaan yang dikonfigurasi juga harus tersedia. Ini dapat diakses melaluiBaselineUsedForDriftCheckConstraints
danBaselineUsedForDriftCheckStatistics
properti.
Untuk informasi selengkapnya, lihat Perhitungan dasar, deteksi drift, dan siklus hidup dengan serta ClarifyCheck langkah-langkah QualityCheck di Amazon Model Building Pipelines SageMaker .
Bekerja dengan baseline
Anda dapat menentukan garis dasar sebelumnya secara langsung melalui parameter supplied_baseline_statistics
dansupplied_baseline_constraints
. Anda juga dapat menentukan model_package_group_name
dan QualityCheck
langkah menarik paket model terbaru yang disetujui dalam grup paket model. DriftCheckBaselines
Saat Anda menentukan yang berikut ini, QualityCheck
langkah menggunakan garis dasar yang ditentukan oleh supplied_baseline_constraints
dan supplied_baseline_statistics
pada jenis pemeriksaan langkah. QualityCheck
-
model_package_group_name
-
supplied_baseline_constraints
-
supplied_baseline_statistics
Untuk informasi selengkapnya tentang penggunaan persyaratan QualityCheck
langkah, lihat sagemaker.workflow.steps. QualityCheckStepQualityCheck
step di SageMaker Pipelines, lihat sagemaker-pipeline-model-monitor-clarify-steps.ipynb
contoh Buat QualityCheck
langkah untuk pemeriksaan kualitas data
from sagemaker.workflow.check_job_config import CheckJobConfig from sagemaker.workflow.quality_check_step import DataQualityCheckConfig, QualityCheckStep from sagemaker.workflow.execution_variables import ExecutionVariables check_job_config = CheckJobConfig( role=role, instance_count=1, instance_type="
ml.c5.xlarge
", volume_size_in_gb=120
, sagemaker_session=sagemaker_session, ) data_quality_check_config = DataQualityCheckConfig( baseline_dataset=step_process.properties.ProcessingOutputConfig.Outputs["train
"].S3Output.S3Uri, dataset_format=DatasetFormat.csv(header=False, output_columns_position="START"), output_s3_uri=Join(on='/', values=['s3:/', your_bucket, base_job_prefix, ExecutionVariables.PIPELINE_EXECUTION_ID, 'dataqualitycheckstep']) ) data_quality_check_step = QualityCheckStep( name="DataQualityCheckStep", skip_check=False, register_new_baseline=False, quality_check_config=data_quality_check_config, check_job_config=check_job_config, supplied_baseline_statistics="s3://sagemaker-us-west-2-555555555555/baseline/statistics.json
", supplied_baseline_constraints="s3://sagemaker-us-west-2-555555555555/baseline/constraints.json
", model_package_group_name="MyModelPackageGroup
" )
EMRlangkah
Gunakan EMRlangkah Amazon SageMaker Model Building Pipelines untuk:
-
Memproses EMRlangkah-langkah Amazon pada EMR klaster Amazon yang sedang berjalan.
-
Mintalah pipeline membuat dan mengelola EMR klaster Amazon untuk Anda.
Untuk informasi selengkapnya tentang AmazonEMR, lihat Memulai Amazon EMR.
EMRLangkah ini mengharuskan EMRStepConfig
menyertakan lokasi JAR file yang digunakan oleh EMR cluster Amazon dan argumen apa pun yang akan diteruskan. Anda juga memberikan ID EMR cluster Amazon jika Anda ingin menjalankan langkah pada EMR cluster yang sedang berjalan. Anda juga dapat meneruskan konfigurasi cluster untuk menjalankan EMR langkah pada cluster yang dibuat, dikelola, dan diakhiri untuk Anda. Bagian berikut mencakup contoh dan tautan ke buku catatan sampel yang menunjukkan kedua metode.
catatan
-
EMRlangkah-langkah mengharuskan peran yang diteruskan ke pipeline Anda memiliki izin tambahan. Lampirkan kebijakan AWS terkelola:
AmazonSageMakerPipelinesIntegrations
ke peran pipeline Anda, atau pastikan peran tersebut menyertakan izin dalam kebijakan tersebut. -
EMRstep tidak didukung pada tanpa EMR server. Itu juga tidak didukung di Amazon EMR padaEKS.
-
Jika Anda memproses EMR langkah pada klaster yang sedang berjalan, Anda hanya dapat menggunakan klaster yang berada di salah satu status berikut:
-
STARTING
-
BOOTSTRAPPING
-
RUNNING
-
WAITING
-
-
Jika Anda memproses EMR langkah-langkah pada klaster yang sedang berjalan, Anda dapat memiliki paling banyak 256 EMR langkah dalam
PENDING
status di EMR klaster. EMRlangkah-langkah yang diajukan di luar batas ini mengakibatkan kegagalan eksekusi pipeline. Anda dapat mempertimbangkan untuk menggunakanCoba lagi Kebijakan untuk Langkah-langkah Pipa. Anda dapat menentukan ID cluster atau konfigurasi cluster, tetapi tidak keduanya.
EMRLangkah ini bergantung pada Amazon EventBridge untuk memantau perubahan dalam EMR langkah atau status cluster. Jika Anda memproses EMR pekerjaan Amazon di klaster yang sedang berjalan, EMR langkah tersebut menggunakan
SageMakerPipelineExecutionEMRStepStatusUpdateRule
aturan untuk memantau status EMR langkah. Jika Anda memproses pekerjaan di klaster yang dibuat EMR langkah tersebut, langkah tersebut menggunakanSageMakerPipelineExecutionEMRClusterStatusRule
aturan untuk memantau perubahan status klaster. Jika Anda melihat salah satu dari EventBridge aturan ini di AWS akun Anda, jangan menghapusnya atau EMR langkah Anda mungkin tidak selesai.
Luncurkan pekerjaan baru di EMR klaster Amazon yang sedang berjalan
Untuk meluncurkan pekerjaan baru di EMR klaster Amazon yang sedang berjalan, teruskan ID cluster sebagai string ke cluster_id
argumenEMRStep
. Contoh berikut menunjukkan prosedur ini.
from sagemaker.workflow.emr_step import EMRStep, EMRStepConfig emr_config = EMRStepConfig( jar="
jar-location
", # required, path to jar file used args=["--verbose", "--force"], # optional list of arguments to pass to the jar main_class="com.my.Main1", # optional main class, this can be omitted if jar above has a manifest properties=[ # optional list of Java properties that are set when the step runs { "key": "mapred.tasktracker.map.tasks.maximum", "value": "2" }, { "key": "mapreduce.map.sort.spill.percent", "value": "0.90" }, { "key": "mapreduce.tasktracker.reduce.tasks.maximum", "value": "5" } ] ) step_emr = EMRStep ( name="EMRSampleStep", # required cluster_id="j-1ABCDEFG2HIJK", # include cluster_id to use a running cluster step_config=emr_config, # required display_name="My EMR Step", description="Pipeline step to execute EMR job" )
Untuk contoh buku catatan yang memandu Anda melalui contoh lengkap, lihat SageMaker Pipelines EMR Step With Running EMR Cluster
Luncurkan pekerjaan baru di EMR cluster Amazon baru
Untuk meluncurkan pekerjaan baru di klaster baru yang EMRStep
membuat untuk Anda, berikan konfigurasi klaster Anda sebagai kamus. Kamus harus memiliki struktur yang sama dengan RunJobFlowpermintaan. Namun, jangan sertakan bidang berikut dalam konfigurasi klaster Anda:
[
Name
][
Steps
][
AutoTerminationPolicy
][
Instances
][KeepJobFlowAliveWhenNoSteps
][
Instances
][TerminationProtected
]
Semua RunJobFlow
argumen lain tersedia untuk digunakan dalam konfigurasi cluster Anda. Untuk detail tentang sintaks permintaan, lihat RunJobFlow.
Contoh berikut meneruskan konfigurasi cluster ke definisi EMR langkah. Ini meminta langkah untuk meluncurkan pekerjaan baru di EMR cluster baru. Konfigurasi EMR cluster dalam contoh ini mencakup spesifikasi untuk node EMR cluster primer dan inti. Untuk informasi selengkapnya tentang jenis EMR node Amazon, lihat Memahami tipe node: node primer, inti, dan tugas.
from sagemaker.workflow.emr_step import EMRStep, EMRStepConfig emr_step_config = EMRStepConfig( jar="
jar-location
", # required, path to jar file used args=["--verbose", "--force"], # optional list of arguments to pass to the jar main_class="com.my.Main1", # optional main class, this can be omitted if jar above has a manifest properties=[ # optional list of Java properties that are set when the step runs { "key": "mapred.tasktracker.map.tasks.maximum", "value": "2" }, { "key": "mapreduce.map.sort.spill.percent", "value": "0.90" }, { "key": "mapreduce.tasktracker.reduce.tasks.maximum", "value": "5" } ] ) # include your cluster configuration as a dictionary emr_cluster_config = { "Applications": [ { "Name": "Spark", } ], "Instances":{ "InstanceGroups":[ { "InstanceRole": "MASTER", "InstanceCount": 1, "InstanceType": "m5.2xlarge" }, { "InstanceRole": "CORE", "InstanceCount": 2, "InstanceType": "m5.2xlarge" } ] }, "BootstrapActions":[], "ReleaseLabel": "emr-6.6.0", "JobFlowRole": "job-flow-role
", "ServiceRole": "service-role
" } emr_step = EMRStep( name="emr-step", cluster_id=None, display_name="emr_step", description="MyEMRStepDescription", step_config=emr_step_config, cluster_config=emr_cluster_config )
Untuk contoh buku catatan yang memandu Anda melalui contoh lengkap, lihat EMRLangkah SageMaker Pipelines Dengan Manajemen Siklus Hidup Cluster
Langkah pekerjaan notebook
Gunakan a NotebookJobStep
untuk menjalankan Job SageMaker Notebook Anda secara non-interaktif sebagai langkah pipeline. Untuk informasi selengkapnya tentang Pekerjaan SageMaker Notebook, lihatSageMaker Lowongan Notebook.
A NotebookJobStep
membutuhkan minimal notebook input, image URI dan nama kernel. Untuk informasi selengkapnya tentang persyaratan langkah Job Notebook dan parameter lain yang dapat Anda atur untuk menyesuaikan langkah, lihat sagemaker.workflow.steps. NotebookJobStep
Contoh berikut menggunakan argumen minimum untuk mendefinisikan aNotebookJobStep
.
from sagemaker.workflow.notebook_job_step import NotebookJobStep notebook_job_step = NotebookJobStep( input_notebook=
input_notebook
, image_uri=image_uri
, kernel_name=kernel_name
)
Langkah NotebookJobStep
pipeline Anda diperlakukan sebagai pekerjaan SageMaker notebook. Akibatnya, lacak status eksekusi di dasbor pekerjaan notebook UI Studio Classic dengan menyertakan tag tertentu dengan tags
argumen. Untuk detail selengkapnya tentang tag yang akan disertakan, lihatMelihat pekerjaan notebook Anda di dasbor Studio UI.
Juga, jika Anda menjadwalkan pekerjaan notebook Anda menggunakan SageMaker PythonSDK, Anda hanya dapat menentukan gambar tertentu untuk menjalankan pekerjaan notebook Anda. Untuk informasi selengkapnya, lihat Kendala gambar untuk pekerjaan notebook Python SageMaker SDK.
Langkah gagal
Gunakan a FailStep
untuk menghentikan eksekusi Amazon SageMaker Model Building Pipelines bila kondisi atau status yang diinginkan tidak tercapai. Ini juga menandai bahwa eksekusi pipeline gagal. Ini FailStep
juga memungkinkan Anda memasukkan pesan kesalahan khusus, yang menunjukkan penyebab kegagalan eksekusi pipeline.
catatan
Ketika sebuah FailStep
dan langkah-langkah pipeline lainnya dijalankan pada saat yang sama, pipeline tidak berakhir sampai semua langkah bersamaan selesai.
Batasan untuk menggunakan FailStep
-
Anda tidak dapat menambahkan
FailStep
keDependsOn
daftar langkah lain. Untuk informasi selengkapnya, lihat Ketergantungan khusus antar langkah. -
Langkah-langkah lain tidak dapat mereferensikan
FailStep
. Itu selalu merupakan langkah terakhir dalam eksekusi pipeline. -
Anda tidak dapat mencoba lagi eksekusi pipeline yang diakhiri dengan a
FailStep
.
Anda dapat membuat FailStep
ErrorMessage
dalam bentuk string teks statis. Atau, Anda juga dapat menggunakan Parameter Pipeline operasi Gabung
Contoh cuplikan kode berikut menggunakan dengan ErrorMessage
dikonfigurasi FailStep
dengan Parameter Pipeline dan operasi. Join
from sagemaker.workflow.fail_step import FailStep from sagemaker.workflow.functions import Join from sagemaker.workflow.parameters import ParameterInteger mse_threshold_param = ParameterInteger(name="MseThreshold", default_value=5) step_fail = FailStep( name="
AbaloneMSEFail
", error_message=Join( on=" ", values=["Execution failed due to MSE >
", mse_threshold_param] ), )
Properti langkah
Gunakan properties
atribut untuk menambahkan dependensi data di antara langkah-langkah dalam pipeline. SageMaker Pipelines menggunakan dependensi data ini untuk membangun DAG dari definisi pipeline. Properti ini dapat direferensikan sebagai nilai placeholder dan diselesaikan saat runtime.
properties
Atribut langkah SageMaker Pipelines cocok dengan objek yang dikembalikan oleh Describe
panggilan untuk jenis SageMaker pekerjaan yang sesuai. Untuk setiap jenis pekerjaan, Describe
panggilan mengembalikan objek respons berikut:
-
ProcessingStep
– DescribeProcessingJob -
TrainingStep
– DescribeTrainingJob -
TransformStep
– DescribeTransformJob
Untuk memeriksa properti mana yang dapat direferensikan untuk setiap tipe langkah selama pembuatan dependensi data, lihat Ketergantungan Data - Referensi Properti
Paralelisme langkah
Ketika sebuah langkah tidak bergantung pada langkah lain, itu berjalan segera setelah eksekusi pipeline. Namun, mengeksekusi terlalu banyak langkah pipeline secara paralel dapat dengan cepat menghabiskan sumber daya yang tersedia. Kontrol jumlah langkah bersamaan untuk eksekusi pipeline denganParallelismConfiguration
.
Contoh berikut digunakan ParallelismConfiguration
untuk mengatur batas langkah bersamaan ke lima.
pipeline.create( parallelism_config=ParallelismConfiguration(5), )
Ketergantungan data antar langkah
Anda menentukan struktur Anda DAG dengan menentukan hubungan data antar langkah. Untuk membuat dependensi data antar langkah, berikan properti dari satu langkah sebagai input ke langkah lain dalam pipeline. Langkah menerima input tidak dimulai sampai setelah langkah menyediakan input selesai berjalan.
Ketergantungan data menggunakan JsonPath notasi dalam format berikut. Format ini melintasi file JSON properti. Ini berarti Anda dapat menambahkan sebanyak <property>
instance yang diperlukan untuk mencapai properti bersarang yang diinginkan dalam file. Untuk informasi lebih lanjut tentang JsonPath notasi, lihat JsonPath repo
<step_name>
.properties.<property>
.<property>
Berikut ini menunjukkan cara menentukan bucket Amazon S3 menggunakan ProcessingOutputConfig
properti langkah pemrosesan.
step_process.properties.ProcessingOutputConfig.Outputs["train_data"].S3Output.S3Uri
Untuk membuat ketergantungan data, teruskan bucket ke langkah pelatihan sebagai berikut.
from sagemaker.workflow.pipeline_context import PipelineSession sklearn_train = SKLearn(..., sagemaker_session=PipelineSession()) step_train = TrainingStep( name="CensusTrain", step_args=sklearn_train.fit(inputs=TrainingInput( s3_data=step_process.properties.ProcessingOutputConfig.Outputs[ "train_data"].S3Output.S3Uri )) )
Untuk memeriksa properti mana yang dapat direferensikan untuk setiap tipe langkah selama pembuatan dependensi data, lihat Ketergantungan Data - Referensi Properti
Ketergantungan khusus antar langkah
Saat Anda menentukan ketergantungan data, SageMaker Pipelines menyediakan koneksi data di antara langkah-langkah tersebut. Atau, satu langkah dapat mengakses data dari langkah sebelumnya tanpa langsung menggunakan SageMaker Pipelines. Dalam hal ini, Anda dapat membuat dependensi khusus yang memberi tahu SageMaker Pipelines untuk tidak memulai langkah sampai setelah langkah lain selesai berjalan. Anda membuat dependensi kustom dengan menentukan atribut step. DependsOn
Sebagai contoh, berikut ini mendefinisikan langkah C
yang dimulai hanya setelah kedua langkah A
dan langkah B
selesai berjalan.
{ 'Steps': [ {'Name':'A', ...}, {'Name':'B', ...}, {'Name':'C', 'DependsOn': ['A', 'B']} ] }
SageMaker Pipelines melempar pengecualian validasi jika ketergantungan akan membuat ketergantungan siklik.
Contoh berikut membuat langkah pelatihan yang dimulai setelah langkah pemrosesan selesai berjalan.
processing_step = ProcessingStep(...) training_step = TrainingStep(...) training_step.add_depends_on([processing_step])
Contoh berikut membuat langkah pelatihan yang tidak dimulai sampai dua langkah pemrosesan yang berbeda selesai berjalan.
processing_step_1 = ProcessingStep(...) processing_step_2 = ProcessingStep(...) training_step = TrainingStep(...) training_step.add_depends_on([processing_step_1, processing_step_2])
Berikut ini menyediakan cara alternatif untuk membuat ketergantungan kustom.
training_step.add_depends_on([processing_step_1]) training_step.add_depends_on([processing_step_2])
Contoh berikut membuat langkah pelatihan yang menerima masukan dari satu langkah pemrosesan dan menunggu langkah pemrosesan yang berbeda untuk selesai berjalan.
processing_step_1 = ProcessingStep(...) processing_step_2 = ProcessingStep(...) training_step = TrainingStep( ..., inputs=TrainingInput( s3_data=processing_step_1.properties.ProcessingOutputConfig.Outputs[ "train_data" ].S3Output.S3Uri ) training_step.add_depends_on([processing_step_2])
Contoh berikut menunjukkan bagaimana untuk mengambil daftar string dari dependensi kustom langkah.
custom_dependencies = training_step.depends_on
Gunakan gambar khusus dalam satu langkah
Anda dapat menggunakan salah satu gambar SageMaker Deep Learning Container
Anda juga dapat menggunakan wadah Anda sendiri dengan langkah-langkah pipa. Karena Anda tidak dapat membuat gambar dari dalam Studio Classic, Anda harus membuat gambar menggunakan metode lain sebelum menggunakannya dengan SageMaker Pipelines.
Untuk menggunakan penampung Anda sendiri saat membuat langkah-langkah untuk pipeline Anda, sertakan gambar URI dalam definisi estimator. Untuk informasi selengkapnya tentang menggunakan kontainer Anda sendiri SageMaker, lihat Menggunakan Kontainer Docker dengan SageMaker.