Amazon SageMaker AI 노트북 인스턴스에 추가 라이브러리를 설치하려고 하면 시간 초과 오류가 발생합니다.
해결 방법
수명 주기 구성 스크립트가 5분 이상 실행되면 스크립트가 실패하고 SageMaker AI가 노트북 인스턴스를 생성하거나 시작하지 않습니다.
이 문제를 해결하려면 다음 방법 중 하나를 사용하십시오.
nohup 명령 실행
임시 해결 방법은 패키지를 설치할 때까지 nohup 명령을 실행하여 수명 주기 구성 스크립트가 백그라운드에서 계속 실행되도록 하는 것입니다.
시작 부분에 nohup를, 끝 부분에 앰퍼샌드(&)를 사용하여 다음 명령을 실행합니다.
#!/bin/bash
set -e
nohup pip install xgboost &
라이브러리를 설치하면 스크립트 실행이 중지됩니다. SageMaker AI는 이러한 상황이 발생할 때 알리지 않지만 ps 명령을 실행하면 스크립트의 상태를 확인할 수 있습니다.
참고: 대용량 Amazon Simple Storage Service(Amazon S3) 객체를 다운로드하는 경우와 같은 다른 스크립트 제한 시간 시나리오에서도 nohup 명령을 실행할 수 있습니다.
노트북 인스턴스의 볼륨에 사용자 지정 영구 Conda 설치 생성
-
기존 노트북 인스턴스의 터미널에서 원하는 편집기를 통해 다음 명령을 실행하여 .sh 파일을 생성합니다.
vim custom-script.sh
-
on-create 스크립트의 내용을.sh 파일에 추가합니다. 스크립트를 복사하려면 GitHub 웹 사이트의 amazon-sagemaker-notebook-instance-lifecycle-config-samples를 참조하십시오. 이 스크립트는 사용자 지정 Conda 설치에 새 Conda 환경을 생성합니다. 이 스크립트는 또한 새로운 Conda 환경에 NumPy 및 Boto3을 설치합니다.
참고: Miniconda 설치 프로그램과 ipykernel을 다운로드하려면 노트북 인스턴스가 인터넷에 연결되어 있어야 합니다.
-
다음 명령을 실행하여 스크립트를 실행 가능으로 표시하고 스크립트를 실행합니다.
chmod +x custom-script.sh
./custom-script.sh
-
설치가 완료되면 노트북 인스턴스를 중지합니다.
-
on-start 스크립트를 .sh 파일에 추가합니다. 스크립트를 복사하려면 GitHub 웹 사이트의 amazon-sagemaker-notebook-instance-lifecycle-config-samples를 참조하십시오.
-
중지된 노트북 인스턴스에서 on-start 스크립트를 수명 주기 구성으로 추가합니다. 노트북 인스턴스를 시작할 때마다 스크립트가 사용자 지정 환경을 Jupyter의 커널로 사용할 수 있게 해줍니다.
-
노트북 인스턴스를 시작한 다음 사용자 지정 환경에 사용자 지정 라이브러리를 설치합니다.
예를 들어 pyarrow를 설치하려면 다음 명령을 실행합니다.
import sys
!conda install --yes --prefix {sys.prefix} -c conda-forge pyarrow
노트북 인스턴스를 중지했다가 다시 시작해도 사용자 지정 Conda 환경 및 라이브러리를 계속 사용할 수 있습니다. 다시 설치할 필요가 없습니다.
Conda를 업데이트해야 한다는 오류 메시지가 표시되면 다음 명령을 실행합니다.
!conda install -p "/home/ec2-user/anaconda3" "conda>=4.8" --yes
!conda install -p "/home/ec2-user/SageMaker/custom-miniconda/miniconda" "conda>=4.8" --yes
Conda 설치가 완료되면 라이브러리를 설치합니다.
Neptune 노트북을 생성하고 해당 정책 및 연결 구성
Amazon Neptune에서 노트북을 생성하면 Neptune이 aws s3 cp s3://aws-neptune-notebook/graph_notebook.tar.gz /tmp/graph_notebook.tar.gz와 같은 S3 객체를 가리키는 기본 수명 주기 구성을 사용합니다. Neptune AWS Identity and Access Management(IAM) 역할에는 arn:aws:s3:::aws-neptune-notebook 및 arn:aws:s3:::aws-neptune-notebook/ 리소스에 대한 s3:GetObject 및 s3:ListBucket 작업을 부여하는 권한 정책이 있어야 합니다.
또한 Neptune IAM 역할에는 SageMaker AI에 AssumeRole 작업을 부여하는 신뢰 정책이 있어야 합니다. 예를 들어 노트북과 연결된 DB 클러스터에서 IAM 데이터베이스 인증을 활성화한 경우 관련 DB 클러스터에 neptune-db: 작업을 부여하는 권한 정책이 IAM 역할에 있어야 합니다.
가상 프라이빗 클라우드(VPC)를 사용하여 Neptune 노트북을 인터넷에 연결하는 경우 VPC에 NAT 게이트웨이를 연결해야 합니다. 또한 Amazon S3과 Python Package Index(PyPI)에 대한 인터넷 액세스를 허용하도록 보안 그룹을 구성해야 합니다. PyPI에 대한 자세한 내용은 Python Package Index 웹 사이트를 참조하십시오.
참고: 수명 주기 구성 스크립트 관련 문제를 해결하려면 Amazon CloudWatch Logs를 사용하십시오. 로그는 다음 위치에서 찾을 수 있습니다.
- 로그 그룹: /aws/sagemaker/NotebookInstances
- 로그 스트림: example_notebook_instance_name/LifecycleConfigOnStart
관련 정보
Amazon SageMaker AI란 무엇입니까?
수명 주기 구성 디버그