AWS Sagemaker-使用入口点脚本(XGBoost)创建自定义命名模型而不创建终端节点吗?

时间:2019-11-02 16:46:28

标签: python amazon-web-services boto3 xgboost amazon-sagemaker

我将sagemaker与自定义入口点脚本一起使用,并在其中传递了经过修改的预测函数。我想存储一系列模型,以便稍后用于批处理推断,并且在需要时,我希望它利用entrypoiint脚本。我遇到的问题是常规createmodel会忽略入口点脚本。

我发现了几种创建保存入口点脚本的模型的方法。一种是通过endpoint.transformer,但是它在模型名称上添加了一个时间戳以使其唯一,这使得以后很难引用。我只可以存储这些唯一名称的列表以供以后使用,但似乎有点令人费解。

使用deploy可以准确定义名称,但是它还会创建一个不必要的终结点,然后必须将其删除,这似乎又不是正确的处理方式。

因此,在我这样拟合估算器之后

estimator = XGBoost(entry_point = 'scripts/myscript.py', 

                        role = role,
                        train_instance_count = 1, 
                        train_instance_type = 'ml.c5.2xlarge', 
                        framework_version = '0.90-1', 
                        py_version = 'py3',
                        base_job_name = job_base

                       )

    estimator.fit(s3_data)

此后,我想创建一个使用入口点脚本的模型,以便可以将其传递给以后的批处理作业。为了将其传递给这些批处理作业,如果有一个命名约定,我可以遵循,而不必将不确定的模型名称存储在某个地方,那就太好了。

所以我猜了两个具体问题:

  1. 一旦安装了估计量,将其存储为保留Entrpoint脚本引用的Sagemaker模型的最佳方法是什么?
  2. 如何为模型指定一个不添加时间戳的自定义名称

到目前为止,我只能执行1或2,因此除非有更好的方法(感觉应该如此),否则我将需要一种解决方法。如果需要通过在某处存储带有唯一时间戳的模型名称来进行解决,我不确定如何获得这个名字?使用transform时,它只会添加到基本名称中,但是不确定如何传递给定名称。因此,然后我会做一些事情,例如获取所有模型名称的列表并过滤到我需要的名称...似乎只是我在绕道而行。

谢谢

0 个答案:

没有答案