清理 Amazon SageMaker 实验资源 - Amazon SageMaker
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

清理 Amazon SageMaker 实验资源

为避免产生不必要的费用,请删除不再需要的 Amazon SageMaker 实验资源。无法通过 SageMaker 管理控制台或 Amazon SageMaker Studio 用户界面删除实验资源。本主题将介绍如何使用 SageMaker Python SDK、Boto3 和 Experiments SDK 清理这些资源。

使用 SageMaker Python SDK 进行清理(推荐)

使用 SageMaker Python SDK 进行清理

from sagemaker.experiments.experiment import Experiment exp = Experiment.load(experiment_name=experiment_name, sagemaker_session=sm_session) exp._delete_all(action="--force")

使用 Python SDK (Boto3) 进行清理

使用 Boto 3 进行清理

import boto3 sm = boto3.Session().client('sagemaker')

定义 cleanup_boto3

def cleanup_boto3(experiment_name): trials = sm.list_trials(ExperimentName=experiment_name)['TrialSummaries'] print('TrialNames:') for trial in trials: trial_name = trial['TrialName'] print(f"\n{trial_name}") components_in_trial = sm.list_trial_components(TrialName=trial_name) print('\tTrialComponentNames:') for component in components_in_trial['TrialComponentSummaries']: component_name = component['TrialComponentName'] print(f"\t{component_name}") sm.disassociate_trial_component(TrialComponentName=component_name, TrialName=trial_name) try: # comment out to keep trial components sm.delete_trial_component(TrialComponentName=component_name) except: # component is associated with another trial continue # to prevent throttling time.sleep(.5) sm.delete_trial(TrialName=trial_name) sm.delete_experiment(ExperimentName=experiment_name) print(f"\nExperiment {experiment_name} deleted")

调用 cleanup_boto3

# Use experiment name not display name experiment_name = "experiment-name" cleanup_boto3(experiment_name)

使用 Experiments SDK 进行清理

使用 Experiments SDK 进行清理

import sys !{sys.executable} -m pip install sagemaker-experiments
import time from smexperiments.experiment import Experiment from smexperiments.trial import Trial from smexperiments.trial_component import TrialComponent

定义 cleanup_sme_sdk

def cleanup_sme_sdk(experiment): for trial_summary in experiment.list_trials(): trial = Trial.load(trial_name=trial_summary.trial_name) for trial_component_summary in trial.list_trial_components(): tc = TrialComponent.load( trial_component_name=trial_component_summary.trial_component_name) trial.remove_trial_component(tc) try: # comment out to keep trial components tc.delete() except: # tc is associated with another trial continue # to prevent throttling time.sleep(.5) trial.delete() experiment_name = experiment.experiment_name experiment.delete() print(f"\nExperiment {experiment_name} deleted")

调用 cleanup_sme_sdk

experiment_to_cleanup = Experiment.load( # Use experiment name not display name experiment_name="experiment-name") cleanup_sme_sdk(experiment_to_cleanup)