훈련 또는 추론을 위해 사용자 지정 컨테이너를 Amazon SageMaker로 가져올 때 발생하는 문제를 해결하고 싶습니다.
간략한 설명
다음 방법 중 하나를 사용하여 SageMaker에서 컨테이너 이미지를 사용자 지정할 수 있습니다.
사전 구축된 SageMaker 컨테이너 확장: 추가 기능을 추가하여 환경 또는 프레임워크를 사용자 지정해야 하는 경우 이 접근 방식을 사용합니다. 이 방법을 사용하면 딥 러닝 라이브러리가 이미 사전 정의되어 있으므로 컨테이너 이미지를 처음부터 구축할 필요가 없습니다.
기존 보유 컨테이너 가져오기: 사전 구축된 SageMaker 이미지에서 현재 지원되지 않는 추가 기능 및 안전 요구 사항과 함께 데이터 처리, 모델 훈련 또는 실시간 추론을 위한 기존 이미지가 있는 경우 이 접근 방식을 사용합니다.
컨테이너 이미지를 처음부터 구축: 사용자 지정 알고리즘이 있고 아직 사용자 지정 컨테이너 이미지가 없는 경우 이 방법을 사용하는 것이 좋습니다.
이 방법을 사용할 때 발생하는 오류는 대부분 컨테이너 이미지를 잘못 구축한 것과 관련이 있을 수 있습니다. 따라서 컨테이너가 올바르게 구성되었는지 확인합니다.
해결 방법
사전 구축된 SageMaker 컨테이너 확장
- Dockerfile에 환경 변수 SAGEMAKER_SUBMIT_DIRECTORY 및 SAGEMAKER_PROGRAM이 설정되어 있는지 확인합니다.
- Dockerfile에 필요한 추가 라이브러리를 설치했는지 확인합니다. 다음 명령을 실행하여 이 작업을 수행할 수 있습니다.
# SageMaker PyTorch image
FROM 763104351884.dkr.ecr.us-east-1.amazonaws.com/pytorch-training:1.5.1-cpu-py36-ubuntu16.04
ENV PATH="/opt/ml/code:${PATH}"
# this environment variable is used by the SageMaker PyTorch container to determine our user code directory.
ENV SAGEMAKER_SUBMIT_DIRECTORY /opt/ml/code
# install the libraries using pip
COPY requirements.txt./requirements.txt
RUN pip install requirements.txt
# /opt/ml and all subdirectories are utilized by SageMaker, use the /code subdirectory to store your user code.
COPY cifar10.py /opt/ml/code/cifar10.py
# Defines cifar10.py as script
entrypoint
ENV SAGEMAKER_PROGRAM cifar10.py
- 이미지 구축이 완료되면 로컬 모드에서 컨테이너를 실행합니다. 이미지가 예상대로 작동하는지 확인합니다.
자세한 내용은 사전 구축된 컨테이너 확장을 참조하세요.
기존 보유 컨테이너 가져오기
훈련 또는 추론을 위해 해당 SageMaker 도구 키트 라이브러리를 설치했는지 확인합니다. 이러한 도구 키트는 컨테이너 시작 시 실행해야 하는 코드가 포함된 진입점과 함께 코드 및 기타 리소스의 위치를 정의합니다. SageMaker 훈련 작업 또는 추론 엔드포인트를 생성할 때 SageMaker는 다음과 같은 디렉터리를 생성합니다.
/opt/ml
├── input
│
├── model
│
├── code
│
├── output
│
└── failure
훈련 작업을 실행할 때 /opt/ml/input 디렉터리에는 Amazon Simple Storage Service(S3)에 저장된 데이터에 액세스하는 데 사용되는 데이터 채널에 대한 정보가 들어 있습니다. 훈련 스크립트(train.py)는 종속된 항목들과 함께 opt/ml/code에 저장됩니다. 훈련 작업이 끝난 후 스크립트가 /opt/ml/model 디렉터리에 최종 모델을 기록해야 합니다.
훈련된 모델을 SageMaker에서 호스트하여 추론을 수행하는 경우 모델은 /opt/ml/model에 저장되고 추론 코드(inference.py)는 /opt/ml/code에 저장됩니다.
자세한 내용은 SageMaker에서 작동하도록 자체 Docker 컨테이너 조정을 참조하세요.
컨테이너를 처음부터 구축
- 컨테이너가 실행 파일로 실행되도록 하려면 Dockerfile에서 ENTRYPOINT 명령어의 exec 형식을 사용합니다.
ENTRYPOINT ["python", "cifar10.py"]
- 훈련 작업의 경우 훈련 스크립트는 훈련 성공 시 0으로 종료되어야 하고, 훈련 실패 시 0이 아닌 종료 코드로 종료되어야 합니다.
- 최종 모델이 /opt/ml/model에 기록되었고 모든 종속된 항목과 아티팩트가 /opt/ml/output에 저장되어 있는지 확인합니다. 훈련 작업이 실패할 경우 스크립트는 실패 정보를 /opt/ml/output/faile에 기록해야 합니다.
- 추론 엔드포인트를 생성할 때는 모델이 FILENAME.tar.gz 형식으로 저장되어야 합니다. 컨테이너는 추론을 위해 /invocations에서 HTTP POST 요청을 구현하고 엔드포인트 상태 확인을 위해 /ping에서 HTTP GET 요청을 구현해야 합니다.
자세한 내용은 자체 알고리즘 및 모델을 사용하여 컨테이너 생성을 참조하세요.
관련 정보
Amazon SageMaker 로컬 모드를 사용하여 노트북 인스턴스에서 훈련