SageMaker 在不部署的情况下创建 PyTorchModel

SageMaker create PyTorchModel without deploying

如果我像这样实例化 SageMaker PyTorchModel 对象:

from sagemaker.pytorch import PyTorchModel

model = PyTorchModel(name=name_from_base('model-name'),
                     model_data=model_data,
                     role=role,
                     framework_version='1.0.0',
                     entry_point='serve.py',
                     source_dir='src',
                     sagemaker_session=sagemaker_session,
                     predictor_cls=ImagePredictor)

#model.create_without_deploying??

有没有一种方法可以使用 sagemaker python SDK 创建此模型,以便该模型显示在 SageMaker 控制台中,但 没有 实际部署它到端点?

我认为使用 high-level SageMaker Pyhton SDK 无法做到这一点。但是,您应该能够通过使用 low-level boto3 https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker.html#SageMaker.Client.create_model 调用 CreateModel API 来完成此操作。供您参考,下面是有关如何操作的示例代码片段。

%%time
import boto3
import time

sage = boto3.Session().client(service_name='sagemaker')

image_uri = '520713654638.dkr.ecr.us-east-1.amazonaws.com/sagemaker-pytorch:1.0.0-cpu-py3'
model_data ='s3://<bucket>/<prefix>/output/model.tar.gz'
source = 's3://<bucket>/<prefix>/sourcedir.tar.gz'
role = 'arn:aws:iam::xxxxxxxx:role/service-role/AmazonSageMaker-ExecutionRole-xxxxxx'

timestamp = time.strftime('-%Y-%m-%d-%H-%M-%S', time.gmtime())
model_name = 'my-pytorch-model' + timestamp

response = sage.create_model(
    ModelName=model_name,
    PrimaryContainer={
        'Image': image_uri,
        'ModelDataUrl': model_data,
        'Environment': { 'SAGEMAKER_CONTAINER_LOG_LEVEL':'20', 'SAGEMAKER_ENABLE_CLOUDWATCH_METRICS': 'False', 
                   'SAGEMAKER_PROGRAM': 'generate.py','SAGEMAKER_REGION': 'us-east-1','SAGEMAKER_SUBMIT_DIRECTORY': source}
         },
         ExecutionRoleArn=role
}
print(response)

如果您没有收到错误消息,则模型将显示在 SageMaker 控制台中