首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Sagemaker 2中使用序列化程序和反序列化程序

如何在Sagemaker 2中使用序列化程序和反序列化程序
EN

Stack Overflow用户
提问于 2020-08-24 20:26:02
回答 2查看 6.4K关注 0票数 8

我使用conda_python3内核旋转了一个Sagemaker笔记本,并遵循了随机采伐林示例笔记本。

在撰写本文时,Sagemaker附带的conda_python3是1.72.0版本,但我想使用新的功能,所以我更新我的笔记本使用最新的

代码语言:javascript
复制
%%bash
pip install -U sagemaker

我看到它更新了。

代码语言:javascript
复制
print(sagemaker.__version__)

# 2.4.1

从1.x版本到2.x版本的更改是序列化程序/反序列化器类

以前(在1.72.0版中),我会更新我的预测器以使用正确的序列化器/反序列化器,并且可以在我的模型上运行推理

代码语言:javascript
复制
from sagemaker.predictor import csv_serializer, json_deserializer


rcf_inference = rcf.deploy(
    initial_instance_count=1,
    instance_type='ml.m4.xlarge',
)

rcf_inference.content_type = 'text/csv'
rcf_inference.serializer = csv_serializer
rcf_inference.accept = 'application/json'
rcf_inference.deserializer = json_deserializer

results = rcf_inference.predict(some_numpy_array)

(请注意,所有这些都来自示例

我尝试使用sagjier2.4.1进行复制,如下所示

代码语言:javascript
复制
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
)

results = rcf_inference.predict(some_numpy_array)

我收到了一个错误

代码语言:javascript
复制
TypeError: serialize() missing 1 required positional argument: 'data'

我知道我不正确地使用serliaizer/反序列化器,但是找不到关于如何使用它的好文档。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-08-27 04:48:39

为了使用新的序列化器/反序列化器,您需要插入它们,例如:

代码语言:javascript
复制
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()
)
票数 16
EN

Stack Overflow用户

发布于 2020-11-11 19:38:10

对于自定义序列化程序,我们可以在SageMaker 2.x中这样做:

代码语言:javascript
复制
from sagemaker.deserializers import JSONDeserializer
from sagemaker.serializers import JSONSerializer


class FMSerializer(JSONSerializer):
    def serialize(self, data):
        js = {'instances': []}
        for row in data:
            js['instances'].append({'features': row.tolist()})
        return json.dumps(js)


predictor = estimator.deploy(
    initial_instance_count=1,
    instance_type="ml.m4.xlarge",
    serializer=FMSerializer(),
    deserializer=JSONDeserializer()
)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63568274

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档