Reputation: 41
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
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