AWS ошибка sagemaker - AttributeError: объект 'NoneType' не имеет атрибута 'startwith' - PullRequest
1 голос
/ 20 июня 2020

В соответствии с этим - Как использовать предварительно обученную модель из s3 для прогнозирования некоторых данных? , я пытался использовать существующую модель для создания конечной точки, но столкнулся со следующей ошибкой -

    Traceback (most recent call last):
  File "/miniconda3/lib/python3.7/site-packages/gunicorn/workers/base_async.py", line 55, in handle
    self.handle_request(listener_name, req, client, addr)
  File "/miniconda3/lib/python3.7/site-packages/gunicorn/workers/ggevent.py", line 143, in handle_request
    super().handle_request(listener_name, req, sock, addr)
  File "/miniconda3/lib/python3.7/site-packages/gunicorn/workers/base_async.py", line 106, in handle_request
    respiter = self.wsgi(environ, resp.start_response)
  File "/miniconda3/lib/python3.7/site-packages/sagemaker_sklearn_container/serving.py", line 124, in main
    serving_env.module_dir)
  File "/miniconda3/lib/python3.7/site-packages/sagemaker_sklearn_container/serving.py", line 101, in import_module
    user_module = importlib.import_module(module_name)
  File "/miniconda3/lib/python3.7/importlib/__init__.py", line 118, in import_module
    if name.startswith('.'):

Согласно Проблема с развертыванием лучшего оценщика, полученного с помощью sagemaker.estimator.Estimator (с настраиваемым образом sklearn) , https://forums.aws.amazon.com/thread.jspa?threadID=313838, я использую правильный env (вместе с SAGEMAKER_DEFAULT_INVOCATIONS_ACCEPT, SAGEMAKER_PROGRAM и SAGEMAKER_SUBMIT_DIRECTORY), но каким-то образом проверки работоспособности не работают при создании конечной точки. .

Есть ли способ сделать это с помощью кода?

Мой фрагмент кода -

trainedmodel = sagemaker.model.Model(
model_data='s3://my-bucket/my-key/output/model.tar.gz',
image='my-image',
env={"SAGEMAKER_DEFAULT_INVOCATIONS_ACCEPT": "text/csv", 
     "SAGEMAKER_USE_NGINX": "True", 
     "SAGEMAKER_WORKER_CLASS_TYPE": "gevent", 
     "SAGEMAKER_KEEP_ALIVE_SEC": "60", 
     "SAGEMAKER_CONTAINER_LOG_LEVEL": "20",
     "SAGEMAKER_ENABLE_CLOUDWATCH_METRICS": "false",
     "SAGEMAKER_PROGRAM": "my-script.py",
     "SAGEMAKER_REGION": "us-east-1",
     "SAGEMAKER_SUBMIT_DIRECTORY": "s3://my-bucket/my-key/source/sourcedir.tar.gz"
    },
role=role)

trainedmodel.deploy(initial_instance_count=1, instance_type='ml.c4.xlarge', endpoint_name = 'my-endpoint')

1 Ответ

0 голосов
/ 05 августа 2020

Судя по вашей трассировке стека, похоже, что контейнер не может найти ваш модуль entry_point (my-script.py).

По умолчанию контейнер добавит «/ opt / ml / code» к Python путь и модули в этом каталоге могут быть импортированы.

Вы можете изменить этот путь на другие значения, указав значения SAGEMAKER_BASE_PATH (по умолчанию "/ opt / ml") и поместив свой сценарий в " / code "и контейнер импортирует модуль" / code / SAGEMAKER_PROGRAM "

...