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
- 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.
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
-
Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.
-
Aktifkan API AI Platform Training & Prediction.
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
-
Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.
-
Aktifkan API AI Platform Training & Prediction.
-
Di konsol Google Cloud, 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
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 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
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
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, lalu memilih 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 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
Di halaman Tugas, Anda dapat menemukan daftar semua tugas pelatihan Anda. Klik nama tugas pelatihan yang baru saja Anda kirim.
Di halaman Detail tugas, Anda dapat melihat progres umum dari tugas Anda, atau mengklik View logs untuk melihat progresnya secara lebih mendetail.
Setelah tugas berhasil, tombol Deploy model akan muncul di bagian atas. Klik Deploy model.
Pilih "Deploy sebagai model baru", lalu masukkan nama model. Selanjutnya, klik Konfirmasi.
Pada halaman Buat versi, masukkan nama versi, misalnya
v1
, dan biarkan semua kolom lain dalam setelan defaultnya. Klik Save.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.
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
Di halaman Detail versi untuk "v1", versi yang baru saja dibuat, Anda dapat mengirim contoh permintaan prediksi.
Pilih tab Pengujian & Penggunaan.
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.