java - 为 Sagemaker Java SDK 加载非 s3 数据源

标签 java aws-sdk amazon-sagemaker

我正在设置一个 lambda 函数,该函数使用随机剪切森林算法执行 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 吗?

最佳答案

您的 Python 代码使用 SageMaker HTTPS 终端节点进行实时预测:虽然 SageMaker SDK 仅支持 Python,但您绝对可以使用(较低级别)AWS SDK for Java 执行相同的操作。

假设您已经在 SageMaker 中训练了模型,您将:

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

对应的API详述如下:

关于java - 为 Sagemaker Java SDK 加载非 s3 数据源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56854482/

相关文章:

azure - 如何在网络请求较多的项目中使用TDD?

python - Sagemaker语义分割: iou and pixel accuracy per class

java - 使用盈透证券 Java API 的简单脚本

java - Spring引导JPA中的“ConverterNotFoundException”

python - 如何从boto获取当前用户所在的区域?

python - AWS Sagemaker : Which function/code is required in entry_point file for a prediction when you upload your own, 本地训练的 SKlearn 模型 tarball?

amazon-web-services - Sagemaker boto3 invoke_endpoint - 我不断收到有效载荷的类型错误。使用 Blazingtext 模型端点

docker - docker 容器中 "No module named PIL"之后的 "RUN pip3 install Pillow"; dist-packages 目录中既不存在 PIL 也不存在 Pillow

java - 发布项目时,测试范围内可以有快照版本吗?

java - 将字符串解析为 JSON