특성 그룹 만들기

특성 그룹은 특성 데이터가 포함된 BigQuery 테이블 또는 뷰와 연결된 특성 레지스트리 리소스입니다. 특성 그룹에는 여러 특성이 포함될 수 있으며, 각 특성은 특성 데이터 소스의 열과 연결됩니다. 특성 레지스트리에 특성 데이터 소스를 등록하려면 특성 그룹을 만든 후 특성을 추가합니다.

특성 그룹을 만들고 BigQuery 데이터 소스를 연결한 후 데이터 소스의 열과 연결된 특성을 만들 수 있습니다. 특성 그룹을 만드는 동안 데이터 소스를 연결하는 것은 선택사항이지만, 특성 그룹 내에서 특성을 만들기 전에 BigQuery 테이블 또는 뷰를 연결해야 합니다. 각 특성은 특성 그룹과 연결된 데이터 소스의 열에 해당합니다.

특성 그룹과 특성을 사용하는 이유

특성 데이터 소스 등록은 선택사항입니다. 하지만 다음 시나리오에서는 특성 그룹과 특성을 만들어 특성 데이터를 등록해야 합니다.

  • 시계열 형식의 과거 데이터를 사용하여 모델 학습: 특성 데이터 소스에 동일한 엔티티 ID에 대한 여러 특성 레코드가 포함된 최신 및 과거 특성 데이터가 모두 포함된 경우 feature_timestamp 열을 추가하여 이 데이터의 형식을 시계열로 지정합니다. 이 시나리오에서는 특성 그룹과 특성을 사용하여 데이터 소스를 등록해야 합니다. 그런 다음 다음과 같이 특성을 서빙할 수 있습니다.

    • 온라인 서빙을 사용하여 타임스탬프를 기반으로 최신 특성 값을 서빙하여 실시간 예측을 수행합니다.

    • 오프라인 서빙을 사용하여 모델을 학습시키기 위한 최신 및 과거 특성 값을 서빙합니다.

  • 여러 소스의 특성 집계: 특성 뷰 인스턴스를 만들 때 특성 그룹을 사용하여 여러 BigQuery 데이터 소스의 특정 열을 집계합니다.

  • null 특성 값 서빙: 온라인 서빙 중에 null 값을 포함한 최신 특성 값만 서빙하려면 dense 파라미터를 true로 설정하여 특성 그룹을 만들어 특성 데이터 소스를 등록합니다.

  • 특성 뷰에서 지속적 데이터 동기화 사용: 특성 등록은 특성 뷰에서 지속적 데이터 동기화를 사용하기 위한 기본 요건입니다.

  • 이상 징후에 대한 특성 모니터링: 특성 통계를 가져오고 특성 드리프트를 감지하도록 특성 모니터링을 설정하려면 특성을 등록해야 합니다.

특성 그룹과 특성을 사용하지 말아야 하는 경우

특성 데이터 소스에서 임베딩을 서빙하려면 특성 그룹과 특성을 만들어 데이터 소스를 등록하지 마세요. 이 시나리오에서는 BigQuery 테이블 또는 뷰를 특성 뷰와 직접 연결하여 온라인 서빙을 설정해야 합니다.

특성 데이터 소스를 등록하지 않고 온라인 서빙을 설정하는 방법에 대한 자세한 내용은 BigQuery 소스에서 특성 뷰 만들기를 참조하세요.

액세스 제어

다음 수준에서 특성 그룹의 액세스를 제어할 수 있습니다.

  • FeatureGroup 리소스에 대한 액세스 제어: 특정 개인, Google 그룹, 도메인 또는 서비스 계정의 특성 그룹에 대한 액세스를 제어하려면 특성 그룹에 대한 IAM 정책을 설정합니다.

  • BigQuery 데이터 소스에 대한 액세스 제어: 기본적으로 특성 그룹은 프로젝트에 구성된 기본 서비스 계정을 사용합니다. Vertex AI Feature Store는 이 서비스 계정에 BigQuery 데이터 뷰어 Identity and Access Management(IAM) 역할을 할당합니다. 이렇게 하면 프로젝트에서 특성 그룹을 만들 수 있는 권한이 있는 모든 사용자가 BigQuery의 특성 데이터 소스에 액세스할 수 있습니다. BigQuery 데이터 소스에 대한 액세스를 제한하거나 추가 사용자에게 액세스 권한을 부여하려면 자체 전용 서비스 계정을 사용하도록 특성 그룹을 설정하면 됩니다. Vertex AI Feature Store는 전용 서비스 계정을 갖도록 구성된 각 특성 그룹에 대해 고유한 서비스 계정 이메일 주소를 생성합니다.

시작하기 전에

특성 그룹을 만들기 전에 다음 기본 요건을 완료합니다.

특성 데이터 소스를 등록하기 위한 특성 그룹 만들기

다음 샘플을 사용하여 특성 그룹을 만들고 BigQuery 테이블 또는 뷰와 같은 특성 데이터 소스를 연결합니다.

콘솔

중요: 전용 서비스 계정 으로 특성 그룹을 콘솔에서 만들 수 없습니다. Google Cloud 전용 서비스 계정으로 특성 그룹을 만들려면 REST API 또는 Agent Platform SDK for Python을 사용합니다.

다음 안내에 따라 Google Cloud 콘솔을 사용하여 특성 그룹을 만듭니다.

  1. 콘솔의 Agent Platform 섹션에서 Google Cloud Feature Store 페이지로 이동합니다.

    Feature Store 페이지로 이동

  2. 특성 그룹 섹션에서 만들기를 클릭하여 특성 그룹 만들기 페이지의 기본 정보 창을 엽니다.

  3. 특성 그룹 이름을 지정합니다.

  4. 선택사항: 라벨을 추가하려면 라벨 추가를 클릭하고 라벨 이름과 값을 지정합니다. 특성 그룹에 여러 라벨을 추가할 수 있습니다.

  5. BigQuery 경로 필드에서 찾아보기를 클릭하여 특성 그룹과 연결할 BigQuery 소스 테이블 또는 뷰를 선택합니다.

  6. 엔티티 ID 열 목록에서 BigQuery 소스 테이블 또는 뷰의 엔티티 ID 열을 선택합니다.

    BigQuery 소스 테이블 또는 뷰에 entity_id라는 열이 있는 경우에는 선택사항입니다. 이 경우 엔티티 ID 열을 선택하지 않으면 특성 그룹에서 entity_id 열을 기본 엔티티 ID 열로 사용합니다.

  7. 계속을 클릭합니다.

  8. 등록 창에서 다음 옵션 중 하나를 클릭하여 새 특성 그룹에 특성을 추가할지 여부를 나타냅니다.

    • BigQuery 테이블의 모든 열 포함—BigQuery 소스 테이블 또는 뷰의 모든 열에 대해 특성 그룹 내에 특성을 만듭니다.

    • 특성 수동 입력—BigQuery 소스의 특정 열을 기준으로 특성을 만듭니다. 각 특성에 대해 특성 이름을 입력하고 목록에서 해당 BigQuery 소스 열 이름을 클릭합니다.

      더 많은 특성을 추가하려면 다른 특성 추가를 클릭합니다.

    • 빈 특성 그룹 만들기—특성을 추가하지 않고 특성 그룹을 만듭니다.

  9. 만들기를 클릭합니다.

Python

Vertex AI SDK for Python을 설치하거나 업데이트하는 방법은 Vertex AI SDK for Python 설치를 참조하세요. 자세한 내용은 Python API 참고 문서를 참조하세요.

참고: 이 샘플은 기본 서비스 계정 구성으로 특성 그룹을 만듭니다.

from google.cloud import aiplatform
from vertexai.resources.preview import feature_store
from typing import List


def create_feature_group_sample(
    project: str,
    location: str,
    feature_group_id: str,
    bq_table_uri: str,
    entity_id_columns: List[str],
):
    aiplatform.init(project=project, location=location)
    fg = feature_store.FeatureGroup.create(
        name=feature_group_id,
        source=feature_store.utils.FeatureGroupBigQuerySource(
            uri=bq_table_uri, entity_id_columns=entity_id_columns
        ),
    )
    return fg

  • project: 프로젝트 ID입니다.
  • location: 특성 그룹을 만들 리전입니다(예: us-central1).
  • feature_group_id: 만들려는 새 특성 그룹의 이름입니다.
  • bq_table_uri: 특성 그룹에 등록하려는 BigQuery 소스 테이블 또는 뷰의 URI입니다.
  • entity_id_columns: 엔티티 ID가 포함된 열의 이름입니다. 열을 한 개 또는 여러 개 지정할 수 있습니다.
    • 엔티티 ID 열을 하나만 지정하려면 열 이름을 다음 형식으로 지정합니다.
      "entity_id_column_name".
    • 여러 개의 엔티티 ID 열을 지정하려면 열 이름을 다음 형식으로 지정합니다.
      ["entity_id_column_1_name", "entity_id_column_2_name", ...].

REST

FeatureGroup 리소스를 만들려면 POST 요청을 featureGroups.create 메서드를 사용하여 전송합니다.

요청 데이터를 사용하기 전에 다음을 바꿉니다.

  • LOCATION_ID: 특성 그룹을 만들 리전입니다(예: us-central1).
  • SERVICE_AGENT_TYPE: 선택사항. 특성 그룹에 대한 서비스 계정 구성입니다. 특성 그룹에 전용 서비스 계정을 사용하려면 SERVICE_AGENT_TYPE_FEATURE_GROUP을 입력합니다.
  • PROJECT_ID: 프로젝트 ID입니다.
  • ENTITY_ID_COLUMNS: 엔티티 ID가 포함된 열의 이름입니다. 열을 한 개 또는 여러 개 지정할 수 있습니다.
    • 엔티티 ID 열을 하나만 지정하려면 열 이름을 다음 형식으로 지정합니다.
      "entity_id_column_name".
    • 여러 개의 엔티티 ID 열을 지정하려면 열 이름을 다음 형식으로 지정합니다.
      ["entity_id_column_1_name", "entity_id_column_2_name", ...].
  • FEATUREGROUP_NAME: 만들려는 새 특성 그룹의 이름입니다.
  • BIGQUERY_SOURCE_URI: 특성 그룹에 등록하려는 BigQuery 소스 테이블 또는 뷰의 URI입니다.
  • TIMESTAMP_COLUMN: 선택사항. BigQuery 소스 테이블 또는 뷰에서 특성 타임스탬프가 포함된 열의 이름을 지정합니다.
    데이터 형식이 시계열이고 특성 타임스탬프가 포함된 열의 이름이 feature_timestamp가 아닌 경우에만 타임스탬프 열 이름을 지정해야 합니다.
  • STATIC_DATA_SOURCE: 선택사항. 데이터 형식이 시계열이 아닌 경우 true를 입력합니다. 기본 설정은 false입니다.
  • DENSE: 선택사항. Vertex AI Feature Store가 특성 그룹과 연결된 특성 뷰의 데이터를 제공하는 동안 null 값을 처리하는 방식을 나타냅니다.
    • false: 기본 설정입니다. Vertex AI Feature Store는 null이 아닌 최신 특성 값만 제공합니다. 특성의 최신 값이 null이면 Vertex AI Feature Store는 null이 아닌 최신 이전 값을 제공합니다. 그러나 특성의 현재 값과 이전 값이 모두 null이면 Vertex AI Feature Store는 null을 특성 값으로 제공합니다.
    • true: 예약된 데이터 동기화가 있는 특성 뷰의 경우 Vertex AI Feature Store는 null 값을 포함하여 최신 특성 값만 제공합니다. 연속 데이터 동기화가 있는 특성 뷰의 경우 Vertex AI Feature Store는 null이 아닌 최신 특성 값만 제공합니다. 그러나 특성의 현재 값과 이전 값이 모두 null이면 Vertex AI Feature Store는 null을 특성 값으로 제공합니다. 데이터 동기화 유형 및 특성 뷰에서 데이터 동기화 유형을 구성하는 방법에 관한 자세한 내용은 특성 뷰에서 데이터 동기화를 참고하세요.

HTTP 메서드 및 URL:

POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureGroups?feature_group_id=FEATUREGROUP_NAME

JSON 요청 본문:

{
  "service_agent_type": "SERVICE_AGENT_TYPE",
  "big_query": {
    "entity_id_columns": "ENTITY_ID_COLUMNS",
    "big_query_source": {
      "input_uri": "BIGQUERY_SOURCE_URI",
    }
    "time_series": {
      "timestamp_column": ""TIMESTAMP_COLUMN"",
    },
    "static_data_source": STATIC_DATA_SOURCE,
    "dense": DENSE
  }
}

요청을 보내려면 다음 옵션 중 하나를 선택합니다.

curl

요청 본문을 request.json 파일에 저장하고 다음 명령어를 실행합니다.

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureGroups?feature_group_id=FEATUREGROUP_NAME"

PowerShell

요청 본문을 request.json 파일에 저장하고 다음 명령어를 실행합니다.

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featureGroups?feature_group_id=FEATUREGROUP_NAME" | Select-Object -Expand Content

다음과 비슷한 JSON 응답이 표시됩니다.

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/featureGroups/FEATUREGROUP_NAME/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.aiplatform.v1.UpdateFeatureGroupOperationMetadata",
    "genericMetadata": {
      "createTime": "2023-09-18T03:00:13.060636Z",
      "updateTime": "2023-09-18T03:00:13.060636Z"
    }
  }
}

다음 단계