Melakukan perkiraan deret waktu

Fungsi ai.forecast di AlloyDB untuk PostgreSQL memungkinkan Anda menjalankan prediksi perkiraan deret waktu langsung pada data database menggunakan SQL. Anda dapat mendaftarkan dan memanggil model perkiraan seperti TimesFM atau model apa pun yang terdaftar dengan jenis model ts_forecasting untuk memprediksi tren mendatang dari data historis. Untuk mengetahui informasi selengkapnya tentang arsitektur TimesFM, lihat blog riset TimesFM.

Sebelum memulai

Sebelum dapat melakukan perkiraan deret waktu, Anda harus mengaktifkan fitur perkiraan di AlloyDB dan mendaftarkan model.

Mendaftarkan model perkiraan

Anda dapat menggunakan berbagai model perkiraan dengan AlloyDB.

Bagian ini memberikan petunjuk untuk mendaftarkan model TimesFM. Untuk mengetahui petunjuk tentang cara mendaftarkan model lain, lihat Mendaftarkan endpoint model dengan pengelolaan endpoint model.

Menggunakan model TimesFM

Model TimesFM tersedia dalam dua versi:

  • TimesFM 1.0: versi awal model TimesFM.
  • TimesFM 2.0: versi ini berisi checkpoint parameter 500M dengan kode inferensinya. Model ini memberikan performa model yang lebih baik dibandingkan dengan model 1.0.
  • TimesFM 2.5: versi ini berisi checkpoint parameter 200M dengan kode inferensinya. Model ini memberikan performa model yang lebih baik dibandingkan dengan model 2.0.

Semua model tersedia di Model Garden untuk deployment cepat.

Untuk menggunakan model TimesFM, Anda harus men-deploy model TimesFM ke endpoint Gemini Enterprise Agent Platform terlebih dahulu, lalu mendaftarkannya di AlloyDB.

Men-deploy model TimesFM ke endpoint Agent Platform

Anda dapat men-deploy model menggunakan deployment sekali klik dari Google Cloud konsol, atau secara manual menggunakan notebook Colaboratory.

Deployment sekali klik

Untuk men-deploy model TimesFM menggunakan deployment sekali klik, ikuti langkah-langkah berikut:

  1. Di Google Cloud konsol, buka halaman Model Garden:

    Buka Model Garden
  2. Di kolom Search, masukkan TimesFM.
  3. Di hasil penelusuran, klik TimesFM.
  4. Di halaman TimesFM, selesaikan langkah-langkah berikut:

  5. Klik Deploy model.
  6. Pilih Agent Platform.
  7. Di panel Deploy on Agent Platform, konfigurasi dan deploy model Anda:

    1. Untuk menggunakan model TimesFM versi terbaru, di drop-down Resource ID, pilih google/timesfm-2.0.
    2. Untuk memudahkan identifikasi deployment nanti, masukkan hal berikut:
      1. Di Model name, MODEL_NAME yang unik.
      2. Di Endpoint name, ENDPOINT_NAME yang unik.
    3. Untuk meluaskan opsi konfigurasi, di Deployment settings, klik Advanced.
      1. Untuk memastikan latensi serendah mungkin, di drop-down Region, pilih region yang sama dengan tempat instance AlloyDB Anda berada.
      2. Untuk performa terbaik, di drop-down Machine spec, pilih spesifikasi mesin yang sesuai. Perhatikan bahwa GPU atau TPU mungkin menawarkan latensi yang lebih rendah.
    4. Di drop-down Endpoint access pada Availability policies, pilih Public (Shared endpoint).

      Tindakan ini akan membuat endpoint di domain aiplatform yang berfungsi dengan AlloyDB.

    5. Untuk men-deploy model ke endpoint terkelola, klik Deploy. Deployment mungkin memerlukan waktu sekitar 10–15 menit.
  8. Setelah model TimesFM di-deploy, link yang mirip dengan google_timesfm-VERSION-one-click-deploy akan ditampilkan di Endpoints.
  9. Untuk mendapatkan URL permintaan model, di Endpoints, klik link deployment.
  10. Di halaman detail endpoint, klik Sample request.
  11. Di panel Sample request, temukan dan catat URL permintaan model. Anda menggunakan informasi ini di Mendaftarkan model TimesFM di AlloyDB—misalnya, https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/endpoints/ENDPOINT_ID:predict.

    Pastikan URL permintaan memiliki aiplatform.googleapis.com di dalamnya.

Deployment manual

Untuk men-deploy model TimesFM secara manual menggunakan notebook Colaboratory, ikuti langkah-langkah berikut:

  1. Buka halaman Model Garden di Google Cloud konsol:

    Buka Model Garden
  2. Di kolom Search, masukkan TimesFM.
  3. Di hasil penelusuran, klik TimesFM untuk membuka kartu model.
  4. Di halaman TimesFM, klik CO Open Notebook.
  5. Di jendela Open Notebook, klik link Collab Enterprise untuk TimesFM 2.0.
  6. Di halaman Collab Enterprise, selesaikan langkah-langkah berikut:

    1. Untuk membuat koneksi ke lingkungan runtime, klik Connect.
    2. Opsional: Selesaikan langkah-langkah berikut jika diperlukan:

      • Di bagian Prerequisites pada Setup Google Cloud project, tetapkan BUCKET_URI dan REGION—misalnya, tetapkan BUCKET_URI ke gs://your-unique-bucket-name dan REGION ke us-central1.

      • Di drop-down accelerator_type pada Deploy TimesFM to a Vertex AI Endpoint, pilih jenis akselerator lain jika diperlukan.
      • Di Step 3: Set the maximum forecast horizon, isi kolom horizon dan max_context —misalnya, tetapkan horizon ke 128 dan max_context ke 512.
    3. Hapus centang pada kotak use_dedicated_endpoint.
    4. Jalankan semua sel di Notebook.

    Output notebook memberikan detail endpoint dalam format berikut: projects/PROJECT_ID/locations/REGION/endpoints/ENDPOINT_ID.

  7. Untuk membuat model_request_url untuk panggilan pembuatan model SQL, ganti ID project dan endpoint dengan detail endpoint dari langkah sebelumnya sebagai berikut:

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

    Anda memerlukan model_request_url ini dalam panggilan the google_ml.create_model saat mendaftarkan model TimesFM di AlloyDB, seperti yang dijelaskan di bagian berikut.

  8. Untuk mengonfirmasi bahwa fungsi ai.forecast berfungsi seperti yang diharapkan, jalankan contoh kueri berikut:

    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
    );
Mendaftarkan model TimesFM di AlloyDB

Untuk mendaftarkan model TimesFM di AlloyDB, ikuti langkah-langkah berikut:

  1. Pastikan bahwa ekstensi google_ml_integration diinstal di database AlloyDB yang berisi data yang ingin Anda gunakan untuk menjalankan prediksi.

  2. Pastikan Anda telah menginstal ekstensi google_ml_integration versi 1.4.5 atau yang lebih baru.

    SELECT extversion FROM pg_extension WHERE extname = 'google_ml_integration';
    

    Berikut adalah contoh output:

    extversion
    ------------
    1.4.5
    (1 row)
    
  3. Panggil google_ml.create_model menggunakan URL permintaan model yang Anda catat di Mendaftarkan model perkiraan.

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

    Ganti kode berikut:

    • MODEL_ID: ID unik untuk model terdaftar yang ingin Anda gunakan untuk perkiraan—misalnya, vertex_timesfm.
    • MODEL_QUALIFIED_NAME: nama yang ditentukan pengguna untuk model—misalnya, timesfm_v2.
    • REGION: region tempat instance ditempatkan—misalnya, us-central1.
    • PROJECT_ID: nama project tempat model di-deploy—misalnya, forecast_project.
    • ENDPOINT_ID: nama deployment model—misalnya, my-timesfm-endpoint.

      model_request_url disediakan oleh Agent Platform setelah Anda men-deploy model. Salin seluruh URL dari panel Sample request di konsol Agent Platform. URL tersebut sudah berisi informasi project dan endpoint yang benar.

Membuat perkiraan

Setelah mendaftarkan model TimesFM dan mengaktifkan flag yang diperlukan, Anda dapat membuat perkiraan dengan meneruskan tabel sumber atau kueri dengan data deret waktu.

Fungsi ai.forecast didokumentasikan secara terpisah. Untuk mengetahui daftar lengkap parameter, termasuk deskripsi dan contohnya, lihat Referensi pengelolaan endpoint model.

Membuat perkiraan dari tabel sumber

Contoh berikut menunjukkan cara memanggil fungsi ai.forecast menggunakan tabel sumber untuk membuat prediksi:

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

Membuat perkiraan dari kueri

Contoh berikut menunjukkan cara membuat perkiraan dengan memanggil fungsi ai.forecast menggunakan subkueri sebagai sumber data:

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

Menggunakan model perkiraan lainnya

Anda dapat menggunakan fungsi ai.forecast dengan model perkiraan deret waktu lainnya yang Anda daftarkan di AlloyDB. Kuncinya adalah memastikan model Anda terdaftar dengan jenis model ts_forecasting.

Untuk mengetahui petunjuk mendetail tentang cara mendaftarkan berbagai jenis model, lihat Mendaftarkan dan memanggil model AI jarak jauh menggunakan pengelolaan endpoint model. Setelah model terdaftar, Anda dapat menggunakannya dengan fungsi ai.forecast dengan menentukan model_id.

Langkah berikutnya