加载Sagemaker Java SDK的非s3数据源

时间:2019-07-02 14:14:47

标签: java aws-sdk amazon-sagemaker

我正在设置一个lambda函数,该函数使用Random Cut Forest算法执行SageMaker推理。我在jupyter笔记本中成功运行了python RCF示例,但是我更喜欢用Java编写lambda,并且希望在此过程中不使用s3存储桶。我知道,如果我的lambda是使用python编写的,那么我将能够传递数据,将其转换为pandas数据框,然后运行rcf_inference.predict(data)来获取结果。但是对于Java,这似乎是不可能的。

我能够使用以下Java代码进行批处理转换工作,但是在检查了Java aws-sdk文档之后,看来我的TransformDataSource 必须具有S3DataSource,但没有任何其他类型的来源。不幸的是,因为我的lambda已经在内存中存储了我需要的数据,所以没有必要向s3存储桶进行上传/下载。

        String bucket = "test-bucket441";
        String prefix = "sagemaker/rcf-benchmarks";
        String trainedModel = "randomcutforest-2019-06-28-13-43-00-925";

        AmazonSageMaker sm = AmazonSageMakerClientBuilder.standard().build();

        TransformS3DataSource s3Source = new TransformS3DataSource()
                .withS3DataType("S3Prefix")
                .withS3Uri("s3://" + bucket + "/" + prefix);

        TransformDataSource dataSource = new TransformDataSource()
                .withS3DataSource(s3Source);

        TransformInput input = new TransformInput()
                .withContentType("text/csv")
                .withDataSource(dataSource);

        TransformOutput output = new TransformOutput()
                .withS3OutputPath("s3://" + bucket + "/" + prefix + "/output")
                .withAssembleWith("Line");

        TransformResources resources = new TransformResources()
                .withInstanceType("ml.m4.xlarge")
                .withInstanceCount(1);

        CreateTransformJobRequest jobRequest = new CreateTransformJobRequest()
                .withTransformJobName("test-job")
                .withModelName(trainedModel)
                .withTransformInput(input)
                .withTransformOutput(output)
                .withTransformResources(resources);


        sm.createTransformJob(jobRequest);

有人知道我不使用s3存储桶就可以创建CreateTranformJobRequest吗?

1 个答案:

答案 0 :(得分:1)

您的Python代码使用SageMaker HTTPS终端节点进行实时预测:尽管SageMaker SDK仅是Python,但您可以使用(较低级别的)AWS SDK for Java绝对做同样的事情。

假设您已经在SageMaker中训练过模型,那么您将:

  • 创建端点配置,
  • 创建端点,
  • 调用端点。

相应的API详细说明: