为 Sagemaker Java SDK 加载非 s3 数据源
Loading non-s3 data source for Sagemaker Java SDK
我正在设置一个 lambda 函数,该函数使用随机森林砍伐算法执行 SageMaker 推理。我在 jupyter notebook 中成功 运行 python RCF 示例,但我更喜欢用 Java 编写我的 lambda,并且我希望在此过程中不要使用 s3 存储桶。我知道如果我的 lambda 在 python 中,那么我就可以传入我的数据,将其转换为 pandas 数据帧,然后 运行 rcf_inference.predict(data)
来获取我的结果。但是对于Java,这似乎是不可能的。
我能够使用以下 Java 代码进行批处理 t运行sform 作业,但在检查 java aws-sdk 文档后,它看起来像我的 T运行sformDataSource 必须 有一个 S3DataSource,而不是任何其他类型的源。这很不幸,因为我的 lambda 已经在内存中有我需要的数据,所以 uploading/downloading to/from 不需要 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 存储桶的情况下创建 CreateT运行formJobRequest 的方法吗?
您的 Python 代码使用 SageMaker HTTPS 端点进行 real-time 预测:尽管 SageMaker SDK 仅 Python,但您绝对可以使用(较低级别)做同样的事情Java.
的 AWS 开发工具包
假设您已经在 SageMaker 中训练了您的模型,您将:
- 创建端点配置,
- 创建端点,
- 调用端点。
对应的API详见:
我正在设置一个 lambda 函数,该函数使用随机森林砍伐算法执行 SageMaker 推理。我在 jupyter notebook 中成功 运行 python RCF 示例,但我更喜欢用 Java 编写我的 lambda,并且我希望在此过程中不要使用 s3 存储桶。我知道如果我的 lambda 在 python 中,那么我就可以传入我的数据,将其转换为 pandas 数据帧,然后 运行 rcf_inference.predict(data)
来获取我的结果。但是对于Java,这似乎是不可能的。
我能够使用以下 Java 代码进行批处理 t运行sform 作业,但在检查 java aws-sdk 文档后,它看起来像我的 T运行sformDataSource 必须 有一个 S3DataSource,而不是任何其他类型的源。这很不幸,因为我的 lambda 已经在内存中有我需要的数据,所以 uploading/downloading to/from 不需要 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 存储桶的情况下创建 CreateT运行formJobRequest 的方法吗?
您的 Python 代码使用 SageMaker HTTPS 端点进行 real-time 预测:尽管 SageMaker SDK 仅 Python,但您绝对可以使用(较低级别)做同样的事情Java.
的 AWS 开发工具包假设您已经在 SageMaker 中训练了您的模型,您将:
- 创建端点配置,
- 创建端点,
- 调用端点。
对应的API详见: