【问题标题】:AWS sagemaker error - AttributeError: 'NoneType' object has no attribute 'startswith'AWS sagemaker 错误 - AttributeError:“NoneType”对象没有属性“startswith”
【发布时间】:2022-02-10 04:29:33
【问题描述】:

据此 - How to use a pretrained model from s3 to predict some data? ,我试图使用现有模型创建端点,但遇到以下错误 -

    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('.'):

根据Problem deploying the best estimator gotten with sagemaker.estimator.Estimator (w/ sklearn custom image)https://forums.aws.amazon.com/thread.jspa?threadID=313838,我使用了正确的环境变量(以及SAGEMAKER_DEFAULT_INVOCATIONS_ACCEPTSAGEMAKER_PROGRAMSAGEMAKER_SUBMIT_DIRECTORY),但不知何故,在创建端点时运行状况检查失败了。

我通过 AWS 控制台尝试了类似的事情,结果令人惊讶。 有没有办法通过代码来解决这个问题?

我的代码sn-p:

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')

【问题讨论】:

    标签: python docker amazon-s3 boto3 amazon-sagemaker


    【解决方案1】:

    对于其他登陆这里的人,我在从 ModelPackage 创建 sklearn 模型时遇到了类似的问题。

    尝试创建端点时端点日志中的错误消息:

    AttributeError: 'NoneType' 对象没有属性 'startswith'

    在定义模型包时解决了以下问题:

    • 环境变量SAGEMAKER_SUBMIT_DIRECTORY应该设置为容器上的目录,一般是'/opt/ml/model/'
    • SAGEMAKER_PROGRAM 应设置为服务脚本的名称,例如'sagemaker_serve.py'

    这些在“容器”部分中每个条目的“环境”部分下指定。

    【讨论】:

      【解决方案2】:

      根据您的堆栈跟踪,容器似乎找不到您的 entry_point 模块 (my-script.py)。

      默认情况下,容器会将'opt/ml/code'添加到Python路径中,并且可以导入该目录下的模块。

      您可以通过向SAGEMAKER_BASE_PATH 提供值(默认为'/opt/ml')将此路径修改为其他值,并将您的脚本放在'<SAGEMAKER_BASE_PATH>/code' 下,容器将导入模块'SAGEMAKER_BASE_PATH>/code/SAGEMAKER_PROGRAM'

      【讨论】:

        【解决方案3】:

        尝试使用:sagemaker.model.FrameworkModel 使用所需脚本创建模型

        【讨论】:

          【解决方案4】:

          对我有用的是从训练作业创建模型,然后使用问题中列出的环境变量:

          training_src_file     = "s3://bucket_data_assets/training-src-files.tar.gz"
          churn_model = sagemaker_session.create_model_from_job(
              training_job_name=completed_training_job_name, 
              name=None, 
              role=role, image_uri=None, 
              model_data_url=None, 
              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": "train.py", #the entry point present in training-src-files.tar.gz
               "SAGEMAKER_REGION": "us-east-1",
               "SAGEMAKER_SUBMIT_DIRECTORY": training_src_file,
              }
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2017-10-05
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2022-07-20
            • 1970-01-01
            • 1970-01-01
            • 2017-03-10
            相关资源
            最近更新 更多