sagemaker.pytorch 中 PyTorch、PyTorchModel 之间的区别

Vai*_*ore 2 pytorch amazon-sagemaker

我正在尝试在 sagemaker 中使用 pytorch 创建一个模型。我尝试在 sagemaker.pytorch [from sagemaker.pytorch import PyTorch] 中使用 - PyTorch 模块进行部署。

但是,我想了解 sagemaker.pytorch 中的 PyTorchModel 是什么 [from sagemaker.pytorch import PyTorchModel]。他们都有deploy()。我按照链接https://sagemaker.readthedocs.io/en/stable/using_pytorch.html创建和部署模型。我在任何地方都没有看到使用“PyTorchModel”。我想知道其中的区别以及何时使用什么。

到目前为止我尝试了以下方法。

第1步:我调用了pytorch估计器

pytorch_model = PyTorch(entry_point='entry_v1.py',
                        train_instance_type='ml.m5.4xlarge',
                        role = role,
                        train_instance_count=1,
                        output_path = "s3://model-output-bucket/test",
                        framework_version='1.1',
                        hyperparameters = {'epochs': 10,'learning-rate': 0.01})
Run Code Online (Sandbox Code Playgroud)

Step2:我调用了fit方法

pytorch_model.fit({'train': 's3://training-data/train_data.csv',
                  'test':'s3://testing-data/test_data.csv'})
Run Code Online (Sandbox Code Playgroud)

Step3:我调用了deploy方法。

predictor = pytorch_model.deploy(instance_type='ml.m4.xlarge', initial_instance_count=1)
Run Code Online (Sandbox Code Playgroud)

我想知道什么时候打电话到create_model()这里。

看到这里我有了一些了解。我们使用 [from sagemaker.pytorch import PyTorch] 进行端到端流程,其中我们使用 .fit() 训练模型,然后我们可以使用 .deploy() 部署模型

但是,通过 [from sagemaker.pytorch import PyTorchModel],我们可以使用已经训练过的模型。

步骤1:

pytorch_model = PyTorchModel(model_data='s3://model-output-bucket/sagemaker-pytorch-2019-08-20-16-54-32-500/output/model.tar.gz', role=role,entry_point=entry_v1.py,sagemaker_session=sagemaker_session)
Run Code Online (Sandbox Code Playgroud)

第2步:

predictor = pytorch_model.deploy(instance_type='ml.c4.xlarge', initial_instance_count=1)
Run Code Online (Sandbox Code Playgroud)

此外,PyTorch Estimator 的 .create_model() 将返回 PyTorchModel 的对象。

如果我有任何错误,请纠正我。

Ujj*_*waj 6

PyTorch 类继承自 Framework 类,而 PyTorchModel 继承自 FrameworkModel 类。

两者之间的区别在于: Framework 用于执行模型的端到端训练和部署 FrameworkModel 用于从预训练模型创建 Estimator,然后使用它通过 deploy() 方法部署端点。这不涉及模型的训练。

在PyTorch类中,您不能直接调用部署模型。您首先必须调用 fit() 方法,然后调用 deploy() 方法。

您可以阅读以下博客,了解如何将自己的预训练模型引入 Sagemaker https://aws.amazon.com/blogs/machine-learning/bring-your-own-pre-trained-mxnet-or-tensorflow-models -进入亚马逊-sagemaker/

关于 create_model() 方法,如果您想在训练后直接部署端点,则无需在脚本中调用它。一般用于需要创建管道通过多个模型进行推理的场景