데이터 버전 제어 및 Amazon SageMaker 실험 PlatoBlockchain 데이터 인텔리전스를 사용하여 ML 실험을 처음부터 끝까지 추적하십시오. 수직 검색. 일체 포함.

데이터 버전 제어 및 Amazon SageMaker 실험으로 ML 실험을 종단 간 추적

데이터 과학자는 종종 다양한 모델 아키텍처 및 하이퍼파라미터와 결합하여 다양한 데이터 전처리 및 기능 엔지니어링 전략의 효과를 이해하기 위해 노력합니다. 이렇게 하려면 대규모 매개변수 공간을 반복적으로 다루어야 하며 실험을 재현 가능하게 유지하면서 이전에 실행한 구성 및 결과를 추적하는 것이 압도적일 수 있습니다.

이 게시물은 Amazon SageMaker 실험 와 함께 데이터 버전 제어(DVC). DVC를 다음과 함께 사용하는 방법을 보여줍니다. 아마존 세이지 메이커 처리 및 교육 작업. 우리는 캘리포니아 주택 데이터 세트에서 다양한 CatBoost 모델을 훈련합니다. StatLib 저장소, DVC로 데이터 버전을 추적하면서 홀드아웃 전략을 변경합니다. 각 개별 실험에서 SageMaker Experiments를 사용하여 입력 및 출력 아티팩트, 코드 및 메트릭을 추적합니다.

SageMaker 실험

SageMaker Experiments는 기계 학습(ML) 실험을 추적하기 위한 AWS 서비스입니다. 그만큼 SageMaker 실험 Python SDK Python을 사용하여 실험 정보를 추적하는 데 도움이 되는 이 서비스에 대한 고급 인터페이스입니다.

SageMaker Experiments의 목표는 실험을 생성하고 실험으로 채우고 추적 및 계보 정보를 추가하고 실험과 실험 전반에 걸쳐 분석을 실행하는 것을 가능한 한 간단하게 만드는 것입니다.

SageMaker 실험에 대해 논의할 때 다음 개념을 참조합니다.

  • 실험 – 관련 시험 모음. 함께 비교하려는 실험에 시도를 추가합니다.
  • 공판 – 다단계 ML 워크플로에 대한 설명입니다. 워크플로의 각 단계는 평가판 구성 요소로 설명됩니다.
  • 시험 구성 요소 – 데이터 정리, 기능 추출, 모델 교육 또는 모델 평가와 같은 ML 워크플로의 단일 단계에 대한 설명입니다.
  • 트래커 – 단일 평가판 구성요소(예: 매개변수, 메트릭 또는 아티팩트)에 대한 정보를 로깅하기 위한 Python 컨텍스트 관리자.

데이터 버전 관리

데이터 버전 관리(DVC)는 새로운 유형의 데이터 버전 관리, 워크플로 및 실험 관리 소프트웨어입니다. 힘내 (독립적으로 작동할 수 있지만). DVC는 기존 엔지니어링 도구 집합과 데이터 과학 요구 사항 간의 격차를 줄여 새로운 풍모 기존 기술과 직관을 재사용하면서.

데이터 과학 실험 공유 및 협업은 소프트웨어 엔지니어와 동일한 방식으로 일반 Git 흐름(커밋, 분기, 태그 지정, 풀 요청)을 통해 수행할 수 있습니다. Git 및 DVC를 사용하여 데이터 과학 및 ML 팀은 실험 버전을 지정하고 대규모 데이터 세트를 관리하며 프로젝트를 재현 가능하게 만들 수 있습니다.

DVC에는 다음과 같은 기능이 있습니다.

  • DVC는 비어 있는, 오픈 소스 명령 줄 도구입니다.
  • DVC는 Git 리포지토리 위에서 작동하며 Git과 유사한 명령줄 인터페이스 및 흐름을 가지고 있습니다. DVC는 독립 실행형으로도 작동할 수 있지만 버전 기능.
  • 큰 파일, 데이터 세트 디렉토리, ML 모델 등을 작은 파일로 교체하여 데이터 버전 관리를 활성화합니다. 메타파일 (Git으로 다루기 쉬움). 이러한 자리 표시자는 소스 코드 관리에서 분리된 원본 데이터를 가리킵니다.
  • 온프레미스 또는 클라우드 스토리지를 사용하여 코드 기반과 별도로 프로젝트 데이터를 저장할 수 있습니다. 이것이 데이터 과학자가 대규모 데이터 세트를 전송하거나 GPU 훈련 모델을 다른 사람들과 공유하는 방법입니다.
  • DVC는 경량화를 통해 데이터 과학 프로젝트를 재현 가능하게 만듭니다. 파이프 라인 암시적 종속성 그래프를 사용하고 관련된 데이터 및 아티팩트를 코드화합니다.
  • DVC는 플랫폼에 구애받지 않습니다. 모든 주요 운영 체제(Linux, macOS 및 Windows)에서 실행되며 프로그래밍 언어(Python, R, Julia, 셸 스크립트 등) 또는 ML 라이브러리(Keras, TensorFlow, PyTorch, Scipy 및 more) 프로젝트에서 사용됩니다.
  • DVC는 빠르게 설치 특별한 인프라가 필요하지 않으며 API나 외부 서비스에 의존하지도 않습니다. 독립 실행형 CLI 도구입니다.

SageMaker 실험 및 DVC 샘플

다음 GitHub 샘플 SageMaker 환경 내에서 DVC를 사용하는 방법을 보여줍니다. 특히 데이터 과학자에게 일관된 개발 환경을 제공하기 위해 기본적으로 설치된 DVC 라이브러리로 사용자 지정 이미지를 구축하는 방법을 살펴봅니다. 아마존 세이지 메이커 스튜디오, 처리 및 교육을 위해 SageMaker 관리 인프라와 함께 DVC를 실행하는 방법. 또한 DVC의 데이터 버전 정보로 SageMaker 추적 정보를 강화하고 Studio 콘솔 내에서 시각화하는 방법을 보여줍니다.

다음 다이어그램은 솔루션 아키텍처와 워크플로를 보여줍니다.

DVC가 이미 설치된 사용자 정의 Studio 이미지 빌드

이번에 GitHub 저장소, DVC가 이미 설치된 Studio용 맞춤 이미지를 만드는 방법을 설명합니다. 이미지를 만들어 모든 Studio 사용자가 사용할 수 있도록 하는 것의 장점은 Studio 사용자를 위한 일관된 환경을 만들고 로컬에서도 실행할 수 있다는 것입니다. 샘플을 기반으로 하지만 AWS 클라우드9, Docker가 설치되어 실행 중이면 로컬 머신에 컨테이너를 빌드할 수도 있습니다. 이 샘플은 다음을 기반으로 합니다. 도커 파일환경.yml. 결과 Docker 이미지는 다음 위치에 저장됩니다. Amazon Elastic Container Registry (Amazon EMR) 다음 코드를 참조하십시오.

# Login to ECR
aws --region ${REGION} ecr get-login-password | docker login --username AWS --password-stdin ${ACCOUNT_ID}.dkr.ecr.${REGION}.amazonaws.com/smstudio-custom

# Create the ECR repository
aws --region ${REGION} ecr create-repository --repository-name smstudio-custom

# Build the image - it might take a few minutes to complete this step
docker build . -t ${IMAGE_NAME} -t ${ACCOUNT_ID}.dkr.ecr.${REGION}.amazonaws.com/smstudio-custom:${IMAGE_NAME}

# Push the image to ECR
docker push ${ACCOUNT_ID}.dkr.ecr.${REGION}.amazonaws.com/smstudio-custom:${IMAGE_NAME}

이제 수 새 Studio 도메인 만들기 or 기존 Studio 도메인 업데이트 새로 생성된 Docker 이미지에 액세스할 수 있습니다.

우리는 사용 AWS 클라우드 개발 키트 (AWS CDK)를 통해 다음 리소스를 생성합니다. AWS 클라우드 포메이션:

  • 신규 또는 기존 Studio 도메인에 대한 올바른 권한이 있는 SageMaker 실행 역할
  • Docker 이미지의 SageMaker 이미지 및 SageMaker 이미지 버전 conda-env-dvc-kernel 우리가 이전에 만든
  • An AppImageConfig 커널 게이트웨이 구성 방법을 지정합니다.
  • Studio 사용자(data-scientist-dvc) 올바른 SageMaker 실행 역할 및 사용 가능한 사용자 정의 Studio 이미지

자세한 지침은 다음을 참조하십시오. 사용자 정의 이미지를 SageMaker Studio에 연결.

실습 실행

실습을 실행하려면 다음 단계를 완료하세요.

  1. Studio 도메인에서 data-scientist-dvc 사용자.
  2. Git 아이콘을 선택한 다음 리포지토리 복제.
    리포지토리 복제
  3. 저장소의 URL을 입력하십시오(https://github.com/aws-samples/amazon-sagemaker-experiments-dvc-demo) 및 선택 복제.리포지토리 버튼 복제
  4. 파일 브라우저에서 amazon-sagemaker-experiments-dvc-demo 저장소.
  5. 열기 dvc_sagemaker_script_mode.ipynb 공책.
  6. 럭셔리 사용자 정의 이미지, 이미지 conda-env-dvc-kernel을 선택합니다.
  7. 왼쪽 메뉴에서 선택.
    conda-env-dvc-커널

데이터 버전 관리를 위한 DVC 구성

데이터를 준비할 하위 디렉터리인 sagemaker-dvc-sample을 만듭니다. 이 하위 디렉토리 내에서 새 Git 저장소를 초기화하고 원격을 우리가 생성한 저장소로 설정합니다. AWS 코드 커밋. 목표는 이 리포지토리에서 버전 관리되는 데이터 추적을 위한 DVC 구성 및 파일을 갖는 것입니다. 그러나 Git은 예를 들어 git 하위 모듈 및 git 하위 트리를 통해 하위 프로젝트를 관리하는 기본 기능을 제공하며 이 샘플을 확장하여 워크플로에 가장 적합한 앞서 언급한 도구를 사용할 수 있습니다.

우리의 경우 SageMaker와 함께 CodeCommit을 사용할 때의 주요 이점은 다음과 통합된다는 것입니다. AWS 자격 증명 및 액세스 관리 (IAM) 인증 및 권한 부여를 위해 IAM 역할을 사용하여 자격 증명(또는 SSH 키)을 가져올 필요 없이 데이터를 푸시하고 가져올 수 있습니다. SageMaker 실행 역할에 대한 적절한 권한을 설정하면 Studio 노트북과 SageMaker 교육 및 처리 작업도 CodeCommit과 안전하게 상호 작용할 수 있습니다.

CodeCommit을 GitHub, Gitlab 또는 Bitbucket과 같은 다른 소스 제어 서비스로 교체할 수 있지만 시스템의 자격 증명을 처리하는 방법을 고려해야 합니다. 한 가지 가능성은 이러한 자격 증명을 AWS 비밀 관리자 런타임 시 Studio 노트북과 SageMaker 처리 및 교육 작업에서 가져옵니다.

DVC 초기화

DVC 및 SageMaker로 처리 및 교육

이 섹션에서는 문제를 해결하기 위한 두 가지 다른 접근 방식을 살펴보고 이전에 보여준 높은 수준의 개념 아키텍처에 따라 SageMaker Experiments를 사용하여 두 테스트를 추적하는 방법을 살펴봅니다.

SageMaker 실험 설정

SageMaker에서 이 테스트를 추적하려면 실험을 생성해야 합니다. 또한 실험 내에서 시행을 정의해야 합니다. 단순함을 위해 실험에 대해 하나의 시도만 고려하지만, 예를 들어 다른 알고리즘을 테스트하려는 경우 실험 내에서 여러 시도를 가질 수 있습니다.

라는 실험을 만듭니다. DEMO-sagemaker-experiments-dvc 두 번의 시도로 dvc-trial-single-filedvc-trial-multi-files, 각각 다른 버전의 데이터세트를 나타냅니다.

생성하자 DEMO-sagemaker-experiments-dvc 실험:

from smexperiments.experiment import Experiment
from smexperiments.trial import Trial
from smexperiments.trial_component import TrialComponent
from smexperiments.tracker import Tracker

experiment_name = 'DEMO-sagemaker-experiments-dvc'

# create the experiment if it doesn't exist
try:
    my_experiment = Experiment.load(experiment_name=experiment_name)
    print("existing experiment loaded")
except Exception as ex:
    if "ResourceNotFound" in str(ex):
        my_experiment = Experiment.create(
            experiment_name = experiment_name,
            description = "How to integrate DVC"
        )
        print("new experiment created")
    else:
        print(f"Unexpected {ex}=, {type(ex)}")
        print("Dont go forward!")
        raise

테스트 1: 교육 및 검증을 위한 단일 파일 생성

이 섹션에서는 원시 데이터를 직접 가져오는 처리 스크립트를 만듭니다. 아마존 단순 스토리지 서비스 (Amazon S3) 입력으로; 학습, 검증 및 테스트 데이터 세트를 생성하기 위해 처리합니다. DVC를 사용하여 결과를 Amazon S3에 다시 저장합니다. 또한 처리 및 교육 작업을 실행할 때 그리고 SageMaker 실험을 통해 SageMaker를 사용하여 DVC에서 생성된 출력 아티팩트를 추적하는 방법을 보여줍니다.

먼저, 우리는 dvc-trial-single-file 평가판에 추가하고 DEMO-sagemaker-experiments-dvc 실험. 그렇게 함으로써 우리는 이 테스트와 관련된 모든 시험 구성 요소를 의미 있는 방식으로 조직화합니다.

first_trial_name = "dvc-trial-single-file"

try:
    my_first_trial = Trial.load(trial_name=first_trial_name)
    print("existing trial loaded")
except Exception as ex:
    if "ResourceNotFound" in str(ex):
        my_first_trial = Trial.create(
            experiment_name=experiment_name,
            trial_name=first_trial_name,
        )
        print("new trial created")
    else:
        print(f"Unexpected {ex}=, {type(ex)}")
        print("Dont go forward!")
        raise

SageMaker 처리 작업에서 DVC를 사용하여 단일 파일 버전 생성

이 섹션에서는 SageMaker의 관리형 데이터 로드 기능을 사용하여 Amazon S3에서 직접 원시 데이터를 입력으로 가져오는 처리 스크립트를 생성합니다. 학습, 검증 및 테스트 데이터 세트를 생성하기 위해 처리합니다. DVC를 사용하여 결과를 Amazon S3에 다시 저장합니다. DVC를 사용하여 Amazon S3에 데이터를 저장(또는 Amazon S3에서 데이터 가져오기)할 때 SageMaker 관리 데이터 로드 기능이 손실되어 처리 및 교육 작업의 성능과 비용에 잠재적으로 영향을 미칠 수 있음을 이해하는 것이 매우 중요합니다. , 특히 매우 큰 데이터 세트로 작업할 때. 다양한 SageMaker 기본 입력 모드 기능에 대한 자세한 내용은 다음을 참조하십시오. 교육 데이터 액세스.

마지막으로 SageMaker 실험을 통해 처리 작업을 실행할 때 DVC 추적 기능을 SageMaker 추적 기능과 통합합니다.

처리 스크립트는 환경 변수를 통해 전달된 DVC 메타데이터를 저장하기 위해 생성하려는 Git 리포지토리 및 분기의 주소를 예상합니다. 데이터 세트 자체는 DVC에 의해 Amazon S3에 저장됩니다. 환경 변수는 SageMaker Experiments에서 자동으로 추적되고 평가판 구성 요소 매개변수에서 볼 수 있지만, 추가 정보로 평가판 구성 요소를 강화할 수 있으며, 그런 다음 추적기 개체를 사용하여 Studio UI에서 시각화에 사용할 수 있습니다. 우리의 경우 시험 구성 요소 매개변수에는 다음이 포함됩니다.

  • DVC_REPO_URL
  • DVC_BRANCH
  • USER
  • data_commit_hash
  • train_test_split_ratio

전처리 스크립트는 Git 리포지토리를 복제합니다. 훈련, 검증 및 테스트 데이터 세트를 생성합니다. DVC를 사용하여 동기화합니다. 앞서 언급했듯이 DVC를 사용할 때 기본 SageMaker 데이터 로드 기능을 활용할 수 없습니다. 대규모 데이터 세트에서 겪을 수 있는 성능 저하 외에도 출력 아티팩트에 대한 자동 추적 기능도 손실됩니다. 하지만 트래커와 DVC Python API 덕분에 이러한 단점을 보완하고 런타임에 이러한 정보를 검색하여 적은 노력으로 평가판 구성 요소에 저장할 수 있습니다. 이렇게 함으로써 부가 가치는 이 특정 처리 작업에 속하는 입력 및 출력 아티팩트의 단일 보기를 갖는 것입니다.

전체 전처리 Python 스크립트는 GitHub 레포.

with Tracker.load() as tracker:
    tracker.log_parameters({"data_commit_hash": commit_hash})
    for file_type in file_types:
        path = dvc.api.get_url(
            f"{data_path}/{file_type}/california_{file_type}.csv",
            repo=dvc_repo_url,
            rev=dvc_branch
        )
        tracker.log_output(name=f"california_{file_type}",value=path)

SageMaker는 AWS 인프라에서 실행하도록 최적화된 AWS에서 관리하는 컨테이너 이미지에서 처리 스크립트를 실행할 수 있는 가능성을 제공합니다. 스크립트에 추가 종속성이 필요한 경우 다음을 제공할 수 있습니다. requirements.txt 파일. 처리 작업을 시작할 때 SageMaker는 다음을 사용합니다. pip-install 필요한 모든 라이브러리(예: DVC 관련 라이브러리)를 설치합니다. 컨테이너에 설치된 모든 라이브러리를 더 엄격하게 제어해야 하는 경우 SageMaker에서 고유한 컨테이너를 가져올 수 있습니다. 예를 들어 처리 그리고 훈련.

이제 SageMaker 처리 작업을 실행하기 위한 모든 구성 요소가 있습니다.

  • 여러 인수를 처리할 수 있는 처리 스크립트(--train-test-split-ratio) 및 두 가지 환경 변수(DVC_REPO_URLDVC_BRANCH)
  • A requiremets.txt 파일
  • Git 리포지토리(CodeCommit)
  • SageMaker 실험 및 시험
from sagemaker.processing import FrameworkProcessor, ProcessingInput
from sagemaker.sklearn.estimator import SKLearn

dvc_repo_url = "codecommit::{}://sagemaker-dvc-sample".format(region)
dvc_branch = my_first_trial.trial_name

script_processor = FrameworkProcessor(
    estimator_cls=SKLearn,
    framework_version='0.23-1',
    instance_count=1,
    instance_type='ml.m5.xlarge',
    env={
        "DVC_REPO_URL": dvc_repo_url,
        "DVC_BRANCH": dvc_branch,
        "USER": "sagemaker"
    },
    role=role
)

experiment_config={
    "ExperimentName": my_experiment.experiment_name,
    "TrialName": my_first_trial.trial_name
}

그런 다음 처리 작업을 실행합니다. preprocessing-experiment.py 스크립트, experiment_config, dvc_repo_urldvc_branch 우리는 이전에 정의했습니다.

%%time

script_processor.run(
    code='./source_dir/preprocessing-experiment.py',
    dependencies=['./source_dir/requirements.txt'],
    inputs=[ProcessingInput(source=s3_data_path, destination="/opt/ml/processing/input")],
    experiment_config=experiment_config,
    arguments=["--train-test-split-ratio", "0.2"]
)

처리 작업을 완료하는 데 약 5분이 걸립니다. 이제 단일 파일 데이터 세트에 대한 평가판 세부 정보를 볼 수 있습니다.

다음 스크린샷은 Studio 내에서 저장된 정보를 찾을 수 있는 위치를 보여줍니다. 에 대한 값 참고 dvc-trial-single-file in DVC_BRANCH, DVC_REPO_URLdata_commit_hash 를 시청하여 이에 대해 더 많은 정보를 얻을 수 있습니다. 파라미터 탭.

SageMaker 실험 매개변수 탭

또한 입력 및 출력 세부 정보를 확인하십시오. 유물 탭.

SageMaker 실험 아티팩트 탭

추정기를 생성하고 단일 파일 데이터 버전으로 모델 피팅

SageMaker 교육 작업 내에서 DVC 통합을 사용하기 위해 dvc_repo_urldvc_branch Estimator 개체를 만들 때 환경 변수로 사용합니다.

우리는 훈련 dvc-trial-single-file 먼저 분기합니다.

DVC로 데이터를 가져올 때 다음 데이터세트 구조를 사용합니다.

dataset
    |-- train
    |   |-- california_train.csv
    |-- test
    |   |-- california_test.csv
    |-- validation
    |   |-- california_validation.csv

이제 다음을 사용하여 Scikit-learn Estimator를 만듭니다. SageMaker Python SDK. 이를 통해 다음을 지정할 수 있습니다.

  • 훈련의 진입점으로 실행해야 하는 Python 소스 파일의 경로입니다.
  • Amazon S3 및 CodeCommit 데이터에 액세스하고 SageMaker 기능을 실행할 수 있는 권한을 제어하는 ​​IAM 역할.
  • 훈련 작업을 평가하는 데 사용되는 메트릭을 정의하는 사전 목록입니다.
  • 훈련 인스턴스의 수와 유형입니다. 하나의 ml.m5.large 인스턴스를 사용합니다.
  • 훈련에 사용되는 초매개변수입니다.
  • 학습 작업 중에 사용할 환경 변수입니다. 우리는 사용 DVC_REPO_URL, DVC_BRANCHUSER.
metric_definitions = [{'Name': 'median-AE', 'Regex': "AE-at-50th-percentile: ([0-9.]+).*$"}]

hyperparameters={ 
        "learning_rate" : 1,
        "depth": 6
    }
estimator = SKLearn(
    entry_point='train.py',
    source_dir='source_dir',
    role=role,
    metric_definitions=metric_definitions,
    hyperparameters=hyperparameters,
    instance_count=1,
    instance_type='ml.m5.large',
    framework_version='0.23-1',
    base_job_name='training-with-dvc-data',
    environment={
        "DVC_REPO_URL": dvc_repo_url,
        "DVC_BRANCH": dvc_branch,
        "USER": "sagemaker"
    }
)

experiment_config={
    "ExperimentName": my_experiment.experiment_name,
    "TrialName": my_first_trial.trial_name
}

학습을 시작하기 위해 앞서 정의한 Experiment_config를 사용하여 Estimator의 fit 메서드를 호출합니다.

%%time
estimator.fit(experiment_config=experiment_config)

교육 작업을 완료하는 데 약 5분이 걸립니다. 로그에는 DVC에서 가져온 파일을 나타내는 다음 행이 표시됩니다.

Running dvc pull command
A       train/california_train.csv
A       test/california_test.csv
A       validation/california_validation.csv
3 files added and 3 files fetched
Starting the training.
Found train files: ['/opt/ml/input/data/dataset/train/california_train.csv']
Found validation files: ['/opt/ml/input/data/dataset/train/california_train.csv']

테스트 2: 교육 및 검증을 위해 여러 파일 생성

우리는 새로운 것을 만듭니다 dvc-trial-multi-files 시도하고 현재에 추가 DEMO-sagemaker-experiments-dvc 실험.

second_trial_name = "dvc-trial-multi-files"
try:
    my_second_trial = Trial.load(trial_name=second_trial_name)
    print("existing trial loaded")
except Exception as ex:
    if "ResourceNotFound" in str(ex):
        my_second_trial = Trial.create(
            experiment_name=experiment_name,
            trial_name=second_trial_name,
        )
        print("new trial created")
    else:
        print(f"Unexpected {ex}=, {type(ex)}")
        print("Dont go forward!")
        raise

첫 번째 처리 스크립트와 달리 이제 원본 데이터 세트에서 교육 및 검증을 위한 여러 파일을 만들고 DVC 메타데이터를 다른 분기에 저장합니다.

두 번째 전처리 Python 스크립트를 탐색할 수 있습니다. GitHub의.

%%time

script_processor.run(
    code='./source_dir/preprocessing-experiment-multifiles.py',
    dependencies=['./source_dir/requirements.txt'],
    inputs=[ProcessingInput(source=s3_data_path, destination="/opt/ml/processing/input")],
    experiment_config=experiment_config,
    arguments=["--train-test-split-ratio", "0.1"]
)

처리 작업을 완료하는 데 약 5분이 걸립니다. 이제 다중 파일 데이터 세트에 대한 평가판 세부 정보를 볼 수 있습니다.

다음 스크린샷은 SageMaker Experiments에서 저장된 정보를 찾을 수 있는 위치를 보여줍니다. 시험 구성 요소 섹션을 참조하세요. 에 대한 값 참고 dvc-trial-multi-files in DVC_BRANCH, DVC_REPO_URLdata_commit_hash 를 시청하여 이에 대해 더 많은 정보를 얻을 수 있습니다. 파라미터 탭.

SageMaker 다중 파일 실험 매개변수 탭

또한 입력 및 출력 세부 정보를 검토할 수 있습니다. 유물 탭.

SageMaker 다중 파일 실험 아티팩트 탭

우리는 지금 훈련 dvc-trial-multi-files 나뭇가지. DVC로 데이터를 가져올 때 다음 데이터세트 구조를 사용합니다.

dataset
    |-- train
    |   |-- california_train_1.csv
    |   |-- california_train_2.csv
    |   |-- california_train_3.csv
    |   |-- california_train_4.csv
    |   |-- california_train_5.csv
    |-- test
    |   |-- california_test.csv
    |-- validation
    |   |-- california_validation_1.csv
    |   |-- california_validation_2.csv
    |   |-- california_validation_3.csv

이전과 마찬가지로 평가판 이름으로 새로운 Scikit-learn Estimator를 만듭니다. dvc-trial-multi-files 그리고 훈련 작업을 시작합니다.

%%time

estimator.fit(experiment_config=experiment_config)

교육 작업을 완료하는 데 약 5분이 걸립니다. 교육 작업 로그 출력에서 ​​노트북에 DVC에서 가져온 파일을 나타내는 해당 행을 볼 수 있습니다.

Running dvc pull command
A       validation/california_validation_2.csv
A       validation/california_validation_1.csv
A       validation/california_validation_3.csv
A       train/california_train_4.csv
A       train/california_train_5.csv
A       train/california_train_2.csv
A       train/california_train_3.csv
A       train/california_train_1.csv
A       test/california_test.csv
9 files added and 9 files fetched
Starting the training.
Found train files: ['/opt/ml/input/data/dataset/train/california_train_2.csv', '/opt/ml/input/data/dataset/train/california_train_5.csv', '/opt/ml/input/data/dataset/train/california_train_4.csv', '/opt/ml/input/data/dataset/train/california_train_1.csv', '/opt/ml/input/data/dataset/train/california_train_3.csv']
Found validation files: ['/opt/ml/input/data/dataset/validation/california_validation_2.csv', '/opt/ml/input/data/dataset/validation/california_validation_1.csv', '/opt/ml/input/data/dataset/validation/california_validation_3.csv']

SageMaker에서 모델 호스팅

ML 모델을 교육한 후 SageMaker를 사용하여 배포할 수 있습니다. 한 번에 하나의 예측을 수행하는 영구적인 실시간 엔드포인트를 배포하기 위해 다음을 사용합니다. SageMaker 실시간 호스팅 서비스.

from sagemaker.serializers import CSVSerializer

predictor = estimator.deploy(1, "ml.t2.medium", serializer=CSVSerializer())

먼저 Studio의 개발 노트북에서 최신 테스트 데이터 세트를 로컬로 가져옵니다. 이를 위해 다음을 사용할 수 있습니다. dvc.api.read() SageMaker 처리 작업에 의해 Amazon S3에 저장된 원시 데이터를 로드합니다.

import io
import dvc.api

raw = dvc.api.read(
    "dataset/test/california_test.csv",
    repo=dvc_repo_url,
    rev=dvc_branch
)

그런 다음 Pandas를 사용하여 데이터를 준비하고 테스트 CSV 파일을 로드하고 predictor.predict 데이터를 사용하여 이전에 생성된 SageMaker 엔드포인트를 호출하고 예측을 가져옵니다.

test = pd.read_csv(io.StringIO(raw), sep=",", header=None)
X_test = test.iloc[:, 1:].values
y_test = test.iloc[:, 0:1].values

predicted = predictor.predict(X_test)
for i in range(len(predicted)-1):
    print(f"predicted: {predicted[i]}, actual: {y_test[i][0]}")

엔드포인트 삭제

배포된 시간에 따라 요금이 청구되므로 더 이상 사용하지 않는 엔드포인트를 삭제해야 합니다(자세한 내용은 Amazon SageMaker 요금). 예기치 않은 비용이 발생하지 않도록 엔드포인트를 삭제해야 합니다.

predictor.delete_endpoint()

정리

생성한 모든 리소스를 제거하기 전에 모든 앱이 data-scientist-dvc 모든 KernelGateway 앱과 기본 JupiterServer 앱을 포함한 사용자.

그런 다음 다음 명령을 실행하여 AWS CDK 스택을 삭제할 수 있습니다.

cdk destroy

기존 도메인을 사용한 경우 다음 명령도 실행합니다.

# inject your DOMAIN_ID into the configuration file
sed -i 's/<your-sagemaker-studio-domain-id>/'"$DOMAIN_ID"'/' ../update-domain-no-custom-images.json
# update the sagemaker studio domain
aws --region ${REGION} sagemaker update-domain --cli-input-json file://../update-domain-no-custom-images.json

결론

이 게시물에서는 DVC와 함께 SageMaker 실험 및 SageMaker 처리 및 교육 작업을 사용하여 코드, 데이터, 아티팩트 및 메트릭 전반에서 실험을 추적하는 방법의 예를 살펴보았습니다. Studio에 개발 노트북으로 필요한 DVC가 포함된 Docker 이미지를 생성하고 DVC로 처리 및 교육 작업을 사용하는 방법을 보여주었습니다. 두 가지 버전의 데이터를 준비하고 DVC를 사용하여 Git으로 관리했습니다. 그런 다음 SageMaker Experiments를 사용하여 단일 창에서 매개변수, 아티팩트 및 메트릭에 대한 통합 보기를 갖기 위해 두 가지 버전의 데이터로 처리 및 교육을 추적했습니다. 마지막으로 모델을 SageMaker 끝점에 배포하고 두 번째 데이터 집합 버전의 테스트 데이터 집합을 사용하여 SageMaker 끝점을 호출하고 예측을 가져왔습니다.

다음 단계로 기존 노트북을 확장하고 고유한 기능 엔지니어링 전략을 도입하고 DVC 및 SageMaker를 사용하여 실험을 실행할 수 있습니다. 건설하러 가자!

자세한 내용은 다음 리소스를 참조하십시오.


저자에 관하여

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

에이 탄 셀라에이 탄 셀라 Amazon Web Services의 기계 학습 전문가 솔루션 설계자입니다. 그는 AWS 고객과 협력하여 지침 및 기술 지원을 제공하여 AWS에서 기계 학습 솔루션을 구축하고 운영하도록 돕습니다. 여가 시간에 Eitan은 조깅과 최신 기계 학습 기사 읽기를 즐깁니다.

타임 스탬프 :

더보기 AWS 기계 학습