훈련 작업 분석을 위한 Debugger 사용자 지정 규칙 만들기 - 아마존 SageMaker

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

훈련 작업 분석을 위한 Debugger 사용자 지정 규칙 만들기

사용자는 Debugger Rule API와 자체 규칙 컨테이너를 구축하는 도구를 제공하는 오픈 소스 smdebug Python 라이브러리를 사용하여 훈련 작업을 모니터링하는 사용자 지정 규칙을 만들 수 있습니다.

Debugger 사용자 지정 규칙을 만들기 위한 필수 조건

Debugger 사용자 지정 규칙을 만들려면 다음과 같은 필수 조건이 필요합니다.

Debugger 클라이언트 라이브러리 smdebug를 사용하여 사용자 지정 규칙 Python 스크립트 만들기

smdebug Rule API는 나만의 사용자 지정 규칙을 설정할 수 있는 인터페이스를 제공합니다. 아래 Python 스크립트는 사용자 지정 규칙 CustomGradientRule을 구성하는 방법의 샘플입니다. 이 자습서의 사용자 지정 규칙은 그래디언트가 너무 커지지 않는지 감시하고 기본 임곗값을 10으로 설정합니다. 사용자 지정 규칙은 교육 작업을 시작할 때 평가자가 생성한 기본 평가판을 SageMaker 사용합니다.

from smdebug.rules.rule import Rule class CustomGradientRule(Rule): def __init__(self, base_trial, threshold=10.0): super().__init__(base_trial) self.threshold = float(threshold) def invoke_at_step(self, step): for tname in self.base_trial.tensor_names(collection="gradients"): t = self.base_trial.tensor(tname) abs_mean = t.reduction_value(step, "mean", abs=True) if abs_mean > self.threshold: return True return False

다음 섹션에서 사용자 지정 규칙 객체를 구성하여 동일한 Python 스크립트에 여러 개의 사용자 지정 규칙 클래스를 원하는 만큼 추가하고 이를 훈련 작업 평가판에 배포할 수 있습니다.

Debugger API를 사용하여 나만의 사용자 지정 규칙 실행하기

다음 코드 샘플은 Amazon SageMaker Python SDK를 사용하여 사용자 지정 규칙을 구성하는 방법을 보여줍니다. 이 예제에서는 이전 단계에서 생성한 사용자 지정 규칙 스크립트가 'path/to/my_custom_rule.py'에 있다고 가정합니다.

from sagemaker.debugger import Rule, CollectionConfig custom_rule = Rule.custom( name='MyCustomRule', image_uri='759209512951.dkr.ecr.us-west-2.amazonaws.com/sagemaker-debugger-rule-evaluator:latest', instance_type='ml.t3.medium', source='path/to/my_custom_rule.py', rule_to_invoke='CustomGradientRule', collections_to_save=[CollectionConfig("gradients")], rule_parameters={"threshold": "20.0"} )

아래 목록은 Debugger Rule.custom API 인수에 대해 설명합니다.

  • name(str): 원하는 사용자 지정 규칙 이름을 지정합니다.

  • image_uri(str): 사용자 지정 규칙을 이해하는 로직이 있는 컨테이너의 이미지입니다. 훈련 작업에서 저장한 지정된 텐서 모음을 소싱하고 평가합니다. 에서 오픈 소스 SageMaker 규칙 평가자 이미지 목록을 찾을 수 있습니다. 사용자 지정 규칙 URLs 평가자용 Amazon SageMaker 디버거 레지스트리

  • instance_type(str): 규칙 docker 컨테이너를 빌드하려면 인스턴스를 지정해야 합니다. 그러면 인스턴스가 훈련 컨테이너와 병렬로 스핀업합니다.

  • source(str): 사용자 지정 규칙 스크립트의 로컬 경로 또는 Amazon S3 URI입니다.

  • rule_to_invoke(str): 사용자 지정 규칙 스크립트의 특정 규칙 클래스 구현을 지정합니다. SageMaker 규칙 작업에서 한 번에 하나의 규칙만 평가할 수 있습니다.

  • collections_to_save(str): 규칙을 실행하기 위해 저장할 텐서 모음을 지정합니다.

  • rule_parameters(사전): 사전 형식으로 파라미터 입력을 받아들입니다. 사용자 지정 규칙 스크립트에서 구성한 매개 변수를 조정할 수 있습니다.

custom_rule개체를 설정한 후에는 이를 사용하여 모든 교육 작업에 대한 SageMaker 추정기를 작성할 수 있습니다. 훈련 스크립트에 entry_point를 지정하세요. 훈련 스크립트는 변경할 필요가 없습니다.

from sagemaker.tensorflow import TensorFlow estimator = TensorFlow( role=sagemaker.get_execution_role(), base_job_name='smdebug-custom-rule-demo-tf-keras', entry_point='path/to/your_training_script.py' train_instance_type='ml.p2.xlarge' ... # debugger-specific arguments below rules = [custom_rule] ) estimator.fit()

Debugger 사용자 지정 규칙 사용에 대한 추가 변형 및 고급 예제는 다음 예제 노트북을 참고하세요.