Python 3.x 如何在Sagemaker 2中使用序列化程序和反序列化程序
我使用Python 3.x 如何在Sagemaker 2中使用序列化程序和反序列化程序,python-3.x,amazon-web-services,amazon-sagemaker,Python 3.x,Amazon Web Services,Amazon Sagemaker,我使用conda\u python3内核启动了一个Sagemaker笔记本,并跟随笔记本运行了一段时间 在撰写本文时,conda_python3附带的版本是1.72.0,但我想使用新功能,所以我更新了笔记本以使用最新版本 %%%bash pip安装-U sagemaker 我看到了它的更新 打印(sagemaker.\uuuuuu版本) # 2.4.1 从1.x版到2.x版的更改是最重要的 以前(在版本1.72.0中),我会更新预测器以使用正确的序列化器/反序列化器,并且可以在我的模型上运行
conda\u python3
内核启动了一个Sagemaker笔记本,并跟随笔记本运行了一段时间
在撰写本文时,conda_python3
附带的版本是1.72.0,但我想使用新功能,所以我更新了笔记本以使用最新版本
%%%bash
pip安装-U sagemaker
我看到了它的更新
打印(sagemaker.\uuuuuu版本)
# 2.4.1
从1.x版到2.x版的更改是最重要的
以前(在版本1.72.0中),我会更新预测器以使用正确的序列化器/反序列化器,并且可以在我的模型上运行推断
来自sagemaker.predictor导入csv_序列化程序、json_反序列化程序
rcf_推断=rcf.deploy(
初始实例计数=1,
实例_type='ml.m4.xlarge',
)
rcf_expression.content_type='text/csv'
rcf_推理.serializer=csv_序列化程序
rcf_inference.accept='application/json'
rcf_推理.deserializer=json_反序列化器
结果=rcf\u推断.predict(一些数组)
(注意,所有这些都来自
我尝试使用sagemaker 2.4.1复制它,就像这样
从sagemaker.deserializers导入JSONDeserializer
从sagemaker.Serializer导入CSVSSerializer
rcf_推断=rcf.deploy(
初始实例计数=1,
实例_type='ml.m5.xlarge',
序列化程序=CSV序列化程序,
反序列化程序=JSONDeserializer
)
结果=rcf\u推断.predict(一些数组)
我收到一个错误
TypeError: serialize() missing 1 required positional argument: 'data'
我知道我错误地使用了serliaizer/反序列化器,但找不到关于如何使用它的好文档为了使用新的序列化器/反序列化器,您需要初始化它们,例如:
from sagemaker.deserializers import JSONDeserializer
from sagemaker.serializers import CSVSerializer
rcf_inference = rcf.deploy(
initial_instance_count=1,
instance_type='ml.m5.xlarge',
serializer=CSVSerializer(),
deserializer=JSONDeserializer()
)
对于自定义序列化程序,我们可以在SageMaker 2.x中这样做:
从sagemaker.deserializers导入JSONDeserializer
从sagemaker.serializer导入JSONSerializer
FMSerializer类(JSONSerializer):
def序列化(自身、数据):
js={'instances':[]}
对于数据中的行:
js['instances'].append({'features':row.tolist()})
返回json.dumps(js)
预测器=估计器.deploy(
初始实例计数=1,
实例_type=“ml.m4.xlarge”,
序列化程序=FMSerializer(),
反序列化程序=JSONDeserializer()
)
Dude!!你太棒了!!这也适用于我的用例