Jalankan pipa - Amazon SageMaker

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

Jalankan pipa

Setelah Anda membuat definisi pipeline menggunakan SageMaker Python SDK, Anda dapat mengirimkannya SageMaker untuk memulai eksekusi. Tutorial berikut menunjukkan cara mengirimkan pipeline, memulai eksekusi, memeriksa hasil eksekusi itu, dan menghapus pipeline Anda.

Prasyarat

Tutorial ini membutuhkan hal berikut:

  • Contoh SageMaker notebook. 

  • Definisi SageMaker pipa pipa. Tutorial ini mengasumsikan Anda menggunakan definisi pipeline yang dibuat dengan menyelesaikan Membuat Alur tutorial.

Langkah 1: Memulai Alur

Pertama, Anda harus memulai pipa.

Untuk memulai alur
  1. Periksa definisi pipa JSON untuk memastikan bahwa itu terbentuk dengan baik.

    import json json.loads(pipeline.definition())
  2. Kirimkan definisi SageMaker pipeline ke layanan Pipelines untuk membuat pipeline jika tidak ada, atau perbarui pipeline jika ada. Peran yang diteruskan digunakan oleh SageMaker Pipelines untuk menciptakan semua pekerjaan yang ditentukan dalam langkah-langkah.

    pipeline.upsert(role_arn=role)
  3. Mulai eksekusi pipeline.

    execution = pipeline.start()

Langkah 2: Periksa Eksekusi Pipeline

Selanjutnya, Anda perlu memeriksa eksekusi pipa.

Untuk memeriksa eksekusi pipa
  1. Jelaskan status eksekusi pipeline untuk memastikan bahwa itu telah dibuat dan dimulai dengan sukses.

    execution.describe()
  2. Tunggu eksekusi selesai.

    execution.wait()
  3. Buat daftar langkah-langkah eksekusi dan statusnya.

    execution.list_steps()

    Outputnya akan terlihat seperti berikut:

    [{'StepName': 'AbaloneTransform', 'StartTime': datetime.datetime(2020, 11, 21, 2, 41, 27, 870000, tzinfo=tzlocal()), 'EndTime': datetime.datetime(2020, 11, 21, 2, 45, 50, 492000, tzinfo=tzlocal()), 'StepStatus': 'Succeeded', 'CacheHitResult': {'SourcePipelineExecutionArn': ''}, 'Metadata': {'TransformJob': {'Arn': 'arn:aws:sagemaker:us-east-2:111122223333:transform-job/pipelines-cfvy1tjuxdq8-abalonetransform-ptyjoef3jy'}}}, {'StepName': 'AbaloneRegisterModel', 'StartTime': datetime.datetime(2020, 11, 21, 2, 41, 26, 929000, tzinfo=tzlocal()), 'EndTime': datetime.datetime(2020, 11, 21, 2, 41, 28, 15000, tzinfo=tzlocal()), 'StepStatus': 'Succeeded', 'CacheHitResult': {'SourcePipelineExecutionArn': ''}, 'Metadata': {'RegisterModel': {'Arn': 'arn:aws:sagemaker:us-east-2:111122223333:model-package/abalonemodelpackagegroupname/1'}}}, {'StepName': 'AbaloneCreateModel', 'StartTime': datetime.datetime(2020, 11, 21, 2, 41, 26, 895000, tzinfo=tzlocal()), 'EndTime': datetime.datetime(2020, 11, 21, 2, 41, 27, 708000, tzinfo=tzlocal()), 'StepStatus': 'Succeeded', 'CacheHitResult': {'SourcePipelineExecutionArn': ''}, 'Metadata': {'Model': {'Arn': 'arn:aws:sagemaker:us-east-2:111122223333:model/pipelines-cfvy1tjuxdq8-abalonecreatemodel-jl94rai0ra'}}}, {'StepName': 'AbaloneMSECond', 'StartTime': datetime.datetime(2020, 11, 21, 2, 41, 25, 558000, tzinfo=tzlocal()), 'EndTime': datetime.datetime(2020, 11, 21, 2, 41, 26, 329000, tzinfo=tzlocal()), 'StepStatus': 'Succeeded', 'CacheHitResult': {'SourcePipelineExecutionArn': ''}, 'Metadata': {'Condition': {'Outcome': 'True'}}}, {'StepName': 'AbaloneEval', 'StartTime': datetime.datetime(2020, 11, 21, 2, 37, 34, 767000, tzinfo=tzlocal()), 'EndTime': datetime.datetime(2020, 11, 21, 2, 41, 18, 80000, tzinfo=tzlocal()), 'StepStatus': 'Succeeded', 'CacheHitResult': {'SourcePipelineExecutionArn': ''}, 'Metadata': {'ProcessingJob': {'Arn': 'arn:aws:sagemaker:us-east-2:111122223333:processing-job/pipelines-cfvy1tjuxdq8-abaloneeval-zfraozhmny'}}}, {'StepName': 'AbaloneTrain', 'StartTime': datetime.datetime(2020, 11, 21, 2, 34, 55, 867000, tzinfo=tzlocal()), 'EndTime': datetime.datetime(2020, 11, 21, 2, 37, 34, 34000, tzinfo=tzlocal()), 'StepStatus': 'Succeeded', 'CacheHitResult': {'SourcePipelineExecutionArn': ''}, 'Metadata': {'TrainingJob': {'Arn': 'arn:aws:sagemaker:us-east-2:111122223333:training-job/pipelines-cfvy1tjuxdq8-abalonetrain-tavd6f3wdf'}}}, {'StepName': 'AbaloneProcess', 'StartTime': datetime.datetime(2020, 11, 21, 2, 30, 27, 160000, tzinfo=tzlocal()), 'EndTime': datetime.datetime(2020, 11, 21, 2, 34, 48, 390000, tzinfo=tzlocal()), 'StepStatus': 'Succeeded', 'CacheHitResult': {'SourcePipelineExecutionArn': ''}, 'Metadata': {'ProcessingJob': {'Arn': 'arn:aws:sagemaker:us-east-2:111122223333:processing-job/pipelines-cfvy1tjuxdq8-abaloneprocess-mgqyfdujcj'}}}]
  4. Setelah eksekusi pipeline Anda selesai, unduh evaluation.json file yang dihasilkan dari Amazon S3 untuk memeriksa laporan.

    evaluation_json = sagemaker.s3.S3Downloader.read_file("{}/evaluation.json".format( step_eval.arguments["ProcessingOutputConfig"]["Outputs"][0]["S3Output"]["S3Uri"] )) json.loads(evaluation_json)

Langkah 3: Ganti Parameter Default untuk Eksekusi Pipeline

Anda dapat menjalankan eksekusi tambahan dari pipeline dengan menentukan parameter pipeline yang berbeda untuk mengganti default.

Untuk mengganti parameter default
  1. Buat eksekusi pipeline. Ini memulai eksekusi pipeline lain dengan penggantian status persetujuan model disetel ke “Disetujui”. Ini berarti bahwa versi paket model yang dihasilkan oleh RegisterModel langkah secara otomatis siap untuk penyebaran melalui pipeline CI/CD, seperti dengan Proyek. SageMaker Untuk informasi selengkapnya, lihat Otomatiskan MLOP dengan Proyek SageMaker .

    execution = pipeline.start( parameters=dict( ModelApprovalStatus="Approved", ) )
  2. Tunggu eksekusi selesai.

    execution.wait()
  3. Buat daftar langkah-langkah eksekusi dan statusnya.

    execution.list_steps()
  4. Setelah eksekusi pipeline Anda selesai, unduh evaluation.json file yang dihasilkan dari Amazon S3 untuk memeriksa laporan.

    evaluation_json = sagemaker.s3.S3Downloader.read_file("{}/evaluation.json".format( step_eval.arguments["ProcessingOutputConfig"]["Outputs"][0]["S3Output"]["S3Uri"] )) json.loads(evaluation_json)

Langkah 4: Hentikan dan Hapus Eksekusi Pipeline

Setelah Anda selesai dengan alur, Anda dapat menghentikan eksekusi yang sedang berlangsung dan menghapus alur.

Untuk menghentikan dan menghapus eksekusi pipeline
  1. Hentikan eksekusi pipa.

    execution.stop()
  2. Hapus Alur.

    pipeline.delete()