

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

# Daftarkan Versi Model
<a name="model-registry-version"></a>

Anda dapat mendaftarkan model SageMaker AI Amazon dengan membuat versi model yang menentukan grup model yang menjadi miliknya. Versi model harus menyertakan artefak model (bobot terlatih model) dan opsional kode inferensi untuk model tersebut.

*Pipa inferensi* adalah model SageMaker AI yang terdiri dari urutan linier dua hingga lima belas kontainer yang memproses permintaan inferensi. Anda mendaftarkan pipeline inferensi dengan menentukan kontainer dan variabel lingkungan terkait. Untuk informasi lebih lanjut tentang pipa inferensi, lihat. [Pipa inferensi di Amazon AI SageMaker](inference-pipelines.md)

Anda dapat mendaftarkan model dengan pipeline inferensi, dengan menentukan wadah dan variabel lingkungan terkait. Untuk membuat versi model dengan pipeline inferensi dengan menggunakan konsol Amazon SageMaker Studio, atau dengan membuat langkah dalam pipeline pembuatan model SageMaker AI, gunakan langkah-langkah berikut. AWS SDK untuk Python (Boto3)

**Topics**
+ [Daftarkan Versi Model (SageMaker AI Pipelines)](#model-registry-pipeline)
+ [Daftarkan Versi Model (Boto3)](#model-registry-version-api)
+ [Daftarkan Versi Model (Studio atau Studio Klasik)](#model-registry-studio)
+ [Daftarkan Versi Model dari Akun yang Berbeda](#model-registry-version-xaccount)

## Daftarkan Versi Model (SageMaker AI Pipelines)
<a name="model-registry-pipeline"></a>

Untuk mendaftarkan versi model dengan menggunakan pipeline pembuatan model SageMaker AI, buat `RegisterModel` langkah dalam pipeline Anda. Untuk informasi tentang membuat `RegisterModel` langkah sebagai bagian dari pipeline, lihat[Langkah 8: Tentukan RegisterModel langkah untuk membuat paket model](define-pipeline.md#define-pipeline-register).

## Daftarkan Versi Model (Boto3)
<a name="model-registry-version-api"></a>

Untuk mendaftarkan versi model dengan menggunakan Boto3, hubungi operasi `create_model_package` API.

Pertama, Anda mengatur kamus parameter untuk diteruskan ke operasi `create_model_package` API.

```
# Specify the model source
model_url = "s3://your-bucket-name/model.tar.gz"

modelpackage_inference_specification =  {
    "InferenceSpecification": {
      "Containers": [
         {
            "Image": image_uri,
	    "ModelDataUrl": model_url
         }
      ],
      "SupportedContentTypes": [ "text/csv" ],
      "SupportedResponseMIMETypes": [ "text/csv" ],
   }
 }

# Alternatively, you can specify the model source like this:
# modelpackage_inference_specification["InferenceSpecification"]["Containers"][0]["ModelDataUrl"]=model_url

create_model_package_input_dict = {
    "ModelPackageGroupName" : model_package_group_name,
    "ModelPackageDescription" : "Model to detect 3 different types of irises (Setosa, Versicolour, and Virginica)",
    "ModelApprovalStatus" : "PendingManualApproval"
}
create_model_package_input_dict.update(modelpackage_inference_specification)
```

Kemudian Anda memanggil operasi `create_model_package` API, meneruskan kamus parameter yang baru saja Anda atur.

```
create_model_package_response = sm_client.create_model_package(**create_model_package_input_dict)
model_package_arn = create_model_package_response["ModelPackageArn"]
print('ModelPackage Version ARN : {}'.format(model_package_arn))
```

## Daftarkan Versi Model (Studio atau Studio Klasik)
<a name="model-registry-studio"></a>

Untuk mendaftarkan versi model di konsol Amazon SageMaker Studio, selesaikan langkah-langkah berikut berdasarkan apakah Anda menggunakan Studio atau Studio Classic.

------
#### [ Studio ]

1. Buka konsol SageMaker Studio dengan mengikuti petunjuk di [Luncurkan Amazon SageMaker Studio](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated-launch.html).

1. Di panel navigasi kiri, pilih **Model** dari menu.

1. Pilih tab **Model terdaftar**, jika belum dipilih.

1. Tepat di bawah label tab **Model terdaftar**, pilih **Grup Model** dan **Model saya**, jika belum dipilih.

1. Pilih**Pendaftaran**. Ini akan membuka halaman **model Register**.

1. Ikuti petunjuk yang diberikan di halaman **model Daftar**. 

1. Setelah Anda meninjau pilihan Anda, pilih **Daftar**. Setelah selesai, Anda akan dibawa ke halaman **Ikhtisar** versi model.

------
#### [ Studio Classic ]

1. Masuk ke Amazon SageMaker Studio Classic. Untuk informasi selengkapnya, lihat [Meluncurkan Amazon SageMaker Studio Classic](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-launch.html).

1. Di panel navigasi kiri, pilih ikon **Beranda** (![\[Black square icon representing a placeholder or empty image.\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/studio/icons/house.png)).

1. Pilih **Model**, lalu **registri Model**.

1. Buka formulir **Register Version**. Anda dapat melakukannya dengan salah satu dari dua cara berikut:
   + Pilih **Tindakan**, lalu pilih **Buat versi model**.
   + Pilih nama grup model yang ingin Anda buat versi model, lalu pilih **Buat versi model**.

1. Dalam formulir **versi model Register**, masukkan informasi berikut:
   + Dalam dropdown **nama grup paket Model**, pilih nama grup model.
   + (Opsional) Masukkan deskripsi untuk versi model Anda.
   + Di menu **tarik-turun Status Persetujuan Model**, pilih status persetujuan versi.
   + (Opsional) Di bidang **metadata kustom**, tambahkan tag khusus sebagai pasangan nilai kunci.

1. Pilih **Berikutnya**.

1. Dalam formulir **Spesifikasi Inferensi**, masukkan informasi berikut:
   + Masukkan lokasi gambar inferensi Anda.
   + Masukkan lokasi artefak data model Anda.
   + (Opsional) Masukkan informasi tentang gambar yang akan digunakan untuk pekerjaan inferensi transformasi dan real-time, serta jenis MIME input dan output yang didukung.

1. Pilih **Berikutnya**.

1. (Opsional) Berikan detail untuk membantu rekomendasi titik akhir.

1. Pilih **Berikutnya**.

1. (Opsional) Pilih metrik model yang ingin Anda sertakan.

1. Pilih **Berikutnya**.

1. Pastikan pengaturan yang ditampilkan sudah benar, dan pilih **Daftar versi model**. Jika Anda kemudian melihat jendela modal dengan pesan kesalahan, pilih **Lihat** (di sebelah pesan) untuk melihat sumber kesalahan.

1. Konfirmasikan versi model baru Anda muncul di halaman grup model induk.

------

## Daftarkan Versi Model dari Akun yang Berbeda
<a name="model-registry-version-xaccount"></a>

Untuk mendaftarkan versi model dengan Grup Model yang dibuat oleh AWS akun lain, Anda harus menambahkan kebijakan AWS Identity and Access Management sumber daya lintas akun untuk mengaktifkan akun tersebut. Misalnya, satu AWS akun di organisasi Anda bertanggung jawab atas model pelatihan, dan akun lain bertanggung jawab untuk mengelola, menerapkan, dan memperbarui model. Anda membuat kebijakan sumber daya IAM dan menerapkan kebijakan ke sumber daya akun tertentu yang ingin Anda berikan akses untuk kasus ini. Untuk informasi selengkapnya tentang kebijakan sumber daya lintas akun AWS, lihat [Logika evaluasi kebijakan lintas akun](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic-cross-account.html) di *AWS Identity and Access Management Panduan Pengguna*.

Untuk mengaktifkan kemampuan ditemukan lintas akun, yang memungkinkan akun lain melihat grup paket model dari akun pemilik sumber daya, lihat. [Kemampuan untuk ditemukan lintas akun](model-registry-ram.md)

**catatan**  
Anda juga harus menggunakan kunci KMS untuk mengenkripsi tindakan [konfigurasi data keluaran](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_OutputDataConfig.html) selama pelatihan untuk penerapan model lintas akun.

Untuk mengaktifkan registri model lintas akun di SageMaker AI, Anda harus menyediakan kebijakan sumber daya lintas akun untuk Grup Model yang berisi versi model. Berikut ini adalah contoh yang membuat kebijakan lintas akun untuk Grup Model dan menerapkan kebijakan ini ke sumber daya tertentu.

Konfigurasi berikut harus diatur dalam akun sumber yang mendaftarkan model lintas akun di Grup Model. Dalam contoh ini, akun sumber adalah akun pelatihan model yang akan melatih dan kemudian mendaftarkan akun silang model ke dalam Model Registry dari akun Model Registry.

Contoh mengasumsikan bahwa Anda sebelumnya mendefinisikan variabel berikut:
+ `sm_client`- SageMaker Klien AI Boto3.
+ `model_package_group_name`— Grup Model yang ingin Anda berikan aksesnya.
+ `model_package_group_arn`— ARN Grup Model tempat Anda ingin memberikan akses lintas akun.
+ `bucket`- Bucket Amazon S3 tempat artefak pelatihan model disimpan.

Untuk dapat menerapkan model yang dibuat di akun yang berbeda, pengguna harus memiliki peran yang memiliki akses ke tindakan SageMaker AI, seperti peran dengan kebijakan `AmazonSageMakerFullAccess` terkelola. Untuk informasi tentang kebijakan yang dikelola SageMaker AI, lihat[AWS kebijakan terkelola untuk Amazon SageMaker AI](security-iam-awsmanpol.md).

### Kebijakan sumber daya IAM yang diperlukan
<a name="model-registry-version-xaccount-policies"></a>

Diagram berikut menangkap kebijakan yang diperlukan untuk memungkinkan pendaftaran model lintas akun. Seperti yang ditunjukkan, kebijakan ini harus aktif selama pelatihan model untuk mendaftarkan model dengan benar ke dalam akun Model Registry.

![\[\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/model_registry_cross_account.png)


Amazon ECR, Amazon S3, AWS KMS dan kebijakan ditunjukkan dalam contoh kode berikut. 

**Contoh kebijakan Amazon ECR**

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AddPerm",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:root"
            },
            "Action": [
                "ecr:BatchGetImage",
                "ecr:Describe*"
            ]
        }
    ]
}
```

------

**Contoh kebijakan Amazon S3**

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AddPerm",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:root"
            },
            "Action": [
                "s3:GetObject",
                "s3:GetBucketAcl",
                "s3:GetObjectAcl"
            ],
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*"
        }
    ]
}
```

------

** AWS KMS Kebijakan sampel**

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AddPerm",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:root"
            },
            "Action": [
                "kms:Decrypt",
                "kms:GenerateDataKey*"
            ],
            "Resource": "*"
        }
    ]
}
```

------

### Menerapkan kebijakan sumber daya ke akun
<a name="model-registry-version-xaccount-policy-usage"></a>

Konfigurasi kebijakan berikut menerapkan kebijakan yang dibahas di bagian sebelumnya dan harus dimasukkan ke dalam akun pelatihan model.

```
import json

# The Model Registry account id of the Model Group 
model_registry_account = "111111111111"

# The model training account id where training happens
model_training_account = "222222222222"

# 1. Create a policy for access to the ECR repository 
# in the model training account for the Model Registry account Model Group
ecr_repository_policy = {"Version": "2012-10-17",		 	 	 
    "Statement": [{"Sid": "AddPerm",
        "Effect": "Allow",
        "Principal": {
          "AWS": f"arn:aws:iam::{model_registry_account}:root"
        },
        "Action": [
          "ecr:BatchGetImage",
          "ecr:Describe*"
        ]
    }]
}

# Convert the ECR policy from JSON dict to string
ecr_repository_policy = json.dumps(ecr_repository_policy)

# Set the new ECR policy
ecr = boto3.client('ecr')
response = ecr.set_repository_policy(
    registryId = model_training_account,
    repositoryName = "decision-trees-sample",
    policyText = ecr_repository_policy
)

# 2. Create a policy in the model training account for access to the S3 bucket 
# where the model is present in the Model Registry account Model Group
bucket_policy = {"Version": "2012-10-17",		 	 	 
    "Statement": [{"Sid": "AddPerm",
        "Effect": "Allow",
        "Principal": {"AWS": f"arn:aws:iam::{model_registry_account}:root"
        },
        "Action": [
          "s3:GetObject",
          "s3:GetBucketAcl",
          "s3:GetObjectAcl"
        ],
        "Resource": [
          "arn:aws:s3:::{bucket}/*",
	  "Resource: arn:aws:s3:::{bucket}"
        ]
    }]
}

# Convert the S3 policy from JSON dict to string
bucket_policy = json.dumps(bucket_policy)

# Set the new bucket policy
s3 = boto3.client("s3")
response = s3.put_bucket_policy(
    Bucket = bucket,
    Policy = bucket_policy)

# 3. Create the KMS grant for the key used during training for encryption
# in the model training account to the Model Registry account Model Group
client = boto3.client("kms")

response = client.create_grant(
    GranteePrincipal=model_registry_account,
    KeyId=kms_key_id
    Operations=[
        "Decrypt",
        "GenerateDataKey",
    ],
)
```

Konfigurasi berikut perlu dimasukkan ke dalam akun Model Registry di mana Grup Model ada.

```
# The Model Registry account id of the Model Group 
model_registry_account = "111111111111"

# 1. Create policy to allow the model training account to access the ModelPackageGroup
model_package_group_policy = {"Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AddPermModelPackageVersion",
            "Effect": "Allow",
            "Principal": {"AWS": f"arn:aws:iam::{model_training_account}:root"},
            "Action": ["sagemaker:CreateModelPackage"],
            "Resource": f"arn:aws:sagemaker:{region}:{model_registry_account}:model-package/{model_package_group_name}/*"
        }
    ]
}

# Convert the policy from JSON dict to string
model_package_group_policy = json.dumps(model_package_group_policy)

# Set the new policy
response = sm_client.put_model_package_group_policy(
    ModelPackageGroupName = model_package_group_name,
    ResourcePolicy = model_package_group_policy)
```

Terakhir, gunakan `create_model_package` tindakan dari akun pelatihan model untuk mendaftarkan paket model di akun silang.

```
# Specify the model source
model_url = "s3://{bucket}/model.tar.gz"

#Set up the parameter dictionary to pass to the create_model_package API operation
modelpackage_inference_specification =  {
    "InferenceSpecification": {
        "Containers": [
            {
                "Image": f"{model_training_account}.dkr.ecr.us-east-2.amazonaws.com/decision-trees-sample:latest",
                "ModelDataUrl": model_url
            }
        ],
        "SupportedContentTypes": [ "text/csv" ],
        "SupportedResponseMIMETypes": [ "text/csv" ],
    }
}

# Alternatively, you can specify the model source like this:
# modelpackage_inference_specification["InferenceSpecification"]["Containers"][0]["ModelDataUrl"]=model_url

create_model_package_input_dict = {
    "ModelPackageGroupName" : model_package_group_arn,
    "ModelPackageDescription" : "Model to detect 3 different types of irises (Setosa, Versicolour, and Virginica)",
    "ModelApprovalStatus" : "PendingManualApproval"
}
create_model_package_input_dict.update(modelpackage_inference_specification)

# Create the model package in the Model Registry account
create_model_package_response = sm_client.create_model_package(**create_model_package_input_dict)
model_package_arn = create_model_package_response["ModelPackageArn"]
print('ModelPackage Version ARN : {}'.format(model_package_arn))
```