October 14, 2021
tf

Recommendation Systems with TensorFlow on Google Cloud Platform [Part 2-1]

Phần 2-1: Xây dựng matrix factorization-based collaborative filtering Recommendation System trên GCP

Trong bài viết lần này mình sẽ cùng các bạn bắt tay vào việc xây dựng hệ thống gợi ý matrix factorization Recommendation System trên GCP với các bước thực hiện chi tiết sau

  • Bước 1: Xây dựng model: Bước này sẽ giới thiệu cho các bạn cách dùng thuật toán WALS trong TF để tạo dự đoán về rating phim. 
  • Bước 2: Train và Tune model trên AI platform: Bước này mình sẽ giới thiệu cho các bạn cách training model, tuning hyperparameters để optimize model. 
  •  Bước 3: Tiếp đến là ứng dụng model đã tạo cho data từ Google Analytics: Ở bước này mình và các bạn sẽ tìm hiểu cách để ứng dụng hệ thống recommendation cho data được lấy từ Google Analytic 360 để thực hiện recommendation cho các website sử dụng Analytics. 
  • Bước 4: Deploy hệ thống recommendation: cùng nhau thực hiện việc deploy hệ thống này lên GCP để hệ thống có thể chạy real-time recommendation trên các website. 

Trong bài viết này mình sẽ cùng các bạn đi chi tiết vào bước 1 nhé. 

Nếu các bạn vẫn chưa có khái niệm về hệ thống gợi ý (recommendations system) trên GCP thì hãy đọc nhanh bài viết trước của mình. 

Bây giờ thì cùng mình bắt tay vào việc thực hiện một hệ thống gợi ý nào. 

Trong bài viết này mình sẽ xây dựng hệ thống gợi ý cho khách hàng về đánh giá phim trên dataset MovieLens. 

Bước 1: Recommendations in TensorFlow: Create the Model

Để bắt đầu làm việc thì cần tạo một em máy chủ với cấu hình phù hợp để chạy nào. Sau khi tạo xong thì bắt đầu cài đặt máy chủ và clone source code về thôi.

Trong bài này mình chọn VM Instance với cấu hình 2 vCPUs với  n1-standard-2. Bạn nhớ  quên chọn Allow Full Access To All APIs trong mục  Access Scopes nhé. Giờ thì nhấn Create để tạo VM Instance thôi nào.

Sau khi VM được tạo thì SSH vào máy để bắt đầu làm việc thôi. 

Sẽ mất một chút thời gian nên bạn chờ xíu nha

  1. Update lại máy thôi nào: sudo apt-get update
  2. Install git cũng như 1 vài package cần thiết: sudo apt-get install -y git bzip2 unzip
  3. Có Git rồi thì truy cập vào Git để lấy source về thôi. Như đã nói ở đầy bài trong bài này mình sẽ xây dựng recommendation bằng thuật toán WALS nè: git clone https://github.com/GoogleCloudPlatform/tensorflow-recommendation-wals
  4.  Với code đã clone về thì mình cần dùng miniconda với python 2.7: 
wget https://repo.continuum.io/miniconda/Miniconda2-latest-Linux-x86_64.sh
bash Miniconda2-latest-Linux-x86_64.sh
export PATH="/home/$USER/miniconda2/bin:$PATH"
  1. Tiếp đến đừng quên install TensorFlow nhé. trong bài này mình đang dùng bản tensorflow 1.15: 
cd tensorflow-recommendation-wals
conda create -y -n tfrec
conda install -y -n tfrec --file conda.txt
source activate tfrec
pip install -r requirements.txt
pip install tensorflow==1.15
  1. Giờ thì down database về thôi nào. Như mình đã nói ở đầu bài dataset mà mình chọn dùng là MovieLens. Bộ dữ liệu này có rất nhiều version, ở đây mình dùng version 100k với 100,000 ratings từ 943 users trên 1682 items.
curl -O 'http://files.grouplens.org/datasets/movielens/ml-100k.zip
unzip ml-100k.zip
mkdir -p data
cp ml-100k/u.data data/

Dữ liệu chuẩn bị hiện tại đã đủ rồi. Bắt tay vào việc tìm hiểu dữ liệu mà mình có nào. Một số dữ liệu mà bạn nên tìm hiểu 

1. Tìm hiểu phần model code mà bạn vừa down về

  • Code mà bạn cần tìm hiểu sẽ nằm trong thư mục wals_ml_engine nhé.
  • Với  high-level code functionality thì bạn hãy tìm hiểu trong các file: mltrain.sh, task.py, model.py và wals.py nhé. Tìm hiểu nhanh qua nhiệm vụ chính của các file 
    • mltrain.sh là file dùng để launches các tác vụ về  AI Platform jobs. 
    • task.py dùng để Parses các arguments cho  AI Platform job và thực thi việc training
    • model.py một số tác vụ chính của file này là load dataset, tạo 2 sparse matrices từ data đó, một cho training và 1 cho testing và Thực thi WALS trên sparse matrices training
    • wals.py là nơi khởi tạo WALS model, thực thi tính toán root-mean-square error (RMSE) cho row/column factors và ratings matrix

2. Tìm hiểu về việc model của mình đang dùng preprocessing data như thế nào nhé

Bước này tập trung vào việc tạo sparse ratings matrix và chuẩn bị matrix factorization.

Bạn có thể đọc thêm code để hiểu thêm về phần này nhé

3. Tìm hiểu về thuật toán WALS được implement sẵn trên TF mà chúng ta sẽ dùng 

Bước này bạn có thể tự tìm hiểu thêm nếu chưa nắm được thuật toán WALS nhé.

Giờ thì bắt tay vào việc local train thôi, việc này rất hữu ích trong quá trình development. Nó giúp bạn thay đổi, chỉnh sửa source code cũng như debug một cách nhanh chóng. 

Để thực hiện quá trình training thì chạy lệnh thôi nào. Chỉ cần thực thi một lệnh đơn giản thôi nè. 

./mltrain.sh local ../data u.data

Sau khi chạy thành công bạn sẽ thấy kết quả như bên dưới nhé

Một số lưu ý trong quá trình chạy: 

  • Tuỳ thuộc vào version của dataset mà bạn download bạn nên tinh chỉnh lại đường dẫn folder cho phù hợp nhé. Dùng lệnh ls để kiểm tra bên trong folder của bạn có những file nào nhé. 
  • Tuỳ thuộc vào môi trường bạn đang chạy có thể cần cài đặt thêm một số module nè. Lúc này thì cứ chạy lệnh conda install  cùng với module mà bạn cần thôi nhé vì mình đã setup Miniconda2 module ở phía trên rồi nè. 

Hãy cùng mình tìm hiểu bước 2 ở phần sau nhé ^^ 

Nếu bạn chưa tự mày mò cách làm trước khi mình viết các phần sau thì nhớ STOPVM instance đã tạo ở lúc đầu để tránh phát sinh chi phí trên GCP nhé. Bạn chỉ cần vào con VM mà bạn đã tạo chọn nút STOP là done nhé. 

Recommendation Systems with TensorFlow on Google Cloud Platform: Series links

Leave a Reply

Your email address will not be published. Required fields are marked *