本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
建立模型裝置
重要
允許 Amazon SageMaker Studio 或 Amazon SageMaker Studio Classic 建立 Amazon SageMaker 資源的自訂IAM政策也必須授予許可,才能將標籤新增至這些資源。需要將標籤新增至資源的許可,因為 Studio 和 Studio Classic 會自動標記他們建立的任何資源。如果IAM政策允許 Studio 和 Studio Classic 建立資源,但不允許標記,則嘗試建立資源時可能會發生「AccessDenied」錯誤。如需詳細資訊,請參閱提供標記 SageMaker資源的許可。
AWS Amazon 的受管政策 SageMaker 提供建立 SageMaker 資源的許可,已包含在建立這些資源時新增標籤的許可。
您可以使用 SageMaker 主控台或 SageMaker Python 建立 Amazon SageMaker Model CardSDK。您也可以直接使用 API操作。如需 API 操作的詳細資訊,請參閱 模型卡的低階 SageMaker APIs 。
使用 SageMaker 主控台建立模型卡
前往 Amazon SageMaker 主控台。在瀏覽窗格的 控管 下,請選擇 模型卡。選擇右上角的 建立模型卡。
遵循建立模型卡提示中的四個步驟,記錄有關您模型的詳細資訊。
步驟 1:輸入模型詳細資訊和預定用途
如果您的模型是 AWS 資源,請在此欄位中指定確切的模型名稱,以自動填入模型詳細資訊。若要瀏覽現有的模型名稱,請參閱 Amazon SageMaker 主控台中的模型。每個唯一的模型名稱只能有一個關聯的模型卡。
如果您的模型不是 AWS 資源,請提供模型的唯一名稱。若要將模型新增為 AWS 資源,請參閱 Amazon SageMaker 開發人員指南 中的建立模型。或者,您可以使用 SageMaker Marketplace 或模型SageMaker 登錄檔 將模型新增為模型套件。
如需預期用途的更多資訊,請參閱模型的預期用途。如需風險評等的更多資訊,請參閱風險評等。
步驟 2:輸入訓練詳細資訊
將任何訓練詳細資訊、訓練觀察、資料集、超參數,以及有關模型目標函式的詳細資訊新增至模型卡。
模型卡中的目標函式可以是訓練期間最佳化的任何特徵。這可以包括但不限於成本函式、損失函式或目標指標。在本節中,記錄對訓練您的模型而言最重要的目標函式。
我們建議您將您目標函式的以下屬性編入目錄:
-
最佳化方向
-
指標
-
描述
例如,您可以將二進位分類問題 (描述) 的交叉熵損失 (指標) 最小化 (最佳化方向),或將邏輯迴歸的可能性最大化。此外,您可以提供有關為什麼選擇此目標函式而不是其他特徵的附註。
步驟 3:輸入評估詳細資訊
如果您有 SageMaker Clarify 或模型監視器產生的現有評估報告,URI請為這些報告提供 S3,或手動上傳這些報告以將其新增至模型卡。
如需 SageMaker Clarify 的詳細資訊,請參閱執行 SageMaker Clarify Processing Jobs for Bias Analysis and Explainability。
如需有關使用模型監控監視模型品質指標中偏離的更多資訊,請參閱監視模型品質。
若要新增您自己的評估報告,請選擇一般模型卡評估。所有模型卡評估報告都必須在模型卡JSON結構描述。
步驟 4:輸入其他詳細資訊
新增自訂模型卡詳細資訊欄位欄位,以取得您要在模型卡上解釋的任何其他資訊。例如,您可能會包含具有個人理財值的企業營運自訂欄位。
儲存模型卡
檢視模型卡中的資訊後,請選擇右下角的儲存,以儲存您的模型卡。
使用 SageMaker Python 建立模型卡 SDK
在建立模型卡之前,您必須先定義您模型卡的內容。使用 SageMaker Python 時SDK,模型內容包含模型概觀、訓練詳細資訊、預期用途、評估詳細資訊和其他資訊。
您可以為下列項目建立模型卡:
-
託管在 中的模型 SageMaker
-
模型登錄檔中的 SageMaker 模型套件 (模型)
-
在 之外託管或註冊的模型 SageMaker
您也可以建立模型卡,而不將任何模型與其關聯。
建議您將已訓練的模型新增至 SageMaker 模型登錄檔。模型註冊表可協助您將模型編入目錄並追蹤模型版本。建立模型卡時,模型註冊表中有關模型的資訊會自動填入模型卡。建立模型卡後,您可以編輯模型卡或新增資訊。
如需使用模型註冊表的更多資訊,請參閱使用模型登錄檔進行模型註冊部署。如需有關從模型註冊表建立模型卡的資訊,請參閱在模型登錄檔中為您的模型建立 SageMaker 模型卡。
注意
若要搭配 SageMaker Python 使用模型卡SDK,您必須先建立 SageMaker 工作階段。如需詳細資訊,請參閱 SageMaker Python SDKAPI參考中的工作階段
若要為不在模型登錄檔中的模型建立 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 資源,則會自動填入特定訓練詳細資訊。使用下列命令列印訓練任務 URI、ARN訓練容器 和訓練指標:
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 Clarify 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 Model Card 會自動將模型套件中的資料匯入模型卡。
當您為模型套件建立模型卡時,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()
對於
,您指定的是模型卡的核准狀態。如果您未指定狀態, SageMaker 模型卡會使用預設值 status
DRAFT
。如果您未指定 SageMaker 工作階段, SageMaker 模型卡會使用預設 SageMaker 工作階段。
您必須指定模型的名稱和模型套件的 Amazon Resource Name (ARN)。如需取得模型套件的 Amazon Resource Name (ARN) 的相關資訊,請參閱 檢視和更新模型版本的詳細資訊 (Boto3)。
您從模型套件建立的模型卡可能包含遺失或不正確的資訊。您可以將資訊新增至模型卡或編輯。如需有關管理您模型卡的更多相關資訊,請參閱模型卡動作。
SageMaker Model Registry 支援模型套件的版本控制。您可以版本化模型套件,並為每個版本建立一個模型卡。以前版本的模型卡中的資訊會轉移到以後續版本建立的模型卡。例如,您可以擁有模型套件的版本 1、版本 2 和版本 3。假設您已經為版本 1 建立了模型卡,但尚未為版本 2 建立模型卡。如果您為第 3 版建立模型卡,Amazon SageMaker 模型卡會自動將第 1 版的模型卡資訊傳遞到第 3 版的模型卡。
注意
您也可以為不使用版本控制的模型套件建立模型卡。但是,大多數機器學習的工作流程都涉及相同模型的多個版本,因此我們建議您進行以下操作:
-
為每個模型套件建立一個版本
-
為模型套件的每個版本建立模型卡