Как обеспечить установку библиотек с помощью sagemaker? - PullRequest
0 голосов
/ 27 ноября 2018

У меня есть блокнот Jupyter со стандартным шаблоном кода, например,

из sagemaker.tensorflow import TensorFlow

import sagemaker
from sagemaker import get_execution_role
sagemaker_session = sagemaker.Session()
role = get_execution_role()

tf_estimator = TensorFlow(entry_point='sagemaker_predict_2.py', role=role,
                          training_steps=10000, evaluation_steps=100,
                          train_instance_count=1, train_instance_type='ml.p2.xlarge',
                          framework_version='1.10.0')
tf_estimator.fit('s3://XXX-sagemaker/XXX')

Это нормально запускается, но в итоге выдает ошибку

2018-11-27 06:21:12 Starting - Starting the training job...
2018-11-27 06:21:15 Starting - Launching requested ML instances.........
2018-11-27 06:22:44 Starting - Preparing the instances for training...
2018-11-27 06:23:35 Downloading - Downloading input data...
2018-11-27 06:24:03 Training - Downloading the training image......
2018-11-27 06:25:12 Training - Training image download completed. Training in progress..
2018-11-27 06:25:11,813 INFO - root - running container entrypoint
2018-11-27 06:25:11,813 INFO - root - starting train task
2018-11-27 06:25:11,833 INFO - container_support.training - Training starting
2018-11-27 06:25:15,306 ERROR - container_support.training - uncaught exception during training: No module named keras
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/container_support/training.py", line 36, in start
    fw.train()
  File "/usr/local/lib/python2.7/dist-packages/tf_container/train_entry_point.py", line 143, in train
    customer_script = env.import_user_module()
  File "/usr/local/lib/python2.7/dist-packages/container_support/environment.py", line 101, in import_user_module
    user_module = importlib.import_module(script)
  File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module
    __import__(name)
  File "/opt/ml/code/sagemaker_predict_2.py", line 7, in <module>
    import keras
ImportError: No module named keras  

Мой sagemaker_predict_2.py нуждается в некоторых из этих библиотек:

import pandas as pd
import numpy as np
import sys
import keras
from keras.models import Model, Input
from keras.layers import LSTM, Embedding, Dense, TimeDistributed, Dropout, Bidirectional
from keras.wrappers.scikit_learn import KerasClassifier
from keras_contrib.layers import CRF

Я полагаю, у него нет проблем с импортом pandas и numpy, но он умирает при импорте keras.Я думал, что keras был стандартным в ноутбуке.Когда я запускаю этот скрипт, есть ли в нем какая-то другая неинициализированная среда?

Кроме того, я считаю, что keras_contrib не является стандартным, поэтому мне понадобится способ установить его.Как мне это сделать?

Я пробовал !pip install keras в ячейке выше, но он сообщил, что Requirement already satisfied, так что, похоже, в моей среде jupyter есть библиотека.Но начинать с sagemaker_predict_2.py должно быть в другой среде?

1 Ответ

0 голосов
/ 12 декабря 2018

Вы правы.Sagemaker_predict_2.py работает в другой среде, отличной от вашей записной книжки.Этот конкретный код выполняется в SageMaker, выполняемом в нашем предварительно определенном контейнере TensorFlow Docker.

При установке ваших зависимостей в экземпляре ноутбука будет разрешен только доступ к установленным библиотекам в ядре ноутбука.

Что касается установкиваши зависимости внутри работающего контейнера Docker, что может быть достигнуто путем указания ваших зависимостей в needs.txt .

Поскольку итерации могут занимать от 8-10 минутРекомендуется использовать локальный режим, чтобы убедиться, что ваше учебное задание может выполняться локально перед отправкой учебного задания в SageMaker.Это можно сделать, указав training_instance_type как «локальный», или, пожалуйста, обратитесь к этой записной книжке: https://github.com/awslabs/amazon-sagemaker-examples/blob/master/sagemaker-python-sdk/tensorflow_distributed_mnist/tensorflow_local_mode_mnist.ipynb

Что делает локальный режим, по сути, запускает ваш док-контейнер на локальном хосте, который выполняет код Python.Это может быть на нашем экземпляре ноутбука SageMaker или на вашем локальном компьютере.

...