![](/img/trans.png)
[英]How do I deploy a pre trained sklearn model on AWS sagemaker? (Endpoint stuck on creating)
[英]How can I deploy a re-trained Sagemaker model to an endpoint?
使用sagemaker.estimator.Estimator
,我想在重新训练后重新部署model(调用新数据fit
)。
当我打电话给这个
estimator.deploy(initial_instance_count=1, instance_type='ml.m5.xlarge')
我得到一个错误
botocore.exceptions.ClientError: An error occurred (ValidationException)
when calling the CreateEndpoint operation:
Cannot create already existing endpoint "arn:aws:sagemaker:eu-east-
1:1776401913911:endpoint/zyx".
显然我想使用像UpdateEndpoint这样的功能。 我如何从这个 API 访问该功能?
update_endpoint
自 AFAIK 以来已被弃用。 要从这个 API 本身重新创建UpdateEndpoint
功能并将新的适合训练作业部署到现有端点,我们可以这样做(此示例使用sagemaker sklearn
API):
from sagemaker.sklearn.estimator import SKLearn
sklearn_estimator = SKLearn(
entry_point=model.py,
instance_type=<instance_type>,
framework_version=<framework_version>,
role=<role>,
dependencies=[
<comma seperated names of files>
],
hyperparameters={
'key_1':value,
'key_2':value,
...
}
)
sklearn_estimator.fit()
sm_client = boto3.client('sagemaker')
# Create the model
sklearn_model = sklearn_estimator.create_model()
# Define an endpoint config and an endpoint
endpoint_config_name = 'endpoint-' + datetime.utcnow().strftime("%Y%m%d%H%m%s")
current_endpoint = endpoint_config_name
# From the Model : create the endpoint config and the endpoint
sklearn_model.deploy(
initial_instance_count=<count>,
instance_type=<instance_type>,
endpoint_name=current_endpoint
)
# Update the existing endpoint if it exists or create a new one
try:
sm_client.update_endpoint(
EndpointName=DESIRED_ENDPOINT_NAME, # The Prod/Existing Endpoint Name
EndpointConfigName=endpoint_config_name
)
except Exception as e:
try:
sm_client.create_endpoint(
EndpointName=DESIRED_ENDPOINT_NAME, # The Prod Endpoint name
EndpointConfigName=endpoint_config_name
)
except Exception as e:
logger.info(e)
sm_client.delete_endpoint(EndpointName=current_endpoint)
是的,在model.deploy
创建了一个模型、一个端点配置和一个端点。 当您从已经部署的、经过训练的估算器再次调用该方法时,它会产生错误,因为已经部署了类似配置的端点。 我鼓励你尝试:
使用update_endpoint=True
参数。 来自SageMaker SDK 文档: “此外,可以将链接到您的模型的不同端点配置部署到现有的 SageMaker 端点。这可以通过为endpoint_name
参数指定现有端点名称以及update_endpoint
在您的deploy()
调用中参数为 True。”
或者,如果您想创建一个单独的模型,您可以在deploy
指定一个新的model_name
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.