시계열 예측 수행

이 페이지에서는 AlloyDB 데이터베이스에서 직접 시계열 예측을 수행하는 방법을 설명합니다. TimesFM 모델을 비롯한 다양한 예측 모델을 사용하여 불확실성을 파악하고 정보에 입각한 전략적 결정을 내릴 수 있습니다. 모델에 관한 자세한 내용은 TimesFM 연구 블로그를 참고하세요.

AlloyDB의 ai.forecast 함수는 ts_forecasting 모델 유형으로 등록된 모든 모델과 함께 작동하도록 설계되어 필요에 가장 적합한 모델을 사용할 수 있는 유연성을 제공합니다. 이 문서에서는 TimesFM 사용에 관한 자세한 가이드를 제공하지만 원칙을 다른 모델에도 적용할 수 있습니다.

시작하기 전에

시계열 예측을 실행하려면 먼저 AlloyDB에서 예측 기능을 사용 설정하고 모델을 등록해야 합니다.

예측 모델 등록

AlloyDB에서 다양한 예측 모델을 사용할 수 있습니다.

이 섹션에서는 TimesFM 모델을 등록하는 방법을 설명합니다. 다른 모델을 등록하는 방법은 모델 엔드포인트를 모델 엔드포인트 관리에 등록하기를 참고하세요.

TimesFM 모델 사용

TimesFM 모델은 두 가지 버전으로 제공됩니다.

  • TimesFM 1.0: TimesFM 모델의 초기 버전입니다.
  • TimesFM 2.0: 버전 1.0에 비해 정확도가 최대 25% 높으므로 이 버전을 사용하는 것이 좋습니다.

두 모델 모두 Model Garden에서 신속하게 배포할 수 있습니다.

TimesFM 모델을 사용하려면 먼저 TimesFM 모델을 Vertex AI 엔드포인트에 배포한 후 AlloyDB에 등록해야 합니다.

TimesFM 모델을 Vertex AI 엔드포인트에 배포

Google Cloud 콘솔에서 원클릭 배포를 사용하여 모델을 배포하거나 Colaboratory 노트북을 사용하여 수동으로 배포할 수 있습니다.

클릭 한 번으로 배포

클릭 한 번으로 배포를 사용하여 TimesFM 모델을 배포하려면 다음 단계를 따르세요.

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

    Model Garden으로 이동
  2. 검색 필드에 TimesFM를 입력합니다.
  3. 검색 결과에서 TimesFM을 클릭합니다.
  4. TimesFM 페이지에서 다음 단계를 완료합니다.

  5. 모델 배포를 클릭합니다.
  6. Vertex AI를 선택합니다.
  7. Vertex AI에 배포 창에서 모델을 구성하고 배포합니다.

    1. 최신 버전의 TimesFM 모델을 사용하려면 리소스 ID 드롭다운에서 google/timesfm-2.0를 선택합니다.
    2. 나중에 배포를 더 쉽게 식별할 수 있도록 다음을 입력합니다.
      1. 모델 이름에 고유한 MODEL_NAME을 입력합니다.
      2. 엔드포인트 이름에 고유한 ENDPOINT_NAME을 입력합니다.
    3. 구성 옵션을 펼치려면 배포 설정에서 고급을 클릭합니다.
      1. 지연 시간을 최소화하려면 리전 드롭다운에서 AlloyDB 인스턴스가 있는 리전을 선택합니다.
      2. 최상의 성능을 위해 머신 사양 드롭다운에서 적절한 머신 사양을 선택합니다. GPU 또는 TPU는 대기 시간이 더 낮을 수 있습니다.
    4. 가용성 정책엔드포인트 액세스 드롭다운에서 공개(공유 엔드포인트)를 선택합니다.

      그러면 AlloyDB와 호환되는 aiplatform 도메인의 엔드포인트가 생성됩니다.

    5. 관리형 엔드포인트에 모델을 배포하려면 배포를 클릭합니다. 배포에는 약 10~15분이 걸릴 수 있습니다.
  8. TimesFM 모델이 배포되면 엔드포인트google_timesfm-VERSION-one-click-deploy와 유사한 링크가 표시됩니다.
  9. 모델 요청 URL을 가져오려면 엔드포인트에서 배포 링크를 클릭합니다.
  10. 엔드포인트 세부정보 페이지에서 샘플 요청을 클릭합니다.
  11. 샘플 요청 창에서 모델 요청 URL을 찾아 기록해 둡니다. 이 정보는 AlloyDB에 TimesFM 모델 등록에서 사용됩니다(예: https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/endpoints/ENDPOINT_ID:predict).

    요청 URL에 aiplatform.googleapis.com이 포함되어 있는지 확인합니다.

수동 배포

Colaboratory 노트북을 사용하여 TimesFM 모델을 수동으로 배포하려면 다음 단계를 따르세요.

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

    Model Garden으로 이동
  2. 검색 필드에 TimesFM를 입력합니다.
  3. 검색 결과에서 TimesFM 아이콘을 클릭하여 모델 카드를 엽니다.
  4. TimesFM 페이지에서 CO Open Notebook을 클릭합니다.
  5. 노트북 열기 창에서 TimesFM 2.0의 Collab Enterprise 링크를 클릭합니다.
  6. Colab Enterprise 페이지에서 다음 단계를 완료합니다.

    1. 런타임 환경에 연결하려면 연결을 클릭합니다.
    2. (선택사항) 필요한 경우 다음 단계를 완료합니다.

      • Google Cloud 프로젝트 설정기본 요건 섹션에서 BUCKET_URIREGION을 설정합니다. 예를 들어 BUCKET_URIgs://your-unique-bucket-name로, REGIONus-central1로 설정합니다.

      • Vertex AI 엔드포인트로 TimesFM 배포accelerator_type 드롭다운에서 필요한 경우 다른 가속기 유형을 선택합니다.
      • 3단계: 최대 예측 범위 설정에서 horizonmax_context 필드를 작성합니다. 예를 들어 horizon128로, max_context512로 설정합니다.
    3. use_dedicated_endpoint 체크박스를 해제합니다.
    4. 노트북의 모든 셀을 실행합니다.

    노트북의 출력은 projects/PROJECT_ID/locations/REGION/endpoints/ENDPOINT_ID 형식으로 엔드포인트 세부정보를 제공합니다.

  7. SQL 모델 생성 호출을 위한 model_request_url을 구성하려면 이전 단계의 엔드포인트 세부정보로 프로젝트 및 엔드포인트 식별자를 다음과 같이 바꿉니다.

    CALL google_ml.create_model(
     model_id => 'timesfm_v2',
     model_qualified_name => 'timesfm_v2',
     model_type => 'ts_forecasting',
     model_provider => 'google',
     model_request_url => 'https://REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/endpoints/ENDPOINT_ID:predict');

    다음 섹션에 설명된 대로 AlloyDB에 TimesFM 모델을 등록할 때 the google_ml.create_model 호출에 이 model_request_url이 필요합니다.

  8. ai.forecast 함수가 예상대로 작동하는지 확인하려면 다음 샘플 쿼리를 실행하세요.

    SELECT * FROM ai.forecast(
       source_query=> '
         SELECT my_timestamp, my_data_value FROM (
           VALUES
             (CAST(''2025-01-01'' AS TIMESTAMP), 10.0),
             (CAST(''2025-01-02'' AS TIMESTAMP), 12.0),
             (CAST(''2025-01-03'' AS TIMESTAMP), 11.0),
             (CAST(''2025-01-04'' AS TIMESTAMP), 13.0),
             (CAST(''2025-01-05'' AS TIMESTAMP), 15.0),
             (CAST(''2025-01-06'' AS TIMESTAMP), 14.0),
             (CAST(''2025-01-07'' AS TIMESTAMP), 16.0),
             (CAST(''2025-01-08'' AS TIMESTAMP), 18.0),
             (CAST(''2025-01-09'' AS TIMESTAMP), 17.0),
             (CAST(''2025-01-10'' AS TIMESTAMP), 20.0)
           ) AS t (my_timestamp, my_data_value)
         ' ,
       model_id => 'timesfm_v2',
       data_col => 'my_data_value',
       timestamp_col => 'my_timestamp',
    
       -- The rest of the parameters are the same
       horizon => 7,
       conf_level => 0.80
    );
AlloyDB에 TimesFM 모델 등록

AlloyDB에 TimesFM 모델을 등록하려면 다음 단계를 따르세요.

  1. 예측을 실행할 데이터가 포함된 AlloyDB 데이터베이스에 google_ml_integration 확장 프로그램이 설치되어 있는지 확인합니다.

  2. google_ml_integration 확장 프로그램 버전 1.4.5 이상이 설치되어 있는지 확인합니다.

    SELECT extversion FROM pg_extension WHERE extname = 'google_ml_integration';
    

    다음은 샘플 출력입니다.

    extversion
    ------------
    1.4.5
    (1 row)
    
  3. 예측 모델 등록에서 기록해 둔 모델 요청 URL을 사용하여 google_ml.create_model을 호출합니다.

    CALL
    google_ml.create_model(
      model_id => 'MODEL_ID',
      model_qualified_name => 'MODEL_QUALIFIED_NAME',
      model_type => 'ts_forecasting',
      model_provider => 'google',
      model_request_url => 'https://REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/endpoints/ENDPOINT_ID:predict' -- Example endpoint from Model Garden
      );
    

    다음을 바꿉니다.

    • MODEL_ID: 예측에 사용할 등록된 모델의 고유 식별자(예: vertex_timesfm)
    • MODEL_QUALIFIED_NAME: 모델의 사용자 정의 이름(예: timesfm_v2)
    • PROJECT_ID: 모델이 배포된 프로젝트의 이름(예: forecast_project)
    • ENDPOINT_ID: 모델 배포의 이름(예: my-timesfm-endpoint)

      model_request_url은 모델을 배포한 후 Vertex AI에서 제공합니다. Vertex AI 콘솔의 샘플 요청 창에서 전체 URL을 복사합니다. 이미 올바른 프로젝트 및 엔드포인트 정보가 포함되어 있습니다.

예측 생성

TimesFM 모델을 등록하고 필요한 플래그를 사용 설정한 후 시계열 데이터가 포함된 소스 테이블 또는 쿼리를 전달하여 예측을 생성할 수 있습니다.

ai.forecast 함수는 별도로 문서화되어 있습니다. 설명과 예시를 포함한 전체 파라미터 목록은 모델 엔드포인트 관리 참조를 참고하세요.

소스 테이블에서 예측 생성

다음 예시에서는 소스 테이블을 사용하여 예측을 생성하는 ai.forecast 함수를 호출하는 방법을 보여줍니다.

SELECT * FROM ai.forecast(
    model_id => 'MODEL_ID',
    source_table => 'time_series_data',
    data_col => 'data_points',
    timestamp_col => 'timestamp',
    horizon => 2,
    conf_level => 0.80
);

쿼리에서 예측 생성

다음 예에서는 하위 쿼리를 데이터 소스로 사용하여 ai.forecast 함수를 호출하여 예측을 생성하는 방법을 보여줍니다.

SELECT * FROM ai.forecast(
    model_id => 'MODEL_ID',
    source_query => '(SELECT * FROM time_series_data ORDER BY timestamp LIMIT 1) AS time_series_data',
    data_col => 'data_points',
    timestamp_col => 'timestamp',
    horizon => 2,
    conf_level => 0.80
);

다른 예측 모델 사용

AlloyDB에 등록된 다른 시계열 예측 모델과 함께 ai.forecast 함수를 사용할 수 있습니다. 핵심은 모델이 ts_forecasting 모델 유형으로 등록되어 있는지 확인하는 것입니다.

다양한 유형의 모델을 등록하는 방법에 관한 자세한 안내는 모델 엔드포인트 관리를 사용하여 원격 AI 모델 등록 및 호출을 참고하세요. 모델이 등록되면 model_id를 지정하여 ai.forecast 함수와 함께 사용할 수 있습니다.

다음 단계