Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
AWS Sagemaker和Java SDK_Java_Amazon Web Services - Fatal编程技术网

AWS Sagemaker和Java SDK

AWS Sagemaker和Java SDK,java,amazon-web-services,Java,Amazon Web Services,我有一个AWS Sagemaker端点,我正试图使用Java SDK调用它。然而,我得到了这个错误: Exception in thread "main" java.lang.NoSuchMethodError: com.amazonaws.services.sagemakerruntime.AmazonSageMakerRuntimeClient.beforeClientExecution(Lcom/amazonaws/AmazonWebServiceRequest;)Lcom/amazona

我有一个AWS Sagemaker端点,我正试图使用Java SDK调用它。然而,我得到了这个错误:

Exception in thread "main" java.lang.NoSuchMethodError: com.amazonaws.services.sagemakerruntime.AmazonSageMakerRuntimeClient.beforeClientExecution(Lcom/amazonaws/AmazonWebServiceRequest;)Lcom/amazonaws/AmazonWebServiceRequest;
at com.amazonaws.services.sagemakerruntime.AmazonSageMakerRuntimeClient.invokeEndpoint(AmazonSageMakerRuntimeClient.java:150)
at TestAmazon.main(TestAmazon.java:72)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)
当我在CLI上运行invoke端点时,它会按预期工作

守则:

InvokeEndpointRequest invokeEndpointRequest = new InvokeEndpointRequest();
invokeEndpointRequest.setContentType("application/x-image");
ByteBuffer buf = ByteBuffer.wrap(read_buf);

invokeEndpointRequest.setBody(buf);
invokeEndpointRequest.setEndpointName("imageclassification-ep--2018-04-17-19-47-00");
invokeEndpointRequest.setAccept("application/json");

AmazonSageMakerRuntime amazonSageMaker = AmazonSageMakerRuntimeClientBuilder.defaultClient();
InvokeEndpointResult invokeEndpointResult = amazonSageMaker.invokeEndpoint(invokeEndpointRequest);

任何帮助都将不胜感激。

因此我发现问题的症结在于我正在使用:

        <dependency>
            <groupId>com.amazonaws</groupId>
            <artifactId>aws-java-sdk-bom</artifactId>
            <version>1.11.83</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>

亚马逊网站
aws java sdk bom
1.11.83
聚甲醛
进口

阅读此线程并希望使用SageMaker和Java V2(不是V1)的任何人,请参阅以下GitHub位置,而不是最新版本1.11.313:

关于如何使用此API,有许多示例。例如,下面的代码示例演示如何开始Amazon SageMaker的模型培训工作

import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.sagemaker.SageMakerClient;
import software.amazon.awssdk.services.sagemaker.model.S3DataSource;
import software.amazon.awssdk.services.sagemaker.model.DataSource;
import software.amazon.awssdk.services.sagemaker.model.Channel;
import software.amazon.awssdk.services.sagemaker.model.ResourceConfig;
import software.amazon.awssdk.services.sagemaker.model.TrainingInstanceType;
import software.amazon.awssdk.services.sagemaker.model.CheckpointConfig;
import software.amazon.awssdk.services.sagemaker.model.OutputDataConfig;
import software.amazon.awssdk.services.sagemaker.model.StoppingCondition;
import software.amazon.awssdk.services.sagemaker.model.AlgorithmSpecification;
import software.amazon.awssdk.services.sagemaker.model.TrainingInputMode;
import software.amazon.awssdk.services.sagemaker.model.CreateTrainingJobRequest;
import software.amazon.awssdk.services.sagemaker.model.CreateTrainingJobResponse;
import software.amazon.awssdk.services.sagemaker.model.SageMakerException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
//snippet-end:[sagemaker.java2.train_job.import]

/**
 *  To setup the model data and other requirements to make this Java V2 example work, follow this AWS tutorial prior to running this Java code example.
 *  https://aws.amazon.com/getting-started/hands-on/build-train-deploy-machine-learning-model-sagemaker/
 */

public class CreateTrainingJob {

    public static void main(String[] args) {

        final String USAGE = "\n" +
                "Usage:\n" +
                "    CreateTrainingJob <s3UriData><s3Uri><trainingJobName><roleArn><s3OutputPath><channelName><trainingImage>\n\n" +
                "Where:\n" +
                "    s3UriData - The location where the training data is located (ie, s3://trainbucket/train.csv).\n\n" +
                "    s3Uri - The S3 path where you want Amazon SageMaker to store checkpoints (ie, s3://trainbucket).\n\n" +
                "    trainingJobName - The name of the training job. \n\n" +
                "    roleArn  -  The Amazon Resource Name (ARN) of the IAM role that Amazon SageMaker uses.\n\n" +
                "    s3OutputPath  - The output path located in a S3 bucket (i.e., s3://trainbucket/sagemaker).\n\n" +
                "    channelName  - The channel name \n\n" +
                "    trainingImage  - The training image.";

       if (args.length < 7) {
            System.out.println(USAGE);
            System.exit(1);
       }

        /* Read the name from command args */
        String s3UriData = args[0];
        String s3Uri = args[1];
        String trainingJobName = args[2];
        String roleArn = args[3];
        String s3OutputPath = args[4];
        String channelName = args[5];
        String trainingImage = args[6];

        Region region = Region.US_WEST_2;
        SageMakerClient sageMakerClient = SageMakerClient.builder()
                .region(region)
                .build();

        trainJob(sageMakerClient, s3UriData, s3Uri, trainingJobName, roleArn, s3OutputPath, channelName, trainingImage);
    }

    //snippet-start:[sagemaker.java2.train_job.main]
    public static void trainJob(SageMakerClient sageMakerClient,
                                String s3UriData,
                                String s3Uri,
                                String trainingJobName,
                                String roleArn,
                                String s3OutputPath,
                                String channelName,
                                String trainingImage) {

        try {
            S3DataSource s3DataSource = S3DataSource.builder()
                    .s3Uri(s3UriData)
                    .s3DataType("S3Prefix")
                    .s3DataDistributionType("FullyReplicated")
                    .build();

            DataSource dataSource = DataSource.builder()
                    .s3DataSource(s3DataSource)
                    .build();

            Channel channel = Channel.builder()
                    .channelName(channelName)
                    .contentType("csv")
                    .dataSource(dataSource)
                    .build();

            // Build a LIST of CHannels
            List<Channel> myChannel = new ArrayList();
            myChannel.add(channel);

            ResourceConfig resourceConfig = ResourceConfig.builder()
                    .instanceType(TrainingInstanceType.ML_M5_2_XLARGE) // ml.c5.2xlarge
                     .instanceCount(10)
                    .volumeSizeInGB(1)
                    .build();

            CheckpointConfig checkpointConfig = CheckpointConfig.builder()
                    .s3Uri(s3Uri)
                    .build();

            OutputDataConfig outputDataConfig = OutputDataConfig.builder()
                    .s3OutputPath(s3OutputPath)
                    .build();

            StoppingCondition stoppingCondition = StoppingCondition.builder()
                    .maxRuntimeInSeconds(1200)
                    .build();

            AlgorithmSpecification algorithmSpecification = AlgorithmSpecification.builder()
                   .trainingImage(trainingImage)
                    .trainingInputMode(TrainingInputMode.FILE)
                    .build();

            // Set hyper parameters
            Map<String,String> hyperParameters = new HashMap<String, String>();
            hyperParameters.put("num_round", "100");
            hyperParameters.put("eta", "0.2");
            hyperParameters.put("gamma", "4");
            hyperParameters.put("max_depth", "5");
            hyperParameters.put("min_child_weight", "6");
            hyperParameters.put("objective", "binary:logistic");
            hyperParameters.put("silent", "0");
            hyperParameters.put("subsample", "0.8");

            CreateTrainingJobRequest trainingJobRequest = CreateTrainingJobRequest.builder()
                    .trainingJobName(trainingJobName)
                    .algorithmSpecification(algorithmSpecification)
                    .roleArn(roleArn)
                    .resourceConfig(resourceConfig)
                    .checkpointConfig(checkpointConfig)
                    .inputDataConfig(myChannel)
                    .outputDataConfig(outputDataConfig)
                    .stoppingCondition(stoppingCondition)
                    .hyperParameters(hyperParameters)
                    .build();

           CreateTrainingJobResponse jobResponse = sageMakerClient.createTrainingJob(trainingJobRequest);
           System.out.println("The Amazon Resource Name (ARN) of the training job is "+ jobResponse.trainingJobArn());

        } catch (SageMakerException e) {
            System.err.println(e.awsErrorDetails().errorMessage());
            System.exit(1);
        }
    }
    //snippet-end:[sagemaker.java2.train_job.main]
}
import software.amazon.awssdk.regions.Region;
导入software.amazon.awssdk.services.sagemaker.SageMakerClient;
导入software.amazon.awssdk.services.sagemaker.model.S3DataSource;
导入software.amazon.awssdk.services.sagemaker.model.DataSource;
导入software.amazon.awssdk.services.sagemaker.model.Channel;
导入software.amazon.awssdk.services.sagemaker.model.ResourceConfig;
导入software.amazon.awssdk.services.sagemaker.model.trainingstancetype;
导入software.amazon.awssdk.services.sagemaker.model.CheckpointConfig;
导入software.amazon.awssdk.services.sagemaker.model.OutputDataConfig;
导入software.amazon.awssdk.services.sagemaker.model.StoppingCondition;
导入software.amazon.awssdk.services.sagemaker.model.AlgorithmSpecification;
导入software.amazon.awssdk.services.sagemaker.model.TrainingInputMode;
导入software.amazon.awssdk.services.sagemaker.model.CreateTrainingJobRequest;
导入software.amazon.awssdk.services.sagemaker.model.CreateTrainingJobResponse;
导入software.amazon.awssdk.services.sagemaker.model.SageMakerException;
导入java.util.ArrayList;
导入java.util.HashMap;
导入java.util.List;
导入java.util.Map;
//代码段结尾:[sagemaker.java2.train\u job.import]
/**
*要设置模型数据和其他要求以使此Java V2示例正常工作,请在运行此Java代码示例之前遵循本AWS教程。
*  https://aws.amazon.com/getting-started/hands-on/build-train-deploy-machine-learning-model-sagemaker/
*/
公共类CreateTrainingJob{
公共静态void main(字符串[]args){
最终字符串用法=“\n”+
“用法:\n”+
“CreateTrainingJob\n\n”+
“其中:\n”+
s3UriData—培训数据所在的位置(即s3://trainbucket/train.csv)。\n\n+
s3Uri-您希望Amazon SageMaker存储检查点的S3路径(即S3://trainbucket)。\n\n+
“trainingJobName-培训作业的名称。\n\n”+
“roleArn-亚马逊SageMaker使用的IAM角色的亚马逊资源名称(ARN)。\n\n”+
s3OutputPath—位于S3存储桶中的输出路径(即S3://trainbucket/sagemaker)。\n\n+
“channelName-频道名称\n\n”+
“培训形象-培训形象。”;
如果(参数长度<7){
System.out.println(用法);
系统出口(1);
}
/*从命令args读取名称*/
字符串s3UriData=args[0];
字符串s3Uri=args[1];
字符串trainingJobName=args[2];
字符串roleArn=args[3];
字符串s3OutputPath=args[4];
字符串channelName=args[5];
字符串trainingImage=args[6];
Region Region=Region.US_WEST_2;
SageMakerClient SageMakerClient=SageMakerClient.builder()
.地区(地区)
.build();
培训作业(sageMakerClient、s3UriData、s3Uri、培训作业名称、roleArn、s3OutputPath、channelName、培训映像);
}
//代码段开始:[sagemaker.java2.train\u job.main]
公共静态无效列车作业(SageMakerClient SageMakerClient,
字符串数据,
字符串s3Uri,
字符串trainingJobName,
字符串roleArn,
字符串s3OutputPath,
字符串channelName,
字符串训练(图像){
试一试{
S3DataSource S3DataSource=S3DataSource.builder()
.s3Uri(s3UriData)
.s3DataType(“S3Prefix”)
.s3DataDistributionType(“完整副本”)
.build();
DataSource DataSource=DataSource.builder()
.s3DataSource(s3DataSource)
.build();
Channel=Channel.builder()
.channelName(channelName)
.contentType(“csv”)
.dataSource(数据源)
.build();
//建立一个频道列表
List myChannel=new ArrayList();
添加(频道);
ResourceConfig=ResourceConfig.builder()
.instanceType(TrainingInstanceType.ML_M5_2_XLARGE)//ML.c5.2xlarge
.实例计数(10)
.体积B(1)
.build();
CheckpointConfig CheckpointConfig=CheckpointConfig.builder()
.s3Uri(s3Uri)
.build();
OutputDataConfig OutputDataConfig=OutputDataConfig.builder()
.s3OutputPath(s3OutputPath)
.build();
StoppingCondition StoppingCondition=StoppingCondition.builder()
.maxRuntimeInSeconds(1200)
.build();
AlgorithmSpecification AlgorithmSpecification=AlgorithmSpecification.builder()
.培训图像(培训图像)
.培林英普