Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Secara otomatis mendaftar SageMaker kan model AI dengan SageMaker Model Registry
Saat Anda mendaftarkan model MLFlow, SageMaker AI secara otomatis membuat Grup Paket Model yang sesuai dan versi Paket Model di SageMaker Model Registry. Ini memungkinkan Anda untuk:
Daftarkan model dari MLFlow SDK atau UI MLFlow.
Lampirkan spesifikasi inferensi untuk mengaktifkan penerapan langsung ke titik akhir SageMaker AI.
Log metrik evaluasi yang disertakan sebagai kartu model dalam Paket Model.
Kelola tahapan siklus hidup model (pementasan, produksi) dan status (tertunda, aktif) melalui alias MLFlow.
Kontrol transisi siklus hidup dan pendaftaran dengan kunci kondisi IAM dan kebijakan berbasis tag sumber daya.
catatan
Sinkronisasi Model Registry adalah fitur opt-in. Untuk mengaktifkannya, panggil UpdateMlflowApp API UpdateMlflowTrackingServer or dengan sinkronisasi Model Registry diaktifkan.
Log dan daftarkan model
Bagian ini mencakup cara menyiapkan model untuk pendaftaran, mendaftarkannya dengan SageMaker Model Registry, dan melihatnya di Studio.
Izin IAM yang diperlukan
Server pelacakan MLFlow atau peran layanan IAM Aplikasi MLFlow harus memiliki izin berikut untuk mendaftarkan model:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sagemaker:CreateModelPackageGroup", "sagemaker:DescribeModelPackageGroup", "sagemaker:CreateModelPackage", "sagemaker:UpdateModelPackage", "sagemaker:AddTags", "sagemaker:CreateAction", "sagemaker:AddAssociation" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject", "s3:ListBucket" ], "Resource": "*" } ] }
Untuk informasi selengkapnya tentang menyiapkan peran IAM untuk Aplikasi MLFlow, lihat. Menyiapkan izin IAM untuk Aplikasi MLFlow
Siapkan model untuk pendaftaran
Sebelum mendaftarkan model, Anda mencatatnya selama latihan. Anda dapat secara opsional melampirkan spesifikasi inferensi dan metrik evaluasi, yang diteruskan ke Paket Model SageMaker AI setelah pendaftaran.
Catat model
Gunakan MLFlow SDK untuk mencatat model selama menjalankan pelatihan:
import mlflow from sklearn.datasets import make_regression from sklearn.ensemble import RandomForestRegressor from mlflow.models import infer_signature mlflow.set_tracking_uri(arn) mlflow.set_experiment("my-experiment") params = {"n_estimators": 3, "random_state": 42} X, y = make_regression(n_features=4, n_informative=2, random_state=0, shuffle=False) with mlflow.start_run() as run: model = RandomForestRegressor(**params).fit(X, y) signature = infer_signature(X, model.predict(X)) mlflow.log_params(params) model_info = mlflow.sklearn.log_model( model, name="sklearn-model", signature=signature, input_example=X[:3] )
Catat spesifikasi inferensi (opsional)
Spesifikasi inferensi mendefinisikan image container dan tipe instance yang diperlukan untuk menerapkan model Anda. Ketika dilampirkan ke model yang dicatat sebelum pendaftaran, spesifikasi inferensi secara otomatis disertakan dalam Paket Model SageMaker AI. Ini memungkinkan penerapan langsung ke titik akhir SageMaker AI dari Model Registry tanpa konfigurasi tambahan.
Gunakan sagemaker_mlflow.log_inference_specification() untuk melampirkan spesifikasi inferensi:
import sagemaker_mlflow # Get the logged model's artifact location logged_model = mlflow.MlflowClient().get_logged_model(model_info.model_id) inference_spec = { "Containers": [{ "Image": "763104351884.dkr.ecr.us-west-2.amazonaws.com/pytorch-inference:2.0.0-cpu-py310", "ModelDataSource": { "S3DataSource": { "S3Uri": logged_model.artifact_location + "/", "S3DataType": "S3Prefix", "CompressionType": "None", } }, }], "SupportedRealtimeInferenceInstanceTypes": ["ml.m5.xlarge"], } sagemaker_mlflow.log_inference_specification( model_info.model_id, inference_specification=inference_spec )
catatan
Spesifikasi inferensi harus mengikuti skema yang sama dengan InferenceSpecification parameter CreateModelPackage API SageMaker AI. Untuk informasi selengkapnya, lihat InferenceSpecification di Refer SageMaker ensi API AI.
Setelah logging, spesifikasi inferensi disimpan sebagai sagemaker_inference_specification.json artefak di samping model Anda:
Metrik evaluasi log (opsional)
Metrik evaluasi memberikan ringkasan standar kinerja model Anda. Saat dicatat sebelum pendaftaran, hasil evaluasi disertakan dalam Paket Model SageMaker AI sebagai kartu model, membuat metrik terlihat di Registri Model SageMaker AI dan Studio. Untuk informasi selengkapnya tentang kartu model, lihat Skema kartu model.
Gunakan sagemaker_mlflow.evaluate() untuk mencatat metrik evaluasi:
import sagemaker_mlflow import pandas as pd eval_df = pd.DataFrame(X, columns=["f1", "f2", "f3"]) eval_df["target"] = y dataset = mlflow.data.from_pandas( eval_df, source="s3://my-bucket/eval.csv", name="eval_set", targets="target" ) sagemaker_mlflow.evaluate(model_info, data=dataset, model_type="regressor")
Setelah log, grup evaluasi disimpan sebagai artefak di samping model Anda:
Mendaftarkan model menggunakan SDK
Gunakan mlflow.register_model() untuk mendaftarkan model dengan SageMaker Model Registry. Ini secara otomatis membuat Grup Paket Model (jika tidak ada) dan versi Paket Model di SageMaker AI.
model_uri = f"runs:/{run.info.run_id}/sklearn-model" mv = mlflow.register_model(model_uri, "MyRegisteredModel") print(f"Name: {mv.name}") print(f"Version: {mv.version}")
Anda juga dapat menggunakan create_registered_model untuk membuat Grup Paket Model sebelum mendaftarkan versi:
from mlflow import MlflowClient client = MlflowClient() client.create_registered_model("MyRegisteredModel", tags={"team": "ml-platform"})
Setelah pendaftaran, versi model ditandai dengan Paket Model SageMaker AI ARN. Anda dapat mengambilnya sebagai berikut:
mv = client.get_model_version("MyRegisteredModel", mv.version) sm_arn = mv.tags["sagemaker.model_package_arn"] print(f"SageMaker Model Package ARN: {sm_arn}")
catatan
Jangan gunakan spasi dalam nama model. Sementara MLFlow mendukung nama model dengan spasi, Paket Model SageMaker AI tidak. Proses pendaftaran gagal jika Anda menggunakan spasi dalam nama model Anda.
Daftarkan model menggunakan UI MLFlow
Anda dapat mendaftarkan model dengan SageMaker Model Registry langsung di UI MLFlow. Di dalam menu Model, pilih Buat Model. Model yang dibuat dengan cara ini secara otomatis ditambahkan ke SageMaker Model Registry.
Setelah mencatat model selama pelacakan percobaan, navigasikan ke halaman run di UI MLFlow. Pilih panel Artifacts dan pilih Register model untuk mendaftarkan versi model di MLFlow dan SageMaker Model Registry.
Lihat model terdaftar di Studio
Dalam Studio, pilih Model di panel navigasi kiri untuk melihat model terdaftar Anda. Untuk informasi selengkapnya tentang cara memulai dengan Studio, lihat Luncurkan Amazon SageMaker Studio.
Halaman versi Paket Model di Studio menampilkan metrik pelatihan dan kumpulan data yang disinkronkan dari MLFlow:
Tab Kereta juga menunjukkan lokasi dataset pelatihan dan jalur artefak model:
Jika Anda mencatat spesifikasi inferensi, bagian Con tainer menunjukkan gambar kontainer, lokasi data model, dan jenis instance yang didukung. T ahap Deploy menunjukkan Dis etujui, menunjukkan model siap untuk penerapan:
Jika Anda mencatat metrik evaluasi, tab Evaluasi menampilkan metrik kinerja seperti skor, kesalahan absolut rata-rata, dan kesalahan kuadrat rata-rata akar:
Tab Evaluasi juga menunjukkan lokasi dataset evaluasi:
Tab Lineage menunjukkan hubungan antara eksperimen MLFlow, versi model, gambar wadah, dan Grup Paket Model:
Batasan
Jangan gunakan spasi dalam nama model. SageMaker Paket Model AI tidak mendukung spasi, dan pendaftaran gagal.
Jika peran kehilangan
s3:GetObjectizin pada jalur artefak, spesifikasi inferensi dan artefak evaluasi dilewati secara diam-diam. Paket Model masih dibuat tetapi tanpa data inferensi atau evaluasi.Jika peran hilang
sagemaker:CreateActionatausagemaker:AddAssociation, asosiasi garis keturunan antara model MLFlow dan Paket Model SageMaker AI dilewati secara diam-diam. Ini tidak mempengaruhi pendaftaran atau manajemen siklus hidup.Menyetel tahap siklus hidup dan status tidak mengaktifkan tombol Deploy di Studio. Untuk mengaktifkan penerapan satu klik dari UI, Anda harus secara terpisah mengatur status persetujuan Paket Model untuk
Approvedmenggunakan API SageMaker AI.Perubahan pada izin peran layanan IAM Aplikasi MLFlow dapat memakan waktu hingga 15 menit untuk berlaku.
Kelola tahapan siklus hidup model
Setelah mendaftarkan model, Anda dapat mengelola tahap siklus hidup dan statusnya di Registri Model SageMaker AI dengan menyetel alias versi model MLFlow. Saat Anda menetapkan alias menggunakan konvensi penamaan siklus hidup, siklus hidup Paket Model SageMaker AI yang sesuai diperbarui secara otomatis. Untuk informasi selengkapnya tentang tahapan siklus hidup model, lihat Model tahap di Model Registry.
Izin IAM untuk manajemen siklus hidup
Server pelacakan MLFlow atau peran layanan IAM Aplikasi MLFlow memerlukan sagemaker:UpdateModelPackage izin untuk mengelola tahapan siklus hidup. Tindakan ini sudah termasuk dalam izin pendaftaran dasar yang dijelaskan di atas.
Batasi transisi siklus hidup
Anda dapat menggunakan kunci kondisi IAM untuk mengontrol transisi siklus hidup mana yang diperbolehkan dilakukan peran:
sagemaker:ModelLifeCycle/stage— Tahap siklus hidup sedang diatur. Nilai:staging,production.sagemaker:ModelLifeCycle/stageStatus— Status siklus hidup sedang diatur. Nilai:pending,active.
Contoh: Menolak promosi produksi
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "sagemaker:UpdateModelPackage", "Resource": "*", "Condition": { "StringEquals": { "sagemaker:ModelLifeCycle/stage": "production" } } } ] }
Contoh: Izinkan hanya staging/pending transisi
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "sagemaker:UpdateModelPackage", "Resource": "*", "Condition": { "StringEquals": { "sagemaker:ModelLifeCycle/stage": "staging", "sagemaker:ModelLifeCycle/stageStatus": "pending" } } } ] }
Ketika transisi siklus hidup ditolak oleh kebijakan IAM, operasi alias MLFlow gagal dan mengembalikan kesalahan ke pemanggil.
Untuk informasi selengkapnya tentang siklus hidup model di SageMaker AI Model Registry, lihat Menyebarkan Model dari Registry.
Mengatur tahapan siklus hidup menggunakan SDK
Gunakan format alias berikut untuk mengatur tahap siklus hidup dan status:
sagemakerlifecycle-stage-status
Tahapan yang didukung:staging, production
Status yang didukung:pending, active
catatan
Nilai tahap dan status harus huruf kecil. Alias MLFlow hanya mendukung karakter huruf kecil, jadi nilai seperti Production atau Active tidak valid.
import mlflow mlflow.set_tracking_uri(arn) client = mlflow.MlflowClient() # Set lifecycle to staging/pending client.set_registered_model_alias("MyRegisteredModel", "sagemakerlifecycle-staging-pending",version) # Promote to production/active client.set_registered_model_alias("MyRegisteredModel", "sagemakerlifecycle-production-active",version)
Anda dapat memverifikasi status siklus hidup dengan menjelaskan Paket Model SageMaker AI:
import boto3 sm = boto3.client("sagemaker") mv = client.get_model_version("MyRegisteredModel",version) sm_arn = mv.tags["sagemaker.model_package_arn"] desc = sm.describe_model_package(ModelPackageName=sm_arn) print(desc["ModelLifeCycle"]["Stage"]) # "staging" print(desc["ModelLifeCycle"]["StageStatus"]) # "pending"
Mengatur tahapan siklus hidup menggunakan UI MLFlow
Di UI MLFlow, navigasikan ke halaman versi model. Di bawah Alias, tambahkan alias menggunakan sagemakerlifecycle- format. Siklus hidup Paket Model SageMaker AI diperbarui secara otomatis saat alias disimpan.stage-status
Melihat tahapan siklus hidup di Studio
Di Studio, navigasikan ke Model dan pilih versi Paket Model. Tahap siklus hidup dan status ditampilkan pada tab Detail di bawah Model Lifecycle.
Mencegah pembaruan pada model terdaftar menggunakan tag sumber daya
Anda dapat menggunakan kondisi berbasis tag sumber daya IAM untuk mencegah server pelacakan MLFlow atau peran Aplikasi MLFlow memodifikasi Grup Paket Model atau versi Paket Model tertentu. Ini memungkinkan Anda untuk mengunci model individual agar tidak diperbarui melalui MLFlow setelah mereka mencapai keadaan tertentu.
Misalnya, kebijakan berikut menolak UpdateModelPackage pada Paket Model apa pun yang memiliki taglocked=true:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "sagemaker:UpdateModelPackage", "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/locked": "true" } } } ] }
Saat kebijakan ini dilampirkan ke server pelacakan atau peran Aplikasi MLFlow, setiap upaya untuk memperbarui siklus hidup Paket Model yang ditandai dari MLFlow gagal dengan kesalahan akses ditolak.
Anda juga dapat membatasi CreateModelPackage Grup Paket Model untuk mencegah versi baru didaftarkan:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "sagemaker:CreateModelPackage", "Resource": "arn:aws:sagemaker:region:account:model-package-group/group-name/*", "Condition": { "StringEquals": { "aws:ResourceTag/frozen": "true" } } } ] }
catatan
Kondisi berbasis tag sumber daya bergantung pada tag yang diterapkan ke SageMaker AI Model Package Group atau sumber daya Paket Model (bukan model MLFlow). Anda dapat menerapkan tag ini melalui konsol SageMaker AI, CLI, atau SDK. Tag-based kondisi mungkin memakan waktu hingga 15 menit untuk menyebar setelah tag diterapkan.