Melakukan perkiraan deret waktu

Halaman ini menjelaskan cara melakukan prediksi deret waktu langsung di database AlloyDB Anda. 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 riset TimesFM.

Fungsi ai.forecast AlloyDB dirancang untuk bekerja 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 prinsipnya ke model lain.

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 direkomendasikan karena memberikan akurasi hingga 25% lebih tinggi dibandingkan dengan versi 1.0.

Kedua model tersedia di Model Garden untuk deployment cepat.

Untuk menggunakan model TimesFM, Anda harus men-deploy model TimesFM terlebih dahulu ke endpoint Vertex AI, lalu mendaftarkannya di AlloyDB.

Men-deploy model TimesFM ke endpoint Vertex AI

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

Deployment sekali klik

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

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

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

  5. Klik Deploy model.
  6. Pilih Vertex AI.
  7. Di panel Deploy di 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 mempermudah identifikasi deployment nanti, masukkan perintah berikut:
      1. Di Model name, MODEL_NAME unik.
      2. Di Endpoint name, ENDPOINT_NAME yang unik.
    3. Untuk meluaskan opsi konfigurasi, di Setelan deployment, klik Lanjutan.
      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 Spesifikasi mesin, 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 Contoh permintaan.
  11. Di panel Contoh permintaan, 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 berisi aiplatform.googleapis.com.

Deployment manual

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

  1. Buka halaman Model Garden di konsol Google Cloud :

    Buka Model Garden
  2. Di kolom Penelusuran, 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 Colab Enterprise, selesaikan langkah-langkah berikut:

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

      • Di bagian Prasyarat pada Menyiapkan project Google Cloud, 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 Langkah 3: Tetapkan horizon perkiraan maksimum, isi kolom horizon dan max_context—misalnya, tetapkan horizon ke 128 dan max_context ke 512.
    3. Batalkan pilihan pada kotak centang 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 project dan ID 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 kueri contoh 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 ekstensi google_ml_integration telah diinstal di database AlloyDB yang berisi data yang ingin Anda jalankan prediksinya.

  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 peramalan—misalnya, vertex_timesfm.
    • MODEL_QUALIFIED_NAME: nama yang ditentukan pengguna untuk model—misalnya, timesfm_v2.
    • 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. File ini sudah berisi informasi project dan endpoint yang benar.

Membuat perkiraan

Setelah mendaftarkan model TimesFM dan mengaktifkan tanda yang diperlukan, Anda dapat membuat perkiraan dengan meneruskan tabel atau kueri sumber 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 peramalan 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 Anda terdaftar, Anda dapat menggunakannya dengan fungsi ai.forecast dengan menentukan model_id-nya.

Langkah berikutnya