제퍼넷 로고

AWS CDK를 사용하여 Amazon SageMaker Studio 수명 주기 구성 배포 | 아마존 웹 서비스

시간

아마존 세이지 메이커 스튜디오 머신 러닝(ML)을 위한 최초의 완전 통합 개발 환경(IDE)입니다. Studio는 데이터를 준비하고 모델을 구축, 교육 및 배포하는 데 필요한 모든 ML 개발 단계를 수행할 수 있는 단일 웹 기반 시각적 인터페이스를 제공합니다. 수명주기 구성 새 Studio 노트북 시작과 같은 Studio 수명 주기 이벤트에 의해 트리거되는 셸 스크립트입니다. 수명 주기 구성을 사용하여 Studio 환경에 대한 사용자 정의를 자동화할 수 있습니다. 이 사용자 지정에는 사용자 지정 패키지 설치, 노트북 확장 구성, 데이터 세트 사전 로드 및 소스 코드 리포지토리 설정이 포함됩니다. 예를 들어 Studio 도메인의 관리자는 다음을 원할 수 있습니다. 장시간 사용하지 않으면 노트북 앱을 자동으로 종료하여 비용 절감.

XNUMXD덴탈의 AWS 클라우드 개발 키트 (AWS CDK)는 코드를 통해 클라우드 인프라를 정의하고 이를 통해 프로비저닝하는 프레임워크입니다. AWS 클라우드 포메이션 스택. 스택은 프로그래밍 방식으로 업데이트, 이동 또는 삭제할 수 있는 AWS 리소스 모음입니다. AWS CDK 구성 클라우드 아키텍처를 정의하는 청사진을 나타내는 AWS CDK 애플리케이션의 빌딩 블록입니다.

이 게시물에서는 AWS CDK를 사용하여 Studio를 설정하고, Studio 수명 주기 구성을 사용하고, 조직의 데이터 과학자 및 개발자를 위한 액세스를 활성화하는 방법을 보여줍니다.

솔루션 개요

수명 주기 구성의 모듈성을 통해 도메인의 모든 사용자 또는 특정 사용자에게 적용할 수 있습니다. 이렇게 하면 수명 주기 구성을 설정하고 Studio에서 참조할 수 있습니다. 커널 게이트웨이 또는 Jupyter 서버 신속하고 일관되게. 커널 게이트웨이는 노트북 인스턴스와 상호 작용하기 위한 진입점인 반면 Jupyter 서버는 Studio 인스턴스를 나타냅니다. 이를 통해 DevOps 모범 사례를 적용하고 모든 AWS 계정 및 리전에서 안전, 규정 준수 및 구성 표준을 충족할 수 있습니다. 이 게시물에서는 Python을 기본 언어로 사용하지만 코드는 다른 AWS CDK 지원 언어로 쉽게 변경할 수 있습니다. 자세한 내용은 다음을 참조하십시오. AWS CDK 작업.

사전 조건

시작하려면 다음 전제 조건이 있는지 확인하십시오.

GitHub 리포지토리 복제

첫째, 복제 전에, GitHub 저장소.

리포지토리를 복제하면 디렉터리가 있는 클래식 AWS CDK 프로젝트가 있음을 확인할 수 있습니다. studio-lifecycle-config-construct, 수명 주기 구성을 만드는 데 필요한 구성 및 리소스가 포함되어 있습니다.

AWS CDK 구성

검사하려는 파일은 aws_sagemaker_lifecycle.py. 이 파일에는 SageMakerStudioLifeCycleConfig 수명 주기 구성을 설정하고 만드는 데 사용하는 구성입니다.

XNUMXD덴탈의 SageMakerStudioLifeCycleConfig 구성은 사용자 지정을 사용하여 수명 주기 구성을 구축하기 위한 프레임워크를 제공합니다. AWS 람다 함수 및 쉘 코드는 파일에서 읽습니다. 구성에는 다음 매개변수가 포함됩니다.

  • ID – 현재 프로젝트의 이름.
  • studio_lifecycle_content - base64 인코딩된 콘텐츠.
  • studio_lifecycle_tags – Amazon 리소스를 구성하기 위해 할당하는 레이블입니다. 키-값 쌍으로 입력되며 이 구성에서는 선택 사항입니다.
  • studio_lifecycle_config_app_type - JupyterServer 고유한 서버 자체를 위한 것입니다. KernelGateway 앱은 실행 중인 SageMaker 이미지 컨테이너에 해당합니다.

Studio 노트북 아키텍처에 대한 자세한 내용은 다음을 참조하십시오. Amazon SageMaker Studio 노트북 아키텍처 자세히 알아보기.

다음은 Studio 수명 주기 구성 구성의 코드 스니펫입니다(aws_sagemaker_lifecycle.py):

class SageMakerStudioLifeCycleConfig(Construct): def __init__( self, scope: Construct, id: str, studio_lifecycle_config_content: str, studio_lifecycle_config_app_type: str, studio_lifecycle_config_name: str, studio_lifecycle_config_arn: str, **kwargs, ): super().__init__(scope, id) self.studio_lifecycle_content = studio_lifecycle_content self.studio_lifecycle_config_name = studio_lifecycle_config_name self.studio_lifecycle_config_app_type = studio_lifecycle_config_app_type lifecycle_config_role = iam.Role( self, "SmStudioLifeCycleConfigRole", assumed_by=iam.ServicePrincipal("lambda.amazonaws.com"), ) lifecycle_config_role.add_to_policy( iam.PolicyStatement( resources=[f"arn:aws:sagemaker:{scope.region}:{scope.account}:*"], actions=[ "sagemaker:CreateStudioLifecycleConfig", "sagemaker:ListUserProfiles", "sagemaker:UpdateUserProfile", "sagemaker:DeleteStudioLifecycleConfig", "sagemaker:AddTags", ], ) ) create_lifecycle_script_lambda = lambda_.Function( self, "CreateLifeCycleConfigLambda", runtime=lambda_.Runtime.PYTHON_3_8, timeout=Duration.minutes(3), code=lambda_.Code.from_asset( "../mlsl-cdk-constructs-lib/src/studiolifecycleconfigconstruct" ), handler="onEvent.handler", role=lifecycle_config_role, environment={ "studio_lifecycle_content": self.studio_lifecycle_content, "studio_lifecycle_config_name": self.studio_lifecycle_config_name, "studio_lifecycle_config_app_type": self.studio_lifecycle_config_app_type, }, ) config_custom_resource_provider = custom_resources.Provider( self, "ConfigCustomResourceProvider", on_event_handler=create_lifecycle_script_lambda, ) studio_lifecyle_config_custom_resource = CustomResource( self, "LifeCycleCustomResource", service_token=config_custom_resource_provider.service_token, ) self. studio_lifecycle_config_arn = studio_lifecycle_config_custom_resource.get_att("StudioLifecycleConfigArn")

구성을 가져와서 설치한 후 사용할 수 있습니다. 다음 코드 스니펫은 다음 중 하나에서 스택의 구성을 사용하여 수명 주기 구성을 생성하는 방법을 보여줍니다. app.py 또는 다른 구조:

my_studio_lifecycle_config = SageMakerStudioLifeCycleConfig( self, "MLSLBlogPost", studio_lifecycle_config_content="base64content", studio_lifecycle_config_name="BlogPostTest", studio_lifecycle_config_app_type="JupyterServer", )

AWS CDK 구조 배포

AWS CDK 스택을 배포하려면 리포지토리를 복제한 위치에서 다음 명령을 실행합니다.

명령은 다음과 같습니다. python 대신 python3 경로 구성에 따라.

  1. 가상 환경 생성:
    1. macOS/Linux의 경우 다음을 사용하십시오. python3 -m venv .cdk-venv.
    2. Windows의 경우 python3 -m venv .cdk-venv.
  2. 가상 환경 활성화:
    1. macOS/Linux의 경우 다음을 사용하십시오. source .cdk-venvbinactivate.
    2. Windows의 경우 .cdk-venv/Scripts/activate.bat.
    3. PowerShell의 경우 다음을 사용하십시오. .cdk-venv/Scripts/activate.ps1.
  3. 필요한 종속성을 설치합니다.
    1. pip install -r requirements.txt
    2. pip install -r requirements-dev.txt
  4. 이 시점에서 선택적으로 이 코드에 대한 CloudFormation 템플릿을 합성할 수 있습니다.
  5. 다음 명령을 사용하여 솔루션을 배포합니다.
    1. aws configure
    2. cdk bootstrap
    3. cdk deploy

스택이 성공적으로 배포되면 CloudFormation 콘솔에서 스택을 볼 수 있어야 합니다.

또한 SageMaker 콘솔에서 수명 주기 구성을 볼 수 있습니다.

실행되는 셸 코드와 할당한 모든 태그를 보려면 수명 주기 구성을 선택합니다.

Studio 수명 주기 구성 연결

수명 주기 구성을 연결하는 방법에는 여러 가지가 있습니다. 이 섹션에서는 두 가지 방법을 제시합니다. AWS 관리 콘솔, 제공된 인프라를 프로그래밍 방식으로 사용합니다.

콘솔을 사용하여 수명 주기 구성 연결

콘솔을 사용하려면 다음 단계를 완료하십시오.

  1. SageMaker 콘솔에서 도메인 탐색 창에서
  2. 사용 중인 도메인 이름과 현재 사용자 프로필을 선택한 다음 편집.
  3. 사용하려는 수명 주기 구성을 선택하고 선택합니다. 연결.

여기에서 기본값으로 설정할 수도 있습니다.

수명 주기 구성을 프로그래밍 방식으로 연결

구성에 의해 생성된 Studio 수명 주기 구성의 ARN을 검색하여 프로그래밍 방식으로 Studio 구성에 연결할 수도 있습니다. 다음 코드는 Studio 구조로 전달되는 수명 주기 구성 ARN을 보여줍니다.

default_user_settings=sagemaker.CfnDomain.UserSettingsProperty( execution_role=self.sagemaker_role.role_arn, jupyter_server_app_settings=sagemaker.CfnDomain.JupyterServerAppSettingsProperty( default_resource_spec=sagemaker.CfnDomain.ResourceSpecProperty( instance_type="system", lifecycle_config_arn = my_studio_lifecycle_config.studio_lifeycycle_config_arn ) )

정리

리소스를 정리하려면 이 섹션의 단계를 완료하세요.

Studio 수명 주기 구성 삭제

수명 주기 구성을 삭제하려면 다음 단계를 완료하세요.

  1. SageMaker 콘솔에서 Studio 수명 주기 구성 탐색 창에서
  2. 수명 주기 구성을 선택한 다음 ..

AWS CDK 스택 삭제

생성한 리소스로 작업을 마쳤으면 리포지토리를 복제한 위치에서 다음 명령을 실행하여 AWS CDK 스택을 삭제할 수 있습니다.

cdk destroy

스택 삭제를 확인하라는 메시지가 표시되면 다음을 입력합니다. yes.

다음 단계에 따라 AWS CloudFormation 콘솔에서 스택을 삭제할 수도 있습니다.

  1. AWS CloudFormation 콘솔에서 스택 탐색 창에서
  2. 삭제할 스택을 선택합니다.
  3. 스택 세부 정보 창에서 다음을 선택합니다. ..
  4. 왼쪽 메뉴에서 스택 삭제 메시지가 나타나면

오류가 발생하면 계정 구성에 따라 일부 리소스를 수동으로 삭제해야 할 수 있습니다.

결론

이 게시물에서는 Studio가 ML 워크로드용 IDE 역할을 하는 방법에 대해 논의했습니다. Studio는 수명 주기 구성 지원을 제공하여 사용자 지정 셸 스크립트를 설정하여 자동화된 작업을 수행하거나 시작 시 개발 환경을 설정할 수 있습니다. 우리는 AWS CDK 구성을 사용하여 사용자 지정 리소스 및 수명 주기 구성을 위한 인프라를 구축했습니다. 구성은 CloudFormation 스택으로 합성된 후 배포되어 Studio 및 노트북 커널에서 사용되는 사용자 지정 리소스 및 수명 주기 스크립트를 생성합니다.

자세한 내용은 다음 페이지를 참조 아마존 세이지 메이커 스튜디오.


저자에 관하여

코리 헤어스톤 Amazon ML Solutions Lab의 소프트웨어 엔지니어입니다. 그는 현재 재사용 가능한 소프트웨어 솔루션을 제공하는 일을 하고 있습니다.

알렉스 치라 야스 Amazon ML Solutions Lab의 선임 기계 학습 엔지니어입니다. 그는 비즈니스 요구 사항을 해결하기 위해 AI 애플리케이션을 구축하기 위해 데이터 과학자 및 엔지니어 팀을 이끌고 있습니다.

고리 판데슈와르 Amazon ML Solutions Lab의 엔지니어 매니저입니다. 그와 그의 엔지니어 팀은 고객의 비즈니스 사용 사례에 대한 AWS AI/ML 서비스 채택을 가속화하는 데 도움이 되는 재사용 가능한 솔루션과 프레임워크를 구축하기 위해 노력하고 있습니다.

spot_img

최신 인텔리전스

spot_img