如何在Java中的GCP上创建云机器学习引擎作业?

时间:2018-10-02 14:57:32

标签: java google-cloud-platform google-cloud-ml

我找不到任何说明Java中GCP Cloud ML引擎作业基本设置的源代码。我所能找到的只是Python示例。我可以从哪里开始?谢谢

2 个答案:

答案 0 :(得分:2)

您的目标是什么?创建培训工作还是预测工作?

我无法提供完整的答案,因为我也找不到您需要的资源,但也许足以让您入门。

所有Google Cloud REST API均为其所有方法自动生成了客户端库。这就是@Guoqing Xu为您链接的内容。它们与您互动的方式非常相似。

  1. 对于计算引擎,您可以在这里看一下,在页面的最底部是一个示例(同样在Java中)如何使用此类库执行请求的示例:

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

  1. 以下是ML Engine的类似参考:

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

遗憾的是,这里没有底部的示例。

  1. 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();
  }
}

答案 1 :(得分:-1)

因此,一件事是与Cloud Machine Learning Engine API进行交互,一是建立可以使用Cloud Machine Learning Engine进行训练的模型。

第一个可以用Java完成,因为它只是您可以使用的API,而后者则需要您提供TensorFlow模型进行训练。 Tensorflow确实提供了Java bindings,但是这些主要是为了在您的应用程序中使用一个预先存在的TensorFlow图,而不是开发一个(尽管有可能)。如果要构造图形,则必须使用Python,因为可用功能的数量远远大于Java。