제퍼넷 로고

오픈 소스 Amazon SageMaker Distribution 시작하기 | 아마존 웹 서비스

시간

데이터 과학자는 머신 러닝(ML) 및 종속성을 관리할 수 있고 안전한 데이터 과학 워크로드를 위한 일관되고 재현 가능한 환경이 필요합니다. AWS 딥 러닝 컨테이너 TensorFlow, PyTorch 및 MXNet과 같은 공통 프레임워크에서 모델을 교육하고 제공하기 위해 이미 사전 빌드된 Docker 이미지를 제공합니다. 이 경험을 개선하기 위해 2023 JupyterCon에서 SageMaker 오픈 소스 배포의 공개 베타를 발표했습니다. 이는 다양한 수준의 전문 지식을 가진 ML 개발자 간에 통합된 종단 간 ML 경험을 제공합니다. 개발자는 더 이상 실험을 위해 또는 로컬 JupyterLab 환경 및 SageMaker 노트북에서 SageMaker의 프로덕션 작업으로 이동할 때 서로 다른 프레임워크 컨테이너 간에 전환할 필요가 없습니다. 오픈 소스 SageMaker Distribution은 TensorFlow, PyTorch, Scikit-learn, Pandas 및 Matplotlib와 같은 데이터 과학, ML 및 시각화를 위한 가장 일반적인 패키지 및 라이브러리를 지원합니다. 다음에서 컨테이너 사용을 시작할 수 있습니다. Amazon ECR 공개 갤러리 오늘부터.

이 게시물에서는 SageMaker 오픈 소스 배포를 사용하여 로컬 환경을 빠르게 실험하고 SageMaker에서 작업으로 쉽게 승격하는 방법을 보여줍니다.

솔루션 개요

예를 들어 PyTorch를 사용하여 이미지 분류 모델을 교육하는 방법을 보여줍니다. 우리는 KMNIST PyTorch에서 공개적으로 사용 가능한 데이터 세트. 우리는 신경망 모델을 훈련하고 모델의 성능을 테스트하며 마지막으로 훈련 및 테스트 손실을 인쇄합니다. 이 예제의 전체 노트북은 SageMaker Studio Lab 예제 리포지토리. 오픈 소스 배포를 사용하여 로컬 랩톱에서 실험을 시작하고 아마존 세이지 메이커 스튜디오 더 큰 인스턴스를 사용하기 위해 노트북을 노트북 작업으로 예약합니다.

사전 조건

다음 전제 조건이 필요합니다.

로컬 환경 설정

로컬 랩톱에서 오픈 소스 배포판을 직접 사용할 수 있습니다. JupyterLab을 시작하려면 터미널에서 다음 명령을 실행합니다.

export ECR_IMAGE_ID='public.ecr.aws/sagemaker/sagemaker-distribution:latest-cpu'
docker run -it -p 8888:8888 --user `id -u`:`id -g` -v `pwd`/sample-notebooks:/home/sagemaker-user/sample-notebooks $ECR_IMAGE_ID jupyter-lab --no-browser --ip=0.0.0.0

대체 할 수 있어요. ECR_IMAGE_ID 에서 사용할 수 있는 이미지 태그 중 Amazon ECR 공개 갤러리, 또는 선택 latest-gpu GPU를 지원하는 시스템을 사용하는 경우 태그를 지정하십시오.

이 명령은 JupyterLab을 시작하고 터미널에 다음과 같은 URL을 제공합니다. http://127.0.0.1:8888/lab?token=<token>. 링크를 복사하고 원하는 브라우저에 입력하여 JupyterLab을 시작합니다.

스튜디오 설정

Studio는 개발자와 데이터 과학자가 ML 모델을 대규모로 빌드, 교육, 배포 및 모니터링할 수 있는 ML용 종단 간 통합 개발 환경(IDE)입니다. Studio는 Data Science, TensorFlow, PyTorch 및 Spark와 같은 공통 프레임워크 및 패키지와 함께 자사 이미지의 광범위한 목록을 제공합니다. 이러한 이미지를 사용하면 데이터 과학자가 컴퓨팅을 위해 선택한 프레임워크와 인스턴스 유형을 선택하여 ML을 간단하게 시작할 수 있습니다.

이제 Studio의 나만의 이미지 가져오기 특징. 오픈 소스 배포를 SageMaker 도메인에 추가하려면 다음 단계를 완료하십시오.

  1. 오픈 소스 배포를 계정의 Amazon Elastic Container Registry (Amazon ECR) 리포지토리에서 터미널에서 다음 명령을 실행합니다.
    # Use the latest-cpu or latest-gpu tag based on your requirements
    export ECR_GALLERY_IMAGE_ID='sagemaker-distribution:latest-cpu'
    export SAGEMAKER_IMAGE_NAME='sagemaker-runtime'
    export SAGEMAKER_STUDIO_DOMAIN_ID='d-xxxx'
    export SAGEMAKER_STUDIO_IAM_ROLE_ARN='<studio-default-execution-role-arn>' docker pull public.ecr.aws/sagemaker/$ECR_GALLERY_IMAGE_ID export ECR_PRIVATE_REPOSITORY_NAME='sm-distribution'
    export ECR_IMAGE_TAG='sagemaker-runtime-cpu'
    export AWS_ACCOUNT_ID='0123456789'
    export AWS_ECR_REPOSITORY_REGION='us-east-1' # create repository
    aws --region ${AWS_ECR_REPOSITORY_REGION} ecr create-repository --repository-name $ECR_PRIVATE_REPOSITORY_NAME
    aws --region ${AWS_ECR_REPOSITORY_REGION} ecr get-login-password | docker login --username AWS --password-stdin ${AWS_ACCOUNT_ID}.dkr.ecr.${AWS_ECR_REPOSITORY_REGION}.amazonaws.com
    export ECR_IMAGE_URI=$AWS_ACCOUNT_ID.dkr.ecr.$AWS_ECR_REPOSITORY_REGION.amazonaws.com/$ECR_PRIVATE_REPOSITORY_NAME:$ECR_IMAGE_TAG # Tag
    docker tag public.ecr.aws/sagemaker/$ECR_GALLERY_IMAGE_ID $ECR_IMAGE_URI
    # Push the image to your private repository
    docker push $ECR_IMAGE_URI

  2. SageMaker 이미지를 생성하고 이미지를 Studio 도메인에 연결합니다.
    # Create a SageMaker image
    aws sagemaker create-image --image-name $SAGEMAKER_IMAGE_NAME --role-arn $SAGEMAKER_STUDIO_IAM_ROLE_ARN
    # Create a SageMaker Image Version.
    aws sagemaker create-image-version --image-name $SAGEMAKER_IMAGE_NAME --base-image $ECR_IMAGE_URI # Optionally, describe the image version to ensure it's succesfully created
    aws sagemaker describe-image-version --image-name $SAGEMAKER_IMAGE_NAME --version-number 1 # Create the app image configuration file
    cat > /tmp/app-config.json << EOF
    { "AppImageConfigName": "app-image-config-$SAGEMAKER_IMAGE_NAME", "KernelGatewayImageConfig": { "FileSystemConfig": { "DefaultGid": 100, "DefaultUid": 1000, "MountPath": "/home/sagemaker-user" }, "KernelSpecs": [ { "DisplayName": "Python 3 (ipykernel)", "Name": "python3" } ] }
    }
    EOF # Create an Amazon SageMaker App Image Config.
    aws sagemaker create-app-image-config --cli-input-json file:///tmp/app-config.json # Create a default user settings file
    # Update the file with your existing settings if you have additional custom images
    cat > /tmp/default-user-settings.json << EOF
    { "DefaultUserSettings": { "KernelGatewayAppSettings": { "CustomImages": [ { "ImageName": "$SAGEMAKER_IMAGE_NAME", "AppImageConfigName": "app-image-config-$SAGEMAKER_IMAGE_NAME", "ImageVersionNumber": 1 } ] } }
    }
    EOF # Update Amazon SageMaker Domain with the new default User Settings.
    aws sagemaker update-domain --domain-id $SAGEMAKER_STUDIO_DOMAIN_ID --cli-input-json file:///tmp/default-user-settings.json
    

  3. SageMaker 콘솔에서 도메인과 기존 사용자 프로필을 선택하여 Studio를 시작합니다.
  4. 필요에 따라 다음 단계에 따라 Studio를 다시 시작합니다. SageMaker Studio 종료 및 업데이트.

도메인 세부 정보

노트북 다운로드

에서 로컬로 샘플 노트북을 다운로드합니다. GitHub 레포.

선택한 IDE에서 노트북을 열고 설치할 노트북 시작 부분에 셀을 추가합니다. torchsummary. 그만큼 torchsummary 패키지는 배포판의 일부가 아니며 이를 노트북에 설치하면 노트북이 완전히 실행됩니다. 사용을 권장합니다 conda or micromamba 환경 및 종속성을 관리합니다. 노트북에 다음 셀을 추가하고 노트북을 저장합니다.

%pip install torchsummary

로컬 노트북에서 실험

다음 스크린샷과 같이 업로드 아이콘을 선택하여 시작한 JupyterLab UI에 노트북을 업로드합니다.

업로드 파일

업로드되면 다음을 실행합니다. cv-kmnist.ipynb 공책. torch, matplotlib 또는 ipywidgets와 같은 종속성을 설치하지 않고도 즉시 셀 실행을 시작할 수 있습니다.

이전 단계를 따랐다면 랩톱에서 로컬로 배포를 사용할 수 있음을 알 수 있습니다. 다음 단계에서는 Studio의 기능을 활용하기 위해 Studio에서 동일한 배포를 사용합니다.

실험을 Studio로 이동(선택사항)

필요에 따라 실험을 Studio로 승격합니다. Studio의 장점 중 하나는 기본 컴퓨팅 리소스가 완전히 탄력적이어서 사용 가능한 리소스를 쉽게 늘리거나 줄일 수 있고 변경 사항이 작업 중단 없이 백그라운드에서 자동으로 수행된다는 것입니다. 더 큰 데이터 세트 및 컴퓨팅 인스턴스에서 이전과 동일한 노트북을 실행하려는 경우 Studio로 마이그레이션할 수 있습니다.

이전에 시작한 Studio UI로 이동하고 업로드 아이콘을 선택하여 노트북을 업로드합니다.

파일 업로드 스튜디오

노트북을 실행하면 이미지와 인스턴스 유형을 선택하라는 메시지가 표시됩니다. 커널 실행기에서 다음을 선택하십시오. sagemaker-runtime 이미지와 ml.t3.medium 인스턴스를 선택한 다음 선택.

선택-이미지-스튜디오

이제 노트북을 로컬 개발 환경에서 Studio 노트북으로 변경할 필요 없이 엔드투엔드로 노트북을 실행할 수 있습니다!

노트북을 작업으로 예약

실험을 마치면 SageMaker는 교육 ​​작업 및 SageMaker 파이프라인과 같이 노트북을 생산화할 수 있는 여러 옵션을 제공합니다. 그러한 옵션 중 하나는 다음을 사용하여 비대화형 예약 노트북 작업으로 노트북 자체를 직접 실행하는 것입니다. SageMaker 노트북 작업. 예를 들어 주기적으로 모델을 재교육하거나 정기적으로 들어오는 데이터에 대한 추론을 얻고 이해 관계자가 사용할 보고서를 생성할 수 있습니다.

Studio에서 노트북 작업 아이콘을 선택하여 노트북 작업을 시작합니다. 노트북 작업 확장을 노트북에 로컬로 설치한 경우 노트북에서 직접 노트북을 예약할 수도 있습니다. 보다 설치 가이드 노트북 작업 확장을 로컬로 설정합니다.

일정-노트북-작업-아이콘

노트북 작업은 오픈 소스 배포의 ECR 이미지 URI를 자동으로 사용하므로 노트북 작업을 직접 예약할 수 있습니다.

선택-이미지-nb-작업

왼쪽 메뉴에서 일정대로 실행, 일정을 선택합니다(예: 매주 토요일). 만듭니다. 당신은 또한 선택할 수 있습니다 지금 실행 결과를 즉시 보고 싶다면

제출-nb-작업

첫 번째 노트북 작업이 완료되면 다음을 선택하여 Studio UI에서 직접 노트북 출력을 볼 수 있습니다. 수첩 아래에 출력 파일.

보기-작업-출력

추가 고려 사항

공개적으로 사용 가능한 ECR 이미지를 ML 워크로드에 직접 사용하는 것 외에도 오픈 소스 배포는 다음과 같은 이점을 제공합니다.

  • 이미지를 빌드하는 데 사용되는 Dockerfile은 개발자가 자신의 이미지를 탐색하고 빌드할 수 있도록 공개적으로 사용할 수 있습니다. 이 이미지를 기본 이미지로 상속하고 사용자 지정 라이브러리를 설치하여 재현 가능한 환경을 만들 수도 있습니다.
  • Docker에 익숙하지 않고 JupyterLab 환경에서 Conda 환경을 선호하는 경우 다음을 제공합니다. env.out 게시된 각 버전에 대한 파일입니다. 파일의 지침을 사용하여 동일한 환경을 모방하는 고유한 Conda 환경을 만들 수 있습니다. 예를 들어 CPU 환경 파일을 참조하십시오. CPU.env.out.
  • 이미지의 GPU 버전을 사용하여 딥 러닝 및 이미지 처리와 같은 GPU 호환 워크로드를 실행할 수 있습니다.

정리

리소스를 정리하려면 다음 단계를 완료하세요.

  1. 일정에 따라 노트북이 실행되도록 예약한 경우 다음 페이지에서 일정을 일시 중지하거나 삭제하십시오. 노트북 작업 정의 미래 작업에 대한 지불을 피하려면 탭하십시오.
    pause-nb-작업 일정
  2. 사용하지 않는 컴퓨팅 사용량에 대한 비용을 지불하지 않으려면 모든 Studio 앱을 종료하십시오. 보다 Studio 앱 종료 및 업데이트 지시 사항은
  3. 필요에 따라 Studio 도메인을 생성한 경우 Studio 도메인을 삭제합니다.

결론

ML 수명 주기의 여러 단계에서 재현 가능한 환경을 유지하는 것은 데이터 과학자와 개발자에게 가장 큰 과제 중 하나입니다. SageMaker 오픈 소스 배포를 통해 가장 일반적인 ML 프레임워크 및 패키지의 상호 호환 가능한 버전이 포함된 이미지를 제공합니다. 또한 이 배포판은 오픈 소스이므로 개발자에게 패키지 및 빌드 프로세스에 대한 투명성을 제공하여 자신의 배포판을 쉽게 사용자 정의할 수 있습니다.

이 게시물에서는 로컬 환경, Studio 및 교육 작업의 컨테이너로 배포를 사용하는 방법을 보여 주었습니다. 이 기능은 현재 공개 베타 버전입니다. 이 기능을 사용해 보고 피드백과 문제를 공유하는 것이 좋습니다. 공개 GitHub 저장소!


저자 소개

두르가 수리 Amazon SageMaker Service SA 팀의 ML 솔루션 아키텍트입니다. 그녀는 모든 사람이 기계 학습에 접근할 수 있도록 만드는 데 열정적입니다. AWS에서 4년 동안 그녀는 기업 고객을 위한 AI/ML 플랫폼 설정을 도왔습니다. 그녀는 일하지 않을 때 오토바이 타기, 미스터리 소설, 5살짜리 허스키와 함께 하는 긴 산책을 좋아합니다.

케탄 비자이바르기야 Amazon Web Services(AWS)의 수석 소프트웨어 개발 엔지니어입니다. 그의 초점 분야는 기계 학습, 분산 시스템 및 오픈 소스입니다. 업무 외에는 자연을 즐기며 시간을 보내는 것을 좋아합니다.

spot_img

최신 인텔리전스

spot_img

우리와 함께 채팅

안녕하세요! 어떻게 도와 드릴까요?