API를 사용하여 Amazon SageMaker 노트북 작업을 예약하고 다단계 노트북 워크플로 관리 | 아마존 웹 서비스

API를 사용하여 Amazon SageMaker 노트북 작업을 예약하고 다단계 노트북 워크플로 관리 | 아마존 웹 서비스

소스 노드 : 2985648

아마존 세이지 메이커 스튜디오 데이터 과학자가 기계 학습(ML) 모델을 대화형으로 구축, 학습 및 배포할 수 있는 완전 관리형 솔루션을 제공합니다. Amazon SageMaker 노트북 작업 데이터 과학자가 SageMaker Studio에서 몇 번의 클릭만으로 필요에 따라 또는 일정에 따라 노트북을 실행할 수 있습니다. 이번 출시를 통해 다음에서 제공하는 API를 사용하여 프로그래밍 방식으로 노트북을 작업으로 실행할 수 있습니다. Amazon SageMaker 파이프 라인, ML 워크플로 조정 기능 아마존 세이지 메이커. 또한 이러한 API를 사용하면 여러 종속 노트북이 포함된 다단계 ML 워크플로를 생성할 수 있습니다.

SageMaker 파이프라인은 직접적인 SageMaker 통합을 활용하는 ML 파이프라인을 구축하기 위한 기본 워크플로 조정 도구입니다. 각 SageMaker 파이프라인은 다음으로 구성됩니다. 단계, 이는 처리, 훈련 또는 데이터 처리와 같은 개별 작업에 해당합니다. 아마존 EMR. 이제 SageMaker 노트북 작업을 SageMaker 파이프라인에 내장된 단계 유형으로 사용할 수 있습니다. 이 노트북 작업 단계를 사용하면 몇 줄의 코드만으로 노트북을 작업으로 쉽게 실행할 수 있습니다. Amazon SageMaker Python SDK. 또한 여러 종속 노트북을 함께 연결하여 DAG(방향성 비순환 그래프) 형식의 워크플로를 만들 수 있습니다. 그런 다음 이러한 노트북 작업 또는 DAG를 실행하고 SageMaker Studio를 사용하여 이를 관리 및 시각화할 수 있습니다.

데이터 과학자는 현재 SageMaker Studio를 사용하여 Jupyter 노트북을 대화형으로 개발한 다음 SageMaker 노트북 작업을 사용하여 이러한 노트북을 예약된 작업으로 실행합니다. 이러한 작업은 데이터 작업자가 코드를 Python 모듈로 리팩터링할 필요 없이 즉시 실행되거나 반복 일정에 따라 실행될 수 있습니다. 이를 수행하는 몇 가지 일반적인 사용 사례는 다음과 같습니다.

  • 백그라운드에서 장기 실행 노트북 실행
  • 정기적으로 모델 추론을 실행하여 보고서 생성
  • 소규모 샘플 데이터세트 준비부터 페타바이트 규모의 빅데이터 작업까지 확장
  • 일부 케이던스에서 모델 재교육 및 배포
  • 모델 품질 또는 데이터 드리프트 모니터링을 위한 작업 예약
  • 더 나은 모델을 위한 매개변수 공간 탐색

이 기능을 사용하면 데이터 작업자가 독립형 노트북을 쉽게 자동화할 수 있지만 ML 워크플로는 각각 복잡한 종속성을 지닌 특정 작업을 수행하는 여러 노트북으로 구성되는 경우가 많습니다. 예를 들어, 모델 데이터 드리프트를 모니터링하는 노트북에는 새로운 데이터의 추출, 변환, 로드(ETL) 및 처리를 허용하는 사전 단계와 중요한 드리프트가 발견될 경우 모델 새로 고침 및 교육의 사후 단계가 있어야 합니다. . 또한 데이터 과학자는 반복 일정에 따라 이 전체 워크플로를 트리거하여 새 데이터를 기반으로 모델을 업데이트할 수 있습니다. 노트북을 쉽게 자동화하고 복잡한 워크플로를 생성할 수 있도록 이제 SageMaker 노트북 작업을 SageMaker 파이프라인의 한 단계로 사용할 수 있습니다. 이 게시물에서는 몇 줄의 코드로 다음 사용 사례를 해결하는 방법을 보여줍니다.

  • 즉시 또는 반복 일정에 따라 독립형 노트북을 프로그래밍 방식으로 실행
  • SageMaker Studio UI를 통해 관리할 수 있는 지속적인 통합 및 지속적인 전달(CI/CD) 목적을 위해 노트북의 다단계 워크플로를 DAG로 생성합니다.

솔루션 개요

다음 다이어그램은 솔루션 아키텍처를 보여줍니다. SageMaker Python SDK를 사용하여 단일 노트북 작업 또는 워크플로를 실행할 수 있습니다. 이 기능은 노트북을 실행하기 위한 SageMaker 훈련 작업을 생성합니다.

다음 섹션에서는 샘플 ML 사용 사례를 살펴보고 노트북 작업의 워크플로를 생성하고, 다양한 노트북 단계 간에 매개변수를 전달하고, 워크플로를 예약하고, SageMaker Studio를 통해 모니터링하는 단계를 보여줍니다.

이 예의 ML 문제에서는 텍스트 분류 작업의 일종인 감정 분석 모델을 구축하고 있습니다. 감정 분석의 가장 일반적인 응용 프로그램에는 소셜 미디어 모니터링, 고객 지원 관리 및 고객 피드백 분석이 포함됩니다. 이 예에서 사용되는 데이터 세트는 SST2(Stanford Sentiment Treebank) 데이터 세트입니다. 이 데이터 세트는 리뷰의 긍정적이거나 부정적인 감정을 나타내는 정수(0 또는 1)와 함께 영화 리뷰로 구성됩니다.

다음은 data.csv SST2 데이터 세트에 해당하는 파일이며 처음 두 열에 값을 표시합니다. 파일에는 헤더가 없어야 합니다.

칼럼 1 칼럼 2
0 부모 단위로부터 새로운 분비물 숨기기
0 재치도 없고 노력한 개그만 있을 뿐
1 캐릭터를 사랑하고 인간 본성에 대해 다소 아름다운 것을 전달하는 작품입니다.
0 전체적으로 동일하게 유지되어 완전히 만족합니다.
0 영화제작자들이 만들어낼 수 있는 최악의 괴상한 복수 진부한 표현에 대해
0 그런 피상적인 대우를 받기에는 너무 비극적이야
1 패트리어트 게임과 같은 헐리우드 블록버스터 감독이 여전히 감동적인 작은 영화를 만들 수 있음을 보여줍니다 .

이 ML 예시에서는 다음과 같은 여러 작업을 수행해야 합니다.

  1. 기능 엔지니어링을 수행하여 모델이 이해할 수 있는 형식으로 이 데이터 세트를 준비합니다.
  2. 기능 이후 엔지니어링에서는 Transformer를 사용하는 교육 단계를 실행합니다.
  3. 새로 들어오는 리뷰에 대한 감정을 예측하는 데 도움이 되도록 미세 조정된 모델로 일괄 추론을 설정하세요.
  4. 모델 가중치를 재교육해야 할 수 있는 품질 변동이 있는지 새 데이터를 정기적으로 모니터링할 수 있도록 데이터 모니터링 단계를 설정합니다.

SageMaker 파이프라인의 한 단계로 노트북 작업을 시작함으로써 우리는 세 가지 개별 단계로 구성된 이 워크플로를 조율할 수 있습니다. 워크플로의 각 단계는 서로 다른 노트북에서 개발된 후 독립적인 노트북 작업 단계로 변환되고 파이프라인으로 연결됩니다.

  • 전처리 – 공개 SST2 데이터세트를 다음에서 다운로드하세요. 아마존 단순 스토리지 서비스 (Amazon S3) 2단계에서 실행할 노트북용 CSV 파일을 생성합니다. SST2 데이터 세트는 두 개의 레이블(0과 1)과 분류할 텍스트 열이 있는 텍스트 분류 데이터 세트입니다.
  • 트레이닝 – 모양이 지정된 CSV 파일을 가져와서 Transformers 라이브러리를 활용하여 텍스트 분류를 위해 BERT로 미세 조정을 실행합니다. 우리는 이 단계의 일부로 미세 조정 및 일괄 추론 단계에 대한 종속성인 테스트 데이터 준비 노트북을 사용합니다. 미세 조정이 완료되면 이 노트북은 run Magic을 사용하여 실행되고 미세 조정된 모델로 샘플 추론을 위한 테스트 데이터세트를 준비합니다.
  • 변환 및 모니터링 – 일괄 추론을 수행하고 모델 모니터링을 통해 데이터 품질을 설정하여 기본 데이터 세트 제안을 얻습니다.

노트북 실행

이 솔루션의 샘플 코드는 다음에서 사용할 수 있습니다. GitHub의.

SageMaker 노트북 작업 단계를 생성하는 것은 다른 SageMaker 파이프라인 단계를 생성하는 것과 유사합니다. 이 노트북 예에서는 SageMaker Python SDK를 사용하여 워크플로를 조정합니다. SageMaker 파이프라인에서 노트북 단계를 생성하려면 다음 매개변수를 정의할 수 있습니다.

  • 입력노트 – 이 노트북 단계에서 조정할 노트북의 이름입니다. 여기에서 입력 노트북에 대한 로컬 경로를 전달할 수 있습니다. 선택적으로 이 노트북에 실행 중인 다른 노트북이 있는 경우 이를 전달할 수 있습니다. AdditionalDependencies 노트북 작업 단계의 매개변수입니다.
  • 이미지 URI – 노트북 작업 단계 뒤에 있는 Docker 이미지. 이는 SageMaker가 이미 제공하는 사전 정의된 이미지이거나 사용자가 정의하고 푸시한 사용자 지정 이미지일 수 있습니다. Amazon Elastic Container Registry (아마존 ECR). 지원되는 이미지는 이 게시물 끝에 있는 고려 사항 섹션을 참조하세요.
  • 커널 이름 – SageMaker Studio에서 사용 중인 커널의 이름입니다. 이 커널 사양은 귀하가 제공한 이미지에 등록되어 있습니다.
  • 인스턴스 유형(선택 사항) - 아마존 엘라스틱 컴퓨트 클라우드 (Amazon EC2) 정의하고 실행할 노트북 작업 뒤에 있는 인스턴스 유형입니다.
  • 매개변수(선택사항) – 노트북에서 액세스할 수 있도록 전달할 수 있는 매개변수입니다. 이는 키-값 쌍으로 정의될 수 있습니다. 또한 이러한 매개변수는 다양한 노트북 작업 실행 또는 파이프라인 실행 간에 수정될 수 있습니다.

우리의 예에는 총 5개의 노트북이 있습니다.

  • nb-작업-파이프라인.ipynb – 이는 파이프라인과 워크플로를 정의하는 기본 노트북입니다.
  • 전처리.ipynb – 이 노트북은 워크플로의 첫 번째 단계이며 공개 AWS 데이터 세트를 가져와서 CSV 파일을 생성하는 코드가 포함되어 있습니다.
  • training.ipynb – 이 노트북은 워크플로의 두 번째 단계이며 이전 단계의 CSV를 가져와 로컬 교육 및 미세 조정을 수행하는 코드가 포함되어 있습니다. 이 단계는 또한 prepare-test-set.ipynb 미세 조정된 모델을 사용하여 샘플 추론을 위한 테스트 데이터 세트를 풀다운하는 노트북입니다.
  • 준비-테스트-set.ipynb – 이 노트북은 교육 노트북이 두 번째 파이프라인 단계에서 사용하고 미세 조정된 모델을 통한 샘플 추론에 사용할 테스트 데이터 세트를 생성합니다.
  • 변환-monitor.ipynb – 이 노트북은 워크플로의 세 번째 단계로, 기본 BERT 모델을 가져와 SageMaker 배치 변환 작업을 실행하는 동시에 모델 모니터링을 통해 데이터 품질을 설정합니다.

다음으로 메인 노트북을 살펴보겠습니다. nb-job-pipeline.ipynb, 모든 하위 노트북을 파이프라인으로 결합하고 엔드투엔드 워크플로를 실행합니다. 다음 예제에서는 노트북을 한 번만 실행하지만 노트북을 반복적으로 실행하도록 파이프라인을 예약할 수도 있습니다. 인용하다 SageMaker 설명서 자세한 지침은

첫 번째 노트북 작업 단계에서는 기본 S3 버킷과 함께 매개변수를 전달합니다. 이 버킷을 사용하여 다른 파이프라인 단계에 사용할 수 있는 아티팩트를 덤프할 수 있습니다. 첫 번째 노트북의 경우 (preprocess.ipynb), AWS 공개 SST2 열차 데이터세트를 가져와서 이 S3 버킷에 푸시할 훈련용 CSV 파일을 생성합니다. 다음 코드를 참조하세요.

# Parameters
print(default_s3_bucket)

!aws s3 cp s3://sagemaker-sample-files/datasets/text/SST2/sst2.train sst2.train

# will read just the first 500 lines for quicker execution
with open('sst2.train', 'r') as f:
    lines = f.readlines()[:500] 

data = []
for line in lines:
    label, text = line.strip().split(' ', 1)
    data.append((int(label), text))

df = pd.DataFrame(data, columns=['label', 'text'])
df.to_csv("train.csv", index=False) #create csv file with smaller dataset
!aws s3 cp "train.csv" {default_s3_bucket}

그런 다음 이 노트북을 NotebookJobStep 기본 노트북에 다음 코드를 사용하세요.

# provide S3 Bucket to dump artifacts in
nb_job_params = {"default_s3_bucket": notebook_artifacts}

preprocess_nb_step = NotebookJobStep(
name=preprocess_step_name,
description=preprocess_description,
notebook_job_name=preprocess_job_name,
image_uri=image_uri,
kernel_name=kernel_name,
display_name=display_name,
role=role,
input_notebook=preprocess_notebook,
instance_type="ml.m5.4xlarge",
parameters=nb_job_params,
)

이제 샘플 CSV 파일이 있으므로 교육 노트북에서 모델 교육을 시작할 수 있습니다. 우리의 교육 노트북은 S3 버킷과 동일한 매개 변수를 사용하고 해당 위치에서 교육 데이터 세트를 가져옵니다. 그런 다음 다음 코드 조각과 함께 Transformers 트레이너 객체를 사용하여 미세 조정을 수행합니다.

from transformers import TrainingArguments, Trainer
training_args = TrainingArguments(output_dir="test_trainer", evaluation_strategy="epoch")

trainer = Trainer(
    model=model,
    args=training_args,
    train_dataset=small_train_dataset,
    eval_dataset=small_eval_dataset,
    compute_metrics=compute_metrics,
)

trainer.train()

미세 조정 후에는 배치 추론을 실행하여 모델이 어떻게 작동하는지 확인하려고 합니다. 이는 별도의 노트북(prepare-test-set.ipynb) 훈련된 모델 사용에 대한 추론을 수행하기 위해 테스트 데이터 세트를 생성하는 동일한 로컬 경로에 있습니다. 다음 매직 셀을 사용하여 교육 노트북에서 추가 노트북을 실행할 수 있습니다.

%run 'prepare-test-set.ipynb'

우리는 이 추가 노트북 종속성을 정의합니다. AdditionalDependencies 두 번째 노트북 작업 단계의 매개변수:

train_nb_step = NotebookJobStep(
name=training_step_name,
description=training_description,
notebook_job_name=training_job_name,
input_notebook=training_notebook,
additional_dependencies=[test_data_prep_notebook],
image_uri=image_uri,
kernel_name=kernel_name,
display_name=display_name,
instance_type="ml.m5.12xlarge",
role=role,
parameters=nb_job_params,
)

또한 교육용 노트북 작업 단계(2단계)가 사전 처리 노트북 작업 단계(1단계)에 종속되도록 지정해야 합니다. add_depends_on 다음과 같이 API 호출:

train_nb_step.add_depends_on([preprocess_nb_step])

마지막 단계에서는 BERT 모델이 SageMaker 배치 변환을 실행하는 동시에 SageMaker 모델 모니터를 통해 데이터 캡처 및 품질을 설정합니다. 이는 내장된 기능을 사용하는 것과 다릅니다. 변환 or 포착 파이프라인을 통한 단계. 이 단계의 노트북은 동일한 API를 실행하지만 노트북 작업 단계로 추적됩니다. 이 단계는 이전에 정의한 교육 작업 단계에 따라 달라지므로 종속_on 플래그를 사용하여 이를 캡처하기도 합니다.

batch_monitor_step = NotebookJobStep(
name=batch_monitor_step_name,
description=batch_monitor_description,
notebook_job_name=batch_monitor_job_name,
input_notebook=batch_monitor_notebook,
image_uri=image_uri,
kernel_name=kernel_name,
display_name=display_name,
instance_type="ml.m5.12xlarge",
role=role,
parameters=nb_job_params,
)
batch_monitor_step.add_depends_on([train_nb_step])

워크플로우의 다양한 단계가 정의된 후에는 엔드투엔드 파이프라인을 생성하고 실행할 수 있습니다.

# create pipeline
pipeline = Pipeline(
name=pipeline_name,
steps=[preprocess_nb_step, train_nb_step, batch_monitor_step],
)

# execute pipeline
pipeline.create(session.get_execution_role())
execution = pipeline.start(parameters={})
execution.wait(delay=30, max_attempts=60)
execution_steps = execution.list_steps()
print(execution_steps)

파이프라인 실행 모니터링

다음 스크린샷에 표시된 것처럼 SageMaker 파이프라인 DAG를 통해 노트북 단계 실행을 추적하고 모니터링할 수 있습니다.

또한 노트북 작업 대시보드에서 개별 노트북 실행을 선택적으로 모니터링하고 SageMaker Studio UI를 통해 생성된 출력 파일을 전환할 수도 있습니다. SageMaker Studio 외부에서 이 기능을 사용하는 경우 태그를 사용하여 노트북 작업 대시보드에서 실행 상태를 추적할 수 있는 사용자를 정의할 수 있습니다. 포함할 태그에 대한 자세한 내용은 다음을 참조하세요. Studio UI 대시보드에서 노트북 작업을 보고 출력을 다운로드하세요..

이 예에서는 결과 노트북 작업을 다음 디렉터리에 출력합니다. outputs 파이프라인 실행 코드를 사용하여 로컬 경로에 있습니다. 다음 스크린샷에 표시된 것처럼 여기서는 입력 노트북의 출력과 해당 단계에 대해 정의한 매개변수를 볼 수 있습니다.

정리

예제를 따라했다면 생성된 파이프라인, 노트북 작업 및 샘플 노트북에서 다운로드한 s3 데이터를 삭제해야 합니다.

고려

다음은 이 기능에 대한 몇 가지 중요한 고려 사항입니다.

  • SDK 제약 – 노트북 작업 단계는 SageMaker Python SDK를 통해서만 생성할 수 있습니다.
  • 이미지 제약 – 노트북 작업 단계는 다음 이미지를 지원합니다.

결론

이번 출시로 데이터 작업자는 이제 다음을 사용하여 몇 줄의 코드로 노트북을 프로그래밍 방식으로 실행할 수 있습니다. SageMaker Python SDK. 또한 노트북을 사용하여 복잡한 다단계 워크플로를 생성하여 노트북에서 CI/CD 파이프라인으로 이동하는 데 필요한 시간을 크게 줄일 수 있습니다. 파이프라인을 생성한 후 SageMaker Studio를 사용하여 파이프라인에 대한 DAG를 보고 실행하고 실행을 관리 및 비교할 수 있습니다. 엔드투엔드 ML 워크플로를 예약하든지 아니면 그 일부를 예약하든 다음을 시도해 보는 것이 좋습니다. 노트북 기반 워크플로.


저자 소개

안치트 굽타 Amazon SageMaker Studio의 수석 제품 관리자입니다. 그녀는 SageMaker Studio IDE 내에서 대화형 데이터 과학 및 데이터 엔지니어링 워크플로를 활성화하는 데 중점을 두고 있습니다. 여가 시간에는 요리, 보드/카드 게임, 독서를 즐깁니다.

램 베기라주 SageMaker 서비스 팀의 ML 설계자입니다. 그는 고객이 Amazon SageMaker에서 AI/ML 솔루션을 구축하고 최적화하도록 돕는 데 중점을 두고 있습니다. 여가 시간에는 여행과 글쓰기를 좋아합니다.

에드워드 선 Amazon Web Services의 SageMaker Studio에서 근무하는 선임 SDE입니다. 그는 SageMaker Studio를 데이터 엔지니어링 및 ML 에코시스템의 인기 있는 기술과 통합하기 위해 대화형 ML 솔루션을 구축하고 고객 경험을 단순화하는 데 주력하고 있습니다. 여가 시간에 Edward는 캠핑, 하이킹, 낚시를 좋아하며 가족과 함께 보내는 시간을 즐깁니다.

타임 스탬프 :

더보기 AWS 기계 학습