모델 메타데이터 업데이트

개요

이 페이지에서는 BigQuery ML 모델 메타데이터를 업데이트하는 방법을 설명합니다. 다음 방법을 사용하여 모델 메타데이터를 업데이트할 수 있습니다.

  • Google Cloud 콘솔 사용
  • bq 명령줄 도구에서 bq update 명령어 사용
  • models.patch API 메서드 직접 호출 또는 클라이언트 라이브러리 사용

다음 모델 메타데이터를 업데이트할 수 있습니다.

  • 설명: Google Cloud 콘솔, bq 명령줄 도구, API 또는 클라이언트 라이브러리를 사용하여 업데이트할 수 있습니다.
  • 라벨: Google Cloud 콘솔, bq 명령줄 도구, API 또는 클라이언트 라이브러리를 사용하여 업데이트할 수 있습니다.
  • 만료 시간: bq 도구, API 또는 클라이언트 라이브러리를 사용하여 업데이트할 수 있습니다.

필수 권한

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

  • bigquery.dataEditor
  • bigquery.dataOwner
  • bigquery.admin

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

모델의 설명 업데이트

모델의 설명은 모델을 쉽게 식별하는 데 사용되는 텍스트 문자열입니다.

모델의 설명을 업데이트하려면 다음 단계를 따릅니다.

콘솔

  1. Google Cloud 콘솔에서 BigQuery 페이지로 이동합니다.

    BigQuery 페이지로 이동

  2. 탐색 패널의 리소스 섹션에서 프로젝트 이름과 데이터 세트 이름을 확장합니다.

  3. 모델 이름을 클릭합니다. 모델은 모델 아이콘(모델 아이콘)으로 표시됩니다.

  4. 세부정보 탭을 클릭합니다.

  5. 모델의 설명을 업데이트하려면 설명의 오른쪽에 있는 수정 아이콘(연필)을 클릭합니다.

  6. 설명 수정 대화상자에서 텍스트를 입력한 다음 업데이트를 클릭합니다.

bq

모델의 설명을 업데이트하려면 bq update 명령어를 --model 또는 -m 플래그 및 --description 플래그와 함께 실행합니다.

기본 프로젝트가 아닌 다른 프로젝트에서 모델을 업데이트하는 경우 프로젝트 ID를 [PROJECT_ID]:[DATASET] 형식으로 데이터 세트에 추가합니다.

bq update --model --description "[STRING]" [PROJECT_ID]:[DATASET].[MODEL]

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

  • [STRING]은 모델을 따옴표로 묶어 설명하는 텍스트 문자열입니다.
  • [PROJECT_ID]는 프로젝트 ID입니다.
  • [DATASET]는 데이터 세트 이름입니다.
  • [MODEL]은 모델 이름입니다.

명령어 결과는 다음과 같이 표시됩니다.

Model '[PROJECT_ID]:[DATASET].[MODEL]' successfully updated.

bq show 명령어를 실행하여 변경사항을 확인할 수 있습니다. 자세한 내용은 모델 메타데이터 가져오기를 참조하세요.

예를 들면 다음과 같습니다.

기본 프로젝트의 mydataset에 있는 mymodel의 설명을 업데이트하려면 다음 명령어를 입력합니다.

bq update --model --description "My updated description" \
mydataset.mymodel

myotherprojectmydataset에 있는 mymodel의 설명을 업데이트하려면 다음 명령어를 입력합니다.

bq update --model --description "My updated description" \
myotherproject:mydataset.mymodel

API

API를 사용하여 모델의 설명을 업데이트하려면 models.patch 메서드를 호출하고 projectId, datasetId, modelId를 제공합니다. 설명을 수정하려면 모델 리소스의 'description' 속성을 추가하거나 업데이트합니다.

Go

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

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

import (
	"context"
	"fmt"

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

// updateModelDescription demonstrates fetching BigQuery ML model metadata and updating the
// Description metadata.
func updateModelDescription(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()

	model := client.Dataset(datasetID).Model(modelID)
	oldMeta, err := model.Metadata(ctx)
	if err != nil {
		return fmt.Errorf("couldn't retrieve model metadata: %w", err)
	}
	update := bigquery.ModelMetadataToUpdate{
		Description: "This model was modified from a Go program",
	}
	if _, err = model.Update(ctx, update, oldMeta.ETag); err != nil {
		return fmt.Errorf("couldn't update model: %w", err)
	}
	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;

// Sample to update description on a model
public class UpdateModelDescription {

  public static void runUpdateModelDescription() {
    // TODO(developer): Replace these variables before running the sample.
    String datasetName = "MY_DATASET_NAME";
    String modelName = "MY_MODEL_NAME";
    String newDescription = "A really great model.";
    updateModelDescription(datasetName, modelName, newDescription);
  }

  public static void updateModelDescription(
      String datasetName, String modelName, String newDescription) {
    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();

      Model model = bigquery.getModel(ModelId.of(datasetName, modelName));
      bigquery.update(model.toBuilder().setDescription(newDescription).build());
      System.out.println("Model description updated successfully to " + newDescription);
    } catch (BigQueryException e) {
      System.out.println("Model description was not updated \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 updateModel() {
  // Updates a model's metadata.

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

  const metadata = {
    description: 'A really great model.',
  };

  const dataset = bigquery.dataset(datasetId);
  const [apiResponse] = await dataset.model(modelId).setMetadata(metadata);
  const newDescription = apiResponse.description;

  console.log(`${modelId} description: ${newDescription}`);
}

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.
model.description = "This model was modified from a Python program."
model = client.update_model(model, ["description"])  # Make an API request.

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

모델의 라벨 업데이트

라벨은 리소스에 연결할 수 있는 키-값 쌍입니다. BigQuery ML 리소스를 만들 때 라벨은 선택사항입니다. 자세한 내용은 라벨 추가 및 사용을 참조하세요.

모델의 라벨을 업데이트하려면 다음 단계를 따릅니다.

콘솔

  1. Google Cloud 콘솔에서 BigQuery 페이지로 이동합니다.

    BigQuery 페이지로 이동

  2. 탐색 패널의 리소스 섹션에서 프로젝트 이름과 데이터 세트 이름을 확장합니다.

  3. 모델 이름을 클릭합니다. 모델은 모델 아이콘(모델 아이콘)으로 표시됩니다.

  4. 세부정보 탭을 클릭합니다.

  5. 모델의 라벨을 업데이트하려면 라벨의 오른쪽에 있는 수정 아이콘(연필)을 클릭합니다.

  6. 라벨 수정 대화상자에서 다음을 수행합니다.

    • 추가 라벨을 적용하려면 라벨 추가를 클릭합니다. 각 키는 데이터 세트당 한 번만 사용할 수 있지만 동일한 프로젝트의 여러 데이터 세트에 같은 키를 사용할 수 있습니다.
    • 기존 키 또는 값을 수정하여 라벨을 업데이트합니다.
    • 업데이트를 클릭하여 변경사항을 저장합니다.

bq

모델의 라벨을 업데이트하려면 bq update 명령어를 --model 또는 -m 플래그 및 --set_label 플래그와 함께 실행합니다. 라벨 여러 개를 추가하거나 업데이트하려면 --set_label 플래그를 반복합니다.

기본 프로젝트가 아닌 다른 프로젝트에서 모델을 업데이트하는 경우 프로젝트 ID를 [PROJECT_ID]:[DATASET] 형식으로 데이터 세트에 추가합니다.

bq update --model --set_label [KEY:VALUE] \
[PROJECT_ID]:[DATASET].[MODEL]

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

  • [KEY:VALUE]는 추가하거나 업데이트하려는 라벨의 키-값 쌍에 해당합니다. 기존 라벨과 동일한 키를 지정하면 기존 라벨의 값이 업데이트됩니다. 키는 고유해야 합니다.
  • [PROJECT_ID]는 프로젝트 ID입니다.
  • [DATASET]는 데이터 세트 이름입니다.
  • [MODEL]은 모델 이름입니다.

명령어 결과는 다음과 같이 표시됩니다.

Model '[PROJECT_ID]:[DATASET].[MODEL]' successfully updated.

bq show 명령어를 실행하여 변경사항을 확인할 수 있습니다. 자세한 내용은 모델 메타데이터 가져오기를 참조하세요.

예를 들면 다음과 같습니다.

mymodeldepartment 라벨을 업데이트하려면 bq update 명령어를 입력하고 department를 라벨 키로 지정합니다. 예를 들어 department:shipping 라벨을 department:logistics로 업데이트하려면 다음 명령어를 입력합니다. mydataset는 기본 프로젝트가 아닌 myotherproject에 있습니다.

bq update --model --set_label department:logistics \
myotherproject:mydataset.mymodel

API

API를 사용하여 모델의 라벨을 업데이트하려면 models.patch 메서드를 호출하고 projectId, datasetId, modelId를 제공합니다. 라벨을 수정하려면 모델 리소스의 'labels' 속성을 추가하거나 업데이트합니다.

모델의 만료 시간 업데이트

모델의 만료 시간은 모델이 삭제되는 시점을 나타내는 타임스탬프 값입니다. CLI, API 또는 클라이언트 라이브러리를 사용하여 모델을 만들 때 모델의 만료 시간을 설정할 수 있습니다. 또한 모델을 만든 후 모델에서 만료 시간을 설정하거나 업데이트할 수 있습니다. 모델의 만료 시간은 '수명' 또는 TTL이라고도 합니다.

모델에 만료 시간을 설정하지 않으면 모델이 만료되지 않으므로 수동으로 모델을 삭제해야 합니다.

만료 시간 값은 값이 설정된 위치에 따라 다르게 표시됩니다. 원하는 세부사항 수준에 따라 적절한 방법을 사용하세요.

  • 명령줄 도구에서는 만료 시간이 현재 UTC 시간의 초 단위로 표시됩니다. 명령줄에서 만료 시간을 지정하면 초 단위의 정수 값이 현재 UTC 타임스탬프에 추가됩니다.
  • API에서는 만료 시간이 해당 세대부터 밀리초 단위로 표시됩니다. 현재 타임스탬프보다 낮은 만료 값을 지정하면 모델이 즉시 만료됩니다.

모델의 만료 시간을 업데이트하려면 다음 단계를 따릅니다.

콘솔

현재 Google Cloud 콘솔에서는 모델 만료 시간을 설정하거나 업데이트할 수 없습니다.

bq

모델의 만료 시간을 업데이트하려면 bq update 명령어를 --model 또는 -m 플래그 및 --expiration 플래그와 함께 실행합니다.

기본 프로젝트가 아닌 다른 프로젝트에서 모델을 업데이트하는 경우 프로젝트 ID를 [PROJECT_ID]:[DATASET] 형식으로 데이터 세트에 추가합니다.

bq update --model --expiration [INTEGER] \
[PROJECT_ID]:[DATASET].[MODEL]

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

  • [INTEGER]는 모델의 수명(초)입니다. 최솟값은 3,600초(1시간)입니다. 만료 시간은 현재 UTC 시간과 정수 값을 더한 값으로 계산됩니다.
  • [PROJECT_ID]는 프로젝트 ID입니다.
  • [DATASET]는 데이터 세트 이름입니다.
  • [MODEL]은 모델 이름입니다.

명령어 결과는 다음과 같이 표시됩니다.

Model '[PROJECT_ID]:[DATASET].[MODEL]' successfully updated.

bq show 명령어를 실행하여 변경사항을 확인할 수 있습니다. 자세한 내용은 모델 메타데이터 가져오기를 참조하세요.

예를 들면 다음과 같습니다.

mydatasetmymodel 만료 시간을 5일(432,000초)로 업데이트하려면 다음 명령어를 입력합니다. 여기서 mydataset는 기본 프로젝트에 있습니다.

bq update --model --expiration 432000 mydataset.mymodel

mydatasetmymodel 만료 시간을 5일(432,000초)로 업데이트하려면 다음 명령어를 입력합니다. mydataset는 기본 프로젝트가 아닌 myotherproject에 있습니다.

bq update --model --expiration 432000 myotherproject:mydataset.mymodel

API

API를 사용하여 모델 만료 시간을 업데이트하려면 models.patch 메서드를 호출하고 projectId, datasetId, modelId를 제공합니다. 만료 시간을 수정하려면 모델 리소스의 'expirationTime' 속성을 추가하거나 업데이트합니다. 'expirationTime'은 해당 세대부터 밀리초 단위로 표시됩니다.

다음 단계