오늘 SageMaker Notebook instance를 migration 하는 방법에 대해 알아보고자 한다.
Migrate your work to an Amazon SageMaker notebook instance with Amazon Linux 2 | Amazon Web Services
Amazon SageMaker notebook instances now support Amazon Linux 2, so you can now create a new Amazon SageMaker notebook instance to start developing your machine learning (ML) models with the latest updates. An obvious question is: what do I need to do to mi
aws.amazon.com
해당 문서의 아키텍쳐를 살펴보면 SageMaker Notebook instance는 EC2와 EBS 볼륨으로 구성이 되어있고 AWS Deep Learning AMI로 이미지가 제공되고 있는 걸 확인할 수 있다. EBS 볼륨은 "/home/ec2-user/SageMaker"에 마운팅 되어있고 고 주로 사용자는 해당 디렉토리 위에서 파일을 생성하고 작업을 하게 된다. 오늘은 작업 파일이 존재하는 /home/ec2-user/SageMaker의 데이터를 다른 노트북 인스턴스로 이관하는 작업에 대해 설명하고자 한다.
1. 사전 준비
먼저 SageMaker Notebook instance에 실행 역할에 대한 IAM 역할에는 아래와 같은 권한들이 필요하다.
- sagemaker:listtag
- s3:CreateBucket
- s3:GetObject
- s3:PutObject
- s3:ListBucket
그 다음 네트워크 구성의 경우 만약 Notebook instance가 direct internet access 옵션이 허용되어 있는 경우 별다른 작업이 필요없지만, 허용되어 있지 않은 경우 VPC 외부로의 통신을 위한 NAT Gateway나 S3 Gateway Endpoint & SageMaker API Interface Endpoint가 필요하게 된다.
이외에 따로 파일 시스템을 마운팅 했을 경우 unmount를 한 뒤 새로운 instance에 mount 해야한다.
2. LCC 생성
마이그레이션을 위해서는 총 두가지의 LLC를 생성해야 한다.
먼저 첫 번째로는 기존의 Notebook instance의 데이터를 S3로 백업하는 LCC를 생성하도록 하겠다.
amazon-sagemaker-notebook-instance-lifecycle-config-samples/scripts/migrate-ebs-data-backup/on-start.sh at master · aws-samples
A collection of sample scripts to customize Amazon SageMaker Notebook Instances using Lifecycle Configurations - aws-samples/amazon-sagemaker-notebook-instance-lifecycle-config-samples
github.com
해당 경로에 있는 on-start.sh 파일을 설치한 뒤 아래의 AWSCLI 명령어를 통해 LCC를 하나 생성하도록 한다.
aws sagemaker create-notebook-instance-lifecycle-config --notebook-instance-lifecycle-config-name backup-LCC --on-start Content=$(base64 -i on-start.sh)
amazon-sagemaker-notebook-instance-lifecycle-config-samples/scripts/migrate-ebs-data-sync/on-create.sh at master · aws-samples/
A collection of sample scripts to customize Amazon SageMaker Notebook Instances using Lifecycle Configurations - aws-samples/amazon-sagemaker-notebook-instance-lifecycle-config-samples
github.com
그 다음 의 경로에 있는 on-create.sh 파일을 설치한 뒤 아래의 AWSCLI 명령어를 통해 LCC를 하나 생성하도록 한다.
aws sagemaker create-notebook-instance-lifecycle-config --notebook-instance-lifecycle-config-name sync-LCC --on-create Content=$(base64 -i on-create.sh)
3. 백업
기존에 갖고 있던 SageMaker Notebook instance를 중지한 뒤 back-LCC로 생성한 LCC를 해당 instance에 추가해주도록 한다.
그 다음 태그에 key로 ebs-backup-bucket을 value로는 백업할 s3 bucket을 추가해주도록 한다.
태그와 LCC를 추가한 뒤 기존 Notebook instance를 재시작하여 s3 bucket에 데이터가 백업될 수 있도록 한다. SageMaker Notebook instance가 InService 상태가 된다면 s3 bucket으로 이동하여 정상적으로 데이터가 저장되었는지 확인한다.
4. 동기화
이제 데이터 백업이 완료되었으면 데이터 이전을 위한 새로운 SageMaker Notebook instance를 하나 생성하도록 한다.
이때 LCC에는 이전에 생성하였던 sync-LCC가 들어가도록 설정을 하고 태그에는 기존에 있던 Notebook instance에 추가했던 태그 이외에도 key로 backup-snapshot, value로는 백업한 s3 bucket에 생성된 폴더 이름을 적어주도록 한다. 폴더 이름의 경우 <기존 notebook instance 이름>-<백업된 시간>으로 되어있는 걸 확인할 수 있다.
새로운 Noteboon instance가 Pending 상태에서 InService 상태로 변경되면 해당 Notebook instance에 접속해 정상적으로 데이터가 이관됐는지 확인하고 기존 Notebook instance는 삭제하도록 한다.
오늘은 이렇게 기존의 SageMaker Notebook instance의 데이터를 새로운 Notebook instance로 이관하는 방법에 대해 알아보았다. 추후에 타겟 리소스의 VPC 환경 변화나 새로운 Platform이 등장할 때 기존에 있는 데이터를 다른 Notebook instance로 이전 하는 목적으로 잘 활용하면 좋을 것 같다.
'Cloud > AWS' 카테고리의 다른 글
SageMaker Unified Studio (preview) Introduction - (1) (0) | 2025.02.02 |
---|---|
Bedrock Agent API (1) | 2025.01.04 |
Basic Bedrock API (0) | 2024.12.22 |
Amazon Bedrock (1) | 2024.11.09 |
Amazon SageMaker 개발 환경 (1) | 2024.10.20 |