denesh kumar
denesh kumar

Reputation: 41

SageMaker Train job is not creating /opt/ml/input/data/training directory

I am trying to create a custom algorithm by following the instruction given in this tutorial.

When I am running the train job it is failing with error No such file or directory: '/opt/ml/input/data/training'.

As per the documentation, SageMaker should create these documents and copy the data and artifacts during the runtime. But this is not happening.

Please share your thoughts on this.

My DockerFile content,

# Build an image that can do training and inference in SageMaker
 # This is a Python 2 image that uses the nginx, gunicorn, flask stack
 # for serving inferences in a stable way.

 FROM ubuntu:16.04

 MAINTAINER Amazon AI <sage-learner@amazon.com


 RUN apt-get -y update && apt-get install -y --no-install-recommends \
          wget \
          python \
          nginx \
          ca-certificates \
     && rm -rf /var/lib/apt/lists/*

 # Here we get all python packages.
 # There's substantial overlap between scipy and numpy that we eliminate by
 # linking them together. Likewise, pip leaves the install caches populated which uses
 # a significant amount of space. These optimizations save a fair amount of space in the
 # image, which reduces start up time. RUN wget https://bootstrap.pypa.io/get-pip.py && python get-pip.py && \
     pip install numpy==1.16.2 scipy==1.2.1 scikit-learn==0.20.2 pandas flask gevent gunicorn && \
         (cd /usr/local/lib/python2.7/dist-packages/scipy/.libs; rm *; ln ../../numpy/.libs/* .) && \
         rm -rf /root/.cache

 # Set some environment variables. PYTHONUNBUFFERED keeps Python from buffering our standard
 # output stream, which means that logs can be delivered to the user quickly. PYTHONDONTWRITEBYTECODE
 # keeps Python from writing the .pyc files which are unnecessary in this case. We also update
 # PATH so that the train and serve programs are found when the container is invoked.

 ENV PYTHONUNBUFFERED=TRUE ENV PYTHONDONTWRITEBYTECODE=TRUE ENV
 PATH="/opt/program:${PATH}"

 # Set up the program in the image COPY decision_trees /opt/program WORKDIR /opt/program

Upvotes: 4

Views: 6475

Answers (1)

Ujjwal Bhardwaj
Ujjwal Bhardwaj

Reputation: 755

The training folder name depends on the InputDataConfig that you provide in the CreateTrainingJob action: https://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateTrainingJob.html#SageMaker-CreateTrainingJob-request-InputDataConfig

If the channel name is "xyz", it will create a folder with the same name in the said location (/opt/ml/input/data/xyz)

Upvotes: 6

Related Questions