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
- 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the AI Platform Training & Prediction API.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the AI Platform Training & Prediction API.
-
In the Google Cloud console, 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
Di Cloud Shell, buat dan aktifkan lingkungan virtual Python:
(vm)$ virtualenv ncf-env
(vm)$ source ncf-env/bin/activate
Instal kode TensorFlow Model Garden:
(vm)$ pip install tf-models-official==2.3.0
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
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
Di konsol Google Cloud, buka halaman AI Platform:
Di bagian Pelatihan model, pilih Latih dengan algoritma bawaan.
Di menu drop-down, pilih NCF. Klik Next.
Gunakan tombol Browse untuk memilih set data pelatihan dan evaluasi di bucket Cloud Storage Anda, lalu pilih direktori output. Klik Berikutnya.
Di halaman Argumen algoritma, gunakan nilai argumen dalam tabel di bagian sebelumnya untuk mengonfigurasi tugas pelatihan.
Beri nama tugas pelatihan Anda dan gunakan jenis mesin
BASIC_TPU
atauBASIC_GPU
.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
Di halaman Tugas, Anda dapat menemukan daftar semua tugas pelatihan. Klik nama tugas pelatihan yang baru saja Anda kirimkan.
Di halaman Detail tugas, Anda dapat melihat progres umum tugas, atau mengklik Lihat log untuk melihat progresnya secara lebih mendetail.
Jika tugas berhasil, tombol Deploy model akan muncul di bagian atas. Klik Deploy model.
Pilih "Deploy as new model", lalu masukkan nama model. Selanjutnya, klik Konfirmasi.
Di halaman Create version, masukkan nama versi, seperti
v1
, dan biarkan semua kolom lainnya menggunakan setelan defaultnya. Klik Simpan.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.
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
Di halaman Detail versi untuk "v1", versi yang baru saja Anda buat, Anda dapat mengirim contoh permintaan prediksi.
Pilih tab Uji & Gunakan.
Salin contoh berikut ke kolom input:
{ "instances": [{ "duplicate_mask": [0], "item_id": [1], "train_labels": [true], "user_id": [1], "valid_point_mask": [false] }] }
Klik Uji.
Tunggu beberapa saat, dan vektor prediksi akan ditampilkan.
Langkah selanjutnya
- Pelajari lebih lanjut cara menggunakan algoritma NCF bawaan.