Mulai menggunakan algoritma NCF bawaan

Tutorial ini memandu Anda melatih model Neural Collaborative Filtering (NCF) pada set data MovieLens. Tutorial ini mencakup prapemrosesan data, pelatihan menggunakan algoritma NCF bawaan, men-deploy model ke AI Platform, dan meminta prediksi dari model yang di-deploy.

Set data

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

  • ml-1m (singkatan dari MovieLens 1 juta)
  • ml-20m (singkatan dari MovieLens 20 juta)

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 terdapat dalam file "ratings.dat" tanpa baris header, dan dalam format berikut:

UserID::MovieID::Rating::Timestamp

  • Rentang User-ID adalah antara 1 dan 6040.
  • MovieID berkisar antara 1 dan 3952.
  • Rating diberikan dalam skala 5 bintang (hanya rating bintang utuh).
  • Stempel waktu direpresentasikan dalam detik sejak tengah malam Coordinated Universal Time (UTC) 1 Januari 1970.

ml-20m

Set data ml-20m berisi 20.000.263 rating dari 26.744 film oleh 138.493 pengguna. Semua rating terdapat dalam file "ratings.csv". Setiap baris file ini setelah baris header mewakili satu rating dari 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 berdasarkan skala 5 bintang, dengan peningkatan setengah bintang (0,5 bintang hingga 5,0 bintang). Stempel waktu direpresentasikan dalam detik sejak tengah malam Coordinated Universal Time (UTC) 1 Januari 1970. Setiap pengguna memiliki minimal 20 rating.

Tujuan

  • Menyiapkan set data MovieLens
  • Menjalankan pelatihan dan evaluasi

Sebelum memulai

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the AI Platform Training & Prediction API.

    Enable the API

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the AI Platform Training & Prediction API.

    Enable the API

  8. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

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 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 membuat dan memproses data set di Cloud Shell. Pra-pemrosesan mengonversi data ke dalam format TFRecord yang diperlukan oleh model. Download dan pra-pemrosesan 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:

Argumen tugas pelatihan
Argumen Deskripsi
job-id ID unik untuk tugas pelatihan Anda. Anda dapat menggunakannya untuk menemukan log 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 hanya satu mesin.
master-image-uri URI Container Registry yang digunakan untuk menentukan container Docker yang akan digunakan untuk tugas pelatihan. Gunakan penampung untuk algoritma NCF bawaan yang ditentukan sebelumnya sebagai IMAGE_URI.
region Tentukan region yang tersedia untuk menjalankan tugas pelatihan Anda. Untuk tutorial ini, Anda dapat menggunakan region us-central1.

Argumen khusus untuk pelatihan algoritme NCF bawaan di MovieLens:

Argumen algoritme
Argumen Nilai yang akan 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 batch untuk pelatihan.
eval_batch_size 160000 Ukuran batch untuk evaluasi.
learning_rate 0.00382059 Kecepatan pembelajaran yang digunakan oleh 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 penyematan model MF.
hr_threshold 0,635 Nilai metrik evaluasi detak jantung 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 Gunakan loop pelatihan Keras kustom dalam pelatihan model.

Untuk mengetahui daftar mendetail 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 Anda, lalu pilih 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 Kirim untuk memulai tugas Anda.

Memahami direktori lowongan

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 TensorFlow SavedModel)
    • saved_model.pb
    • assets/
    • variables/
  • summaries/ (logging from training and evaluation)
    • eval/
    • train/
  • berbagai file checkpoint (dibuat dan digunakan selama pelatihan)
    • pos pemeriksaan
    • ctl_checkpoint-1.data-00000-of-00002
    • ...
    • ctl_checkpoint-1.index

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

gcloud storage ls -a $JOB_DIR/*

Men-deploy model terlatih

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

Untuk men-deploy model, Anda membuat resource model di AI Platform Prediction, membuat versi model tersebut, lalu menggunakan model dan versi 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. Klik nama tugas pelatihan yang baru saja Anda kirimkan.

  2. Di halaman Detail tugas, Anda dapat melihat progres umum tugas, atau mengklik Lihat log untuk melihat progresnya secara lebih mendetail.

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

  4. Pilih "Deploy as new model", lalu masukkan nama model. Selanjutnya, klik Konfirmasi.

  5. Di halaman Create version, masukkan nama versi, seperti v1, dan biarkan semua kolom lainnya menggunakan setelan defaultnya. Klik Simpan.

  6. Di halaman Model details, nama versi Anda akan ditampilkan. Pembuatan versi ini 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 berikutnya 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 model. Model NCF saat ini tidak memproses input secara otomatis.

Konsol

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

    Pilih tab Uji & Gunakan.

  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