【发布时间】:2020-05-25 23:23:03
【问题描述】:
我正在通过 Sagemaker 将模型部署到 AWS:
我将我的 JSON 架构设置如下:
import json
schema = {
"input": [
{
"name": "V1",
"type": "double"
},
{
"name": "V2",
"type": "double"
},
{
"name": "V3",
"type": "double"
},
{
"name": "V4",
"type": "double"
},
{
"name": "V5",
"type": "double"
},
{
"name": "V6",
"type": "double"
},
{
"name": "V7",
"type": "double"
},
{
"name": "V8",
"type": "double"
},
{
"name": "V9",
"type": "double"
},
{
"name": "V10",
"type": "double"
},
{
"name": "V11",
"type": "double"
},
{
"name": "V12",
"type": "double"
},
{
"name": "V13",
"type": "double"
},
{
"name": "V14",
"type": "double"
},
{
"name": "V15",
"type": "double"
},
{
"name": "V16",
"type": "double"
},
{
"name": "V17",
"type": "double"
},
{
"name": "V18",
"type": "double"
},
{
"name": "V19",
"type": "double"
},
{
"name": "V20",
"type": "double"
},
{
"name": "V21",
"type": "double"
},
{
"name": "V22",
"type": "double"
},
{
"name": "V23",
"type": "double"
},
{
"name": "V24",
"type": "double"
},
{
"name": "V25",
"type": "double"
},
{
"name": "V26",
"type": "double"
},
{
"name": "V27",
"type": "double"
},
{
"name": "V28",
"type": "double"
},
{
"name": "Amount",
"type": "double"
},
],
"output":
{
"name": "features",
"type": "double",
"struct": "vector"
}
}
schema_json = json.dumps(schema)
print(schema_json)
并部署为:
from sagemaker.model import Model
from sagemaker.pipeline import PipelineModel
from sagemaker.sparkml.model import SparkMLModel
sparkml_data = 's3://{}/{}/{}'.format(s3_model_bucket, s3_model_key_prefix, 'model.tar.gz')
# passing the schema defined above by using an environment variable that sagemaker-sparkml-serving understands
sparkml_model = SparkMLModel(model_data=sparkml_data, env={'SAGEMAKER_SPARKML_SCHEMA' : schema_json})
xgb_model = Model(model_data=xgb_model.model_data, image=training_image)
model_name = 'inference-pipeline-' + timestamp_prefix
sm_model = PipelineModel(name=model_name, role=role, models=[sparkml_model, xgb_model])
endpoint_name = 'inference-pipeline-ep-' + timestamp_prefix
sm_model.deploy(initial_instance_count=1, instance_type='ml.c4.xlarge', endpoint_name=endpoint_name)
我收到如下错误:
ClientError:调用 CreateModel 操作时发生错误 (ValidationException):检测到 1 个验证错误:Value '{SAGEMAKER_SPARKML_SCHEMA={"input": [{"type": "double", "name": "V1"} ,{“类型”:“双”,“名称”:“V2”},{“类型”:“双”,“名称”:“V3”},{“类型”:“双”,“名称”: “V4”},{“类型”:“双”,“名称”:“V5”},{“类型”:“双”,“名称”:“V6”},{“类型”:“双”, “名称”:“V7”},{“类型”:“双”,“名称”:“V8”},{“类型”:“双”,“名称”:“V9”},{“类型”: “双”,“名称”:“V10”},{“类型”:“双”,“名称”:“V11”},{“类型”:“双”,“名称”:“V12”},{ “类型”:“双”,“名称”:“V13”},{“类型”:“双”,“名称”:“V14”},{“类型”:“双”,“名称”:“V15 "}, {"type": "double", "name": "V16"}, {"type": "double", "name": "V17"}, {"type": "double", "name ": "V18"}, {"type": "double", "name": "V19"}, {"type": "double", "name": "V20"}, {"type": "double ", "name": "V21"}, {"type": "double", "name": "V22"}, {"type": "double", "name": "V23"}, {"type ": "双", "名称": "V24"}, {“类型”:“双”,“名称”:“V25”},{“类型”:“双”,“名称”:“V26”},{“类型”:“双”,“名称”:“ V27"}, {"type": "double", "name": "V28"}, {"type": "double", "name": "Amount"}], "output": {"type": 'containers.1**.member.environment' 处的“double”,“name”:“features”,“struct”:“vector”}}}' 未能满足约束:映射值必须满足约束:[成员长度必须小于等于1024,**成员长度必须大于等于0,成员必须满足正则表达式模式:[\S\s]*]
我尝试将我的功能减少到 20 个并且它能够部署。只是想知道如何传递具有 29 个属性的架构?
【问题讨论】:
标签: json amazon-web-services deployment amazon-sagemaker