我通过Sagemaker Jupyter笔记本实例中的单独脚本创建了一个端点。我正在尝试在另一个脚本中访问该端点并对其运行推理。
我不知道我可以运行任何专门拉取端点并将其分配给变量的内容。
过去,我部署了一个链接到 RCF 的端点,如下所示:
#This creates an endpoint
rcf_inference = rcf.deploy(
initial_instance_count=1,
instance_type='ml.m4.xlarge',
)
print('Endpoint name: {}'.format(rcf_inference.endpoint))
我在另一个脚本中使用了 rcf_inference 变量来运行推理,我想在这里遵循相同的路线,但无法重新部署 rcf。
#This grabs the data we want to test from an s3
s3=boto3.client('s3')
obj=s3.get_object(Bucket=bucket,Key=testingDataKey)
prediction_data = pandas.read_csv(io.BytesIO(obj['Body'].read()))
prediction_data_numpy=np.array(prediction_data)
#This line runs the test data and stores it in results.
#I do not have a rcf_inference variable, so I can't run it this way though.
#results = rcf_inference.predict(prediction_data_numpy)
predictor = RealTimePredictor(endpoint=endpoint, accept=CONTENT_TYPE_CSV)
results=predictor.predict(prediction_data_numpy.tobytes())
必须有某种方法可以调用我的端点并将其分配给此变量,对吗?我的目标是获取此变量并对其进行推理,就像我在另一个脚本中所做的那样。当我通过当前方法运行它时,我得到"无法评估提供的有效载荷"。
使用实时预测器的方法是正确的。只要您位于同一区域并使用正确的终端节点名称,那么事情就应该按预期工作。
我假设RCF代表RandomCutForest,这是SageMaker Python SDK中支持的算法。在这种情况下,部署该算法时提供的预测器类很可能在默认序列化/反序列化方面具有不同的配置。请使用该类或复制相同的配置:https://github.com/aws/sagemaker-python-sdk/blob/master/src/sagemaker/amazon/randomcutforest.py#L152
如果我错了,请纠正我,但听起来您正在寻找"描述端点"API调用。
您可能正在寻找以下内容:
sagemaker.Session().sagemaker_client.describe_endpoint(EndpointName=endpoint_name)
查看来自sagemaker-python-sdk存储库的以下代码片段以获取工作示例: https://github.com/aws/sagemaker-python-sdk/blob/db6c55ec4a21dbd59e264e2ab9fc1e8494aa781f/tests/integ/test_mxnet_train.py#L131
让我知道这是否有帮助!