모델 메타데이터 가져오기

개요

이 페이지에서는 BigQuery ML 모델 관련 정보 또는 메타데이터를 가져오는 방법을 설명합니다. 다음 방법을 사용하여 모델 메타데이터를 가져올 수 있습니다.

  • Cloud Console 사용
  • bq show CLI 명령어 사용
  • models.get API 메서드 직접 호출 또는 클라이언트 라이브러리 사용

필수 권한

모델 메타데이터를 가져오려면 데이터세트에 대한 READER 역할을 할당받거나 bigquery.models.getMetadata 권한이 있는 프로젝트 수준의 IAM 역할을 할당받아야 합니다. 프로젝트 수준에서 bigquery.models.getMetadata 권한을 부여받으면 프로젝트의 모든 데이터세트에 있는 모델의 메타데이터를 가져올 수 있습니다. 다음과 같은 사전 정의된 프로젝트 수준의 IAM 역할에는 bigquery.models.getMetadata 권한이 포함되어 있습니다.

  • bigquery.dataViewer
  • bigquery.dataEditor
  • bigquery.dataOwner
  • bigquery.metadataViewer
  • bigquery.admin

BigQuery ML의 IAM 역할과 권한에 대한 자세한 내용은 액세스 제어를 참조하세요. 데이터세트 수준 역할에 대한 자세한 내용은 BigQuery 문서의 데이터세트 기본 역할을 참조하세요.

모델 메타데이터 가져오기

모델 메타데이터를 가져오려면 다음 단계를 따릅니다.

Console

  1. 탐색 패널의 리소스 섹션에서 프로젝트를 확장하고 데이터세트를 선택합니다.

  2. 모델 이름을 클릭합니다.

  3. 쿼리 편집기 상자 아래에서 세부정보를 클릭합니다. 이 페이지에 설명, 라벨, 세부정보, 학습 옵션을 포함한 모델의 메타데이터가 표시됩니다.

    Google Cloud Console의 모델 메타데이터

CLI

bq show 명령어를 --model 또는 -m 플래그와 함께 실행하여 모델 메타데이터를 표시합니다. --format 플래그를 사용하면 출력을 제어할 수 있습니다.

모델의 특성 열만 표시하려면 --model 플래그와 함께 --schema 플래그를 사용합니다. --schema 플래그를 사용할 경우 --formatjson 또는 prettyjson으로 설정해야 합니다.

기본 프로젝트가 아닌 다른 프로젝트의 모델에 대한 정보를 가져오려면 프로젝트 ID를 [PROJECT_ID]:[DATASET] 형식으로 데이터세트에 추가합니다.

bq show --model --format=prettyjson [PROJECT_ID]:[DATASET].[MODEL]

각 항목의 의미는 다음과 같습니다.

  • [PROJECT_ID]는 프로젝트 ID입니다.
  • [DATASET]는 데이터세트 이름입니다.
  • [MODEL]은 모델 이름입니다.

--format=pretty 플래그를 사용할 경우 명령어 결과는 다음과 같습니다. 전체 세부정보를 표시하려면 --format=prettyjson 형식을 사용합니다. 샘플 출력에는 로지스틱 회귀 모델의 메타데이터가 표시됩니다.

+--------------+---------------------+---------------------+---------------------------+--------+-----------------+-----------------+
|      Id      |     Model Type      |   Feature Columns   |       Label Columns       | Labels |  Creation Time  | Expiration Time |
+--------------+---------------------+---------------------+---------------------------+--------+-----------------+-----------------+
| sample_model | LOGISTIC_REGRESSION | |- column1: string  | |- label_column: int64    |        | 03 May 23:14:42 |                 |
|              |                     | |- column2: bool    |                           |        |                 |                 |
|              |                     | |- column3: string  |                           |        |                 |                 |
|              |                     | |- column4: int64   |                           |        |                 |                 |
+--------------+---------------------+---------------------+---------------------------+--------+-----------------+-----------------+

예:

다음 명령어를 입력하여 mydatasetmymodel 관련 정보를 모두 표시합니다. 여기서 mydataset는 기본 프로젝트에 있습니다.

bq show --model --format=prettyjson mydataset.mymodel

다음 명령어를 입력하여 mydatasetmymodel 관련 정보를 모두 표시합니다. mydataset는 기본 프로젝트가 아닌 myotherproject에 있습니다.

bq show --model --format=prettyjson myotherproject:mydataset.mymodel

다음 명령어를 입력하면 mydatasetmymodel 특성 열만 표시됩니다. mydataset는 기본 프로젝트가 아닌 myotherproject에 있습니다.

bq show --model --schema --format=prettyjson \
myotherproject:mydataset.mymodel

API

API를 사용하여 모델 메타데이터를 가져오려면 models.get 메서드를 호출하고 projectId, datasetId, modelId를 제공합니다.

Go

import (
	"context"
	"fmt"
	"io"

	"cloud.google.com/go/bigquery"
)

// printModelInfo demonstrates fetching metadata about a BigQuery ML model and printing some of
// it to an io.Writer.
func printModelInfo(w io.Writer, projectID, datasetID, modelID string) error {
	// projectID := "my-project-id"
	// datasetID := "mydataset"
	// modelID := "mymodel"
	ctx := context.Background()
	client, err := bigquery.NewClient(ctx, projectID)
	if err != nil {
		return fmt.Errorf("bigquery.NewClient: %v", err)
	}
	defer client.Close()

	meta, err := client.Dataset(datasetID).Model(modelID).Metadata(ctx)
	if err != nil {
		return fmt.Errorf("Metadata: %v", err)
	}
	fmt.Fprintf(w, "Got model '%q' with friendly name '%q'\n", modelID, meta.Name)
	return nil
}

자바

import com.google.cloud.bigquery.BigQuery;
import com.google.cloud.bigquery.BigQueryException;
import com.google.cloud.bigquery.BigQueryOptions;
import com.google.cloud.bigquery.Model;
import com.google.cloud.bigquery.ModelId;

public class GetModel {

  public static void runGetModel() {
    // TODO(developer): Replace these variables before running the sample.
    String datasetName = "MY_DATASET_NAME";
    String modelName = "MY_MODEL_ID";
    getModel(datasetName, modelName);
  }

  public static void getModel(String datasetName, String modelName) {
    try {
      // Initialize client that will be used to send requests. This client only needs to be created
      // once, and can be reused for multiple requests.
      BigQuery bigquery = BigQueryOptions.getDefaultInstance().getService();

      ModelId modelId = ModelId.of(datasetName, modelName);
      Model model = bigquery.getModel(modelId);
      System.out.println("Model: " + model.getDescription());

      System.out.println("Successfully retrieved model");
    } catch (BigQueryException e) {
      System.out.println("Cannot retrieve model \n" + e.toString());
    }
  }
}

Node.js

// Import the Google Cloud client library
const {BigQuery} = require('@google-cloud/bigquery');
const bigquery = new BigQuery();

async function getModel() {
  // Retrieves model named "my_existing_model" in "my_dataset".

  /**
   * TODO(developer): Uncomment the following lines before running the sample
   */
  // const datasetId = "my_dataset";
  // const modelId = "my_existing_model";

  const dataset = bigquery.dataset(datasetId);
  const [model] = await dataset.model(modelId).get();

  console.log('Model:');
  console.log(model.metadata.modelReference);
}

Python


from google.cloud import bigquery

# Construct a BigQuery client object.
client = bigquery.Client()

# TODO(developer): Set model_id to the ID of the model to fetch.
# model_id = 'your-project.your_dataset.your_model'

model = client.get_model(model_id)  # Make an API request.

full_model_id = "{}.{}.{}".format(model.project, model.dataset_id, model.model_id)
friendly_name = model.friendly_name
print(
    "Got model '{}' with friendly_name '{}'.".format(full_model_id, friendly_name)
)

다음 단계