Загрузка источника данных не S3 для Sagemaker Java SDK - PullRequest
0 голосов
/ 02 июля 2019

Я настраиваю лямбда-функцию, которая выполняет выводы SageMaker с использованием алгоритма Random Cut Forest. Я успешно запустил пример Python RCF в блокноте jupyter, но я предпочитаю, чтобы моя лямбда была написана на Java, и я надеялся не использовать ведро s3 в этом процессе. Я знаю, что если бы моя лямбда была в python, то я могла бы передать свои данные, преобразовать их в кадр данных pandas, а затем запустить rcf_inference.predict(data), чтобы получить мои результаты. Но с Java это кажется невозможным.

Мне удалось выполнить пакетное преобразование с использованием следующего кода Java, но после изучения документации java aws-sdk похоже, что мой TransformDataSource должен иметь S3DataSource, а не какой-либо другой вид источник. Это прискорбно, потому что в моей лямбде уже есть данные, которые мне нужны, поэтому загрузка / выгрузка в / из корзины 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);

Кто-нибудь знает, как я могу создать CreateTranformJobRequest без использования корзины s3?

1 Ответ

1 голос
/ 08 июля 2019

ваш код Python использует конечную точку HTTPS SageMaker для прогнозирования в реальном времени: хотя SageMaker SDK предназначен только для Python, вы можете абсолютно точно так же поступить с (более низким уровнем) AWS SDK для Java.

Предполагая, что вы уже обучили свою модель в SageMaker, вы бы:

  • создать конфигурацию конечной точки,
  • создать конечную точку,
  • вызвать конечную точку.

Соответствующие API подробно описаны в:

...