Search in sources :

Example 6 with Input

use of org.opensearch.ml.common.parameter.Input in project ml-commons by opensearch-project.

the class MachineLearningNodeClient method execute.

@Override
public void execute(Input input, ActionListener<Output> listener) {
    MLExecuteTaskRequest executeTaskRequest = MLExecuteTaskRequest.builder().input(input).build();
    client.execute(MLExecuteTaskAction.INSTANCE, executeTaskRequest, ActionListener.wrap(response -> {
        listener.onResponse(MLExecuteTaskResponse.fromActionResponse(response).getOutput());
    }, listener::onFailure));
}
Also used : MLOutput(org.opensearch.ml.common.parameter.MLOutput) FieldDefaults(lombok.experimental.FieldDefaults) MLModelDeleteRequest(org.opensearch.ml.common.transport.model.MLModelDeleteRequest) RequiredArgsConstructor(lombok.RequiredArgsConstructor) MLInput(org.opensearch.ml.common.parameter.MLInput) MLTrainAndPredictionTaskAction(org.opensearch.ml.common.transport.trainpredict.MLTrainAndPredictionTaskAction) Input(org.opensearch.ml.common.parameter.Input) Function(java.util.function.Function) MLPredictionTaskRequest(org.opensearch.ml.common.transport.prediction.MLPredictionTaskRequest) Output(org.opensearch.ml.common.parameter.Output) AccessLevel(lombok.AccessLevel) MLPredictionTaskAction(org.opensearch.ml.common.transport.prediction.MLPredictionTaskAction) DeleteResponse(org.opensearch.action.delete.DeleteResponse) SearchRequest(org.opensearch.action.search.SearchRequest) ActionListener(org.opensearch.action.ActionListener) ActionResponse(org.opensearch.action.ActionResponse) SearchResponse(org.opensearch.action.search.SearchResponse) MLModel(org.opensearch.ml.common.parameter.MLModel) MLModelGetResponse(org.opensearch.ml.common.transport.model.MLModelGetResponse) MLTaskResponse(org.opensearch.ml.common.transport.MLTaskResponse) MLExecuteTaskAction(org.opensearch.ml.common.transport.execute.MLExecuteTaskAction) MLModelDeleteAction(org.opensearch.ml.common.transport.model.MLModelDeleteAction) NodeClient(org.opensearch.client.node.NodeClient) MLModelGetRequest(org.opensearch.ml.common.transport.model.MLModelGetRequest) MLModelSearchAction(org.opensearch.ml.common.transport.model.MLModelSearchAction) MLExecuteTaskRequest(org.opensearch.ml.common.transport.execute.MLExecuteTaskRequest) MLTrainingTaskAction(org.opensearch.ml.common.transport.training.MLTrainingTaskAction) MLModelGetAction(org.opensearch.ml.common.transport.model.MLModelGetAction) MLExecuteTaskResponse(org.opensearch.ml.common.transport.execute.MLExecuteTaskResponse) MLTrainingTaskRequest(org.opensearch.ml.common.transport.training.MLTrainingTaskRequest) MLExecuteTaskRequest(org.opensearch.ml.common.transport.execute.MLExecuteTaskRequest)

Example 7 with Input

use of org.opensearch.ml.common.parameter.Input in project ml-commons by opensearch-project.

the class MLEngineClassLoaderTests method initInstance_LocalSampleCalculator.

@Test
public void initInstance_LocalSampleCalculator() {
    List<Double> inputData = new ArrayList<>();
    double d1 = 10.0;
    double d2 = 20.0;
    inputData.add(d1);
    inputData.add(d2);
    LocalSampleCalculatorInput input = LocalSampleCalculatorInput.builder().operation("sum").inputData(inputData).build();
    Map<String, Object> properties = new HashMap<>();
    properties.put("wrongField", "test");
    Client client = mock(Client.class);
    properties.put("client", client);
    Settings settings = Settings.EMPTY;
    properties.put("settings", settings);
    // set properties
    MLEngineClassLoader.deregister(FunctionName.LOCAL_SAMPLE_CALCULATOR);
    LocalSampleCalculator instance = MLEngineClassLoader.initInstance(FunctionName.LOCAL_SAMPLE_CALCULATOR, input, Input.class, properties);
    SampleAlgoOutput output = (SampleAlgoOutput) instance.execute(input);
    assertEquals(d1 + d2, output.getSampleResult(), 1e-6);
    assertEquals(client, instance.getClient());
    assertEquals(settings, instance.getSettings());
    // don't set properties
    instance = MLEngineClassLoader.initInstance(FunctionName.LOCAL_SAMPLE_CALCULATOR, input, Input.class);
    output = (SampleAlgoOutput) instance.execute(input);
    assertEquals(d1 + d2, output.getSampleResult(), 1e-6);
    assertNull(instance.getClient());
    assertNull(instance.getSettings());
}
Also used : HashMap(java.util.HashMap) ArrayList(java.util.ArrayList) LocalSampleCalculator(org.opensearch.ml.engine.algorithms.sample.LocalSampleCalculator) Input(org.opensearch.ml.common.parameter.Input) LocalSampleCalculatorInput(org.opensearch.ml.common.parameter.LocalSampleCalculatorInput) LocalSampleCalculatorInput(org.opensearch.ml.common.parameter.LocalSampleCalculatorInput) Client(org.opensearch.client.Client) SampleAlgoOutput(org.opensearch.ml.common.parameter.SampleAlgoOutput) Settings(org.opensearch.common.settings.Settings) Test(org.junit.Test)

Example 8 with Input

use of org.opensearch.ml.common.parameter.Input in project ml-commons by opensearch-project.

the class LocalSampleCalculator method execute.

@Override
public Output execute(Input input) {
    if (input == null || !(input instanceof LocalSampleCalculatorInput)) {
        throw new IllegalArgumentException("wrong input");
    }
    LocalSampleCalculatorInput sampleCalculatorInput = (LocalSampleCalculatorInput) input;
    String operation = sampleCalculatorInput.getOperation();
    List<Double> inputData = sampleCalculatorInput.getInputData();
    switch(operation) {
        case "sum":
            double sum = inputData.stream().mapToDouble(f -> f.doubleValue()).sum();
            return new SampleAlgoOutput(sum);
        case "max":
            double max = inputData.stream().max(Comparator.naturalOrder()).get();
            return new SampleAlgoOutput(max);
        case "min":
            double min = inputData.stream().min(Comparator.naturalOrder()).get();
            return new SampleAlgoOutput(min);
        default:
            throw new IllegalArgumentException("can't support this operation");
    }
}
Also used : Client(org.opensearch.client.Client) Executable(org.opensearch.ml.engine.Executable) Function(org.opensearch.ml.engine.annotation.Function) Settings(org.opensearch.common.settings.Settings) SampleAlgoOutput(org.opensearch.ml.common.parameter.SampleAlgoOutput) Input(org.opensearch.ml.common.parameter.Input) Output(org.opensearch.ml.common.parameter.Output) LocalSampleCalculatorInput(org.opensearch.ml.common.parameter.LocalSampleCalculatorInput) List(java.util.List) FunctionName(org.opensearch.ml.common.parameter.FunctionName) Data(lombok.Data) Comparator(java.util.Comparator) NoArgsConstructor(lombok.NoArgsConstructor) LocalSampleCalculatorInput(org.opensearch.ml.common.parameter.LocalSampleCalculatorInput) SampleAlgoOutput(org.opensearch.ml.common.parameter.SampleAlgoOutput)

Example 9 with Input

use of org.opensearch.ml.common.parameter.Input in project ml-commons by opensearch-project.

the class MLEngineTest method predictWithoutAlgoName.

@Test
public void predictWithoutAlgoName() {
    exceptionRule.expect(IllegalArgumentException.class);
    exceptionRule.expectMessage("algorithm can't be null");
    MLInputDataset inputDataset = DataFrameInputDataset.builder().dataFrame(constructKMeansDataFrame(10)).build();
    Input mlInput = MLInput.builder().inputDataset(inputDataset).build();
    MLEngine.predict(mlInput, null);
}
Also used : MLInput(org.opensearch.ml.common.parameter.MLInput) Input(org.opensearch.ml.common.parameter.Input) LocalSampleCalculatorInput(org.opensearch.ml.common.parameter.LocalSampleCalculatorInput) MLInputDataset(org.opensearch.ml.common.dataset.MLInputDataset) Test(org.junit.Test)

Example 10 with Input

use of org.opensearch.ml.common.parameter.Input in project ml-commons by opensearch-project.

the class MLEngineTest method executeLocalSampleCalculator.

@Test
public void executeLocalSampleCalculator() {
    Input input = new LocalSampleCalculatorInput("sum", Arrays.asList(1.0, 2.0));
    SampleAlgoOutput output = (SampleAlgoOutput) MLEngine.execute(input);
    Assert.assertEquals(3.0, output.getSampleResult(), 1e-5);
}
Also used : MLInput(org.opensearch.ml.common.parameter.MLInput) Input(org.opensearch.ml.common.parameter.Input) LocalSampleCalculatorInput(org.opensearch.ml.common.parameter.LocalSampleCalculatorInput) LocalSampleCalculatorInput(org.opensearch.ml.common.parameter.LocalSampleCalculatorInput) SampleAlgoOutput(org.opensearch.ml.common.parameter.SampleAlgoOutput) Test(org.junit.Test)

Aggregations

Input (org.opensearch.ml.common.parameter.Input)23 LocalSampleCalculatorInput (org.opensearch.ml.common.parameter.LocalSampleCalculatorInput)13 MLInput (org.opensearch.ml.common.parameter.MLInput)12 Test (org.junit.Test)10 Output (org.opensearch.ml.common.parameter.Output)10 Client (org.opensearch.client.Client)9 Settings (org.opensearch.common.settings.Settings)9 ArrayList (java.util.ArrayList)8 List (java.util.List)8 Data (lombok.Data)8 ActionListener (org.opensearch.action.ActionListener)8 SearchRequest (org.opensearch.action.search.SearchRequest)8 SearchResponse (org.opensearch.action.search.SearchResponse)8 MLInputDataset (org.opensearch.ml.common.dataset.MLInputDataset)8 Executable (org.opensearch.ml.engine.Executable)8 SimpleEntry (java.util.AbstractMap.SimpleEntry)7 Arrays (java.util.Arrays)7 Collections (java.util.Collections)7 Map (java.util.Map)7 Optional (java.util.Optional)7