[英]Loading non-s3 data source for Sagemaker Java SDK
我正在設置一個lambda函數,該函數使用Random Cut Forest算法執行SageMaker推理。 我在jupyter筆記本中成功運行了python RCF示例,但是我更喜歡用Java編寫我的lambda,並且希望在此過程中不使用s3存儲桶。 我知道,如果我的lambda是在python中的,那么我將能夠傳遞我的數據,將其轉換為pandas數據rcf_inference.predict(data)
,然后運行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的詳細信息如下:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.