#node.js #reactjs #mongodb #amazon-s3 #amazon-machine-learning
#node.js #reactjs #mongodb #amazon-s3 #amazon-машинное обучение
Вопрос:
Я работаю над Aws Machine learning с помощью стекового кода MERN (Mongodb, Express, React, NodeJS).Но проблема в том, что когда я загружаю файл данных (.csv-файл) для машинного обучения процесса, через некоторое время обучение процесса завершается ошибкой TrainingFailed, которая следует:
Ошибка алгоритма: CannotStartContainerError. Пожалуйста, убедитесь, что контейнер можно запустить с помощью «docker run train». Пожалуйста, обратитесь к документации SageMaker для получения подробной информации. Возможно, что точка входа в Dockerfile определена неправильно или отсутствуют разрешения.
Я также настраиваю следующие параметры в учетной записи AWS.
Также предоставьте следующие разрешения в учетной записи AWS:
Я также применяю все ключи в настройках конфигурации mongodb после всех настроек и разрешений, я не могу понять, что мне нужно для процесса машинного обучения.На самом деле обучение не завершено и не может получить modelartifacts в корзине s3.Это выглядит так: процесс sagemaker не запущен. может ли кто-нибудь помочь мне в этом?
Мой DockerFile, который хранится в папке проекта с именем Dockerfile.
FROM ubuntu
RUN apt-get update
RUN apt-get install curl -y
RUN curl -sL https://deb.nodesource.com/setup_10.x -o nodesource_setup.sh
RUN bash nodesource_setup.sh
RUN apt install nodejs -y
WORKDIR /usr/app
COPY . /usr/app/
RUN npm install
EXPOSE 3000
ENTRYPOINT [ "python3.7", "/opt/ml/code/train.py" ]
Я также устанавливаю образы кода в Docker Hub для Sagemaker linear learner и xgboost, а также создаю репозитории в ECR в aws.
Я тоже копирую train.py в opt/ml/code/train.py каталог в aws, а также получил выходные данные: /home/ec2-user/SageMaker/docker_test_folder, но все равно получил эту ошибку.
Комментарии:
1. Существует проблема с изображением docker .. можете ли вы опубликовать файл dockerfile? У docker должен быть файл с именем train в workdir (обычно /opt/ml/code ), который управляет обучением..
2. Привет @rok Да, я сохраняю Dockerfile в папке проекта, а Dockerfile имеет имя Dockerfile. что мне нужно, не могли бы вы сказать мне четко? Что мне нужно сделать? Я размещаю код Dockerfile, если в файле Docker есть какая-либо ошибка, пожалуйста, сообщите мне об исправлениях, и еще одна вещь: в чем проблема с dockerimage, которую я не могу понять, потому что изображение Docker уже размещено в Docker hub.
3. ** Код Dockerfile ** ИЗ ubuntu ЗАПУСТИТЕ apt-get update ЗАПУСТИТЕ apt-get установите curl -y ЗАПУСТИТЕ curl -sL deb.nodesource.com/setup_10.x -о nodesource_setup.sh ЗАПУСТИТЬ bash nodesource_setup.sh ЗАПУСТИТЕ apt install nodejs -y WORKDIR /usr/app COPY . /usr/app/ RUN npm install ВЫСТАВИТЬ 3000 ENTRYPOINT [ «python3.7», «/opt/ml/code/train.py » ]
4. пожалуйста, отредактируйте свой вопрос и разместите там файл dockerfile с правильным форматированием, он нечитаем таким образом.. Тогда мне кажется, что вы не копируете train.py внутри контейнера, а также из названия документации должно быть train, а не train.py
5. Привет @rok Я отредактировал свой вопрос и поместил туда файл Dockerfile теперь я не могу понять, что вы хотите мне сказать, поэтому я спрашиваю вас снова Вы хотите сказать мне, что мое имя файла Dockerfile нужно заменить? или то, что вы хотите сказать, «из названия документации должно быть train, а не train.py ? Куда мне нужно скопировать train.py ?
Ответ №1:
Ошибка, которую вы получаете, означает, что sagemaker не может запустить ваш образ docker, это потому, что вы неправильно определили точку входа. Вы можете взглянуть на мой репозиторий. По сути, в вашем dockerfile вам нужно установить некоторые пакеты, создать папку, скажем /opt/ml/code
, и поместить в эту папку ваш сценарий обучения, который будет вызван train
. train
Файл должен соответствовать некоторым указаниям, которые вы можете прочитать здесь .
Комментарии:
1. Привет, @rok, какой контент из ваших команд вы написали в Dockerfile, это все полезно для меня? Я имею в виду, что я работаю над node js, как упоминалось здесь, поэтому я спрашиваю вас.
2. Я не совсем понимаю, что вы пытаетесь сделать .. пожалуйста, уточните роль архитектуры (MERN) и что вы хотите получить от sagemaker. Это то, что я делаю с sagemaker (подробности см. в моем репозитории): я создал образ docker с установленным tensorflow, у меня есть в docker обучающий скрипт (с именем train и написанный на python), который вызывает API обнаружения объектов tensorflow и обучает нейронную сеть, сам sagemaker загружает данные о передачеиз s3 и передайте модель, в конце загрузите обученную модель обратно в s3.
3. На самом деле мой код написан на node js и выражается от начала до модели обучения в машинном обучении, чтобы завершить процесс машинного обучения (посмотрите на индикатор выполнения моего запроса, который необходимо выполнить на 100%), и все ключи установлены в конфигурациях MongoDB, но в моем процессе процесс sagemaker не запускается и выдает эту ошибкусогласно вашему предложению, точка входа не идеально настроена на Dockerfile, и вы предоставляете мне свой репозиторий, но я не знаком с python, поэтому я не могу понять, какой код мне нужно использовать в моем Dockerfile.можете ли вы мне помочь?
4. Нет. Извините, но это не форум. Здесь вы публикуете очень конкретные вопросы с mwe и объясняете, что вы пробовали до сих пор. В любом случае, если я правильно понимаю, вы разработали приложение nodejs / express для запуска тренингов по машинному обучению.. это так? Я не думаю, что помещать все в контейнер — хорошая идея.. Sagemaker должен отвечать только за обучение (см. Примеры в Интернете и начните использовать python), поэтому вам следует разместить свое приложение где-нибудь в другом месте и связаться с sagemaker для запуска учебных заданий..
5. Вы пишете ENTRYPOINT [ «python3.7», «/opt/ml/code/train.py » ] в вашем dockerfile, но вы не копируете ни одного train.py в dockerfile нет команды, которая это делает .. а также, поскольку вы не опубликовали это train.py невозможно узнать, почему это не работает.. Я не могу больше помочь в этом.