Dockerfile 사양 - Amazon SageMaker

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Dockerfile 사양

이미지를 성공적으로 생성하려면 Dockerfile에서 지정하는 이미지가 다음 섹션의 사양과 일치해야 합니다.

이미지 실행

  • Entrypoint - 를 사용하여 이미지에 진입점을 임베딩하는 것이 좋습니다.Docker CMD 또는 Entrypoint 지침. 런타임에 컨테이너로 전달ContainerArguments되는 ContainerEntrypoint 및 를 구성할 수도 있습니다.

  • EnvVariables – Studio를 사용하면 컨테이너에 사용할 수 있는 ContainerEnvironment 변수를 구성할 수 있습니다. 환경 변수는 의 환경 변수로 덮어씁니다 SageMaker. 더 나은 경험을 제공하기 위해 환경 변수는 일반적으로 플랫폼 환경에 우선 순위를 SageMaker_namespaced 부여하는 AWS_ 것입니다.

    다음은 환경 변수입니다.

    • AWS_REGION

    • AWS_DEFAULT_REGION

    • AWS_CONTAINER_CREDENTIALS_RELATIVE_URI

    • SageMaker_SPACE_NAME

사용자 및 파일 시스템 사양

  • WorkingDirectory - 공간의 Amazon EBS 볼륨은 경로 에 탑재됩니다/home/sagemaker-user. 탑재 경로는 변경할 수 없습니다. WORKDIR 지침을 사용하여 이미지의 작업 디렉터리를 내의 폴더로 설정합니다/home/sagemaker-user.

  • UID - 의 사용자 ID Docker 컨테이너. UID=1000은 지원되는 값입니다. 사용자에게 sudo 액세스 권한을 추가할 수 있습니다. 는 컨테이너에서 실행되는 프로세스가 필요한 것보다 더 많은 권한을 갖지 못하도록 다시 매핑IDs됩니다.

  • GID - 의 그룹 ID Docker 컨테이너. GID=100은 지원되는 값입니다. 사용자에게 sudo 액세스 권한을 추가할 수 있습니다. 는 컨테이너에서 실행되는 프로세스가 필요한 것보다 더 많은 권한을 갖지 못하도록 다시 매핑IDs됩니다.

  • 메타데이터 디렉터리 - 에서 사용하는 /opt/.sagemakerintenral/opt/ml 디렉터리입니다 AWS. 의 메타데이터 파일에는 와 같은 리소스에 대한 메타데이터가 /opt/ml 포함되어 있습니다DomainId.

    다음 명령을 사용하여 파일 시스템 내용을 표시합니다.

    cat /opt/ml/metadata/resource-metadata.json {"AppType":"JupyterLab","DomainId":"example-domain-id","UserProfileName":"example-user-profile-name,"ResourceArn":"arn:aws:sagemaker:AWS 리전:111122223333;:app/domain-ID/user-ID/Jupyte rLab/default","ResourceName":"default","AppImageVersion":"current"}
  • 로깅 디렉터리 - 의 로깅 디렉터리 JupyterLab 및 이와 연결된 확장을 위해 예약/var/logs/studio됩니다. 이미지를 생성할 때 폴더를 사용하지 않는 것이 좋습니다.

상태 확인 및 URL 애플리케이션

  • Base URL – URL BYOI 애플리케이션의 기본은 여야 합니다jupyterlab/default. 애플리케이션은 하나만 가질 수 있으며 항상 이름이 여야 합니다default.

  • HealthCheck API – 는 포트 8888HealthCheckAPI에서 를 HostAgent 사용하여 JupyterLab 애플리케이션의 상태를 확인합니다. jupyterlab/default/api/status는 상태 확인을 위한 엔드포인트입니다.

  • Home/Default URL - 에서 사용하는 /opt/.sagemakerinternal/opt/ml 디렉터리입니다 AWS. 의 메타데이터 파일에는 와 같은 리소스에 대한 메타데이터가 /opt/ml 포함되어 있습니다DomainId.

  • 인증 - 사용자의 인증을 활성화하려면 Jupyter 노트북 토큰 또는 암호 기반 인증을 끄고 모든 오리진을 허용합니다.

다음은 샘플입니다.Amazon Linux 2 Dockerfile 위의 사양을 충족하는 :

FROM public.ecr.aws/amazonlinux/amazonlinux:2 ARG NB_USER="sagemaker-user" ARG NB_UID="1000" ARG NB_GID="100" RUN yum install --assumeyes python3 shadow-utils && \ useradd --create-home --shell /bin/bash --gid "${NB_GID}" --uid ${NB_UID} ${NB_USER} && \ yum clean all && \ python3 -m pip install jupyterlab RUN python3 -m pip install --upgrade pip RUN python3 -m pip install --upgrade urllib3==1.26.6 USER ${NB_UID} CMD jupyter lab --ip 0.0.0.0 --port 8888 \ --ServerApp.base_url="/jupyterlab/default" \ --ServerApp.token='' \ --ServerApp.allow_origin='*'

다음은 샘플입니다.Amazon SageMaker Distribution Dockerfile 위의 사양을 충족하는 :

FROM public.ecr.aws/sagemaker/sagemaker-distribution:latest-cpu ARG NB_USER="sagemaker-user" ARG NB_UID=1000 ARG NB_GID=100 ENV MAMBA_USER=$NB_USER USER root RUN apt-get update RUN micromamba install sagemaker-inference --freeze-installed --yes --channel conda-forge --name base USER $MAMBA_USER ENTRYPOINT ["jupyter-lab"] CMD ["--ServerApp.ip=0.0.0.0", "--ServerApp.port=8888", "--ServerApp.allow_origin=*", "--ServerApp.token=''", "--ServerApp.base_url=/jupyterlab/default"]