Как мне создать работу механизма облачного машинного обучения на GCP в Java? - PullRequest
0 голосов
/ 02 октября 2018

Я не могу найти какой-либо исходный код, который иллюстрирует базовую настройку для задания движка GCP Cloud ML в Java.Все, что я могу найти, это примеры Python.Где я могу начать?Спасибо

Ответы [ 2 ]

0 голосов
/ 05 октября 2018

Какова ваша цель?Создание учебной работы или работа по прогнозированию?

Я не могу дать вам полный ответ, так как не могу найти необходимые вам ресурсы, но, возможно, этого достаточно, чтобы вы начали.

Все API-интерфейсы Google Cloud REST имеют автоматически созданные клиентские библиотеки для всех своих методов.Это то, что @Guoqing Сюй связал для вас.Они очень похожи в том, как вы взаимодействуете с ними.

  1. Для вычислительного движка вы можете посмотреть здесь, в самом низу страницы приведен пример (также на Java), как выполнить запрос с использованием такой библиотеки:

https://cloud.google.com/compute/docs/reference/rest/v1/instances/get#examples

Вот аналогичная ссылка для ML Engine:

https://cloud.google.com/ml-engine/reference/rest/v1/projects.jobs/get

К сожалению, здесь у вас нет примеров внизу.

Javadoc: https://developers.google.com/resources/api-libraries/documentation/ml/v1/java/latest/

Библиотека: https://developers.google.com/api-client-library/java/apis/ml/v1

Вы можете склеить их вместе.Я бы начал с примера вычислительного движка, оставил аутентификацию / учетные данные такими же, добавил бы некоторые импорта и заменил компоновщик и метод, см. Ниже.

Образец определенно не будет работать.Но я надеюсь, что это направит вас в правильном направлении:)

import com.google.api.client.googleapis.auth.oauth2.GoogleCredential;
import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport;
import com.google.api.client.http.HttpTransport;
import com.google.api.client.json.JsonFactory;
import com.google.api.client.json.jackson2.JacksonFactory;
import com.google.api.services.ml.v1.CloudMachineLearningEngine;  // perhaps without v1? not sure
import com.google.api.services.ml.v1.model.GoogleCloudMlV1Job; // perhaps without v1? not sure
import java.io.IOException;
import java.security.GeneralSecurityException;
import java.util.Arrays;

public class MLEngineExample {
  public static void main(String args[]) throws IOException, GeneralSecurityException {
    // Job Name for this request.
    String name = "job-name"; // TODO: Update placeholder value.

    CloudMachineLearningEngine mlEngineService = createMLEngineService();
    CloudMachineLearningEngine.Projects.Jobs request = mlEngineService.projects().jobs().get(name);

    GoogleCloudMlV1Job response = request.execute();

    // TODO: Change code below to process the `response` object:
    System.out.println(response);
  }

  public static CloudMachineLearningEngine createMLEngineService() throws IOException, GeneralSecurityException {
    HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport();
    JsonFactory jsonFactory = JacksonFactory.getDefaultInstance();

    GoogleCredential credential = GoogleCredential.getApplicationDefault();
    if (credential.createScopedRequired()) {
      credential =
          credential.createScoped(Arrays.asList("https://www.googleapis.com/auth/cloud-platform"));
    }

    return new CloudMachineLearningEngine.Builder(httpTransport, jsonFactory, credential)
        .setApplicationName("Google-MlEngineSample/0.1")
        .build();
  }
}
0 голосов
/ 02 октября 2018

Итак, одно дело - взаимодействовать с API-интерфейсом Cloud Machine Learning Engine, а одно - создать модель, которую можно обучить с помощью Cloud Machine Learning Engine.

Первое можно сделать на Java, так какэто просто API, который вы можете использовать, последний требует от вас предоставить модель TensorFlow для обучения.Это правда, что Tensorflow предлагает Java-привязки , но в основном они используют существующий граф TensorFlow в вашем приложении, а не его разработку (хотя и возможно).Если вы хотите построить график, вам, по сути, придется использовать Python, поскольку число доступных функций намного больше, чем у Java.

...