내용으로 건너뛰기

Amazon SageMaker AI의 수명 주기 구성 스크립트 관련 문제를 해결하려면 어떻게 해야 합니까?

3분 분량
0

Amazon SageMaker AI의 수명 주기 구성(LCC) 스크립트와 관련된 문제를 해결하고 싶습니다.

해결 방법

LCC 스크립트 제한 시간 초과

LCC 스크립트 실행 시간이 5분 할당량을 초과하면 스크립트 제한 시간이 초과됩니다. 

스크립트 런타임을 줄이려면 다음 작업을 수행하십시오.

  • 필요한 단계 수를 줄입니다. 예를 들어 대형 패키지를 설치하는 conda 환경을 제한합니다.
  • 작업을 병렬 프로세스로 실행합니다.
  • 스크립트에서 hangup 신호를 무시하는 nohup 명령을 실행하여 스크립트가 5분 이내에 완료될 수 있도록 합니다.

nohup 명령을 실행하려면 특정 코드 줄에서 명령을 초기화한 다음 코드 줄을 앰퍼샌드로 끝내십시오.

예제 스크립트:

===
#!/bin/bash

set -e

# OVERVIEW
# This script executes an existing Notebook file on the instance during start using nbconvert(https://github.com/jupyter/nbconvert)

# PARAMETERS

ENVIRONMENT=python3
NOTEBOOK_FILE=/home/ec2-user/SageMaker/test.ipynb

source /home/ec2-user/anaconda3/bin/activate "$ENVIRONMENT"
nohup jupyter nbconvert --to notebook --ExecutePreprocessor.timeout=-1 --ExecutePreprocessor.kernel_name=python3 --execute "$NOTEBOOK_FILE" &

source /home/ec2-user/anaconda3/bin/deactivate

====

기존 LLC를 삭제할 수 없음

참고: AWS Command Line Interface(AWS CLI) 명령을 실행할 때 오류가 발생하면 AWS CLI의 오류 해결을 참조하십시오. 또한 최신 AWS CLI 버전을 사용하고 있는지 확인하십시오.

SageMaker Studio 도메인에 이미 연결된 LCC 스크립트를 삭제하려고 하면 다음과 같은 오류 메시지가 표시될 수 있습니다.

"Loading of domain lifecycle failed. [400] ResourceNotFound: LifecycleConfig does not exist."

이 문제를 해결하려면 먼저 LCC 스크립트를 분리한 다음 삭제해야 합니다.

또는 도메인 구성에서 LifecycleConfigArns 파라미터를 빈 목록으로 설정할 수 있습니다.

도메인을 재구성하려면 다음 단계를 완료하십시오.

  1. 다음 describe-domain 명령을 실행하여 LifecycleConfigArns 파라미터에서 연결된 LCC 스크립트의 목록을 확인합니다.

    aws sagemaker describe-domain —domain-id d-xxxxxxxxx
  2. 다음 update-domain 명령을 실행하여 파라미터를 빈 목록으로 설정합니다.

    aws sagemaker update-domain --domain-id d-xxxxxxxxx \
    --default-user-settings '{
      "JupyterServerAppSettings": {
        "DefaultResourceSpec": {
          "InstanceType": "system"
        },
        "LifecycleConfigArns": []
      }
    }'

update-domain 명령을 다시 실행하면 도메인이 더 이상 LCC 스크립트를 참조하지 않습니다. 그러면 새 LCC 스크립트를 도메인에 연결할 수 있습니다.

LCC 스크립트가 패키지를 설치할 수 없음

LCC가 SageMaker Studio 도메인 또는 노트북 인스턴스에 패키지를 설치할 수 없는 경우 LCC 스크립트가 도메인 또는 인스턴스에 액세스하지 못하는 것일 수 있습니다. 이 문제를 해결하려면 연결된 SageMaker Studio 도메인 또는 노트북 인스턴스를 Amazon 가상 프라이빗 클라우드(VPC)에 연결해야 합니다. VPC가 인터넷 액세스도 허용해야 합니다.

PublicInternetOnly 모드에서 인터넷을 통한 기본 통신에 VPC를 연결할 수도 있습니다. 또는 VPC 전용 모드에서 인터넷과의 통신을 설정할 수 있습니다.

VPC 전용 모드를 사용하는 경우 다음 트래픽을 허용하는 인바운드 및 아웃바운드 규칙으로 보안 그룹을 설정하십시오.

  • 포트 2049에서 도메인과 Amazon Elastic File System(Amazon EFS) 볼륨 간의 TCP를 통한 NFS 트래픽
  • 보안 그룹 내의 TCP 트래픽
    참고: Jupyter Server 애플리케이션과 커널 게이트웨이 애플리케이션을 연결하려면 보안 그룹의 TCP 트래픽이 필요합니다. 최소한 8192~65535 범위의 포트에 대한 액세스를 허용해야 합니다.

인터넷 액세스를 허용하려면 인터넷에 액세스할 수 있는 NAT 게이트웨이를 사용해야 합니다.

인스턴스가 LCC 스크립트 콘텐츠를 찾을 수 없음

애플리케이션 인스턴스가 LCC 스크립트에 있는 콘텐츠를 찾을 수 없는 경우 다음과 같은 오류 메시지가 표시될 수 있습니다.

"stdbuf: failed to run command "/opt/ml/lifecycleconfig/lifecycle_script.sh": No such file or directory"

이 오류는 Windows 형식의 기호와 Unix 형식의 기호 간의 비호환성 때문에 발생할 수 있습니다. Windows 문자는 CRLF 줄 끝(\r\n)을 사용하고 Unix는 LF 줄 끝(\n)을 사용합니다.

Amazon SageMaker AI 노트북 인스턴스는 Amazon Linux 2(AL2) 운영 체제(OS)에서 실행됩니다. Windows OS에서 다운로드하여 LLC에 직접 연결하는 LCC bash 스크립트는 Linux OS에서 유효하지 않습니다.

이 문제를 해결하려면 다음 단계를 완료하십시오.

  1. Notepad++에서 bash 스크립트를 엽니다.
  2. 보기를 선택한 다음 기호 보기를 선택합니다.
  3. Windows(\r\n) 줄 끝을 보려면 모든 기호 표시를 선택합니다. 
  4. 스크립트를 Unix에서 유효하게 만들려면 CRLF를 LF(\n)로 변경하십시오.
  5. LCC에 스크립트를 연결합니다.

관련 정보

수명 주기 구성 디버그

VPC의 Studio 노트북을 외부 리소스에 연결

AWS 공식업데이트됨 7달 전