我使用conda_python3内核旋转了一个Sagemaker笔记本,并遵循了随机采伐林的示例笔记本。
在撰写本文时,Sagemaker附带的conda_python3是1.72.0版本,但我想使用新的功能,所以我更新我的笔记本使用最新的
%%bash
pip install -U sagemaker我看到它更新了。
print(sagemaker.__version__)
# 2.4.1从1.x版本到2.x版本的更改是序列化程序/反序列化器类
以前(在1.72.0版中),我会更新我的预测器以使用正确的序列化器/反序列化器,并且可以在我的模型上运行推理
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进行复制,如下所示
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)我收到了一个错误
TypeError: serialize() missing 1 required positional argument: 'data'我知道我不正确地使用serliaizer/反序列化器,但是找不到关于如何使用它的好文档。
发布于 2020-08-27 04:48:39
为了使用新的序列化器/反序列化器,您需要插入它们,例如:
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()
)发布于 2020-11-11 19:38:10
对于自定义序列化程序,我们可以在SageMaker 2.x中这样做:
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()
)https://stackoverflow.com/questions/63568274
复制相似问题