RecBoleを使ってみよう1 環境構築
RecBoleのロゴ。公式サイト https://recbole.io/index.html より引用
概要
RecBoleは、レコメンドシステム用のパワフルなフレームワークで、様々なレコメンドアルゴリズムとデータセット、評価方法を統一的なフォーマットで扱うことができます。
今回はRecBoleが動作する環境をPoetry上に構築していきます。
環境構築
以下の環境で作業を行っています。
- ハードウェア: MacBook Air (M1, 2020)
- OS: MacOS Ventura 13.4.1
~/src/recbole_sandbox/
上で作業します(./
と~/src/recbole_sandbox/
は同義です)。
Pythonの用意
Pythonのバージョンとして 3.8.16を用います。
- Pythonのインストールで3.8.16がリストに表示されない場合は、次でPython 3.8.16をインストール。
pyenv versions
pyenv install 3.8.16
- プロジェクトのディレクトリを作り、そこへ移動
mkdir -p ~/src/recbole_sandbox/ cd ~/src/recbole_sandbox
- Python 3.8.16を使うように指定
pyenv local 3.8.16
Poetryの用意
Poetryで環境構築します。
-
Poetryのインストールがまだの方は https://python-poetry.org/docs/ からインストール。
-
Poetryのセットアップ
poetry init
Pythonバージョンの指定以外は基本的にデフォルトのままで大丈夫です。
Package name [recbole_sandbox]: Version [0.1.0]: Description []: Author [{あなたのユーザー名} <{あなたのメールアドレス}>, n to skip]: License []: Compatible Python versions [^3.8]: Would you like to define your main dependencies interactively? (yes/no) [yes] Package to add or search for (leave blank to skip): Do you confirm generation? (yes/no) [yes]
すると、次のような設定ファイルが生成されます。
~/src/recbole_sandbox/pyproject.toml[tool.poetry] name = "recbole-sandbox" version = "0.1.0" description = "" authors = ["{あなたのユーザー名} <{あなたのメールアドレス}>"] readme = "README.md" packages = [{include = "recbole_sandbox"}] [tool.poetry.dependencies] python = "^3.8" [build-system] requires = ["poetry-core"] build-backend = "poetry.core.masonry.api"
-
必要なパッケージの追加
上で作成した仮想環境に必要なパッケージを追加します。
(このあたり結構すったもんだあって、バージョン指定に悩みました...今後アップデートするかもです)poetry add \ "recbole@^1.1.1" \ "ray@>=1.13.0" \ "numpy@1.23.4"
動作テスト
-
RecBoleの動作テストをします。
次のスクリプトrun.py
を作成し、Poetry仮想環境下で実行します。
(コードに書かれている通り、レコメンドモデルはBPR
、データセットはml-100k
を用います。)~/src/recbole_sandbox/run.pyfrom recbole.quick_start import run_recbole run_recbole(model="BPR", dataset="ml-100k")
poetry run python run.py
次のような画面が表示され、
saved/
フォルダにモデルファイル(例:BPR-Aug-26-2023_18-34-10.pth
)が保存されれば成功です。出力の最後の部分にテストデータに対する精度も表示されています。
(中略)
終わりに
今回はRecBoleの環境構築を行い、簡単な動作テストを行いました。
今後は以下のことをやりたいと思っています。
- モデルや使用データが指定できるように設定を行う
- 自分で用意したデータセットをRecBole上で使えるように前処理する
- 前処理された自前のデータセットに関して学習を行う
- テストデータと学習済みモデルから推論結果を出力する
ここまでお付き合いいただきありがとうございました!
Discussion