스트리밍 가져오기

스트리밍 가져오기를 사용하면 특성 값을 실시간으로 업데이트할 수 있습니다. 이 방법은 온라인 서빙에 사용 가능한 최신 데이터를 우선시할 때 유용합니다. 예를 들어 스트리밍 이벤트 데이터를 가져올 수 있으며 Vertex AI Feature Store(기존)는 몇 초 내에 이 데이터를 온라인 제공 시나리오에서 사용할 수 있습니다.

데이터를 백필해야 하거나 일괄적으로 특성 값을 계산하는 경우 일괄 가져오기를 사용합니다. 스트리밍 가져오기 요청과 비교했을 때 일괄 가져오기 요청은 더 큰 페이로드를 처리할 수 있지만 완료되는 데 더 오래 걸릴 수 있습니다.

가져올 수 있는 가장 오래된 특성 값 타임스탬프에 대한 자세한 내용은 할당량 및 한도Vertex AI Feature Store(기존)를 참조하세요. 타임스탬프가 미래의 날짜 또는 시간을 나타내는 특성 값을 가져올 수 없습니다.

사용 사례

온라인 소매 조직은 사용자의 현재 활동을 사용하여 맞춤설정된 쇼핑 환경을 제공할 수 있습니다. 사용자가 웹사이트를 탐색하면 활동을 피처스토어에 캡처한 후 바로 온라인 예측에 필요한 모든 정보를 제공할 수 있습니다. 이 실시간 가져오기와 제공을 통해 쇼핑 세션 중에 고객에게 유용한 관련 추천 항목을 표시할 수 있습니다.

온라인 스토리지 노드 사용량

온라인 저장소에 특성 값을 작성하면 피처스토어의 CPU 리소스(온라인 스토리지 노드)가 사용됩니다. CPU 사용량을 모니터링하여 수요가 공급을 초과하지 않는지 확인합니다. 수요가 공급을 초과하면 오류가 발생합니다. 이러한 오류를 방지하려면 사용률이 약 70% 이하가 되는 것이 좋습니다. 값을 정기적으로 초과하면 피처스토어를 업데이트하여 노드 수를 늘리거나 자동 확장을 사용하면 됩니다. 자세한 내용은 피처스토어 관리를 참조하세요.

스트리밍 가져오기

특정 특성에 값을 작성합니다. 특성 값은 가져오기 요청의 일부로 포함되어야 합니다. 데이터 소스에서 직접 데이터를 스트리밍할 수 없습니다.

최근에 만든 기능에 쓰는 경우 새 기능이 아직 전파되지 않았을 수 있으므로 쓰기 전에 몇 분 정도 기다립니다. 그렇지 않으면 resource not found 오류가 표시될 수 있습니다.

쓰기당 항목 하나의 특성 값만 가져올 수 있습니다. 특정 프로젝트 및 리전의 경우 최대 10개의 서로 다른 항목 유형 내에서 여러 항목의 특성 값을 동시에 작성할 수 있습니다. 이 한도에는 지정된 프로젝트와 리전의 모든 피처스토어에 대한 모든 스트리밍 가져오기 요청이 포함됩니다. 이 한도를 초과하면 Vertex AI Feature Store(기존)에서 모든 데이터를 오프라인 저장소에 쓰지 못할 수 있습니다. 이 경우 Vertex AI Feature Store(기존)가 로그 탐색기에 오류를 로깅합니다. 자세한 내용은 스트리밍 가져오기에 대한 오프라인 스토리지 쓰기 오류 모니터링을 참조하세요.

REST

기존 기능의 특성 값을 가져오려면 featurestores.entityTypes.writeFeatureValues 메서드를 사용하여 POST 요청을 전송합니다. 소스 데이터 열과 대상 특성 ID의 이름이 다르면 sourceField 매개변수를 포함합니다. featurestores.entityTypes.writeFeatureValues를 사용하면 한 번에 하나의 항목에 대한 특성 값만 가져올 수 있습니다.

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

  • LOCATION: 피처스토어가 생성되는 리전. 예를 들면 us-central1입니다.
  • PROJECT: 프로젝트 ID
  • FEATURESTORE_ID: 피처스토어의 ID
  • ENTITY_TYPE_ID: 항목 유형의 ID
  • FEATURE_ID: 값을 작성할 피처스토어의 기존 특성 ID
  • VALUE_TYPE: 특성의 값 유형
  • VALUE: 특성 값
  • TIME_STAMP(선택사항): 특성이 생성된 시간. 타임스탬프는 RFC3339 UTC 형식이어야 합니다.

HTTP 메서드 및 URL:

POST http://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID:writeFeatureValues

JSON 요청 본문:

{
  "payloads": [
    {
      "entityId": "ENTITY_ID",
      "featureValues": {
        "FEATURE_ID": {
          "VALUE_TYPE": VALUE,
          "metadata": {"generate_time": "TIME_STAMP"}
        }
      }
    }
  ]
}

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

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 \
"http://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID:writeFeatureValues"

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 "http://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID:writeFeatureValues" | Select-Object -Expand Content

성공 상태 코드(2xx)와 빈 응답을 받게 됩니다.

Python

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

from google.cloud import aiplatform

def write_feature_values_sample(
    project: str, location: str, entity_type_id: str, featurestore_id: str
):

    aiplatform.init(project=project, location=location)

    my_entity_type = aiplatform.featurestore.EntityType(
        entity_type_name=entity_type_id, featurestore_id=featurestore_id
    )

    my_data = {
        "movie_01": {
            "title": "The Shawshank Redemption",
            "average_rating": 4.7,
            "genre": "Drama",
        },
    }

    my_entity_type.write_feature_values(instances=my_data)

추가 언어

다음 Vertex AI 클라이언트 라이브러리를 설치하고 사용하여 Vertex AI API를 호출할 수 있습니다. Cloud 클라이언트 라이브러리는 지원되는 각 언어의 고유한 규칙 및 스타일을 사용하여 최적화된 개발자 환경을 제공합니다.

다음 단계