建立模型裝置 - Amazon SageMaker

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

建立模型裝置

重要

允許 Amazon SageMaker Studio 或 Amazon 工作室經典版建立 Amazon SageMaker SageMaker 資源的自訂IAM政策還必須授予許可,才能將標籤新增到這些資源。需要向資源添加標籤的權限,因為 Studio 和 Studio 經典版會自動標記它們創建的任何資源。如果IAM原則允許 Studio 和 Studio 典型版建立資源,但不允許標記,則在嘗試建立資源時可能會發生 AccessDenied "" 錯誤。如需詳細資訊,請參閱提供標記資 SageMaker源的權限

AWS Amazon 的受管政策 SageMaker授予建立 SageMaker 資源的權限,已包含在建立這些資源時新增標籤的權限。

您可以使用 SageMaker 控制台或 SageMaker Python 創建 Amazon SageMaker 模型卡SDK。您也可以直接使用這些API操作。若要取得有關API作業的更多資訊,請參閱通過低級使用模型卡 APIs

使用 SageMaker 主控台建立模型卡

轉到 Amazon 控 SageMaker 制台。在瀏覽窗格的 控管 下,請選擇 模型卡。選擇右上角的 建立模型卡

遵循建立模型卡提示中的四個步驟,記錄有關您模型的詳細資訊。

步驟 1:輸入模型詳細資訊和預定用途

如果您的模型是 AWS 資源,請在此欄位中指定確切的模型名稱以自動填入模型詳細資訊。若要瀏覽現有型名稱,請參閱 Amazon SageMaker 主控台中的模型。每個唯一的模型名稱只能有一個關聯的模型卡。

如果您的模型不是 AWS 資源,請為您的模型提供唯一的名稱。若要將模型新增為 AWS 資源,請參閱 Amazon SageMaker 開發人員指南中的建立模型。或者,您可以使用 SageMakerMarketplace 或模型登錄將模型新增為SageMaker 模型套件。

如需預期用途的更多資訊,請參閱模型的預期用途。如需風險評等的更多資訊,請參閱風險評等

步驟 2:輸入訓練詳細資訊

將任何訓練詳細資訊、訓練觀察、資料集、超參數,以及有關模型目標函式的詳細資訊新增至模型卡。

模型卡中的目標函式可以是訓練期間最佳化的任何特徵。這可以包括但不限於成本函式、損失函式或目標指標。在本節中,記錄對訓練您的模型而言最重要的目標函式。

我們建議您將您目標函式的以下屬性編入目錄:

  • 最佳化方向

  • 指標

  • 描述

例如,您可以將二進位分類問題 (描述) 的交叉熵損失 (指標) 最小化 (最佳化方向),或將邏輯迴歸的可能性最大化。此外,您可以提供有關為什麼選擇此目標函式而不是其他特徵的附註。

步驟 3:輸入評估詳細資訊

如果您現有的評估報告由 SageMaker 澄清或模型監視器產生,請URI為這些報告提供 S3,或手動上傳它們以將其新增至模型卡。

如需有關 SageMaker 澄清的詳細資訊,請參閱執行 SageMaker 澄清處理工作以進行偏差分析和解釋。

如需有關使用模型監控監視模型品質指標中偏離的更多資訊,請參閱監視模型品質

若要新增您自己的評估報告,請選擇一般模型卡評估。所有模型卡評估報告都必須在模型卡JSON架構

步驟 4:輸入其他詳細資訊

新增自訂模型卡詳細資訊欄位欄位,以取得您要在模型卡上解釋的任何其他資訊。例如,您可能會包含具有個人理財的企業營運自訂欄位。

儲存模型卡

檢視模型卡中的資訊後,請選擇右下角的儲存,以儲存您的模型卡。

使用 SageMaker Python 創建一個模型卡 SDK

在建立模型卡之前,您必須先定義您模型卡的內容。使用 SageMaker Python 時SDK,模型內容包含模型概述、訓練詳細資料、預期用途、評估詳細資料和其他資訊。

您可以為下列項目建立模型卡:

  • 以中為主體的模型 SageMaker

  • 模型登錄中的模型套件 ( SageMaker 模型)

  • 在以外託管或註冊的模型 SageMaker

您也可以建立模型卡,而不將任何模型與其關聯。

我們建議將您訓練過的模型新增至 SageMaker 模型登錄。模型註冊表可協助您將模型編入目錄並追蹤模型版本。建立模型卡時,模型註冊表中有關模型的資訊會自動填入模型卡。建立模型卡後,您可以編輯模型卡或新增資訊。

如需使用模型註冊表的更多資訊,請參閱使用模型註冊表註冊和部署模型。如需有關從模型註冊表建立模型卡的資訊,請參閱在模型登錄中為模型建立 SageMaker 模型卡

注意

要使用模型卡與 SageMaker PythonSDK,你首先需要建立一個 SageMaker 會話。如需詳細資訊,請參閱 SageMaker Python SDK API 參考資料中的工作階段

若要為不在模型登錄中的模型建立 SageMaker 模型卡,請參閱建立一個不在模型註冊表中的模型

建立一個不在模型註冊表中的模型

使用以下各節中的資訊,為尚未新增至模型註冊表的模型建立模型卡。

步驟 1:定義模型概述

定義您模型的概觀。

model_overview = ModelOverview.from_model_name( model_name=model_name, sagemaker_session=sagemaker_session, model_description="A-description-of-your-model", problem_type="Problem-type", # For example, "Binary Classification" algorithm_type="Algorithm-type", # For example, "Logistic Regression" model_creator="Name-of-model-creator", model_owner="Name-of-model-owner", )

如果您的模型是 AWS 資源,則會自動擷取概觀資訊ARN,例如模型URI、推論容器和模型加工品的 S3 位置。使用下列指令列印關聯的 AWS 中繼資料:

print(model_overview.model_id) print(model_overview.inference_environment.container_image) print(model_overview.model_artifact)

步驟 2:定義訓練詳細資訊

若要定義您的模型訓練詳細資訊,您必須先定義其目標函式。

objective_function = ObjectiveFunction( function=Function( function=ObjectiveFunctionEnum.MINIMIZE, facet=FacetEnum.LOSS, ), notes="An-explanation-about-objective-function", )

接下來,您可以使用現有的模型概觀、作業階段和目標函式來定義訓練詳細資訊。在此處新增任何的訓練觀察。

training_details = TrainingDetails.from_model_overview( model_overview=model_overview, sagemaker_session=sagemaker_session, objective_function=objective_function, training_observations="Model-training-observations", )

再一次,如果您的模型是 AWS 資源,則會自動填入某些訓練詳細資料。使用下列命令列印訓練工作ARNURI、訓練容器和訓練指標:

print(training_details.training_job_details.training_arn) print(training_details.training_job_details.training_environment.container_image) print([{"name": i.name, "value": i.value} for i in training_details.training_job_details.training_metrics])

定義評估詳細資訊

若要定義您模型評估的詳細資訊,您必須先定義一或多個指標群組,以說明用於任何評估任務的指標。

my_metric_group = MetricGroup( name="binary classification metrics", metric_data=[Metric(name="accuracy", type=MetricTypeEnum.NUMBER, value=0.5)] )

接下來,您可以使用評估指標和每個評估任務的資料集來定義評估詳細資訊。在此處新增任何評估觀察值,並為您的評估任務提供唯一名稱。

evaluation_details = [ EvaluationJob( name="Example-evaluation-job", evaluation_observation="Evaluation-observations", datasets=["s3://path/to/evaluation/data"], metric_groups=[my_metric_group], ) ]

如果您有由SageMaker澄清SageMaker 模型監控產生的現有評估報告,請將它們上傳到 Amazon S3,並提供 S3 URI 以自動剖析評估指標。若要新增您自己的一般模型卡評估報告,請以評估結果JSON格式提供報表。

report_type = "clarify_bias.json" example_evaluation_job.add_metric_group_from_json( f"example_metrics/{report_type}", EvaluationMetricTypeEnum.CLARIFY_BIAS )

步驟 3:定義預期用途

定義模型的預定用途,包括模型的一般用途以及模型預定的使用案例。還建議您在特定使用案例中加入任何可能具有此模型有效性的因素,以及您組織對模型的風險評等。如需更多資訊,請參閱模型的預期用途風險評等

intended_uses = IntendedUses( purpose_of_model="Purpose-of-the-model", intended_uses="The-intended-uses-of-this-model", factors_affecting_model_efficiency="Any-factors-effecting-model-efficacy", risk_rating=RiskRatingEnum.LOW, explanations_for_risk_rating="Explanation-for-low-risk-rating", )

定義其他資訊

最後,您可以在模型卡中新增其他自訂資訊。您可以記錄與模型有關的任何倫理考量、注意事項和建議。您還可以用鍵值對形式新增您想要的任何自訂詳細資訊。

additional_information = AdditionalInformation( ethical_considerations="Any-ethical-considerations", caveats_and_recommendations="Any-caveats-and-recommendations", custom_details={"custom details1": "details-value"}, )

步驟 4:建立模型卡

為模型卡命名,定義模型卡,然後使用該定義使用 SageMaker Python 創建模型卡SDK。

model_card_name = "my-model-card" my_card = ModelCard( name=model_card_name, status=ModelCardStatusEnum.DRAFT, model_overview=model_overview, training_details=training_details, intended_uses=intended_uses, evaluation_details=evaluation_details, additional_information=additional_information, sagemaker_session=sagemaker_session, ) my_card.create()

在模型登錄中為模型建立 SageMaker 模型卡

在開始建立模型卡之前,請確定您已建立模型套件群組和模型套件。如需使用模型註冊表的更多相關資訊,請參閱使用模型註冊表註冊和部署模型

重要

您必須具有使用 SageMaker 模型登錄中作業的權限。我們建議使用AmazonSageMakerModelRegistryFullAccess AWS 受管政策。如需受管政策的更多相關資訊,請參閱AWS 模型登錄的受管理原則

使用 SageMaker Python SDK 為模型登錄內的模型套件建立 SageMaker 模型卡。模型套件是您訓練過的模型。當您建立模型卡時,Amazon SageMaker 模型卡會自動將模型套件中的資料匯入模型卡。

當您為模型套件建立模型卡時,Amazon SageMaker Model Card 會使用此DescribeModelPackage操作將模型套件中的資料新增至模型卡。以下是可以從模型套件匯入至模型卡的欄位範例:

使用以下代碼來定義模型套件,並從中建立模型卡:

mp_details = ModelPackage.from_model_package_arn( model_package_arn="example_model_package_arn", sagemaker_session=sagemaker_session, ) model_card_name = "example-model-card" my_card = ModelCard( name=model_card_name, status=ModelCardStatusEnum.status, model_package_details=mp_details, sagemaker_session=sagemaker_session, ) my_card.create()

對於status,您指定的是模型卡的核准狀態。如果未指定狀態,「 SageMaker 模型卡」會使用預設值DRAFT。如果您未指定 SageMaker 工作階段,「 SageMaker 模型卡」會使用預設 SageMaker 工作階段。

您必須指定模型的名稱和模型套件的 Amazon 資源名稱 (ARN)。如需取得模型套件之 Amazon 資源名稱 (ARN) 的相關資訊,請參閱檢視並更新模型版本 (Boto3) 的詳細資訊

您從模型套件建立的模型卡可能包含遺失或不正確的資訊。您可以將資訊新增至模型卡或編輯。如需有關管理您模型卡的更多相關資訊,請參閱管理模型卡

SageMaker 模型登錄支援模型套件的版本控制。您可以版本化模型套件,並為每個版本建立一個模型卡。以前版本的模型卡中的資訊會轉移到以後續版本建立的模型卡。例如,您可以擁有模型套件的版本 1、版本 2 和版本 3。假設您已經為版本 1 建立了模型卡,但尚未為版本 2 建立模型卡。如果您為第 3 版建立模型卡,Amazon SageMaker 模型卡會自動將第 1 版的型號卡中的資訊轉移到第 3 版的型號卡。

注意

您也可以為不使用版本控制的模型套件建立模型卡。但是,大多數機器學習的工作流程都涉及相同模型的多個版本,因此我們建議您進行以下操作:

  1. 為每個模型套件建立一個版本

  2. 為模型套件的每個版本建立模型卡