Amazon SageMaker Experiments 및 Amazon SageMaker Pipelines PlatoBlockchain Data Intelligence를 사용하여 기계 학습 여정을 구성하십시오. 수직 검색. 일체 포함.

Amazon SageMaker Experiments 및 Amazon SageMaker Pipelines를 사용하여 기계 학습 여정 구성

머신 러닝(ML) 모델을 구축하는 프로세스는 성능이 좋고 배포할 준비가 된 후보 모델을 찾을 때까지 반복됩니다. 데이터 과학자는 해당 프로세스를 반복하면서 각 모델 버전이 구축된 방식과 수행 방식을 이해하기 위해 실험을 쉽게 추적할 수 있는 신뢰할 수 있는 방법이 필요합니다.

아마존 세이지 메이커 팀이 다양한 기능을 활용하여 ML 모델을 신속하게 준비, 구축, 교육, 배포 및 모니터링할 수 있습니다. Amazon SageMaker 파이프 라인 모델 빌드 활동을 통해 반복할 수 있는 반복 가능한 프로세스를 제공하고 다음과 통합됩니다. Amazon SageMaker 실험. 기본적으로 모든 SageMaker 파이프라인은 실험과 연결되며 해당 파이프라인의 모든 실행은 해당 실험에서 시도로 추적됩니다. 그러면 추가 단계 없이 반복이 자동으로 추적됩니다.

이 게시물에서 우리는 실험과 파이프라인에 내장된 기본 기능을 사용하여 실험을 추적하는 자동화된 프로세스를 갖게 된 동기에 대해 자세히 살펴봅니다.

실험을 체계적으로 유지하는 것이 왜 중요한가요?

잠시 뒤로 물러나서 기계 학습을 위해 실험을 구성하는 것이 왜 중요한지 이해해 보겠습니다. 데이터 과학자가 새로운 ML 문제에 접근할 때 데이터 가용성에서 모델 성능을 측정하는 방법에 이르기까지 다양한 질문에 답해야 합니다.

처음에는 프로세스가 불확실성으로 가득 차 있고 매우 반복적입니다. 결과적으로 이 실험 단계에서는 각각 고유한 입력(데이터 세트, 교육 스크립트 및 하이퍼파라미터)에서 생성되고 고유한 출력(모델 아티팩트 및 평가 메트릭)을 생성하는 여러 모델을 생성할 수 있습니다. 그러면 문제는 각 반복의 이러한 모든 입력과 출력을 추적하는 것입니다.

데이터 과학자는 일반적으로 데이터 변환, 알고리즘 및 하이퍼파라미터의 조합을 통해 모델의 성능이 가장 우수한 버전을 찾을 때까지 다양한 모델 버전을 훈련합니다. 이러한 각각의 고유한 조합은 단일 실험입니다. 해당 시도에서 사용된 입력, 알고리즘 및 하이퍼파라미터에 대한 추적 가능한 기록을 통해 데이터 과학 팀은 단계를 쉽게 재현할 수 있습니다.

실험을 추적하는 자동화된 프로세스를 갖추면 성능이 좋은 특정 모델 버전을 재현하고 배포하는 능력이 향상됩니다. 실험과 파이프라인의 기본 통합을 통해 파이프라인 실행 전반에 걸쳐 실험을 쉽게 자동으로 추적하고 관리할 수 있습니다.

SageMaker 실험의 이점

SageMaker Experiments는 데이터 과학자가 훈련 반복을 구성, 추적, 비교 및 ​​평가할 수 있도록 합니다.

먼저 실험으로 수행할 수 있는 작업에 대한 개요부터 시작하겠습니다.

  • 실험 구성 – 실험은 실험 세트를 포함하는 시련. 각 시도에는 시험 구성 요소. 각 시도 구성요소는 데이터세트, 알고리즘 및 매개변수의 조합입니다. 실험을 가설을 구성하기 위한 최상위 폴더로, 시도를 각 그룹 테스트 실행의 하위 폴더로, 실험 구성 요소를 테스트 실행의 각 인스턴스에 대한 파일로 상상할 수 있습니다.
  • 실험 추적 – 실험을 통해 데이터 과학자는 실험을 추적할 수 있습니다. 간단한 구성과 추적 SDK를 통해 SageMaker 작업을 평가판에 자동으로 할당할 수 있는 가능성을 제공합니다.
  • 실험 비교 및 ​​평가 – 실험의 통합 아마존 세이지 메이커 스튜디오 데이터 시각화를 생성하고 다양한 시도를 쉽게 비교할 수 있습니다. 또한 Python SDK를 통해 평가판 데이터에 액세스하여 선호하는 플로팅 라이브러리를 사용하여 고유한 시각화를 생성할 수 있습니다.

Experiments API 및 SDK에 대해 자세히 알아보려면 다음 문서를 권장합니다. 실험 만들기Amazon SageMaker 실험 Python SDK.

더 깊이 들어가고 싶다면 다음을 살펴보는 것이 좋습니다. amazon-sagemaker-examples/sagemaker-experiments GitHub 리포지토리 추가 예를 들어.

파이프라인과 실험 간의 통합

파이프라인의 일부인 모델 구축 파이프라인은 ML용으로 특별히 제작되었으며 다른 SageMaker 기능과의 기본 통합과 SageMaker 외부에서 실행되는 단계로 파이프라인을 확장할 수 있는 유연성을 포함하는 파이프라인 도구를 사용하여 모델 구축 작업을 오케스트레이션할 수 있습니다. . 각 단계는 파이프라인이 수행하는 작업을 정의합니다. 단계 간의 종속성은 Pipelines Python SDK를 사용하여 빌드된 DAG(직접 비순환 그래프)에 의해 정의됩니다. 동일한 SDK를 통해 프로그래밍 방식으로 SageMaker 파이프라인을 구축할 수 있습니다. 파이프라인이 배포된 후 선택적으로 Studio 내에서 해당 워크플로를 시각화할 수 있습니다.

파이프라인은 모든 실행에 대한 실험 및 시도를 자동으로 생성하여 실험과 자동으로 통합됩니다. 파이프라인은 이러한 입력 중 하나 또는 둘 모두가 지정되지 않는 한 단계를 실행하기 전에 파이프라인의 모든 실행에 대한 실험 및 시도를 자동으로 생성합니다. 파이프라인의 SageMaker 작업을 실행하는 동안 파이프라인은 시도를 실험과 연결하고 작업에 의해 생성된 모든 시도 구성 요소를 시도에 연결합니다. 자신의 실험이나 시도를 프로그래밍 방식으로 지정하면 실험을 구성하는 방법을 미세 조정할 수 있습니다.

이 예에서 제시하는 워크플로는 다음과 같은 일련의 단계로 구성됩니다. 입력 데이터 세트를 학습, 테스트 및 검증 데이터 세트로 분할하는 전처리 단계; 하이퍼파라미터를 조정하고 학습 작업을 시작하여 다음을 사용하여 모델을 학습시키는 조정 단계 XGBoost 내장 알고리즘; 그리고 마지막으로 가장 잘 훈련된 모델 아티팩트에서 SageMaker 모델을 생성하는 모델 단계입니다. 파이프라인은 또한 기본적으로 지원되는 여러 가지를 제공합니다. 단계 유형 이 게시물에서 논의된 것 외에. 또한 파이프라인 워크플로를 추적하고 메트릭 및 비교 차트를 생성하는 방법을 보여줍니다. 또한 생성된 새 시도를 파이프라인이 정의되기 전에 생성되었을 수 있는 기존 실험에 연결하는 방법을 보여줍니다.

SageMaker 파이프라인 코드

에서 노트북을 검토하고 다운로드할 수 있습니다. GitHub 저장소 이 게시물과 관련이 있습니다. 더 잘 이해하기 위해 파이프라인 관련 코드를 살펴봅니다.

파이프라인을 사용하면 런타임에 매개변수를 전달할 수 있습니다. 여기에서 사전 설정된 기본값을 사용하여 런타임 시 처리 및 교육 인스턴스 유형과 개수를 정의합니다.

base_job_prefix = "pipeline-experiment-sample"
model_package_group_name = "pipeline-experiment-model-package"

processing_instance_count = ParameterInteger(
  name="ProcessingInstanceCount", default_value=1
)

training_instance_count = ParameterInteger(
  name="TrainingInstanceCount", default_value=1
)

processing_instance_type = ParameterString(
  name="ProcessingInstanceType", default_value="ml.m5.xlarge"
)
training_instance_type = ParameterString(
  name="TrainingInstanceType", default_value="ml.m5.xlarge"
)

다음으로 입력 데이터 세트를 다운로드하고 학습, 테스트 및 유효성 검사 부분으로 분할하는 처리 스크립트를 설정합니다. 우리는 사용 SKLearnProcessor 이 전처리 단계를 실행하기 위한 것입니다. 이를 위해 처리 작업을 실행하는 데 필요한 인스턴스 유형과 개수로 프로세서 개체를 정의합니다.

파이프라인을 사용하면 다음과 같은 실행별 변수를 사용하여 프로그래밍 방식으로 데이터 버전 관리를 달성할 수 있습니다. ExecutionVariables.PIPELINE_EXECUTION_ID, 이는 파이프라인 실행의 고유 ID입니다. 예를 들어 출력 데이터 세트를 저장하기 위한 고유 키를 생성할 수 있습니다. 아마존 단순 스토리지 서비스 (Amazon S3) 특정 파이프라인 실행에 연결합니다. 전체 변수 목록은 다음을 참조하십시오. 실행 변수.

framework_version = "0.23-1"

sklearn_processor = SKLearnProcessor(
    framework_version=framework_version,
    instance_type=processing_instance_type,
    instance_count=processing_instance_count,
    base_job_name="sklearn-ca-housing",
    role=role,
)

process_step = ProcessingStep(
    name="ca-housing-preprocessing",
    processor=sklearn_processor,
    outputs=[
        ProcessingOutput(
            output_name="train",
            source="/opt/ml/processing/train",
            destination=Join(
                on="/",
                values=[
                    "s3://{}".format(bucket),
                    prefix,
                    ExecutionVariables.PIPELINE_EXECUTION_ID,
                    "train",
                ],
            ),
        ),
        ProcessingOutput(
            output_name="validation",
            source="/opt/ml/processing/validation",
            destination=Join(
                on="/",
                values=[
                    "s3://{}".format(bucket),
                    prefix,
                    ExecutionVariables.PIPELINE_EXECUTION_ID,
                    "validation",
                ],
            )
        ),
        ProcessingOutput(
            output_name="test",
            source="/opt/ml/processing/test",
            destination=Join(
                on="/",
                values=[
                    "s3://{}".format(bucket),
                    prefix,
                    ExecutionVariables.PIPELINE_EXECUTION_ID,
                    "test",
                ],
            )
        ),
    ],
    code="california-housing-preprocessing.py",
)

그런 다음 XGBoost 모델을 훈련하기 위한 추정기 객체를 생성합니다. XGBoost와 함께 일반적으로 사용되는 몇 가지 정적 하이퍼파라미터를 설정합니다.

model_path = f"s3://{default_bucket}/{base_job_prefix}/ca-housing-experiment-pipeline"

image_uri = sagemaker.image_uris.retrieve(
    framework="xgboost",
    region=region,
    version="1.2-2",
    py_version="py3",
    instance_type=training_instance_type,
)

xgb_train = Estimator(
    image_uri=image_uri,
    instance_type=training_instance_type,
    instance_count=training_instance_count,
    output_path=model_path,
    base_job_name=f"{base_job_prefix}/ca-housing-train",
    sagemaker_session=sagemaker_session,
    role=role,
)

xgb_train.set_hyperparameters(
    eval_metric="rmse",
    objective="reg:squarederror",  # Define the object metric for the training job
    num_round=50,
    max_depth=5,
    eta=0.2,
    gamma=4,
    min_child_weight=6,
    subsample=0.7
)

우리는 다음을 사용하여 생성한 모델의 초매개변수 조정을 수행합니다. ContinuousParameter 범위 lambda. 목표 메트릭으로 하나의 메트릭을 선택하면 이 특정 메트릭을 기반으로 훈련 작업을 평가할 튜너(초매개변수 조정 작업을 실행하는 인스턴스)에 알립니다. 튜너는 이 객관적인 메트릭에 대한 최상의 값을 기반으로 최상의 조합을 반환합니다. 즉, 최상의 RMSE(제곱 평균 제곱근 오차)를 최소화하는 최상의 조합을 의미합니다.

objective_metric_name = "validation:rmse"

hyperparameter_ranges = {
    "lambda": ContinuousParameter(0.01, 10, scaling_type="Logarithmic")
}

tuner = HyperparameterTuner(estimator,
                            objective_metric_name,
                            hyperparameter_ranges,
                            objective_type=objective_type,
                            strategy="Bayesian",
                            max_jobs=10,
                            max_parallel_jobs=3)

tune_step = TuningStep(
    name="HPTuning",
    tuner=tuner_log,
    inputs={
        "train": TrainingInput(
            s3_data=process_step.properties.ProcessingOutputConfig.Outputs[
                "train"
            ].S3Output.S3Uri,
            content_type="text/csv",
        ),
        "validation": TrainingInput(
            s3_data=process_step.properties.ProcessingOutputConfig.Outputs[
                "validation"
            ].S3Output.S3Uri,
            content_type="text/csv",
        ),
    } 
)

조정 단계는 테스트된 매개변수 범위 중에서 최상의 모델을 결정하기 위해 여러 시도를 실행합니다. 방법으로 get_top_model_s3_uri, 우리는 모델 아티팩트 S50 URI의 상위 3개 성능 버전의 순위를 매기고 최고의 성능 버전만 추출합니다(우리는 k=0 최선) SageMaker 모델을 생성합니다.

model_bucket_key = f"{default_bucket}/{base_job_prefix}/ca-housing-experiment-pipeline"
model_candidate = Model(
    image_uri=image_uri,
    model_data=tune_step.get_top_model_s3_uri(top_k=0, s3_bucket=model_bucket_key),
    sagemaker_session=sagemaker_session,
    role=role,
    predictor_cls=XGBoostPredictor,
)

create_model_step = CreateModelStep(
    name="CreateTopModel",
    model=model_candidate,
    inputs=sagemaker.inputs.CreateModelInput(instance_type="ml.m4.large"),
)

파이프라인이 실행되면 파이프라인 단계에서 생성된 각 하이퍼파라미터 조정 작업 및 각 SageMaker 작업에 대한 평가판 구성 요소가 생성됩니다.

다음을 생성하여 실험과 파이프라인의 통합을 추가로 구성할 수 있습니다. PipelineExperimentConfig 개체를 가져와 파이프라인 개체에 전달합니다. 두 매개변수는 생성될 실험의 이름과 파이프라인의 전체 실행을 참조할 시도를 정의합니다.

파이프라인 실행을 기존 실험에 연결하려는 경우 이름을 전달하면 파이프라인이 새 시도를 연결합니다. 다음을 설정하여 파이프라인 실행에 대한 실험 및 시도 생성을 방지할 수 있습니다. pipeline_experiment_configNone.

#Pipeline experiment config
ca_housing_experiment_config = PipelineExperimentConfig(
    experiment_name,
    Join(
        on="-",
        values=[
            "pipeline-execution",
            ExecutionVariables.PIPELINE_EXECUTION_ID
        ],
    )
)

인스턴스 유형과 개수를 매개변수로 전달하고 이전 단계를 다음과 같이 순서대로 연결합니다. 파이프라인 워크플로는 단계의 출력이 다른 단계의 입력이 되는 방식으로 암시적으로 정의됩니다.

pipeline_name = f"CAHousingExperimentsPipeline"

pipeline = Pipeline(
    name=pipeline_name,
    pipeline_experiment_config=ca_housing_experiment_config,
    parameters=[
        processing_instance_count,
        processing_instance_type,
        training_instance_count,
        training_instance_type
    ],
    steps=[process_step,tune_step,create_model_step],
)

이제 본격적인 파이프라인이 생성되어 사용할 준비가 되었습니다. 파이프라인에 실행 역할을 추가하고 시작합니다. 여기에서 SageMaker Studio Pipelines 콘솔로 이동하여 모든 단계를 시각적으로 추적할 수 있습니다. 콘솔에서 연결된 로그에 액세스하여 파이프라인을 디버그할 수도 있습니다.

pipeline.upsert(role_arn=sagemaker.get_execution_role())
execution = pipeline.start()

이전 스크린샷은 성공적으로 실행된 파이프라인을 녹색으로 표시합니다. 다음 코드를 사용하여 파이프라인 실행에서 한 시도의 메트릭을 얻습니다.

# SM Pipeline injects the Execution ID into trial component names
execution_id = execution.describe()['PipelineExecutionArn'].split('/')[-1]
source_arn_filter = Filter(
    name="TrialComponentName", operator=Operator.CONTAINS, value=execution_id
)

source_type_filter = Filter(
    name="Source.SourceType", operator=Operator.EQUALS, value="SageMakerTrainingJob"
)

search_expression = SearchExpression(
    filters=[source_arn_filter, source_type_filter]
)

trial_component_analytics = ExperimentAnalytics(
    sagemaker_session=sagemaker_session,
    experiment_name=experiment_name,
    search_expression=search_expression.to_boto()
)

analytic_table = trial_component_analytics.dataframe()
analytic_table.head()

각 시험 구성 요소에 대한 측정항목 비교

Studio에서 또는 다른 Python 플로팅 라이브러리를 통해 하이퍼파라미터 조정 결과를 플로팅할 수 있습니다. 이를 수행하는 두 가지 방법을 모두 보여줍니다.

Studio의 교육 및 평가 측정항목 살펴보기

Studio는 대화형 플롯을 생성할 수 있는 대화형 사용자 인터페이스를 제공합니다. 단계는 다음과 같습니다.

  1. 왼쪽 메뉴에서 실험 및 시도 인사말 SageMaker 리소스 왼쪽 사이드 바의 아이콘.
  2. 실험을 선택하여 엽니다.
  3. 관심 있는 시도를 선택(오른쪽 클릭)합니다.
  4. 왼쪽 메뉴에서 평가판 구성 요소 목록에서 열기.
  5. PR 기사 변화 훈련 작업을 나타내는 시험 구성 요소를 선택합니다.
  6. 왼쪽 메뉴에서 차트 추가.
  7. 왼쪽 메뉴에서 새 차트 분석하려는 수집 된 지표를 플로팅하도록 사용자 지정합니다. 사용 사례의 경우 다음을 선택합니다.
    1. 럭셔리 데이터 유형고르다 요약 통계.
    2. 럭셔리 차트 유형고르다 산포도.
    3. 럭셔리 X축선택한다. lambda.
    4. 럭셔리 Y축선택한다. validation:rmse_last.

창 하단에 '8'이라는 레이블이 붙은 새 차트가 나타납니다.

를 눌러 더 많거나 더 적은 교육 작업을 포함할 수 있습니다. 변화 더 인터랙티브한 경험을 위해 눈 아이콘을 선택합니다.

Amazon SageMaker Experiments 및 Amazon SageMaker Pipelines PlatoBlockchain Data Intelligence를 사용하여 기계 학습 여정을 구성하십시오. 수직 검색. 일체 포함.

SageMaker 실험을 통한 분석

파이프라인 실행이 완료되면 훈련 중에 수집된 메트릭 측면에서 모델의 다양한 변형이 어떻게 비교되는지 빠르게 시각화할 수 있습니다. 이전에는 모든 평가판 측정항목을 판다 DataFrame 사용 ExperimentAnalytics. Matplotlib 라이브러리를 사용하여 Studio에서 얻은 플롯을 재현할 수 있습니다.

analytic_table.plot.scatter("lambda", "validation:rmse - Last", grid=True)

결론

SageMaker Pipelines와 SageMaker Experiments 간의 기본 통합을 통해 데이터 과학자는 모델 개발 활동 중에 실험을 자동으로 구성, 추적 및 시각화할 수 있습니다. 실험을 만들어 다음과 같은 모든 모델 개발 작업을 구성할 수 있습니다.

  • 고객 이탈을 예측하기 위한 실험 생성과 같이 해결하려는 비즈니스 사용 사례
  • 예를 들어 마케팅 분석과 관련하여 데이터 과학 팀이 소유한 실험
  • 특정 데이터 과학 및 ML 프로젝트

이 게시물에서는 파이프라인을 자세히 살펴보고 실험과 함께 파이프라인을 사용하여 완전히 자동화된 종단 간 워크플로를 구성하는 방법을 보여줍니다.

다음 단계로 이 세 가지 SageMaker 기능(Studio, Experiments 및 Pipelines)을 다음 ML 프로젝트에 사용할 수 있습니다.

추천 읽을거리


저자 소개

파올로 디 프란체스코파올로 디 프란체스코 AWS의 솔루션 아키텍트입니다. 그는 통신 및 소프트웨어 엔지니어링 경험이 있습니다. 그는 기계 학습에 열정적이며 현재 특히 MLOps에 대한 토론에서 고객이 AWS에서 목표를 달성할 수 있도록 자신의 경험을 활용하는 데 집중하고 있습니다. 일 외에는 축구와 독서를 즐깁니다.

Amazon SageMaker Experiments 및 Amazon SageMaker Pipelines PlatoBlockchain Data Intelligence를 사용하여 기계 학습 여정을 구성하십시오. 수직 검색. 일체 포함.마리오 부르고인 AWS의 수석 파트너 솔루션 아키텍트이자 AI/ML 전문가이자 MLOps의 글로벌 기술 책임자입니다. 그는 클라우드에서 AI 솔루션을 배포하는 기업 고객 및 파트너와 협력합니다. 그는 빅 데이터를 위한 최초의 상용 기계 학습 시스템 중 하나를 만드는 것을 시작으로 스타트업과 기업에서 기계 학습과 AI를 30년 이상 수행한 경험이 있습니다. Mario는 XNUMX명의 벨기에 Tervurens와 놀고, 가족을 위해 저녁 식사를 요리하고, 수학과 우주론에 대해 배우는 자유 시간을 보냅니다.

Amazon SageMaker Experiments 및 Amazon SageMaker Pipelines PlatoBlockchain Data Intelligence를 사용하여 기계 학습 여정을 구성하십시오. 수직 검색. 일체 포함.가나파티 크리슈나무르티 AWS의 선임 ML 솔루션 아키텍트입니다. Ganapathi는 스타트업 및 기업 고객이 클라우드 애플리케이션을 대규모로 설계 및 배포할 수 있도록 규범적 지침을 제공합니다. 그는 기계 학습을 전문으로 하며 고객이 비즈니스 결과를 위해 AI/ML을 활용하도록 돕는 데 중점을 두고 있습니다. 일하지 않을 때는 야외 활동과 음악 감상을 즐깁니다.

Amazon SageMaker Experiments 및 Amazon SageMaker Pipelines PlatoBlockchain Data Intelligence를 사용하여 기계 학습 여정을 구성하십시오. 수직 검색. 일체 포함.발레리 순타키스 게임 산업 및 AI 솔루션을 배포하는 파트너와 함께 일하는 AWS용 솔루션 아키텍트입니다. 그녀는 Computer Vision을 중심으로 경력을 쌓는 것을 목표로 하고 있습니다. 여가 시간에 Valerie는 여행을 하고, 새로운 맛집을 찾고, 집 인테리어를 바꾸는 데 사용합니다.

타임 스탬프 :

더보기 AWS 기계 학습