Melakukan perkiraan deret waktu

Pilih versi dokumentasi:

Halaman ini menjelaskan cara melakukan prediksi deret waktu langsung di database AlloyDB Omni. Anda dapat menggunakan berbagai model perkiraan, termasuk model TimesFM untuk membantu Anda mengatasi ketidakpastian dan membuat keputusan strategis yang tepat. Untuk mengetahui detail selengkapnya tentang model ini, lihat blog penelitian TimesFM.

Fungsi ai.forecast AlloyDB Omni dirancang untuk berfungsi dengan model apa pun yang terdaftar dengan jenis model ts_forecasting, sehingga Anda dapat menggunakan model terbaik untuk kebutuhan Anda. Dokumen ini memberikan panduan mendetail tentang penggunaan TimesFM, tetapi Anda juga dapat menerapkan prinsip-prinsipnya ke model lain.

Sebelum memulai

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

Mendaftarkan model perkiraan

Anda dapat menggunakan berbagai model perkiraan dengan AlloyDB Omni.

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

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 Vertex AI terlebih dahulu, lalu mendaftarkannya di AlloyDB Omni.

Men-deploy model TimesFM ke endpoint Vertex AI

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:

    1. Klik Deploy model.
    2. Pilih Vertex AI.
  5. Di panel Deploy on Vertex AI, 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 Omni 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 dari Availability policies, pilih Public (Shared endpoint).

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

    5. Untuk men-deploy model ke endpoint terkelola, klik Deploy. Deployment mungkin memerlukan waktu sekitar 10–15 menit.
  6. Setelah model TimesFM di-deploy, link yang mirip dengan google_timesfm-VERSION-one-click-deploy akan ditampilkan di Endpoints.
  7. Untuk mendapatkan URL permintaan model, di Endpoints, klik link deployment.
  8. Di halaman detail endpoint, klik Sample request.
  9. Di panel Sample request, temukan dan catat URL permintaan model. Anda menggunakan informasi ini di Mendaftarkan model TimesFM di AlloyDB Omni—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 dari 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 dari 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 google_ml.create_model saat mendaftarkan model TimesFM di AlloyDB Omni, 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 Omni

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

  1. Pastikan bahwa ekstensi google_ml_integration diinstal di database AlloyDB Omni 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 Vertex AI setelah Anda men-deploy model. Salin seluruh URL dari panel Sample request di konsol Vertex AI. URL tersebut sudah berisi informasi project dan endpoint yang benar.

Mengaktifkan flag database perkiraan

Sebelum dapat membuat perkiraan menggunakan model terdaftar, Anda harus menetapkan flag database google_ml_integration.enable_forecasting ke on.

Anda dapat mengaktifkan flag ini untuk sesi saat ini atau menetapkannya agar tetap ada untuk database atau pengguna tertentu di seluruh sesi. Untuk menetapkan flag database, pilih salah satu opsi berikut:

  • Mengaktifkan flag untuk sesi saat ini:

    SET google_ml_integration.enable_forecasting = on;
    
  • Mengaktifkan flag untuk database tertentu:

    ALTER DATABASE DATABASE_NAME SET google_ml_integration.enable_forecasting = 'on';
    

    Ganti DATABASE_NAME dengan nama database Anda.

  • Mengaktifkan flag untuk pengguna database tertentu:

    ALTER ROLE postgres SET google_ml_integration.enable_forecasting = 'on';
    

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 Anda.

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 1) AS time_series_data',
    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 Omni. 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 Anda terdaftar, Anda dapat menggunakannya dengan fungsi ai.forecast dengan menentukan model_id.

Langkah berikutnya