デプロイ後のモデル更新
評価履歴の蓄積
ブラウザで下記 URL にアクセスして、何件か映画に対して評価値を与えてください。
バックエンドサーバ側
データの出力
rsl@*:offline$
psql recsys_full -U postgres -c "\copy (SELECT user_id, email_encrypted, email_hash FROM t_users ORDER BY user_id ASC) to 'data/users.csv' with delimiter E'\t' csv header encoding 'UTF8'"
psql recsys_full -U postgres -c "\copy (SELECT movie_id, title, year, imdb_id, tmdb_id FROM m_movies ORDER BY movie_id ASC) to 'data/movies.csv' with delimiter E'\t' csv header encoding 'UTF8'"
psql recsys_full -U postgres -c "\copy (SELECT genre_id, genre_name FROM m_genres ORDER BY genre_id ASC) to 'data/genres.csv' with delimiter E'\t' csv header encoding 'UTF8'"
psql recsys_full -U postgres -c "\copy (SELECT id, movie_id, genre_id FROM m_movies_genres ORDER BY id ASC) to 'data/movies_genres.csv' with delimiter E'\t' csv header encoding 'UTF8'"
psql recsys_full -U postgres -c "\copy (SELECT id, user_id, movie_id, rating, rated_at FROM t_users_movies_rating ORDER BY id ASC) to 'data/ratings.csv' with delimiter E'\t' csv header encoding 'UTF8'"
データの確認
rsl@*:offline$ ls -l data/
rsl@*:offline$
less data/users.csv
less data/movies.csv
less data/genres.csv
less data/movies_genres.csv
less data/ratings.csv
less data/tags.csv
リポジトリのプッシュ
rsl@*:$
cd ~/dev/recsys-full/
git add src/offline/data/
git commit -m "update data"
git push
git status
クライアント側
データのバックアップ
offline$
mkdir -p bkup/YYYYMMDD/
cp -r data/ bkup/YYYYMMDD/data/
ls bkup/YYYYMMDD/data/
リポジトリのプル
$
cd ~/dev/recsys-full/
git pull
git status
データの確認
offline$ ls -l data/
offline$
less data/users.csv
less data/movies.csv
less data/genres.csv
less data/movies_genres.csv
less data/ratings.csv
less data/tags.csv
推薦システムの実行
(recsys_full) offline$ python src/update.py --ini src/offline.ini
# ...(30分程度)...
結果の確認
offline$ ls -l data/
offline$
less data/reclist_popularity.csv
less data/reclist_movie_similarity.csv
less data/reclist_bpr.csv
リポジトリのプッシュ
$
cd ~/dev/recsys-full/
git add *
git commit -m "update model"
git push
git status
バックエンドサーバ側
リポジトリのプル
rsl@*:$
cd ~/dev/recsys-full/
git pull
git status
データの削除
recsys_full=#
TRUNCATE r_reclist_popularity;
TRUNCATE r_reclist_movie_similarity;
TRUNCATE r_reclist_bpr;
データの登録
rsl@*:offline$
psql recsys_full -U postgres -c "\copy r_reclist_popularity (id, target_genre_id, rank, movie_id, score) from 'data/reclist_popularity.csv' with delimiter E'\t' csv header encoding 'UTF8'"
psql recsys_full -U postgres -c "\copy r_reclist_movie_similarity (id, base_movie_id, rank, movie_id, score) from 'data/reclist_movie_similarity.csv' with delimiter E'\t' csv header encoding 'UTF8'"
psql recsys_full -U postgres -c "\copy r_reclist_bpr (id, user_id, movie_id, score, rank) from 'data/reclist_bpr.csv' with delimiter E'\t' csv header encoding 'UTF8'"
Nginx の再読込と Gunicorn の再起動
(recsys_full) rsl@*:backend$
sudo systemctl reload nginx
pkill gunicorn
gunicorn --bind 127.0.0.1:8000 config.wsgi:application -D
ps ax | grep gunicorn
ログの確認
rsl@*:backend$ less logs/django.log
実行確認
下記 URL にアクセスしてください。
各推薦リストが表示されることを確認してください。特に、サインイン後は「あなたにおすすめの映画」が表示されるようになっています。