Mulai menggunakan algoritma NCF bawaan

Tutorial ini memandu Anda dalam melatih model Neural Collaborative Filtering (NCF) di set data MovieLens. Hal ini mencakup pemrosesan data terlebih dahulu, pelatihan menggunakan algoritma NCF bawaan, deployment model ke AI Platform, dan permintaan prediksi dari model yang di-deploy.

Set data

Tutorial ini menggunakan set data MovieLens berikut untuk pelatihan dan evaluasi model:

  • ml-1m (kependekan dari MovieLens 1 million)
  • ml-20m (singkatan dari MovieLens 20 million)

ml-1m

Set data ml-1m berisi 1.000.209 rating anonim dari sekitar 3.706 film yang dibuat oleh 6.040 pengguna yang bergabung dengan MovieLens pada tahun 2000. Semua rating dimuat dalam file "ratings.dat" tanpa baris header, dan berada dalam format berikut:

UserID::MovieID::Rating::Timestamp

  • User-ID memiliki rentang antara 1 dan 6040.
  • MovieID memiliki rentang antara 1 dan 3952.
  • Rating dibuat pada skala 5 bintang (hanya rating bintang utuh).
  • Stempel waktu direpresentasikan dalam detik sejak Waktu Universal Terkoordinasi (UTC) tengah malam, yakni 1 Januari 1970.

ml-20m

Dataset ml-20m berisi 20.000.263 peringkat dari 26.744 film oleh 138.493 pengguna. Semua rating terdapat dalam file "ratings.csv". Setiap baris file ini setelah baris header merepresentasikan satu rating untuk satu film oleh satu pengguna, dan memiliki format berikut:

userId,movieId,rating,timestamp

Baris dalam file ini diurutkan terlebih dahulu berdasarkan userId. Baris dengan userId yang sama diurutkan berdasarkan movieId. Rating dibuat dalam skala 5 bintang, dengan kenaikan setengah bintang (0,5 bintang hingga 5,0 bintang). Stempel waktu direpresentasikan dalam detik sejak tengah malam Waktu Universal Terkoordinasi (UTC) 1 Januari 1970. Setiap pengguna memiliki setidaknya 20 rating.

Tujuan

  • Menyiapkan set data MovieLens
  • Menjalankan pelatihan dan evaluasi

Sebelum memulai

  1. Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
  2. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  3. Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.

  4. Aktifkan API AI Platform Training & Prediction.

    Mengaktifkan API

  5. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  6. Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.

  7. Aktifkan API AI Platform Training & Prediction.

    Mengaktifkan API

  8. Di konsol Google Cloud, aktifkan Cloud Shell.

    Aktifkan Cloud Shell

    Di bagian bawah Google Cloud Console, Cloud Shell sesi akan terbuka dan menampilkan perintah command line. Cloud Shell adalah lingkungan shell dengan Google Cloud CLI yang sudah terinstal, dan dengan nilai yang sudah ditetapkan untuk project Anda saat ini. Diperlukan waktu beberapa detik untuk melakukan inisialisasi sesi.

Menyiapkan data

  1. Di Cloud Shell, buat dan aktifkan lingkungan virtual Python:

    (vm)$  virtualenv ncf-env
    (vm)$  source ncf-env/bin/activate
  2. Instal kode TensorFlow Model Garden:

    (vm)$  pip install tf-models-official==2.3.0
  3. Tambahkan variabel lingkungan untuk URI ke bucket Cloud Storage di project Google Cloud Anda dan direktori untuk menyimpan data dalam bucket ini. Ganti BUCKET_NAME dengan nama bucket Anda.

    (vm)$ export STORAGE_BUCKET=gs://BUCKET_NAME
    (vm)$ export DATA_DIR=${STORAGE_BUCKET}/ncf_data
  4. Buat data pelatihan dan evaluasi untuk set data ml-20m di DATA_DIR:

    (vm)$ python -m official.recommendation.create_ncf_data \
        --dataset ml-20m \
        --num_train_epochs 4 \
        --meta_data_file_path ${DATA_DIR}/metadata \
        --eval_prebatch_size 160000 \
        --data_dir ${DATA_DIR}

Skrip ini menghasilkan dan melakukan prapemrosesan set data di Cloud Shell. Prapemrosesan mengonversi data menjadi format TFRecord yang diperlukan oleh model. Download dan pra-pemrosesan ini memerlukan waktu sekitar 25 menit dan menghasilkan output yang mirip dengan berikut ini:

I0804 23:03:02.370002 139664166737728 movielens.py:124] Successfully downloaded /tmp/tmpicajrlfc/ml-20m.zip 198702078 bytes
I0804 23:04:42.665195 139664166737728 data_preprocessing.py:223] Beginning data preprocessing.
I0804 23:04:59.084554 139664166737728 data_preprocessing.py:84] Generating user_map and item_map...
I0804 23:05:20.934210 139664166737728 data_preprocessing.py:103] Sorting by user, timestamp...
I0804 23:06:39.859857 139664166737728 data_preprocessing.py:194] Writing raw data cache.
I0804 23:06:42.375952 139664166737728 data_preprocessing.py:262] Data preprocessing complete. Time: 119.7 sec.
%lt;BisectionDataConstructor(Thread-1, initial daemon)>
General:
  Num users: 138493
  Num items: 26744

Training:
  Positive count:          19861770
  Batch size:              99000
  Batch count per epoch:   1004

Eval:
  Positive count:          138493
  Batch size:              160000
  Batch count per epoch:   866

I0804 23:07:14.137242 139664166737728 data_pipeline.py:887] Negative total vector built. Time: 31.8 seconds
I0804 23:11:25.013135 139664166737728 data_pipeline.py:588] Epoch construction complete. Time: 250.9 seconds
I0804 23:15:46.391308 139664166737728 data_pipeline.py:674] Eval construction complete. Time: 261.4 seconds
I0804 23:19:54.345858 139664166737728 data_pipeline.py:588] Epoch construction complete. Time: 248.0 seconds
I0804 23:24:09.182484 139664166737728 data_pipeline.py:588] Epoch construction complete. Time: 254.8 seconds
I0804 23:28:26.224653 139664166737728 data_pipeline.py:588] Epoch construction complete. Time: 257.0 seconds

Mengirim tugas pelatihan

Untuk mengirimkan tugas, Anda harus menentukan beberapa argumen pelatihan dasar dan beberapa argumen dasar yang terkait dengan algoritma NCF.

Argumen umum untuk tugas pelatihan:

Melatih argumen tugas
Argumen Deskripsi
job-id ID unik untuk tugas pelatihan Anda. Anda dapat menggunakannya untuk menemukan log tentang status tugas pelatihan setelah mengirimkannya.
job-dir Jalur Cloud Storage tempat AI Platform Training menyimpan file pelatihan setelah menyelesaikan tugas pelatihan yang berhasil.
scale-tier Menentukan jenis mesin untuk pelatihan. Gunakan BASIC untuk memilih konfigurasi untuk satu mesin saja.
master-image-uri URI Container Registry digunakan untuk menentukan container Docker yang akan digunakan untuk tugas pelatihan. Gunakan container untuk algoritme NCF bawaan yang ditentukan sebelumnya sebagai IMAGE_URI.
region Tentukan region yang tersedia untuk menjalankan tugas pelatihan Anda. Untuk tutorial ini, Anda dapat menggunakan wilayah us-central1.

Argumen khusus untuk pelatihan algoritme NCF bawaan di MovieLens:

Argumen algoritme
Argumen Nilai yang digunakan untuk tutorial ini Deskripsi
train_dataset_path ${DATA_DIR}/training_cycle_*/* Jalur Cloud Storage tempat data pelatihan disimpan.
eval_dataset_path ${DATA_DIR}/eval_data/* Jalur Cloud Storage tempat data evaluasi disimpan.
input_meta_data_path ${DATA_DIR}/metadata Jalur Cloud Storage tempat skema input disimpan.
train_epochs 3 Jumlah epoch pelatihan yang akan dijalankan.
batch_size 99000 Ukuran tumpukan untuk pelatihan.
eval_batch_size 160000 Ukuran tumpukan untuk evaluasi.
learning_rate 0,00382059 Kecepatan pembelajaran yang digunakan pengoptimal Adam.
beta1 0,783529 Hyperparameter beta 1 untuk pengoptimal Adam.
beta2 0,909003 Hyperparameter beta 2 untuk pengoptimal Adam.
epsilon 1,45439e-07 Hyperparameter Epsilon untuk pengoptimal Adam.
num_factors 64 Ukuran sematan model MF.
hr_threshold 0,635 Nilai metrik evaluasi SDM saat pelatihan harus dihentikan.
layers 256.256.128.64 Ukuran lapisan tersembunyi untuk MLP. Format sebagai bilangan bulat yang dipisahkan koma.
keras_use_ctl Benar Menggunakan loop pelatihan Keras kustom dalam pelatihan model.

Untuk mengetahui daftar mendetail dari semua flag algoritma NCF lainnya, lihat referensi NCF bawaan.

Menjalankan tugas pelatihan

  1. Di konsol Google Cloud, buka halaman AI Platform:

    Buka AI Platform

  2. Di bagian Pelatihan model, pilih Latih dengan algoritma bawaan.

  3. Di menu drop-down, pilih NCF. Klik Next.

  4. Gunakan tombol Browse untuk memilih set data pelatihan dan evaluasi di bucket Cloud Storage, lalu memilih direktori output. Klik Berikutnya.

  5. Di halaman Argumen algoritma, gunakan nilai argumen dalam tabel di bagian sebelumnya untuk mengonfigurasi tugas pelatihan.

  6. Beri nama tugas pelatihan Anda dan gunakan jenis mesin BASIC_TPU atau BASIC_GPU.

  7. Klik Submit untuk memulai tugas Anda.

Memahami direktori pekerjaan Anda

Setelah tugas pelatihan berhasil diselesaikan, AI Platform Training akan membuat model terlatih di bucket Cloud Storage Anda, beserta beberapa artefak lainnya. Anda dapat menemukan struktur direktori berikut dalam JOB_DIR:

  • model/ (direktori TersimpanModel TensorFlow)
    • saved_model.pb
    • aset/
    • variabel/
  • summary/ (logging dari pelatihan dan evaluasi)
    • eval/
    • kereta api/
  • berbagai file checkpoint (dibuat dan digunakan selama pelatihan)
    • pos pemeriksaan
    • ctl_checkpoint-1.data-00000-of-00002
    • ...
    • ctl_checkpoint-1.index

Pastikan struktur direktori dalam JOB_DIR Anda cocok dengan struktur yang dijelaskan dalam daftar sebelumnya:

gsutil ls -a $JOB_DIR/*

Men-deploy model yang dilatih

AI Platform Prediction mengatur model terlatih Anda menggunakan resource model dan versi. Model Prediksi AI Platform adalah penampung untuk versi model machine learning Anda.

Untuk men-deploy model, buat resource model di AI Platform Prediction, buat versi model tersebut, lalu gunakan model dan versi tersebut untuk meminta prediksi online.

Pelajari lebih lanjut cara men-deploy model ke AI Platform Prediction.

Konsol

  1. Di halaman Tugas, Anda dapat menemukan daftar semua tugas pelatihan Anda. Klik nama tugas pelatihan yang baru saja Anda kirim.

  2. Di halaman Detail tugas, Anda dapat melihat progres umum dari tugas Anda, atau mengklik View logs untuk melihat progresnya secara lebih mendetail.

  3. Setelah tugas berhasil, tombol Deploy model akan muncul di bagian atas. Klik Deploy model.

  4. Pilih "Deploy sebagai model baru", lalu masukkan nama model. Selanjutnya, klik Konfirmasi.

  5. Pada halaman Buat versi, masukkan nama versi, misalnya v1, dan biarkan semua kolom lain dalam setelan defaultnya. Klik Save.

  6. Di halaman Detail model, nama versi akan ditampilkan. Pembuatan versi memerlukan waktu beberapa menit. Jika versi sudah siap, ikon tanda centang akan muncul di samping nama versi.

  7. Klik nama versi (v1) untuk membuka halaman Detail versi. Pada langkah selanjutnya dalam tutorial ini, Anda akan mengirim permintaan prediksi

Mendapatkan prediksi online

Saat meminta prediksi, Anda harus memformat data input sebagai JSON dengan cara yang diharapkan oleh model. Model NCF saat ini tidak melakukan prapemrosesan input secara otomatis.

Konsol

  1. Di halaman Detail versi untuk "v1", versi yang baru saja dibuat, Anda dapat mengirim contoh permintaan prediksi.

    Pilih tab Pengujian & Penggunaan.

  2. Salin contoh berikut ke kolom input:

     {
       "instances": [{
         "duplicate_mask": [0],
         "item_id": [1],
         "train_labels": [true],
         "user_id": [1],
         "valid_point_mask": [false]
       }]
      }
    
  3. Klik Uji.

    Tunggu beberapa saat, dan vektor prediksi akan ditampilkan.

Langkah selanjutnya