

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 模型生命週期的預備建構模組
<a name="model-registry-staging-construct"></a>

您可以使用模型註冊庫預備建構模組，來定義模型可以針對模型工作流程和生命週期進展的一系列階段。這可簡化模型在轉換開發、測試和生產階段時的追蹤和管理。以下將提供預備建構模組的相關資訊，以及如何在模型治理中使用它們。

階段建構模組可讓您定義模型進展的一系列階段和狀態。在每個階段，具有相關許可的特定角色可以更新階段狀態。隨著模型在各個階段的進展，其中繼資料也隨之延續，從而提供模型生命週期的全面檢視。每個階段的授權角色都可以存取和檢閱此中繼資料，從而做出明智的決策。這包括下列優點：
+ 模型生命週期許可 - 為指定角色設定許可，以更新模型階段狀態，並在關鍵轉換點強制執行核准閘道。管理員可以使用 IAM 政策和條件金鑰搭配 API 來指派許可。例如，您可以限制資料科學家更新模型生命週期階段，從「開發」轉換到「生產」。如需範例，請參閱 [設定預備建構模組範例](model-registry-staging-construct-set-up.md)。
+ 透過 Amazon EventBridge 的模型生命週期事件 - 您可以使用 EventBridge 取用生命週期階段事件。這會設定您可在模型變更核准或預備狀態時接收事件通知，從而與第三方治理工具整合。如需範例，請參閱[取得 ModelLifeCycle 的事件通知](model-registry-staging-construct-event-bridge.md)。
+ 根據模型生命週期欄位搜尋 - 您可以使用 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_Search.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_Search.html) API 搜尋和篩選階段和階段狀態。
+ 模型生命週期事件的稽核軌跡 - 您可以檢視模型生命週期轉換時模型核准和預備事件的歷程記錄。

下列主題將逐步引導您如何在管理員端設定階段建構模組，以及如何從使用者端更新階段狀態。

**Topics**
+ [設定預備建構模組範例](model-registry-staging-construct-set-up.md)
+ [在 Studio 中更新模型套件階段和狀態](model-registry-staging-construct-update-studio.md)
+ [更新模型套件階段和狀態範例 (boto3)](model-registry-staging-construct-update-boto3.md)
+ [使用 AWS CLI 範例叫用 ModelLifeCycle](model-registry-staging-construct-cli.md)
+ [取得 ModelLifeCycle 的事件通知](model-registry-staging-construct-event-bridge.md)

# 設定預備建構模組範例
<a name="model-registry-staging-construct-set-up"></a>

若要為您的 Amazon SageMaker 模型註冊表設定階段建構模組，管理員需要將相關許可授予預期的角色。以下提供如何為各種角色設定階段建構模組的範例。

**注意**  
Amazon SageMaker AI 網域內的使用者將能夠檢視網域內定義的所有階段，但只能使用他們具有許可的階段。

階段由 `ModelLifeCycle` 參數定義，並具有下列結構。管理員會設定哪些角色可以存取 `stage` 和 `stageStatus` 的許可。擔任角色的使用者可以使用相關的 `stage` 和 `stageStatus`，並包括自己的 `stageDescription`。

```
ModelLifeCycle {
    stage: String # Required (e.g., Development/QA/Production)
    stageStatus: String # Required (e.g., PendingApproval/Approved/Rejected)  
    stageDescription: String # Optional
}
```

下表包含模型註冊庫預先定義的階段建構模組範本。您可以根據您的使用案例定義自己的階段建構模組。必須先設定相關許可，使用者才能使用這些許可。


| 階段 | 階段狀態 | 
| --- | --- | 
|  提案  |  PendingApproval  | 
|  開發  |  InProgress  | 
|  QA  |  OnHold  | 
|  PreProduction  |  Approved  | 
|  生產  |  已拒絕  | 
|  已封存  |  已淘汰  | 

下列 API 可以調用 `ModelLifeCycle` 參數：
+ [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModelPackage.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModelPackage.html)
+ [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateModelPackage.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateModelPackage.html)
+ [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeModelPackage.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeModelPackage.html)

------
#### [ Policy for a data scientist role ]

以下是使用模型生命週期條件金鑰的範例 IAM 政策。您可以根據自己的要求修改它們。在此範例中，角色的許可僅限於設定或定義模型生命週期階段，以：
+ 建立或更新階段為 `"Development"` 和狀態為 `"Approved"` 的模型。
+ 使用階段品質保證、`"QA"` 和狀態 `"PendingApproval"` 更新模型套件。

```
{
    "Action" : [
        "sagemaker:UpdateModelPackage",
        "sagemaker:CreateModelPackage"
    ],
    "Resource": [
        "*"
    ],
    "Condition": {
        "StringEquals": {
            "sagemaker:ModelLifeCycle:stage" : "Development"
            "sagemaker:ModelLifeCycle:stageStatus" : "Approved"       
        }
    }
},
{
    "Action" : [
        "sagemaker:UpdateModelPackage"
    ],
    "Resource": [
        "*"
    ],
    "Condition": {
        "StringEquals": {
            "sagemaker:ModelLifeCycle:stage" : "Staging"
            "sagemaker:ModelLifeCycle:stageStatus" : "PendingApproval"       
        }
    }
}
```

------
#### [ Policy for a quality assurance specialist ]

以下是使用模型生命週期條件金鑰的範例 IAM 政策。您可以根據自己的要求修改它們。在此範例中，角色的許可僅限於設定或定義模型生命週期階段，以：
+ 使用下列內容更新模型套件：
  + 階段 `"QA"` 和狀態 `"Approved"` 或 `"Rejected"`。
  + 階段 `"Production"` 和狀態 `"PendingApproval"`。

```
{
    "Action": [
        "sagemaker:UpdateModelPackage"
    ],
    "Resource": [
        "*"
    ],
    "Condition": {
        "StringEquals": {
            "sagemaker:ModelLifeCycle:stage": "Staging",
            "sagemaker:ModelLifeCycle:stageStatus": "Approved"
        }
    }
}, {
    "Action": [
        "sagemaker:UpdateModelPackage"
    ],
    "Resource": [
        "*"
    ],
    "Condition": {
        "StringEquals": {
            "sagemaker:ModelLifeCycle:stage": "Staging",
            "sagemaker:ModelLifeCycle:stageStatus": "Rejected"
        }
    }
}, {
    "Action": [
        "sagemaker:UpdateModelPackage"
    ],
    "Resource": [
        "*"
    ],
    "Condition": {
        "StringEquals": {
            "sagemaker:ModelLifeCycle:stage": "Production",
            "sagemaker:ModelLifeCycle:stageStatus": "PendingApproval"
        }
    }
}
```

------
#### [ Policy for lead engineer role ]

以下是使用模型生命週期條件金鑰的範例 IAM 政策。您可以根據自己的要求修改它們。在此範例中，角色的許可僅限於設定或定義模型生命週期階段，以：
+ 使用下列內容更新模型套件：
  + 階段 `"Production"` 和狀態 `"Approved"` 或 `"Rejected"`。
  + 階段 `"Development"` 和狀態 `"PendingApproval"`。

```
{
    "Action" : [
        "sagemaker:UpdateModelPackage"
    ],
    "Resource": [
        "*"
    ],
    "Condition": {
        "ForAnyvalue:StringEquals" : {
            "sagemaker:ModelLifeCycle:stage" : "Production",
            "sagemaker:ModelLifeCycle:stageStatus" : "Approved"
        }
    }
},
{
    "Action" : [
        "sagemaker:UpdateModelPackage"
    ],
    "Resource": [
        "*"
    ],
    "Condition": {
        "StringEquals:" {
            "sagemaker:ModelLifeCycle:stage" : "Production"
            "sagemaker:ModelLifeCycle:stageStatus" : "Rejected"
        }
    }
},
{
    "Action" : [
        "sagemaker:UpdateModelPackage"
    ],
    "Resource": [
        "*"
    ],
    "Condition": {
        "StringEquals": {
            "sagemaker:ModelLifeCycle:stage" : "Development"
            "sagemaker:ModelLifeCycle:stageStatus" : "PendingApproval"
        }
    }
}
```

------

若要取得任何模型狀態更新的 Amazon EventBridge 通知，請參閱[取得 ModelLifeCycle 的事件通知](model-registry-staging-construct-event-bridge.md)中的範例。如需您可能會收到的範例 EventBridge 承載，請參閱 [SageMaker 模型套件狀態變更](automating-sagemaker-with-eventbridge.md#eventbridge-model-package)。

# 在 Studio 中更新模型套件階段和狀態
<a name="model-registry-staging-construct-update-studio"></a>

若要使用模型套件階段建構模組，您需要擔任具有相關許可的執行角色。以下頁面提供如何使用 Amazon SageMaker Studio 更新階段狀態的相關資訊。

所有使用者都可檢視網域中定義的所有階段建構模組。若要更新階段，您需要讓管理員為您設定存取該階段的相關許可。如需作法的相關資訊，請參閱[設定預備建構模組範例](model-registry-staging-construct-set-up.md)。

下列程序將帶您前往 Studio UI，您可以在其中更新模型套件階段。

1. 登入 Amazon SageMaker Studio。如需詳細資訊，請參閱[啟動 Amazon SageMaker Studio](studio-updated-launch.md)。

1. 在左側導覽窗格中，選擇**模型**。

1. 尋找您的模型。
   + 您可以使用索引標籤來尋找模型。例如，選擇**已註冊模型**或**可部署模型**索引標籤。
   + 您可以使用**我的模型**和**與我共用**選項，來尋找您建立的模型或您共用的模型。

1. 選取您要更新的模型旁邊的核取方塊。

1. 選擇**更多選項**圖示。

1. 選擇**更新模型生命週期**。這將帶您前往**更新模型生命週期**區段。

1. 完成任務以更新階段。

   如果您無法更新階段，將會收到錯誤。您的管理員需要為您設定許可才能執行此操作。如需如何設定許可的相關資訊，請參閱[設定預備建構模組範例](model-registry-staging-construct-set-up.md)。

# 更新模型套件階段和狀態範例 (boto3)
<a name="model-registry-staging-construct-update-boto3"></a>

若要更新模型套件階段和狀態，您需要擔任具有相關許可的執行角色。以下提供如何使用 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateModelPackage.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateModelPackage.html) API 或使用 適用於 Python (Boto3) 的 AWS SDK更新階段狀態的範例。

在此範例中，[https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateModelPackage.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateModelPackage.html) API 動作的 `ModelLifeCycle` 階段 `"Development"` 和階段狀態 `"Approved"` 條件金鑰已授予您的執行角色。您也可以在 `stage-description` 中包括描述。如需詳細資訊，請參閱[設定預備建構模組範例](model-registry-staging-construct-set-up.md)。

```
from sagemaker import get_execution_role, session 
import boto3 

region = boto3.Session().region_name role = get_execution_role() 
sm_client = boto3.client('sagemaker', region_name=region)

model_package_update_input_dict = {
    "ModelLifeCycle" : { 
        "stage" : "Development",
        "stageStatus" : "Approved",
        "stageDescription" : "stage-description"
    }
} 
model_package_update_response = sm_client.update_model_package(**model_package_update_input_dict)
```

# 使用 AWS CLI 範例叫用 ModelLifeCycle
<a name="model-registry-staging-construct-cli"></a>

您可以使用 AWS CLI 工具來管理您的 AWS 資源。一些 AWS CLI 命令包括 [search](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/cloudsearchdomain/search.html) 和 [list-actions](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/fis/list-actions.html)。以下頁面將提供使用這些命令時如何使用 `ModelPackage` 的範例。如需設定階段建構模組的相關資訊和範例，請參閱[設定預備建構模組範例](model-registry-staging-construct-set-up.md)。

此頁面上的範例使用以下變數：
+ `region` 是模型套件存在的區域。
+ `stage-name` 是所定義階段的名稱。
+ `stage-status` 是所定義階段狀態的名稱。

以下是使用 ModelLifeCycle 的範例 AWS CLI 命令。

使用您已定義的 *stage-name* 搜尋模型套件。

```
aws sagemaker search --region 'region' --resource ModelPackage --search-expression '{"Filters": [{"Name": "ModelLifeCycle.Stage","Value": "stage-name"}]}'
```

列出與 `ModelLifeCycle` 相關聯的動作。

```
aws sagemaker list-actions --region 'region' --action-type ModelLifeCycle
```

使用 ModelLifeCycle 建立模型套件。

```
aws sagemaker create-model-package --model-package-group-name 'model-package-group-name' --source-uri 'source-uri' --region 'region' --model-life-cycle '{"Stage":"stage-name", "StageStatus":"stage-status", "StageDescription":"Your Staging Comment"}' 
```

使用 ModelLifeCycle 更新模型套件。

```
aws sagemaker update-model-package --model-package 'model-package-arn' --region 'region' --model-life-cycle '{"Stage":"stage-name", "StageStatus":"stage-status"}' 
```

透過 ModelLifeCycle 欄位搜尋。

```
aws sagemaker search --region 'region' --resource ModelPackage --search-expression '{"Filters": [{"Name": "ModelLifeCycle.Stage","Value": "stage-name"}]}'
```

透過 [Amazon SageMaker 機器學習 (ML) 歷程追蹤](lineage-tracking.md) API 擷取 ModelLifeField 更新的稽核記錄。

```
aws sagemaker list-actions --region 'region' --action-type ModelLifeCycle
```

```
aws sagemaker describe-action --region 'region' --action-name 'action-arn or action-name'
```

# 取得 ModelLifeCycle 的事件通知
<a name="model-registry-staging-construct-event-bridge"></a>

您可以在帳戶中使用 EventBridge 取得 ModelLifeCycle 更新通知和事件。以下是要在您帳戶中設定的 EventBridge 規則範例，以取得 ModelLifeCycle 事件通知。

```
{
  "source": ["aws.sagemaker"],
  "detail-type": ["SageMaker Model Package State Change"]
}
```

如需您可能會收到的範例 EventBridge 承載，請參閱 [SageMaker 模型套件狀態變更](automating-sagemaker-with-eventbridge.md#eventbridge-model-package)。