모델 메타데이터 가져오기

개요

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

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

필수 권한

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

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

BigQuery ML의 IAM 역할과 권한에 대한 자세한 내용은 액세스 제어를 참조하세요.

모델 메타데이터 가져오기

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

Console

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

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

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

    Google Cloud Console의 모델 메타데이터

bq

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

이 샘플을 사용해 보기 전에 BigQuery 빠른 시작: 클라이언트 라이브러리 사용Go 설정 안내를 따르세요. 자세한 내용은 BigQuery Go API 참고 문서를 확인하세요.

BigQuery에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 클라이언트 라이브러리의 인증 설정을 참조하세요.

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: %w", err)
	}
	defer client.Close()

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

Java

이 샘플을 사용해 보기 전에 BigQuery 빠른 시작: 클라이언트 라이브러리 사용Java 설정 안내를 따르세요. 자세한 내용은 BigQuery Java API 참고 문서를 확인하세요.

BigQuery에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 클라이언트 라이브러리의 인증 설정을 참조하세요.

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

이 샘플을 사용해 보기 전에 BigQuery 빠른 시작: 클라이언트 라이브러리 사용Node.js 설정 안내를 따르세요. 자세한 내용은 BigQuery Node.js API 참고 문서를 확인하세요.

BigQuery에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 클라이언트 라이브러리의 인증 설정을 참조하세요.

// 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

이 샘플을 사용해 보기 전에 BigQuery 빠른 시작: 클라이언트 라이브러리 사용Python 설정 안내를 따르세요. 자세한 내용은 BigQuery Python API 참고 문서를 확인하세요.

BigQuery에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 클라이언트 라이브러리의 인증 설정을 참조하세요.


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)
)

다음 단계