RecBole小白入門系列部落格(一)——快速安裝和簡單上手

一隻醜顏狗發表於2020-12-01

寫在開頭

我最近在做推薦系統相關的工作,碰巧發現了一個推薦系統框架RecBole,裡面包含了很多推薦系統方向的模型,感覺跑baseline特別方便(`∀´)Ψ!而且我搜了一下,可能是因為才上線,所以上手部落格啥的都還沒人寫,俺就先佔個坑了嘿嘿嘿,看看後續能不能整理成一個合集d(・∀・*)♪゚
當然我寫的肯定有不完善的地方,感興趣的同學可以去他們官網康康!

快速安裝

系統要求

RecBole在目前主流的幾種系統上都可以執行:

Linux
Windows 10
macOS X

另外,它還對python相關環境有要求:

python>=3.6
torch>=1.6

鑑於模型大多數都是深度學習模型,如果使用GPU的話:

CUDA或CUDATooklkit>=9.2
NVIDIA Driven>=396.26(Linux)
NVIDIA Driven>=397.44(Windows10)

安裝方式

從Conda安裝

推薦新建一個虛擬環境,防止裝環境裝崩了(血的教訓ヘ(;´Д`ヘ)
這裡建立一個名為recbole的虛擬環境

conda create -n recbole
conda activate recbole

然後在該虛擬環境中安裝(小夥伴們記得檢查一下torch和python版本對不對哈)

conda install -c aibox recbole

從pip安裝

pip install recbole

從原始檔安裝

先從github上面下載原始檔

git clone https://github.com/RUCAIBox/RecBole.git && cd RecBole

然後執行指令安裝

pip install -e . --verbose

簡單上手

因為RecBole這個框架還是整合了很多模型的,所以要完全使用熟練還是需要熟悉一會的,但個人感覺已經比現在已有的框架方便太多了(劃掉XD),這裡其實還是參考他們網站給的例子來寫的。

從原始檔上手(適用於從github下載了原始檔)

進入RecBole資料夾,可以直接執行run_recbole.py這個檔案,預設使用的模型是BPR,預設使用的資料集是ml-100k

python run_recbole.py

然後就會得到下面的輸出資訊,包括了使用的資料集名稱、資料集裡user,item以及interaction數目、模型評估設定、模型結構等內容,挺清晰明瞭的:

INFO ml-100k
The number of users: 944
Average actions of users: 106.04453870625663
The number of items: 1683
Average actions of items: 59.45303210463734
The number of inters: 100000
The sparsity of the dataset: 93.70575143257098%

INFO Evaluation Settings:
Group by user_id
Ordering: {'strategy': 'shuffle'}
Splitting: {'strategy': 'by_ratio', 'ratios': [0.8, 0.1, 0.1]}
Negative Sampling: {'strategy': 'full', 'distribution': 'uniform'}

INFO BPRMF(
    (user_embedding): Embedding(944, 64)
    (item_embedding): Embedding(1683, 64)
    (loss): BPRLoss()
)
Trainable parameters: 168128

之後會輸出訓練的資訊:

INFO epoch 0 training [time: 0.27s, train loss: 27.7231]
INFO epoch 0 evaluating [time: 0.12s, valid_score: 0.021900]
INFO valid result:
recall@10: 0.0073  mrr@10: 0.0219  ndcg@10: 0.0093  hit@10: 0.0795  precision@10: 0.0088

經過若干輪訓練得到結果:

INFO Finished training, best eval result in epoch 52
INFO Loading model structure and parameters from saved/***.pth
INFO best valid result:
recall@10: 0.2169  mrr@10: 0.4005  ndcg@10: 0.235  hit@10: 0.7582  precision@10: 0.1598
INFO test result:
recall@10: 0.2368  mrr@10: 0.4519  ndcg@10: 0.2768  hit@10: 0.7614  precision@10: 0.1901

這樣的模式跑baseline真的真的真的很省事!終於不用我叭叭叭叭敲程式碼再調bug了( Ĭ ^ Ĭ )
然後上面是全部使用預設引數跑模型的結果,如果要改一些引數,比如學習率 (learning_rate)啊,嵌入向量的大小(embedding_size)啊,甚至使用的模型啊等等,最簡單的辦法是直接命令列新增,假設改成使用FM模型,學習率改成0.02,嵌入向量大小改成50維:

python run_recbole.py --model=LR --learning_rate=0.02 --embedding_size=50

改變資料集我放在之後的部落格裡面說,RecBole支援的模型和提供的已經處理好的資料集可以看他們的官網

從API上手(適用於conda和pip安裝)

首先新建一個python檔案,假設命名為test_recbole.py,然後在該檔案中寫入:

from recbole.quick_start import run_recbole
run_recbole()

然後執行該檔案

python run.py --dataset=ml-100k --model=BPR

改變引數的方式和從原始碼上手那裡操作相似。

結束語

好啦!第一篇就先寫這麼多,準備後續寫一寫四大類(general,context
,sequential,knowledge)模型的分別執行流程、引數設定等問題,以及資料集的格式啊設定什麼的,大家有什麼想看的也可以給我留言。謝謝各位!

相關文章