💗

RecBoleを使ってみよう1 環境構築

2023/08/26に公開

RecBoleのロゴ
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のインストール
    pyenv versions
    
    で3.8.16がリストに表示されない場合は、次でPython 3.8.16をインストール。
    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.py
    from 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実行成功1
    (中略)
    RecBole実行成功2

終わりに

今回はRecBoleの環境構築を行い、簡単な動作テストを行いました。
今後は以下のことをやりたいと思っています。

ここまでお付き合いいただきありがとうございました!

Discussion