清理 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)