我正在处理sagemaker中文本数据的分类问题。其中,我首先拟合并将其转换为结构化格式(例如在 sklearn 中使用 TFIDF(,然后将结果保存在 S3 存储桶中,并用它来训练我的 pytorch 模型,我已经在我的入口点编写了代码。
如果我们注意到,在上述过程结束时,我有两个模型
- SKLEARN TFIDF模型
- 实际的 PyTorch 模型
因此,每次我需要预测新的文本数据时,我都需要使用我在训练期间创建的 TFIDF 模型单独处理(转换(文本数据。
如何使用 sklearn 的 TFIDF 和 pytorch 模型在 sagemaker 中创建管道。
如果我在入口点的主方法中使用 TFIDF 拟合和转换文本数据,那么如果我在主方法中训练我的 PyTorch 模型,我只能返回一个将在 model_fn(( 中使用的模型
显然,我们需要使用推理管道。
推理管道是一个 Amazon SageMaker 模型,由两到五个容器组成的线性序列组成,用于处理数据推理请求。您可以使用推理管道来定义和部署预训练的 Amazon SageMaker 内置算法和打包在 Docker 容器中的您自己的自定义算法的任意组合。您可以使用推理管道来组合预处理、预测和后处理数据科学任务。推理管道是完全托管的。
可以在这里阅读文档 -
https://docs.aws.amazon.com/sagemaker/latest/dg/inference-pipelines.html
例-
https://github.com/awslabs/amazon-sagemaker-examples/blob/master/sagemaker-python-sdk/scikit_learn_inference_pipeline/Inference%20Pipeline%20with%20Scikit-learn%20and%20Linear%20Learner.ipynb
首先,查看此处的 mnist 示例:
https://github.com/awslabs/amazon-sagemaker-examples/blob/master/sagemaker-python-sdk/pytorch_mnist/pytorch_mnist.ipynb
在脚本模式下,您可以使用以下估算器运行代码(mnist.py(。
from sagemaker.pytorch import PyTorch
estimator = PyTorch(entry_point='mnist.py',
role=role,
framework_version='1.1.0',
train_instance_count=2,
train_instance_type='ml.c4.xlarge',
hyperparameters={
'epochs': 6,
'backend': 'gloo'
})
只需按照 tfidf 管道更新 mnist.py 脚本即可。希望这有帮助。